pax_global_header00006660000000000000000000000064143332532170014515gustar00rootroot0000000000000052 comment=729c96c85c8c87f44d4b71c3fc1dc699a0abf413 jcodings-1.0.58/000077500000000000000000000000001433325321700134105ustar00rootroot00000000000000jcodings-1.0.58/.github/000077500000000000000000000000001433325321700147505ustar00rootroot00000000000000jcodings-1.0.58/.github/workflows/000077500000000000000000000000001433325321700170055ustar00rootroot00000000000000jcodings-1.0.58/.github/workflows/ci.yml000066400000000000000000000013771433325321700201330ustar00rootroot00000000000000# This workflow will build a Java project with Maven # For more information see: https://help.github.com/actions/language-and-framework-guides/building-and-testing-java-with-maven name: Java CI with Maven on: push: branches: [ master ] pull_request: branches: [ master ] jobs: jdk8: runs-on: ubuntu-latest steps: - uses: actions/checkout@v2 - name: Set up JDK 8 uses: actions/setup-java@v1.4.3 with: java-version: 8 - name: Run tests run: mvn test --file pom.xml jdk11: runs-on: ubuntu-latest steps: - uses: actions/checkout@v2 - name: Set up JDK 11 uses: actions/setup-java@v1.4.3 with: java-version: 11 - name: Run tests run: mvn test --file pom.xmljcodings-1.0.58/.github/workflows/maven.yml000066400000000000000000000006341433325321700206410ustar00rootroot00000000000000name: Java CI with Maven on: push: branches: [ master ] pull_request: branches: [ master ] jobs: build: runs-on: ubuntu-latest steps: - uses: actions/checkout@v2 - name: Set up JDK 8 uses: actions/setup-java@v2 with: java-version: '8' distribution: 'temurin' cache: maven - name: Build with Maven run: mvn -B package --file pom.xml jcodings-1.0.58/.gitignore000066400000000000000000000000341433325321700153750ustar00rootroot00000000000000target jcodings.iml .idea/ jcodings-1.0.58/LICENSE.txt000066400000000000000000000020001433325321700152230ustar00rootroot00000000000000Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. jcodings-1.0.58/MANIFEST.MF000066400000000000000000000001541433325321700150420ustar00rootroot00000000000000Implementation-Title: JCodings (Byte based encoding support library for java) Implementation-Version: 1.0.7 jcodings-1.0.58/README.md000066400000000000000000000002531433325321700146670ustar00rootroot00000000000000jcodings ======== Java-based codings helper classes for Joni and JRuby ## License JCodings is released under the [MIT License](http://www.opensource.org/licenses/MIT). jcodings-1.0.58/pom.xml000066400000000000000000000121641433325321700147310ustar00rootroot00000000000000 4.0.0 org.jruby.jcodings jcodings 1.0.58 JCodings Byte based encoding support library for java org.sonatype.oss oss-parent 7 MIT License http://www.opensource.org/licenses/mit-license.php repo lopex Marcin Mielzynski lopx@gazeta.pl headius Charles Oliver Nutter headius@headius.com scm:git:git://github.com/jruby/jcodings.git scm:git:git@github.com:jruby/jcodings.git https://github.com/jruby/jcodings HEAD Github https://github.com/jruby/jcodings/issues junit junit 4.13.1 test src scripts test org.apache.maven.wagon wagon-webdav-jackrabbit 2.1 false resources jcodings maven-compiler-plugin 3.8.1 default-compile module-info.java UTF-8 1.8 1.8 maven-jar-plugin 3.2.0 MANIFEST.MF maven-resources-plugin 3.2.0 maven-surefire-plugin 3.0.0-M5 -Dfile.encoding=UTF-8 false release-on-9 [9,) maven-compiler-plugin compile9 compile 9 module-info.java maven-source-plugin 3.2.1 attach-sources jar maven-javadoc-plugin 3.0.1 attach-javadocs jar -Xdoclint:none -html5 true false jcodings-1.0.58/resources/000077500000000000000000000000001433325321700154225ustar00rootroot00000000000000jcodings-1.0.58/resources/META-INF/000077500000000000000000000000001433325321700165625ustar00rootroot00000000000000jcodings-1.0.58/resources/META-INF/services/000077500000000000000000000000001433325321700204055ustar00rootroot00000000000000jcodings-1.0.58/resources/META-INF/services/java.nio.charset.spi.CharsetProvider000066400000000000000000000000311433325321700273540ustar00rootroot00000000000000org.jcodings.spi.Charsetsjcodings-1.0.58/resources/tables/000077500000000000000000000000001433325321700166745ustar00rootroot00000000000000jcodings-1.0.58/resources/tables/CR_ASCII.bin000066400000000000000000000000201433325321700205720ustar00rootroot00000000000000jcodings-1.0.58/resources/tables/CR_Adlam.bin000066400000000000000000000000401433325321700207620ustar00rootroot00000000000000KPY^_jcodings-1.0.58/resources/tables/CR_Age_10_0.bin000066400000000000000000000122401433325321700211640ustar00rootroot00000000000000'wz/1VY_a JM-0>@[^^`j       ( * 0 2 3 5 6 8 9 < < > B G H K M Q Q Y \ ^ ^ f u       ( * 0 2 3 5 9 < D G H K M V W \ ] _ c f w      ( * 9 = D F H J M U V X Z ` c f o x      D F H J O T c f  :?[GIlqHJMPVXXZ]`Z]|  6@S`lnprs w +0;@@Dmpt^`|KP|7;IM EHMPWYY[[]]_} d f q t !!!$&$@$J$`+s+v+++++++++,,.,0,^,`,,-%-'-'-----0-g-o-p-------------------.I....////00?0A00011.1111111122 23MM+@+09@wS_|6@MPY\  &(.0epףװmp68<>>@ACDF?P RTfhkptv  &(:<=?MP]37#-JPz'0coo6@U`g 578<<?UW   9 ? ?              3 8 : ? G P X `       5 9 U X r x       H      `~MRo46CPv> (*02359<DGHKMPPWW]cflptY[[]]DPY`l+0?GP 68EPlp  6::<=?GPY #$$n$p$t$%C04.DFFhj8j@j^j`jijnjojjjjkkEkPkYk[kakckwk}kooDoPo~ooooppjp|&)EV`qTVԜԞԟԢԢԥԦԩԬԮԹԻԻԽ  9;>@DFFJPR֥֨ڋڛڟڡگ!#$&*JPY^_!"$$'')24799;;BBGGIIKKMOQRTTWWYY[[]]__abddgjlrtwy|~~+0 .0kp;@HPQ`es GPY` >@LPk4@ Ρΰ  jcodings-1.0.58/resources/tables/CR_Age_11_0.bin000066400000000000000000000123501433325321700211670ustar00rootroot000000000000009wz/1VY JM-0>@[^^`j       ( * 0 2 3 5 6 8 9 < < > B G H K M Q Q Y \ ^ ^ f v       ( * 0 2 3 5 9 < D G H K M V W \ ] _ c f w    ( * 9 = D F H J M U V X Z ` c f o x      D F H J O T c f  :?[GIlqHJMPVXXZ]`Z]|  6@S`lnprs x +0;@@Dmpt^`|KP|7;IM EHMPWYY[[]]_} d f q t !!!$&$@$J$`+s+v+++++,,.,0,^,`,,-%-'-'-----0-g-o-p-------------------.N....////00?0A00011/1111111122 23MM+@+09@wS_|6@MPY\  &(.0epףװmp68<>>@ACDF?P RTfhkptv  &(:<=?MP]37#-JPz'0coo6@U`g 578<<?UW   9 ? ?              5 8 : ? H P X `       5 9 U X r x       H      ' 0 9`~'0YMRo46FPv> (*02359;DGHKMPPWW]cflptY[[]^DPY`l+0?;GP 68EPlp  6::<=?GPY`eghj #$$n$p$t$%C04.DFFhj8j@j^j`jijnjojjjjkkEkPkYk[kakckwk}kn@nooDoPo~ooooppjp|&)EV`xTVԜԞԟԢԢԥԦԩԬԮԹԻԻԽ  9;>@DFFJPR֥֨ڋڛڟڡگ!#$&*JPY^_q!"$$'')24799;;BBGGIIKKMOQRTTWWYY[[]]__abddgjlrtwy|~~+0 kp;@HPQ`es GPY` >@psvzz|`m4@ Ρΰ  jcodings-1.0.58/resources/tables/CR_Age_12_0.bin000066400000000000000000000124601433325321700211720ustar00rootroot00000000000000Kwz/1VY JM-0>@[^^`j       ( * 0 2 3 5 6 8 9 < < > B G H K M Q Q Y \ ^ ^ f v       ( * 0 2 3 5 9 < D G H K M V W \ ] _ c f w    ( * 9 = D F H J M U V X Z ` c f o w      D F H J O T c f  :?[GIlqHJMPVXXZ]`Z]|  6@S`lnprs x +0;@@Dmpt^`|KP|7;IM EHMPWYY[[]]_} d f q t !!!$&$@$J$`+s+v++,.,0,^,`,,-%-'-'-----0-g-o-p-------------------.O....////00?0A00011/1111111122 23MM+@+09@wS_|6@MPY\  &(.0gpףװmp68<>>@ACDF?P RTfhkptv  &(:<=?MP]37#-JPz'0coo6@U`g 578<<?UW   9 ? ?              5 8 : ? H P X `       5 9 U X r x       H      ' 0 9`~'0YMRo46FPv> (*02359;DGHKMPPWW]cflptY[[]_DPY`l+0?;GP 68EPlp  6::<=?GPY`eghj#$$n$p$t$%C04.4048DFFhj8j@j^j`jijnjojjjjkkEkPkYk[kakckwk}kn@nooJoOooooopPRdgpjp|&)EV`xTVԜԞԟԢԢԥԦԩԬԮԹԻԻԽ  9;>@DFFJPR֥֨ڋڛڟڡگ!#$&*,0=@INOKPY^_q=!"$$'')24799;;BBGGIIKKMOQRTTWWYY[[]]__abddgjlrtwy|~~+0 lp;@HPQ`es GPY`  qsvzS`mpsxz4@ Ρΰ  jcodings-1.0.58/resources/tables/CR_Age_12_1.bin000066400000000000000000000124501433325321700211720ustar00rootroot00000000000000Iwz/1VY JM-0>@[^^`j       ( * 0 2 3 5 6 8 9 < < > B G H K M Q Q Y \ ^ ^ f v       ( * 0 2 3 5 9 < D G H K M V W \ ] _ c f w    ( * 9 = D F H J M U V X Z ` c f o w      D F H J O T c f  :?[GIlqHJMPVXXZ]`Z]|  6@S`lnprs x +0;@@Dmpt^`|KP|7;IM EHMPWYY[[]]_} d f q t !!!$&$@$J$`+s+v++,.,0,^,`,,-%-'-'-----0-g-o-p-------------------.O....////00?0A00011/1111111122 MM+@+09@wS_|6@MPY\  &(.0gpףװmp68<>>@ACDF?P RTfhkptv  &(:<=?MP]37#-JPz'0coo6@U`g 578<<?UW   9 ? ?              5 8 : ? H P X `       5 9 U X r x       H      ' 0 9`~'0YMRo46FPv> (*02359;DGHKMPPWW]cflptY[[]_DPY`l+0?;GP 68EPlp  6::<=?GPY`eghj#$$n$p$t$%C04.4048DFFhj8j@j^j`jijnjojjjjkkEkPkYk[kakckwk}kn@nooJoOooooopPRdgpjp|&)EV`xTVԜԞԟԢԢԥԦԩԬԮԹԻԻԽ  9;>@DFFJPR֥֨ڋڛڟڡگ!#$&*,0=@INOKPY^_q=!"$$'')24799;;BBGGIIKKMOQRTTWWYY[[]]__abddgjlrtwy|~~+0 lp;@HPQ`es GPY`  qsvzS`mpsxz4@ Ρΰ  jcodings-1.0.58/resources/tables/CR_Age_13_0.bin000066400000000000000000000125701433325321700211750ustar00rootroot00000000000000]wz/1VY JM-0>@[^^`j       ( * 0 2 3 5 6 8 9 < < > B G H K M Q Q Y \ ^ ^ f v       ( * 0 2 3 5 9 < D G H K M U W \ ] _ c f w    ( * 9 = D F H J M U V X Z ` c f o w    D F H J O T c f  :?[GIlqHJMPVXXZ]`Z]|  6@S`lnprs x +0;@@Dmpt^`|KP|7;IM EHMPWYY[[]]_} d f q t !!!$&$@$J$`+s+v++,.,0,^,`,,-%-'-'-----0-g-o-p-------------------.R....////00?0A00011/11111122 +@,09@wS_|6@MPY\  &(.0kpףװmp68<>>@ACDF?P RTfhkptv  &(:<=?MP]37#-JPz'0coo6@U`g 578<<?UW   9 ? ?              5 8 : ? H P X `       5 9 U X r x       H      ' 0 9`~'0YMRo46GPv> (*02359;DGHKMPPWW]cflpt[]aDPY`l+0?;   578;FPYGP 68EPlp  6::<=?GPY`eghj#$$n$p$t$%C04.4048DFFhj8j@j^j`jijnjojjjjkkEkPkYk[kakckwk}kn@nooJoOooooooopPRdgpjp|&)EV`xTVԜԞԟԢԢԥԦԩԬԮԹԻԻԽ  9;>@DFFJPR֥֨ڋڛڟڡگ!#$&*,0=@INOKPY^_q=!"$$'')24799;;BBGGIIKKMOQRTTWWYY[[]]__abddgjlrtwy|~~+0;@HPQ`es GPY`xzS`mptxz4@ ΡΰJ  jcodings-1.0.58/resources/tables/CR_Age_1_1.bin000066400000000000000000000044101433325321700211050ustar00rootroot00000000000000A PE`atuzz~~ OQ\^1VY_a  !:@R`mp    9 < M P T X p       ( * 0 2 3 5 6 8 9 < < > B G H K M Y \ ^ ^ f t       ( * 0 2 3 6 9 < C G H K M V W \ ] _ a f p       ( * 3 5 9 > D F H J M U V ` a f o       ( * 9 > C F H J M W W ` a f o:?[Y_ EHMPWYY[[]]_} . 0 F j p t !!8!S!!!""####z$$$$@$J$`$%%%%&&&&o'''' ' ''')'K'M'M'O'R'V'V'X'^'a'g'v'''''0070?0?0A0000011,11111222 2C2`2{22222233v3{333N-68<>>@ACDF?P #0DIRTfhkprttv^ajcodings-1.0.58/resources/tables/CR_Age_2_0.bin000066400000000000000000000047101433325321700211100ustar00rootroot00000000000000q8PE`atuzz~~ OQ\^1VY_a  !:@R`mp    9 < M P T X p       ( * 0 2 3 5 6 8 9 < < > B G H K M Y \ ^ ^ f t       ( * 0 2 3 6 9 < C G H K M V W \ ] _ a f p       ( * 3 5 9 > D F H J M U V ` a f o       ( * 9 > C F H J M W W ` a f o:?[GIiqY_ EHMPWYY[[]]_} . 0 F j p t !!8!S!!!""####z$$$$@$J$`$%%%%&&&&o'''' ' ''')'K'M'M'O'R'V'V'X'^'a'g'v'''''0070?0?0A0000011,11111222 2C2`2{22222233v3{333Nף-68<>>@ACDF?P #0DIRTfhkprttv^a jcodings-1.0.58/resources/tables/CR_Age_2_1.bin000066400000000000000000000047101433325321700211110ustar00rootroot00000000000000q8PE`atuzz~~ OQ\^1VY_a  !:@R`mp    9 < M P T X p       ( * 0 2 3 5 6 8 9 < < > B G H K M Y \ ^ ^ f t       ( * 0 2 3 6 9 < C G H K M V W \ ] _ a f p       ( * 3 5 9 > D F H J M U V ` a f o       ( * 9 > C F H J M W W ` a f o:?[GIiqY_ EHMPWYY[[]]_} . 0 F j p t !!8!S!!!""####z$$$$@$J$`$%%%%&&&&o'''' ' ''')'K'M'M'O'R'V'V'X'^'a'g'v'''''0070?0?0A0000011,11111222 2C2`2{22222233v3{333Nף-68<>>@ACDF?P #0DIRTfhkprttv^a jcodings-1.0.58/resources/tables/CR_Age_3_0.bin000066400000000000000000000056201433325321700211120ustar00rootroot00000000000000q"3PN`btuzz~~1VY_a  !:@U`mp ,0J    9 < M P T X p       ( * 0 2 3 5 6 8 9 < < > B G H K M Y \ ^ ^ f t       ( * 0 2 3 6 9 < C G H K M V W \ ] _ a f p       ( * 3 5 9 > D F H J M U V ` a f o       ( * 9 > C F H J M W W ` a f o :?[GIjq!#')*,269@YY_FHHJMPVXXZ]` FHZa|v w EHMPWYY[[]]_} F H M j p t !!:!S!!!""##{#}#$$&$@$J$`$%%%%&&&&q'''' ' ''')'K'M'M'O'R'V'V'X'^'a'g'v'''''((....////00:0>0?0A0000011,11111222 2C2`2{22222233v3{3334MNף-68<>>@ACDF?P #0DIRTfhkprttv^a jcodings-1.0.58/resources/tables/CR_Age_3_1.bin000066400000000000000000000062301433325321700211110ustar00rootroot00000000000000%"3PN`btuzz~~1VY_a  !:@U`mp ,0J    9 < M P T X p       ( * 0 2 3 5 6 8 9 < < > B G H K M Y \ ^ ^ f t       ( * 0 2 3 6 9 < C G H K M V W \ ] _ a f p       ( * 3 5 9 > D F H J M U V ` a f o       ( * 9 > C F H J M W W ` a f o :?[GIjq!#')*,269@YY_FHHJMPVXXZ]` FHZa|v w EHMPWYY[[]]_} F H M j p t !!:!S!!!""##{#}#$$&$@$J$`$%%%%&&&&q'''' ' ''')'K'M'M'O'R'V'V'X'^'a'g'v'''''((....////00:0>0?0A0000011,11111222 2C2`2{22222233v3{3334MNף-68<>>@ACDF?P #0DIRTfhkprttv^a #0J%(M&*TVԜԞԟԢԢԥԦԩԬԮԹԻԻԽ  9;>@DFFJPR֣֨  jcodings-1.0.58/resources/tables/CR_Age_3_2.bin000066400000000000000000000061601433325321700211140ustar00rootroot00000000000000 "3PO`otuzz~~1VY_a  !:@U` ,0J    9 < M P T X p       ( * 0 2 3 5 6 8 9 < < > B G H K M Y \ ^ ^ f t       ( * 0 2 3 6 9 < C G H K M V W \ ] _ a f p       ( * 3 5 9 > D F H J M U V ` a f o       ( * 9 > C F H J M W W ` a f o :?[GIjq!#')*,269@YY_FHHJMPVXXZ]` FHZa|v  6@S`lnprs w EHMPWYY[[]]_} R W W _ c j q t !!:!=!K!S!!#$$&$@$J$`$%&&&&&}&&'''' ' ''')'K'M'M'O'R'V'V'X'^'a''''''''*....////00?0A00011,11111122 2C2Q2{222233v3{3334MNף-0j68<>>@ACDF?P #0FIRTfhkptv #0J%(M&*TVԜԞԟԢԢԥԦԩԬԮԹԻԻԽ  9;>@DFFJPR֣֨  jcodings-1.0.58/resources/tables/CR_Age_4_0.bin000066400000000000000000000063501433325321700211140ustar00rootroot0000000000000096PW]otuzz~~1VY_a !:@X` JMO  9 < M P T X p       ( * 0 2 3 5 6 8 9 < < > B G H K M Y \ ^ ^ f t       ( * 0 2 3 5 9 < C G H K M V W \ ] _ a f q       ( * 3 5 9 > D F H J M U V ` a f o       ( * 9 > C F H J M W W ` a f o :?[GIjq!#')*,269@YY_FHHJMPVXXZ]` FHZa|v  6@S`lnprs w +0;@@Dmptk EHMPWYY[[]]_} T W W _ c j q t !!;!=!K!S!!#$$&$@$J$`&&&}&&&&'''' ' ''')'K'M'M'O'R'V'V'X'^'a''''''''+ ....////00?0A00011,11111122 2C2P2}223MMף-0j68<>>@ACDF?P #0RTfhkptv  &(:<=?MP]37? #0J 578<<??&*VTVԜԞԟԢԢԥԦԩԬԮԹԻԻԽ  9;>@DFFJPR֣֨  jcodings-1.0.58/resources/tables/CR_Age_4_1.bin000066400000000000000000000065701433325321700211210ustar00rootroot00000000000000]APotuzz~~1VY_a !:@^` JMm  9 < M P T X p } }       ( * 0 2 3 5 6 8 9 < < > B G H K M Y \ ^ ^ f t       ( * 0 2 3 5 9 < C G H K M V W \ ] _ a f q       ( * 3 5 9 > D F H J M U V ` a f o       ( * 9 > C F H J M W W ` a f o :?[GIjq!#')*,269@YY_HJMPVXXZ]`Z_|v  6@S`lnprs w +0;@@Dmpt EHMPWYY[[]]_} c j q t !!L!S!!#$$&$@$J$`&&&'''' ' ''')'K'M'M'O'R'V'V'X'^'a''''''''''+,,.,0,^,,,-%-0-e-o-o------------------........////00?0A00011,1111111122 2C2P23MM+ף-0jp68<>>@ACDF?P #0RTfhkptv  &(:<=?MP]37 #0J 578<<??          3 8 : ? G P X&*EVTVԜԞԟԢԢԥԦԩԬԮԹԻԻԽ  9;>@DFFJPR֥֨  jcodings-1.0.58/resources/tables/CR_Age_5_0.bin000066400000000000000000000067101433325321700211150ustar00rootroot00000000000000qotuz~1VY_a !:@^` JMm  9 < M P T X p {        ( * 0 2 3 5 6 8 9 < < > B G H K M Y \ ^ ^ f t       ( * 0 2 3 5 9 < C G H K M V W \ ] _ a f q       ( * 3 5 9 > D F H J M U V ` a f o       ( * 9 > C F H J M W W ` a f o :?[GIjq!#')*,269@YY_HJMPVXXZ]`Z_|v  6@S`lnprs w +0;@@DmptKP| EHMPWYY[[]]_} c j q t !!N!S!!#$$&$@$J$`&&&'''' ' ''')'K'M'M'O'R'V'V'X'^'a''''''''''++ +#,,.,0,^,`,l,t,w,,,-%-0-e-o-o------------------........////00?0A00011,1111111122 2C2P23MM !+@wף-0jp68<>>@ACDF?P #0RTfhkptv  &(:<=?MP]37 #0J 578<<??              3 8 : ? G P X #n$$b$p$s&*EV`qTVԜԞԟԢԢԥԦԩԬԮԹԻԻԽ  9;>@DFFJPR֥֨  jcodings-1.0.58/resources/tables/CR_Age_5_1.bin000066400000000000000000000071001433325321700211100ustar00rootroot00000000000000wz~#1VY_a!^` JM  9 < M P T X r {        ( * 0 2 3 5 6 8 9 < < > B G H K M Q Q Y \ ^ ^ f u       ( * 0 2 3 5 9 < D G H K M V W \ ] _ c f q       ( * 3 5 9 = D F H J M U V X Y ` c f o x        ( * 9 = D F H J M W W ` c f u y  :?[GIlqY_HJMPVXXZ]`Z_|v  6@S`lnprs w +0;@@DmptKP|7;IM EHMPWYY[[]]_} d j q t !!O!S!!#$$&$@$J$`&&&&&'''' ' ''')'K'M'M'O'R'V'V'X'^'a''''''''''+L+P+T,,.,0,^,`,o,q,},,,-%-0-e-o-o-------------------.0....////00?0A00011-1111111122 2C2P23MM+@_bs|+@wS__6@MPY\_ף-0jp68<>>@ACDF?P &0RTfhkptv  &(:<=?MP]37 #0J 578<<??    9 ? ?          3 8 : ? G P X #n$$b$p$s&)EV`qTVԜԞԟԢԢԥԦԩԬԮԹԻԻԽ  9;>@DFFJPR֥֨+0  jcodings-1.0.58/resources/tables/CR_Age_5_2.bin000066400000000000000000000076001433325321700211160ustar00rootroot00000000000000wz~%1VY_a!^` JM-0> 9 < N P U X r y        ( * 0 2 3 5 6 8 9 < < > B G H K M Q Q Y \ ^ ^ f u       ( * 0 2 3 5 9 < D G H K M V W \ ] _ c f q       ( * 3 5 9 = D F H J M U V X Y ` c f o x        ( * 9 = D F H J M W W ` c f u y  :?[GIlqHJMPVXXZ]`Z_|  6@S`lnprs w +0;@@Dmpt^`|KP|7;IM EHMPWYY[[]]_} d j q t !!!#$$&$@$J$`&&&&&&&'''' ' ''')'K'M'M'O'R'V'^'a''''''''''+L+P+Y,,.,0,^,`,,-%-0-e-o-o-------------------.1....////00?0A00011-1111111122 23MM+@_bs|+09@wS_|6@MPY\{ףװ-0mp68<>>@ACDF?P &0RTfhkptv  &(:<=?MP]37 #0J 578<<?UW_    9 ? ?          3 8 : ? G P X `   5 9 U X r x   H`~ #n$$b$p$s04.&)EV`qTVԜԞԟԢԢԥԦԩԬԮԹԻԻԽ  9;>@DFFJPR֥֨+0 .11==??BBFFJNWW__yy{|1@H4  jcodings-1.0.58/resources/tables/CR_Age_6_0.bin000066400000000000000000000100001433325321700211010ustar00rootroot00000000000000wz~'1VY_a JM-0>@[^^ w y        ( * 0 2 3 5 6 8 9 < < > B G H K M Q Q Y \ ^ ^ f u       ( * 0 2 3 5 9 < D G H K M V W \ ] _ c f w       ( * 3 5 9 = D F H J M U V X Y ` c f o x        : = D F H J N W W ` c f u y  :?[GIlqHJMPVXXZ]`Z]|  6@S`lnprs w +0;@@Dmpt^`|KP|7;IM EHMPWYY[[]]_} d j q t !!!#$$&$@$J$`&'''''+L+P+Y,,.,0,^,`,,-%-0-e-o-p-------------------.1....////00?0A00011-1111111122 23MM+@s|+09@wS_|6@MPY\{  &(.ףװ-0mp68<>>@ACDF?P &0RTfhkptv  &(:<=?MP]37 #0J 578<<?UW_    9 ? ?          3 8 : ? G P X `   5 9 U X r x   H`~MRo #n$$b$p$s04.hj8&)EV`qTVԜԞԟԢԢԥԦԩԬԮԹԻԻԽ  9;>@DFFJPR֥֨+0 .0ip:@HPQ 057|>@@B=Pg %(+--035@EOs4@  jcodings-1.0.58/resources/tables/CR_Age_6_1.bin000066400000000000000000000104601433325321700211140ustar00rootroot00000000000000K%wz~'1VY_a JM-0>@[^^ w y        ( * 0 2 3 5 6 8 9 < < > B G H K M Q Q Y \ ^ ^ f u       ( * 0 2 3 5 9 < D G H K M V W \ ] _ c f w       ( * 3 5 9 = D F H J M U V X Y ` c f o x        : = D F H J N W W ` c f u y  :?[GIlqHJMPVXXZ]`Z]|  6@S`lnprs w +0;@@Dmpt^`|KP|7;IM EHMPWYY[[]]_} d j q t !!!#$$&$@$J$`&'+L+P+Y,,.,0,^,`,,-%-'-'-----0-g-o-p-------------------.;....////00?0A00011-1111111122 23MM+@+09@wS_|6@MPY\{  &(.ףװmp68<>>@ACDF?P &0RTfhkptv  &(:<=?MP]37 #0J 578<<?UW_    9 ? ?              3 8 : ? G P X `   5 9 U X r x   H`~MRo46C #n$$b$p$s04.hj8ooDoPo~oo&)EV`qTVԜԞԟԢԢԥԦԩԬԮԹԻԻԽ  9;>@DFFJPR֥֨!"$$'')24799;;BBGGIIKKMOQRTTWWYY[[]]__abddgjlrtwy|~~+0 .0kp:@HPQ 057|>@@B=@CPg@EOs4@  jcodings-1.0.58/resources/tables/CR_Age_6_2.bin000066400000000000000000000104601433325321700211150ustar00rootroot00000000000000K%wz~'1VY_a JM-0>@[^^ w y        ( * 0 2 3 5 6 8 9 < < > B G H K M Q Q Y \ ^ ^ f u       ( * 0 2 3 5 9 < D G H K M V W \ ] _ c f w       ( * 3 5 9 = D F H J M U V X Y ` c f o x        : = D F H J N W W ` c f u y  :?[GIlqHJMPVXXZ]`Z]|  6@S`lnprs w +0;@@Dmpt^`|KP|7;IM EHMPWYY[[]]_} d j q t !!!#$$&$@$J$`&'+L+P+Y,,.,0,^,`,,-%-'-'-----0-g-o-p-------------------.;....////00?0A00011-1111111122 23MM+@+09@wS_|6@MPY\{  &(.ףװmp68<>>@ACDF?P &0RTfhkptv  &(:<=?MP]37 #0J 578<<?UW_    9 ? ?              3 8 : ? G P X `   5 9 U X r x   H`~MRo46C #n$$b$p$s04.hj8ooDoPo~oo&)EV`qTVԜԞԟԢԢԥԦԩԬԮԹԻԻԽ  9;>@DFFJPR֥֨!"$$'')24799;;BBGGIIKKMOQRTTWWYY[[]]__abddgjlrtwy|~~+0 .0kp:@HPQ 057|>@@B=@CPg@EOs4@  jcodings-1.0.58/resources/tables/CR_Age_6_3.bin000066400000000000000000000104601433325321700211160ustar00rootroot00000000000000K%wz~'1VY_a JM-0>@[^^ w y        ( * 0 2 3 5 6 8 9 < < > B G H K M Q Q Y \ ^ ^ f u       ( * 0 2 3 5 9 < D G H K M V W \ ] _ c f w       ( * 3 5 9 = D F H J M U V X Y ` c f o x        : = D F H J N W W ` c f u y  :?[GIlqHJMPVXXZ]`Z]|  6@S`lnprs w +0;@@Dmpt^`|KP|7;IM EHMPWYY[[]]_} d f q t !!!#$$&$@$J$`&'+L+P+Y,,.,0,^,`,,-%-'-'-----0-g-o-p-------------------.;....////00?0A00011-1111111122 23MM+@+09@wS_|6@MPY\{  &(.ףװmp68<>>@ACDF?P &0RTfhkptv  &(:<=?MP]37 #0J 578<<?UW_    9 ? ?              3 8 : ? G P X `   5 9 U X r x   H`~MRo46C #n$$b$p$s04.hj8ooDoPo~oo&)EV`qTVԜԞԟԢԢԥԦԩԬԮԹԻԻԽ  9;>@DFFJPR֥֨!"$$'')24799;;BBGGIIKKMOQRTTWWYY[[]]__abddgjlrtwy|~~+0 .0kp:@HPQ 057|>@@B=@CPg@EOs4@  jcodings-1.0.58/resources/tables/CR_Age_7_0.bin000066400000000000000000000114301433325321700211120ustar00rootroot00000000000000bwz/1VY_a JM-0>@[^^       ( * 0 2 3 5 6 8 9 < < > B G H K M Q Q Y \ ^ ^ f u       ( * 0 2 3 5 9 < D G H K M V W \ ] _ c f w      ( * 9 = D F H J M U V X Y ` c f o x        : = D F H J N W W ` c f u y  :?[GIlqHJMPVXXZ]`Z]|  6@S`lnprs w +0;@@Dmpt^`|KP|7;IM EHMPWYY[[]]_} d f q t !!!#$$&$@$J$`+s+v+++++++,,.,0,^,`,,-%-'-'-----0-g-o-p-------------------.B....////00?0A00011-1111111122 23MM+@+09@wS_|6@MPY\  &(.0_deףװmp68<>>@ACDF?P -0RTfhkptv  &(:<=?MP]37#0JPz'0coo6@U`g 578<<?UW    9 ? ?              3 8 : ? G P X `       5 9 U X r x       H`~MRo46CPv= (*02359<DGHKMWW]cflptDPY #$$n$p$t04.hj8j@j^j`jijnjojjjjkkEkPkYk[kakckwk}kooDoPo~oojp|&)EV`qTVԜԞԟԢԢԥԦԩԬԮԹԻԻԽ  9;>@DFFJPR֥֨!"$$'')24799;;BBGGIIKKMOQRTTWWYY[[]]__abddgjlrtwy|~~+0 .0kp:@HPQ,0}JPy{BEs GPY`4@  jcodings-1.0.58/resources/tables/CR_Age_8_0.bin000066400000000000000000000116001433325321700211120ustar00rootroot00000000000000owz/1VY_a JM-0>@[^^       ( * 0 2 3 5 6 8 9 < < > B G H K M Q Q Y \ ^ ^ f u       ( * 0 2 3 5 9 < D G H K M V W \ ] _ c f w      ( * 9 = D F H J M U V X Z ` c f o x        : = D F H J N W W _ c f u y  :?[GIlqHJMPVXXZ]`Z]|  6@S`lnprs w +0;@@Dmpt^`|KP|7;IM EHMPWYY[[]]_} d f q t !!!#$$&$@$J$`+s+v+++++++++,,.,0,^,`,,-%-'-'-----0-g-o-p-------------------.B....////00?0A00011-1111111122 23MM+@+09@wS_|6@MPY\  &(.0epףװmp68<>>@ACDF?P RTfhkptv  &(:<=?MP]37#0JPz'0coo6@U`g 578<<?UW   9 ? ?              3 8 : ? G P X `       5 9 U X r x       H      `~MRo46CPv= (*02359<DGHKMPPWW]cflptDPY+0? #$$n$p$t$%C04.DFFhj8j@j^j`jijnjojjjjkkEkPkYk[kakckwk}kooDoPo~oojp|&)EV`qTVԜԞԟԢԢԥԦԩԬԮԹԻԻԽ  9;>@DFFJPR֥֨ڋڛڟڡگ!"$$'')24799;;BBGGIIKKMOQRTTWWYY[[]]__abddgjlrtwy|~~+0 .0kp:@HPQy{s GPY`4@ Ρ  jcodings-1.0.58/resources/tables/CR_Age_9_0.bin000066400000000000000000000121101433325321700211100ustar00rootroot00000000000000wz/1VY_a JM-0>@[^^       ( * 0 2 3 5 6 8 9 < < > B G H K M Q Q Y \ ^ ^ f u       ( * 0 2 3 5 9 < D G H K M V W \ ] _ c f w      ( * 9 = D F H J M U V X Z ` c f o x       : = D F H J O T c f  :?[GIlqHJMPVXXZ]`Z]|  6@S`lnprs w +0;@@Dmpt^`|KP|7;IM EHMPWYY[[]]_} d f q t !!!#$$&$@$J$`+s+v+++++++++,,.,0,^,`,,-%-'-'-----0-g-o-p-------------------.D....////00?0A00011-1111111122 23MM+@+09@wS_|6@MPY\  &(.0epףװmp68<>>@ACDF?P RTfhkptv  &(:<=?MP]37#0JPz'0coo6@U`g 578<<?UW   9 ? ?              3 8 : ? G P X `       5 9 U X r x       H      `~MRo46CPv> (*02359<DGHKMPPWW]cflptY[[]]DPY`l+0? 68EPlp #$$n$p$t$%C04.DFFhj8j@j^j`jijnjojjjjkkEkPkYk[kakckwk}kooDoPo~oooopjp|&)EV`qTVԜԞԟԢԢԥԦԩԬԮԹԻԻԽ  9;>@DFFJPR֥֨ڋڛڟڡگ!#$&*JPY^_!"$$'')24799;;BBGGIIKKMOQRTTWWYY[[]]__abddgjlrtwy|~~+0 .0kp;@HPQs GPY` '003>@KP^4@ Ρ  jcodings-1.0.58/resources/tables/CR_Ahom.bin000066400000000000000000000000401433325321700206300ustar00rootroot00000000000000+0?jcodings-1.0.58/resources/tables/CR_Alnum.bin000066400000000000000000000133501433325321700210300ustar00rootroot0000000000000009AZazEEptvwz}/1VYY` WYin?M,@X`j ; = L N P U c f o q       ( * 0 2 3 5 6 8 9 > B G H K L Q Q Y \ ^ ^ f u       ( * 0 2 3 5 9 = D G H K L V W \ ] _ c f o q q      ( * 9 = D F H J L U V X Z ` c f o    : = D F H J L N N T W _ c f o z  :@FMMPY )@GIlq688;IPHJMPVXXZ]`Zlo  3@S`lnprs x +08Fmpt ^at35CEKPY6@IM} EHMPWYY[[]]_} q q   !!!!! !!!!!!$!$!&!&!(!(!*!-!/!9!<!?!E!I!N!N!`!$$,,.,0,^,`,,,,,--%-'-'-----0-g-o-o--------------------././000!0)0105080<0A000000011/11111114MN +@nt{"'@s*0R`|6@MPY`vz  &(.0Z\ipףװmp(*68<>>@ACDF=Pptv!:AZf  &(:<=?MP]@t-JPz'0c6@U`g 578<<?U`v    9              5 ` |        5 @ U ` r    H      ' 0 9''0EEfo26?DGPrvv477>> (*02359=DGHKLPPWW]cACEGJPY_a>@@DDPY*098   578;<?BPY25>P 68>@@PYr  6::<=?ACCFGPY`eghj #$$n$%C04.DFFhj8j@j^j`jijjkk/k@kCkPkYkckwk}kn@nooJoOooooooooopPRdgpjp|TVԜԞԟԢԢԥԦԩԬԮԹԻԻԽ  9;>@DFFJPR֥֨46NPnp׈׊רת!#$&*,7=@INNCGGKKPY!"$$'')24799;;BBGGIIKKMOQRTTWWYY[[]]__abddgjlrtwy|~~0IPip4@ ΡΰJjcodings-1.0.58/resources/tables/CR_Alpha.bin000066400000000000000000000127001433325321700207770ustar00rootroot00000000000000oAZazEEptvwz}/1VYY` WY_n?M,@X`j ; = L N P U c q       ( * 0 2 3 5 6 8 9 > B G H K L Q Q Y \ ^ ^ p u       ( * 0 2 3 5 9 = D G H K L V W \ ] _ c q q      ( * 9 = D F H J L U V X Z ` c    : = D F H J L N N T W _ c z  :@FMM@GIlq688;?PHJMPVXXZ]`Zlo  3@S`lnprs x +08Pmpt ^at35CEK6MOZ} EHMPWYY[[]]_} q q   !!!!! !!!!!!$!$!&!&!(!(!*!-!/!9!<!?!E!I!N!N!`!$$,,.,0,^,`,,,,,--%-'-'-----0-g-o-o--------------------././000!0)0105080<0A000000011/11111114MN *+@nt{"'@s *0R`|6@M`vz  &(.0Z\ipףװmp(*68<>>@ACDF=Pptv!:AZf  &(:<=?MP]@t-JPz'0c6@U`g 578<<?U`v    9              5 ` |        5 @ U ` r    H      '''0EE2DGPrvv477>> (*02359=DGHKLPPWW]cACEGJ_a>@@DD*8   578;<?B25>P 68>@@r  6::<=?ACCFG`eghj #$$n$%C04.DFFhj8j@j^jjkk/k@kCkckwk}kn@nooJoOooooooooopPRdgpjp|TVԜԞԟԢԢԥԦԩԬԮԹԻԻԽ  9;>@DFFJPR֥֨46NPnp׈׊רת!#$&*,7=NNCGGKK!"$$'')24799;;BBGGIIKKMOQRTTWWYY[[]]__abddgjlrtwy|~~0IPip4@ ΡΰJjcodings-1.0.58/resources/tables/CR_Anatolian_Hieroglyphs.bin000066400000000000000000000000201433325321700242250ustar00rootroot00000000000000DFFjcodings-1.0.58/resources/tables/CR_Any.bin000066400000000000000000000000201433325321700204710ustar00rootroot00000000000000jcodings-1.0.58/resources/tables/CR_Arabic.bin000066400000000000000000000007201433325321700211320ustar00rootroot00000000000000s9   ?AJVoqPP=Pptv`~!"$$'')24799;;BBGGIIKKMOQRTTWWYY[[]]__abddgjlrtwy|~~jcodings-1.0.58/resources/tables/CR_Armenian.bin000066400000000000000000000000501433325321700214770ustar00rootroot00000000000000 1VYjcodings-1.0.58/resources/tables/CR_Assigned.bin000066400000000000000000000124601433325321700215120ustar00rootroot00000000000000Kwz/1VY JM-0>@[^^`j       ( * 0 2 3 5 6 8 9 < < > B G H K M Q Q Y \ ^ ^ f v       ( * 0 2 3 5 9 < D G H K M U W \ ] _ c f w    ( * 9 = D F H J M U V X Z ` c f o w    D F H J O T c f  :?[GIlqHJMPVXXZ]`Z]|  6@S`lnprs x +0;@@Dmpt^`|KP|7;IM EHMPWYY[[]]_} d f q t !!!$&$@$J$`+s+v++,.,0,^,`,,-%-'-'-----0-g-o-p-------------------.R....////00?0A00011/11111122 +@,09@wS_|6@MPY\  &(.0kpףװmp68<>>@ACDF?P RTfhkptv  &(:<=?MP]37#-JPz'0coo6@U`g 578<<?UW   9 ? ?              5 8 : ? H P X `       5 9 U X r x       H      ' 0 9`~'0YMRo46GPv> (*02359;DGHKMPPWW]cflpt[]aDPY`l+0?;   578;FPYGP 68EPlp  6::<=?GPY`eghj#$$n$p$t$%C04.4048DFFhj8j@j^j`jijnjojjjjkkEkPkYk[kakckwk}kn@nooJoOooooooopPRdgpjp|&)EV`xTVԜԞԟԢԢԥԦԩԬԮԹԻԻԽ  9;>@DFFJPR֥֨ڋڛڟڡگ!#$&*,0=@INOKPY^_q=!"$$'')24799;;BBGGIIKKMOQRTTWWYY[[]]__abddgjlrtwy|~~+0;@HPQ`es GPY`xzS`mptxz4@ ΡΰJ jcodings-1.0.58/resources/tables/CR_Avestan.bin000066400000000000000000000000301433325321700213440ustar00rootroot00000000000000  5 9 ?jcodings-1.0.58/resources/tables/CR_Balinese.bin000066400000000000000000000000301433325321700214650ustar00rootroot00000000000000KP|jcodings-1.0.58/resources/tables/CR_Bamum.bin000066400000000000000000000000301433325321700210040ustar00rootroot00000000000000hj8jcodings-1.0.58/resources/tables/CR_Bassa_Vah.bin000066400000000000000000000000301433325321700215720ustar00rootroot00000000000000jjjjjcodings-1.0.58/resources/tables/CR_Batak.bin000066400000000000000000000000301433325321700207650ustar00rootroot00000000000000jcodings-1.0.58/resources/tables/CR_Bengali.bin000066400000000000000000000001701433325321700213110ustar00rootroot00000000000000 jcodings-1.0.58/resources/tables/CR_Bhaiksuki.bin000066400000000000000000000000501433325321700216570ustar00rootroot00000000000000  68EPljcodings-1.0.58/resources/tables/CR_Bidi_Control.bin000066400000000000000000000000501433325321700223140ustar00rootroot00000000000000    * . f ijcodings-1.0.58/resources/tables/CR_Blank.bin000066400000000000000000000001101433325321700207710ustar00rootroot00000000000000  / / _ _00jcodings-1.0.58/resources/tables/CR_Bopomofo.bin000066400000000000000000000000401433325321700215240ustar00rootroot0000000000000011/11jcodings-1.0.58/resources/tables/CR_Brahmi.bin000066400000000000000000000000401433325321700211460ustar00rootroot00000000000000MRojcodings-1.0.58/resources/tables/CR_Braille.bin000066400000000000000000000000201433325321700213140ustar00rootroot00000000000000((jcodings-1.0.58/resources/tables/CR_Buginese.bin000066400000000000000000000000301433325321700215040ustar00rootroot00000000000000jcodings-1.0.58/resources/tables/CR_Buhid.bin000066400000000000000000000000201433325321700207750ustar00rootroot00000000000000@Sjcodings-1.0.58/resources/tables/CR_C.bin000066400000000000000000000125001433325321700201320ustar00rootroot00000000000000Oxy00WXKL./??\]__k      ) ) 1 1 4 4 7 7 : ; = = C F I J N P R X ] ] _ e w      ) ) 1 1 4 4 : ; E F I J N T X [ ^ ^ d e x   ) ) : < E E I I N T W W [ _ d e p v   E E I I P S d e ;>\HHmpIINOWWYY^_[\}  7?T_mmqqty,/<?ACnou__}~LO}8:JLFGNOXXZZ\\^^~  * . ` o r s !!$'$?$K$_+t+u++,/,/,_,_,,-&-&-(-,-.-/-h-n-q-~------------------.S.....////0@0@00111010111122,?-/:?xT^}7?NOZ[''//loפׯno77==??BBEE@OSSgglouu  '';;>>NO^46$,KO{(/dnp7?V_h  669;=>VV   : > @              6 7 ; > I O Y _       6 8 V W s w       I      ( / :_(/ZNQp~55HOw? ))1144::EFIJNOQVX\demou\\bEOZ_m,/@<  669:GOZHO  77FOmo  79;;>>HOZ_ffii##$o$o$u$%D/4/CFGgj9j?j_j_jjjmjpjjjjjkFkOkZkZkbkbkxk|kn?nnoKoNoooooooo OSchoko}'(szFW_yUUԝԝԠԡԣԤԧԨԭԭԺԺԼԼ  ::??EEGIQQ֦֧ڌښڠڠڰ""%%+-/>?JMPLOZ]`p>  ##%&((3388::<ACFHHJJLLPPSSUVXXZZ\\^^``ccefkkssxx}},/<?IOR_ft HOZ_yyT_nouw{5?΢ίKjcodings-1.0.58/resources/tables/CR_Canadian_Aboriginal.bin000066400000000000000000000000301433325321700235700ustar00rootroot00000000000000jcodings-1.0.58/resources/tables/CR_Carian.bin000066400000000000000000000000201433325321700211370ustar00rootroot00000000000000jcodings-1.0.58/resources/tables/CR_Case_Ignorable.bin000066400000000000000000000063301433325321700226110ustar00rootroot000000000000005''..::^^``otuzzYY__@@K_pp0J-Y[  : : < < A H M M Q W b c q q   < < A B G H K M Q Q p q u u   < < ? ? A D M M U V b c   > @ F H J M U V b c  ; < A D M M b c 114:FN557799q~-0279:=>XY^`qt]_24RSrs CC "'(229;VVX^``bbels|446:<<BBks,367x},jxx    $ $ ' ' * . ` d f o q q   ,|,},,-o-o----././000*0-01050;0;0000 ort}!pp %&,,&-GQ).1256CCLLpp||[_ik /RRUU>>@@ppvz       8 : ? ?   $ 'FP8F'+-4ss/14467>>;<@@flpt8?BDFF^^3:==?@"%'+/79:;<>>CC 38;>GGQVY[068=??16::<=?EGG4048jjk0k6k@kCoOoOoooooogisтхыѪѭBD6;luuڄڄڛڟڡگ!#$&*0=DK jcodings-1.0.58/resources/tables/CR_Cased.bin000066400000000000000000000021601433325321700207700ustar00rootroot00000000000000AZazEEpsvwz}/1V` EHMPWYY[[]]_} q q   !!!!! !!!!!!$!$!&!&!(!(!*!-!/!4!9!9!<!?!E!I!N!N!`!!!$$,,.,0,^,`,,,,,--%-'-'----@m"0Z\hp!:AZO    n@nTVԜԞԟԢԢԥԦԩԬԮԹԻԻԽ  9;>@DFFJPR֥֨46NPnp׈׊רתC0IPipjcodings-1.0.58/resources/tables/CR_Caucasian_Albanian.bin000066400000000000000000000000301433325321700234170ustar00rootroot000000000000000coojcodings-1.0.58/resources/tables/CR_Cf.bin000066400000000000000000000002501433325321700202770ustar00rootroot00000000000000)  * . ` d f o4048sz jcodings-1.0.58/resources/tables/CR_Chakma.bin000066400000000000000000000000301433325321700211270ustar00rootroot0000000000000046Gjcodings-1.0.58/resources/tables/CR_Cham.bin000066400000000000000000000000501433325321700206150ustar00rootroot00000000000000 6@MPY\_jcodings-1.0.58/resources/tables/CR_Changes_When_Casefolded.bin000066400000000000000000000114701433325321700244170ustar00rootroot00000000000000fAZ      ""$$&&((**,,..0022446699;;==??AACCEEGGIJLLNNPPRRTTVVXXZZ\\^^``bbddffhhjjllnnpprrttvvxy{{}}      ""$$&&((**,,..0022:;=>AACFHHJJLLNNEEpprrvv/``bbddffhhjjllnnpprrttvvxxzz||~~      ""$$&&((**,,..1V      ""$$&&((**,,..0022446688::<<>>@@BBDDFFHHJJLLNNPPRRTTVVXXZZ\\^^``bbddffhhjjllnnpprrttvvxxzz||~~(/8?HMYY[[]]__ho!&!&!*!+!2!2!`!o!!$$,,.,`,`,b,d,g,g,i,i,k,k,m,p,r,r,u,u,~,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,@@BBDDFFHHJJLLNNPPRRTTVVXXZZ\\^^``bbddffhhjjll""$$&&((**,,..22446688::<<>>@@BBDDFFHHJJLLNNPPRRTTVVXXZZ\\^^``bbddffhhjjllnnyy{{}~p!:'  n@n_!jcodings-1.0.58/resources/tables/CR_Changes_When_Casemapped.bin000066400000000000000000000017501433325321700244300ustar00rootroot00000000000000|AZaz79 "3:TVWYY[\`accefhlooqruu}}EEpsvw{}/1Vayy}} EHMPWYY[[]]_}!&!&!*!+!2!2!N!N!`!!!$$,,.,0,^,`,p,r,s,u,v,~,,,,,--%-'-'----@m"/2oySSp!:AZO    n@nCjcodings-1.0.58/resources/tables/CR_Changes_When_Lowercased.bin000066400000000000000000000113201433325321700244500ustar00rootroot00000000000000YAZ      ""$$&&((**,,..0022446699;;==??AACCEEGGJJLLNNPPRRTTVVXXZZ\\^^``bbddffhhjjllnnpprrttvvxy{{}}      ""$$&&((**,,..0022:;=>AACFHHJJLLNNpprrvv/``bbddffhhjjllnnpprrttvvxxzz||~~      ""$$&&((**,,..1V      ""$$&&((**,,..0022446688::<<>>@@BBDDFFHHJJLLNNPPRRTTVVXXZZ\\^^``bbddffhhjjllnnpprrttvvxxzz||~~(/8?HMYY[[]]__ho!&!&!*!+!2!2!`!o!!$$,,.,`,`,b,d,g,g,i,i,k,k,m,p,r,r,u,u,~,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,@@BBDDFFHHJJLLNNPPRRTTVVXXZZ\\^^``bbddffhhjjll""$$&&((**,,..22446688::<<>>@@BBDDFFHHJJLLNNPPRRTTVVXXZZ\\^^``bbddffhhjjllnnyy{{}~!:'  n@n_!jcodings-1.0.58/resources/tables/CR_Changes_When_Titlecased.bin000066400000000000000000000115301433325321700244440ustar00rootroot00000000000000jaz      !!##%%''))++--//11335577::<<>>@@BBDDFFHIKKMMOOQQSSUUWWYY[[]]__aacceeggiikkmmooqqssuuwwzz||~      ##%%''))++--//1133<<?@BBGGIIKKMMOTVWYY[\`accefhlooqruu}}EEqqssww{}0_aacceeggiikkmmooqqssuuwwyy{{}}      !!##%%''))++--//ayy}}      !!##%%''))++--//1133557799;;==??AACCEEGGIIKKMMOOQQSSUUWWYY[[]]__aacceeggiikkmmooqqssuuwwyy{{}} '07@EPW`gp}!N!N!p!!!$$,0,^,a,a,e,f,h,h,j,j,l,l,s,s,v,v,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,--%-'-'----AACCEEGGIIKKMMOOQQSSUUWWYY[[]]__aacceeggiikkmm##%%''))++--//33557799;;==??AACCEEGGIIKKMMOOQQSSUUWWYY[[]]__aacceeggiikkmmoozz||SSpAZ(O  n`n"Cjcodings-1.0.58/resources/tables/CR_Changes_When_Uppercased.bin000066400000000000000000000115401433325321700244570ustar00rootroot00000000000000kaz      !!##%%''))++--//11335577::<<>>@@BBDDFFHIKKMMOOQQSSUUWWYY[[]]__aacceeggiikkmmooqqssuuwwzz||~      ##%%''))++--//1133<<?@BBGGIIKKMMOTVWYY[\`accefhlooqruu}}EEqqssww{}0_aacceeggiikkmmooqqssuuwwyy{{}}      !!##%%''))++--//ayy}}      !!##%%''))++--//1133557799;;==??AACCEEGGIIKKMMOOQQSSUUWWYY[[]]__aacceeggiikkmmooqqssuuwwyy{{}} '07@EPW`gp}!N!N!p!!!$$,0,^,a,a,e,f,h,h,j,j,l,l,s,s,v,v,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,--%-'-'----AACCEEGGIIKKMMOOQQSSUUWWYY[[]]__aacceeggiikkmm##%%''))++--//33557799;;==??AACCEEGGIIKKMMOOQQSSUUWWYY[[]]__aacceeggiikkmmoozz||SSpAZ(O  n`n"Cjcodings-1.0.58/resources/tables/CR_Cherokee.bin000066400000000000000000000000401433325321700214710ustar00rootroot00000000000000pjcodings-1.0.58/resources/tables/CR_Chorasmian.bin000066400000000000000000000000201433325321700220260ustar00rootroot00000000000000jcodings-1.0.58/resources/tables/CR_Cn.bin000066400000000000000000000124601433325321700203150ustar00rootroot00000000000000Kxy00WXKL./??\]__k      ) ) 1 1 4 4 7 7 : ; = = C F I J N P R X ] ] _ e w      ) ) 1 1 4 4 : ; E F I J N T X [ ^ ^ d e x   ) ) : < E E I I N T W W [ _ d e p v   E E I I P S d e ;>\HHmpIINOWWYY^_[\}  7?T_mmqqty,/<?ACnou__}~LO}8:JLFGNOXXZZ\\^^~ e e r s !!$'$?$K$_+t+u++,/,/,_,_,,-&-&-(-,-.-/-h-n-q-~------------------.S.....////0@0@00111010111122,?-/:?xT^}7?NOZ[''//loפׯno77==??BBEE@OSSgglouu  '';;>>NO^46$,KO{(/dnp7?V_h  669;=>VV   : > @              6 7 ; > I O Y _       6 8 V W s w       I      ( / :_(/ZNQp~55HOw? ))1144::EFIJNOQVX\demou\\bEOZ_m,/@<  669:GOZHO  77FOmo  79;;>>HOZ_ffii##$o$o$u$%D/4/4/49CFGgj9j?j_j_jjjmjpjjjjjkFkOkZkZkbkbkxk|kn?nnoKoNoooooooo OSchoko}'(FW_yUUԝԝԠԡԣԤԧԨԭԭԺԺԼԼ  ::??EEGIQQ֦֧ڌښڠڠڰ""%%+-/>?JMPLOZ]`p>  ##%&((3388::<ACFHHJJLLPPSSUVXXZZ\\^^``ccefkkssxx}},/<?IOR_ft HOZ_yyT_nouw{5?΢ίKjcodings-1.0.58/resources/tables/CR_Cntrl.bin000066400000000000000000000000301433325321700210250ustar00rootroot00000000000000jcodings-1.0.58/resources/tables/CR_Co.bin000066400000000000000000000000401433325321700203050ustar00rootroot00000000000000jcodings-1.0.58/resources/tables/CR_Common.bin000066400000000000000000000025601433325321700212050ustar00rootroot00000000000000[@[`{tt~~  @@ d e??56  d f p t ~ !!%!'!)!,!1!3!M!O!_!!!$&$@$J$`')+s+v+++..R//000000 00070<0?00000011112 2_22223X3MM!09..[[jk>?0RTfhk ;@[epp37?oo&)fjzуфьѩѮV`xTVԜԞԟԢԢԥԦԩԬԮԹԻԻԽ  9;>@DFFJPR֥֨q=+0;@HPQ`es GPY`xzS`mptxz jcodings-1.0.58/resources/tables/CR_Coptic.bin000066400000000000000000000000401433325321700211650ustar00rootroot00000000000000,,,,jcodings-1.0.58/resources/tables/CR_Cs.bin000066400000000000000000000000201433325321700203070ustar00rootroot00000000000000jcodings-1.0.58/resources/tables/CR_Cuneiform.bin000066400000000000000000000000501433325321700216740ustar00rootroot00000000000000  #$$n$p$t$%Cjcodings-1.0.58/resources/tables/CR_Cypriot.bin000066400000000000000000000000701433325321700214000ustar00rootroot00000000000000  578<<??jcodings-1.0.58/resources/tables/CR_Cyrillic.bin000066400000000000000000000001101433325321700215140ustar00rootroot00000000000000/++xx--@./jcodings-1.0.58/resources/tables/CR_Dash.bin000066400000000000000000000002701433325321700206300ustar00rootroot00000000000000---   S S { { "".....:.;.@.@0000000012XXcc jcodings-1.0.58/resources/tables/CR_Default_Ignorable_Code_Point.bin000066400000000000000000000002201433325321700254150ustar00rootroot00000000000000#OO_`   * . ` o1d1dszjcodings-1.0.58/resources/tables/CR_Deprecated.bin000066400000000000000000000001101433325321700220020ustar00rootroot00000000000000IIsswwyy j o#)#*jcodings-1.0.58/resources/tables/CR_Deseret.bin000066400000000000000000000000201433325321700213350ustar00rootroot00000000000000Ojcodings-1.0.58/resources/tables/CR_Devanagari.bin000066400000000000000000000000501433325321700220060ustar00rootroot00000000000000  P U c f jcodings-1.0.58/resources/tables/CR_Diacritic.bin000066400000000000000000000026101433325321700216440ustar00rootroot00000000000000a^^``NPW]btuzzYYKRWX0J < < M M Q T q q < < M M < < M M U U M M ; < M M GLNN557799>?779:cdim]_9;u|44DDks67x},j,,././0*0/0000oo|}!+.SS{}[_ik />>@@pp   " 'FP34ss56<<MMflptBBFF??++9:=>CC44GG??BBDEjjk0k6oooogimr{тхыѪѭ06DFHJjcodings-1.0.58/resources/tables/CR_Digit.bin000066400000000000000000000007601433325321700210150ustar00rootroot00000000000000{=09`i f o f o f o f o f o PY )@IFOPY@IPY ) PY 0 9fo6?PYPY09PYPYPYj`jikPkY@IPYjcodings-1.0.58/resources/tables/CR_Dives_Akuru.bin000066400000000000000000000001101433325321700221630ustar00rootroot00000000000000   578;FPYjcodings-1.0.58/resources/tables/CR_Dogra.bin000066400000000000000000000000201433325321700207760ustar00rootroot00000000000000;jcodings-1.0.58/resources/tables/CR_Duployan.bin000066400000000000000000000000601433325321700215410ustar00rootroot00000000000000 jp|jcodings-1.0.58/resources/tables/CR_Egyptian_Hieroglyphs.bin000066400000000000000000000000301433325321700241000ustar00rootroot0000000000000004.4048jcodings-1.0.58/resources/tables/CR_Elbasan.bin000066400000000000000000000000201433325321700213070ustar00rootroot00000000000000'jcodings-1.0.58/resources/tables/CR_Elymaic.bin000066400000000000000000000000201433325321700213250ustar00rootroot00000000000000jcodings-1.0.58/resources/tables/CR_Emoji.bin000066400000000000000000000023101433325321700210110ustar00rootroot000000000000001##**09 < < I I!"!"!9!9!!!!###(#(######$$%%%%%%%%&&&&&&&&&&&&& & &"&#&&&&&*&*&.&/&8&:&@&@&B&B&H&S&_&`&c&c&e&f&h&h&{&{&~&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&'''''' '''''''''''!'!'('('3'4'D'D'G'G'L'L'N'N'S'U'W'W'c'd'''''''')4)5+++++P+P+U+U00000=0=2222pq~//2:PQ!$=INPgopszO :<EGxzptxzjcodings-1.0.58/resources/tables/CR_Emoji_Component.bin000066400000000000000000000001301433325321700230310ustar00rootroot00000000000000 ##**09  jcodings-1.0.58/resources/tables/CR_Emoji_Modifier.bin000066400000000000000000000000201433325321700226230ustar00rootroot00000000000000jcodings-1.0.58/resources/tables/CR_Emoji_Modifier_Base.bin000066400000000000000000000004701433325321700235660ustar00rootroot00000000000000M&&&&&' ' BCFPfx||tuzzEGKO  &&09<>wwjcodings-1.0.58/resources/tables/CR_Emoji_Presentation.bin000066400000000000000000000012201433325321700235430ustar00rootroot00000000000000Q########%%&&&H&S&&&&&&&&&&&&&&&&&&&&&&&&&&''' ' '('('L'L'N'N'S'U'W'W''''''+++P+P+U+U//268:PQ -57|~>@@B=KNPgzzO :<EGxzptxzjcodings-1.0.58/resources/tables/CR_Ethiopic.bin000066400000000000000000000004101433325321700215110ustar00rootroot00000000000000A HJMPVXXZ]`Z]|------------------  &(.jcodings-1.0.58/resources/tables/CR_Extended_Pictographic.bin000066400000000000000000000011701433325321700242050ustar00rootroot00000000000000N < < I I!"!"!9!9!!!!###(#(########$$%%%%%%%%&&&&&&&''''''''''!'!'('('3'4'D'D'G'G'L'L'N'N'S'U'W'W'c'g'''''''')4)5+++++P+P+U+U00000=0=2222 //lq~//2:<?I=FOt HOZ_ :<EGjcodings-1.0.58/resources/tables/CR_Extender.bin000066400000000000000000000004101433325321700215230ustar00rootroot00000000000000A @@ U UFF  CC66{{0001050000 pppp]]kBkCoooo<=DFjcodings-1.0.58/resources/tables/CR_Georgian.bin000066400000000000000000000001301433325321700214770ustar00rootroot00000000000000 --%-'-'----jcodings-1.0.58/resources/tables/CR_Glagolitic.bin000066400000000000000000000001001433325321700220170ustar00rootroot00000000000000,,.,0,^!#$&*jcodings-1.0.58/resources/tables/CR_Gothic.bin000066400000000000000000000000201433325321700211570ustar00rootroot000000000000000Jjcodings-1.0.58/resources/tables/CR_Grantha.bin000066400000000000000000000002001433325321700213260ustar00rootroot00000000000000 (*02359<DGHKMPPWW]cflptjcodings-1.0.58/resources/tables/CR_Graph.bin000066400000000000000000000125301433325321700210140ustar00rootroot00000000000000U!~wz/1VY JM-0>@[^^`j       ( * 0 2 3 5 6 8 9 < < > B G H K M Q Q Y \ ^ ^ f v       ( * 0 2 3 5 9 < D G H K M U W \ ] _ c f w    ( * 9 = D F H J M U V X Z ` c f o w    D F H J O T c f  :?[GIlqHJMPVXXZ]`Z]|  6@S`lnprs x +0;@@Dmpt^`|KP|7;IM EHMPWYY[[]]_} ' * . 0 ^ ` d f q t !!!$&$@$J$`+s+v++,.,0,^,`,,-%-'-'-----0-g-o-p-------------------.R....////00?0A00011/11111122 +@,09@wS_|6@MPY\  &(.0kpףװmp68<>>@ACDF?P RTfhkptv  &(:<=?MP]37#-JPz'0coo6@U`g 578<<?UW   9 ? ?              5 8 : ? H P X `       5 9 U X r x       H      ' 0 9`~'0YMRo46GPv> (*02359;DGHKMPPWW]cflpt[]aDPY`l+0?;   578;FPYGP 68EPlp  6::<=?GPY`eghj#$$n$p$t$%C04.4048DFFhj8j@j^j`jijnjojjjjkkEkPkYk[kakckwk}kn@nooJoOooooooopPRdgpjp|&)EV`xTVԜԞԟԢԢԥԦԩԬԮԹԻԻԽ  9;>@DFFJPR֥֨ڋڛڟڡگ!#$&*,0=@INOKPY^_q=!"$$'')24799;;BBGGIIKKMOQRTTWWYY[[]]__abddgjlrtwy|~~+0;@HPQ`es GPY`xzS`mptxz4@ ΡΰJ jcodings-1.0.58/resources/tables/CR_Grapheme_Base.bin000066400000000000000000000150301433325321700224330ustar00rootroot00000000000000B ~pwz/1VYJ`oq /M$$((0>@X^^`j  9 ; ; = @ I L N P X a d       ( * 0 2 3 5 6 8 9 > @ Y \ ^ ^ f o r t v v       ( * 0 2 3 5 9 = = @ @ G H K L \ ] _ a f w       ( * 9 = = A D X Z ` a f o w     : = = ? @ F H J L N O T V X a f  023?FO[46688:GIl,1188;<?WZ]apuHJMPVXXZ]`Z`|  156@Q`lnp  x#&)+0138@@DmptUWWaacdmr3;;=ACKPjt|+45;IM EHMPWYY[[]]_}  ' / _ p q t !!!$&$@$J$`+s+v++,.,0,^,`,,,,-%-'-'-----0-g-o-p------------------..R....////00)000?0A00011/11111122 +@nss~ $'+09@w%.FRS_|(/034@BDKMMPY\{}  &(.0kpףװmp68<>>@ACDF?P0RTfhkptv  &(:<=?MP]37#-JPu'0coo6@U`g 578<<?UW   9 ? ?            5 @ H P X `       5 9 U X r x       H      # 0 9`~'0EQY7GMRo&,,6GPrtv.23558= (*02359==??ADGHKMPP]c7@AEEG[]]_a2;<>>ADPY`l !&&0?.88;;   /1578==?BDFPY 29:?FPPWX\ />>@EPlp  0FFPY`eghj#$$n$p$t$%C04.DFFhj8j@j^j`jijnjojjjjkk/k7kEkPkYk[kakckwk}kn@nooJoPooooooopPRdgpjp|&)dffjmуфьѩѮAEEV`xTVԜԞԟԢԢԥԦԩԬԮԹԻԻԽ  9;>@DFFJPR֥֨7:mtvڃڅڋ,7=@INOCKKPY^_q=!"$$'')24799;;BBGGIIKKMOQRTTWWYY[[]]__abddgjlrtwy|~~+0;@HPQ`es GPY`xzS`mptxz4@ ΡΰJjcodings-1.0.58/resources/tables/CR_Grapheme_Cluster_Break_CR.bin000066400000000000000000000000201433325321700246630ustar00rootroot00000000000000 jcodings-1.0.58/resources/tables/CR_Grapheme_Cluster_Break_Control.bin000066400000000000000000000002401433325321700260030ustar00rootroot00000000000000'    ( . ` o4048szjcodings-1.0.58/resources/tables/CR_Grapheme_Cluster_Break_Extend.bin000066400000000000000000000053201433325321700256160ustar00rootroot00000000000000YoK_pp0J#%')-Y[  : : < < A H M M Q W b c   < < A B G H K M Q Q p q u u   < < > ? A D M M U W b c   > @ F H J M U V b c  ; < > > A D M M W W b c 114:GN557799q~-0279:=>XY^`qt]_24RSrs   "'(229;VVX^``bbels|4:<<BBks,367 ,,----0*0/00ort} %&,,&-GQ).1256CCLL|| /vz       8 : ? ?   $ 'FP8F'+-4ss/14467>>;<>>@@WWflpt8?BDFF^^3:==?@"%'+/79:00;<>>CC 38;>GGQVY[068=??16::<=?EGGjjk0k6oOoOooooeeginr{тхыѪѭBD6;luuڄڄڛڟڡگ!#$&*06DJ jcodings-1.0.58/resources/tables/CR_Grapheme_Cluster_Break_L.bin000066400000000000000000000000301433325321700245530ustar00rootroot00000000000000_`|jcodings-1.0.58/resources/tables/CR_Grapheme_Cluster_Break_LV.bin000066400000000000000000000062001433325321700247060ustar00rootroot0000000000000088TTpp44PPll00LLhh,,HHdd ((DD``||$$@@\\xx <<XXtt88TTpp44PPll00LLhh,,HHdd ((DD``||$$@@\\xx <<XXtt88TTpp44PPll00LLhh,,HHdd ((DD``||$$@@\\xx <<XXtt88TTpp44PPllˆˆ¤¤00LLhhÄÄààüü,,HHddĀĀĜĜĸĸ ((DD``||ŘŘŴŴ$$@@\\xxƔƔưư <<XXttǐǐǬǬ88TTppȌȌȨȨ44PPllɈɈɤɤ00LLhhʄʄʠʠʼʼ,,HHddˀˀ˜˜˸˸ ((DD``||̴̴̘̘$$@@\\xx͔͔ͰͰ <<XXttΐΐάά88TTppόόϨϨ44PPllЈЈФФ00LLhhффѠѠѼѼ,,HHddҀҀҜҜҸҸ ((DD``||ӘӘӴӴ$$@@\\xxԔԔ԰԰ <<XXttՐՐլլ88TTpp֌֌֨֨44PPll׈׈jcodings-1.0.58/resources/tables/CR_Grapheme_Cluster_Break_LVT.bin000066400000000000000000000062001433325321700250320ustar00rootroot0000000000000079SUoq35OQkm/1KMgi+-GIce ')CE_a{} #%?A[]wy!;=WYsu79SUoq35OQkm/1KMgi+-GIce ')CE_a{} #%?A[]wy!;=WYsu79SUoq35OQkm/1KMgi+-GIce ')CE_a{} #%?A[]wy!;=WYsu79SUoq35OQkm‡‰£¥¿/1KMgiÃÅßáûý+-GIceāěĝķĹ ')CE_a{}ŗřųŵ #%?A[]wyƓƕƯƱ!;=WYsuǏǑǫǭ79SUoqȋȍȧȩ35OQkmɇɉɣɥɿ/1KMgiʃʅʟʡʻʽ+-GIceˁ˛˝˷˹ ')CE_a{}̵̗̙̳ #%?A[]wy͓͕ͯͱ!;=WYsuΏΑΫέ79SUoqϋύϧϩ35OQkmЇЉУХп/1KMgiухџѡѻѽ+-GIceҁқҝҷҹ ')CE_a{}ӗәӳӵ #%?A[]wyԓԕԯԱ!;=WYsuՏՑիխ79SUoq֋֍֧֩35OQkmׇ׉ףjcodings-1.0.58/resources/tables/CR_Grapheme_Cluster_Break_Prepend.bin000066400000000000000000000001601433325321700257610ustar00rootroot00000000000000  N N??AA::FFjcodings-1.0.58/resources/tables/CR_Grapheme_Cluster_Break_SpacingMark.bin000066400000000000000000000024001433325321700265620ustar00rootroot00000000000000?   ; ; > @ I L N O   > @   @ @ G H K L   A D   ? @ F H J L 33>?11;<VW#&)+0138UUWWmr;;=ACD$+45#$''RS/034MM,,EF,.2355??ADGHKMbc57@AEE02;<>> !&&,.881578==@@BB99WX//>>oQoooffmmjcodings-1.0.58/resources/tables/CR_Grapheme_Cluster_Break_T.bin000066400000000000000000000000301433325321700245630ustar00rootroot00000000000000jcodings-1.0.58/resources/tables/CR_Grapheme_Cluster_Break_V.bin000066400000000000000000000000301433325321700245650ustar00rootroot00000000000000`װjcodings-1.0.58/resources/tables/CR_Grapheme_Cluster_Break_ZWJ.bin000066400000000000000000000000201433325321700250310ustar00rootroot00000000000000 jcodings-1.0.58/resources/tables/CR_Grapheme_Extend.bin000066400000000000000000000053101433325321700230100ustar00rootroot00000000000000XoK_pp0J#%')-Y[  : : < < A H M M Q W b c   < < A B G H K M Q Q p q u u   < < > ? A D M M U W b c   > @ F H J M U V b c  ; < > > A D M M W W b c 114:GN557799q~-0279:=>XY^`qt]_24RSrs   "'(229;VVX^``bbels|4:<<BBks,367 ,,----0*0/00ort} %&,,&-GQ).1256CCLL|| /vz       8 : ? ?   $ 'FP8F'+-4ss/14467>>;<>>@@WWflpt8?BDFF^^3:==?@"%'+/79:00;<>>CC 38;>GGQVY[068=??16::<=?EGGjjk0k6oOoOooooeeginr{тхыѪѭBD6;luuڄڄڛڟڡگ!#$&*06DJ jcodings-1.0.58/resources/tables/CR_Grapheme_Link.bin000066400000000000000000000006701433325321700224620ustar00rootroot00000000000000m6 M M M M M M M M ; < M M ::9:44``DD--,,SS ? ?FF3455MMBB??++99=>44GG??DEjcodings-1.0.58/resources/tables/CR_Greek.bin000066400000000000000000000004501433325321700210060ustar00rootroot00000000000000I$psuwz}&*]afj EHMPWYY[[]]_}!&!&ee@Ejcodings-1.0.58/resources/tables/CR_Gujarati.bin000066400000000000000000000001701433325321700215160ustar00rootroot00000000000000 jcodings-1.0.58/resources/tables/CR_Gunjala_Gondi.bin000066400000000000000000000000701433325321700224500ustar00rootroot00000000000000 `eghjjcodings-1.0.58/resources/tables/CR_Gurmukhi.bin000066400000000000000000000002101433325321700215360ustar00rootroot00000000000000!       ( * 0 2 3 5 6 8 9 < < > B G H K M Q Q Y \ ^ ^ f vjcodings-1.0.58/resources/tables/CR_Han.bin000066400000000000000000000002401433325321700204540ustar00rootroot00000000000000'....//00000!0)080;4MNmpoo4@ ΡΰJjcodings-1.0.58/resources/tables/CR_Hangul.bin000066400000000000000000000001701433325321700211660ustar00rootroot000000000000000.0/111222`2~`|ףװjcodings-1.0.58/resources/tables/CR_Hanifi_Rohingya.bin000066400000000000000000000000301433325321700230010ustar00rootroot00000000000000  ' 0 9jcodings-1.0.58/resources/tables/CR_Hanunoo.bin000066400000000000000000000000201433325321700213510ustar00rootroot00000000000000 4jcodings-1.0.58/resources/tables/CR_Hatran.bin000066400000000000000000000000401433325321700211610ustar00rootroot00000000000000jcodings-1.0.58/resources/tables/CR_Hebrew.bin000066400000000000000000000001201433325321700211570ustar00rootroot00000000000000 68<>>@ACDFOjcodings-1.0.58/resources/tables/CR_Hex_Digit.bin000066400000000000000000000000701433325321700216130ustar00rootroot00000000000000 09AFaf!&AFjcodings-1.0.58/resources/tables/CR_Hiragana.bin000066400000000000000000000000601433325321700214600ustar00rootroot00000000000000 0A000PRjcodings-1.0.58/resources/tables/CR_Hyphen.bin000066400000000000000000000001301433325321700211770ustar00rootroot00000000000000 --  ..00cc eejcodings-1.0.58/resources/tables/CR_IDS_Binary_Operator.bin000066400000000000000000000000301433325321700235410ustar00rootroot00000000000000////jcodings-1.0.58/resources/tables/CR_IDS_Trinary_Operator.bin000066400000000000000000000000201433325321700237440ustar00rootroot00000000000000//jcodings-1.0.58/resources/tables/CR_ID_Continue.bin000066400000000000000000000133301433325321700221120ustar00rootroot0000000000000009AZ__aztvwz}/1VYY` inJM-@[`j c f o q       ( * 0 2 3 5 6 8 9 < < > B G H K M Q Q Y \ ^ ^ f u       ( * 0 2 3 5 9 < D G H K M U W \ ] _ c f o q q    ( * 9 = D F H J M U V X Z ` c f o    D F H J N T W _ c f o z  :@NPY )557799>GIlqIPHJMPVXXZ]`Z]_iqlo  4@S`lnprs   x +0;Fmpt ^`|KPYks7@IM} EHMPWYY[[]]_} ? @ T T q q   !!!!! !!!!!!$!$!&!&!(!(!*!9!<!?!E!I!N!N!`!,,.,0,^,`,,,--%-'-'-----0-g-o-o--------------------000!0/0105080<0A000000011/11111114MN +@ot}"',,@s-0S`|6@MPY`vz  &(.0Z\ipףװmp(*68<>>@ACDF=P /34MOptv!:??AZf  &(:<=?MP]@t-JPz'0c6@U`g 578<<?U`v    9              5 8 : ? ? ` |        5 @ U ` r    H      ' 0 9''0PFfo46?DGPsvv7>> (*02359;DGHKMPPWW]cflptJPY^a@DDPY+09:   578;CPY>GGP 68@PYr  6::<=?GPY`eghj #$$n$%C04.DFFhj8j@j^j`jijjjjkk6k@kCkPkYkckwk}kn@nooJoOooooooooopPRdgpjp|eimr{тхыѪѭBDTVԜԞԟԢԢԥԦԩԬԮԹԻԻԽ  9;>@DFFJPR֥֨46NPnp׈׊רת6;luuڄڄڛڟڡگ!#$&*,0=@INNKPY!"$$'')24799;;BBGGIIKKMOQRTTWWYY[[]]__abddgjlrtwy|~~4@ ΡΰJjcodings-1.0.58/resources/tables/CR_ID_Start.bin000066400000000000000000000115701433325321700214270ustar00rootroot00000000000000nAZazptvwz}/1VYY` Jnoq/M$$((@X`j  9 = = P P X a q     ( * 0 2 3 5 6 8 9 Y \ ^ ^ r t     ( * 0 2 3 5 9 = = \ ] _ a q q     ( * 9 = = X Z ` a     : = = N N T V _ a z  023@F@GIl*??PUZ]aaefnpuHJMPVXXZ]`Zlo  1@Q`lnp xPmpt T3EK#MOZ} EHMPWYY[[]]_} q q   !!!!! !!!!!!$!$!&!&!(!(!*!9!<!?!E!I!N!N!`!,,.,0,^,`,,,,,--%-'-'-----0-g-o-o------------------000!0)0105080<0A000000011/11111114MN *+@n" "@s %0F`|(@BDK`vzz~  &(.0Z\ipףװmp(*68<>>@ACDF=Pptv!:AZf  &(:<=?MP]@t-JPu'0c6@U`g 578<<?U`v    9            5 ` |        5 @ U ` r    H      #''0E7&DDGGPrvv+ (*02359==PP]a4GJ_a/DD+   /??AA 2::PP\ .@@r  0FF`eghj #$$n$%C04.DFFhj8j@j^jjkk/k@kCkckwk}kn@nooJoPoPoooooopPRdgpjp|TVԜԞԟԢԢԥԦԩԬԮԹԻԻԽ  9;>@DFFJPR֥֨46NPnp׈׊רת,7=NNCKK!"$$'')24799;;BBGGIIKKMOQRTTWWYY[[]]__abddgjlrtwy|~~4@ ΡΰJjcodings-1.0.58/resources/tables/CR_Ideographic.bin000066400000000000000000000002401433325321700221640ustar00rootroot00000000000000'000!0)080:4MNmpoopp4@ ΡΰJjcodings-1.0.58/resources/tables/CR_Imperial_Aramaic.bin000066400000000000000000000000301433325321700231220ustar00rootroot00000000000000@UW_jcodings-1.0.58/resources/tables/CR_In_Adlam.bin000066400000000000000000000000201433325321700214060ustar00rootroot00000000000000_jcodings-1.0.58/resources/tables/CR_In_Aegean_Numbers.bin000066400000000000000000000000201433325321700232430ustar00rootroot00000000000000?jcodings-1.0.58/resources/tables/CR_In_Ahom.bin000066400000000000000000000000201433325321700212540ustar00rootroot00000000000000?jcodings-1.0.58/resources/tables/CR_In_Alchemical_Symbols.bin000066400000000000000000000000201433325321700241220ustar00rootroot00000000000000jcodings-1.0.58/resources/tables/CR_In_Alphabetic_Presentation_Forms.bin000066400000000000000000000000201433325321700263250ustar00rootroot00000000000000Ojcodings-1.0.58/resources/tables/CR_In_Anatolian_Hieroglyphs.bin000066400000000000000000000000201433325321700246530ustar00rootroot00000000000000DFjcodings-1.0.58/resources/tables/CR_In_Ancient_Greek_Musical_Notation.bin000066400000000000000000000000201433325321700264160ustar00rootroot00000000000000Ojcodings-1.0.58/resources/tables/CR_In_Ancient_Greek_Numbers.bin000066400000000000000000000000201433325321700245610ustar00rootroot00000000000000@jcodings-1.0.58/resources/tables/CR_In_Ancient_Symbols.bin000066400000000000000000000000201433325321700234610ustar00rootroot00000000000000jcodings-1.0.58/resources/tables/CR_In_Arabic.bin000066400000000000000000000000201433325321700215510ustar00rootroot00000000000000jcodings-1.0.58/resources/tables/CR_In_Arabic_Extended_A.bin000066400000000000000000000000201433325321700236310ustar00rootroot00000000000000jcodings-1.0.58/resources/tables/CR_In_Arabic_Mathematical_Alphabetic_Symbols.bin000066400000000000000000000000201433325321700300460ustar00rootroot00000000000000jcodings-1.0.58/resources/tables/CR_In_Arabic_Presentation_Forms_A.bin000066400000000000000000000000201433325321700257120ustar00rootroot00000000000000Pjcodings-1.0.58/resources/tables/CR_In_Arabic_Presentation_Forms_B.bin000066400000000000000000000000201433325321700257130ustar00rootroot00000000000000pjcodings-1.0.58/resources/tables/CR_In_Arabic_Supplement.bin000066400000000000000000000000201433325321700237650ustar00rootroot00000000000000Pjcodings-1.0.58/resources/tables/CR_In_Armenian.bin000066400000000000000000000000201433325321700221220ustar00rootroot000000000000000jcodings-1.0.58/resources/tables/CR_In_Arrows.bin000066400000000000000000000000201433325321700216450ustar00rootroot00000000000000!!jcodings-1.0.58/resources/tables/CR_In_Avestan.bin000066400000000000000000000000201433325321700217710ustar00rootroot00000000000000  ?jcodings-1.0.58/resources/tables/CR_In_Balinese.bin000066400000000000000000000000201433325321700221120ustar00rootroot00000000000000jcodings-1.0.58/resources/tables/CR_In_Bamum.bin000066400000000000000000000000201433325321700214310ustar00rootroot00000000000000jcodings-1.0.58/resources/tables/CR_In_Bamum_Supplement.bin000066400000000000000000000000201433325321700236450ustar00rootroot00000000000000hj?jcodings-1.0.58/resources/tables/CR_In_Bassa_Vah.bin000066400000000000000000000000201433325321700222170ustar00rootroot00000000000000jjjcodings-1.0.58/resources/tables/CR_In_Batak.bin000066400000000000000000000000201433325321700214120ustar00rootroot00000000000000jcodings-1.0.58/resources/tables/CR_In_Bengali.bin000066400000000000000000000000201433325321700217310ustar00rootroot00000000000000 jcodings-1.0.58/resources/tables/CR_In_Bhaiksuki.bin000066400000000000000000000000201433325321700223020ustar00rootroot00000000000000ojcodings-1.0.58/resources/tables/CR_In_Block_Elements.bin000066400000000000000000000000201433325321700232560ustar00rootroot00000000000000%%jcodings-1.0.58/resources/tables/CR_In_Bopomofo.bin000066400000000000000000000000201433325321700221500ustar00rootroot0000000000000011/jcodings-1.0.58/resources/tables/CR_In_Bopomofo_Extended.bin000066400000000000000000000000201433325321700237700ustar00rootroot0000000000000011jcodings-1.0.58/resources/tables/CR_In_Box_Drawing.bin000066400000000000000000000000201433325321700225730ustar00rootroot00000000000000%%jcodings-1.0.58/resources/tables/CR_In_Brahmi.bin000066400000000000000000000000201433325321700215720ustar00rootroot00000000000000jcodings-1.0.58/resources/tables/CR_In_Buginese.bin000066400000000000000000000000201433325321700221310ustar00rootroot00000000000000jcodings-1.0.58/resources/tables/CR_In_Buhid.bin000066400000000000000000000000201433325321700214230ustar00rootroot00000000000000@_jcodings-1.0.58/resources/tables/CR_In_Byzantine_Musical_Symbols.bin000066400000000000000000000000201433325321700255200ustar00rootroot00000000000000jcodings-1.0.58/resources/tables/CR_In_CJK_Compatibility.bin000066400000000000000000000000201433325321700236700ustar00rootroot0000000000000033jcodings-1.0.58/resources/tables/CR_In_CJK_Compatibility_Forms.bin000066400000000000000000000000201433325321700250360ustar00rootroot000000000000000Ojcodings-1.0.58/resources/tables/CR_In_CJK_Compatibility_Ideographs.bin000066400000000000000000000000201433325321700260350ustar00rootroot00000000000000jcodings-1.0.58/resources/tables/CR_In_CJK_Compatibility_Ideographs_Supplement.bin000066400000000000000000000000201433325321700302510ustar00rootroot00000000000000jcodings-1.0.58/resources/tables/CR_In_CJK_Radicals_Supplement.bin000066400000000000000000000000201433325321700250150ustar00rootroot00000000000000..jcodings-1.0.58/resources/tables/CR_In_CJK_Strokes.bin000066400000000000000000000000201433325321700225110ustar00rootroot0000000000000011jcodings-1.0.58/resources/tables/CR_In_CJK_Symbols_and_Punctuation.bin000066400000000000000000000000201433325321700257220ustar00rootroot0000000000000000?jcodings-1.0.58/resources/tables/CR_In_CJK_Unified_Ideographs.bin000066400000000000000000000000201433325321700246070ustar00rootroot00000000000000Njcodings-1.0.58/resources/tables/CR_In_CJK_Unified_Ideographs_Extension_A.bin000066400000000000000000000000201433325321700271030ustar00rootroot000000000000004Mjcodings-1.0.58/resources/tables/CR_In_CJK_Unified_Ideographs_Extension_B.bin000066400000000000000000000000201433325321700271040ustar00rootroot00000000000000jcodings-1.0.58/resources/tables/CR_In_CJK_Unified_Ideographs_Extension_C.bin000066400000000000000000000000201433325321700271050ustar00rootroot00000000000000?jcodings-1.0.58/resources/tables/CR_In_CJK_Unified_Ideographs_Extension_D.bin000066400000000000000000000000201433325321700271060ustar00rootroot00000000000000@jcodings-1.0.58/resources/tables/CR_In_CJK_Unified_Ideographs_Extension_E.bin000066400000000000000000000000201433325321700271070ustar00rootroot00000000000000 ίjcodings-1.0.58/resources/tables/CR_In_CJK_Unified_Ideographs_Extension_F.bin000066400000000000000000000000201433325321700271100ustar00rootroot00000000000000ΰjcodings-1.0.58/resources/tables/CR_In_CJK_Unified_Ideographs_Extension_G.bin000066400000000000000000000000201433325321700271110ustar00rootroot00000000000000Ojcodings-1.0.58/resources/tables/CR_In_Carian.bin000066400000000000000000000000201433325321700215650ustar00rootroot00000000000000jcodings-1.0.58/resources/tables/CR_In_Caucasian_Albanian.bin000066400000000000000000000000201433325321700240440ustar00rootroot000000000000000ojcodings-1.0.58/resources/tables/CR_In_Chakma.bin000066400000000000000000000000201433325321700215540ustar00rootroot00000000000000Ojcodings-1.0.58/resources/tables/CR_In_Cham.bin000066400000000000000000000000201433325321700212400ustar00rootroot00000000000000_jcodings-1.0.58/resources/tables/CR_In_Cherokee.bin000066400000000000000000000000201433325321700221150ustar00rootroot00000000000000jcodings-1.0.58/resources/tables/CR_In_Cherokee_Supplement.bin000066400000000000000000000000201433325321700243310ustar00rootroot00000000000000pjcodings-1.0.58/resources/tables/CR_In_Chess_Symbols.bin000066400000000000000000000000201433325321700231450ustar00rootroot00000000000000ojcodings-1.0.58/resources/tables/CR_In_Chorasmian.bin000066400000000000000000000000201433325321700224540ustar00rootroot00000000000000jcodings-1.0.58/resources/tables/CR_In_Combining_Diacritical_Marks.bin000066400000000000000000000000201433325321700257220ustar00rootroot00000000000000ojcodings-1.0.58/resources/tables/CR_In_Combining_Diacritical_Marks_Extended.bin000066400000000000000000000000201433325321700275420ustar00rootroot00000000000000jcodings-1.0.58/resources/tables/CR_In_Combining_Diacritical_Marks_Supplement.bin000066400000000000000000000000201433325321700301360ustar00rootroot00000000000000jcodings-1.0.58/resources/tables/CR_In_Combining_Diacritical_Marks_for_Symbols.bin000066400000000000000000000000201433325321700303000ustar00rootroot00000000000000 jcodings-1.0.58/resources/tables/CR_In_Combining_Half_Marks.bin000066400000000000000000000000201433325321700243640ustar00rootroot00000000000000 /jcodings-1.0.58/resources/tables/CR_In_Common_Indic_Number_Forms.bin000066400000000000000000000000201433325321700254040ustar00rootroot000000000000000?jcodings-1.0.58/resources/tables/CR_In_Control_Pictures.bin000066400000000000000000000000201433325321700236660ustar00rootroot00000000000000$$?jcodings-1.0.58/resources/tables/CR_In_Coptic.bin000066400000000000000000000000201433325321700216110ustar00rootroot00000000000000,,jcodings-1.0.58/resources/tables/CR_In_Coptic_Epact_Numbers.bin000066400000000000000000000000201433325321700244200ustar00rootroot00000000000000jcodings-1.0.58/resources/tables/CR_In_Counting_Rod_Numerals.bin000066400000000000000000000000201433325321700246300ustar00rootroot00000000000000`jcodings-1.0.58/resources/tables/CR_In_Cuneiform.bin000066400000000000000000000000201433325321700223170ustar00rootroot00000000000000 #jcodings-1.0.58/resources/tables/CR_In_Cuneiform_Numbers_and_Punctuation.bin000066400000000000000000000000201433325321700272250ustar00rootroot00000000000000$$jcodings-1.0.58/resources/tables/CR_In_Currency_Symbols.bin000066400000000000000000000000201433325321700236720ustar00rootroot00000000000000 jcodings-1.0.58/resources/tables/CR_In_Cypriot_Syllabary.bin000066400000000000000000000000201433325321700240430ustar00rootroot00000000000000?jcodings-1.0.58/resources/tables/CR_In_Cyrillic.bin000066400000000000000000000000201433325321700221420ustar00rootroot00000000000000jcodings-1.0.58/resources/tables/CR_In_Cyrillic_Extended_A.bin000066400000000000000000000000201433325321700242220ustar00rootroot00000000000000--jcodings-1.0.58/resources/tables/CR_In_Cyrillic_Extended_B.bin000066400000000000000000000000201433325321700242230ustar00rootroot00000000000000@jcodings-1.0.58/resources/tables/CR_In_Cyrillic_Extended_C.bin000066400000000000000000000000201433325321700242240ustar00rootroot00000000000000jcodings-1.0.58/resources/tables/CR_In_Cyrillic_Supplement.bin000066400000000000000000000000201433325321700243560ustar00rootroot00000000000000/jcodings-1.0.58/resources/tables/CR_In_Devanagari.bin000066400000000000000000000000201433325321700224310ustar00rootroot00000000000000 jcodings-1.0.58/resources/tables/CR_In_Devanagari_Extended.bin000066400000000000000000000000201433325321700242510ustar00rootroot00000000000000jcodings-1.0.58/resources/tables/CR_In_Dingbats.bin000066400000000000000000000000201433325321700221230ustar00rootroot00000000000000''jcodings-1.0.58/resources/tables/CR_In_Dives_Akuru.bin000066400000000000000000000000201433325321700226110ustar00rootroot00000000000000_jcodings-1.0.58/resources/tables/CR_In_Dogra.bin000066400000000000000000000000201433325321700214240ustar00rootroot00000000000000Ojcodings-1.0.58/resources/tables/CR_In_Domino_Tiles.bin000066400000000000000000000000201433325321700227550ustar00rootroot000000000000000jcodings-1.0.58/resources/tables/CR_In_Duployan.bin000066400000000000000000000000201433325321700221630ustar00rootroot00000000000000jcodings-1.0.58/resources/tables/CR_In_Early_Dynastic_Cuneiform.bin000066400000000000000000000000201433325321700253110ustar00rootroot00000000000000$%Ojcodings-1.0.58/resources/tables/CR_In_Egyptian_Hieroglyph_Format_Controls.bin000066400000000000000000000000201433325321700275350ustar00rootroot00000000000000404?jcodings-1.0.58/resources/tables/CR_In_Egyptian_Hieroglyphs.bin000066400000000000000000000000201433325321700245250ustar00rootroot0000000000000004/jcodings-1.0.58/resources/tables/CR_In_Elbasan.bin000066400000000000000000000000201433325321700217350ustar00rootroot00000000000000/jcodings-1.0.58/resources/tables/CR_In_Elymaic.bin000066400000000000000000000000201433325321700217530ustar00rootroot00000000000000jcodings-1.0.58/resources/tables/CR_In_Emoticons.bin000066400000000000000000000000201433325321700223300ustar00rootroot00000000000000Ojcodings-1.0.58/resources/tables/CR_In_Enclosed_Alphanumeric_Supplement.bin000066400000000000000000000000201433325321700270300ustar00rootroot00000000000000jcodings-1.0.58/resources/tables/CR_In_Enclosed_Alphanumerics.bin000066400000000000000000000000201433325321700247770ustar00rootroot00000000000000$`$jcodings-1.0.58/resources/tables/CR_In_Enclosed_CJK_Letters_and_Months.bin000066400000000000000000000000201433325321700264670ustar00rootroot0000000000000022jcodings-1.0.58/resources/tables/CR_In_Enclosed_Ideographic_Supplement.bin000066400000000000000000000000201433325321700266360ustar00rootroot00000000000000jcodings-1.0.58/resources/tables/CR_In_Ethiopic.bin000066400000000000000000000000201433325321700221340ustar00rootroot00000000000000jcodings-1.0.58/resources/tables/CR_In_Ethiopic_Extended.bin000066400000000000000000000000201433325321700237540ustar00rootroot00000000000000--jcodings-1.0.58/resources/tables/CR_In_Ethiopic_Extended_A.bin000066400000000000000000000000201433325321700242140ustar00rootroot00000000000000/jcodings-1.0.58/resources/tables/CR_In_Ethiopic_Supplement.bin000066400000000000000000000000201433325321700243500ustar00rootroot00000000000000jcodings-1.0.58/resources/tables/CR_In_General_Punctuation.bin000066400000000000000000000000201433325321700243360ustar00rootroot00000000000000 ojcodings-1.0.58/resources/tables/CR_In_Geometric_Shapes.bin000066400000000000000000000000201433325321700236110ustar00rootroot00000000000000%%jcodings-1.0.58/resources/tables/CR_In_Geometric_Shapes_Extended.bin000066400000000000000000000000201433325321700254310ustar00rootroot00000000000000jcodings-1.0.58/resources/tables/CR_In_Georgian.bin000066400000000000000000000000201433325321700221230ustar00rootroot00000000000000jcodings-1.0.58/resources/tables/CR_In_Georgian_Extended.bin000066400000000000000000000000201433325321700237430ustar00rootroot00000000000000jcodings-1.0.58/resources/tables/CR_In_Georgian_Supplement.bin000066400000000000000000000000201433325321700243370ustar00rootroot00000000000000--/jcodings-1.0.58/resources/tables/CR_In_Glagolitic.bin000066400000000000000000000000201433325321700224460ustar00rootroot00000000000000,,_jcodings-1.0.58/resources/tables/CR_In_Glagolitic_Supplement.bin000066400000000000000000000000201433325321700246620ustar00rootroot00000000000000/jcodings-1.0.58/resources/tables/CR_In_Gothic.bin000066400000000000000000000000201433325321700216050ustar00rootroot000000000000000Ojcodings-1.0.58/resources/tables/CR_In_Grantha.bin000066400000000000000000000000201433325321700217540ustar00rootroot00000000000000jcodings-1.0.58/resources/tables/CR_In_Greek_Extended.bin000066400000000000000000000000201433325321700232450ustar00rootroot00000000000000jcodings-1.0.58/resources/tables/CR_In_Greek_and_Coptic.bin000066400000000000000000000000201433325321700235500ustar00rootroot00000000000000pjcodings-1.0.58/resources/tables/CR_In_Gujarati.bin000066400000000000000000000000201433325321700221360ustar00rootroot00000000000000 jcodings-1.0.58/resources/tables/CR_In_Gunjala_Gondi.bin000066400000000000000000000000201433325321700230710ustar00rootroot00000000000000`jcodings-1.0.58/resources/tables/CR_In_Gurmukhi.bin000066400000000000000000000000201433325321700221630ustar00rootroot00000000000000 jcodings-1.0.58/resources/tables/CR_In_Halfwidth_and_Fullwidth_Forms.bin000066400000000000000000000000201433325321700263140ustar00rootroot00000000000000jcodings-1.0.58/resources/tables/CR_In_Hangul_Compatibility_Jamo.bin000066400000000000000000000000201433325321700254450ustar00rootroot00000000000000101jcodings-1.0.58/resources/tables/CR_In_Hangul_Jamo.bin000066400000000000000000000000201433325321700225540ustar00rootroot00000000000000jcodings-1.0.58/resources/tables/CR_In_Hangul_Jamo_Extended_A.bin000066400000000000000000000000201433325321700246340ustar00rootroot00000000000000`jcodings-1.0.58/resources/tables/CR_In_Hangul_Jamo_Extended_B.bin000066400000000000000000000000201433325321700246350ustar00rootroot00000000000000װjcodings-1.0.58/resources/tables/CR_In_Hangul_Syllables.bin000066400000000000000000000000201433325321700236200ustar00rootroot00000000000000ׯjcodings-1.0.58/resources/tables/CR_In_Hanifi_Rohingya.bin000066400000000000000000000000201433325321700234260ustar00rootroot00000000000000  ?jcodings-1.0.58/resources/tables/CR_In_Hanunoo.bin000066400000000000000000000000201433325321700217770ustar00rootroot00000000000000 ?jcodings-1.0.58/resources/tables/CR_In_Hatran.bin000066400000000000000000000000201433325321700216050ustar00rootroot00000000000000jcodings-1.0.58/resources/tables/CR_In_Hebrew.bin000066400000000000000000000000201433325321700216040ustar00rootroot00000000000000jcodings-1.0.58/resources/tables/CR_In_High_Private_Use_Surrogates.bin000066400000000000000000000000201433325321700257730ustar00rootroot00000000000000ۀjcodings-1.0.58/resources/tables/CR_In_High_Surrogates.bin000066400000000000000000000000201433325321700234650ustar00rootroot00000000000000jcodings-1.0.58/resources/tables/CR_In_Hiragana.bin000066400000000000000000000000201433325321700221020ustar00rootroot000000000000000@0jcodings-1.0.58/resources/tables/CR_In_IPA_Extensions.bin000066400000000000000000000000201433325321700232200ustar00rootroot00000000000000Pjcodings-1.0.58/resources/tables/CR_In_Ideographic_Description_Characters.bin000066400000000000000000000000201433325321700273100ustar00rootroot00000000000000//jcodings-1.0.58/resources/tables/CR_In_Ideographic_Symbols_and_Punctuation.bin000066400000000000000000000000201433325321700275310ustar00rootroot00000000000000oojcodings-1.0.58/resources/tables/CR_In_Imperial_Aramaic.bin000066400000000000000000000000201433325321700235470ustar00rootroot00000000000000@_jcodings-1.0.58/resources/tables/CR_In_Indic_Siyaq_Numbers.bin000066400000000000000000000000201433325321700242570ustar00rootroot00000000000000pjcodings-1.0.58/resources/tables/CR_In_Inscriptional_Pahlavi.bin000066400000000000000000000000201433325321700246520ustar00rootroot00000000000000 ` jcodings-1.0.58/resources/tables/CR_In_Inscriptional_Parthian.bin000066400000000000000000000000201433325321700250340ustar00rootroot00000000000000 @ _jcodings-1.0.58/resources/tables/CR_In_Javanese.bin000066400000000000000000000000201433325321700221240ustar00rootroot00000000000000jcodings-1.0.58/resources/tables/CR_In_Kaithi.bin000066400000000000000000000000201433325321700216010ustar00rootroot00000000000000jcodings-1.0.58/resources/tables/CR_In_Kana_Extended_A.bin000066400000000000000000000000201433325321700233220ustar00rootroot00000000000000/jcodings-1.0.58/resources/tables/CR_In_Kana_Supplement.bin000066400000000000000000000000201433325321700234560ustar00rootroot00000000000000jcodings-1.0.58/resources/tables/CR_In_Kanbun.bin000066400000000000000000000000201433325321700216060ustar00rootroot0000000000000011jcodings-1.0.58/resources/tables/CR_In_Kangxi_Radicals.bin000066400000000000000000000000201433325321700234130ustar00rootroot00000000000000//jcodings-1.0.58/resources/tables/CR_In_Kannada.bin000066400000000000000000000000201433325321700217250ustar00rootroot00000000000000 jcodings-1.0.58/resources/tables/CR_In_Katakana.bin000066400000000000000000000000201433325321700221030ustar00rootroot0000000000000000jcodings-1.0.58/resources/tables/CR_In_Katakana_Phonetic_Extensions.bin000066400000000000000000000000201433325321700261530ustar00rootroot0000000000000011jcodings-1.0.58/resources/tables/CR_In_Kayah_Li.bin000066400000000000000000000000201433325321700220510ustar00rootroot00000000000000/jcodings-1.0.58/resources/tables/CR_In_Kharoshthi.bin000066400000000000000000000000201433325321700224740ustar00rootroot00000000000000  _jcodings-1.0.58/resources/tables/CR_In_Khitan_Small_Script.bin000066400000000000000000000000201433325321700242620ustar00rootroot00000000000000jcodings-1.0.58/resources/tables/CR_In_Khmer.bin000066400000000000000000000000201433325321700214360ustar00rootroot00000000000000jcodings-1.0.58/resources/tables/CR_In_Khmer_Symbols.bin000066400000000000000000000000201433325321700231460ustar00rootroot00000000000000jcodings-1.0.58/resources/tables/CR_In_Khojki.bin000066400000000000000000000000201433325321700216070ustar00rootroot00000000000000Ojcodings-1.0.58/resources/tables/CR_In_Khudawadi.bin000066400000000000000000000000201433325321700222710ustar00rootroot00000000000000jcodings-1.0.58/resources/tables/CR_In_Lao.bin000066400000000000000000000000201433325321700211030ustar00rootroot00000000000000jcodings-1.0.58/resources/tables/CR_In_Latin_1_Supplement.bin000066400000000000000000000000201433325321700240730ustar00rootroot00000000000000jcodings-1.0.58/resources/tables/CR_In_Latin_Extended_A.bin000066400000000000000000000000201433325321700235170ustar00rootroot00000000000000jcodings-1.0.58/resources/tables/CR_In_Latin_Extended_Additional.bin000066400000000000000000000000201433325321700254070ustar00rootroot00000000000000jcodings-1.0.58/resources/tables/CR_In_Latin_Extended_B.bin000066400000000000000000000000201433325321700235200ustar00rootroot00000000000000Ojcodings-1.0.58/resources/tables/CR_In_Latin_Extended_C.bin000066400000000000000000000000201433325321700235210ustar00rootroot00000000000000,`,jcodings-1.0.58/resources/tables/CR_In_Latin_Extended_D.bin000066400000000000000000000000201433325321700235220ustar00rootroot00000000000000 jcodings-1.0.58/resources/tables/CR_In_Latin_Extended_E.bin000066400000000000000000000000201433325321700235230ustar00rootroot000000000000000ojcodings-1.0.58/resources/tables/CR_In_Lepcha.bin000066400000000000000000000000201433325321700215640ustar00rootroot00000000000000Ojcodings-1.0.58/resources/tables/CR_In_Letterlike_Symbols.bin000066400000000000000000000000201433325321700242040ustar00rootroot00000000000000!!Ojcodings-1.0.58/resources/tables/CR_In_Limbu.bin000066400000000000000000000000201433325321700214400ustar00rootroot00000000000000Ojcodings-1.0.58/resources/tables/CR_In_Linear_A.bin000066400000000000000000000000201433325321700220420ustar00rootroot00000000000000jcodings-1.0.58/resources/tables/CR_In_Linear_B_Ideograms.bin000066400000000000000000000000201433325321700240350ustar00rootroot00000000000000jcodings-1.0.58/resources/tables/CR_In_Linear_B_Syllabary.bin000066400000000000000000000000201433325321700240650ustar00rootroot00000000000000jcodings-1.0.58/resources/tables/CR_In_Lisu.bin000066400000000000000000000000201433325321700213040ustar00rootroot00000000000000jcodings-1.0.58/resources/tables/CR_In_Lisu_Supplement.bin000066400000000000000000000000201433325321700235200ustar00rootroot00000000000000jcodings-1.0.58/resources/tables/CR_In_Low_Surrogates.bin000066400000000000000000000000201433325321700233470ustar00rootroot00000000000000jcodings-1.0.58/resources/tables/CR_In_Lycian.bin000066400000000000000000000000201433325321700216070ustar00rootroot00000000000000jcodings-1.0.58/resources/tables/CR_In_Lydian.bin000066400000000000000000000000201433325321700216100ustar00rootroot00000000000000  ?jcodings-1.0.58/resources/tables/CR_In_Mahajani.bin000066400000000000000000000000201433325321700221000ustar00rootroot00000000000000Pjcodings-1.0.58/resources/tables/CR_In_Mahjong_Tiles.bin000066400000000000000000000000201433325321700231130ustar00rootroot00000000000000/jcodings-1.0.58/resources/tables/CR_In_Makasar.bin000066400000000000000000000000201433325321700217470ustar00rootroot00000000000000jcodings-1.0.58/resources/tables/CR_In_Malayalam.bin000066400000000000000000000000201433325321700222660ustar00rootroot00000000000000 jcodings-1.0.58/resources/tables/CR_In_Mandaic.bin000066400000000000000000000000201433325321700217240ustar00rootroot00000000000000@_jcodings-1.0.58/resources/tables/CR_In_Manichaean.bin000066400000000000000000000000201433325321700224140ustar00rootroot00000000000000  jcodings-1.0.58/resources/tables/CR_In_Marchen.bin000066400000000000000000000000201433325321700217450ustar00rootroot00000000000000pjcodings-1.0.58/resources/tables/CR_In_Masaram_Gondi.bin000066400000000000000000000000201433325321700230710ustar00rootroot00000000000000_jcodings-1.0.58/resources/tables/CR_In_Mathematical_Alphanumeric_Symbols.bin000066400000000000000000000000201433325321700271610ustar00rootroot00000000000000jcodings-1.0.58/resources/tables/CR_In_Mathematical_Operators.bin000066400000000000000000000000201433325321700250170ustar00rootroot00000000000000""jcodings-1.0.58/resources/tables/CR_In_Mayan_Numerals.bin000066400000000000000000000000201433325321700233030ustar00rootroot00000000000000jcodings-1.0.58/resources/tables/CR_In_Medefaidrin.bin000066400000000000000000000000201433325321700225770ustar00rootroot00000000000000n@njcodings-1.0.58/resources/tables/CR_In_Meetei_Mayek.bin000066400000000000000000000000201433325321700227260ustar00rootroot00000000000000jcodings-1.0.58/resources/tables/CR_In_Meetei_Mayek_Extensions.bin000066400000000000000000000000201433325321700251450ustar00rootroot00000000000000jcodings-1.0.58/resources/tables/CR_In_Mende_Kikakui.bin000066400000000000000000000000201433325321700230700ustar00rootroot00000000000000jcodings-1.0.58/resources/tables/CR_In_Meroitic_Cursive.bin000066400000000000000000000000201433325321700236430ustar00rootroot00000000000000  jcodings-1.0.58/resources/tables/CR_In_Miao.bin000066400000000000000000000000201433325321700212550ustar00rootroot00000000000000oojcodings-1.0.58/resources/tables/CR_In_Miscellaneous_Mathematical_Symbols_A.bin000066400000000000000000000000201433325321700276140ustar00rootroot00000000000000''jcodings-1.0.58/resources/tables/CR_In_Miscellaneous_Mathematical_Symbols_B.bin000066400000000000000000000000201433325321700276150ustar00rootroot00000000000000))jcodings-1.0.58/resources/tables/CR_In_Miscellaneous_Symbols.bin000066400000000000000000000000201433325321700247030ustar00rootroot00000000000000&&jcodings-1.0.58/resources/tables/CR_In_Miscellaneous_Symbols_and_Arrows.bin000066400000000000000000000000201433325321700270620ustar00rootroot00000000000000++jcodings-1.0.58/resources/tables/CR_In_Miscellaneous_Symbols_and_Pictographs.bin000066400000000000000000000000201433325321700300700ustar00rootroot00000000000000jcodings-1.0.58/resources/tables/CR_In_Miscellaneous_Technical.bin000066400000000000000000000000201433325321700251450ustar00rootroot00000000000000##jcodings-1.0.58/resources/tables/CR_In_Modi.bin000066400000000000000000000000201433325321700212600ustar00rootroot00000000000000_jcodings-1.0.58/resources/tables/CR_In_Modifier_Tone_Letters.bin000066400000000000000000000000201433325321700246150ustar00rootroot00000000000000jcodings-1.0.58/resources/tables/CR_In_Mongolian.bin000066400000000000000000000000201433325321700223130ustar00rootroot00000000000000jcodings-1.0.58/resources/tables/CR_In_Mongolian_Supplement.bin000066400000000000000000000000201433325321700245270ustar00rootroot00000000000000`jcodings-1.0.58/resources/tables/CR_In_Mro.bin000066400000000000000000000000201433325321700211250ustar00rootroot00000000000000j@jojcodings-1.0.58/resources/tables/CR_In_Multani.bin000066400000000000000000000000201433325321700220010ustar00rootroot00000000000000jcodings-1.0.58/resources/tables/CR_In_Musical_Symbols.bin000066400000000000000000000000201433325321700234750ustar00rootroot00000000000000jcodings-1.0.58/resources/tables/CR_In_Myanmar.bin000066400000000000000000000000201433325321700217740ustar00rootroot00000000000000jcodings-1.0.58/resources/tables/CR_In_Myanmar_Extended_A.bin000066400000000000000000000000201433325321700240540ustar00rootroot00000000000000`jcodings-1.0.58/resources/tables/CR_In_Myanmar_Extended_B.bin000066400000000000000000000000201433325321700240550ustar00rootroot00000000000000jcodings-1.0.58/resources/tables/CR_In_NKo.bin000066400000000000000000000000201433325321700210570ustar00rootroot00000000000000jcodings-1.0.58/resources/tables/CR_In_Nabataean.bin000066400000000000000000000000201433325321700222420ustar00rootroot00000000000000jcodings-1.0.58/resources/tables/CR_In_Nandinagari.bin000066400000000000000000000000201433325321700226030ustar00rootroot00000000000000jcodings-1.0.58/resources/tables/CR_In_New_Tai_Lue.bin000066400000000000000000000000201433325321700225230ustar00rootroot00000000000000jcodings-1.0.58/resources/tables/CR_In_Newa.bin000066400000000000000000000000201433325321700212620ustar00rootroot00000000000000jcodings-1.0.58/resources/tables/CR_In_No_Block.bin000066400000000000000000000006701433325321700220710ustar00rootroot00000000000000m6p//p @      P  @_pP@P`%P/4@CFgjpjkn?nnooPӀڰ0P`oP P jcodings-1.0.58/resources/tables/CR_In_Number_Forms.bin000066400000000000000000000000201433325321700227660ustar00rootroot00000000000000!P!jcodings-1.0.58/resources/tables/CR_In_Nushu.bin000066400000000000000000000000201433325321700214720ustar00rootroot00000000000000pjcodings-1.0.58/resources/tables/CR_In_Nyiakeng_Puachue_Hmong.bin000066400000000000000000000000201433325321700247370ustar00rootroot00000000000000Ojcodings-1.0.58/resources/tables/CR_In_Ogham.bin000066400000000000000000000000201433325321700214230ustar00rootroot00000000000000jcodings-1.0.58/resources/tables/CR_In_Old_Hungarian.bin000066400000000000000000000000201433325321700231020ustar00rootroot00000000000000  jcodings-1.0.58/resources/tables/CR_In_Old_Italic.bin000066400000000000000000000000201433325321700223730ustar00rootroot00000000000000/jcodings-1.0.58/resources/tables/CR_In_Old_Permic.bin000066400000000000000000000000201433325321700224050ustar00rootroot00000000000000Pjcodings-1.0.58/resources/tables/CR_In_Old_Persian.bin000066400000000000000000000000201433325321700225670ustar00rootroot00000000000000jcodings-1.0.58/resources/tables/CR_In_Old_Sogdian.bin000066400000000000000000000000201433325321700225520ustar00rootroot00000000000000/jcodings-1.0.58/resources/tables/CR_In_Old_Turkic.bin000066400000000000000000000000201433325321700224270ustar00rootroot00000000000000  Ojcodings-1.0.58/resources/tables/CR_In_Optical_Character_Recognition.bin000066400000000000000000000000201433325321700262770ustar00rootroot00000000000000$@$_jcodings-1.0.58/resources/tables/CR_In_Oriya.bin000066400000000000000000000000201433325321700214530ustar00rootroot00000000000000 jcodings-1.0.58/resources/tables/CR_In_Ornamental_Dingbats.bin000066400000000000000000000000201433325321700243030ustar00rootroot00000000000000Pjcodings-1.0.58/resources/tables/CR_In_Osage.bin000066400000000000000000000000201433325321700214260ustar00rootroot00000000000000jcodings-1.0.58/resources/tables/CR_In_Osmanya.bin000066400000000000000000000000201433325321700217770ustar00rootroot00000000000000jcodings-1.0.58/resources/tables/CR_In_Ottoman_Siyaq_Numbers.bin000066400000000000000000000000201433325321700246520ustar00rootroot00000000000000Ojcodings-1.0.58/resources/tables/CR_In_Pahawh_Hmong.bin000066400000000000000000000000201433325321700227300ustar00rootroot00000000000000kkjcodings-1.0.58/resources/tables/CR_In_Pau_Cin_Hau.bin000066400000000000000000000000201433325321700225030ustar00rootroot00000000000000jcodings-1.0.58/resources/tables/CR_In_Phags_pa.bin000066400000000000000000000000201433325321700221120ustar00rootroot00000000000000@jcodings-1.0.58/resources/tables/CR_In_Phaistos_Disc.bin000066400000000000000000000000201433325321700231240ustar00rootroot00000000000000jcodings-1.0.58/resources/tables/CR_In_Phoenician.bin000066400000000000000000000000201433325321700224450ustar00rootroot00000000000000  jcodings-1.0.58/resources/tables/CR_In_Phonetic_Extensions.bin000066400000000000000000000000201433325321700243600ustar00rootroot00000000000000jcodings-1.0.58/resources/tables/CR_In_Phonetic_Extensions_Supplement.bin000066400000000000000000000000201433325321700265740ustar00rootroot00000000000000jcodings-1.0.58/resources/tables/CR_In_Playing_Cards.bin000066400000000000000000000000201433325321700231070ustar00rootroot00000000000000jcodings-1.0.58/resources/tables/CR_In_Private_Use_Area.bin000066400000000000000000000000201433325321700235460ustar00rootroot00000000000000jcodings-1.0.58/resources/tables/CR_In_Psalter_Pahlavi.bin000066400000000000000000000000201433325321700234460ustar00rootroot00000000000000  jcodings-1.0.58/resources/tables/CR_In_Rejang.bin000066400000000000000000000000201433325321700215760ustar00rootroot000000000000000_jcodings-1.0.58/resources/tables/CR_In_Rumi_Numeral_Symbols.bin000066400000000000000000000000201433325321700244770ustar00rootroot00000000000000`jcodings-1.0.58/resources/tables/CR_In_Runic.bin000066400000000000000000000000201433325321700214500ustar00rootroot00000000000000jcodings-1.0.58/resources/tables/CR_In_Samaritan.bin000066400000000000000000000000201433325321700223070ustar00rootroot00000000000000?jcodings-1.0.58/resources/tables/CR_In_Saurashtra.bin000066400000000000000000000000201433325321700225050ustar00rootroot00000000000000jcodings-1.0.58/resources/tables/CR_In_Sharada.bin000066400000000000000000000000201433325321700217330ustar00rootroot00000000000000jcodings-1.0.58/resources/tables/CR_In_Shorthand_Format_Controls.bin000066400000000000000000000000201433325321700255150ustar00rootroot00000000000000jcodings-1.0.58/resources/tables/CR_In_Siddham.bin000066400000000000000000000000201433325321700217410ustar00rootroot00000000000000jcodings-1.0.58/resources/tables/CR_In_Sinhala.bin000066400000000000000000000000201433325321700217470ustar00rootroot00000000000000 jcodings-1.0.58/resources/tables/CR_In_Sinhala_Archaic_Numbers.bin000066400000000000000000000000201433325321700250540ustar00rootroot00000000000000jcodings-1.0.58/resources/tables/CR_In_Small_Form_Variants.bin000066400000000000000000000000201433325321700242720ustar00rootroot00000000000000Pojcodings-1.0.58/resources/tables/CR_In_Small_Kana_Extension.bin000066400000000000000000000000201433325321700244260ustar00rootroot000000000000000ojcodings-1.0.58/resources/tables/CR_In_Sogdian.bin000066400000000000000000000000201433325321700217540ustar00rootroot000000000000000ojcodings-1.0.58/resources/tables/CR_In_Sora_Sompeng.bin000066400000000000000000000000201433325321700227640ustar00rootroot00000000000000jcodings-1.0.58/resources/tables/CR_In_Soyombo.bin000066400000000000000000000000201433325321700220170ustar00rootroot00000000000000Pjcodings-1.0.58/resources/tables/CR_In_Spacing_Modifier_Letters.bin000066400000000000000000000000201433325321700252740ustar00rootroot00000000000000jcodings-1.0.58/resources/tables/CR_In_Specials.bin000066400000000000000000000000201433325321700221330ustar00rootroot00000000000000jcodings-1.0.58/resources/tables/CR_In_Sundanese.bin000066400000000000000000000000201433325321700223150ustar00rootroot00000000000000jcodings-1.0.58/resources/tables/CR_In_Sundanese_Supplement.bin000066400000000000000000000000201433325321700245310ustar00rootroot00000000000000jcodings-1.0.58/resources/tables/CR_In_Superscripts_and_Subscripts.bin000066400000000000000000000000201433325321700261410ustar00rootroot00000000000000 p jcodings-1.0.58/resources/tables/CR_In_Supplemental_Arrows_A.bin000066400000000000000000000000201433325321700246360ustar00rootroot00000000000000''jcodings-1.0.58/resources/tables/CR_In_Supplemental_Arrows_B.bin000066400000000000000000000000201433325321700246370ustar00rootroot00000000000000))jcodings-1.0.58/resources/tables/CR_In_Supplemental_Arrows_C.bin000066400000000000000000000000201433325321700246400ustar00rootroot00000000000000jcodings-1.0.58/resources/tables/CR_In_Supplemental_Mathematical_Operators.bin000066400000000000000000000000201433325321700275500ustar00rootroot00000000000000**jcodings-1.0.58/resources/tables/CR_In_Supplemental_Punctuation.bin000066400000000000000000000000201433325321700254320ustar00rootroot00000000000000..jcodings-1.0.58/resources/tables/CR_In_Supplemental_Symbols_and_Pictographs.bin000066400000000000000000000000201433325321700277360ustar00rootroot00000000000000jcodings-1.0.58/resources/tables/CR_In_Supplementary_Private_Use_Area_A.bin000066400000000000000000000000201433325321700267360ustar00rootroot00000000000000jcodings-1.0.58/resources/tables/CR_In_Supplementary_Private_Use_Area_B.bin000066400000000000000000000000201433325321700267370ustar00rootroot00000000000000jcodings-1.0.58/resources/tables/CR_In_Sutton_SignWriting.bin000066400000000000000000000000201433325321700242100ustar00rootroot00000000000000گjcodings-1.0.58/resources/tables/CR_In_Syloti_Nagri.bin000066400000000000000000000000201433325321700227730ustar00rootroot00000000000000/jcodings-1.0.58/resources/tables/CR_In_Symbols_and_Pictographs_Extended_A.bin000066400000000000000000000000201433325321700272650ustar00rootroot00000000000000pjcodings-1.0.58/resources/tables/CR_In_Symbols_for_Legacy_Computing.bin000066400000000000000000000000201433325321700261770ustar00rootroot00000000000000jcodings-1.0.58/resources/tables/CR_In_Syriac.bin000066400000000000000000000000201433325321700216220ustar00rootroot00000000000000Ojcodings-1.0.58/resources/tables/CR_In_Syriac_Supplement.bin000066400000000000000000000000201433325321700240360ustar00rootroot00000000000000`ojcodings-1.0.58/resources/tables/CR_In_Tagalog.bin000066400000000000000000000000201433325321700217460ustar00rootroot00000000000000jcodings-1.0.58/resources/tables/CR_In_Tagbanwa.bin000066400000000000000000000000201433325321700221140ustar00rootroot00000000000000`jcodings-1.0.58/resources/tables/CR_In_Tags.bin000066400000000000000000000000201433325321700212660ustar00rootroot00000000000000jcodings-1.0.58/resources/tables/CR_In_Tai_Le.bin000066400000000000000000000000201433325321700215250ustar00rootroot00000000000000Pjcodings-1.0.58/resources/tables/CR_In_Tai_Tham.bin000066400000000000000000000000201433325321700220560ustar00rootroot00000000000000 jcodings-1.0.58/resources/tables/CR_In_Tai_Viet.bin000066400000000000000000000000201433325321700220740ustar00rootroot00000000000000jcodings-1.0.58/resources/tables/CR_In_Tai_Xuan_Jing_Symbols.bin000066400000000000000000000000201433325321700245570ustar00rootroot00000000000000_jcodings-1.0.58/resources/tables/CR_In_Takri.bin000066400000000000000000000000201433325321700214420ustar00rootroot00000000000000jcodings-1.0.58/resources/tables/CR_In_Tamil.bin000066400000000000000000000000201433325321700214360ustar00rootroot00000000000000 jcodings-1.0.58/resources/tables/CR_In_Tamil_Supplement.bin000066400000000000000000000000201433325321700236520ustar00rootroot00000000000000jcodings-1.0.58/resources/tables/CR_In_Tangut.bin000066400000000000000000000000201433325321700216320ustar00rootroot00000000000000pjcodings-1.0.58/resources/tables/CR_In_Tangut_Components.bin000066400000000000000000000000201433325321700240370ustar00rootroot00000000000000jcodings-1.0.58/resources/tables/CR_In_Tangut_Supplement.bin000066400000000000000000000000201433325321700240460ustar00rootroot00000000000000jcodings-1.0.58/resources/tables/CR_In_Telugu.bin000066400000000000000000000000201433325321700216350ustar00rootroot00000000000000 jcodings-1.0.58/resources/tables/CR_In_Thaana.bin000066400000000000000000000000201433325321700215640ustar00rootroot00000000000000jcodings-1.0.58/resources/tables/CR_In_Thai.bin000066400000000000000000000000201433325321700212550ustar00rootroot00000000000000jcodings-1.0.58/resources/tables/CR_In_Tibetan.bin000066400000000000000000000000201433325321700217560ustar00rootroot00000000000000jcodings-1.0.58/resources/tables/CR_In_Tifinagh.bin000066400000000000000000000000201433325321700221210ustar00rootroot00000000000000-0-jcodings-1.0.58/resources/tables/CR_In_Tirhuta.bin000066400000000000000000000000201433325321700220100ustar00rootroot00000000000000jcodings-1.0.58/resources/tables/CR_In_Transport_and_Map_Symbols.bin000066400000000000000000000000201433325321700255130ustar00rootroot00000000000000jcodings-1.0.58/resources/tables/CR_In_Ugaritic.bin000066400000000000000000000000201433325321700221370ustar00rootroot00000000000000jcodings-1.0.58/resources/tables/CR_In_Unified_Canadian_Aboriginal_Syllabics.bin000066400000000000000000000000201433325321700276650ustar00rootroot00000000000000jcodings-1.0.58/resources/tables/CR_In_Unified_Canadian_Aboriginal_Syllabics_Extended.bin000066400000000000000000000000201433325321700315050ustar00rootroot00000000000000jcodings-1.0.58/resources/tables/CR_In_Vai.bin000066400000000000000000000000201433325321700211070ustar00rootroot00000000000000?jcodings-1.0.58/resources/tables/CR_In_Variation_Selectors.bin000066400000000000000000000000201433325321700243470ustar00rootroot00000000000000jcodings-1.0.58/resources/tables/CR_In_Variation_Selectors_Supplement.bin000066400000000000000000000000201433325321700265630ustar00rootroot00000000000000jcodings-1.0.58/resources/tables/CR_In_Vedic_Extensions.bin000066400000000000000000000000201433325321700236410ustar00rootroot00000000000000jcodings-1.0.58/resources/tables/CR_In_Vertical_Forms.bin000066400000000000000000000000201433325321700233070ustar00rootroot00000000000000jcodings-1.0.58/resources/tables/CR_In_Wancho.bin000066400000000000000000000000201433325321700216070ustar00rootroot00000000000000jcodings-1.0.58/resources/tables/CR_In_Warang_Citi.bin000066400000000000000000000000201433325321700225570ustar00rootroot00000000000000jcodings-1.0.58/resources/tables/CR_In_Yezidi.bin000066400000000000000000000000201433325321700216250ustar00rootroot00000000000000jcodings-1.0.58/resources/tables/CR_In_Yi_Radicals.bin000066400000000000000000000000201433325321700225530ustar00rootroot00000000000000jcodings-1.0.58/resources/tables/CR_In_Yi_Syllables.bin000066400000000000000000000000201433325321700227630ustar00rootroot00000000000000jcodings-1.0.58/resources/tables/CR_In_Yijing_Hexagram_Symbols.bin000066400000000000000000000000201433325321700251450ustar00rootroot00000000000000MMjcodings-1.0.58/resources/tables/CR_In_Zanabazar_Square.bin000066400000000000000000000000201433325321700236210ustar00rootroot00000000000000Ojcodings-1.0.58/resources/tables/CR_Inherited.bin000066400000000000000000000003501433325321700216630ustar00rootroot000000000000009oKUpp Q T 0*0-00 -;;gi{тхыѪѭjcodings-1.0.58/resources/tables/CR_Inscriptional_Pahlavi.bin000066400000000000000000000000301433325321700242250ustar00rootroot00000000000000 ` r x jcodings-1.0.58/resources/tables/CR_Inscriptional_Parthian.bin000066400000000000000000000000301433325321700244070ustar00rootroot00000000000000 @ U X _jcodings-1.0.58/resources/tables/CR_Javanese.bin000066400000000000000000000000401433325321700215000ustar00rootroot00000000000000jcodings-1.0.58/resources/tables/CR_Join_Control.bin000066400000000000000000000000201433325321700223410ustar00rootroot00000000000000 jcodings-1.0.58/resources/tables/CR_Kaithi.bin000066400000000000000000000000301433325321700211540ustar00rootroot00000000000000jcodings-1.0.58/resources/tables/CR_Kannada.bin000066400000000000000000000001601433325321700213040ustar00rootroot00000000000000 jcodings-1.0.58/resources/tables/CR_Katakana.bin000066400000000000000000000001201433325321700214560ustar00rootroot00000000000000 0000112233Wfoqdgjcodings-1.0.58/resources/tables/CR_Kayah_Li.bin000066400000000000000000000000301433325321700214240ustar00rootroot00000000000000-//jcodings-1.0.58/resources/tables/CR_Kharoshthi.bin000066400000000000000000000001101433325321700220460ustar00rootroot00000000000000          5 8 : ? H P Xjcodings-1.0.58/resources/tables/CR_Khitan_Small_Script.bin000066400000000000000000000000301433325321700236350ustar00rootroot00000000000000oojcodings-1.0.58/resources/tables/CR_Khmer.bin000066400000000000000000000000501433325321700210130ustar00rootroot00000000000000 jcodings-1.0.58/resources/tables/CR_Khojki.bin000066400000000000000000000000301433325321700211620ustar00rootroot00000000000000>jcodings-1.0.58/resources/tables/CR_Khudawadi.bin000066400000000000000000000000301433325321700216440ustar00rootroot00000000000000jcodings-1.0.58/resources/tables/CR_L.bin000066400000000000000000000115701433325321700201510ustar00rootroot00000000000000nAZazptvwz}/1VYY` Jnoq/M$$((@X`j  9 = = P P X a q     ( * 0 2 3 5 6 8 9 Y \ ^ ^ r t     ( * 0 2 3 5 9 = = \ ] _ a q q     ( * 9 = = X Z ` a     : = = N N T V _ a z  023@F@GIl*??PUZ]aaefnpuHJMPVXXZ]`Zlo  1@Q`lnp xPmpt T3EK#MOZ} EHMPWYY[[]]_} q q   !!!!! !!!!!!$!$!&!&!(!(!*!-!/!9!<!?!E!I!N!N!!,,.,0,^,`,,,,,--%-'-'-----0-g-o-o------------------././0001050;0<0A000000011/11111114MN *+@n" "@s %0F`|(@BDK`vzz~  &(.0Z\ipףװmp(*68<>>@ACDF=Pptv!:AZf  &(:<=?MP]-@BIPu'0c6@U`g 578<<?U`v    9            5 ` |        5 @ U ` r    H      #''0E7&DDGGPrvv+ (*02359==PP]a4GJ_a/DD+   /??AA 2::PP\ .@@r  0FF`eghj #$%C04.DFFhj8j@j^jjkk/k@kCkckwk}kn@nooJoPoPoooooopPRdgpjp|TVԜԞԟԢԢԥԦԩԬԮԹԻԻԽ  9;>@DFFJPR֥֨46NPnp׈׊רת,7=NNCKK!"$$'')24799;;BBGGIIKKMOQRTTWWYY[[]]__abddgjlrtwy|~~4@ ΡΰJjcodings-1.0.58/resources/tables/CR_LC.bin000066400000000000000000000020501433325321700202450ustar00rootroot00000000000000 AZazpsvw{}/1V`+kwy EHMPWYY[[]]_}!!!!! !!!!!!$!$!&!&!(!(!*!-!/!4!9!9!<!?!E!I!N!N!!,,.,0,^,`,{,~,,,,,--%-'-'----@m"oq0Z`hp!:AZO    n@nTVԜԞԟԢԢԥԦԩԬԮԹԻԻԽ  9;>@DFFJPR֥֨46NPnp׈׊רתCjcodings-1.0.58/resources/tables/CR_Lao.bin000066400000000000000000000001401433325321700204600ustar00rootroot00000000000000 jcodings-1.0.58/resources/tables/CR_Latin.bin000066400000000000000000000004101433325321700210140ustar00rootroot00000000000000A AZaz%,\bekwy q q   !*!+!2!2!N!N!`!,`,"0Z\dfi!:AZjcodings-1.0.58/resources/tables/CR_Lepcha.bin000066400000000000000000000000401433325321700211400ustar00rootroot000000000000007;IMOjcodings-1.0.58/resources/tables/CR_Limbu.bin000066400000000000000000000000601433325321700210160ustar00rootroot00000000000000  +0;@@DOjcodings-1.0.58/resources/tables/CR_Linear_A.bin000066400000000000000000000000401433325321700214160ustar00rootroot000000000000006@U`gjcodings-1.0.58/resources/tables/CR_Linear_B.bin000066400000000000000000000001001433325321700214140ustar00rootroot00000000000000  &(:<=?MP]jcodings-1.0.58/resources/tables/CR_Lisu.bin000066400000000000000000000000301433325321700206570ustar00rootroot00000000000000jcodings-1.0.58/resources/tables/CR_Ll.bin000066400000000000000000000120601433325321700203200ustar00rootroot00000000000000 az      !!##%%''))++--//11335578::<<>>@@BBDDFFHIKKMMOOQQSSUUWWYY[[]]__aacceeggiikkmmooqqssuuwwzz||~      !!##%%''))++--//1139<<?@BBGGIIKKMMOqqssww{}0_aacceeggiikkmmooqqssuuwwyy{{}}      !!##%%''))++--//`+kwy      !!##%%''))++--//1133557799;;==??AACCEEGGIIKKMMOOQQSSUUWWYY[[]]__aacceeggiikkmmooqqssuuwwyy{{}} '07@EPW`gp}! ! !!!!!/!/!4!4!9!9!<!=!F!I!N!N!!,0,^,a,a,e,f,h,h,j,j,l,l,q,q,s,t,v,{,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,--%-'-'----AACCEEGGIIKKMMOOQQSSUUWWYY[[]]__aacceeggiikkmm##%%''))++--/133557799;;==??AACCEEGGIIKKMMOOQQSSUUWWYY[[]]__aacceeggiikkmmooqxzz||0Z`hpAZ(O  n`n3NTVgԂԛԶԹԻԻԽ7RkՆ՟պ";Vo֊֥6NPUp׈׊׏ת"Cjcodings-1.0.58/resources/tables/CR_Lm.bin000066400000000000000000000007601433325321700203250ustar00rootroot00000000000000{=ttzzYY@@$$(( q qFFCCx},jxx q q   ,|,}-o-o././0001050;0;0000 pppp\_iippk@kCoooooo7=KKjcodings-1.0.58/resources/tables/CR_Lo.bin000066400000000000000000000075201433325321700203300ustar00rootroot00000000000000 ?AJnoq/M@X`j  9 = = P P X a r     ( * 0 2 3 5 6 8 9 Y \ ^ ^ r t     ( * 0 2 3 5 9 = = \ ] _ a q q     ( * 9 = = X Z ` a     : = = N N T V _ a z  023@E@GIl*??PUZ]aaefnpuHJMPVXXZ]`Zlo  1@Q`lnp BDxPmpt T3EK#MOZw!5!8-0-g------------------000<0<0A000000011/11111114MN *+nn "@s %0F`|(@BDK`oqvzz~  &(.ףװmp(*68<>>@ACDF=Pptvfoq  &(:<=?MP]-@BIPuP'0c6@U`g 578<<?U`v    9            5 ` |        5 @ U ` r    H  #''0E7&DDGGPrvv+ (*02359==PP]a4GJ_a/DD+   /??AA 2::PP\ .@@r  0FF`eghj #$%C04.DFFhj8j@j^jjkk/kckwk}kooJoPoPpPRdgpjp|,NN!"$$'')24799;;BBGGIIKKMOQRTTWWYY[[]]__abddgjlrtwy|~~4@ ΡΰJjcodings-1.0.58/resources/tables/CR_Logical_Order_Exception.bin000066400000000000000000000001001433325321700244640ustar00rootroot00000000000000@Djcodings-1.0.58/resources/tables/CR_Lower.bin000066400000000000000000000121501433325321700210410ustar00rootroot00000000000000az      !!##%%''))++--//11335578::<<>>@@BBDDFFHIKKMMOOQQSSUUWWYY[[]]__aacceeggiikkmmooqqssuuwwzz||~      !!##%%''))++--//1139<<?@BBGGIIKKMMOEEqqsswwz}0_aacceeggiikkmmooqqssuuwwyy{{}}      !!##%%''))++--//`      !!##%%''))++--//1133557799;;==??AACCEEGGIIKKMMOOQQSSUUWWYY[[]]__aacceeggiikkmmooqqssuuwwyy{{}} '07@EPW`gp} q q   ! ! !!!!!/!/!4!4!9!9!<!=!F!I!N!N!p!!!$$,0,^,a,a,e,f,h,h,j,j,l,l,q,q,s,t,v,},,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,--%-'-'----AACCEEGGIIKKMMOOQQSSUUWWYY[[]]__aacceeggiikkmm##%%''))++--/133557799;;==??AACCEEGGIIKKMMOOQQSSUUWWYY[[]]__aacceeggiikkmmoxzz||0Z\hpAZ(O  n`n3NTVgԂԛԶԹԻԻԽ7RkՆ՟պ";Vo֊֥6NPUp׈׊׏ת"Cjcodings-1.0.58/resources/tables/CR_Lt.bin000066400000000000000000000001301433325321700203230ustar00rootroot00000000000000 jcodings-1.0.58/resources/tables/CR_Lu.bin000066400000000000000000000117701433325321700203400ustar00rootroot00000000000000~AZ      ""$$&&((**,,..0022446699;;==??AACCEEGGJJLLNNPPRRTTVVXXZZ\\^^``bbddffhhjjllnnpprrttvvxy{{}}      ""$$&&((**,,..0022:;=>AACFHHJJLLNNpprrvv/``bbddffhhjjllnnpprrttvvxxzz||~~      ""$$&&((**,,..1V      ""$$&&((**,,..0022446688::<<>>@@BBDDFFHHJJLLNNPPRRTTVVXXZZ\\^^``bbddffhhjjllnnpprrttvvxxzz||~~(/8?HMYY[[]]__ho!!!!! ! !!!!!!!$!$!&!&!(!(!*!-!0!3!>!?!E!E!!,,.,`,`,b,d,g,g,i,i,k,k,m,p,r,r,u,u,~,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,@@BBDDFFHHJJLLNNPPRRTTVVXXZZ\\^^``bbddffhhjjll""$$&&((**,,..22446688::<<>>@@BBDDFFHHJJLLNNPPRRTTVVXXZZ\\^^``bbddffhhjjllnnyy{{}~!:'  n@n_4MhԁԜԜԞԟԢԢԥԦԩԬԮԵ  89;>@DFFJPlՅՠչ!<Up։֨4Vnאר!jcodings-1.0.58/resources/tables/CR_Lycian.bin000066400000000000000000000000201433325321700211610ustar00rootroot00000000000000jcodings-1.0.58/resources/tables/CR_Lydian.bin000066400000000000000000000000301433325321700211630ustar00rootroot00000000000000  9 ? ?jcodings-1.0.58/resources/tables/CR_M.bin000066400000000000000000000044301433325321700201470ustar00rootroot00000000000000E"oK_pp0J#%')-Y[  : < > O Q W b c   < < > B G H K M Q Q p q u u   < < > D G H K M U W b c  > D F H J M U V b c  ; < > D F H J M W W b c 114:GN557799>?q+>VY^`bdgmqt]_24RSrs   +0;U^`|4Dks$7 ,,----0*0/00ort} #',,&-GS)6CCLM{} /vz       8 : ? ?   $ 'FP8F'4EFss,7>>;<>DGHKMWWbcflpt5F^^0@+,:0578;>@@BC 39;>GGQ[/68?16::<=?EGGjjk0k6oOoOoQoooooooeimr{тхыѪѭBD6;luuڄڄڛڟڡگ!#$&*06DJjcodings-1.0.58/resources/tables/CR_Mahajani.bin000066400000000000000000000000201433325321700214520ustar00rootroot00000000000000Pvjcodings-1.0.58/resources/tables/CR_Makasar.bin000066400000000000000000000000201433325321700213210ustar00rootroot00000000000000jcodings-1.0.58/resources/tables/CR_Malayalam.bin000066400000000000000000000001001433325321700216370ustar00rootroot00000000000000    D F H J O T c f jcodings-1.0.58/resources/tables/CR_Mandaic.bin000066400000000000000000000000301433325321700212770ustar00rootroot00000000000000@[^^jcodings-1.0.58/resources/tables/CR_Manichaean.bin000066400000000000000000000000301433325321700217670ustar00rootroot00000000000000    jcodings-1.0.58/resources/tables/CR_Marchen.bin000066400000000000000000000000401433325321700213210ustar00rootroot00000000000000pjcodings-1.0.58/resources/tables/CR_Masaram_Gondi.bin000066400000000000000000000001001433325321700224420ustar00rootroot00000000000000  6::<=?GPYjcodings-1.0.58/resources/tables/CR_Math.bin000066400000000000000000000021301433325321700206370ustar00rootroot00000000000000++<>^^||~~   2 4 @ @ D D R R a d z ~ !!!!! !!!!!!$!$!(!)!,!-!/!1!3!8!<!I!K!K!!!!!!!!!!!!!!!"## # #!#|#|########%%%%%%%%%%%%%%%%%%%%&&&@&@&B&B&`&c&m&o'')*+0+D+G+L))afhh <<>>\\^^TVԜԞԟԢԢԥԦԩԬԮԹԻԻԽ  9;>@DFFJPR֥֨!"$$'')24799;;BBGGIIKKMOQRTTWWYY[[]]__abddgjlrtwy|~~jcodings-1.0.58/resources/tables/CR_Mc.bin000066400000000000000000000026001433325321700203070ustar00rootroot00000000000000_   ; ; > @ I L N O   > @   > > @ @ G H K L W W   A D   > @ F H J L W W >?+,1188;<VWbdgm#&)+0138UUWWaacdmr55;;=ACD$+450.0/#$''RS/034MM{{}},,EF,.2355>?ADGHKMWWbc57@AEE02;<>> !&&,.880578==@@BB99WX//>>oQoooefmrjcodings-1.0.58/resources/tables/CR_Me.bin000066400000000000000000000000601433325321700203070ustar00rootroot00000000000000  prjcodings-1.0.58/resources/tables/CR_Medefaidrin.bin000066400000000000000000000000201433325321700221510ustar00rootroot00000000000000n@njcodings-1.0.58/resources/tables/CR_Meetei_Mayek.bin000066400000000000000000000000401433325321700223020ustar00rootroot00000000000000jcodings-1.0.58/resources/tables/CR_Mende_Kikakui.bin000066400000000000000000000000301433325321700224430ustar00rootroot00000000000000jcodings-1.0.58/resources/tables/CR_Meroitic_Cursive.bin000066400000000000000000000000401433325321700232170ustar00rootroot00000000000000      jcodings-1.0.58/resources/tables/CR_Meroitic_Hieroglyphs.bin000066400000000000000000000000201433325321700240720ustar00rootroot00000000000000  jcodings-1.0.58/resources/tables/CR_Miao.bin000066400000000000000000000000401433325321700206310ustar00rootroot00000000000000ooJoOooojcodings-1.0.58/resources/tables/CR_Mn.bin000066400000000000000000000051001433325321700203200ustar00rootroot00000000000000GoK_pp0J#%')-Y[  : : < < A H M M Q W b c   < < A B G H K M Q Q p q u u   < < ? ? A D M M U V b c   > @ F H J M U V b c  ; < A D M M b c 114:GN557799q~-0279:=>XY^`qt]_24RSrs   "'(229;VVX^``bbels|446:<<BBks,367 ,,----0*0-00oot} %&,,&-GQ).1256CCLL|| /vz       8 : ? ?   $ 'FP8F'+-4ss/14467>>;<@@flpt8?BDFF^^3:==?@"%'+/79:;<>>CC 38;>GGQVY[068=??16::<=?EGGjjk0k6oOoOoooogi{тхыѪѭBD6;luuڄڄڛڟڡگ!#$&*06DJjcodings-1.0.58/resources/tables/CR_Modi.bin000066400000000000000000000000301433325321700206330ustar00rootroot00000000000000DPYjcodings-1.0.58/resources/tables/CR_Mongolian.bin000066400000000000000000000001001433325321700216640ustar00rootroot00000000000000 x`ljcodings-1.0.58/resources/tables/CR_Mro.bin000066400000000000000000000000401433325321700205010ustar00rootroot00000000000000j@j^j`jijnjojcodings-1.0.58/resources/tables/CR_Multani.bin000066400000000000000000000000601433325321700213570ustar00rootroot00000000000000 jcodings-1.0.58/resources/tables/CR_Myanmar.bin000066400000000000000000000000401433325321700213500ustar00rootroot00000000000000`jcodings-1.0.58/resources/tables/CR_N.bin000066400000000000000000000020601433325321700201450ustar00rootroot00000000000000 09`i f o f o f o r w f o x ~ X ^ f x PY 3@Ii|FOPY@IPY p p t y !P!!!$`$$$'v',,000!0)080:112 2)2H2O2Q2_2222 )05 PY3@x #AAJJX_y         @ H } ~     X _ x      0 9`~&QTRo6?PYPY0;PYPlPY$$nj`jikPkYk[kann`x@IPYq-/= jcodings-1.0.58/resources/tables/CR_NEWLINE.bin000066400000000000000000000000201433325321700210430ustar00rootroot00000000000000 jcodings-1.0.58/resources/tables/CR_Nabataean.bin000066400000000000000000000000301433325321700216150ustar00rootroot00000000000000jcodings-1.0.58/resources/tables/CR_Nandinagari.bin000066400000000000000000000000401433325321700221570ustar00rootroot00000000000000jcodings-1.0.58/resources/tables/CR_New_Tai_Lue.bin000066400000000000000000000000501433325321700221000ustar00rootroot00000000000000 jcodings-1.0.58/resources/tables/CR_Newa.bin000066400000000000000000000000301433325321700206350ustar00rootroot00000000000000[]ajcodings-1.0.58/resources/tables/CR_Nko.bin000066400000000000000000000000301433325321700204720ustar00rootroot00000000000000jcodings-1.0.58/resources/tables/CR_Nl.bin000066400000000000000000000001501433325321700203170ustar00rootroot00000000000000 !`!!!000!0)080:@tAAJJ$$njcodings-1.0.58/resources/tables/CR_No.bin000066400000000000000000000011001433325321700203160ustar00rootroot00000000000000G r w x ~ X ^ p x*3i| p p t y !P!_!!$`$$$'v',,112 2)2H2O2Q2_2222053ux #X_y         @ H } ~     X _ x     `~&QTRe:;Zlk[kann`xq-/= jcodings-1.0.58/resources/tables/CR_Noncharacter_Code_Point.bin000066400000000000000000000002301433325321700244570ustar00rootroot00000000000000% jcodings-1.0.58/resources/tables/CR_Nushu.bin000066400000000000000000000000301433325321700210450ustar00rootroot00000000000000oopjcodings-1.0.58/resources/tables/CR_Nyiakeng_Puachue_Hmong.bin000066400000000000000000000000501433325321700243140ustar00rootroot00000000000000 ,0=@INOjcodings-1.0.58/resources/tables/CR_Ogham.bin000066400000000000000000000000201433325321700207750ustar00rootroot00000000000000jcodings-1.0.58/resources/tables/CR_Ol_Chiki.bin000066400000000000000000000000201433325321700214230ustar00rootroot00000000000000Pjcodings-1.0.58/resources/tables/CR_Old_Hungarian.bin000066400000000000000000000000401433325321700224560ustar00rootroot00000000000000      jcodings-1.0.58/resources/tables/CR_Old_Italic.bin000066400000000000000000000000301433325321700217460ustar00rootroot00000000000000#-/jcodings-1.0.58/resources/tables/CR_Old_North_Arabian.bin000066400000000000000000000000201433325321700232470ustar00rootroot00000000000000  jcodings-1.0.58/resources/tables/CR_Old_Permic.bin000066400000000000000000000000201433325321700217570ustar00rootroot00000000000000Pzjcodings-1.0.58/resources/tables/CR_Old_Persian.bin000066400000000000000000000000301433325321700221420ustar00rootroot00000000000000jcodings-1.0.58/resources/tables/CR_Old_Sogdian.bin000066400000000000000000000000201433325321700221240ustar00rootroot00000000000000'jcodings-1.0.58/resources/tables/CR_Old_South_Arabian.bin000066400000000000000000000000201433325321700232570ustar00rootroot00000000000000 ` jcodings-1.0.58/resources/tables/CR_Old_Turkic.bin000066400000000000000000000000201433325321700220010ustar00rootroot00000000000000  Hjcodings-1.0.58/resources/tables/CR_Oriya.bin000066400000000000000000000001701433325321700210330ustar00rootroot00000000000000       ( * 0 2 3 5 9 < D G H K M U W \ ] _ c f wjcodings-1.0.58/resources/tables/CR_Osage.bin000066400000000000000000000000301433325321700210010ustar00rootroot00000000000000jcodings-1.0.58/resources/tables/CR_Osmanya.bin000066400000000000000000000000301433325321700213520ustar00rootroot00000000000000jcodings-1.0.58/resources/tables/CR_Other_Alphabetic.bin000066400000000000000000000034701433325321700231530ustar00rootroot00000000000000EEKWY_pp0?#%'),  : ; > L N O U W b c   > B G H K L Q Q p q u u   > D G H K L V W b c  > D F H J L U V b c  > D F H J L W W b c 114:MMq+688;>VY^`bdgmqt23RSrs +08U^at5C$6$$--t{ #'&*GR)6CCLM{}vz       $ '8E'2EF,477>>>DGHKLWWbc5ACE0>@@*,80578;<@@BB 59;>Q[/68>16::<=?ACCGGoOoOoQooooo!#$&*GG0IPipjcodings-1.0.58/resources/tables/CR_Other_Default_Ignorable_Code_Point.bin000066400000000000000000000001401433325321700265570ustar00rootroot00000000000000 OO_` e e1d1djcodings-1.0.58/resources/tables/CR_Other_Grapheme_Extend.bin000066400000000000000000000003201433325321700241450ustar00rootroot000000000000003 > > W W > > W W 55 0.0/>>WW00eenr jcodings-1.0.58/resources/tables/CR_Other_ID_Continue.bin000066400000000000000000000000501433325321700232460ustar00rootroot00000000000000 iqjcodings-1.0.58/resources/tables/CR_Other_ID_Start.bin000066400000000000000000000000501433325321700225570ustar00rootroot00000000000000 !!!.!.00jcodings-1.0.58/resources/tables/CR_Other_Lowercase.bin000066400000000000000000000002501433325321700230340ustar00rootroot00000000000000)EEzz,jxx q q   !p!$$,|,}pp\_jcodings-1.0.58/resources/tables/CR_Other_Math.bin000066400000000000000000000020701433325321700220030ustar00rootroot00000000000000 ^^   2 4 @ @ a d } ~ !!!!! !!!!!!$!$!(!)!,!-!/!1!3!8!<!?!E!I!!!!!!!!!!!!!!!!!!!!!!!!!!!!## ########%%%%%%%%%%%%%%%%%%&&&@&@&B&B&`&c&m&n''''))))))aacchh<<>>TVԜԞԟԢԢԥԦԩԬԮԹԻԻԽ  9;>@DFFJPR֥֨46NPnp׈׊רת!"$$'')24799;;BBGGIIKKMOQRTTWWYY[[]]__abddgjlrtwy|~~jcodings-1.0.58/resources/tables/CR_Other_Uppercase.bin000066400000000000000000000000601433325321700230360ustar00rootroot00000000000000 !`!o$$0IPipjcodings-1.0.58/resources/tables/CR_Pahawh_Hmong.bin000066400000000000000000000000601433325321700223060ustar00rootroot00000000000000 kkEkPkYk[kakckwk}kjcodings-1.0.58/resources/tables/CR_Palmyrene.bin000066400000000000000000000000201433325321700216760ustar00rootroot00000000000000`jcodings-1.0.58/resources/tables/CR_Pattern_Syntax.bin000066400000000000000000000003501433325321700227330ustar00rootroot000000000000009!/:@[^``{~  ' 0 > A S U ^!$_%'u'+..0000 0000>?EFjcodings-1.0.58/resources/tables/CR_Pattern_White_Space.bin000066400000000000000000000000601433325321700236360ustar00rootroot00000000000000    ( )jcodings-1.0.58/resources/tables/CR_Pau_Cin_Hau.bin000066400000000000000000000000201433325321700220550ustar00rootroot00000000000000jcodings-1.0.58/resources/tables/CR_Pc.bin000066400000000000000000000000701433325321700203110ustar00rootroot00000000000000 __ ? @ T T34MO??jcodings-1.0.58/resources/tables/CR_Pd.bin000066400000000000000000000002301433325321700203100ustar00rootroot00000000000000%--  .....:.;.@.@0000000012XXcc jcodings-1.0.58/resources/tables/CR_Pe.bin000066400000000000000000000011101433325321700203070ustar00rootroot00000000000000H))]]}};;== F F ~ ~ # # # # #*#*'i'i'k'k'm'm'o'o'q'q's's'u'u'''''''''''')))))))))))))))))))))))))))).#.#.%.%.'.'.).)0 0 0 0 0 0 00000000000000>>6688::<<>>@@BBDDHHZZ\\^^ ==]]``ccjcodings-1.0.58/resources/tables/CR_Pf.bin000066400000000000000000000001301433325321700203110ustar00rootroot00000000000000     : :..... . . . ...!.!jcodings-1.0.58/resources/tables/CR_Phags_Pa.bin000066400000000000000000000000201433325321700214240ustar00rootroot00000000000000@wjcodings-1.0.58/resources/tables/CR_Phoenician.bin000066400000000000000000000000301433325321700220200ustar00rootroot00000000000000    jcodings-1.0.58/resources/tables/CR_Pi.bin000066400000000000000000000001401433325321700203150ustar00rootroot00000000000000       9 9..... . . . ... . jcodings-1.0.58/resources/tables/CR_Po.bin000066400000000000000000000026601433325321700203340ustar00rootroot00000000000000k!#%'**,,./:;?@\\~~Z_    jm 0>^^ d e p p v v w w OOZ[JO`hnn56 DEZ`;?~   ' 0 8 ; > A C G Q S S U ^,,,,-p-p..... . .........*...0.9.<.?.A.A.C.O.R.R000=0=00 ss~~tw./__\_00EFILPRTW_ahhjk  <<aadeooWW   ? ? P X     9 ?  UYGM@Ctu8=KOZ[]]AC`l<>;;DF?FAEpq$p$tjnjojjk7k;kDkDnnooڇڋ^_jcodings-1.0.58/resources/tables/CR_Prepended_Concatenation_Mark.bin000066400000000000000000000000701433325321700254740ustar00rootroot00000000000000 jcodings-1.0.58/resources/tables/CR_Print.bin000066400000000000000000000125001433325321700210440ustar00rootroot00000000000000O ~wz/1VY JM-0>@[^^`j       ( * 0 2 3 5 6 8 9 < < > B G H K M Q Q Y \ ^ ^ f v       ( * 0 2 3 5 9 < D G H K M U W \ ] _ c f w    ( * 9 = D F H J M U V X Z ` c f o w    D F H J O T c f  :?[GIlqHJMPVXXZ]`Z]|  6@S`lnprs x +0;@@Dmpt^`|KP|7;IM EHMPWYY[[]]_} ' * d f q t !!!$&$@$J$`+s+v++,.,0,^,`,,-%-'-'-----0-g-o-p-------------------.R....////00?0A00011/11111122 +@,09@wS_|6@MPY\  &(.0kpףװmp68<>>@ACDF?P RTfhkptv  &(:<=?MP]37#-JPz'0coo6@U`g 578<<?UW   9 ? ?              5 8 : ? H P X `       5 9 U X r x       H      ' 0 9`~'0YMRo46GPv> (*02359;DGHKMPPWW]cflpt[]aDPY`l+0?;   578;FPYGP 68EPlp  6::<=?GPY`eghj#$$n$p$t$%C04.4048DFFhj8j@j^j`jijnjojjjjkkEkPkYk[kakckwk}kn@nooJoOooooooopPRdgpjp|&)EV`xTVԜԞԟԢԢԥԦԩԬԮԹԻԻԽ  9;>@DFFJPR֥֨ڋڛڟڡگ!#$&*,0=@INOKPY^_q=!"$$'')24799;;BBGGIIKKMOQRTTWWYY[[]]__abddgjlrtwy|~~+0;@HPQ`es GPY`xzS`mptxz4@ ΡΰJ jcodings-1.0.58/resources/tables/CR_Ps.bin000066400000000000000000000011401433325321700203300ustar00rootroot00000000000000K(([[{{::<<     E E } } ### # #)#)'h'h'j'j'l'l'n'n'p'p'r'r't't'''''''''''')))))))))))))))))))))))))))).".".$.$.&.&.(.(.B.B000 0 0 0 00000000000000??557799;;==??AACCGGYY[[]];;[[__bbjcodings-1.0.58/resources/tables/CR_Psalter_Pahlavi.bin000066400000000000000000000000401433325321700230220ustar00rootroot00000000000000      jcodings-1.0.58/resources/tables/CR_Punct.bin000066400000000000000000000027201433325321700210440ustar00rootroot00000000000000s!#%*,/:;?@[]__{{}}~~Z_    jm 0>^^ d e p p v v w w OOZ[:=JO`hnn56 DEZ`;?~  ' 0 C E Q S ^ } ~ ## #)#*'h'u'''')))))),,,,-p-p....0.O.R.R00000000000=0=0000 ss~~tw./__\_>?0RTacchhjk  ;=??[[]]_eooWW   ? ? P X     9 ?  UYGM@Ctu8=KOZ[]]AC`l<>;;DF?FAEpq$p$tjnjojjk7k;kDkDnnooڇڋ^_jcodings-1.0.58/resources/tables/CR_Quotation_Mark.bin000066400000000000000000000001601433325321700227040ustar00rootroot00000000000000 ""''   9 :.B.B0 000ADbcjcodings-1.0.58/resources/tables/CR_Radical.bin000066400000000000000000000000401433325321700213030ustar00rootroot00000000000000....//jcodings-1.0.58/resources/tables/CR_Regional_Indicator.bin000066400000000000000000000000201433325321700234760ustar00rootroot00000000000000jcodings-1.0.58/resources/tables/CR_Rejang.bin000066400000000000000000000000301433325321700211510ustar00rootroot000000000000000S__jcodings-1.0.58/resources/tables/CR_Runic.bin000066400000000000000000000000301433325321700210230ustar00rootroot00000000000000jcodings-1.0.58/resources/tables/CR_S.bin000066400000000000000000000034601433325321700201570ustar00rootroot00000000000000$$++<>^^``||~~uu   p p   O O y y??446688mm@@ajt| D D R R z | !!!!!! !!!!!!#!%!%!'!'!)!)!.!.!:!;!@!D!J!M!O!O!!!## #(#+$&$@$J$$%'g'''''))))))+s+v+++,,.P.Q....////00000 0 06070>0?00111111222*2G2P2P2`22223MM !(+69wy[[jk))bbdfii >>@@\\^^7?ywx  ??k<k?kEkE&)djlуфьѩѮAEEV55OOoo׉׉שש7:mtvڃڅچOO..+0 ;@HPQ`es GPY`xzS`mptxzjcodings-1.0.58/resources/tables/CR_Samaritan.bin000066400000000000000000000000301433325321700216620ustar00rootroot00000000000000-0>jcodings-1.0.58/resources/tables/CR_Saurashtra.bin000066400000000000000000000000301433325321700220600ustar00rootroot00000000000000jcodings-1.0.58/resources/tables/CR_Sc.bin000066400000000000000000000002601433325321700203150ustar00rootroot00000000000000+$$   ?? 88iijcodings-1.0.58/resources/tables/CR_Sentence_Terminal.bin000066400000000000000000000011501433325321700233460ustar00rootroot00000000000000L!!..??7799=> d eJKbbghnn56  DEZ[^_;<~ < = G I.....<.<00vw//]_RRVWaa V WUYGHAC89;<KLAB<>DDFFBCABjnjojjk7k8kDkDnnڈڈjcodings-1.0.58/resources/tables/CR_Sharada.bin000066400000000000000000000000201433325321700213050ustar00rootroot00000000000000jcodings-1.0.58/resources/tables/CR_Shavian.bin000066400000000000000000000000201433325321700213330ustar00rootroot00000000000000Pjcodings-1.0.58/resources/tables/CR_Siddham.bin000066400000000000000000000000301433325321700213140ustar00rootroot00000000000000jcodings-1.0.58/resources/tables/CR_SignWriting.bin000066400000000000000000000000401433325321700222100ustar00rootroot00000000000000ڋڛڟڡگjcodings-1.0.58/resources/tables/CR_Sinhala.bin000066400000000000000000000001601433325321700213260ustar00rootroot00000000000000 jcodings-1.0.58/resources/tables/CR_Sk.bin000066400000000000000000000003701433325321700203270ustar00rootroot00000000000000=^^``uu00 ![[jk>>@@jcodings-1.0.58/resources/tables/CR_Sm.bin000066400000000000000000000010101433325321700203210ustar00rootroot00000000000000@++<>||~~ D D R R z | !!!@!D!K!K!!!!!!!!!!!!!!!!!!!"# #!#|#|####%%%%%%&o&o'''''')))))))*+0+D+G+L))bbdf \\^^55OOoo׉׉ששjcodings-1.0.58/resources/tables/CR_So.bin000066400000000000000000000026701433325321700203400ustar00rootroot00000000000000m p p   O O y y446688mm@@ajt|!!!!!! !!!!!!#!%!%!'!'!)!)!.!.!:!;!J!J!L!M!O!O!!!!!!!!!!!!!!!!!!!!### ##"#(#+#{#}####$&$@$J$$%%%%%%&&n&p'g''((++/+E+F+M+s+v+++,,.P.Q....////00000 0 06070>0?111111222*2G2P2P2`22223MM(+6799wy7?ywx  ??k<k?kEkE&)djlуфьѩѮAEEV7:mtvڃڅچOO..+0 ;@HPQ`es GPY`xzS`mptxzjcodings-1.0.58/resources/tables/CR_Soft_Dotted.bin000066400000000000000000000004001433325321700221620ustar00rootroot00000000000000?ij//IIhhVVXXbb-- q q!H!I,|,|"#VWԊԋԾԿ&'Z[ՎՏ*+^_֒֓jcodings-1.0.58/resources/tables/CR_Sogdian.bin000066400000000000000000000000201433325321700213260ustar00rootroot000000000000000Yjcodings-1.0.58/resources/tables/CR_Sora_Sompeng.bin000066400000000000000000000000301433325321700223370ustar00rootroot00000000000000jcodings-1.0.58/resources/tables/CR_Soyombo.bin000066400000000000000000000000201433325321700213710ustar00rootroot00000000000000Pjcodings-1.0.58/resources/tables/CR_Space.bin000066400000000000000000000001301433325321700207770ustar00rootroot00000000000000  ( ) / / _ _00jcodings-1.0.58/resources/tables/CR_Sundanese.bin000066400000000000000000000000301433325321700216700ustar00rootroot00000000000000jcodings-1.0.58/resources/tables/CR_Syloti_Nagri.bin000066400000000000000000000000201433325321700223450ustar00rootroot00000000000000,jcodings-1.0.58/resources/tables/CR_Syriac.bin000066400000000000000000000000501433325321700211770ustar00rootroot00000000000000  JMO`jjcodings-1.0.58/resources/tables/CR_Tagalog.bin000066400000000000000000000000301433325321700213210ustar00rootroot00000000000000 jcodings-1.0.58/resources/tables/CR_Tagbanwa.bin000066400000000000000000000000401433325321700214700ustar00rootroot00000000000000`lnprsjcodings-1.0.58/resources/tables/CR_Tai_Le.bin000066400000000000000000000000301433325321700211000ustar00rootroot00000000000000Pmptjcodings-1.0.58/resources/tables/CR_Tai_Tham.bin000066400000000000000000000000601433325321700214340ustar00rootroot00000000000000  ^`|jcodings-1.0.58/resources/tables/CR_Tai_Viet.bin000066400000000000000000000000301433325321700214470ustar00rootroot00000000000000jcodings-1.0.58/resources/tables/CR_Takri.bin000066400000000000000000000000301433325321700210150ustar00rootroot00000000000000jcodings-1.0.58/resources/tables/CR_Tamil.bin000066400000000000000000000002301433325321700210130ustar00rootroot00000000000000% jcodings-1.0.58/resources/tables/CR_Tangut.bin000066400000000000000000000000501433325321700212070ustar00rootroot00000000000000 oopjcodings-1.0.58/resources/tables/CR_Telugu.bin000066400000000000000000000001501433325321700212130ustar00rootroot00000000000000    ( * 9 = D F H J M U V X Z ` c f o w jcodings-1.0.58/resources/tables/CR_Terminal_Punctuation.bin000066400000000000000000000015101433325321700241130ustar00rootroot00000000000000h!!,,..:;??~~     0>^^ d eZ[ JKahnn56 DEZ[]_;?~ < = G I.....<.<.A.A.L.L.N.O00 vw//]_PRTW aaddWW   V W   : ?  UYGMAC8<KMZ[AB<>DDFFBCACqq$p$tjnjojjk7k9kDkDnnڇڊjcodings-1.0.58/resources/tables/CR_Thaana.bin000066400000000000000000000000201433325321700211360ustar00rootroot00000000000000jcodings-1.0.58/resources/tables/CR_Thai.bin000066400000000000000000000000301433325321700206300ustar00rootroot00000000000000:@[jcodings-1.0.58/resources/tables/CR_Tibetan.bin000066400000000000000000000001001433325321700213270ustar00rootroot00000000000000GIlqjcodings-1.0.58/resources/tables/CR_Tifinagh.bin000066400000000000000000000000401433325321700214750ustar00rootroot00000000000000-0-g-o-p--jcodings-1.0.58/resources/tables/CR_Tirhuta.bin000066400000000000000000000000301433325321700213630ustar00rootroot00000000000000jcodings-1.0.58/resources/tables/CR_Ugaritic.bin000066400000000000000000000000301433325321700215120ustar00rootroot00000000000000jcodings-1.0.58/resources/tables/CR_Unified_Ideograph.bin000066400000000000000000000002001433325321700233070ustar00rootroot000000000000004MN!!#$')4@ ΡΰJjcodings-1.0.58/resources/tables/CR_Unknown.bin000066400000000000000000000124401433325321700214120ustar00rootroot00000000000000Gxy00WXKL./??\]__k      ) ) 1 1 4 4 7 7 : ; = = C F I J N P R X ] ] _ e w      ) ) 1 1 4 4 : ; E F I J N T X [ ^ ^ d e x   ) ) : < E E I I N T W W [ _ d e p v   E E I I P S d e ;>\HHmpIINOWWYY^_[\}  7?T_mmqqty,/<?ACnou__}~LO}8:JLFGNOXXZZ\\^^~ e e r s !!$'$?$K$_+t+u++,/,/,_,_,,-&-&-(-,-.-/-h-n-q-~------------------.S.....////0@0@00111010111122,?-/:?xT^}7?NOZ[''//loפׯno77==??BBEE@OSSgglouu  '';;>>NO^46$,KO{(/dnp7?V_h  669;=>VV   : > @              6 7 ; > I O Y _       6 8 V W s w       I      ( / :_(/ZNQp~55HOw? ))1144::EFIJNOQVX\demou\\bEOZ_m,/@<  669:GOZHO  77FOmo  79;;>>HOZ_ffii##$o$o$u$%D/4/4/49CFGgj9j?j_j_jjjmjpjjjjjkFkOkZkZkbkbkxk|kn?nnoKoNoooooooo OSchoko}'(FW_yUUԝԝԠԡԣԤԧԨԭԭԺԺԼԼ  ::??EEGIQQ֦֧ڌښڠڠڰ""%%+-/>?JMPLOZ]`p>  ##%&((3388::<ACFHHJJLLPPSSUVXXZZ\\^^``ccefkkssxx}},/<?IOR_ft HOZ_yyT_nouw{5?΢ίKjcodings-1.0.58/resources/tables/CR_Upper.bin000066400000000000000000000120401433325321700210420ustar00rootroot00000000000000AZ      ""$$&&((**,,..0022446699;;==??AACCEEGGJJLLNNPPRRTTVVXXZZ\\^^``bbddffhhjjllnnpprrttvvxy{{}}      ""$$&&((**,,..0022:;=>AACFHHJJLLNNpprrvv/``bbddffhhjjllnnpprrttvvxxzz||~~      ""$$&&((**,,..1V      ""$$&&((**,,..0022446688::<<>>@@BBDDFFHHJJLLNNPPRRTTVVXXZZ\\^^``bbddffhhjjllnnpprrttvvxxzz||~~(/8?HMYY[[]]__ho!!!!! ! !!!!!!!$!$!&!&!(!(!*!-!0!3!>!?!E!E!`!o!!$$,,.,`,`,b,d,g,g,i,i,k,k,m,p,r,r,u,u,~,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,@@BBDDFFHHJJLLNNPPRRTTVVXXZZ\\^^``bbddffhhjjll""$$&&((**,,..22446688::<<>>@@BBDDFFHHJJLLNNPPRRTTVVXXZZ\\^^``bbddffhhjjllnnyy{{}~!:'  n@n_4MhԁԜԜԞԟԢԢԥԦԩԬԮԵ  89;>@DFFJPlՅՠչ!<Up։֨4Vnאר!0IPipjcodings-1.0.58/resources/tables/CR_Vai.bin000066400000000000000000000000201433325321700204610ustar00rootroot00000000000000+jcodings-1.0.58/resources/tables/CR_Variation_Selector.bin000066400000000000000000000000401433325321700235400ustar00rootroot00000000000000  jcodings-1.0.58/resources/tables/CR_Wancho.bin000066400000000000000000000000301433325321700211620ustar00rootroot00000000000000jcodings-1.0.58/resources/tables/CR_Warang_Citi.bin000066400000000000000000000000301433325321700221320ustar00rootroot00000000000000jcodings-1.0.58/resources/tables/CR_Word.bin000066400000000000000000000133501433325321700206670ustar00rootroot0000000000000009AZ__aztvwz}/1VYY` inJM-@[`j c f o q       ( * 0 2 3 5 6 8 9 < < > B G H K M Q Q Y \ ^ ^ f u       ( * 0 2 3 5 9 < D G H K M U W \ ] _ c f o q q    ( * 9 = D F H J M U V X Z ` c f o    D F H J N T W _ c f o z  :@NPY )557799>GIlqIPHJMPVXXZ]`Z]_lo  4@S`lnprs   x +0;Fmpt ^`|KPYks7@IM} EHMPWYY[[]]_} ? @ T T q q   !!!!! !!!!!!$!$!&!&!(!(!*!-!/!9!<!?!E!I!N!N!`!$$,,.,0,^,`,,,--%-'-'-----0-g-o-o--------------------././000!0/0105080<0A00000000011/11111114MN +@rt}"',,@s-0S`|6@MPY`vz  &(.0Z\ipףװmp(*68<>>@ACDF=P /34MOptv!:??AZf  &(:<=?MP]@t-JPz'0c6@U`g 578<<?U`v    9              5 8 : ? ? ` |        5 @ U ` r    H      ' 0 9''0PFfo46?DGPsvv7>> (*02359;DGHKMPPWW]cflptJPY^a@DDPY+09:   578;CPY>GGP 68@PYr  6::<=?GPY`eghj #$$n$%C04.DFFhj8j@j^j`jijjjjkk6k@kCkPkYkckwk}kn@nooJoOooooooooopPRdgpjp|eimr{тхыѪѭBDTVԜԞԟԢԢԥԦԩԬԮԹԻԻԽ  9;>@DFFJPR֥֨46NPnp׈׊רת6;luuڄڄڛڟڡگ!#$&*,0=@INNKPY!"$$'')24799;;BBGGIIKKMOQRTTWWYY[[]]__abddgjlrtwy|~~0IPip4@ ΡΰJjcodings-1.0.58/resources/tables/CR_XDigit.bin000066400000000000000000000000401433325321700211340ustar00rootroot0000000000000009AFafjcodings-1.0.58/resources/tables/CR_XID_Continue.bin000066400000000000000000000134201433325321700222420ustar00rootroot0000000000000009AZ__aztvw{}/1VYY` inJM-@[`j c f o q       ( * 0 2 3 5 6 8 9 < < > B G H K M Q Q Y \ ^ ^ f u       ( * 0 2 3 5 9 < D G H K M U W \ ] _ c f o q q    ( * 9 = D F H J M U V X Z ` c f o    D F H J N T W _ c f o z  :@NPY )557799>GIlqIPHJMPVXXZ]`Z]_iqlo  4@S`lnprs   x +0;Fmpt ^`|KPYks7@IM} EHMPWYY[[]]_} ? @ T T q q   !!!!! !!!!!!$!$!&!&!(!(!*!9!<!?!E!I!N!N!`!,,.,0,^,`,,,--%-'-'-----0-g-o-o--------------------000!0/0105080<0A00000000011/11111114MN +@ot}"',,@s-0S`|6@MPY`vz  &(.0Z\ipףװmp(*68<>>@ACDF]d=P /34MOqqsswwyy{{}}!:??AZf  &(:<=?MP]@t-JPz'0c6@U`g 578<<?U`v    9              5 8 : ? ? ` |        5 @ U ` r    H      ' 0 9''0PFfo46?DGPsvv7>> (*02359;DGHKMPPWW]cflptJPY^a@DDPY+09:   578;CPY>GGP 68@PYr  6::<=?GPY`eghj #$$n$%C04.DFFhj8j@j^j`jijjjjkk6k@kCkPkYkckwk}kn@nooJoOooooooooopPRdgpjp|eimr{тхыѪѭBDTVԜԞԟԢԢԥԦԩԬԮԹԻԻԽ  9;>@DFFJPR֥֨46NPnp׈׊רת6;luuڄڄڛڟڡگ!#$&*,0=@INNKPY!"$$'')24799;;BBGGIIKKMOQRTTWWYY[[]]__abddgjlrtwy|~~4@ ΡΰJjcodings-1.0.58/resources/tables/CR_XID_Start.bin000066400000000000000000000116601433325321700215570ustar00rootroot00000000000000uAZazptvw{}/1VYY` Jnoq/M$$((@X`j  9 = = P P X a q     ( * 0 2 3 5 6 8 9 Y \ ^ ^ r t     ( * 0 2 3 5 9 = = \ ] _ a q q     ( * 9 = = X Z ` a     : = = N N T V _ a z  022@F@GIl*??PUZ]aaefnpuHJMPVXXZ]`Zlo  1@Q`lnp xPmpt T3EK#MOZ} EHMPWYY[[]]_} q q   !!!!! !!!!!!$!$!&!&!(!(!*!9!<!?!E!I!N!N!`!,,.,0,^,`,,,,,--%-'-'-----0-g-o-o------------------000!0)0105080<0A000000011/11111114MN *+@n" "@s %0F`|(@BDK`vzz~  &(.0Z\ipףװmp(*68<>>@ACDF]d=Pqqsswwyy{{}}!:AZf  &(:<=?MP]@t-JPu'0c6@U`g 578<<?U`v    9            5 ` |        5 @ U ` r    H      #''0E7&DDGGPrvv+ (*02359==PP]a4GJ_a/DD+   /??AA 2::PP\ .@@r  0FF`eghj #$$n$%C04.DFFhj8j@j^jjkk/k@kCkckwk}kn@nooJoPoPoooooopPRdgpjp|TVԜԞԟԢԢԥԦԩԬԮԹԻԻԽ  9;>@DFFJPR֥֨46NPnp׈׊רת,7=NNCKK!"$$'')24799;;BBGGIIKKMOQRTTWWYY[[]]__abddgjlrtwy|~~4@ ΡΰJjcodings-1.0.58/resources/tables/CR_XPosixPunct.bin000066400000000000000000000026501433325321700222210ustar00rootroot00000000000000i!/:@[`{~~~Z_    jm 0>^^ d e p p v v w w OOZ[:=JO`hnn56 DEZ`;?~  ' 0 C E Q S ^ } ~ ## #)#*'h'u'''')))))),,,,-p-p....0.O.R.R00000000000=0=0000 ss~~tw./__\_>?0RTacchhjk  ;=??[[]]_eooWW   ? ? P X     9 ?  UYGM@Ctu8=KOZ[]]AC`l<>;;DF?FAEpq$p$tjnjojjk7k;kDkDnnooڇڋ^_jcodings-1.0.58/resources/tables/CR_Yezidi.bin000066400000000000000000000000401433325321700212010ustar00rootroot00000000000000jcodings-1.0.58/resources/tables/CR_Yi.bin000066400000000000000000000000301433325321700203240ustar00rootroot00000000000000jcodings-1.0.58/resources/tables/CR_Z.bin000066400000000000000000000001101433325321700201530ustar00rootroot00000000000000  ( ) / / _ _00jcodings-1.0.58/resources/tables/CR_Zanabazar_Square.bin000066400000000000000000000000201433325321700231730ustar00rootroot00000000000000Gjcodings-1.0.58/resources/tables/CR_Zl.bin000066400000000000000000000000201433325321700203270ustar00rootroot00000000000000 ( (jcodings-1.0.58/resources/tables/CR_Zp.bin000066400000000000000000000000201433325321700203330ustar00rootroot00000000000000 ) )jcodings-1.0.58/resources/tables/CR_Zs.bin000066400000000000000000000001001433325321700203350ustar00rootroot00000000000000  / / _ _00jcodings-1.0.58/resources/tables/CaseFold.bin000066400000000000000000000436741433325321700210640ustar00rootroot00000000000000A@aB@bC@cD@dE@eF@fG@gH@hJ@jK@kL@lM@mN@nO@oP@pQ@qR@rS@sT@tU@uV@vW@wX@xY@yZ@z @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ ss@@@@@  @  @ @@@@@@@@@ @!"@#$@%&@'(@)*@+,@-.@/2@34@56@79@:;@<=@>?@@A@BC@DE@FG@HI *nJ@KL@MN@OP@QR@ST@UV@WX@YZ@[\@]^@_`@ab@cd@ef@gh@ij@kl@mn@op@qr@st@uv@wx@y@z{@|}@~ 9s@S@@@T@@V@W@@@Y@[@@`@c@i@h@@o@r@u@@@@@@@@@@@@@@@@A@Ia@i@@@@@@@@@@@@@@@@@@ j @@@@@@@@@@@@@  @  @ @@@@@@@@@ @"@#$@%&@'(@)*@+,@-.@/0@12@3:@,e;@<=@>@,fA@BC@D@E@F@GH@IJ@KL@MN@OE p@qr@sv@w@@@@@@@@ @@@@@@@@@@@@@@@@@@@@@@@@@@   @   ! )@@@@@@@@@@@@ 1 9@ A@@@@{@|@}@P@Q@R@S@T@U@V@W@X @Y @Z @[ @\ @]@^@_@0@1@2@3@4@5@6@7@8@9@:@;@<@=@>@? @@!@A"@B#@C$@D%@E&@F'@G(@H)@I*@J+@K,@L-@M.@N/@O`@ab@cd@ef@gh@ij@kl@mn@op@qr@st@uv@wx@yz@{|@}~@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@  @  @ @@@@@@@@@ @!"@#$@%&@'(@)*@+,@-.@/1@a2@b3@c4@d5@e6@f7@g8@h9@i:@j;@k<@l=@m>@n?@o@@pA@qB@rC@sD@tE@uF@vG@wH@xI@yJ@zK@{L@|M@}N@~O@P@Q@R@S@T@U@V@ Je@-@-@-@-@-@-@-@-@-@- @- @- @- @- @-@-@-@-@-@-@-@-@-@-@-@-@-@-@-@-@-@-@- @-!@-"@-#@-$@-%@-'@--       i2 q4 y> A B B J c K@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@  @  @ @@@@@@@@@ @!"@#$@%&@'(@)*@+,@-.@/0@12@34@56@78@9:@;<@=>@?@@AB@CD@EF@GH@IJ@KL@MN@OP@QR@ST@UV@WX@YZ@[\@]^@_`@ab@cd@ef@gh@ij@kl@mn@op@qr@st@uv@wx@yz@{|@}~@@@@@@@@@@@@ h1 t w  y  a a  ss@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @ @ @ @ @@@@@@@@@(@ )@!*@"+@#,@$-@%.@&/@'8@09@1:@2;@3<@4=@5>@6?@7H@@I@AJ@BK@CL@DM@EP R #T ;V SBY@Q[@S]@U_@Wh@`i@aj@bk@cl@dm@en@fo@g j       *RzB j  ! " # $ % & '* R!z"#$%&B' j` a b c d e f g*`RazbcdefBg jp   B B@@@p@q  ) 2t R j B B@r@s@t@u    "B 3B@@@v@w K c z B B@@@z@{@ |   B B@x@y@|@} J!&@!*@k!+@!2@!N!`@!p!a@!q!b@!r!c@!s!d@!t!e@!u!f@!v!g@!w!h@!x!i@!y!j@!z!k@!{!l@!|!m@!}!n@!~!o@!!@!$@$$@$$@$$@$$@$$@$$@$$@$$@$$@$$@$$@$$@$$@$$@$$@$$@$$@$$@$$@$$@$$@$$@$$@$$@$$@$,@,0,@,1,@,2,@,3,@,4,@,5,@,6,@,7,@,8, @,9, @,:, @,;, @,<, @,=,@,>,@,?,@,@,@,A,@,B,@,C,@,D,@,E,@,F,@,G,@,H,@,I,@,J,@,K,@,L,@,M,@,N,@,O, @,P,!@,Q,"@,R,#@,S,$@,T,%@,U,&@,V,'@,W,(@,X,)@,Y,*@,Z,+@,[,,@,\,-@,],.@,^,`@,a,b@k,c@},d@},g@,h,i@,j,k@,l,m@Q,n@q,o@P,p@R,r@,s,u@,v,~@?,@@,@,,@,,@,,@,,@,,@,,@,,@,,@,,@,,@,,@,,@,,@,,@,,@,,@,,@,,@,,@,,@,,@,,@,,@,,@,,@,,@,,@,,@,,@,,@,,@,,@,,@,,@,,@,,@,,@,,@,,@,,@,,@,,@,,@,,@,,@,,@,,@,,@,,@,,@,,@,,@,@@AB@CD@EF@GH@IJ@KL@MN@OP@QR@ST@UV@WX@YZ@[\@]^@_`@ab@cd@ef@gh@ij@kl@m@@@@@@@@@@@@@@"@#$@%&@'(@)*@+,@-.@/2@34@56@78@9:@;<@=>@?@@AB@CD@EF@GH@IJ@KL@MN@OP@QR@ST@UV@WX@YZ@[\@]^@_`@ab@cd@ef@gh@ij@kl@mn@oy@z{@|}@y~@@@@@@@e@@@@@@@@@@@@@f@\@a@l@j@@@@S@@@@@@@@@@@@@p q r s t u v w x y z { | } ~                                                                   rff fi fl ffi ffl 2st Rst rtv te tk ~v tm!@A"@B#@C$@D%@E&@F'@G(@H)@I*@J+@K,@L-@M.@N/@O0@P1@Q2@R3@S4@T5@U6@V7@W8@X9@Y:@Z@(@)@*@+@,@-@.@/@0 @1 @2 @3 @4 @5@6@7@8@9@:@;@<@=@>@?@@@A@B@C@D@E@F@G @H!@I"@J#@K$@L%@M&@N'@O@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @  @  @  @  @  @  @  @  @  @  @  @  @  @  @  @  @  @  @  @  @  @  @  @  @  @  @  @  @  @  @  @  @  @  @  @  @  @  @  @  @  @  @  @  @  @  @  @  @  @  @ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@n@@n`nA@nanB@nbnC@ncnD@ndnE@nenF@nfnG@ngnH@nhnI@ninJ@njnK@nknL@nlnM@nmnN@nnnO@nonP@npnQ@nqnR@nrnS@nsnT@ntnU@nunV@nvnW@nwnX@nxnY@nynZ@nzn[@n{n\@n|n]@n}n^@n~n_@n@"@#@$@%@&@'@(@)@* @+ @, @- @. @/@0@1@2@3@4@5@6@7@8@9@:@;@<@=@>@?@@@A @B!@CI@i0@ijcodings-1.0.58/resources/tables/CaseMappingSpecials.bin000066400000000000000000000032141433325321700232410ustar00rootroot00000000000000SsSSNSd}lJnJJ dZ55R!""*bJH1TW Y A`B          ()*+,-./ (!)"*#+$,%-&.'/hijklmno`haibjckdlemfngoEEBBEBEEBBEBBBBBEEBBEBFfFFFiFIFlFLFfiFFIFflFFLStSTStSTDvDFDeD5DkD;NvNFDmD=jcodings-1.0.58/resources/tables/CaseUnfold_11.bin000066400000000000000000000400001433325321700217040ustar00rootroot00000000000000Ka Ab Bc Cd De Ef Fg Gh Hj Jk K!*l Lm Mn No Op Pq Qr Rs St Tu Uv Vw Wx Xy Yz Z      !+                         x                  !  # "% $' &) (+ *- ,/ .3 25 47 6: 9< ;> =@ ?B AD CF EH GK JM LO NQ PS RU TW VY X[ Z] \_ ^a `c be dg fi hk jm lo nq ps ru tw vz y| {~ } C        =                                                      # "% $' &) (+ *- ,/ .1 03 2< ;? ,~@ ,B AG FI HK JM LO NP ,oQ ,mR ,pS T V W Y [ \ ` a c e f h i j k ,bl o q ,nr u } ,d      D   E   q ps rw v{ | }              E               !&                      0 1 2 3 4 5 6 7 8 9 : ; < = > ? @  A !B "C #D $E %F &G 'H (I )J *K +L ,M -N .O /P Q R S T U V W X Y  Z  [  \  ]  ^ _ a `c be dg fi hk jm lo nq ps ru tw vy x{ z} | ~                                                                              !  # "% $' &) (+ *- ,/ .a 1b 2c 3d 4e 5f 6g 7h 8i 9j :k ;l <m =n >o ?p @q Ar Bs Ct Du Ev Fw Gx Hy Iz J{ K| L} M~ N O P Q R S T U V                                              @p@q@r@s@t@u@v@w@x@y@z@{@|@}@~@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@y }} ,c                   !  # "% $' &) (+ *- ,/ .1 03 25 47 69 8; := <? >A @C BE DG FI HK JM LO NQ PS RU TW VY X[ Z] \_ ^a `c be dg fi hk jm lo nq ps ru tw vy x{ z} | ~                                                                               (! )" *# +$ ,% -& .' /0 81 92 :3 ;4 <5 =6 >7 ?@ HA IB JC KD LE MQ YS [U ]W _` ha ib jc kd le mf ng op q r s t u v w x y z { | }        !N !2!p !`!q !a!r !b!s !c!t !d!u !e!v !f!w !g!x !h!y !i!z !j!{ !k!| !l!} !m!~ !n! !o! !$ $$ $$ $$ $$ $$ $$ $$ $$ $$ $$ $$ $$ $$ $$ $$ $$ $$ $$ $$ $$ $$ $$ $$ $$ $$ $,0 ,,1 ,,2 ,,3 ,,4 ,,5 ,,6 ,,7 ,,8 ,,9 , ,: , ,; , ,< , ,= , ,> ,,? ,,@ ,,A ,,B ,,C ,,D ,,E ,,F ,,G ,,H ,,I ,,J ,,K ,,L ,,M ,,N ,,O ,,P , ,Q ,!,R ,",S ,#,T ,$,U ,%,V ,&,W ,',X ,(,Y ,),Z ,*,[ ,+,\ ,,,] ,-,^ ,.,a ,`,e :,f >,h ,g,j ,i,l ,k,s ,r,v ,u, ,, ,, ,, ,, ,, ,, ,, ,, ,, ,, ,, ,, ,, ,, ,, ,, ,, ,, ,, ,, ,, ,, ,, ,, ,, ,, ,, ,, ,, ,, ,, ,, ,, ,, ,, ,, ,, ,, ,, ,, ,, ,, ,, ,, ,, ,, ,, ,, ,, ,, ,, ,, ,- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -! -" -# -$ -% -' -- A @C BE DG FI HK JM LO NQ PS RU TW VY X[ Z] \_ ^a `c be dg fi hk jm l              # "% $' &) (+ *- ,/ .3 25 47 69 8; := <? >A @C BE DG FI HK JM LO NQ PS RU TW VY X[ Z] \_ ^a `c be dg fi hk jm lo nz y| { ~                            S A !B "C #D $E %F &G 'H (I )J *K +L ,M -N .O /P 0Q 1R 2S 3T 4U 5V 6W 7X 8Y 9Z :( ) * + , - . / 0 1  2  3  4  5  6 7 8 9 : ; < = > ? @ A B C D E F G H  I !J "K #L $M %N &O '                                                                                                                                                                          n` n@na nAnb nBnc nCnd nDne nEnf nFng nGnh nHni nInj nJnk nKnl nLnm nMnn nNno nOnp nPnq nQnr nRns nSnt nTnu nUnv nVnw nWnx nXny nYnz nZn{ n[n| n\n} n]n~ n^n n_" # $ % & ' ( ) * +  ,  -  .  /  0 1 2 3 4 5 6 7 8 9 : ; < = > ? @ A B  C !jcodings-1.0.58/resources/tables/CaseUnfold_11_Locale.bin000066400000000000000000000000201433325321700231610ustar00rootroot00000000000000i Ijcodings-1.0.58/resources/tables/CaseUnfold_12.bin000066400000000000000000000020301433325321700217060ustar00rootroot00000000000000:afffiflh1j sssttw y nIBBBPBBetetktmtv~v !"#$%&'`abcdefgpt|jcodings-1.0.58/resources/tables/CaseUnfold_12_Locale.bin000066400000000000000000000000241433325321700231660ustar00rootroot00000000000000i0jcodings-1.0.58/resources/tables/CaseUnfold_13.bin000066400000000000000000000004441433325321700217160ustar00rootroot00000000000000ffifflBBBBRTBVBjcodings-1.0.58/resources/tables/Transcoder_Big5_ByteArray.bin000066400000000000000000004055171433325321700243360ustar00rootroot00000000000000 K@@  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~@  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_________________________________`_____________________________  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[  !"#$%&'(                !"#$%&       !"#$%&  !"      !   !"#$%&'()   !"#$%  !"#$%&'()*+,-./012345      !" #$% &   !"#$%&'()*    !"#$%&'()*+,-  !"#$%&'()*+,-./    !"#$%&'()*   !"#$%&'()*+,-.  !"#$%&'()*+,-./0   !"#$%&'()           !"#$%   !"#$%&'()  !   !"#$%&  !"#$%    !"#$%&      !"  !"#$%&'()*+,-./0     !"#$%&'(   !"#$%&'()*+,-       ! "#$% &   !"#$%&'(   !"#$%  !"#$%&'()*+,-  !"#$%&'()*+,-./0  !"#$%&'()*      !"#$%&'()*        !"#$% &'(   !"#   !"#$%  !"#$       !"#$%&'()  !"#$%&'()*+,-./0   !"#$%&'(   !"#$%&'()*   !"#$%&'      !"#$%&'()*   !"#$%&'()*+  !"#$%&'()*+,-./0123    !   !"#$%&'()*+,-   !"#$%&'()*+,  !"#$%&'()*+,-./0    !"#$%&'()*    !"#$%&'()*    !"#$%&'  !"#$%&'()*+,-  !"#$%  !"#$%&'()*+  !"#$%&'(   !"#$%    !"#$%&'()*+,-    !"#$    !"#$%&'()*+     !"#$%&   !"#$   !"#$%&'()*+,-./0    !"#$%&'()*   !"#$%&'()*+,-./0    !"#$%    !"#$%&'(   !"#$%&'()*+,-   !"#$%&'()  !"#$%&'()*+,-./0123456789:;<=>?@  !"#$%&'()*+,     !"#$%&' ( )   !"#$%&'()*+,  !"#$%&'()*+,-./   !"#$%&'()  !"#$%&'()*+,-./01   !"#$%&'()*+,  !"#$%&'()*+    !"#$%&'()*+   !"#$%&'()*+,-./0    !"#$%&'()*  !"#$%&'()*+,-.  !"#$%  !"#$%&'()*+,-   !"#$%&'()*+,-./  !"#$%&'()*+,-./012   !"#$%&'()*+,-./   !"#$%&'()*+,    !"#$%&'()*+   !"#$%&'()*+,-.  !"#$%&'()*+,-./    !"#$%&'()*   !"#$%&'()*+,  !"#$%&'()*  !"#$%&'()*+,-     !"#$%&'()   !"#$%&'()*     !"#$%&'()    !"#$%&'()*+,-.  !"#$%&'()*+,   !"#$%&  !"#$%&'()*+,-./0123456   !   !"#$   !"#$%&'()*+,   !"#$%&'()*+,-./0123  !"   !"#$%&'()*+,-./012  !"#$%&'()*+,-.  !"#$%&'    !"#$%&'()*+   !"#$%&'   !"#$%&'()*+,-    !"#$%&   !"#$%&'()*  !"#$%&'()*   !"#$%&'()*+,-  !"#$%&'()*+,-   !"#$%&'()*+,-./  !"#$%&'()*+,-  !"#$%&'()*+,-./    ! "#$ %&'()*+,- . /   !"#$%&'()*+,-./0123456  !"#$%  !"#$%&'(  !"#$%&'()*+,-./0123456789:   !"#$%&'   !"#$%&'()*+,-.   !"#$%&'()*+,  !"#$%&'()*+,   !"#$%&'()*+,-./01234   !"#$%&'()*+,-   !"#$%&'()*+,-./01  !"#$%&'()*+,-./0  !"#$%&'()*+,-./01234    !"#$%&'()*  !"#   !"#$%&    !"   !"#$%&'()*    !"#$%&'()*+       !" #$% &'( ) *+ ,-./0    !"#$%&    !"#$%&'()*+,-   !"#$%&'()*+   !"#$%&'()*+,-    !"#$%&'(   !"#$%&'()*+,-./0        ! "#$%&'() *+ ,-   !"#$%&'()*+  !"#$%&'()*  !"#$%&'()*    !"#$%&'()*+,-   !"#$%&'(   !"#$%&'()*+,-./      !"#$%  !"#$%&'()*+,-./0123   !"#$%&'()*+,-.    !"#$%&'    !"#$%&    !"#$%&'()*+,-   !"#$%&'()*+    !"#$%&'()   !"#$%&'()*+,-./01   !"#$%&'()*+  !"#$%&'(     !     !"#$%&'()*+,  !"#$%&'()*+,-  !"#$%&'(  !"#$%&'()*+,-./0   !"#$%&'()*+,-.    !"#   !"#$%&'(    !"#$%&'(   !"#$%&'()*+,      !"#$%&'()*  !"#$%&'  !"#$    !"#$%&'()*+,-  !"#$%&'()*+,-    !"#$%&'    !"#$%&   !"#$%  !"#$$$$$%&$'($)*+,-.$/0$12345678       ! "#$%&'( )*+,- .   !"#$%&'()*+,-./   !"#$%&'()*+  !"#$%&'()*+,-./01234     !" # $% &'()*+,-./012        !"#$%&'()*+,-.   !"#$%&'()*+,-./01  !"#$%&'()*+,-./01234  !"#$%&'()*+         !"#$%&   !"#$%&'()*+,-./      !"#$%&'()*   !"#$%&'()*+,-./    !"#$%&'()*+,-./01  !"#$%&'()*+,-  !"#$%&'()*+,-  !"#$%&'()*+,-./012    !"#$%&'(        !"#$%&'()*+, -  !"  !"#$%&'()*  !"#$%&'()*+,-./0123456789  !"#$%&'   !"#$%&'()*+,-./01   !"#$%&'()  !"#$%&'()*+,-  !"#$%&'()*+,-./   !"#$%&'()*+,-./01  !"#$%&'()*+,-./0123456    !"#$%&'()*+,-./0123    !"#$%&'()*+,-.    !"#$%&'()*+    !"#$%&'()*+,-./      !"#$% &'()*+, -   !"#$%&'()*+,-./01234  !"#$%&'()*+,-./0123    !"#$%&'()*+,-./01   !"#$%&'()*+,-./01  !"#$%&'()*+,-./012345   !"#$%&'()*   !"#$%&'()   !"#$%&'()*+,-.    !"#$%&'()*+,-./01  !"#$%&'()*+,-./    !"#$%   !"#$%&   !"#$%&'(  !"#$%&'()*+,-./    !"#$%&'()*     !"#$%&'()*+,-./01234    !"#$%&'()*+,-./0123456   !"#$%&'()*+,-./0     !"#$%&'()*+,-./0    !"#$%&'()*+,-./012345      !"#$%&'()*+,-./0       !"#$%&'()*+,-  !"#$%&'()*+,-./01    !"#$%&'()*+,-./0123  !"#$%&'()*+,-./0  !"#$%&'()   !"#$%&'()*+   !"#$%&'()*+,-./012    !"    !"#$%&'(   !"#$%&'()*+  !"#$%&'()*+,-./0       !"#$%&'( ) *+,   !"#$%&'()*+,-.    !" #$%&'()*+,-./0123 4567 89  !"#$%&'()*+,-     !"#$%&'()*+, - ./ 012    !"#$%&'()*+,-.        !"#$% &'()* +,-  !"#$%&'()*+  !"#$%&'()*+,-./  !"#$%&'()*+,-./0  !"#$%&'()*+,-./0  !"#$%&'()*   !"#$%&'()*+,  !"#$%&'()*+,-.  !"#$%&'()*   !"#$%&'()*+  !"#$%&'()*+,       !"#$%&'()*   !"#$%&'()*  !"#$%&'()*+,-./012    !"#$%&'()*+,-./      !"#$%&   !"#$%&'(  !"#$%&'(       ! " # $% & ' ()* +    !"#$%&'(            !"#$%&'()*+,-        !"#$%&'()*+,-./0   !"#$%&'()*+,-./01   !"#$%     !"#$%&'   !"#$%&'()*+,  !"#$%&'()*+    !   !"#    !"#$   !"#$%&      !"#$%&'(    !"#$%&'()*+,  !"#$%&'()*+,-./012345  !"#$%&'()*+,-./01234567       !"#$%&'(   !"#$%&'()*+,-    !"#$%&'()*+,-  !"#$%&'()*+,-./0123      !"#$%&'()*+,-./0123456789:;<=     !"#$%&  !"#$%&'()*+,-./0123456789:;          !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~                !  !"#$%&'()*+,-./01222222222222222   !"#$%&'()*+,-./0123456789:;<=>?  !"#$%&'()*+,-./01(23456789:;<=>?  !  !   !"##$%&'(###############)*##+,#-  @  !"#$%&'()*+,-./0123456789:'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''𧉧𧲱𧳅𤊿𣘗𧍒𦺋𧃒𪍑𧱬𦬣𥩔𡩣𣸆𣽡𨮹𧯯𡵞𩺰𩥅@  !"#$#%&'()*+,-./0123456789:;<=>?@#A#BCDEF####################################################################################𠄌𠃑𠃍𠃋𡿨𠃊𠄎@  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~𪎩𡅅𧜵𠧧𩷶𧀎𪄳𨑬𡷊𠗐𢫦@  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~𧶄𠱂𠴕𥄫𢳆𠍁𤶸𩓥𨂾𢰸𨅝𦧲𤷪𠵼𠾴𠳕𡃴𠺖𠰋𠽤𢲩𨉖𤓓𠵆𩩍𨃩𤺧𢳂𩗴𥋇𩟔𧣈𢵄𦂥𢵌𢯊𡁷𡁯𦛚𦜖𧦠𥁒𠱃𢆡𨭌𠜱𠆩𢶍𤗈𠓼𦂗𠽌𠶖𢩦𡂝𠶜𢝵𪘁𠸉𢫏𢳉𡃈𣧂𨊛𥹉𢃇𠼱𢲲𩜠𤸻𧕴𢺋𢈈𪙛𨳍𠹺𠰴𦠜𡃏𢠃𢤹𥇣𠺌𠾍𠺪𠼰𠵇𡅏𠹌𠺫𠮩𠵈𡃀𡄽𢚖𠾭@  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~𣏴𧘹𢯎𠵾𠵿𢱑𢱕𠺘𡃇𠼮𪘲𦭐𨳒𨶙𨳊𩻃𧝞𢷮𦕲𨂽𠻺𠸏𠹷𠻻𤷫𠳖𢞵𡃉𠸐𠹸𡁸𡅈𨈇𡑕𠹹𤹐𢶤𡀝𡀞𡃵𡃶𠸑𧚔𨋍𠾵𠹻𥅾𠾶𡆀𥋘𪊽𤧚𡠺𤅷𨉼𥜽𥭴𣄽𡯁屮𠂆𤣩𦉪𦍋𦘒𦥑𧢲𨸏𩠐𠂇@  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdEEEefghEijklmnopqrstuvwxyz{|}~E𩱳𤅎𥇍𥴰𨨲𣊁𪄇𡦀𨜏𪊺𠩯𩥇𨫪𢁾𨧣𡶶𢜒𣏹𣱣𤔅𤨓𥲤𥚕𨶹𡐿𤥻𧄍𦵴𦬕𦾾𣉖𢞖𣬚𣕑𤃬𡸣𠆤𦱁𠈹𩣺𠮟𢇁𨥭𩁹𪆵𦱆𨚲𧏿𥒚𤬏𨧀𣽁𠌥𠻘@  !"#$%&'()*+,-./*0123456789:;<=*>?@ABCDEFG*HIJKLMNO*PQRSTUVWXYZ[\]^_`abcdefg*hi*jklmnopqrstuvwxyz{|}~𣻗𦻓𥟠𨯩𥣡𩓙𥦬𦒍𥰁𥌎𥳾𥮴𦱿𥴠𥱥𥳁𤢂𤕸𦹄𦻖𤁗𦀩𡟹𨍭𦄡𦅚𦋐𦍑𡙡𠁨𣝦𨌺𦒉𪂇𦳃𢜔𦘦𣷣𦛨𨩈𢛶𦒘𤾸𡒊𡡞𤩥𤪕𠬍𦩒𣵾𡓽𦬊𤦧𣔰𡝳𣷸芳@  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~𠸖𡞴𣅽𣕚𣺋𦶣𦬅𦮗𣗎𦶥𦻔𦹂𢻯𥯤𣲵𦮖𦹷𦹃𥲑𥳀𦺙𨘥𨘻𧂈𡖂𧃍䕫𡢢𧎚𪃸𢰧𧗠𣶹𧗤𧜏𨨥𧤤𧪽𧩙𧬺𣾏𧬸𥐰𥕥𤩺𡛟𧵔𧶏貫𧵓𧶘𧶽𡤐𤳉@  !"#$%&'()*+,-./0123456789:.;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxy.z{|}~.𨀂𡀔𤦊𨆼𧄌𨍥𨐒𪊟𠩐𨧞𨔽𣶻𣉢𪀔𨚼𨔁𢌥𦻗𨔼𧪾𨕬𨘋𨜓𨛦𨤳𡺉𥖹𨫆𣲛𨬌𥗛𠴱𨫡𨯫𨫢𨫥𨯬𨰹𨯿𢙺𨛘𡉼𣸮𦻕𨫠𦲸𠉴𦐐𩂯𩃥𤫑𡤕𣌊𤫩𩇕𩇫𣂷𣂼𥑬𩐳𩐝𧥺𧅵𠘰𤅜𥜆𦴧𡛓𤨩𩡗𩤅𥜥𩂱𩯕𩬅𨘀𦦨𣁽𩴾𡡣𤉋𩹨𩾷𪆒𪆫𪃡𪄣𪇟𪄴𢅛𪆓𪈠𡤻𪈳𪂹𪊴𤍤𨰫𦶢𩂋𤥵𤦻𤧸𤍈𤩑𨯚𡣺𨥾𨸶𨩄𨥬𤒹𤑳𤏸𡟯𡢾𣖙𡢅𥐯𡟸𡛻𡠹𡝴𡣑𥽋𡛀𤨥𡏾𡊨@  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~𡏆𡒶𣚦𤦔𧅥𣸱𥕜𣻻𧁒𣛮𩦝𦼦𡤢𣜿𤃡𤂋𤄏𦰡𦚱𠿟𠮨𠸍𨬓𤐶𠑥𠍿𥙑𠆫𠏋𠌊𠐔𠋀𨺳𠉵𠈌𤨎𣺊𣖕𣸹𣺿𡢄𣺉𠗠𠒣𠒒𠒑𨪜𠜎𠡳𤎌𠰠𤦬𡃤𠸝𤪼𤂍𤃉𠍅𠯆𨩆𡛺𡝯𡜐𥥆𡧳𡡡𤊕𥺃𨯗𠐓𡌃𨧻𡦖𡥼𣫮𡤃𡤄𡢠𡛾𨩇𡶺𣑲𨦨𡤧𡞫𡜻𧗽𢡠𢘫𢖯𢖾𩂈𦽳𠀾𠁆𢘛𢲛𢴇𤛔𩅍𤙥𢭪𢬢𣑐𩣪𢹸𪑛𤧣𢵧𢲡𣂎𣊭𤦉𣊫𣋠𡣙𩐿𣊉𣆳𥖄𨬢𥖏𡛼𥕛𥐥𣄃𡠪𣈴𣈏𣆂𤋉𦴤𧡰𡷫𣋒𣋡𥡲𣠺𣞼𣞢𣏾𤘪𣟕𤒇𡤒𣿀𣲚𨯪𨫋@  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~𨀞𨧜𤧬𣽿𤀼𤌚𤉶𤞏𤜥𤪤𠗫𣻸𣙟𤩊𤤗𥿡𤫟𨰣𣼵𦷪𤳙𤴆𪗆𨫌𤦫𤦎𤩎𤧅𤣳𨫣𡡤𥈡𥇧𣈲𤚗𣞁𤣰𤪺𤫇𤪖𦆮𥖁𧝁𥛣𣻺𡛦𠵌𤦌𠊙𣶺𡝮𠇔𠰍𢛵𥪯𥪜𠉛𥯆𥮳𥺼𥺦𤧹𡞰𦉡𦅜𧭈𥺂𦭵𠤖𠁎𣗏𦐒𦏸𤥢𠠬𥫩𥵃𥸎𣐿𤧷𦖭𦖠𧄧𦳑𦞴𦩂𦩑𦶧𧈛𡡀𡢡𡣘蜨𣶏𧐢𥚃𧞅𧞄𨯵𨯙𨮜𨧹𩑈𤊄𡡅𧷜𤰉𢌡𡟚𤤯𨩋𨫼𨰝𨰻𨴴𤣿𤩂𤏪𣈥𨻧𨹦𨹥𤧭𤩸𣿮𩂰@  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~𩂓𥟟𨦉𨰦𨬯𦎾𤈛𠼦𨯅𤪲𩓚𩗗𨭐𤩧𨭤𨩅𧬆𨭥𥣈𩣱𩥈𡌂𤦸𡓨𢜟𣶸𢞁𢥫𩸭𪇵𪃾𤄄𪆴𪃭𪃳𩤯𦸒𦿟𦮂𦶤𦺄𦷰𦸀𣟗𦁤𣖜𣙀𤧞𠊿𥕝𡝗𣇉𤥁𤆵𤆬𦱀𤾗𡞵𨩉𤒈𨧼𡣖𠼝𦳀𡐓𤋺𢰦𤏁𣶷𦝁𦅛𦂤𤦹𤦋𨧺𨭣𡢟𤪳𤨾𤪔𡟙𤩦𠎧𡐤𤧥𤤖𤥶𠓾𨫎𨨖𨯧𥗕𨪂𤥃𠳿𠘚𠯫𠲸𡟺𡛂𤩐𡡒𨫀𤦭𡢿𡢃𧒄𣵛𨪁𡡢𠪴𡎜𨈘𩃤𧹏𣿭𣸭𠏵𨰜𦯀𡑒𤍢𤩱𢿣𡊰𢎽𡎘𣓥𧯴𣛟𨪃𣟖𣏺𤲟𣚭𦲷𦴦𦵑𦲂𦿞𧄉𡜺𦲀𧁓𡟛𡞳𡤅𤇼𡜼𤊥𤊓𣻹𧜶𤑛𤋊𤉙𨧡𦴨𤓎𧹍𤎽𤉖𡌄𤏩勇𤩏𤩝𡟟𣫺𣌀𠈔𠣕𠘙𡾞𪊶𩅛𨩙𩐠𧫴𥛶𧬘𤣲𤽜𥔵𠳏𧥧𡯂𠂔𠊷𠎠𠓗𠗕𠘕𠙶𡚺𠫂𠫍𠮿吆𠯋𠯻𠰻𠱓𠱥𠱼𠲍𠲵𠳝𠳭𠵯𠶲𠷈𠸄𠸎𠻗𠾐𠼭𠹳𠾼𡁜𡁏𡁶𡁻𡂈𡂖𡂿𡃓𡄯𡄻𡋣𡍵𡌶𡕷𡘙𡟃𡟇𡠭𡥪@  !"#$%&'()*+,-./0123456"7"89":;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`a"bcdefghijklmnopqrstuvwx"yz{|}~""𡨭𡩅𡰪𡱰𡲬𡻈𡻕𡼕𢁅𢉼𢏗𢏺𢜪𢡱𢥏𢥧𢦓𢫕𢫨𢬎𢬿𢱌𢲈𢲷𥯨𢴈𢴒𢶷𢶕𢹂𢽴𢿌𣀳𣁦𣌟𣏞𧩹𣕧𣗳𤦺𣘚𣜖𠍆𣪧𧙗𥿢𣸑𣺹𧗾𢂚𤄙𨪚𤋮𤌍𤀻𤌴𤎖𤩅𠗊𠘑𡺨𣳿𤐄𤓖𤙴𤜯𨗨𩧉𢇃𨭎𤠒𤣻𤨕𤫀𠱸𤺥𤾆𠝹𥀬𥊙𥐙𣽊𤪧𥑆𥑮𦭒𥔿𧘲𥕞𥕢𥕦𥟇𤤿𥡝𣏌𥤃𨥈𥪮𥮉𥰆𡶐𦄂𧰒𦆲𤾚𦐂𦑊@  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~𦯷𦒄𡤜𤧶𦒈𣿯𦔒𦖿𦚵𢜛𥟡晉𤔡𦛼𤤴𦲽𦞙𦡮𦐑𦡞𦣇𩃀𠨑𦤦𦤹𦧺𦨭𦑩𠀡𦨴𦭛𣔙𦮝𦲤𦶮𢖍𧁋𧇍𧊀𧊅𢅺𧊋𧋦𤧐𧑐𠻸𢤦𨑳𡞱𤨪𡠠𩲭𩢤𧟌𧡘𡘊𣜯𨃨𡏅𧧝𩆨𧂯𨦫𧧽𧨊𧬋𧵦𤅺𨀉𪋟𨌘𦸇𨅯𨀣𦦵𡏭𣈯𨁈𨰰𨂃𨥉𤦈𤪥𣾁𨂐𨃴𨄮𡾡𨅏@  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~𨆉𨆯𨈚𨌆𨌯𨎊𨑨𨚪𨥖𨦸𨧧𨧨𨭆𨯔𨰉𨿅𩃬𩄐𩄼𩅞𤫊𩓧𩗩𩖰𩖸𩜲𩣑𩥉𩥪𩧃𩨨𩬎𩵚𩶛𩻸𩼣𪊓𪋿𪗋𠲜𢒰𤪓𨬬𧢝𡟵𨀤𨭬𨮙𧨾𦚯𧙕𣲷𥘵𥥖𥺁𦉘𠹭𣺈𤲞𡟶𡡻𥱊𥌑𩶘𥻘𣵀𠿪𠵉𣚺𠺝𨋢𠱁𠲖𥅈𠹶𢱢@  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJHKLMNOPQRSTUVWXYZ[\]^_`aHbcdefghijklmnopqrstuvwxyz{|}~HHH𠺢𡁵𢭃𢺳𠶧𦢊𡃁𤜆𦢓𢛴𧴯𤆣𧵳𦻐𧊶𡇙𣳼𪚩𠺬𠻹𡲢𤿂𧿹𠿫𢶠𤟠𩵼𠿬𠸊𧖣𠿭𦁈𡆇𤘘𤭮𥪕𠥹𢑥𩺬𣳾𩼰𤾩𩖞𩿞𣶶𧊲𦞳𣜠𣻷𣸬𠒎𠺶𧼮𪐴𣃚𤏲𡊩𤥣𩸆𧂮@  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~𡝬𩓐𦌵𧅤𠴨𦴢𤫢𠵱𡼏𡷑𤤾𡝭𨺗𦴣𠏼𥰡𣳽𤤙𠳔𠇲𪙊𨍽𤩷@  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~𨩚𪊲咢𤪻𡠻𦸅𢔛𦅙𣏵𨯂𨸹𡵆𠼻𥼚𧒆𦟌𦻑𤀑𨬭𣳇𥻗𧙖𥔱𡥄𡋾𩤃𦷜𧂭𦆭𨨏𣙷𠃮𦡆𤼎𦍌𦉫@  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~@  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~@  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_______________________________________________________________@  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqnrnsntuvwxynnz{|}~@  !"#$%&'()*+,-./0123456789:;<=>?@ABCDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghiDDDjklmnopqrs𠃌𠂊𧘇@  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~@  !"#$%& '()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ [\]^_`a bcdefghijklmnop qrstuvwxyz{|}~𠕇𠗟𣿅𤥂𨧤𡧛𣳈𤤳𨦪𠊠𦮳𡌅𢓭𦴩𧪄𣘀𤪱𢔓𠍾𠎀𠍇𠐟𤦤𠒇𣎴𠯿𢃼𠋥𢔰𠖎𣈳𡦃𠖳𣲙𤪦𣜭𦬓𨫞𣾀𠥔𣿬𠯢𡜦𡛨𨚫𡖖𡘓𨪛𥝲𠮏𣿫𢶣𠱷𦭓𠵴𡜍𠻝𠵍@  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUV WXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~ 𨦼𢚘𡣗𤀺𤐵𡂴𣊊𨭦𡉏𤆥𦱾𡐖𡑔𤍣𤯵𡈼𪅐𤉸𡘾𡚒𠵎𦲁𦴪𡟜𡟻𡞲𦶦𡠨𡛕𦹅𤦩𦾡𢕔𡤑𡚸𧨎𠈄𡨴𥧌𠖥𡭄𡲥𦬨𡷹𡸷𡺤𤤁𢁉𢅳𤒼𠳓𡝱𨒂@  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~𠇁弢𡌺𦢈𢏐𢑱𦹮𨨶𥉐𡽪𧃸𢙨𠊞𨨩𡡷𢞴𤦂𤦏𧩓慈𦻒𠙖𣾷𢡟𨮝𩥝𢦀𢣁𠄘𡝰𢸍𤧟𡎎𡟼𢸶𤂌𥜝𤨨𤨣𣁾𤥀𡠩𣐀𣇷𣇸𣆤𣆥𠹵𥇦𡸽𣈱𨗴𣇈𥌓𢣷𤎜𤨡𣟂𤇍𩃭𣏦𦶠@  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVVWXVYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~V𣑯𨫟𣗍𣘼𨩊𠏉𣙙𢄪𣜃𩆜𠤣𢟍𣫛𠎵𡥘𣭚𣻼𢒋𤣱𦭑𣶼𣶽𤆤𤤌𤤀𣳉𠴲𣇹𢒑𦴥𦶡𦷫𤥿𤂅𦹲𦽴𨬡𣸯𣾂𣁋𣸰𡒗𤀽𩅰𤅄𤂑𤅕𤀹𣿰𣾴𤄿𤅖𤅗𤅀𦇝𤉷𤍥𤋁𤑚𤨧𤨢𨯨@  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~𥘅𤥴𣁄𤠣𨠫𨠄𠰺𦨮𤇢𡛧𤨤𤦷𤦍𤧻𤨦𠗃𢢭𨺲𤪌𤅟𤩹𨮏𨰃𡢞𡦈𨻙𡩋𨺬𤾂𤴓𦏵𦤑𦤎𦾟𥂝𥅽𡸜𥈠𣊬𨥤𨥨𡛁𡍶𤨒𥗠𧘌𨬫𦂃𢘜𥡗𧬹𧄦𩄍  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz        !"#$%&'()*+,-./012                      !"#$%&'()*+,-./012345678  !"#$%&'()*+,-./01234567888889:;8                                        !"#$%&'()*+,-./0123456789:;                      !"#$%&'()*+,-./       ! " #$%& ' () *+,- .   !"#$%&'()*+,-.   !"#$%&'()*+,-   !"#$%&'()*+,-./0123456789        !" #$%&'( )*+ , -  !"#$%&'()*+,-./012  !"#$%&'()*+,-./01234567*89:;<=>?  !"#$%&'()*+,-./012  !"#$%&'()*+,-./0123   !"#$%&'()*+,-./   !"#$%&'()*+,-./012345  !"#$%&'()*+,-./01234   !"#$%&'()*+,-.    !"#$%&'()*+,  !"#$%&'()*+  !"#$%&'()*+,-.  !"#$%&'()*+,-./0  !"#$%&'()*   !"#$%&'()*+,-  !"#$%&'()*+,-   !"#$%&'()*+,-./01   !"#$%   !"#$%&'()*+,-./0  !"#$%&'()*+,-./0123456789   !"#$%&'()*+,-.   !"#$%&'()*+,-./0123456789      !"# $%& '( )*+, -  !"#$%&'()*+,-./012   !"#$%&'()*+,-./  !"#$%&'()*+,-./012345  !"#$%&'()*+!,!!-./0!!123!456789:   !"#$%&'()*+,-./01234   !"#$%&'()*+,-./012345        !" #$%&'( )*+,-./ 0 1234  !"#$%&'()*  !"#$%&'()*+  !"#$%&'()*+,-./    !"#$%&'()*+,   !"#$%&'()*+,-./01  !"#$%&'()*+,-./0123456   !"#$%&'()*+,-./01   !"#$%&'()*+,-./0123   !"#$%&'()*+,-./   !"#$%&'()*   !"#$%&'()*+,   !"#$%&'()*+,-./01234  !"#$%&'()*+,-./0123456789:;    !"#$%&'()*+,-   !"#$%&'()*+,- ./ 012345678   !"#$%&'()*+,-./01234567  !"#$%&'()*+,-./0123456789   !"#$%&'()*+,-./   !"#$%&'()*+,-./012345    !"#$%&'()*+,-./0     !"#$%&'( )*+,-. /0 1 2 3  !"#$%&'()*+,  !"#$%&'()*+,-./0   !"#$%&'()*+,-.   !"#$%&'()*+,-.  !"#$%&'()*+,-./0123  !"#$%&'()*+,-   !"#$%&'()*+,-./012     !"#$%&'()*     !"#$%&'(  !"#$%&'()*+,-./012345  !"#$%&'()*+,-./  !"#$%&'()*+,-./01234567  !"#$%&'()*+  !"#$%&'()*+,-./0  !"#$%&'()*+,-./012   !"#$%&'()*+,-  !"#$%&'()*+,-./      !"#$%&'( ) * + ,-   !"#$%&'()*+,-./0  !"#$%&'()*+,-./0123456  !"#$%&'()*+,-./  !"#$%&'()*+,-./0123456789   !"#$%&'()*+,-./01234  !"#$%&'()*+,-./01    !"#$%&'()*+,-.  !"#$%&'()*+,-./012      !"#$% &'() *+ ,-./0  !"#$%&'()*+,-./01234  !"#$%&'()*  !"#$%&'()*+,-./01  !"#$%&'()*+,-./01  !"#$%&'()*+,-./0123456789:;   !"#$%&'()*+,-./01234   !"#$%&'()*+,-./   !"#$%&'()*+,-./0   !"#$%&'()*+,-./012345   !"#$%&'()*+,-./0123456     !"#$%&'()*+,-.      ! "#$ %&' () *+,-. /0123  !"#$%&'()*+,-./  !"#$%&'()*+,-./01  !"#$%&'()*+,-./012345  !"#$%&'()*+,-./0123  !"#$%&'()*+,-  !"#$%&'()*+,-./0123456  !"#$%&'()*+,-./012   !"#$%&'()*+,-  !"#$%&'()*+,-./0123456789:   !"#$%&'()*+,-.  !"#$%&'()*  !"#$%&'()*+,-./0123  !"#$%&'()*+,-./0123456  !"#$%&'()*+,-.  !"#$%&'()*+,-./0123456789:    !"#$%&'()*+,-./012345  !"#$%&'()*+,-./  !"#$%&'()*+,-./012345   !"#$%&'()*+,-./012   !"#$%&'()*+,-./012345678   !"#$%&'()*+,   !"#$%&'()*+,-  !"#$%&'()*+,-./   !"#$%&'()*+,-.  !"#$%&'()*+,-./012   !"#$%&'()*+,-./0123456  !"#$%&'()*+,-./01234  !"#$%&'()*+,-./01234   !"# $ %&'()*+,-./01 2 3 4  !"#$%&'()*+,-./0123456789:;   !"#$%&'()*+  !"#$%&'()*+,-./  !"#$%&'()*+,-./0123456789:;   !"#$%&'()*+,-./   !"#$%&'()*+,-./01234    !"#$%&'()*+,-./012  !"#$%&'()*+,-./01234  !"#$%&'()*+,-./0123456789:;<  !"#$%&'()*+,-./012  !"#$%&'()*+,-./012345678  !"#$%&'()*+,-./012345  !"#$%&'()*+,-./01234567  !"#$%&'()*+,-./012345678    !"#$%&'()*+,-./0  !"#$%&'()*+,-./0   !"#$%&'()*+,    !"#$%&'()*+ , -./0 1234 56789     !"#$%&'()*+,-./01234567     !"#$ %&'( )*+ ,-. /0 12345   !"#$%&'()*+,-./01   !"#$%&'()*+,-./0123   !"#$%&'()*+,-./012  !"#$%&'()*+,-./   !"#$%&'()*+,-./012   !"#$%&'()*+,-./012345  !"#$%&'()*+,-./012345  !"#$%&'()*+,-./0123456789:  !"#$%&'()*+,-./012345678  !"#$%&'()*+,-./0123456789:;<  !"#$%&'()*+,-./0123456   !"#$%&'()*+,-./012  !"#$%&'()*+,-./0123456   !"#$%&'()*+,-  !"#$%&'()*+,   !"#$%&'()*+,-./0123456   !"#$%&'()*+,-./012  !"#$%&'()*+,-./01234   !"#$%&'()*    !"#$%&'()*+,-./0   !"#$%&'()*+,-./012  !"#$%&'()*+,-./01   !"#$%&'()*+,-./0123456  !"#$%&'()*+,-./012  !"#$%&'()*+,-./  !"#$%&'()*   !"#$%&'()*+,-./0123  !"#$%&'()*+,-./01234567   !"#$%&'()*+,-./0  !"#$%&'()*+,-./012345   !"#$%&'()*+,-./012345678  !"#$%&'()*+,   !"#$%&'()*+,-./  !"#$%&'()*+,-.  !"#$%&'()*+,-./012   !"#$%&'()*+,   !"#$%&'()*+,-./01  !"#$%&'()*+,-.  !"#$%&'()   !"#$%&'()*+,-./0123  !"#$%&'()*+,-./01    !"#$%&'()*+,-./012   !"#$%&'()*+,-.   !"#$%&'()*+,-./012  !"#$$%$$&'$()$*+,-./$01$23456789      !"#$ %&'()*+ ,-./0 1   !"#$%&'()*+,-./01234567  !"#$%&'()*+,-./0123456  !"#$%&'()*+,-./0123456   !"#$%&'()* +,-./012345678    !"#$%&'()*+,-./01234567  !"#$%&'()*+,-./01234567  !"#$%&'()*+,-./01234567    !" #$% & '()* +,-./ 0 12345     !"#$%&   !"#$%&'()*+,-   !"#$%&'()*+,-./0123    !"#$%&'()*+,-  !"#$%&'()*+,-./012  !"#$%&'()*+,-./01234      !"#$%& '()* +,- ./01234 56  !"#$%&'()*+,-./0123  !"#$%&'()*+,-./01234  !"#$%&'()*+,-./0123456  !"#$%&'()*+,-./01234      !"# $ %&'()*+,-./01 2  !"#$%&'  !"#$%&'()*+,-./0  !"#$%&'()*+,-./0123456789:;<  !"#$%&'()*+,-./012  !"#$%&'()*+,-./0123456789:;<  !"#$%&'()*+,-./0123  !"#$%&'()*+,-./01234  !"#$%&'()*+,-./0123456  !"#$%&'()*+,-./0123456789:  !"#$%&'()*+,-./012345678    !"# $%&'()*+,-. /012345678  !"#$%&'()*+,-./01234567   !"#$%&'()*+,-./0   !"#$%&'()*+,-./0123      !"#$% & '()*+,- .   !"#$%&'()*+,-./0123456   !"#$%&'()*+,-./01234567  !"#$%&'()*+,-./01234567  !"#$%&'()*+,-./0123456789:   !"#$%&'()*+,-./0123   !"#$%&'()*+,-./01234  !"#$%&'()*+,-./0123    !"#$%&'()*+,-./0123   !"#$%&'()*+,-./012345   !"#$%&'()*+,-./   !"#$%&'()   !"#$%&'()*+,-   !"#$%&'()*+,-./012   !"#$%&'()*+,-./0   !"#$%&'()*+,-./012345678   !"#$%&'()*+,-./0123456789:  !"#$%&'()*+,-./0123456     !"#$%&'()*+,-./01    !"#$%&'()*+,-./012345678     !"#$%&'()*+,-./012345678     !"#$%&'()*+,-./0   !"#$%&'()*+,-./01234  !"#$%&'()* +, -. /012 345 6789  !"#$%&'()*+,-./01234567  !"#$%&'()*+,-./0   !"#$%&'()*+,-./012   !"#$%&'()*+,-./012345  !"#$% &' (     !"#$%&'()*+,-./    !"#$%&'()*+,-./  !"#$%&'()*+,-./0123456       ! "#$%&'()* + , -./    !"#$%&'()*+,-./  !"#$%&'()*+,-./012345   !"#$%&'()*+,-./01 234567       !"#$%&'() * +,-./012 345      !"#$ %& '( )*+,-./0123 4567  !"#$%&'()*+,-./012345  !"#$%&'()*+,-./012345678  !"#$%&'()*+,-./0123456789:;   !"#$%&'()*+,-./012345  !"#$%&'()*+,-./0123456789:;<   !"#$%&'()* +,-./01234 56 7 8 9  !"#$%&'()*+,-./01234567  !"#$%&'()*+,-./01234567  !"#$%&'()*+,-./0123456   !"#$%&'()*+,-./012345         !"#$%&'()*+,-./   !"#$%&'()*+,-./01  !"#$%&'()*+,-./0123    !"#$%&'()*+,-./012345   !"#$%&'()*+,-./0   !"#$%&'()*+,-./0123    !" #$ %&'( )* +,-. /01   ! "#$% & '()* +,-. /01 2   !"#$%&'()*+,-./    !"#$%&'()     !"#$%&'()*+,-./01234      !"  !"#$%&'()*+,-./01234567  !"#$%&'()*+,-./0123456789   !"#$%&'()    !"#$%&'()*+,  !"#$%&'()*+,-./01234   !"#$%&'()*+,-./    !"#$%&'()*+    !"#$%&'()*   !"#$%&'()*+,-./0  !"#$%&'()*+,-     !"#$%&'()*+,-.   !"#$%&'()*+,-./012345  !"#$%&'()*+,-./0123456789:  !"#$%&'()*+,-./0123456789:;<     !"#$%&'()*+,-./0123456789:   !"#$%&'()*+,-./012345    !"#$%&'()*+,-./0123  !"#$%&'()*+,-./0123456789:;     !"#$%&'()*+,-./0123456789:;<=>?               !"#$%&'()*+,-./012345678                     !"#$%&'()*+,-./012345678    !"#$%&'()*+,-./012345       !"#$%&'()*+,-./012                       !"#$%&'()*+,-./0123456789:   !"#$%&'()*+,-./01234       !"#$%&'()*+,-./0123456789   !"#$%&'()*+,-./012345                !"#$%&'()*+,-./    !"#$%&'(         !"""#$%&'()*)      !"             !"#$%&'()*+,-./0123456789:;<                  !" #$ %&' ()* + ,  !"#$%&'()*+,-./012345*6*789:;<=>   !"#$%&'()*+,-./    !"#$%&'()*+,-  !"#$%&'()    !"#$%&'()*+  !"#$%&'()*+,-./012345   !"#$%&'()*+,-./012   !"#$%&'()   !"#$%&'()*+,-./0123   !"#$%&'()*+,-./0123456  !"#$%&'()*+,-./012345678    !"#$%&'()*+,-./    !"#$%&' ()*+,- ./ 0 1 2  !"#$%&'()*+,-./   !"#$%&'()*+,  !"#$%&'()*+,  !"#$%&'()*  !"#$%&'()*+,-./0123   !"#$%&'()*+,-./0123  !"#$%&'()*+,  !"#$%&'()*+,-./01  !"#$%&'()*+,  !"#$%&'()*+,-./01234   !"#$%&'()*+,-./0123  !"#$%&'()*+,-./01234567     !"#$%&'()* + ,-./ 0123 45678    !"#$%&'()*+,-./0  !"#$%&'()*+,-./0123456789   !"#$ %&'()*+,-./01234 56 789:  !"#$%&'()*+,-./012345    !"#$%&'()*+,-./01  !"#$%&'()*   !"#$%&'()*+,-  !"#$%&'()*+,-   !"#$%&'()*+  !"#$%&'(   !"#$%&'()*+,-./012   !"#$%&'()*+,-./0123456  !"#$%&'()*+,-./01  !"#$%&'()*+,-./012  !"#$%&'()*+,-./012345  !"#$%&'()*+,-./01234567  !"#$%&'()*+,-./0123456   !"#$%&'()*+,-./0123     !"#$%&'()*+,-./0123456     !"#$%&'()*+,-./012345       !"# $% &' ()*+,-./012 3456  !"#$%&'()*+,-./0123456    !"#$%&'()*+,-./01234    !"#$%&'()*+,-./  !"#$%&'()*+,-.     !"#$%&'()*+,-./0123456789:;<=>?3   @  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~@  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[[\]^_`abcdefghijklmnopqrstuvwxyz{|}~@  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijkllmnopqrstuvwxyz{|}~@   !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~    !"#$%&'()*+,-./0123456789:;<=>?              !         !"!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!  !"#$%&'()*+,,,,,,,,,,,,,,,,,,,,,       !"#$%&'               !"#  !"#$%&'()*+,-./0123456789      !"#$%&'()*+,-./0123456789:  !"#$%&'(  !"#$%&'()*+,-./0123456       ! "#$%&'( )*+,-./01 234 5   !"#$%&'()*+,-./012345678   !"#$%&'()*+,-./0123456789:      !"#$%&'()*+, -./012 345 6 7  !"#$%&'()*+,-./0123456789     !"#$%&'()*+,-./01234567  !"#$%&'()*+,-./0123456789   !"#$%&'()*+,-./0123   !"#$%&'()*+,-./01234567  !"#$%&'()*+,-./012345  !"#$%&'()*+,-./01234567    !"#$%&'()*+,-./01234567  !"#$%&'()*+,-./0123456  !"#$%&'()*+,-./0123456789:;<  !"#$%&'()*+,-./0123456789:  !"#$%&'()*+,-./012345   !"#$%&'()*+,-./0   !"#$%&'()*+,-./01234     !" #$ % &'()*+,-./0 123456789   !"#$%&'()*+,-./   !"#$%&'()*+,-./012345  !"#$%&'()*+,-./0123456789:;   !"#$%&'()*+,-./0123456789:   !"#$%&'()*+,-./0123456789:;<=   !"#$%&'()*+ ,-. /01 23 4567 8  !"#$%&'()*+,-./01234567  !"#$%&'()*+,-./012345  !"#$%&'()*+,-./0123456789:  !"#$%&'()*+,-!!./012!345!6789:;<   !"#$%&'()*+,-./01234567   !"#$%&'()*+,-./01234567     !"#$%& '()*+, -./0123 4 5678  !"#$%&'()*+,-./012  !"#$%&'()*+,-./0123  !"#$%&'()*+,-./0123456  !"#$%&'()*+,-./012345678    !"#$%&'()*+,-./01234567  !"#$%&'()*+,-./01234567  !"#$%&'()*+,-./0123   !"#$%&'()*+,-./0123456   !"#$%&'()*+,-./01234567  !"#$%&'()*+,-./01   !"#$%&'()*+,-./012345     !"#$%&'() *+,-./0123456789:;  !"#$%&'()*+,-./0123456789:;<  !"#$%&'()*+,-./0123456   !"#$%&'()*+,- ./ 0123456789:;   !"#$%&'()*+,-./012345678  !"#$%&'()*+,-./0123456789:;<=   !"#$%&'()*+,-./012   !"#$%&'()*+,-./01234567   !"#$%&'()*+,-./0123456     !"#$%&'()* +,-./0 12 34567 89  !"#$%&'()*+,-./01234  !"#$%&'()*+,-./012345   !"#$%&'()*+,-./0123456789   !"#$%&'()*+,-./012345  !"#$%&'()*+,-./0123456  !"#$%&'()*+,-./012345  !"#$%&'()*+,-./01234    !"#$%&'()*+,-./012   !"#$%&'()*+,-./012345   !"#$%&'()*+,-./01234567  !"#$%&'()*+,-./0123456  !"#$%&'()*+,-./0123456789:;  !"#$%&'()*+,-./012345678  !"#$%&'()*+,-./0123456  !"#$%&'()*+,-./01234567    !"#$%&'()*+,-./012  !"#$%&'()*+,-./012345678       !"#$%&'()* +, -./01234567  !"#$%&'()*+,-./012345678  !"#$%&'()*+,-./0123456789:;  !"#$%&'()*+,-./012345  !"#$%&'()*+,-./0123456789:  !"#$%&'()*+,-./012345  !"#$%&'()*+,-./0123456789:  !"#$%&'()*+,-./012345678   ! "#$ %&'()*+,-. /012 34 56789  !"#$%&'()*+,-./0123456789:;<  !"#$%&'()*+,-./012345678  !"#$%&'()*+,-./01234567  !"#$%&'()*+,-./0123456789:  !"#$%&'()*+,-./0123456789:;<=>  !"#$%&'()*+,-./012345678     !" #$%&'()*+,-./012345 6   !"#$%&'()*+,-./01234567   !"#$%&'()*+,-./01234567   !"#$%&'()*+,-./012345678   !"#$%&'()*+,-./012     ! "#$%&'()*+ ,- ./012 34567  !"#$%&'()*+,-./01234  !"#$%&'()*+,-./0123456  !"#$%&'()*+,-./012345678  !"#$%&'()*+,-./0123456789  !"#$%&'()*+,-./012  !"#$%&'()*+,-./0123456789      !"#$%&'()*+,-./0123456789:;<  !"#$%&'()*+,-./012345678  !"#$%&'()*+,-./0123456789:;<=  !"#$%&'()*+,-./012345678  !"#$%&'()*+,-./01234567  !"#$%&'()*+,-./0123456  !"#$%&'()*+,-./0123456789  !"#$%&'()*+,-./012345678  !"#$%&'()*+,-./0123456789:;<=     !"#$%&'()*+,-./01234 5 6789:  !"#$%&'()*+,-./0123456  !"#$%&'()*+,-./0123456789:;<=   !"#$%&'()*+,-./01234567   !"#$%&'()*+,-./0123456789:  !"#$%&'()*+,-./   !"#$%&'()*+,-./01  !"#$%&'()*+,-./0123  !"#$%&'()*+,-./01234567  !"#$%&'()*+,-./012345678     !"#$%&'()* +,-./012345678 9:;  !"#$%&'()*+,-./01234567  !"#$%&'()*+,-./0123456789:;   !"# $ %&'()*+,-./01 23456789:;<     !"#$%& '()*+,- ./0123456789  !"#$%&'()*+,-./0123456789:;<  !"#$%&'()*+,-./0123456789:;<  !"#$%&'()*+,-./0123456789:;<   !"#$%&'()*+,-./0123456  !"#$%&'()*+,-./01234567  !"#$%&'$()$*+,-.$/0$123456789:;<  !"#$%&'()*+,-./0123456789:;<=   !"#$%&'()*+,-./01234567  !"#$%&'()*+,-./0123456789:  !"#$%&'()*+,-./0123456789  !"#$%&'()*+,-./0123456789   !"#$%&'()*+,-./01234  !"# $ %&'( )*+ ,-. /0123456789:;  !"#$%&'()*+,-./0123   !"#$%&'()*+, - ./01 2345 6789:     !"#$%&'()*+,-./012345678    !"#$% &'() *+, -./ 01 23456   !"#$%&'()*+,-./012345  !"#$%&'()*+,-./0123456  !"#$%&'()*+,-./0123456789:  !"#$%&'()*+,-./0123456789   !"#$%&'()*+,-./0123456789   !"#$%&'()*+,-./01234567  !"#$%&'()*+,-./0123456789:;  !"#$%&'()*+,-./0123456789:;<  !"#$%&'()*+,-./0123456789:   !"#$% &'()*+,-./0123456 78 9:;<  !"#$%&'()*+,-./012345678    !"#$%&'()*+,-./0123   !"#$%&'()*+,-./0123456789  !"#$%&'()*+,-./0123  !"#$%&'()*+,-./0123456  !"#$%&'()*+,-./0123456789:;<  !"#$%&'()*+,-./0123456789  !"#$%&'()*+,-./012345678   !"#$%&'()*+,-./0   !"#$%&'()*+,-./012345  !"#$%&'()*+,-./0123  !"#$%&'()*+,-./01234   !"#$%&'()*+,-./012345678  !"#$%&'()*+,-./012345   !"#$%&'()*+,-./0123456789  !"#$%&'()*+,-./01   !"#$%&'()*+,-./0123456  !"#$%&'()*+,-./0123456789    !"#$%&'()*+,-./012  !"#$%&'()*+,-./012345678   ! "#$%&'()*+, -./01 234567 89:  !"#$%&'()*+,-./0  !"#$%&'()*+,-./01  !"#$%&'()*+,-./0123  !"#$%&'()*+,-./012345678   !"#$%&'()*+,-./0123  !"#$%&'()*+,-./012345678  !"#$%&'()*+,-./01234  !"#$%&'()*+,-./0123   !"#$%&'()*+,-./01234567  !"#$%&'()*+,-./012345   !"#$%&'()*+,-./012345  !"#$%&'()*+,-./01234567  !"#$%&'()*+,-./0123456  !"#$$%$&'($)*$+,-./0$12$3456789:     ! "#$%&' ()*+,-. /01 23456 7   !"#$%&'()*+,-./0123456789:  !"#$%&'()*+,-./0123456789  !"#$%&'()*+,-./0123456789:  !"#$%&'()*+,-./0123456789:;<=  !"#$%&'()*+,-./0123456789  !"#$%&'()*+,%-./012345678%9:;<=>    !"#$%&'()*+,-./0123456789 :;<  !"#$%&'()*+,-./0123456789:;<  !"#$%&'()*+,-./0123456789:  !"#$%&'()*+,-./0123456789    !"#$%&' ( )*+, -./0123 45678   !"#$%&'()*+,-./   !"#$%&'()*+,-./01234    !"#$%&'()* +,-./012 3456789    !"#$%&'()*+,-./0123456  !"#$%&'()*+,-./0123456  !"#$%&'()*+,-./01234567      !"#$%&' ()*+ ,-. /012345 67  !"#$%&'()*+,-./0123456789:;  !"#$%&'()*+,-./012345678   !"#$%&'()*+,-./0123456789:   !"#$%&'()*+,-./0123456789:;<      !"#$%&'() * +,-./01234567 8  !"#$%&'()*+,-./0123456789:  !"#$%&'()*+,-./0123456789:;  !"#$%&'()*+,-./0123456789:;<=  !"#$%&'()*+,-./012345678  !"#$%&'()*+,-./0123456789:;<=  !"#$%&'()*+,-./01234567  !"#$%&'()*+,-./0123456789:;  !"#$%&'()*+,-./0123456789:  !"#$%&'()*+,-./0123456789:;<  !"#$%&'()*+,-./0123456789:;    !"#$ %&'()*+,-./ 0123456789  !"#$%&'()*+,-./012345678  !"#$%&'()*+,-./012345   !"#$%&'()*+,-./012345678  !"#$%&'()*+,-./012345678  !"#$%&'()*+,-./0123456   !"#$%&'()*+,-./0123456789:;<=   !"#$%&'()*+,-./012345678  !"#$%&'()*+,-./0123456789  !"#$%&'()*+,-./0123456789:;<   !"#$%&'()*+,-./012345   !"#$%&'()*+,-./0123456     !"#$%& '( )*+,-./0123456789:   !"#$%&'()*+,-./012345678   !"#$%&'()*+,-./01  !"#$%&'()*+,-./012345678   !"#$%&'()*+,-./  !"#$%&'()*+,-./01234   !"#$%&'()*+,-./0123456789:;  !"#$%&'()*+,-./0123456789    !"#$%&'()*+,-./01234567  !"#$%&'()*+,-./0123456789:;<=>   !"#$%&'()*+,-./01234567 89:;<=>  !"#$%&'()*+,-./012   !"#$%&'()*+,-./0123456789:    !"#$%&'()*+,-./0123456789  !"#$%&'()*+,-./0123456789:;<=  !"#$%&'()*+,-./012345678  !"#$%&'()*+,-./0123   !"# $%&'()* +,-./012 3456789:;  !"#$%&'()*+,-./012 3456 789 :;<=  !"#$%&'()*+,-./0123456789:;  !"#$%&'()*+,-./0123456  !"#$%&'()*+,-./01234567  !"#$%&'()*+,-./0123456  !"#$%&'()*&+,-./0123456789:;<=>?   !"#$%&'()*+,-./012345678  !"#$%&'()*+,-./0123456789:;  !"#$%&'()*+,-./01234567  !"#$%&'()*+,-./012345678       !"# $ % &'()*+,-. /012 345   !"#$%&'()*+,-./012345678   !"# $%&'()*+,-./01234 5678 9:  !"#$%&'()*+,-./0123456789:;    !" #$%&'()*+,-./0123456789:   !"#$%&'()*+,-./0123456789:;       !"#$%&'() *+,-./01234 5678  !"#$%&'()*+,-./0123456789  !"#$%&'()*+,-./0123456789  !"#$%&'()*+,-./0123456789:;<   !"#$%&'()*+,-./0123456789   !"#$%&'()* +,-./01234 56789 : ;  !"#$%&'()*+,-./012345678  !"#$%&'()*+,-./012345678  !"#$%&'()*+,-./0123456789  !"#$%&'()*+,-./0123456789:;<=  !"#$%&'()*+,-./0123456789:  !"#$%&'()*+,-./0123456789:;<   !"#$%&'()*+,-./0123456  !"#$%&'()*+,-./012345678   !"#$%&'()*+,-./012345  !"#$%&'()*+,-./0123456  !"#$%&'()*+,-./0123456789   !"#$%&'()*+,-./012345678  !"#$%&'()*+,-./0123456789     !"#$%&'()*+,-./0123 4567 89:     !"#$%&'()*+,-./01234567    !"#$ % &'()*+ ,-./ 012345 678    !"# $%&'() *+,- ./ 0123 456   !" #$%& '()*+, -./0 123 456   !"#$%&'()*+,-./0123456789:;      !"#$%& '()* +,-. /012345678  !"#$%&'()*+,-./012    !"#$%&'()*+,-./01234567  !"#$%&'()*+,-./012345    !"#$%&'()*+,-./0123   !"#$%&'()*+,-./0123456789:  !"#$%&'()*+,-./0123456789:;<   !"#$%&'()*+,-./0123456789:;    !"#$%&'()*+,-./01234   !"#$%&'()*+,-./0123  !"#$%&'()*+,-./012345  !"#$%&'()*+,-./012    !"#$%&'()*+,-./    !"#$%&'()*+,-./  !"#$%&'()*+,-./01234  !"#$%&'()*+,-./012   !"#$%&'()*+,-./  !"#$%&'()*+,-./     !"#$%&'()*+,-./012  !"#$%&'()*+,-./0123456789:;  !"#$%&'()*+,-./0123456789:;  !"#$%&'!()!*+,-./!0123456789:;<=   !"# $% &'()*+ , -./ 012345 678  !"#$%&'()*+,-  !"#$%&'()*+,-./0123456789:;<=   !"#$%&'()*+,-./0123456789:   !"#$%&'()*+,-./0123456  !"#$%&'()*+,-)./012)3456789:));<    !"#$%%%%%%%%%%%%%%%%%%%%%%%%%%%%                             !"#       !"#$%&'()*+,-./0123456789:;<=>  !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!    jcodings-1.0.58/resources/tables/Transcoder_Big5_WordArray.bin000066400000000000000000015253301433325321700243430ustar00rootroot00000000000000    "$'),.1368;=@BEGJLOQTVY[^`cehjmortwy|~ĜɜΜӜ؜  "$'),.1368;=@BEGJLOQTVY[^`cehjmortwy|~ĔɔΔӔؔݔCݜ ¡XӡPD ѡҡ8 š X DEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijL߀kl mnopqrs,P`` VXLKEx 4 JKv ¢   Aԡۡ<P ܡڡݡء١~ w xz{|}utsrq ~ZD bcdefghiponmlkjvy (  \ LtPH Tl@BC qrmnuvyzijEefâĢŢƢǢȢɢʢˢ tuvwxyz{|}~ T  T UVPQRT  WSO 4LP,P X@B CEVTWUFOMBA@CèXPcYDd \| @D[G\EGFĨAAE^]ŨK  öFƨGH_QǨȨE`ɨʨFGH xR TSJKLMIPjfiQahNOHeg " fBgD[`h d dG]Cb^ZeEH@FcAi\_aبШ˨ըΨ֨ި٨ۨϨ XԨӨר ҨͨܨݨڨѨ̨VJIQ]K 8YPX T[NWMURZO\SLH׭ѭ֭ĭͭڭ *PpP0 lέ ǭܭӭ̭˭ϭ[ƭխԭʭɭҭí­Эŭ٭ۭحȭ cW \bUYRVgQfXSO]PNZ`a[^M_dLTe ȳ ^Wų_UXijYdz]SRɳʳƳ˳Q\ZTóVʶĶͶƶǶŶ˶̶ɶ 2H ȶζ t vwux_lkI a SRJIKߨ^YZ°\[`]^JK@Lݭ  NTUAj`_ðUaޭ߭VBMNk:< ha@LZİͳBYWX|MN b¤ZkFDEGClmnPOSQR8 chdgfebѳŰikjlưγϳгжѶ϶ABZ @ABDCO\[HUVTWopBlk ijǰnʰmɰȰԳӳҳҶնֶԶӶCDEyUcäVĤŤ ]^Iqm̰˰cbPƤ_ͰCl`KJXo׶EǤаΰϰQ d͢ʤɤȤcbmnճRˤedrWgfLMsYZo\ D̤tuppdֳeFFXhJ ѰSeΤͤϤqOfjytonuslzmixwvkrq{pt SYU[XNQTPWZORV\~{g|[]up}_ahxtv\mvsdnowljkq^rfc zbei`yOPIKMLEADIRC FHQMSJGB@NHKxt}rCOyEBwJ|LRs~{@FGzv uDND@BCAC@ FB@GEDAw߰|۰v{zs ְٰ~Ӱڰtݰux}ްܰװұذyհ԰qrj׳ڳuxسq޳ n۳v{ofsmyݳ߳ܳzlrthwٳgipZ0 ޶ܶ߶ڶݶض۶_ٶ͹ȹUQK¹TNP SĹ˹ŹIƹǹL̹JOùHɹMRʹGMGDGSTJBLRFIHHCEKA kONP@EBACD@QF p{}~ z|P`VQAY@XWZb$ monI}|_^]ywzxT HIEF|ϹιIHGkgYnobfdcea`h} {~|Y[Z@XWV\A( UTZX^UY[]WVQRS\PSRWNQPTj XGJOUIJVMHL0 K}K~ ]йcչ_fW׹ѹ\0U[dҹ ֹZ`eVԹ^bhXaӹgYYKWVMRNQ\[JPZOLXMOJLrX NþP¾IKSRabcB[hФ_عiS  ZB`YLi~pgh]ڹ۹ٹjѤӤҤ[Ԥqij aC_`^ZabMNOݹܹj]ľklon8@qpmk goOHpSDKfEdLPczQJ MriTRnlIkGFjhqmeNogcsblpVvdfmqurknhëjite« \b[`PU_\aQ[TRcSWXZY]^d@ CDBA@B@ GCADEB@CD@FAA BEnzpvkyx|u޹tm߹{orwqlsUaXWZ\_VT ][Y_^c^`b`WVUXQRZSž\[TYƾT\\ ]ClmnդrssUutVī]eEGF}Ǿ^pH  rsvtuwWXvxzw{yȫūǫɫƫfwhgc_`bdafeJ I HGKFIKHJHIJ~fged]Ⱦd_ox l ʫigNMLLMɾp\֤ty|KqפNLrؤu , Y~Z}Ϋxͫ˫̫jhkij^PQOhiaK٤swvzP  ħ§çhb]ec\ilg`fad[_k^j  }{yЫ|zϫ~onlknposqprmlm 0qr SRTXAZV^[UCWB\]YD@Q  ROOPSVNPUTCRDMQX egkhcbljjmdikfaf`e^hdic_gjb, rDE`rqt{_uŧtWvwxڤѫSy] x|ƧnmoҫԫӫtsvubFac`UEV WTZ\E[YXqompnlmklnnz~}FۤիX`$y zȧɧǧ֫׫yuwwxxvGJKHgfdeIh Z[\]_aHGY`^psrtqtuossqprofFGUʧث{ܤ ˧٫|I}ݤޤ̧qrspګzzyiLjM]&pb uvʾtstkJUΧͧ۫{mCnl^vLϧЧwvhu ݫܫޫ߫}|{OorpNuqPtsa_`KdLcwxwu@HI ߤ{ҧԧӧѧxyا֧էק|x@40Tlx8(h`(P8| T   d $  | ( $ht$., ~©éȩƩ|ͩɩ{ʩ˩ǩ̩zĩ}ũp8 ~}|~v SxQRywzU^d|e`V~TbeI c]a{dYbWX[_\fcZ}ko@QmDqeFSilGHN6`sT JOC^UrAP]pNMtEjBKMRgLPh\phlnk[j_Z@x(q XimOfgAWYVo}GF|ECDzn{HyBz ~y~ξx̾xv}w;|{˾zо~Ѿ |y{ӾҾ}ϾVgjihaJbAt>d |ڧ٧ϩΩur`atvuIԾWѩЩҩ vQ~}ߧөާ ۧݧܧܩ٩ש  ة֩ԩߩթکݩީ۩A@CB FTE Df}  î® g˱ʱyurw̱ɱ{j  ȱi s±hxqDZtƱRoñxnl~ıw|pűmzvTSkd! !xz jYgw}kn|\ml~Uyi_phqfec]VW{yXox`[a^!N"@ p|liz{bknojd}~ehfSmgc!# QLKObRTNPU!# JZ¼Müؾپ߾"$ ־ݾ۾վܾ׾޾ھYX^\]Z"V%Pk [BEFDGlCNdMLKceurF"& GĮŮӱϱֱձαѱԱбvͱuxswtqVļżƼ"&H yƮرױz{rWHٱ|s_I#' ǮȮ۱ܱݱڱ}~YXJIO^J#^(L @PMSKNQLOR#) Юɮ̮Ϯʮήˮͮ߱ޱ#) yvwu{xtz\Z[ȼǼʼɼ$$*p `nKmQRfPTѮҰ$f+$̳ |BAҮӮԮ´zag$+ CGBE@AA@FDWCMNFXHSIVQO$, JPDRUELTGK[\iVLbJ[EeRA%,-TDQa`FX _`cZKSfYamVXCjc]@lgIkPHd\T^bGZYO_UWh]NMB^WU%n- ߮ծݮ֮ڮ%.ۮخ ׮ٮܮ%/l ޮ&40 ִѴҴδĴǴƴ״ɴŴд̴˴ϴʴʹôٴ&v0 ȴӴմԴ&1 ~ش&20 JH^FX}_B]GUd][@ZoQamI^KYgDkaMCWh`eSfEPLN'<3 `_nObTcljAVibR\ͼؼռѼ'~3μּ ׼ԼټӼмϼ̼Ҽ˼'4p E(5( AHIDJ@GCFBchibfe(D5 gdQNWVTOrPqSpXRMoLVUUhYZTXSW(6 vVYd۴ܴڴ(74 pceqdۼڼKjYwBZ[nk\) 7 eofp޴ݴfghܼLlZ_qgߴ)L8 ijݼ޼`CHrhsijBAC@@AAB@k)9\ M[¥]a~IJ^tklDBråƥ):ťĥD @ŦƦ¦ĦEæ[YLQSLMUROQVZXZKM\TW*:EG^UNJYVHICOP[]PN S\WR]FTKXDjzqKbeBmovhfgu*T;GpnsJ uycIMO@lk}rux|AF~wi_d`N{taL*b \ecITAG`FQCiPKKX]eRPG[UGDg+\> dXcNOIE@QYBD^F\SHFJhb_]faR`AEWVTLKC+?d MAZIMDJCUVH+@X DBSKQWAGEBCOLT@FGFEPNR,"A @a`F_IJǷh·^CȷRHKcjbW̷˷ŷiULYeͷTMķ÷PZd,dAGQ[ɷNESgVlXfƷOʷD ]\}nwmqsu,BS}o u~||vtzwxz~pyx{tsr{y߼,C< vDNMYKOFRTC^W[`UILH_aV\-*D JEAZB@XQP]GI@AHCOBDFEDJGF-lDEB@ ANCQSYWZRVU[TXPqo-EX \L  !p"8# #$%H& &'(D()*h++,-L-./d0012(234h5 567,789T::;>?\@P@ABxC4DDEFl.Ft pmnsrx_ey\vsgwt^abcf]udh`]j`kh_\^bedg[ic-Gfia xyWelǦA^_b_`a.2H\ XZURTVSPWQY.tI wxyPLnv{QlrkuqMOzjmst|pNmNPLXJWiH[RlS.IV ZOTjkYMI[QUKHIeOYbXL`^_Jc\ZK]aMd.JL pwyڷkҷz׷η}m~lܷxϷԷqٷ|ovrnѷطַӷ۷зuշN{st/:J gdpjlfnmkqhocebriJQUSKI/|KLMHUVGVQOLPN RRMNOPKTSWXT\b`^a]_wtuv/LL lmzkji{ljkyRݷnb0M }fP޷|gɦBȦedc`[~S]^o\_0BMRp QkjhilstYZr}qpnolǥCDfba0N|egcfgd _]deab\^c`XWUTVg0O4 bfenyhcmtsadurq`ipwTvsVuoqtrUxS߷1O vu~}{zwxy|_\]W[a`^decyx~mnm1JPzȥYvjɥ Eljkhhimkgjfilh¬Ŭ1QlĬ ì_]^Z\xmklstp{u1R,ro ynwzqy[xwv|~`Z[abX}{z_|Y^\]W2R @b2RSA ifegfZcX\[dhYmzjhknlgBEu@oFD{2TLACGv tsnʥn}]{˥o`~2U  ºi^_ropqIH|w̥ƬͥcdΥϥFjiǬХѥҥӥklnmrp3Uq ˬɬʬȬ`dcba{zfeB3ZVj s|ԥsúoptϬЬͬά̬hinlkje3W m fg|~}kjhlmgi3W ǺƺźȺECHIFGĺDlksmro`qabpn4 X twuvMN}O~LPJxoKp~}ѬnoեʦG4bYH qmҬӬԬoqpJxQqp֥uprKtRrץ4Y ׬ج֬լqrssɺʺLducySsإnxwvy۬ڬ߬ެ4Z ٬ܬݬuvwt5([T tCκFDEAB@̺ͺ5j\ ˺ NQOMP}~vzywfgex{|h@{A|z~}U5\ T{yztwuvf٥ڥoxuGB|xۥz|~}{5] |zy}~{60^D vwxNQ6r^ MLHOPJKкԺѺӺIҺTXV6_ ϺSURYWjlikFECDV6`< GZW[]\XY~}z}yq{|~rtsܥr78`ª RS7za TA׺պֺCB@mHI_^Vݥr7btqp Īê7c8} |z{yAZX@W\[YIHDغGFٺ^_[]Z8@c\ pErqnoJ`ޥHsƪŪ@8d| ~D]^CBJۺںKLa`sK8e( uߥAEܺMݺv˦Ǫ9eBC @BDGEFCHAƲòDzŲ²IJȲ9Hf` aPSGLFcJHbONKMIR_Q9g ]XNPUTWRQߺSY[VOi޺\bce9g`h dfgvjtxQyw{zON:hX LPMucagedjkhibfl:Pi xwyXYm~̦EFDG:iHI IOMKLNJɲ˲ʲVdTeUfa^`_:j ka|}WSXTVRUz{A@ͦtȪ;k$LJKZǯSYïRXV¯įUTȯůɯƯQPW ϲֲӲٲزԲвѲ;XkҲײͲղ̲ lβh]_ae[;lYj `d\XWbZ^kifgcrjxtxeubwfvpcqs;mthgd limynokpyurvltswqnzrm{o<n< ~_Yia]dg\e`Zh<`nc^b[f ntwovqmsurp~}<o B@BAl<p Φoʯڲ=&q  jCIɪuM`[_]˯^\@ijnohkgm@pz|}=hq8 DϦ˪ʪONb̯aܲ۲BCAsmlnrq~yxЦP=qeίdc ͯݲ޲߲Dop~CAB{|}kz{l=rHTIIJDJKLDMMNtO,OPQdR$RSTDUUVxWWX|Y@YZ[L\\]^<^_x`4`ablc0cdte efXg ghPiijxkklmln4nopqPq0qrs.sѦ Ҧ̪ϯQӦARS@BԦTѯfӯЯүA@qզsCUhԯgկ>.t CBDFGEtuEDpomnq|֦>pul wµvFצئ٦vwwtvyu{zxxѪϪΪӪժҪ֪Ъ|Ԫͪ>u [GH]WZcaIgLd\YIbDeV_FK`OMXJ^NEfگد֯jޯۯlݯkinH>vomׯ ٯܯ߯NEGHPLJMQFOKIȵQOʵ?6wd JɵNKŵ˵PǵMGƵL̵ĵõwu{sxr{}v~|~yxy}͵|tzL?xwH MJKIADC@Btxzw?xv usry}~ECDڦתRN{ۦSܦPTUVOݦتh?ylp WP|ަ٪RεQEߦϵRiQrqWTVSUXYZ@>z< SJFIKHGF}}X[AJKMN@zL {|zy}~~jܪ۪ߪݪڪު@{ b\daqt]kV`cewUYWRo~svf}^xuy|m{lA|p_ZSXTgn[ zAv}~x|tsr\zAF}<{u wy^`ey]houA} bi@wrnj\aYfcsdzlkZ_pvA[gmxqtlA~`׵}յhiwsߵ t]upnzԵrkdocaеjصݵٵ~ڵvfҵ^eqB D mѵ|xֵܵ޵ӵyg{b_UBN4 ۵B `X[YZ]aUB^ WVTc\b_stgfbvu_c]pawZXdniC\O m[RU{\SQNe`hx|WkoTyLrVjP^Yl}zqMICV@C EAGLFUOFJTQDHBVSPWMKNS@ERDACMOQIPBRJGU HTKLVCN~C D JKIGHLD^p EFGOh@B|{~XZYWikjD4 AFCHGDEBLKHF~}DEGIDM JE$¸øĸ jeghmilfdEft ½kdEP akge`oĿ\hi_^lb]cn[mj¿ÿfY]Zag\pj_kfm^`nXlE( dch[bieoF, BEACDQON@PFMZnFn GlNŸýĽſmIJNMFKL PUTRSOQF\ ͸ϸǸθʸȸɸ˸Ƹ̸tBAv@nprqsG4  oƽʽŽǽȽɽup|ʿwyȿquxƿɿ{stzrvǿrqwstGv uxvIKHJRHIKJPG nWVиCFED̿˿y{zTSGh[ oCA@BѸDIGH}|}LULH< qrpTRQXPYVSWUO_Y^`Z[X]\DFEIH~ CB@GAH߸ڸոָҸ޸׸ܸӸԸPMEJQٸGHX OKNLݸFظLx{NM}ϽOKy۸|z~wJֽҽٽڽ˽սI  Խνͽӽнؽ̽׽۽ҿ~ͿӿϿٿԿпڿۿؿѽοܿտIDѿֿ׿ ~IA O@BC@NMPQAV[I XWZYCB@A@MNgmJ ` RPJL DDZaTSܽݽvbHVUWQRݿ޽޿FE\[JI YZX߿Gst]^hfcgedJLQSRUOKMTJPN [TSU߽K HIJRBS\EBKTh ji\]vu_KX WV_b`ae^fcdVLNKMTowlkK$ `[^Yl]\_Zhonpmrikgjqs[aYLb X]c`_^W\ZAC@EBFDL\ EA@CBDROSQPTL CEVDUa`^]bcF_\QPOpn`LX UyxcabmnCAEFLHJBIKDGb@acuM"wv{ xtyz|gfdeMNIJKLH@GMd FGHIXYWVZXYWFdeHGM d@|GdA[M( |~{}zjgnilN*puduvw\wxydz4z{|}4}~<,Th,lH T`PXP`P h.hekmf pzv~w|roq}uxty{sMeOgiNfjhGO~Nl( PEJCBMLKIN}DFHRCASDBQPOEN UoRSQTN qprlVWTnSO2hYXk\R[PZUm QRnqim»ljpkhoYHJVWUQGZTFIXKLM]Ot,\ [\Zfut@As_a]`o^psUTSsuƻûŻĻtrOa^_M`[\J K]LOPNR_Q^]HIOC]q oVqBxvzDywCB@CAmlP:jbqeovny uciwhxzkrswutfrvtsdgpaWYeZ\fP|t[ db^c`Xg]_xǻz̻лP4Ȼ ɻ~ѻͻ|˻ʻyλ{wvϻ}RZUgPOVQeTqcdNXtysowuhb}W~ xmkfn{jzSv|rlQpYiDAQBC B@@CEEBADQ QL `YTc[eU_aWX]bjgk^Zhj\dfiSVRs cqalhrbetmpid`okugnBf@RJ DACafOhIdjNJK`gMeL_cb^Ri mplnoijgkhKMLNJDSRT_U^VruthsrpqwR4 S DxvSR  {EF}zy|{~{hһջ׻ֻӻԻ[\MKIJFFNHLS0 GnlmwxEGFPmlkS XVYW¨Tp @EF~|}IHKJG}TZ |~jkiػڻٻGHOIoAGLTnomۻl ܻPJptqusyBsprqT@ݻ ]^_`QNKPSLROMwvx~}z{|HISnQRoqU  EGFWCtQRDaSMuv޻Ub߻ cbdVUTTA@}{~|y@zJKpU OPHiCBqrWDXALMTU,QN z|wx{yge[fYZU[YXVZWV( EJFIHGDBECF@AQNOPrVUtsI`XVj hGBV<uRS tsuHO~}V i\kjla_^]`\K^]_NLMRKQTSPOJHIW0  CDXWUTYvwWvVwaYWr PU`WVLW< nqsrtpmocfdcihgbbaedZ^[]\Y_b`a@W XcMEF`^]ca\Z[_bx~y[X8Z}|Y{Xz }~{x|yzRSJvjkzXzX luejmfdkXN fde\bIhvwnqpoghfeXD gOPGgihTUVKcxiJ{rY@ zyiSRQ^]L|{}xvwYs ytru|j{z~jmltosqpnkCBDAuY`X WUTJKIHloVZ msqkvjrnut`_ZHp Z\_[`YW]X^MZ\[yxwzstZ$ Z }~okplmnz{~|vy}EF[$w YZ[MxOPN[P L}{|x~zwyabd[Č cindgkreosjcmlqphbfNOa[l ]^`_ba|{x|}\T PQ\X GQSRecT³\ tdHu¶rqLJKI\fvwd}u\ǘ xRe~]gy^|{zM]X} fN~hijTSgjih]` set]`$l,xDx,P(h8 x$44P<XĄdLƼǐP$],^&` ^H4.ˀ@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnop.̌qrstuvwxyz{|}~.͘@ABCDEFGHIJKLMNOPQRS.ΤTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~.ϰ.м ^ J^ JWY[_`cdghklops_twx{| ơǡʡˡȡɡ\MNOQRST}~̡͡ΡޡߡBLMN_P` ICH]^ϡAСDGFաס֡HIϢТѢҢӢԢբ֢עآ٢ڢۢܢݢޢߢ@ġ_ @ABCaUb_ FGáD`ԄPx̄͐ΜϨд X|Ԝ`XԤp``0HPx$Xhpt0Gxt $,` ppppppppppp  pppp p"%p'*p,/phhhhhhhhhh  hhhh h"%h  "$'),.1368;=@BEGJLOQTVY[^`cehjmortwy|~ĔɔΔӔؔݔ'*h,/h1a1 !FGD|Lca-R¡Xӡ23gPM1ob3ACEIDNOѡUYTsaceinoҡuytc4` ¡cZ4 VXwELKác4 ABXԡۡc5,d  [db5 ~ZD5 d68 d6T5$PH5p5x5 60 T6L6he(6p@BC qrmnuvyzijEefâĢŢƢǢȢɢʢˢʡej6 @GT|WUҥABѤaHe7D @GT|CKEQgWS]ҳNIǾʺe7ۦܦ S8@GT|CKEQgWS]ҳkkAuL`gWUkvǾʺ] f08<7<P78849,Pfr9@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~.9@.:L@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`ab.;Xcdefghijklmnopqrstuvwxyz{|}~.|.?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefgh.@ijklmnopqrstuvwxyz{|}~.A@ABCDEFGHIJK.BLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~.C.D@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmn.Eopqrstuvwxyz{|}~ŽÎĎŎƎǎȎɎʎˎ͎̎ΎώЎ.FюҎӎԎՎ֎׎؎َڎێ܎ݎގߎ@ABCDEFGHIJKLMNOPQ.GRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~.HÏďŏƏǏȏɏʏˏ̏͏ΏϏЏяҏӏԏՏ֏׏؏ُڏۏ܏ݏޏߏ.J@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrst.K uvwxyz{|}~ÐĐŐƐǐȐɐʐː̐͐ΐϐАѐҐӐԐՐ֐.Lאِؐڐېܐݐސߐ@ABCDEFGHIJKLMNOPQRSTUVW.M$XYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~.N0‘ÑđőƑǑȑɑʑˑ̑͑ΑϑБёґӑԑՑ֑בّؑڑۑܑݑޑߑ.O<@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz.PH{|}~’ÒĒŒƒǒȒɒʒ˒̒͒ΒϒВђҒӒԒՒ֒גْؒڒےܒ.QTݒޒߒ@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\].R`^_`abcdefghijklmnopqrstuvwxyz{|}~.Sl“ÓēœƓǓȓɓʓ˓͓̓ΓϓГѓғӓԓՓ֓דؓٓړۓܓݓޓߓ@.TxABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~.U”ÔĔŔƔǔȔɔʔ˔͔̔ΔϔДєҔӔԔՔ֔הؔٔڔ۔ܔݔޔߔ.V@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abc.Wdefghijklmnopqrstuvwxyz{|}~•Õĕŕ.XƕǕȕɕʕ˕͕̕ΕϕЕѕҕӕԕՕ֕וٕؕڕەܕݕޕߕ@ABCDEF.YGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~.Z–ÖĖŖƖǖȖɖʖ˖̖͖ΖϖЖіҖӖԖՖ֖זٖؖږۖܖݖޖߖ.[@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghi.\jklmnopqrstuvwxyz{|}~—×ėŗƗǗȗɗʗ˗.]̗͗ΗϗЗїҗӗԗ՗֗חؗٗڗۗܗݗޗߗ@ABCDEFGHIJKL.^MNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~._˜ØĘŘƘǘȘɘʘ˘̘͘ΘϘИјҘӘԘ՘֘טؘ٘ژۘܘݘޘߘ.a@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmno.bpqrstuvwxyz{|}~™ÙęřƙǙșəʙ˙̙͙ΙϙЙљ.c ҙәԙՙ֙יؙٙڙۙܙݙޙߙ@ABCDEFGHIJKLMNOPQR.d,STUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~.e8šÚĚŚƚǚȚɚʚ˚͚̚ΚϚКњҚӚԚ՚֚ךؚٚښۚܚݚޚߚ.fD@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstu.gPvwxyz{|}~›ÛěśƛǛțɛʛ˛̛͛ΛϛЛћқӛԛ՛֛כ.h\؛ٛڛۛܛݛޛߛ@ABCDEFGHIJKLMNOPQRSTUVWX.ihYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~.jtœÜĜŜƜǜȜɜʜ˜̜͜ΜϜМќҜӜԜ՜֜ל؜ٜڜۜܜݜޜߜ.k@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{.l|}~ÝĝŝƝǝȝɝʝ˝̝͝ΝϝНѝҝӝԝ՝֝ם؝ٝڝ۝ܝݝ.mޝߝ@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^.n_`abcdefghijklmnopqrstuvwxyz{|}~.ožÞĞŞƞǞȞɞʞ˞̞͞ΞϞОўҞӞԞ՞֞מ؞ٞڞ۞ܞݞޞߞ@A.pBCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~.qŸßğşƟǟȟɟʟ˟̟͟ΟϟПџҟӟԟ՟֟ן؟ٟڟ۟ܟݟޟߟ.r@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcd.sefghijklmnopqrstuvwxyz{|}~ àĠŠƠ.tǠȠɠʠˠ̠͠ΠϠРѠҠӠԠՠ֠נؠ٠ڠ۠ܠݠޠߠ@ABCDEFG.uHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~.wÁāŁƁǁȁɁʁˁ́́΁ρЁсҁӁԁՁցׁ؁فځہ܁݁ށ߁.x@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghij.yklmnopqrstuvwxyz{|}~‚ÂĂłƂǂȂɂʂ˂̂.z(͂΂ςЂт҂ӂԂՂւׂ؂قڂۂ܂݂ނ߂@ABCDEFGHIJKLM.{4:D;P<\=h>t?@ABCDEFGHIKLMN(O4P@QLRXSdTpU|VWXYZ[\]^_ab cd$e0f<gHhTi`jlkxlmnopqrstuvxyz {,|8.|@NOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~.}LƒÃăŃƃǃȃɃʃ˃̃̓΃σЃу҃ӃԃՃփ׃؃كڃۃ܃݃ރ߃.~X@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnop.dqrstuvwxyz{|}~„ÄĄńƄDŽȄɄʄ˄̄̈́΄τЄф҄.pӄԄՄքׄ؄لڄۄ܄݄ބ߄@ABCDEFGHIJKLMNOPQRS.|TUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~.…ÅąŅƅDžȅɅʅ˅̅ͅ΅υЅх҅ӅԅՅօׅ؅مڅۅ܅݅ޅ߅.@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuv.wxyz{|}~†ÆĆņƆdžȆɆʆˆ̆͆ΆφІц҆ӆԆՆֆ׆؆.نچۆ܆݆ކ߆@ABCDEFGHIJKLMNOPQRSTUVWXY.Z[\]^_`abcdefghijklmnopqrstuvwxyz{|}~.‡ÇćŇƇLJȇɇʇˇ͇̇·χЇч҇ӇԇՇևׇ؇هڇۇ܇݇އ߇.@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|.}~ˆÈĈňƈLjȈɈʈˈ͈̈ΈψЈш҈ӈԈՈֈ׈؈وڈۈ܈݈ވ.߈@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_.`abcdefghijklmnopqrstuvwxyz{|}~.‰ÉĉʼnƉljȉɉʉˉ͉̉ΉωЉщ҉ӉԉՉ։׉؉ىډۉ܉݉މ߉@AB. CDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~.ŠÊĊŊƊNJȊɊʊˊ̊͊ΊϊЊъҊӊԊՊ֊׊؊يڊۊ܊݊ފߊ.$@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcde.0fghijklmnopqrstuvwxyz{|}~‹ËċŋƋNj.<ȋɋʋˋ̋͋΋ϋЋыҋӋԋՋ֋׋؋ًڋۋ܋݋ދߋ@ABCDEFGH.HIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~.TŒÌČŌƌnjȌɌʌˌ̌͌ΌόЌьҌӌԌՌ֌׌،ٌڌی܌݌ތߌ.`@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijk.llmnopqrstuvwxyz{|}~ÍčōƍǍȍɍʍˍ͍̍.x΍ύЍэҍӍԍՍ֍׍؍ٍڍۍ܍ݍލߍ.ZƷyt`irּO_TdöZ}PԩYԮT ӨNҳ۾rlcѦS|OLSwf׽b˧cUpSӼ\|ֲ\ǰئWٵּտv_K_cƼѰ٬HBYG }̽qy.fkfȮor[zROe~ҷ mpsCH|PGɱyO¬ܲasFҨcFdƮּ.RdswBhyȷ[dïۭ[_߫X߮vQOidzg ̸ΰķ[MZLO{ߥɲf׫ݩ}v}ɼJ ޽qֺtЦѽh}]bg8 ICH]^ϡAСDGFաס֡HIϢТѢҢӢԢբ֢עآ٢ڢۢܢݢޢߢe@fsġ.H@ABCaUb NgzT~P\ht(4@LXdp|̄͐ΜϨдP@XLԜg4X4Px4$Xhp6980Gxt $,}DgmnѢpqQrsuvQwxчz{Q|} QѤQhхQшQ j Q󑟂QQj(-ѥ /0Q12Ѭ45Q67Ѻ9:Q;<ѝ>?Q@AэCDQEFHIQJKMNQOPѭRSQTUѮWXQYZѻ\]Q^_ѪabQcdfgQhiklQmnѹpqQrsрuvQwxz{Q|}QѼQQQѻQѓQQQktQؑQݑQQ瑪 ѦQ쑴ѶQѝQQQQ Q   QQQѲQё!"Q#$т&'Q()Ѧ+,Qn]Ѧ_`QabѧdeQfgщijQklѕnoQpqыstQ uvѕxyQz{ѱ}~QQѹQQpD QѸQѡQсёѾQ֑ѥQۑQ ѭQ呦щQѤQѮQќQQQQ   Q ѹQQr0IJQKLѻNOQPQSTQ UVXYQZ[]^Q_`уbcQdeтghQijѷlmQnoqrQstѧvwQxy{|Q}~ѿQQђQtcQѧQőѳQʑѹQϑрQԑQّ QޑQ㑬Q葥QQ򑚇ѽQQѱQQ  Q  v2QѲQQуQ т"#Q$%'(Q)*ю,-Q./12Q34с67Q 89;ў@AQBCѩEFQGHJKQLMчOPQQRTUQVWѣYZQ[\xQ QQQQђQќQѨQѵQјQQѝQƑQˑQБQՑѝQڑѬQߑѵyxQ䑠хQэQѓQьQѠQQQ  Q  QѶQQQ !Ѡ#$Q%&()Q*+-.Q/0ю23Q4578Q9:љ<=Q>?ABQCDѠFGQ`xz{Q |}ѽQѹQQQQQѺQѸQѸQчQѺQQѢQѰQ‘эQǑ}"Q̑іQёQ֑ьQۑџQуQ呐цQꑠQQQѭQѩ   Q    Q   Q   Q  ђ \ F G  I JQ K LѺ N OQ P Qџ S TQ U V X YQ Z [ ] ^Q _ `Ѣ b cQ d eх g hQ i j l mQ n o q rQ s t v wQ x yѠ { |Q } ~  Q  ѽ  Q  ѻ  Q Y Q   Q  Q Ѩ  Q  Q  ј  Q  Q  ѥ  Q ц  Q   Q т  Q Ñ Ѯ  Q ȑ  Q ͑ Ѵ  Q ґ ѫ  Q ב ё  Q ܑ  Q ѹ  Q  Q њ  QT  Q  ѭ  Q  ѡ  Q !Ѯ!!Q!!!!Q! ! т! ! Q!!!!Q!!ѥ!!Q!!!!Q!!! !!Q!"!#ш!%!&Q!'!(ѡ!*!+Q!,!-ѩT!/!0Q!1!2њ!4!5Q!6!7!9!:Q!;!<Ѫ!>!?Q!@!A!C!DQ!E!FѺ!H!IQ!J!K!M!NQ!O!P!R!SQ!T!UѠ!W!XQ!Y!Zў!\!]Q!^!_!a!bQ!c!d!f!gQ!h!i!k!lQ!m!n!Q!!!!Q!!!!Q!!!!Q!!ѽ!!Q!!Ѡ!!Q! !!!Q!!!!Q!đ!!!Q!ɑ!!!Q!Α!!!Q!ӑ!ѵ!!Q!ؑ!!!Q!ݑ!!!Q!!!!Q!!ђ!!Q!!!!Q!!!!Q!!!!Q!!ѥ!!Q""я""Q""Ѽ"" Q" " " "Q""""Q""""Q""""Q""і"!""Q"#"$T"VQ "W"XѪ"Z"[Q"\"]р"_"`Q"a"bѕ"d"eQ"f"gі"i"jQ"k"l"n"oQ"p"q"s"tQ"u"vџ"x"yQ"z"{Ѭ"}"~Q""Ѷ""Q""""Q""""Q""""Q""Ѥ""Q""і""Q""ѭ""Q""""Q""""Q""Ѣ""Q""""Q""""Q""""Q""""QѸ"""Q""""Q""ш##Q####Q ## # # Q# #ѐ##Q####Q####Q#### Q#!#"Ѣ#$#%Q#&#'ѹ#)#*Q#+#,#.#/Q#0#1#3#4Q#5#6#8#9Q#:#;ю#=#>Q#?#@Ѱ#B#CQ#D#Eѵ#G#HQ#I#Jї#L#MQ#N#Oѐ#Q#RQ#S##Q##њ##Q##ѐ##Q####Q##ш##Q##Ѧ##Q##Ѻ##Q### #Q####Q####Q####Q##ќ##Q##Ѯ##Q#Ñ#Ѻ##Q#ȑ#ѝ##Q#͑#ѭS֐$Q$$$$Q$$$  $ Q$ $ њ$$Q$$я$$Q$$Ѿ$$Q$$Ѿ@$MQ$N$Oь$Q $RQ$S$Tѽ$V$WQ$X$Yљ$[$\Q$]$^ћ$`$aQ$b$cѩ$e$fQ$g$h$j$kQ$l$m$o$pQ$q$r$t$uQ$v$wѐ$ytL ݔ  k ,t%k%lт%n  %ћ%%Q%ӑ%ф%%Q%ؑ%%%Q%ݑ%ш%%Q%%% %Q%%ћ%%Q%쑠%Ѫ%%Q%%%%Q%%%%Q%%%%Q&&ѳ&&Q&&Ѿ&& Q& & љ& &Q&&ѓ&&Q&&Ѵ&~0&H&Iч &K&LQ&M&Nѷ&P&QQ&R&SѮ&U&VQ&W&XѦ&Z&[Q&\&]ѓ&_&`Q&a&b&d&eQ&f&g&i&jQ&k&lѫ&n&oQ&p&qѲ&s&tQ&u&v&x&yQ&z&{&}&~Q&&Ѻ&&Q&&&&Q&a&&Q&&& &Q&‘&ѧ&&Q&Ǒ&і&&Q&̑&ѱ&&Q&ё&&&Q&֑&ѓ&&Q&ۑ&ѣ&&Q&&ї&&Q&呔&&&Q&ꑅ&ѵ&&Q&&&&Q&&ѧ&&Q&&&&Q&&''Q''ї''Q+'8ѡ':';Q'<'=Ѽ'?'@Q'A'Bѝ'D'EQ'F'G'I'JQ'K'Lќ'N'OQ'P'Qх'S'TQ'U'V'X'YQ'Z'[я']'^Q'_'`'b'cQ'd 'e'g'hQ'i'jѺ'l'mQ'n'oѓ'q'rQ's't'v'wQ'x'y'{'|Q'}'~я''Q''Ѻ'"''ѽ' 'Q''Ѩ''Q''''Q'ő'ѷ''Q'ʑ'ч''Q'ϑ'ц''Q'ԑ'''Q'ّ'ю''Q'ޑ'Ѣ''Q'㑞'ј''Q''Ѵ''Q'푗'Ѹ''Q'򑆦'ѝ''Q' l<(pXTLLLѰֈD݌x  "$'),.1368;=@BEGJLOQTVY[lehjmortwy|~ĔɔΔӔؔ( |dl ¡XӡP`YW ][fa_ѡjhomsqwuҡ{y&Vg Zl\nph ^tx Xir`vz|}~@ k.x p š @ABCDEFGHIJKLMNOPQRSTUVWXYZ\]^_`abcdefghijklmnopqrstu [6 cxe (P 8@ JK>X ¢| wx v F( @ ZD bcdefghiponmlkjvyD   N   TPt  8 <TlL`h@BC qrmnuvyzijEefâĢŢƢǢȢɢʢˢV @ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdef.Xghijklmnopqrstuvwxyz {|}~d P@ABCDFIJMOPQRTUy H ^ wߖ Չ͓ߛhډY ۉ]܉ڊ$ ܋ۗSf nȋ< KpݔӊT ے۔z, F~hhٟןn j\^pРf HEo\ޞ0 ޔe֕ڗ4\ E}XdVM[ǕYv WESxQl k›{, `K<L K~l digh z BD fݓR̋ mno  pd  (` t×ЊtȜxL D ZH}}Š x JъGڞQ  Şxk  T  Io~  y{ D D hL KSÍ\  ōʍ̍]  aR  "  Vd $ ֍ޠҗۍ 8 I d ƗY֖ŗח*  ߌIrkPl  ̝eDncڠSyj]ci  p Dj NJ׉Mݞ2 X dot | ØŘfnݗҒa˘]~̘i͘Θ b cGИ  јur֘: 8 | \٘ Zۘݘm pP\H@P,P 4L(T$Dd  < p     < `      0 \    < P t   0 T h   ]B MWߕÌ ه ƜJ~ D@ɔƇӔJ, FєNsX ·“H| KUN_Y `Rt UDˌV Y[ČEC ͕ɗP( ZD ƕ\ gp vQs@O  zdb  ~npS^\ z]ۇdb͗dL( ɎT|UzȖÙ֐jd vpKǎTQǙD אCG XߞY0 BΙϙr$ ɒHܗ ]̇E` yL8 ۏLz MzW ޙ Rg@  ޗ, ѕJD VIH` ەʼndUԖć|M HI}PG ؎ɐU XP ՐAZ\  —\@ `E` XcIX| knOF גuԓypx͑J  oj_A`O NU͞yWΝ0 ҌYsќ` IC& [ɞh XFª Vx{@B CEVTWUFOMBA@C֝OΉèğXԋPrcYDdF. @D[G\EGFĨA{ƋAE^]WŨKpЉωöFщ ƨGH_Q~ǨȨE`oɨʨFGHNjk҉ò@R TSϟJKLMIPjfiQahNOHegӉg sNOxfBgDԉҟ[`h6 dG]nCb^ZeEH@FcAi\_aبШ˨ըΨ֨ި٨ۨϨxԨӨרoҨ ͨܨݨڨѨ̨PWVJfIQ]։KĺxYPX T[NWMURZO\SLHޖ׭pѭn֭ĭͭlڭ8$Pt <Th\@Xx$<X|8PXt(X8p0> έ ؉ǭYܭӭ̭˭ϭ[ƭխԭʭɭҭí­Эŭ٭ۭحc@ȭŀcW \bUYRVgQsfXSO]PNZ`a[^M_dLTeȳ^W ų_ىUXijYVdz]SRɳʳƳ˳Q\ZTóVʶĶͶƶǶŶ˶̶qɶ ȶζrėFgi vwuhx_lkIƈ ha SRJIKߨQ^YZ°\[`o]^JqK@RLZݭ!D ݉NTUAj`_ðURSaޭ߭UV[B}hGMN~k " ha@߉LZTİͳzBYWXON"MN}b ¤ZkFDEGClm͟nPOSQRǐ#| chdgfebĒoѳŰikjlưγϳгжѶ϶$@ABZ @ABDCӛ՟O\[UHŒVUVTWop% lk ijܞqǰnʰmɰȰԳӳҳҶǒնֶԶӶCDEyUcäVĤŤV% L]^Iqm̰˰cbPƤ_ͰCl`KJXh}o׶EǤWаΰȘ&ϰQd͢ʤ ɤȤcbmXnճRˤaedrWgfLMsYZo'@ D̤tuppdֳezFFXh( ѰSeΤͤȐϤڒYZqOfjytonuslzmixwvkrq{pY^( SYU[XNQTPWZORV\~{ʝg|[]upm}_ahxtv\mDvsdunowljkq^ɠ)|rfc zbeiŇV`yOPyǚIKMLEADIR*lC FHQMSJGGB@NӟʚHKxt}rCOZyEBwJ|L$+0s~{@FGzv ]QuDԟNDy@BCACf,  FB@GEDXWAAw߰|۰v{zsʨ, ְٰ~ӰBڰtݰux}ްܰװұذyհN԰ܔڕjqrj׳ڳux-سq޳ Fn۳v{oFfsmyݳ߳ܳzlrthwٳgGiHޒpSڛ,.|~޶ܶ߶ڶݶCض ۶_ٶR͹ȹUQK¹Tn/\NP SĹ˹ŹIƹǹL̹JOùHɹMRНʹϝGMGDȝGSTJBLROFIHHCEK˰0PA kTOU֊N_P@EBACD@QFҚj1,{}~ ‘bz|`P^Ŋ`VQl~AY@XWTZ42  monŜI}|_^][ywz\[xWTeǘv2ZHIEF |ϹιIHGkgYnobfdcea`̌ԛ̸3}dv `{~|šsY[Zr@XWV̟\A4T UTZgX^UY[]W}VQRS\ÇoPSRWNQPAT<5 XGJJOUIJVMHLBg~5iK ȇ}l}K~6 eNnߙT{]йcչ_fW׹ѹ\7U[dҹ ֹZ`eVԹ^bhXawӹgYYKWVMRNQ\[oJPZOLX}~MOJLD8\ NþP¾IKxSRrabqcB[hФ\_tعiSΆ94 Z]މ^B`YLBi~pgh]h{ڹ۹ٹjѤӤҤ[Ԥq_`ij9 aC_`^ZabMNO͛ݹܹj]ľkӝlon :qpmk LRÕgoOHpSDKtfEdLPcL;lQJ MߗriTRnlIkGFjhqmeNogcsblpwVvdTŕfmqurknUhëjitώ @MrGCADsoEB@CD@FT>AA BEArnzpvkyx|u޹twm߹{orwqlxsUaXWZ\_VrTЖ? ][Y_^c^`b`WKVUXQRZSž\[TYuƾT@\ڐ ]gCߐTlmnդrssUutVaī]eEGFH}Ǿ^pArysv tuwgWXٌvxzw{ybcȫūǫɫƫfw}hgc_`bdasfeJ\BlIkHGKF IKHJHIJm~fged]Ⱦd_oxuўC8 ʫigNMLLMɾp\֤ty|]LKqɋפNLrؤuD Y~Z}ɟΫxͫ˫̫jhDkij^PQOhiaK٤swvz"D ħ§çdhMb]ec\ilg`fad[_k^jdE h}{yXЫ|zϫ~sonlknposHqprmtlmҦF\qr SRTXAZV^[UCWB\]YuDx@Q`G  RaOOPb@SVNPUTCRDMQԌ*G Qegkhcbljjmdikfeaf`e^hdic_gjbXflHTr DE`rqt{_uŧtWvwxڤΟѫSy]ӮI x|ƧunmoҫԫӫtsvubFac`UEJ@ViWT OZ\E[YXqoNmpnlmklnnz~}FۤիX2Jy zeȧɧǧz{֫׫yuwwxxvGJKHgfdeIjhtK Z[\]_aHGY`^SpsrtqtuossqprofFGUʧY@ثAC{ܤԶL ˧٫|aFbI}ݤޤ̧qrskpګzzyiLjML]M|b uvʾtsʋtkJzUΧQͧ۫{mCnl^vTLϧЧwv:N4ul ݫܫޫ߫}|{OorpNuqPtsaWa_`KdLcpwxwQu@|OHI|ߤˋ {ҧԧӧѧnxyا֧էקվO `!<""#t$8%%&x'8(()t*d+(,,-.t/T0H1$2234L55678T9,9:;d<@=8=>?@ABdC0DDEFTGGHIJ8JKLMtN,NOP.P ~©éȩƩ|ͩɩ{ʩ˩ǩ̩zĩa}ũfQ ~}|~zkvBRh SxQRkywܠhzU^dm|e`V~TbքS(eI c]a{dYbWXq[_\dfcZ}Кako@QmDqeFSilG[HNSsT JOC^UrAP@]pNMtEjBKMRgLPMh\phln~k[j_rZ@Tqv XimOfgAWYVo}GnF|ECDtzn{tHyBzqJUy~y |~ξx̾Pxyxݠv}w;|{˾zоuv~Ѿ׌Vt| y{ӾҾ}ϾwÐyVgjihaJbAtWl |ڧ٧ϩΩur`atvuIyԾWvѩЩX<ҩ vQ͋~}ZߧөRYާۧ zݧܧEuܩ٩שؔY ݇ةF֩ԩߩթکݩީ۩Q{A@CBZE D|֞f[}[|î® |g˱ʱyurw̱ɱ{jZ\0ȱi s±hxqDZtƱRoñxnl~ıw|pűmzvTSLkdٜ]zŏjYgw}kn|\ml~Uyi _phqfeÝc]VJW{yXox`[a^KM] p|liz{bknojd}~ehfSmgc ^ QLKObRTNPUƊb_ J[MZ¼Müxؾپ߾ڤ`l־ݾ۾վ ܾ׾޾EھVYX^\]Za8k [BECFDGlCNdMLKceuǝr΋F(b GĮŮӱϱֱձαѱԱбvͱuxswtqVļżƼjbHg ~yƮرױz{rWHٱ|s_I۬c ǮȮ۱ܱݱڱ}~YXJIO^Jd @ۓPMcSKNQLOՓR0e` Юɮ̮Ϯqʮήdˮͮ߱ޱؓӓvrf0 ybvwu{ѓxtzY\ZR[ȼSǼʼMɼrܴg P`nKmQRfیPTѮҰg̳| BA~ҮӮԮR´z܎ag8h PCGBE@AA@FDWʌCuMNFXHSIVQOzi JPDRUELTGKYM[\i^VLbJ[EeRA}ݼj`DQa`FX _`cZKSfYamVXGCjc]@lgIkPHd\T^bGZYO_UWh]NMBP^WhUk }i OV߮ծݮ֮ڮD@lۮخ@׮ ٮܮJjނl~ |ޮJm EִѴҴδĴǴƴ״ɴŴд̴˴ϴʴʹôٴndHGjȴӴմԴ QHoH ٚN~شDߊp  JH^FX}_B]RGUd][@ZFoQamI^KYgDkaMCѠWh`eSfEPLNqʟ`_nO bTcljAViϒbRč\AͼLؼռWѼqμּޜ׼ԼBl ټӼмXϼ̼Ҽ˼^{͔Pr Z[^ƍȍǍEsɍAH IpDJ@ˍG\CFeB͍chib΍fet\ gd_QNWVTOrύcPqSpXRMoLVUUhYZTXSЍWuH vVbYde۴ܴڴXv pceqdۼڼ۟KjYwBZ[nfkϋ\vэeof p޴ݴfghܼLlZ_qgߴwҍ ijݼ޼`CHrhsiqjoBAC@Ӎ@AAB@kxP M[¥]a~IJ^tklDBПrЋråыۊƥ`y$ťĥD @ŦƦ¦ΕvĦEæ[YLQSLMUbROQVZXԍZKxM\TWzEG^UNJYVHICOP[]PN S\WR]FTKXDvƘՍjzqїKbeBmovhfguzGpnsJ uycIBMO@lk}rux|AFs~wi_d`N{taL&{|׍w؍tv{I{s d~xz}}pOzٍmxo^H|wvnyqrh|y~ kΗLCU[WJMFGJV_E@NBOYDhHHEfZgaS}bڍ\ecITAG`FQCZiPKKX] ܍DeRPݍG[U֠GDg~L dXcNOIE@QYBD^F\SHFJhb_]faR`AEWVTLKCA. ՗JMM˗ލߍAZIMDJCUVHp  DBSKQ݌~WAGEBCOLT@FGFEPNR @ӕa`F_IJǷh·^CȷRHKcjbW̷˷ŷiULYeͷhTMķ÷PZdGQ[ɷNESgVlXfƷOʷD ]d\G}nwmqsu6S}ou~E֗| |vtDzwxz~pyx{tsr{Py߼x` vDNMYKOFRTC^W[`UILH_ҕaV\\J EAZB@XQP]GI@AHCOBDFEDJܜGFϕ0EB@ ANCQSYWZRVU[TXPqo>R`S STUVWdX4XYZ[t\(\]^_`da0bbcdeXf(gghijXkl lmn\o@ppqrstTu@uvwxHyzz{|}~D |XT(. pmnsrx_ey\vsgwt^abcf]udh`]j`kh_\^bedg[icfia gxyWelЗҋއǦA^ِ_Gb_`a XZURTcVSPWQYppol^ wxyPLnv{QlrkuqMOzjmst|pNmNTPLXJWiH[RlSFV ZOFTjkYMI[QUKHIeOcYbXL`^_Jc\ZK]apMdQCtZpwyڷk ҷz׷η}m~lܷxϷԷqٷ|ovrnѷطַӷ۷зu~շN{՛sÚȗ۠Бtݏ0 ʒWQIgdpjlfnvmkqho̜cebriJQUSKI  LMHUVGVQOLPN RRMSNOPKTSWXT\b`^a]_IwtuvNl mzkʛji{ܒljkȂD_yӋGRݷnbH} fPU޷KL|gɦBȦedc`x[~S]^o\_RpQ QkjVhilaWstYZfr}qpnolՋǥiCDfbaegcfgd _]deab\^c`IXWUTVgVdL ebfenyhcmtsadurq`ipwTvsXVuSeuYoqtrUxS߷, vu~}{zwxy|_\]W[a`^deJcǞyx~mnmzȥYvjɥ Eljkhhi֒mԑkgjfi[lh¬ŬSĬ ^ìZŔ_]\ts^Z\FdxmkhlNsetp{u^roZynwzqy[xwv| Ԓi~EȘ`ɘʘZ[abX}{z_|Y^\]mlWksn_Ւ qxzwyu]@bA| DifegfZӒcXy\[dhYqmzjhknlg^BEu@oFD{$ACGv tsjnϘʥn}]{˥٠o`M~Πf ºi^_ropqIH|w̥ÉƬͥcdΥϥFjiǬХѥҥӥmklnm{rpTq ҘˬɬʬȬٗĠ`vdcbax{zfeӘԘB8j qs|ԥs՘úoptϬЬͬά̬\hinlkje,mDf gט|~}kjhؘlmgin ǺƺźȺECHIFGĺDlksmro`qabݝpn twuvژߝMN}O~LPJxoKpY\~}wܘѬޘnoեʦGl qmҬӬԬoqpJxQqp֥uprKtRrץ4H ׬ج֬լqrsŸksɺʺLducySsإnxwvy۬ڬ߬ެv ٬ܬݬĘuvwt͠ tCκFDEABǏ@O̺ͺ˺ NQOMPԏ}~vzywfgex{|h@{A|z~}U<l Tĕ{yztwuvf٥nڥoxuGB|xۥz|~}{~P L|zy}~{O$ PFvwxNQ ÔML”HOPJKкԺѺӺIҺۖTXVD ϺSURYĔWjYlikɓFVEŐCDVx GZW[]\XY~}z}yq{|~rtsܥ؋r`ª hƔiRڜS ,Tr ɉA׺պֺCAB@Bב̔mHI_^VݥrL qp ĪêތіՔД} |Dz{yAZX@W\[YIHcDغGFٺ^ϔ_[]Z\ jpIErqnoJ`LɇޥHsƪŪM@| sG~D]^CBJۺںKLa`PsOIKT@QR uߥLAVMʑWG؏XEܺMݺv˦ǪBC @BDGE\SFCHAƲòDzVŲO²^IJȲj dٜ]aPPSGLFcJQHbbONKMIR_QR ]XNPUTWRQhߺSY[VOi޺aY\bЇce\d`h dfgvj]ftxQyw{zOndN LPMuScTagedjkhibflp axrwyk@XYm~̦{EFDW_G"HI sIObMKLNJɲ˲ʲXurVdTeUfZa^`_d yxka|}WSXTVRUz\z{A|@}ًͦtȪTLJKZǯSYïRXV¯įUTȯůɯƯQPW מϲֲӲٲزԲвѲ(ҲײͲղ̲ Blβh]_ae[*Yj `d\XWvbZ^kifgcgrBjxtxe}ubUwfvpcqslhgd limynok`bapyurvltswqnzrm{oc ~_Yia]dg\e`Zhc^b[f ntwovq܌msurpv~}2 B@BAlpnopt qrs tΦuoʯڲ  jѝCI׋ڋɪuM`[_]˯^\@ijnohkgm@pz|}:T DϦ˪ʪONb̯aŽܲ۲BCAĎsmlnrqd~yexЦP|<eίdc ͯݲ޲߲DopN~CAB{|}kz{ˎl$l(\$xL0d@dHpX$t8 \ L |L4. ѦߋҦ̪ϯQΎ ӦARS@BԦTѯfӯЯүAώ@hqikюlզsCUhԎՎԯgկ CBDFGEmtuED֎pomnq|֦B wµvFצئ٦vwwtvyu{zxxѪϪΪݎӪժҪ֪Ъ|Ԫ]qͪ [GH]eWZcaIgLd\YIbDeV_FK`OMXJ^NEfr\گد֯jޯۯlݯkinH\omׯ ٯܯߎ߯ftvwyNڝEGHPLJMQFO\KI_cȵQOʵ4 gJɵNKŵ˵PǵMGƵL̵ĵõ|}~wu{sxr{}v~[|~yxy}͵|tzLJH MJKIADC@BatxzwvusrȠy }~ECDڦתRN{ۦSܦP˜TUVOݦتh¤p WP|ަ٪RεQEߦϵRiQrwqWTVSUXY‰ZÈ SJFIKHGklF}}X[AJJvHKMNR`L {|zy}~~jܪ۪ߪݪڪުЌ< RwAb\daqt]kV`cewIUYWRo~svMf}^xuy|m{Tl p_ZSXTgn[ hzAJvB}Q~x|tsr\Fz{u wyU͜x^`ey]houZ biS@wrnj\aYofcsdzlckZ_pvA[gmVxqtvƟlx`׵}յhiwsߵt] XupnzԵrkdocaеjHصݵٵ~ڵvfҵ^eqD mѵ|xֵܵ޵ӵyg{belb̖g_u~U @ fnE۵`ўbLǑb_ `mq˔X[YZ]aÖU^ WVTc\b_Ϡmrstgfbvu_c]pawZXdniO mBׇ[RU{\SQNe`hx|WkoTyLrVjP^Yl}zqwMI(@CEAG@DL F™UOF\JTQDHBVSPWMęřK{NS@ERDAjΨMOQIPBRJGU vHTKLVCN~Ϝ Όƙ͖ǖЈ aph~JPKIGHL0t ӐVEFGOh@B|{~XZYWșikjr\ AFəCHyGDEBILKʙHF~}(EGIDM J˙ ½k՝dz8 akg_e`o͙ɠĿ\hi_^lb]cn[mj¿ÿfۚƠY]Zag\pj_kfm^`nXlzըנdch[ bieǠCoa֐^ BEACDQON@PFM|Znxǟ GlNŸýĽjſ|mIJNM@lKL PUTERSORQЙÏďD Ə`͸ϸǸθʸȸɸ˸Ƹ̸tBAv@nprqsљ o ƽʽŽǽȽɽup|ʿwyҙȿquxƿɿ{stzrvǿrqwst uxœәvIKHJR]HIKJPHn ɏ ʏWԙVиCFEDX̿͏Ԡ˿y{zΏTSܰ[ yoCA@BѸDЏIGH}|}LULx qrpTRQXPYVSWUO_Y^`Z[֙X]\DFיEI( CʠB@GAH߸ڸոָҸ޸׸ܸӸԸPMEJQٸXGP OKNLݸFظLx{N֏M}ؙϽOKӏy۸|z~wJֽҽٙٽڽ˽ս߼ Խνͽӽнؽ̽׽|۽ҿ~ͿӿEϿٿԿпڿۿؿѽοܿտѿֿ׿ ޏ~ߏKtA̠ O@BCěL@NMPQAV[XhXWZY CB@Aˇ@MNgmzL { DDZaTSܽݽڙvbHVUWQRݿ޽޿FE\[I YZX߿Gst]^hfcgedˠJLQSRUOKMT`PN [HTۙSU߽Nܙd HIJHRBS\ܝEBݙ ji\]vu_&X֟ WV_b`ae^fcdVҠ@LNKMTowlkhhĊ `[^Yl]\_Zhonpmrikgjqs[aY4bX]c`_^ W\ZAC@EBFDȕZ JEA@CBDROSQPT\. CEVDUa`^]bcF_\QPOpɕn`HIp UJyxcabћmnCAEFLHJBIKDGb@acuwv{ xtyz|gfdeMNILJKLH@GM˕FGH̕I XYWVZXxYWFdeHG|}~6h ]d@ZPO|GdAT[CE}x `|~{}zjgn[ilT,œÀX4p<8 ͼΠϔЀlT ԼHՠֈpd<ܨp ߴl`D`,` T.\hekmf ۞pzvy~w|roq}uxty{sMeOgiNfjbhGO~h PEJCBUMLKIN}DFHeRCASDBQPOE>0 UoRSQThlؕ jqprlVWTnS\ [\Zfut@As_a]`o^pnsUTSqsuƻûJŻĻtrܟa^_M`[\J K]LOPNpR_Q^c]HܕIFC]qqo VqB^xvzDywIC[B@CPAmՏlljbqeovnysuc iwuhxzkrswutfrvtsdgpcaԔWYeZ\fL[w db^c`MXg]x_xܖǻz̻л 4Ȼrɻ@~ ѻͻ|˻ʻyλ{wvϻ}RZUgPJOVؖ NeTqcdNXtysowuhb}W~Kx mkfAn{jz@S[v|rlQAݑpYiBCYDDA CQ B@@CEEBADv UEEKٖ tEڑ_Lz ޑFyl`Y Tc[XeU_aWfX]bjgk^Zhj\GdfiSVIHJ Vs cqdalߑhrbetympidז`CokugnzۑjBf@  ݕDHACKEMafOhNIdjNJK`gMeL_cbO^ i @CmplnoijgݖkhQKMLNJNCDSRT_U^VruthsRrpqw   ^x   S  tDxv $ {EF}zy|{~{hһTջ׻ֻӻԻP[\MKIJFFNHL f GnlmwxEGFPmlkV  XVYW¨W t@̙ YEF~|}IHKJG} , |~jkiػڻٻGHOIoĐAGǐL nnomۻl ܻPJptqusyBsprq ݻ R]^_`QNKPSLROMېfwvx~}z{|HIҐSknԐQRoq X[EG FWċCftސQRDaSMFQuv޻48߻ XcbdVUTTPA@}{~|y@z]z\J|KRpv^OPHvi CBqrWDƑXALMTQN z|wx{ytgWe[fYߟZU[YXVZW EJFI^HGDBECF@AQNOPrVUɌtsjI`X< hBbGB~ HuRSi tDCsAu`IHOJKd~}  if\kjlga_i^]`\K^]_NLMRKQTSPOjRMfJHI X{k CDlXWgUTYvwWvVwlaYmD 4 PUj`WVLlđw  onqsrtpmocfdcUihgbbaedZR^[]\Y_b`a@ T XcSMUEF]qm`^]cas\Z[_bx~Tqy[  <Z}|Y{Xz }~{x|yzRVSmJvjWkzƉL, ljjlWuejmf_dkN fde\b]I[\hvw^nqpoghfe\< gWOPeGrgih`TUVKcxi^aJ{rdAizy iSRQh^]Lt|{}xvwTsuy trum`|j{z~ޟjmßltosqpnkCBDAugX WUTJKvIHՕʞwxloVpT omsqkvjqrnuctgz`V_ښ~p ޝZ\_[`YW]X^MZ\[yPxwzst\ }~okplmnz{~|vy}EFw^ }HYZ۝[MxOPsNzX{L }{|x~zwy–wabd"8c sindgkreosjcmlqphbfNOad, ]^}`_ba|{x|}( PQTG QSpRmecAT³J*t dHu¶rqLJKI\fvwd}ul xRe~]gyA^|{zM}ÑfN~ ihȑijɑTSgjih sˑeȉtݟCmt׌،ڌH2 ‡҇ևڇ߇t ( |dD, plxP0x @  P ,  L 4$4LPP0$ x(.0 db< ICH]^ϡAСDGFաס֡HIϢТѢҢӢԢբ֢עآ٢ڢۢܢݢޢߢ@ġP FGáDXPH XP||: qu| vHƎ ŋ| NKzHGB  ES , r H Gߔџ d }J  ː{  ؔ_Tږ y t  uR  Iߒ|c`m!b kj!8 Tsؗ!X BveZ!x l! n! u ! @db! v{b! m̉B\" "D {("h Òj" Л" P4" ƒ" " Fc0" Þr# # f#, Sb#@ 8#X ĚŚz#p # @bƚ# ɚ˚r @# ^̒\̚ # C͚Κ̛Ϛ $ њ|Ӛ!$@ _şYkԚ՚!H$d DJ!$ d؝֚֔MWCD!$ Tך"$ ؚ"P% ܚʊcݚeo~CВ"%, fpu"%d ]H@v#% ޚwdg#X% KSJ׊#% _#&( ߚX$&@ aם}$`&l $ @P \ x    !!0!P!p!!!!!""<"`"x""""""##$#8#P#h####$$8$\$$$%%$%\%%%& &8&d&$& Byz$'| ~D|q%&' N%h'c IΊnΒZ{|%' %(( Ar&.(D &p(` r&(x s&( _'6( 'x( '( |EnVK'( (>) Ǘ(), ˜@()H NhlŒ))h jt)F) A)) )) * ) *N) ǜ** Ŏ**$ +*8 GҔaƓZ+V*T GfU+* Cڔ+* dND,* iԕK|ŝ,^+  ˓U,+lt lcƝ,+ `Xv-$+ JIx֑-f,  UVQАDUc-,4 kQ-,pW xP.,, L.n, @., Aa., /4, ‹|/v- B/-( C/-< yD0<-P {n0~-l y^0- ˉSד1- 1D- t1- EG1. PH2 . [/.0 2L.D L2.\'''( (<(X(p((((() )$)@)`))))P))**0*L***++d++,,,,h,,,,,-- -4-H-d-----..(.<.T.h2.p Ki3/\ 3T/x Պs3/ Y// 3/ */ BÛ4/ "P0 N&0 Е_4\0(  0@ NOP40T ƞP40p sч5"0 ӇԇՇX5d0 ^Yu50 "0 pq50 wm6*1 ]6l10 A61H k61` }׎MQ721| Ê1 hm7t1 g1 71 lR71 p 2 8:2, 8|2D SU82\ V92x 9B2 ˊW͉Y92 []92 O:2 {B:J2 PP:3 `EF:3, b{`؊c;3L iG̊;R3t |ef;3 rz;3 hwg<3 Y3 (5 >j5 3T5 ʓ>5 F 5 ϓ>6 ?06  Γw̓?r6H Z?6t TQ?6 ٓړ@86 ѐn@z6 p=b6 o@{@7 Y@74 @_A@7L 7h vA7| GtA7 Җ؇B7 FOIuBH7\ QyKB7Ӗ X_B8 LJ|CٝC80 MCP8T [z՞ɜXC8l Ȏ9B8 ߓC8 ϖD8 ޓ8 ϊDX8 9  iRD9  3T9< n3T9P  T9d ||gD9x Nt˞E9ԝ E`9 {ҞSٔXy{E9 ڎE: bٞԗHF&:0 KFh:d @؞^_ΔJpF: g: ؛cHF: ڏ~G.: CӗHGp;5x5555566@6l6666P67,7D7`7t777788(8L8d8888899949H9\9p999::(:\::::; ;<G;D ؠJKG< H6<@ ZْHx< m|aI< `RI= OJ=0 nmdSxJF=D ]ZPJ=l ГbOJ= RK = ґkKN= ˒kK= QqK> LjL>8 aLV>T DL>p ibL> UM> wM^> "P> M> M? H6? }"?0 fYN$?D XNf?` D?t ǛTN? tDX? ֋tțN?~ }oaוRXhO,?I MIΑqόOn@ nCYהf}oFm|͒e~XwϑO@X ՖmFF[ёgO@ ɛbkNgP4A `uӑ{j^PvAP ~h[ٛ]VbOؒPA˛ _ϐeLؐPA [NfB B, mB@ ʕQ<BT Q~Bh sQB tRB KM^B UiRDB ܊RB vRB ΛhS C SLC ߘSC0 ϛΞSCD {DXCl<8 >0>L>h>>>>P>>??(?<?X?l????@@P@@AHAABB$B8BLB`BxBBBBBBCC(C<CdCxTC қ4Dt TTD TD ETD UD JU\D UE ZRE ֛&E, oUE@ _˝V"EX כȓVdEt ۛܛVE S3TE VE ǓIW*E ÓœyWlF  {~WF, FWFH pF` X2Ft ȔXtF @WXF XF CDOY:F ܓY|F oJYG 7G0 ZGD N4G\ ZBGp `"G žZG QZG =bG d[G ad[JG [[H ɝlRH4 s[HLuq `\Hd jL\RH R7H χ\H TSLH ԊQ<H C\H ҝ]I 3TI( dI< b]ZIPDDDPDDDEE$E8EPElEEEEFF$F@FXFlFFFFFG G(G<GTGhG|GGGGGHH,HDH\HxHHHHHII I4IHI`]Ih }]JD Ж^ J\ Ww^bJt ^J mV@^J _(J TJ ۋ_jJ RK GK0 ދÎ_KD I_K` L`0Kt ̐`K`rK p`K CG̎T`K ITTK ^XK ^\Ka8L َazL, _LaLD ێVaL` b@L| TbL ^ԞhbL àZBL SL a_cL M[icHM cdbM  gicM4 MT ecMh TldM n]sdPM jmdM MՌ^dM LuݛtEeM ƖjNxUeXN  AeND \*N\ MfeeNpIB zʐ[fNM ӎaf`N Kғ@FgZfN AӌfO LɖUo}g&O( o˖ghO\Ζ VĖgO| ^lSkgO ʖ͇Syh.O oŠxBZahpO O9BP shP, ֌hPD CŖQ~P`JTJlJPJJJJKK(K<KXKlKKKKKLL$L<LXLtLLLLLLMM,MLM`MxMMMMNN<NTNhNNNOO OTOtOOOPP$P<PXPpi6Px SLQh KJixQ| ҜiQ T\iQ EFь`j>Q HGjQ R qJR( ER< ӞpjRP 9BRt RTTR 3TR PkR }R RR kFR ߊ=bS  TS ikS, AkSL l Sl "S ȏL`lNS ǔXlS lS ÜZBS Ĝ֓mS mVT q"PT, яmT@ ՙmTT DTl ΜԜnT ՜n^T p׏snT [ҏdnT =bT h֜܏ُo$U AʇofU( loU@ TTUX Z4Ul H^U JcZU l= U לnoU @p,U •SU jϗpnV V( |V<QtQQQQR PR R4RHRlRRRRRRRSS$SDSdSSSSSST T$T8TLTdTxTTTTTU U8UPUdUxUUUUUVV V4VHpVP AۜApW0 "PWT bNq4Wh ʜfqvW W SqW @AEqW sʗBr<W ar~X  ҊJX$ rX8 CߜDʎsXP NsDXp EsX OTTX GʉsX DXX ^cWt X f4Y tLYb gtY, HO]tYL kYl \iuY WUuTY suY KCؑuY F`SӜN@vY BVelJPRZIGv\Z$ xϏ`NVvZd ܑa]ގOޕ@vZ }’w"Z {{wCƐewdZ }eēHw[4 Sś]__n]w[d ix*[ UTAՑzGxl[ VfGx\ OMx\< =b\X N\\l ّy2\ yt\ rzy\ y\ XcZ\WLW`WWWWWPXXX0XHXhXXXXXXY Y$YDYdY|YYYYZZ\ZZZ[,[\[[[\4\P\d\|\\\\\z:] F] rőB͐Yz|]e ̗ΐYz^ [\{^, ~^{B^H `Ϝ{^h ݐ{^ |^ "P^ FKXLc|J^ Ϟef|^ Zdl|_  يg}_( p"_@ R_T PH6_h m_| ht}R_ Q}_ wdvij}_ NT_ k~` l2`  e`4 ]m~Z`H Z`` B`t  ` j_` n~` ͝o~`  ` b` r2a  Ȟqa  Uqa8 r̞(aP t* ah Оja|P]^^$^@^`^x^^^^__ _8_L_`_t____```,`@`X`l``````aaa0aHa`ataa \"b< ҎbP w0bh Ux|rb wRb uvIb yb 8b uRE_zc ݜwc@ VcX @Zcl =bc Jc xzc ɊK@c c uZc ܇kdbHPb`bbbbbc c8cPcdcxccccccdd tȚdtG ËHd Hwd Rd zd "dPddddddep't/T5d<DlJ<Q`W(]b4dle Pe(8Pp$XhP Q`4p,e`ehehljmlorltwly|l~lllllllllllhhhhdjmdordtwdy|d~dddddddd  "$'),.1368;=@BEGJLOQTVY[dehjmortwy|~ĔɔΔӔؔdddal !FGD|ca-R¡Xӡ23gPM1obtYWAC][fEIDNa_OѡUYTsjhacomesqinwuoҡ{yuyty5$Pt  5p5x5 < T6L6hL`@BC qrmnuvyzijEefâĢŢƢǢȢɢʢˢʡ @GT|CKEQgWS]ҳNIǾʺeߖ Չ͓ߛhډY? ܋ۗSD j\^Рfh HEoޞ G  T fݓ̋ pd Io~ (L SÍOL It IrkP ̝eDncڠSy]ci ØŘfnݗҒa˘]̘i͘ΘW b cИt٘ ۘݘm\H@P7849,P< `L$Dd   p    D ` l    0 \  P t l T h _ Ɯ~ @ɔӔ Fєs% “Hg< KUNYT T| g vQsO- npSo\ zdb͗dL ɎT|zȖÙ֐0 vpKǎǙ5p אcZ  ߞZ´ Ιϙwܗ  y ۏ z=0 ޙH ەʼndUԖ|Md —Ø oj_Eô ͞yΝ Ҍsќ C  ɞM4 x{PԨӨרoҨ ͨܨݨڨѨ̨PWVJfIQ]։Kh4Lt <h(h˜¬X(@\$<X|Ð8Pìt,H`8p$ chdgfebĒoѳŰikjlưγϳгжѶ϶U(rfc zbeiV`yOPyǚIKMLEADIR monŜI}|_^][ywz\[xWTǘǰ UTZgX^UY[]W}VQRS\oPSRWNQPAT`iK }l}K~]U[dҹ ֹZ`eVԹ^bhXawӹgYYKWVMRNQ\[oJPZOLX}~MOJL Z]މ^B`YLBi~pgh]{ڹ۹ٹjѤӤҤ[Ԥq_`ijqpmk LRÕgoOHpSDKtfEdLPc#| @MrGCADsEB@CD@FeTAA BEAnzpvkyx|u޹twm߹{orwqlxsUaXWZ\_VrT8rysv tuwgWXٌvxzw{ybcȫūǫɫƫfw}hgc_`bdafeJ$IkHGKF IKHJHIJ~fged]Ⱦd_oxu+ Y~Z}ɟΫxͫ˫̫jhDkij^PQOhiaK٤swvzm h}{yXЫ|zϫ~sonlknposHqprmlmЈ RaOOPb@SVNPUTCRDMQԌD ˧٫|aFbI}ݤޤ̧qrskpګzzyiLjML]3 `!<""#t$8%&x'8(()t*dǨ,,-.t/T0H1$22X4L568T9t;dL=8=>0ABdϸDЀFT<GIJ8JKLMtҬNOP.Ҵ ةF֩ԩߩթکݩީ۩Q{A@CBu Юɮ̮Ϯqʮήˮͮ߱ޱؓӓvԘ P`nKmQRfPTѮҰp PCGBE@AA@FDWʌCMNFXHSIVQO;, JPDRUELTGKYM[\i^VLbJ[EeRA}}μּޜ׼ԼBl ټӼмXϼ̼Ҽ˼^{͔׸ DBSKQ~WAGEBCOLT@FGFEPNRؔR`S STUVWdX4XYZԐ\(\]^_`da0bbcdeXf(hg$iװl lmn\o@ppqr،tTu@uvwxHyzz{|}~D d|XT(.lfia gxyWelЗҋǦA^ِ_Gb_`aCxZpwyڷk ҷz׷η}m~lܷxϷԷqٷ|ovrnѷطַӷ۷зu~շN{՛sÚȗ۠Бtݏ`l mzkʛji{ܒljkȂDyӋGRݷnbLĬ ^ìZŔ_]\ts^Z\FdxmkhlNsetp{u sn_ Ւqzwyu]@bKA| DifegfZӒcX\[dhYqmzjhknlg^BEu@oFD{ACGv tsjnϘʥn}]{˥٠o`M~Πqp ĪêіՔД} |Dz{yAZX@W\[YIHcDغGFٺ^ϔ_[]ZS`\ jpIErqnoJ`LޥHsƪŪM@ QR uߥLAVMʑWG؏XEܺMݺv˦Ǫ ]XNPUTWRQhߺSY[VOi޺aY\bce`h dfgvj]ftxQyw{zOndN[DYj `d\XWvbZ^kifgcrBjxtxe}ubUwfvpcqsXl(D\$0d@dHpX$X \<L |L4. gJɵNKŵ˵PǵMGƵL̵ĵõ|}~wu{sxr{}v~[|~yxy}͵|tzL_ `mq˔X[YZ]aÖU!O mB[RU{\SQNe`hx|WkoTyLrVjP^Yl}zqwMIcMOQIPBRJGU HTKLVCN~ aph~JPKIGHLtKL PUTERSORQЙÏď)X Խνͽӽнؽ̽׽|۽ҿ~ͿӿEϿٿԿпڿۿؿѽοܿտk0XWZY CB@A@MNgmzT,œÀX4p<8 ͼϔllP ԼHՠֈpd<(ܨp ߴ `D`,` T. PEJCBUMLKIN}DFHeRCASDBQPOEjbqeovnysuc iwuhxzkrswutfrvtsdgpcaԔWYeZ\f1| ݕDHACKEMafOhNIdjNJK`gMeL_cbO^s`ݻ R]^_`QNKPSLROMېfwvx~}z{|HIҐSnԐQRoqD[EG FWċCftސQRDaSMFQuv޻  EJFI^HGDBECF@AQNOPrVUɌtsjI`X9 sˑeȉtݟ{(t|dDX <plxPx  P ,  L 4$4LPP0$ xZƷyt`irּO_TdöZ}PԩYԮT ӨNҳ۾rlcѦS|OLSw. ICH]^ϡAСDGFաס֡HIϢТѢҢӢԢբ֢עآ٢ڢۢܢݢޢߢ@sġ. ~P\ht(4@LXdp|̄͐ΜϨдP@X|g8Pp4$XhP Ӹpp,}Ddddd  dddd \"%\'x*X,/T14T69T;9>T@CDEHDJMDORDTWDY\\\  \\\\ T"%T'*P,/L14L69L;>L@C<EH<J  "$'),.1368;=@BEGJLOQTVY[M<Oehjmortwy|~ĔɔΔӔؔݔR<TW<Y\<a\D ߠޠ¡XӡP^L֠נڠѡ٠ ܠݠݛƠɛ̠Ǡ Ƞ؛͠àϠɠҡĠ<^ Ѡ~_ ՛_ TT_ РҠӠԠŠՠ_ ˛̛ϛЛțћΛқǛכD`, ٛ͛ʛڛܛۛ`p š`RE, ӛԛ~` ۠ `P```La VXޑLKEa  JKϝɝRȝap ¢a BCADwxTb4 SeFGEHb| yk_AԡۡLFb rc \c4£ãģţƣǣȣɣʣˣ̣ͣΣϣУѣңӣԣգ֣ףأ٣ڣۣܣݣޣߣ cL ABCDEFGHIJKLMNOPQRSTABCDEFGHIJKLecMNOPQRSTABCDEFGHIJKLMNOPQRSTǗȗɗʗ˗̗͗ΗϗЗ.dpїҗӗԗ՗֗חؗٗڗۗܗݗޗߗ@ e|w}x~ z{ޜ}utsrq"f8 ~Zdf| bcdefghiponmlkjvyg$ Sg @ќONMP՝UV][XYZ\W^]W*g ؝ݝ۝ڝםޝܝٝfelhP lkUT\[h wNfh ABCDEFGHIJh Μ՜Ԝۜۑ2i ahPab,btbbc,cDcdhetf0ftggghHhhhii0ti8@BC qrmnuvyzijE]efQRâĢŢƢǢȢɢʢˢighijklmnopqrstuvwxyz {|}~j@ .k0 yNfl< ABCDEFGHIJ:lP UVPQR|l WSOl /4l l Dm m$ HLoBm8 B m\ }"mp gdbm ^M^m ޕ/m Ǖam ɕ m |m ZBn q&nj8\k(l4PlHllllmmm0mTmhm|mmmmmmn n n( n Mn  n Ӝ^n JgJn Nfo }Q<o _o0 oD E o`@B CבEVTWUFؓMBA@@C҅[FAUèʄɜXBPcZ֜̑YoDd[ot @D[G\EGF΄CĨAߜAE^]tpDAgŨaKphöF\EƨGH__ QbRǨ@ȨE`dƒɨʨFGF]bHRqTS G“TJKLMIPjfQahNOHegGHTIq gljхJ~ĄÄCfBgD[`hr dG]Db^ZeEH@FcAi\_@aبШ˨ըΨ֨ި٨ۨϨsԨӨרKҨ ͨܨݨڨѨ̨eUfʈ}JIQ]KZtYPX T[NWMURZO\SLH_`ȈȌl׭ѭ֭ĭͭ{ڭLuPnnnnooo(o<oXolp`q qrstuvvέ ǭܭӭ̭˭ϭ[ƭխԭʭɭҭí\Эŭ٭ۭحȭ vcWM \bUYRVNgQf˜XSO]PNZ`aØ[^M_dLTeOeȉbwȳĘ^W ų_UXijYŘdz]SRɳʳƳ˳Q\ZTóVɌɈɉʶĶͶƶǶŶ˶̶Ƙɶx ζOǘPQȘɘZRʘy˘ Svwu̘x_lkΑ(za SRTJIKђUߨg^YiZ°\[`͘]^VJW͑@׋ULݭj{`Tʑ XLNXTUAjY`_ðˑUA~aZaޭ߭[N\]VΘBLKՕMNϘk|H` I^[hИa_@`LZјLaRca׈ńİͳYWXۉb}0MN}bϕҘ¤Zck҃F DEdeGChDŽlmfn~PO{SQRgӘhԘ0~Ƅ̈c hdgfebiȍ՘ɒv֘ѳŰikjlưjγϳгжטѶ϶rABZ @ABDCiklmOnt\[HؘUVTWopoʉiȄplk DijɄ٘qǰnʰUɰȰԳӳҳҶնֶ~ӶhCDEyUܑcäVĤŤr^SМ ȓ^sIqm̰˰cbݑƤ_Ͱ؜l`KJXtɍژo׶EǤKаΰ8ϰ̢ۘd͢΢uɤȤcb mOV˄onmRܘˤvedAr`͜UWgfLMsYjZoݘޘz ӑ̤m͉tuwڄppdֳzeŇۄFLJxFXhO| HѰߘSeΤͤZϤB@qyԌOjytonuslzmixwvkrAqb{pD SYU[XNQTPWZORV\̉CB~{Ug|[]upz}_a͈hxtv\mQvsdEnowljkq^@$rfc zbeiZ`{|ʌyOPIKMLEADIRC FH}QMSJGB@WNˉ~HKyxt}rCOFyEBwJ|Ls~{@FGzv JϖuDcOΈN̄D@BCAC ZFB@GEDR@fUÄ́Aw߰|۰v{zsH ְٰ~Ӱڰtݰux}ްܰװKذyհ[԰FnnjIEqrj׳ڳuxسq޳ n۳v{ofsmyݳ߳czlrthwٳgiBpIJLُ޶ܶ߶ڶݶVض ۶_ٶɖmMKψ͹ȹUQK¹TNP SNn˹ŹIƹǹL̹JOùHɹMRRʹOeGMGDPGSTQJBR]FIHHCEKPAQ kOjNP@O@EȖUBACD@QFWʖ{}~ VWz|SPX\Yto[`VQZAY@XW[Z\ mond]}|_^]oywz^xFCτʍTVpHIEF |_ϹιIHG`kgYneBbfdceaa`fgфbcXD}d Ɩ{Ö~|oшoRY[Z@XWV\Af UnhgThZiX^UY[]WjVQRS\ЈjˍkBiPSRWNkQPlTXGJm OUIJVMHLlI…ΉӄnoJK pq}K~`Y Áryst͕āmbu]йcչ_fW׹ѹ\U[dҹ ֹZ`eVԹ^bhXaŁӹg^YƁYKWMRNQ\vГ[wJPZOxLǁXyzȁnMmOJL NþP¾IK\{|oSRab}cB[ɁhФGRE_ԄAʁعiS&x ˁZz~„ḗB`YĹi~p΁ghρ]Xڹ۹ٹjѤӤҤ[ԤqijHh`k aC_`^Z҈abMNOąݹܹj]ľkflon0qpmkIŅ ۍgoOHpSDKfEdLPc@QJ MriTRnlIkGFjhqmeNogcsblpVvdfmqurknhëjit.e«̍U\b[ `PU_\aQ[TRcSWXZY]^Մd@pCD BAcω@B ™ÙęGřCxƙADǙșpEəB@CD@FAAʙ BE˙̙g͙Љnzpvkyx|u޹tΙm߹{orwqlϙgsUaXWZ\l_VЙT6 ][Y_^c^`bљ`WҙVUәXQRZSž\ԙ[TYՙƾщTx\֙ ]יCؙٙڙlmnդrssUutVԈۙīˌ]eAEGFܙݙ}Ǿޙ^p̜rߙsv tuwWX@vxzw{yԒpȫūǫɫƫfwֈhgc_`bdahfeYJICHGKF ‚IKHJUHVIJi~fged]ȾÂd_oxքՈf>l ʫGig[NMLLMɾp\֤tĂy|łƂKqWפЄJYNL҉rؤu\ Y~Z}@WΫxͫ˫̫jhǂkij^PQpO†[iӉa٤swvpdzԉ8 ׅۃXħ§çĆBȂׄɂhYb]ec\ilg`fad[_k^jʂ˂q͍s ̂Zr}{yЫq|zϫ~PA͌onlkn]pos͂qpr΂milmFqr΍ SRT[XAZςV^Ђ[UCWB\]Y\ÆD]@Qт R^OOP҂_eՉ܍ӂgSVNPUTCRԂD`MQՂւ~tza bׂ؂eg‡hcbljjmdikfcaf`ed^hdic_gjbeق fr ̌DE`Sڂrۂqgt{_WuŧtCWvwxڤѫfiy]N ņxl|hƧلDnmoÇҫԫӫC؄tsvu։goPbFac`hƆUE\VˈWT ܂iZ\E[YXqompnl݂mklnnz~}F@ۤիXȇ<yuzx ʇȧɧǧrj؉YjƇqć֫׫yuwwxxvGJKHgfdeIkh$ Z[\]_aHGY`^ނ߂psrtqtuossqprofFGUʧث{ܤV{fV˧ ٫|lI}ݤޤu̧Eqrs׉pÍګΌzzyiLjMɇF{]qb uvʾtAsЊtkJUΧͧ۫{mCnl^vmLϧЧdžwvuݫܫޫ߫ }|{ܒHOorpNuqPtsGZa_`KDLcnwvxwHu@HIoߤڈ {ҧԧӧѧpNxqẏا֧էקDž^wxyzx{X|@}(~ t<|h<pX(dT0T4.tȆ͇чkJȅ ~©éȩƩ|ͩɩrt{ʩ˩ǩ̩zĩ}ũvKt G~}|J~ى܄KʆQɅ߄ݍsv SxQRYdywLzAij·U^dM|e`V~Tb$leI c]H{dYbWXt[_\fcZ}q̆s؈ބˆχɆko@QmDqeFSilGNHNfXsT JOC^uUrAPv]pNMtEjBKwMRgLPxhЇ\phlnOk[j_Z@¨Pq XimOfgAWYoyr}GRFT|EzCDzn{fHyBzS0{~y ѕ~ξx_̾|xtQv}w;|{˾zо}~Ѿ׌$~| y{ӾҾ}Ͼ]ŠuوVVxjihaJbAt, |ډڧ٧ϩΩmۈur`atvuIIlpԾWXѩЩnҩ vQ~}ӇYÊMKŊߧөðާ[ۧZ ݧܧׇWjnoN˅҄\ܩʓZ٩ש ةF֩ԩߩթکݩ]۩މu^v܈݉ՇA@CB4L Dv҇ވև݈O܉^f_}Vvî® Uԇʅ̅^gגʱYy߈r]w̱ɱ{jUĸȱi s±hxqDZtƱRoñxnl~ıw|pűmzvTSΆwĊ؇WφpkdzjJgw}kn|\ml~Uyli _phqfec]VW{yXox`[a^_]Sه<t߉͆ p|liz{bknojd}~ehfSmtgc~xEsuNJړR όQLKObRTNPUd ڏJÐZ¼MhüƊɊvMؾپ߾HĐ־ݾ۾վ ܾ׾޾]ھȊŐȕYXƐ^\]ZD0k ǐ[BEFDGlCWNdMLKce`u[rȐەFƆ GĮŮڇɐϱֱձαѱԱбvͱuxswtʐqۇVļƼHːB yǒuƮRױz{rWSHٱʊ|sš_IÚ  Ǯ۱ܱݱڱ}Ě~ŚYX̐JIO^JƚwЅǚL @Ț͐PMɚSKNQLOR݇ΐTFϐǎǜ Юɮ̮АϮbʮήYˮͮυ΅ѐ߱ޱʚKcҐ˚Ӑ̚Ȁ}܇Ԑy͚vwu{z ΚxtzϚ\ZКȼњǼʼҚɼӚՐ֐lא Ԛ՚ݓnKmQRfʝPXؐTѮِڐҰT\̳֚| BךAېҮӮܐԮؚ´dz^agё{|ݐȖ0YxYЌٚC GBE@AA@FDW\yސSߐԅrWښCrMNFXHSIVQO  ӅͅJPDۚRUELTGKzܚ܏ߍ҆օfX[\iEVLbJ[EeRAݚDQa`FX _`cZKSfYamVXޚߚCjc]̊lgIΊmPHd\T^bGZYO_UWh]NMBg^WZU\MQH ۏݏw߮ծEݮއ֮ڮjɞۮخ׮ٮܮ Q|̒ލՅq߇ Xޮh{o" xִlѴҴδĴǴƴ״ɴŴд̴˴ϴʴʹôٴdkjȴմԴ IOAyk|}ioʦҰ l~شmbӜnnz@E JH^FX}_B]gGUd][@ZoQamI^KYgDkaMCqWh`eSfEPLN*Ԝr`_nO bTcljAVibRۓ͊}ˊAͼuؼռ~tѼlՐμּB׼ԼTΖ ټӼмCDϼ̼Ҽ˼@EFvGˮt HIJwKLMxN{~EtOAH PIQDJ@RGxCFSBchiTvbUfeV2\ gdWQNWVTOrXYPqSpXRMoLVUUhYZTXSZWtP vVyьYϊd۴ܴڴ̶ pceqdۼڼzl[KjYwBZ[œnВȒk\y\Neof pݴfghъܼLlZO_qg_ߴ:uijݼ޼`ѓCH ehsi]jBAC@b@AAB@{k|ܨM [A]a~nIJ^^tklZDB_crå@ґdƥ;ݔťĥD Ն@ŦƦ¦`ĦEæe[YLQSLMUaROQVZXbZKnM\TWcތEG^UNJYVHICOP[]PN S\WR]FTKXD؅ʕku~_܅ۆjzqdKbfeBmovhfguBtGpnsJ uyecI}MO@lk}rux|Af~˓i_d`N^{taTLwҊg΄l|hwijtv{I{s d~xz}}pzkmxo^H|wvnyrhhy~\ ׊tlLCmU[WJMFGJV_E@NBOYnDhHZHEfZgaS`boecITAG`QCpiPKK\X] qύچކqنeRPrG[UGDgP dXcNOIE@QYBD^F\SHFJhb_]faR`AEWVgTLKCsJL tuMdƒ]ݒЍԆՊv؆܆ӊ݆wAZIMDhxJCUVHόH DB~ySKQ˝zWAGEBCOLT@FGFEiPNR˕oڅDғ j֊k@jxa`F_IJǷh·^{CȷRHKcjbW̷˷ŷiULYeͷ|T}Mķl÷PZd(GQ[ɷNESgVlXfۅOʷD]Pӆ~\i׆mAֆn Ԋ{Ҍ}nwmqsuRS}ou~| o|vtzwxzjppyx{tsr{y߼Д  P|vDNMYKOFRT^W[`UILqH_aV\ kJ EAZB@XrQP]GI@ACOBDFEDJsGFEB@ ANC}QSYWZRVU[TlXtPuƕqoZ|dPH(xlp\@(ƸǔxdT(ѸҨӔԔՈllTH۸ܠ݌ބld`XHD@< . pmnsrx_ey\vsgwt^abcfn]udh`@]j`kh_\^bedg[icfia vxVyWelمWA^__b_`aMќ߅XZURT VSPWQYEv›vޅwzэÛwxyP Lněv{QślrkuWƛqMOzjmst|pN݅؊mNIPL@XJWiH[RlKS V ZOLTjkYMI[xQUDKيHIeOMYbXL`^_JcNOP\ZK]aQRMdSTvbUpwyfڷk ROz׷ηV}_m~lzܷ͝xϷԷqٷ|ovrnѷطַӷ۷зuWշN{Ss{XYt|Z[Ҥh ؠ\]^_gdpjlfn`amkqhobcebrcidJQeUSKI\LMHUGVQOLPN RRMfNOPKTSWXTg\b`^ha]_pwtuv(Hil mzkjji{klljkmnoZyɑqƅdRݷenbj,} fP޷ns|gtɦBȦedc`f[a~S{]^o\_Ӭ Rpg QkjhilhustYZiqr}qpnoljǥkCD]ڊlfbmaegcfgd _]dneab\^co`bGXWUTVg0v bfenyۊhwcmtUsadurq`iӌpwpTvsVuRqoqtrUxS߷rsrx vu~}{zwxy|ޒ_\]W[a`^decyyx~mnmԴzȥYvjɥz E{ljkhhi|}m~kgjfilhHc¬ŬtĬ ìu_]^Z\vxmklstp{u8roynwzqy[xwv| ~`Z[abX}{z_|Y^\]Wz usœÜĜwŜ@bռAƜ Ёс}ifegfZҁcӁXt\[dhxYԁmzjhknlgՁBEu@ցoFD{ACGv tׁs؁nفځʥn}]{˥o`܊~@|yº i^_•ropqVH|w̥zƬͥ{cdΥϥFjiǬХѥҥӥYzklnm|rpւTq ہ}І~ˬɬʬȬU`܁dcbaV{z̕fe݁BDj s|ԥsށQúԑopxt߁݊ϬЬͬά̬Qhi\nlkjemf g|~}kjhlmgiXH WǺƺźȺ@ECHIFGĺDTlksmro`qabpnՌX׊ twuvoMN}O~LPJ~xo֌KpvU~}ѬnoեʦGqm ҬӬԬoqpJxQqp֥upwrKtRrץ ׬ج֬լqrsiIsɺʺLducySsإnxwvy۬ڬ߬ެP ٬ܬݬvҍwtؒM tފCκFDEAB@̺ͺ\˺ NQOMPBk}~vzywfgex{|h@|{A|z~}ZU 8 T{yztwuvf٥ڥoxuGB|xۥz|~}{AX $x AŒC|Ãzy͓}~{@BB_ٚ ߊ KYvLwxThNQ  MMHOPJKDкԺѺӺIҺN͖TXV  ϺSOURYPWQjTlikUFVWEXCV`  GZW[]\XY~}z}yq{|~rtswYZ[ܥrڢª č\^s_pR`SlTawPbcA ׺պֺCdB@efgmHI_^Vݥr&Xqp ĪêΝhăijhL} |z{yAZX@W\[YGIHkDغGFٺ^l_[]Z۪Ē mpErqnoSJ`gnޥHsƪŪB@ X~D]^CBHCJۺںKLa`sDoK.p uqߥAgrDsmEܺMݺv˦ǪtpBCI@B DGEAuFCHA@ƲòDzŲv²wIJȲd׌zܲ xyz[JaPSGLFcJHb{ONKMIR_QEp ]XzNPUTWRQߺSY[VOi޺\ZYqVbc|e6L`h dfgvjЖ@txQyw{zіFpOҖNx$ LPMuӖwcԖagedjkhibflՖǓݺ ،x֖ wyXזYm~̦ZEFD݋^]GHICIO MKLNؖJɲ˲ʲ{CcAVdTeUfٖa^`_>Cږ kTa~|}WSXTVRUۖ\ܖz{Aݖ@ޖͦߖtȪހLJKZǯSYïRXV¯įUTȯůɯƯQPW ϲֲӲٲزԲвѲҲײͲղ̲ l`β[Fh]_ae[Yj `d\XWhbZ^kifgcrd”jxtxeubwfVvpjcqsFthgd limynok\pyuÕrvltswqnzr{o~߈h MÔ~ߒ_Yia]dg\e`Zh Xc^b[fOZ ntwovqmsurpPĔ~} !LŔ ƔB@BAl_vqpNtu˃Drs̃ȃʃƃ̓LAσ΃ǃŃɃōEN"LӍqronmpShkljԍDCJHIKGEBiJK IIEC{zB@EI|y#<DIŽ@AKJB yĎHFŎƎGGCÎDRNQJP]KLHOQHDFMEޏ|Φoʯڲ$@Jj tCIuɪuMF`[_]˯^\M@ijnohkg@pz|}d%< VDϦ˪ʪONb̯aܲ۲LBAUsmlnrq~yxЦPV&8eίdc ͯݲ޲߲Dop~CAB{|}kz{l',`T@$tL<|T 0     dPD|hDl` P!D"D#4$8%4&0'$(.(ѦҦ̪ϯQ ӦARS@BԦTѯfӯЯүA@q^զsCUUh\ԯgկ)( CBDٌߏFGETtuEDkzSpomnqw|֦*Ց LwµvFצئ٦vwwtvyu{zxxѪϪOΪӪժҪ{֪Ъ|ԪM@ͪ˖M^*NЃ[GH]WWZca IgLd\YIbDeV_FK`w̓XJ^NEfKՍگد֯jޯۯlNݯkinH+omׯ ٯܯHӓуYڌV}NEGHPLJMQFOKIBXȵQOʵ, JɵNKŵ˵PǵMGƵL̵ĵõwu{sxr{}v~Н|~yxy}͵|tzTeL$-H MJKIADC@Bǔntxzwf.pvusry }~bECDڦתRN{ۦSӕܦPBTUVOݦتh/Xp WwP|ަ٪֒RεQEƓCߦϵRiQrSqLVWTVSU[XYZ0@ SJFIKHGȔF}\}[X[EAJҜKMN,18L {|zy}~~jܪY۪ߪOݪڪުŸn2$ʎ@ AyQKx_b\daqt]BkV`cewßUYWRo~svğf}^xuy|şP{Ɵ]lǟ3p_ZSXTg[ ȟzAvɎÅFCvD}ɟ~Ex|tsr\ʟz4{uFw y˟TuGǎ_WHцs߆{JQIMJ^`ey]hou45 biH@wrnj\aY̟wfcsdzlKkLZ_pvA[gm͟xqtPP}M`ŒNlv5`׵}յhiwsߵΟt] RupzԵrkdocaеjϟصݵٵ~ڵvfOҵ^eq6 mѵП|xֵܵ޵ӵyg{bџҟcӟɔ_[MXPUԟ՟7 Q֟ן؟۵ٟCRSڟ۟ܟ<8ݟ TUeȎ`ޟߟX[YfZ]aU~9^ WVTc\b_ʔeV^lWstgfbvu_c]pawZXdni:O m[RU{\SQNe`hx|WkoTyLrVjP^Yl}zqL`]XFNMMI;@CEAGhL FUOFYJTQDHBVSPWMKQNS@ERDAD<MOQIPBRJGU vHZTKLVCN~[֓~=\ >j k]^J˔KIGHL ? EFG@rˇ@B|{R~XZYWx}ikjSďL@|LZ AFCWHRGDEB̔CLKHF~}A\EGIDMJLÏ r͔aNBH¸øBĸ `TjeghmilfdC4 aT½kaEd`buTD akgle`ocGĿ\hi_^lb]cn[mj¿ÿfdFY]Zag\pj_kfm^`nXlEIdch[ebie ǖfLo|MFrghN OBEACDQOiN@PFMPZnFQuے GlNŸýĽ[ſ֑Dm܌|IJNM\GKLӈ PUTRSOVQیjΔݕlmHϔДEc ͸SϸǸθʸȸɸ˸Ƹ̸bŏ\ntBAv@nporqsIo єƽʽŽǽȽɽucpqp|ʿwyȿquxƿɿ{stzrvǿrSqwst"J uxXYvFIKHJRrHIKJPHKn mnWVo`иCFED̿ŕ˿y{zmqTSdLt[Ns ~}STd~\^cƏOoCA@BѸUsIGHǏ}|}LULMD qrpTRQXPYVSWUO_Y^`Z[X]\ՓDFtEIN0 CsB@GAH߸ڸոָҸ޸׸ܸӸԸPMEJQٸrGPN OKNLݸFظlLx{NM}ϽOKy۸|zwJuֽҽٽڽ˽ս*O ԽνͽӽнQؽ̽׽v۽ҿ~ͿӿϿٿԿпڿۿؿѽѝοܿտPѿK׿ t~ܓlQAu Ow@BCwx@NMPQAV[RvXcWZY CB@A@MNgmyz{P‹ԃփՃX׃ڃكV؃Ӄhb~bjS|VW^TY Z\][eUXWORIPJKLNPSOZTSQRMcGHFQQONXRTVUWSM[\ˎg݌̎e]^2Tdfa͎`_WYdX VcmdiaehiknYfl`_edkjffgm@ByAȏËxXZzRPtUh DDZaΓSܽݽvbHVUWQRݿ޽޿FE\[{VlI YZX|߿Gst]^hfcgedy}JLQSRUOKMTW@PN [`bTSUΒ߽@zA{:X4 BHIaJW|RC~BS\vEBDP|}݃܃nPlqhp_akc`fjidebUWX|Y$YZ[V\GZ[jmތip rhΎoCqnoߌŋċZY\ji\]vu\]_EZ$X} WVr_b`aeTfcdV~FLNKMTow[lk[Gg` ^Yl]\_Z^honpmrikgjqssƋF][aYB[bHX]c`_^W\ ZIAC@EBFDWm\ JtDEA@CBKDROSLQPTM~]N CEVדUa`^]bcF_\QPOpn`ߕIOPQӔ^ URԔyxcabmn}SCAEFLHJTBIUKDGb@acuJ_wv{ xtyz|gfdeMNIJKLH@GpV`WFGHXIՔXYWVZXYWFdeHG Qaރ߃Hyknlm_`_^`ȋa VU]_^uxwt|{vzspqrvstINjdɋ@AYG|GdAZ[֔[ʋÓNDwcb ~ey\]bxהnadv|~{r}zjgnEilRc|* *+,-.h/P0810234 456789:;<=>?@tATB@C,DEEFGHIJKLlM<N(NOPQRStT\U`VdW8X,YZ[[\]^_`abctdl.dthe}kmf ^ubpzvcz~w|roq}uxty{sAؔMegi_Nfj`FBGO~e PErJCBMLKIN}DFHٔxaaRCASbDBQPOMNfh UoRSQT@WobfygT ƍqprl{ώVWTnSZh4YXk\[PZUm QRnqim»ljpkhoYHJVWUQGZTFIXKLM]i \ [\Zfut@Asz_a]`o^psUTSLsuƻûŻĻtr]ja^_M`[\J K]LyfOPNcR_Q^d]HI k C]qeoؒV\q BxvzJywICB@CAfmlbljbqeovnyguc iwLhxzkhrswutfrvitsdgpj_kalWYemZ\fl[n {db^c`@XoÑg]pq_rsCxđǻz̻лmȻtuɻv~w ѻͻ|˻ʻyλ{wvϻ}RKxZUgPqyOVz(neTqcdNXtysowuhb}W~{x mkf|n{jz}S~v|rlQőpYiXtDAjoC B@@CEEBADڔƑ۔֋p|UBy D qs`Y Nc[eU_aWX]bjgk^Zhj\VdfiSVܔrs cqWalhrbetmpidž`ÞoXkugnĞŞƞǞBf@0sȞ ɞDʞAC˞Y̞͞ZΞϞОafOhўIdjNJK`gMeL_cb[^rti\ҞӞmplnoijgԞ kh]՞KM֞^XLNJמ؞DٞSRT_U^Vruthsڞ۞rpqwu| Ǎٍ֍׍F؍s_svq]txwvuOnrZ~[hgs\`ji`_kuvllopDmv YqXr^tюa^fbjhlՎj͏igdckeBҎ΋Ջ8wlNd֎׎_Ԏ]efЎӎ؎D@Ag}}C hEijz~{|iӋkhkzx`{|ԋ lBQT}PmRMS`ыϋЋҋɏˋ̋͋ʏnopˏaHqC|ܞDxvcy\ {ݞErFݔ}zy|{~{ޔhstһkջ׻ֻޞӻԻߞ[\uMKIJFFNHLz@ GnlmwxEGFPmlkdڍVz|~}y݄wnGIo@{,qpmڎَ HIJKLG`lUWXXVYW¨| B@r؋ EF~|}gvxIHKJG}| |~jkiػڻٻwGGHOIxyoAGyًL}nomۻl[ ʒܻPJptqusmyBH^sprڋH~ݻ]^_`Q NKPSLROMwvx~}z{|`HISznQRo{qEG FW|}~CێtQRmDaESMuvߔ޻߻c bdVUTTA@}{~|y@z~JKpOPHi CBqrΏۋaWD܋XALM|PQN z|wx{y[ge[f{YZU[BYXVZWߓh EJFIHGDBECFҝ@AQNOPrVUtsI`X~|}Lba{wts ܎F_`a^]ދϏahGBDuRS tsuuߋaJHOڕ~}ϓX0 iGp\kjlqa_r^]`\K^]_NLMRKQTSPOsDJHI CDXWUTYvwXvVwtaYumxbyvwݎ dcxbЏPUv`WVwLxy KJnqsrtpmozĕcfdc{ihgbbaedZ|^[]\Y_b`a@` XcM]EF}U`^]ca\Z[_bx~y[Z}|Y{Xz }~{x|yzRSJvjkzzގIߎL cJeLfMdKbb|ljmdk&fя fdeyy\LKbIhvwWnqpoghfehh gOPGgihcTUVKcxiJ{r@zydiSRQ^ ]L|{}xvw sy tru|j{z~jmltosqpnkCBDAu.X WUTJK—IH×loVpė PŗmsqkvjrnutƗ`_Sp pZ\_[`PYW]X^MZ\[yxxwz@stˆ` ÈKLMNeOnoPpehNfjgiQRՏSTҏӏUԏVW64 ghXYZ[jOP\d]^OMNo_`ax a}~Hokp@lmnbGGz{~|vAy}BEFwcC DdYZr[MxOPEGNeHIL }{J|x~zwyKabdM>Rcuf^_ indgkreosjcmlqphbfNOa` a]b^c`_ba|{dx|J}\~}ňĈ׏ɉNMĉPhpqr kmlug֏hRiČQÌgqstrgfj^ePQSt^fG QQS|ReHcgkhsiƈ`a³lF4jtm klzdHu¶ÒrqԓLJKI\nofmvwd}un؏d4 xRpe~qr]gyso^|{zM(}tfN~uhij bTSgjihLj  s jkŌƌlkseʼnitvƉNf`gLh,ij kklmnopqrstutvdwdxXyTz8{$||}~|`D<(`8|X,l,, P.@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abc  GHIKOPQTY`ab@ hqtuwy{ @EVF JPp  @DK\dHi x^t FG NUXYeiklprs  Sb $( ǑȑϑБّؑڑߑfH e "P Ҕ=  ЕԕEFGH  –ĖŖ̖, nT   Z ޛߛ4 Ϝלٜڜܜݜv _`abcjmnopxy$| ÝĝŝƝǝ̝ӝԝ֝d ߝ< ST~ CG4 }L  p d8Px@l  @L\,Dh|D z|0 | Jwxyz{|}~  ICH‘]^ϡAСDGFաס֡HIϢТѢҢӢԢբ֢עآ٢ڢۢܢݢޢߢ@ġP ABaUb LX  \ FGáD PtHXPT  ^____`$P`h``$Xhainv) exp,(@ THjcodings-1.0.58/resources/tables/Transcoder_Cesu8_ByteArray.bin000066400000000000000000000013761433325321700245320ustar00rootroot00000000000000jcodings-1.0.58/resources/tables/Transcoder_Cesu8_WordArray.bin000066400000000000000000000003741433325321700245370ustar00rootroot00000000000000>B(0d8@vHPX`yh t|8 jcodings-1.0.58/resources/tables/Transcoder_Chinese_ByteArray.bin000066400000000000000000001320371433325321700251200ustar00rootroot00000000000000  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHI  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTTTTTTTTTTT  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWWWWWWWW  !"#$%&'()*+,-./01  !"""""""""""""""#$%&'()*+,-./0123456789:;<=>?@ABC"""""""""""""  !"#$%&'()*+,-./0123456789:;<=>?@  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLM  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZZZZZ  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRS    !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTU        !"#$%&'(   !"#$%&'()*+,-./012             !"#$%&'()*+,-./0123456789:;<=>?@       !"#$%&'()*+,-./01234  !"#$%&'()*+,-./01234567888898888  !"#$%&    !"#$%&'()*+,-     !"#$%         ! " #$ %&' ( ) *   !    !"#                                  !"#$    !         !"#$%               !"#$%&'(          !"#$%&'()*  !"#$%&'()*+,      !"#$   !"#$%&'(                                 !                                                        !"#$%&'()                                                    !"     !                           !"      !"#$%&'()*+,         !                                                      !                                                           !        !"#$%   !"#$                                                                                                                          !"                                    !                                                                !"#$%&'()*+,-./0123456789:;<=    !"#$%&'()*+,-./012345 6 7                 !"#$           !"#$%    !"#$%&'                !"#$       !"#$%&   !"#    !"#    !"#$                                                                                        !"#$%&'()*+,-./0123456789:;<=>   !"#$%&'()*+,-./01234567      !"#  !"#$%&'()*+,                     !"#$%&'   !"#$  !"#$%&'()*+,-./0123,456789:;,<=>    !"#$%                  !"#$%&       !"#$%&'()*+,-./0123456789  !"#$%&'()*+,-./0123456789:  !"#$%&'()*+,-./0123456789:;<   !"#$%&'()*+,-./0   !"#$%&'()*                             !"#             !"#$%&'()               !"#$%&'()*+,-.    !"#$%&                  !"#$% &'()* +,- ./01234                !"#$        !                              !                            !"#         !"#$  !"#$%&'         !"                  !"    !"                                                                                !                                                                                      !        !"#                                                                                                                                              !"                                                                                                                                                                                                                                                             !"                                     !"#                  !           !"#         !"                                                                                                                                                     !"                                        !"#  !"#$            !"                                                                                                                                                                              !"#$%&'()*+,-./0123456789:;<jcodings-1.0.58/resources/tables/Transcoder_Chinese_WordArray.bin000066400000000000000000003774141433325321700251420ustar00rootroot00000000000000 ` 8     @    0 @ HPX`hp x!#%&( )+,./1$24,5748:<;=D>@LACTD `F\GITJL\MOdPRlSUtVX|Z[]^`acdf gi(jl0mo8pr@suHv|0 ( 8 @HPX`h p!#x$&()+ ,./124$57,8:4;=<>@DACLDFTGILJLTMO\PRdSUlVXtY[|]^`acdfgi jl(mo0pr8su@vxHxPy{,|~4<DLT\dlt| (08@ `8@HPX`hpxрԈ אژݠ$,4 <|0 ( 8{$|~,4<DLT\dlt| (0808@HPX`hpxԀ׈ ڐݘ$,4h!p " ¡d @ `* 0 l  ¦æĦŦƦǦȦɦʦ˦̦ͦΦϦЦѦ ҦӦԦզ֦צئ2t ѧҧӧԧէ֧ا٧ڧۧܧݧާߧt ק|x*    \$  <  | ʡǡơ̡ءޡϡΡġšɡȡҡӡߡáˡס " ֡ա١ԡܡݡڡۡ d ѡ͡ ( С @ ٢ڢۢܢݢޢߢŢƢǢȢɢʢˢ̢͢΢ϢТ *TѢҢӢԢբ֢עآ¢âĢ l©éĩũƩǩȩɩʩ˩̩ͩΩϩЩѩҩөԩթ֩שة٩ک۩ܩݩީߩ < H  2  t    x4t 8L4@ :  |L ¤äĤŤƤǤȤɤʤˤ̤ͤΤϤФѤҤӤԤդ֤פؤ٤ڤۤܤݤޤߤ   ¥åĥťƥǥȥɥʥ˥̥ͥΥϥХѥҥӥԥե֥ץإ٥ڥۥܥݥޥߥ  ŨƨǨȨɨʨ˨̨ͨΨϨШѨҨӨԨը֨רب٨ڨۨܨݨިߨB (| xX` Դپ þԹ˳žJH  Ӵֲۼݷ·l   ͵κ۰ѼR ޳ĽH ٴx@d@8@ Zp ټ ߴ(  l b ˿Ҷ˰ع߾ Ըڹl մ˻ʵ( ַոι̴̿j| й˽ Ӽٽ 0 Ҵ׳˷r@ ܻ ޲Ǿ\ βڿŹнȰɿź8 ԳϺͷɰֶԷԿz| ʳǺ8׾ ͺ̾ȿ ߶޿ߺ@`   пȷ Ⱥ Ht μ¸ٺ d  ػڶѴ̹P ص` ӿӰط ѿX dzX Ѷ̵¶ 0   ն  ڱǿ`  м D ܷ°ú  ʶ˼& 8 ùh      .  ޼յp   T ׿¹ | ٹͿ»Ҽ6  żļܿѹԶx ;߳־ Ӿ ڸ>  ޴ 8 Fx ޾Ͱ ұ۵ ϻɸû  ӱ׵Ϸȶ N  p ױڳܵ  ʲ˱!< ܺõµջ!V رɼ޷!( ddt|8Tt0Xxl\XP ( x   <  0   |   L t 0p|h4   ֹ! лֻֿ޺ҿ"T ڻ¼"^ ݻҲͳѲ߹̻"\ и߷" ȴŻۻ#$0 #ft ð# ɳؽ# Ųǰۿг$,p Ѱٿֵ$n չܾΰоݰ$ ֳҹӻ$D ưݾݽ%4 ޶ӽؿ%v8 ҽ% %0 ڰݴ&< ų&~ ٲ&T ĸŷ' ʹеȾֱ̽Ҹض'D ߰϶' L ȼɾ'  ( !8 λ޻(L! ("$ ܲ("l )" ˸IJŶܸܽ)T#, ݿܼϼ)# ذ̸¿)$< ˺*$ ۽*\%0 *% ÿ׹*&  +"&d +d& Ÿ+' ۲+'h ,*' ȳ,l' ,(( δ,(` ˴߼-2( вζ-t( ٻȱϱѱб-)T շ-) سڷ.:*L ײھӺз.|* ñ.+p /,  üƺ/B, ӵԺ/-  /- ɶ۸ʿ0.  0J. ȸ0. ε0/0 1/ 1R/ γİ10D 10LT(lh<0(L D !0!""d"#$#$4$%(%&&\&&'`''( (Xx(()L)*D*+h,,|--..x./(//0<0|0 0 21 ƵһľӲ2Z1 228 22 ٷ3 3 ͻ3b3\ 33 33 ְ4(4$ 4j4p 44 ҵѾݺƽ454 ²505 5r68 56l 56 687  6z7 67 Ϲɴ68 ʸ±׼7@8\ 78 ξ̰ôҾ798 ۺճԱ89 8H:T ǵװٰ8: ĵԽʻ޸8;( кǸܶ9;| 9P; ޽Dzö9 ̱:>p ŴĿǻ;> ;`?, ;?d ̺;? ѸƿӳƳս<&@ ̳ްڼ6C@ شɻ>xC >C ۷ִ>D ڲ?>Dl ?D ?D @E @FE @E0 ͼٸ׷ķ@EH ʽ̼´A E ж޵ɽ׸ANF ޹հAG AH$ ԵBH12023 3T3344h45,5606d67778 8T8909:L:; ;t;<\<=$=>>h>?$?\?@@@A AAB\BC8CCCDdDDDExE(E@EFGHH|H H ĺҰܳBVI ۾ϴBJ ǶظθɹʷϿηBJ CKx ŽC^L  CL CM ۱ ʾD$M` ˾ղDfM DNP ڽҷŰDN ԲE,OT ĴEnO ݲĻԼɺEP EQ  վʺ˲ƷF4Q FvR  дFRt ٵFR ͱG<S, ̲αG~S GS HT$ زHDTl HT HT ϲI U4 ƹ׻ILU IV, ȻIV JW  JTWd JW ֽijJW KXX òK\X ӹֺKY  KYl L"Y ۹ǽLdY LZ, LZH M*Z` MlZ| MZ ƼǼ÷MZ ʴϳø̷οN2[0 ѻȹNt\4 N] ѺN]h Ʋܰѷغּ߻O:]Ķʹ ӸպϸO|^, óO^ ϰP_@ ȲPB_ ıŵ׶ڴP`, P` Q` νQJ` ϽԻǴٱ߱Qad ٳϵűQb JJKpLLMMXMNHNOLOP|QQRRlRS$SSTTdTTU,UV$VWW\WWXPXYYdYYZ$Z@ZXZtxZZ[(\,]]`]^$^_8_`$```a\bbRb ݵѳƱRRc ݶܱRdL ˵Rd ºSeD ɱSZe ƾӷͽSe ״Sf ɲT f Tbg( Tg< TgT U(gh Ujg| Ug Ug U(g V0g Ƹ۶ָؼVrg ½Vh ͶViƶ W8j ձWzkҺ Ӷ׽Wk ʼ³ݱWl X@m0 ͹ƴXm ԰Xm ǷаYn` ϾޱYHn ¾Yn ˹ٶYo,ռ ſߵZoh ɷZPp ͲZp@ ȽZp\ ݹ[p ۳Ծݼ[Xq8 ҳǹ[q ߸[rD \r \`r \s \s( ]&s ]ht\ ׺]t ]ux ƻں^.u ĹDZ^pv, ݳ^v| ^vdDde<eeffg xg4gLg`gtggggghijkklm(mmnXnno$o`op8pTpq0qr<rrss stTtupuv$vtvv_6v_x £ãģţƣǣȣɣʣˣ̣ͣΣϣУѣңӣԣգ֣ףأ٣ڣۣܣݣޣߣ w _x _yhxxy`y`y``y*y`y8XpxltDh1Icwwyyyy`y az< þԹ˳žaz b{$ ݷ·ba{ b|H ͵κ۰Ѽb| ޳c'}4 ٴci}xz{{|@|},}~~ ֲc~8 ټc~ ߴd/ Ľۼdq\ d ˿Ҷ˰߾d  ڹe7 մ˻ʵey$ ַι̴̿e ոй˽e Ӽٽf? f Ҵ׳˷f` ܻg ޲ǾgGd βԴڿŹнȰɿg ԳϺͷɰԷԿg\ ʳǺh ׾ ͺ̾ȿhOl ߶޿ߺh h пȷi ȺiW\ i μ¸ٺit ֶj j_ ػڶѴ̹j صjX ӿk% kg8 dzk Ѷ̵¶k l-H նطѿlo ڱӰl мlh °ܷúm5 ʶ˼mwP m m  n=X ޼յn n ׿¹o0 ٹͿ»ҼoE żļܿѹoD Զ;߳o־ Ӿp @ ԸpM p ޴ڸpP q qU ޾Ͱq, ۵q ϻұɸûr ӱ׵ȶr] Ϸr ױڳܵrX ʲ˱s# ܺõӴµջse8 رɼ޷s~~TX\Td|TlP0x@`H P(<8H$|P04 < ֹsH лֻֿ޺t+ ڻ¼tm ݻ̻t иt ȴŻҲѲ߹ۻu3X ߷uu ҿðͳu( ɳؽu Ųǰۿгv;  Ѱֵv} չܾΰоݰv ֳҹw ưݽwC ޶ӽؿw` ҽӻw x T ݴٿxK ųx ٲݾڰx ĸŷy  ʹȾֱܰ̽ҸضеyS б߰϶y ȼyt z λ޻z[P z ܲz {!t ˸IJŶܸܽ{c ݿܼϼ{d ذ̸¿{ ˺|)( ۽|kp | ÿ׹|, }1 }s Ÿ}8 ۲} ~9 ȳ~{@ ~ ~ δA( ˴t в߼ζǿ ٻȱѱH շI سڷ8 ھӺз ñ0 Q ƺ Ժh  ɶ۸ʿYL  ȸ ײӵε` a < γİ ü'P XLlHl\ h$08| l@0( `DX4\ d ip һľ ( / ٷq ͻ l ƵӲ7 ְy   ҵ Ѿݺƽ?8 ²   G      ϹɴO( ʸ±׼x ϱ ξ̰ôҾ\ ۺճԱW H ǵװٰ ĵԽʻ޸\ кܶ_ , ޽Dzö ɵ% ؾ̶ýgd  ( ̱-| ŴĿǻo T ä ̺5 Ѹƿӳսw` ̳ްƳڼ տ$ ѽ߿=x ܴ߽˶͸ ʰѵڵ@ ʱȵ߲ƨ ܹEڽ ݸ۴d شɻ    ۷ִMp ڲͼ ׷ķ@ ʽ ٸ´U, ж޵ʬ $ ɽ̼˘ ] ׸@ ޹հ\ #̼ Եe( xdx0|x pT@T$\ tLÜXļp8Ơ\h8$ʤː8xT̴ ̈́ ͌ ĺҰܳΘ ۾ϴ0 ǶظθɹʷϿη+ϐ m ŽР  3ш۱ ʾu ˾پɾh ղ ҷŰ;l } Ĵ| ݲĻɺ ԼCH վʺ˲Ʒլ   д ր ٵԲK ǸͱL ̲αפ  Sl ز 0 źل [ ׻8 ڜ Ȼ! ct  ƹϲD ֽ)ܤ k ò` ӹֺ ij1( sx۹ ǽ ƼǼ÷ ʴø9߈ ϳο̷{  ѻ Ax  ȹ  ѺƲѷIdغ߻ ּʹĶ Ӹ պ óϸQ ϰP Ȳ ıŵ׶ ڴY  ϽԻH ν ٱǴa ϵű8(ψИр`dt@դxDלd(|0ڔl<ܜX p߀xpx\|H |@0  ѳƱ ݶݵٳܱ'H ߱i ºl ɱ˵ ƾӷͽ/4 ״q ɲ8 ۶Ƹؼ ½78 y ָ t ƶͶ? @   Gh  ձҺ ع\   ݱ³O Ӷ׽ʼd ͹ƴ ԰\ ǷаW Ͼޱ ¾` ٶռ ſߵ˹_$  ɷ ȽͲݹ% gh ۳ Ծݼ ҳ-D o ǹ ߸ 5| w $ h = ( p  E ׺  \   M  ƻںL ĹDZ ݳU l@d,00l8`xT\TX|`<t` hTDd8XpxltD~0@hΐwyyyy`jcodings-1.0.58/resources/tables/Transcoder_Ebcdic_ByteArray.bin000066400000000000000000000004061433325321700247050ustar00rootroot00000000000000  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~jcodings-1.0.58/resources/tables/Transcoder_Ebcdic_WordArray.bin000066400000000000000000000035741433325321700247260ustar00rootroot00000000000000   .<(+|&!$*);-/,%_>?`:#@'="abcdefghijklmnopqr~stuvwxyz^[]{ABCDEFGHI}JKLMNOPQR\STUVWXYZ01234567897-./%<=2&?'@Z{[lP}M]\Nk`Kaz^L~no|myO !"#$()*+,  01345689:;>AJj_debfcghtqrsxuvwiYDEBFCGHTQRSXUVWIpjcodings-1.0.58/resources/tables/Transcoder_EmojiIso2022Kddi_ByteArray.bin000066400000000000000000000636121433325321700263640ustar00rootroot00000000000000g@BBJ$(!~  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^   !"#$%&'()*+,-./012345  !"#$%&'()*+,-./0123456789:;<=>  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRS  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUV  !"#$%&'()*+,-./0  !"#$%&'()*+,-./0123456789:;<=>?@AB    !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRS  !"#$%&'()*+,-./0123  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[  !"#$%&'(   !"#$%&'()*+,-./012                    !"#$%&'()*+,-./0123456789:;<=>?@  !"#$%&'()*+,-./012345678  !"#$%&'()*+,-./0123456788889:;<8          !     !"#$    !                                  !"#$   !"#$%&'                         !"#       !"#$%&                                                                                                           !"     !"#$%&   !                                      !"    !"        !                         !                 !"#                                                              !      !                                                                                                                                                                                                           !"                                                                                      !"#$                                                                                                                                                                                                                                                        !"#                                               !"#$  !"#$%&'()                      !"#                                                   !                                                                                                           !"#$%&'()*+,-./0123456789:;<=   !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!   !"#$%&'()*+,-./0123456789:;<=>>>    !      jcodings-1.0.58/resources/tables/Transcoder_EmojiIso2022Kddi_WordArray.bin000066400000000000000000002252001433325321700263650ustar00rootroot00000000000000J $,HPXY`t|N\D $ (^   CeP,4<DL!T"$\%'d(*l+-t.0|235689;<> ?@|BCEFHIKLN OQ(RT0UW8XZ@[]H^`PacXdf`gihjlpmoxprtuw w0xz8{}@~Ht|<  x H$,4<D!L"$T%'\(*d+-l.0t13|5689;<>?@tAC|EFHIKLNOQ RT(UW0XZ8[]@^`HacPdfXgi`jlhmopprxsuww(xz0{}8~@@`H 롒ޡa ߡࡒ  ¦æĦŦƦǦȦɦʦ˦̦ͦΦϦ'$ЦѦ ҦӦԦզ֦צئi ѧҧӧԧէ֧ا٧ڧۧܧݧާߧ৒᧒⧒㧒䧒姒槒秒角駒꧒맒짒戮 ק/,, ơǡȡɡšġ졒QD ⭒䭒     ͢΢ Y,Ϣ ߢТ࢒碒硒¡ʢˢꢒ衒梒 D ⡒塒桒㢒䢒    ޢ a    x  '  i  @  hꡒ 顒 /$<p8`x q ҡӡԡա֡סء١ڡ̡ۡ͡୒᭒  ¤äĤŤƤǤȤɤʤˤ̤ͤΤϤФѤҤӤԤդ֤פؤ٤ڤۤܤݤޤߤ `ऒᤒ⤒㤒䤒夒椒礒褒餒ꤒ뤒줒裸  7l¥åĥťƥǥȥɥʥ˥̥ͥΥϥХѥҥӥԥե֥ץإ٥ڥۥܥݥޥߥ॒ᥒ⥒㥒䥒奒楒祒襒饒ꥒ륒쥒勒  yX ꭒ뭒쭒 T 孒歒筒譒魒 p ƭʭĭ­̭˭ŭͭǭϭ? έíȭɭ߭ﭒ ӭԭЭѭҭ֭ խ㭒,XdPLh$<GD찒Ò ˒澒徒ɒ͒ВВҒֵʒ羒ΒʒВÒВВݴÒ缒ВВ| Вǒ׵ǒƒø˒В辒В嶒̒֒͒ƒ  ВВΒ͒ВƒВ߸޸氒ϒϒВВВ˒В簒˒ĒΒВВВͿ hοВ ВВصВВʒƻŻ’ВɒВВ’ΒʰВĶÒ﷒ВǒO봒 В˰ฒ촒ɒȒٵВŒǒВȒΒǻ ĒÒВ̰Ē͒’В͒ВВВՒВВВ²ʒВВȻ ВВΒВВВВͰՒ˒ɒΒʒx ’䲒ӽВВВВ’ВВВʒВ˒ВВВǒɒВʒВW`pdl ВВĸǒВŒВВڼВʒÒВВВВΒВϒ涒 ВВВΰʒВВВВĒВż’ĒВВ В˒淒ȒВź͒ВђВĺ_ ђ϶ђђƒ˒ђΒђђђђђђђʒђђ ђђђђВђђ͒̒ђђђђђ8ђ Òђ̒ŒђђŒђƒђђȒϒђʒ’Œ%ђ ђƒ߱ђђƺђђ˒ђђђ龒̼ђђ̒ђɒђђђŒђђђђ㺒ђ̒Βђg4 ђڽђÒΒŒҒђŶђ˒轒’ђƒђђђƒнȒђŒ ϿђʒђђђΒ齒Ȓʒђ͒ђђŒђђɻ﹒\ Ēђ’ﺒђђђђ˒乒ђ޺ǒђђɒ꾒ђ䳒ђђђђ- ijිђΒђђђђΒòΒŒ幒ҒҒΒϒҒҒoTҒ ˒Ē͒ʒҒƒҒ̒ҒʒҒҒжҒҒҒҒҒۼ̒̒ƒ ʒҒҒҒҒҒҒ˒ҒҒȒҒҒҒҒɒ趒尒ƒTҒ ҒҒḒҒȒҒȒ’’ƒÒǒ˒ҒҒҒ’ѵ͒ҒҒ5 Ғ̒ҒΒҒҒҒ߿ޱҒҒҒwp Ғ˒ڵ͒Ȓǽ輒ȒҒñŸ綒ҒÒ’ҒҒIJ’˻湒ʻҒ ҒɵƳ繒ȵĒƒ̒͒ŒҒ㶒˒ȒҒ޴ҒҒҒҒ۵ῒʒҒҒ㸒pҒ ϒʒĒ⸒ҒƒҒҒҒ̒ҒҒҒҒƸ̒=Ғ ҒҒϒҒҒҒҒҒӒҒҒӒҒӒ麒ҒӒӒXɒӒ ҒҒҒȺӒӒӒӒ˒ӒӒŒӒӒ ӒŒӒӒ͒ӒӒӒ’,Ӓ ’ӒӒ̒ӒӒӒӒӒӒӒӒEtӒ ӒӒӒÒӒӒ峒ӒӒӒӒʵӒı ӒӒԒӒӒӒӒ̻ӒӒӒӒӒ0 ÒŲӒӒӒ޲ӒӒӒӒӒ t ӒӒӒﴒӒӒӒʒƒȒMӒ ӒųӒӒӒӒǒӒӒӒӒӒӒӒӒӒ ӒӒӒӒӒђͻÒӒϰ޿ӒǸӒDӒ ʒӒԒӒԒԒ౒ԒԒԒԒŒԒߺÒԒԒԒԒ 互Ѷ˒ԒԒԒÒԒĒԒU ⿒ԒԒԒԒԒԒԒԒhԒ ԒԒ˒뾒ԒԒԒԒǒ谒ɒԒǒ뺒˒ ƒ’ԒԒ’ԒԒԒĒ᱒ʒ쾒Œ溒Ԓ ʒΒ ԒԒŒŒŒȒĒɺԒŒԒԒпԒν]h ԒʒĒԒ˒ԒԒʒԒԒԒԒ ʒԒÒԒԒ蹒ԒԒԒԒԒԒԒԒλѿԒǒĒԒԒԒԒԒ ԒʒԒƲԒ͒ҒȽ’Ԓ̒̒Ԓ’Œ’ɒԒԒԒаԒԒ# ⱒƒʒԒԒ˒ԒŒԒԒԒԒԒԒÒԒʒŒՒe ՒǒȒ̒ǒՒ͒̒֒ՒՒ’˒ŒՒ˒ʺ ՒлϻȸѰՒՒՒՒ̒ɒѻ ҰՒՒ̒ՒՒՒՒʒ丒ՒՒ+`Ւϒ ǒՒՒɒՒՒ̒m ǒՒɒՒՒՒ DzՒՒՒՒՒÒՒՒՒՒՒ  ՒՒՒՒĒűՒՒՒ3TՒ ՒՒһՒՒ’ՒՒڻ̒ɸՒسՒ’Ւ֒ՒՒՒՒuՒ Ւ’鼒°ŒÒĒʒ¼ҵ͒Ւܵ˺㱒ȲՒ͒ɽ  伒Ւƒ̒ՒՒɒՒՒՒɲՒՒՒՒǒܒՒΒՒՒÒՒ’ ɒͼՒՒՒӰ’ҿՒƒՒՒՒ̒ՒƶՒՒܼƒԿȒǒ;DɶՒ ﵒՒƒӻՒ֒֒ՒŒ’Œȼ͒֒֒ƒ֒֒} ֒֒֒䴒֒̒’ٳ֒֒ߴ֒֒֒H ֒֒֒ƒ岒֒֒֒ʒʒŒ֒Խ֒ ֒꺒֒֒֒֒֒֒֒֒֒֒ʒC ֒֒֒͒֒֒֒֒֒D ֒֒֒Œ֒֒֒֒֒֒֒Β֒֒ ֒ഒ֒֒֒֒֒佒֒ʸ֒̒ǒ֒ÒҶ  ԻɒȒ֒֒Ē֒֒֒Ē㿒ջ’Ē֒֒メ˒ KX֒ ֒֒ɒ֒˒֒֒˒֒֒Ȓ֒ʒ֒ʒǒ֒֒֒͒͒֒  ĒȒĒʒŒɒ֒Œº˸Ēð͒ < ֒֒ǒ֒Βϒ֒֒dzגגגגɒגגגגגגגגגג䱒Ēגǒגƒ! ʒגϒגʒגВВƒגݵĒגʒÒĒ̸̒גגג弒ĒגɒÒ!S0 גגגגגŒגגגגגגɒ̺ɒĒɒגƱגג̒Ȓג!גג·’ גגגΒ帒גŒƒגגגג渒גɒ۽גȒƒĒŒג!H ɒǒגֻ˒˒גÒגؒגǒגגג"|0,TLLhhP$l(l<``XL<@<P4(@4 < גגגŒגɒגגΒ׻’ג޵ג屒גגגג"[H גגגגגΒגגגגגגגÒגגג’泒÷ג" גגؒؒĒגؒؒؒגؒ縒͒ٱؒǒȒגؒؒ̒ؒŒؒ"4 ؒƒϒؒؒ԰ؒؒג’ؒؒؒؒ漒ؒؒ#!ؒ ؒؒ̒̒ؒؒհؒؒؒؒؒؒؒؒؒؒ#c4 ؒؒؒؒ’ؒؒʒؒؒؒؒؒ˒ؒŷؒΒְؒؒؒؒؒķؒ͒# ͒ؒؒΒؒؒؒؒؒʒƒƷؒؒؒؒ#< ؒؒؒؒؒؒؒؒؒؒĒؒؒؒؒؒؒؒؒ$)ؒ ؒؒʒؒؒ沒ْْْْْْْؒؒ᷒’͸̒˒$k꽒ْ Ȓ꼒ͺْ’ʒ’ْْْْْʒɒȒْْ$ ْْْǒْْْ͒ŒْْȒ’ȒڒʒĒ˒ْÒ$ ْÒْْْْْْǒْْ’ْْْǒȳ糒ْْْْ鹒ْ%1t ْػْİْĒْúĒȒْ%s  ’ْْْʒĒʒμْْْƒǒ%`ْ ْْْǒْݳْΒκÒْ俒汒ْŵǷĒْْ%ْ ’ْْْɒĒْْْ͒͒籒ْ͒&98 ْ’ْْْْْْْȒŒْْȷ&{ ْŒْ˒ْْ̒& ⷒْْْǒƒŒْْɒǒ˒ɳڒْ& ͒ڒڒڒڒْڒڒڒڒŒڒڒڒڒڒڒڒڒڒ'Atڒ ڒڒڒْڒڒْڒڒٻڒڒڒڒڒʒ' θڒڒɒߵڒڒǒڒڒڒƒɷڒŒɒڒ'H ڒڒʒՒɒغȒȒŒΒڒмڒԶɒڒ»Òۻڒʒܻ( ڒڒڒΒڒڒ’ڒڒڒڒڒƒÒ쵒ݻܽڒڒ(I0 ڒڒ̒װڒDZս˒ڒڒڒÒے( ڒڒڒڒڒڒڒڒڒڒڒȒɒʷڒÒ(0 Ƕڒڒ˲ڒڒڒ뽒ÒŰڒڒĒΒûʒ˒ےڒڒڒ) ڒےƒڒے콒ے͒ǒےےےےʶȱےےҒ’)Q Ǻ В͒ʒɒےĒےϒ˒Ēےےے̒̒˒˒ے뼒˒ےےے൒ے) ےے͒ɰຒ’ݼےŒے’ے̒ےے͒ےǒےŒڒڒϵǒےȒ)( ےȒےےے˒Β˒̲޻ϒےےےϸےےͲےےے*’ ʒےɒےǒ˒Ē͒ےےےےےےےےےÒ̒Ƽ˒*Y( Ēƒɱےےےے˳ʳϺ*ے巒˷Œ ےưےےͶ˵ے˒ےɒےےےے* ΒےǒےےےےےےےԒ踒͒ےĒےے᳒ےےŒ+| ܒ̒ےے˒ܒܒܒےÒŒܒےܒܒܒܒ+aϒے ܒذے̒ےĒےܒܒܒےܒܒےܒܒܒƒܒܒܒĒ+d ͒ɒܒ’ܒܒܒܒƒܒƒܒܒȶܒݽǒܒ˶ܒܒܒϒڳܒ+ ܒ纒ݱܒϒܒܒܒܒܒܒܒܒܒܒܒ,'` ܒܒܒĒܒܒܒ͒˒ܒܒܒܒܒܒܒܒĒܒ,i ܒܒܒȒܒܒܒܒÒɒܒܒ̒ܒܒ߳ܒܒܒÒ,, ܒܒܒ̵ܒƒܒܒܒܒ೒,Ò ܒܒ鸒ܒݒےܒܒܒݒݒےݒݒݒ-/ ܒݒݒݒϒݒݒݒȒݒݒݒ-qL ͒ݒܒݒݒݒ緒ն͒ݒݒݒֶ-˜ ݒݒݒβÒݒݒݒݒݒݒ߻ɒʒϒкΒݒݒ໒ݒ-ݒ ݒݒ˒޽켒ĻݒݒݒݒݒݒݒݒݒݒݒÒݒ̳ݒŒ.7dԒ ݒݒʒ˒ƒݒȒȒ̒ݒݒݒݒݒ.y ݒỒ̒ݒݒݒݒݒ忒ɒʱȒ.0Ēᵒ ȒݒƒݒÒݒݒݒ’ⵒݒ跒ݒ.x ݒݒ͒Ēƒݒݒݒݒݒ˒’˒ݒݒϲʒ̒ޒ¾ݒݒ豒/? ݒݒǒȒݒ˒ݒޒޒݒ˒ǒ㵒ŒÒޒޒ’ݒ˱/d ͒ޒޒޒ͒ƒޒĒ̱ޒޒޒޒޒ賒ޒǒ/ Βޒޒɒޒޒϒɒ͒ޒ04 ޒþ͒ޒޒޒΒŒƒձޒޒΒ0Gƌ͒ ޒޒޒΒޒʽޒޒŒޒޒÒޒޒޒޒޒޒ߽ʒޒޒŒ0 鳒Ѻľޒ½̷ޒޒޒޒŒޒޒޒ’ޒޒޒޒޒ0l ޒ̒ޒޒиžÒޒ͒ޒޒŒޒޒϒ1 ˒ ޒȒޒདྷޒΒ¹ޒޒޒޒޒ͒ޒŒޒ1OL ޒޒ̒ޒޒ곒ޒޒޒ’’ޒޒޒŒߒޒޒޒ1Ȭ ɒϒޒߒ鱒ǒΒ̒Ēޒޒߒޒ1  ޒô鷒ߒߒ㳒ὒߒߒĒߒĒߒߒߒߒ2hߒߒߒ ߒߒߒ´ߒߒߒߒŒߒߒ2Wɼ㷒’ߒǒ ߒߒߒߒߒߒ깒ǒޒ͒ߒߒ’ߒߒߒߒ2,,4lX0l@(( t\X$D\(p\,ƄdDȤ`ɴt | ߒߒߒߒߒɒߒߒߒߒƒߒÒ’ߒߒߒ2ˈ ޒߒƒߒвŒ䵒޼Һ3 ϒ濒걒ߒߒߒÒߒߒߒߒŒٰ3_$ Βߒߒߒߒߒ˒ߒ3t ߒ뱒ߒʒߒ̒Ǿƾ3̨ Βߒߒߒ챒ߒǒߒߒȾȒߒѼ4% ߒߒߒ͒ߒϽߒߒǒߒߒ4g< ǒŒߒߒΒߒߒߒӒߒߒߒҒߒߒߒ4̀ ǒĒ߼ɒ̒4 ʒȒǒĒ粒̒̒ϒ˒ʒƒ5-HԺ Ȓ5oά Ѹ鶒ƒÒϒǒ5 ̒ΒÒǒ͒͒5` ⻒ýͳ65ϼ Β̶궒ᴒΒ6w ѲĒȒ6@ 嵒͒Β’Β׶Ȓǒ6Р 긒ͱΒ7= ͒Ĵ7T ɒɒ7ш ŴӿŒ͒ʒŒ͒ùÒҒĒ貒8 ڒڰȒȒΒÒȒɒΒͷȒ۰ƒ8Eh ɒֱȒ8 ɒɾŒĒΒÒ8l 9  Βⴒ̒ʒȒŒǒɒ9M  ŒĹȒ9Ԕ ǒ˒αױŒݒ̒ƴȒ̒̒Ē⽒9  ʾȒǴ̒Ē㴒:ՀÒ 習ƒ˒:U ʒֽΒƒ:$ ̒̒Òǒ붒Ò:t պŒֺε˒ǒŒܹ; ˾ΒŹȒ;]  븒ĒȒ캒ϒʒγ;H Ȓ˒밒;ר ̾ΒҼ<# 㻒͒˽ǒ;ɒ׺Œ3, ɒȒŒڶȒÒŒŒ>uې ʒղǒ̒ɴÒȒȒ> ȒʒÒļƒϒ>d ҒʴȒΒʒ?; ʒ̒?} ζʒ迒̒ΒǒǒͽѾ?p ҸŒʒǹΒ廒Ϸ굒@ ̒ȹ̒ǒɒ㽒Ӽɹ滒鵒ʒ˒绒ĒΒٺ¿Ҿ@CX з뷒ʹ͒뵒Œ@ ѷ’ݰ˹̒ĒÒ̒@d ۶ȒΒrĒʒ˴̒ްΒA  ﱒƒǒʼĽ˒̽AKP Ȓҷ˒A ŒA8 ̴B ẒӷÒȒǒȒؒBS ͒͒ȒB ͒鿒崒ʹ˒͒Bl̠4x@ΤXϴ8ИLр`dԌxlּ@נ4؜\,ڈ$ۈ\ܸhP\H0|| ͒ϒ ͹Լ’̹̒̒ÒC ʒΒĒϒC[P ȒƒϒȒӾɒδԸ軒Ȓ˒ιϹ鰒躒ǒC ߰Òǒ’˒ոƒǒC, 黒ϒ̒ӵÒǒĒD! տɒйϒĒʒ’Dc ѹɒ˒ɒ˒ǒD< ’ÿ鲒Β껒ÒD ڒ˼ВʒܴؽɒҹȒ’ǒE)  ĒϴΒEk ɒǼǒĿֲ˒ݷܶ겒E  Β’ɒײ㼒춒ÒƒѱEd ̒زԷÒ’F1 շӹٲFs< дǒ͒F Ƶݶ۲ԾںŒʒڲָɒF ƒ˒ఒǒ͒G9L ͒ΒÒ볒ɒƒǒɒG{ վ̒ɒG Ò͒̒˒ϒG\ü ʒ̒Ē’ʒHA Ȓ־ɼɒϒƒɒH ǒƒſ̒̒Hl ϒ͒ƒȒI ݒݒ͒II0 ׸ԵђΒÒƒIx 㲒ǒI ؼÒַ³ȒɒȒ’벒J ˒Ò̒JQl ϒܲĒǒJ ͒͒J$ µK\ KY췒 Թޒѽұ׾չᰒɒ꿒Ò޶K ’’ȒӸKl ۺΒΒ͒ʒΒؾ͒L ʒ쳒˒La< ߶L ͒ʒǒ뻒ǒг͒ƿѴL ѳM'` Ē׷ֿƒ’پ˒̒ǿÒھMi ’۾ɒ컒ӱطϒ͵ϒܾM ظ͒ﻒǒÒ͒츒ƒÒݲȒõĒM ÒҴۿΒϒĒĒ͒’N/˒ڱⰒ ƒƒֹռ͒ɒඒNq ɒٷĵN ڒNt ÒO7 ƒ˒ƒݾ빒ВɒOy ˒Ēɒ⺒׹ɒ߲ȒӴÒ̒ǒ’ȒŒ˒O$첒ϒĒϒ ’ƒɒ޾ǒɒŒعO ’洒P?@ ϼҳɒP Ē۱’P ٸϒĒQ ͒ƒQGP ĒQ ̒ȿQ ּƒŒڷR D ӳܺʒǒΒ͒͒RO Œ칒R ɿҒђÒǒʒĒÒR\ ˒׿޷ᶒʒಒƒǒŒҽ̒ĒSH$4\4DTd(pdTd4Xl8|H<T ’ ƒյƒÒĒŒ࿒ǒĒ’’ϒ’ʿﰒɒSW( ƒ뿒Ò͒ʒᲒƒÒ㰒’͒Œ׼归䰒ΒȒSԴ ͒ƒ˒ټŒSt 값ٹϒɒԳ͒ŒT ŒT_ ƒ༒ǒÒ쿒ݿ͒ڹT@ 潒’︒Ȓ߾T ȒӺἒΒŽ̒ΒⶒŒ˿Ē˒U% ƒóΒڸUg ŒȒྒ۹˒U䶒 ƽƒ̒ĒUP ˒ʒԱɒÒݹV- Ӷɒ⼒ϒϒVo ƒŒĒÒᾒVt ĒĒV ŒW5 ⾒ƒ’WwP մ̒W W ĒX=̒ ʒ״ִشճ޹ȒܱX$ ǰƒX ɒ庒˒Y’ ɒ߹¸ʒؿٴǒĒΒƒΒ͒YE Β’ᅭֳ䷒ݺ㾒ΒΒȒY紒 ͒۸ҒΒƒʒΒ͒ŒY0 ̿ΒⲒ̒ϒےZ  ̒Ȓ̒׳ٿZM( Ȱ侒ǵʒZ ڴǒZ ʒĒ๒罒ܿ͒贒ȒƒΒ۷˒ƒбɒ͒[L ’۳ܳ鴒괒ŒΒܸ[U ɒ[  ȒҒݒȒ˒[D ̒͒±۴\ ¶\] ṒǒÒƒ\ 4 ǒ’رﶒÒﲒٽ\ x ’ƒ]#  ö]e  ] p ⹒Ȓɒ]  ݒ^+  ̒˒ϒ^m T ʒ˒^  ’߷^  Ⳓϒɒﳒ_3 \ Ò˒Β_u  ĒȒ˒̒ƒ_  ƒ㹒_ @ ̒˒`;  ܷĒ`}  ϒ’`< a aC ϒΒΒǒ̒˒֒ݒ˒a е̒’a8 Œݸɒb  ΒbK Βb@l8HlH( D< , p   h   L   T   8  408\bdc, c3l       cu     c $ 0 c< @ d; L   ! c"(48 D !"#d}# $( %4 c&@ d'D e'X eC'l ʡˡܡݡ㡒ᡒ䡒£ãģţƣǣȣɣʣˣ̣ͣΣϣУѣңӣԣգ֣ףأ٣ڣΡϡ 'ᣒ⣒㣒䣒壒棒磒裒飒꣒룒죒Сáѡ e) e)%,&8'<'P'd')))f )<fK))f}) $4<t@ˀ \d$ ))**f*jcodings-1.0.58/resources/tables/Transcoder_EmojiSjisDocomo_ByteArray.bin000066400000000000000000000651261433325321700266030ustar00rootroot00000000000000jR@  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmmmmmmmmmmmnopqrstummmmmmmmvwxyz{|mmmmmmmmmmm}~mmmmmmmmmmm@   !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~@  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWWWWWWWWXYZ[\]^_`abcdefghijklmnoWWWWWWWWpqrstuvwxyz{|}~WWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWW@  !"""""""""""""""#$%&'()*+,-./0123456789:;<=>?@ABC"""""""""""""DEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abc""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""@@  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRST@  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_@  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~@  !"#$%&'()*+,-./0123444444444444444444444444444444444444444444456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~@  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee@  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~@   !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwx  !"#$%&'(   !"#$%&'()*+,-./012                    !"#$%&'()*+,-./0123456789:;<=>?@  !"#$%&'()*+,-./012345678  !"#$%&'()*+,-./0123456788889:;<8          !     !"#$    !                                  !"#$   !"#$%&'                         !"#       !"#$%&                                                                                                           !"     !"#$%&   !                                      !"    !"        !                         !                 !"#                                                              !      !                                                                                                                                                                                                           !"                                                                                      !"#$                                                                                                                                                                                                                                                        !"#                                               !"#$  !"#$%&'()                      !"#                                                   !                                                                                                           !"#$%&'()*+,-./0123456789:;<=    !  !"#$%&'()*+,-./0123456789:;<=>?  !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!  jcodings-1.0.58/resources/tables/Transcoder_EmojiSjisDocomo_WordArray.bin000066400000000000000000002453541433325321700266160ustar00rootroot00000000000000R  \ ~ = p  z 9 d9`9\9X9T9P9L9 H9#D9&@9)<9,89/492095, 8(9:|9=x9@t9Cp9Fl9Ih9Ld9O`9R\9UX9XT9[P9^L9aH9dD9g@9j< m89n vq9t9w9z9}99999999 5Thx \XTPLHD @#<&8)4,0/,2(5$8 :t=p@lChFdI`L\OXRTUPXL[H^Da@d<g8j4m0nqtwz} N}L  ~ 5 wp ƒÃăŃƃǃȃɃʃ˃̃̓ ΃σ Ѓу҃ӃԃՃփ  F@ABCDEGHIJKLMNOPQRSTUVWXYZ[\]^_`pqrstuwxyz{|}~ = v   w ]\efghdc 0  %x TUVWXYZ[\] g   ˁ́ ́ ݁΁ށaȁɁ -0  o   ܁  @ABCDEFGHIJKLMNOPQRS5 wd   =, T lp(\$Ld@ABV XYZqrstuvwxyzklE ‚ÂĂłƂǂȂɂʂ˂̂͂΂ςЂт҂ӂԂՂւׂ؂قڂۂ܂݂Lނ߂ JKTU@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^X_`abcdefghijklmnopqrstuvwxyz{|}~ E[RS D M@ \ ei`cakjdlfn _mbgh~ rsopquU tDP<8Tx(0 Os^NuLۊOh TvVRh]T \]݌܌jiSlTYm wedtWMߗȈ‹CNO P˜Ɉތx`ĘLQf# ϒAȘʈZC̑Rǘ]ØŘƘCΘјϘɘ͘ge ҘʘT˘ИSVӘ̘UˈDN֕d WErWטܘژ՘ؘۘ٘ە֘MݘޘCoUZLx\P+X qŒ{|ߘ[؎Ylϗ`mX ^\̈Ε]ÎU T_PÍbBXp C͋@AlDaEHFmGI`KJƕ3VMN LQPOԘRSDזUTWVXu$Y Z[b[ƖeZ\}]cS_`ZaTb c~fečgh`ijkʎdnlmyopq~ustrvwe  xyyÙzË{}}f~Mʓo; nؐYgʕh}H OU܍n c͗hiw[JN@j uEוk΋MَܖCl mkxnٔC@\ ߌ™ڔPmęTřƙKopəș ʙp˙З̙Ι͙~X}ϙЙqљ \ QҙyFofrՙbpÌٙ@ڙؙ‰jEiۙK ܙhegݒD@fNi۔܊ߙzݙ\ޙ CۓČ uatBv@]PDCDiA ƍENFGLKNMJwS SOHISBYXOP UR[VWTZQ`ea`\ fPxhA^b[c_igridc mkpjnlkorwut[ QÉqsRv܉}{|~` \Xxyӓ dX! dlc͈}Ōc0 ޕyݍ\n ϋVByzRؒ ^C_{)T }|Wu|kx ͑š‘ÚĚƚgۗ̚ ȚY˚h˒ǍǚUɚŚo͚mT ΚĒКnњ֚՚ϚҚԚ1 ǕךdؚٚښܚۚޚӚߚݚmpsْs ϕĉ[OǙgVvΈ ޓt_zDz@D A@ܔϖDJWdBEÑWiFȍ9 GonƌψKLIWHÖPp{ ЈQORPNPMؕVWLSK kUXwYT }ZQ[_\ A ʼn^]kda`bcef  hgilڒdjmn @q opqrEstuyFЖGnjvwwxyz{}!|~ FvG@XqG{ɍQƉeh!I ГxQ@ljJ˞RΑ! ˎшqޖċAڎKsA!0Nj ͓rWjƎwԓR" ZБx݊"Q4 s" RśěÛ›" ɛƛțǛʛ˛̛#0 ϛΛ͛՛ћЛқӛ֛כԛ#Yx ؛ފٛۛڛܛݛBHIޛȌߛbJFЋ# sztȐёAX#D yNKcH$ LݔXM{xɌNf$a( pLf@CDB_FEAGHILJKMNUO$ ٕPMQTU|VOoʌWX^YJe$ ZK[\]_`abSRc`FʍVjdeefޔi%'°hgaґ mkjlk]ponqrzsOtJ%i4 SKEuuYZzwyOxv|%h|@88TT<XX(LLD8t(,(p< ¨,ü ( {|vӑ}}%4 P~pb&/Ŝ IxYߔ{&q  Փfɐ҈ySđz&ƨD ӈŜƜĜǜÜ&  ȜɜœԑQT̜֜͜Μ՜ԜҜdSϜќԈӜʜМלc˜|'7ǘ Jڜޜߜܜٜ؜ݜeۜ'y( 'Ȍ ^ʐ@ABCYDEFՑˌߖ['G ˍHőKILJM}NQ(?|Z OVPc}RSWTRܐeZ( cS]d_fba[YUXSِ`qg@hminAE\(` kwlˆgjUҔp}) Jqsoߕ{̎~xP)GLv |{uzrt@||̍TyڐT[wdf͒}~)ˤ `Kgh)$ rg* ̀ ېE̖*O TQPdBoh* i^FC[*` xU+ ̌ĝq~ݝsŝǝƝU֓hȝG~ɝ+W4 ʝ˝|Đk֍l͝ΎΝҋːϝafzVН{+Π ӝѝԝҝ՝֝؝םٝڝU|{۝ߝ+ VޝݝՈ̐ftGE,ϐ WWNAӔiq,_ ŋɉgÈb\A,И @ܓBCjDFGHȋgXIJJ֙]\֑, ō LKLN]MNOؖ{DQpSVUR-%ф TWLjލێZmXYۖ[\aYt^ܝnf`”-g f]cb͐їʉ}ged_͌kiˉgms-ҤƑ uAt^_ђMpoqnvljrhĎ`- ̒ȓhIxZz}ji͍.-Ә{j yĈ|~ˋKjVO.o ~[B.h Hǖ_IX.o ֈAŒ̓֒/5P kȑ^žƋ|ɋOy/w T|ҞP՞YԞӞОĞÞ֞Ξɞƞ/L ǞϞ̞\ƒʞŞȞl͞מߞ؞ޞݞΒ۞/֨ ٞWڞ͖~ўM0= k@ɓ0הh @wKGFEB0 DCIELHJMQN18 OܞRSTUӋ~WVY\ԋ1E؄ \[]̉V^`_abc~c΍def1g ihw}cjlBkmnopqsrtiuEkva1Pʚ Bwxœyіz|{~}2  CXiÔ2M` Ĕ]rD2d דBv͉2 @AgDבj3P mÒk^Fh3Uۼ lY_Q\CZ3  OܗUt3x ƟҗßişʟȟŸWɟğ˟̟[~ǟY4 ύakПߟٟnԟݟQ֟͟ϟ`۟ӟ4]X ڟ؟ܟΌÏXҟN՟Οџןp4 anM48 ŖؑHBޟ5#ޘ YRAВQ@5e NIRKHגkEDM5TGFL COPUTVYbSW5ߨQZ X][^aZG\`_Jdh6+ŔƠǐ ȄtXD˜xX,ΘψА| Ҝ Ӑ`HD֠׌0|H\H۴pP0ސLߠ`h fbcgemmjilғnoqp6mt rsΉD܎Ѝ6 FutxY{vzy_׈F6 }G~|wB73` ŏRď7u Əϔώ7 FonM7( RӗzWCי8;l ܒݎu8} ЕŔvĖSq84ҍ ]Ɣ@9 ό_ƓKT9C Җ—ALPQ9L blC9 ʋߊD:  ωEXHFG]ǔJ:K, IKMLNԗՋi: lڗO: PQŠ;@ Z@ZABCDFGErIH;St RKJLMONQPÊr[RYSpTcRb\jU; V[YXEW؈Ȕ\Z{L^l_]Ԕ`aSوfcbE;T idehgDa`^jklnmuvprt]us< oqaǏxwyzɒ|{s}~<[X < ×ȕoS<  TIFcHWUVXM=! u~mvXĊՔږӖ=c ȏŊ^=l Z“r= ˕uė>) mZΐ>k` Ӎ\uԍmCjv{> ]ɏ^d_> VOqɕאm?14 ֔A@CB?s ʏDbFEGIH`Ў?JV _FSPOcLNj_MKIˏ[ՍQR?(h֋ \TSЉdfTUWXHYZ[׋щÓ@9G \Hȉb]d`a`^_̏ڈ@{H bcŐBdetŗgfilj҉mke@P msoϐnnpqrntuv@ ˓ސwy{xzA|Eq~MAA  }g͏vhGj[^|ƊA| ΏJ}yA M؋}B| ͕ӉZkNJ\BIߐ ͔ѕzŽēUBP әȊB АĕC ̋HeSlϏCQ\ ЌWfƗnCI @gC[RBюhAfaےFݗ׍GaIЏHCD IgDJmEoMQLUniROPNKGWD TVSpXepa[_ۈZbfjԖԒ\odY]^ȖDYP ]ًΗqgchjmiҕɊɖ܈lkD nuovrȎtqwpcDks{~|z`ѐD< ɔ}x@qJrDUyJE [@ZEa$ ʊEp sߍrulE rtQA`HF' Kˊ|FipX d,D$8lLPxdX, HttHT<H4hhsV lҎϑkՖ^F EWF< ]яI̊ҌbmnxG/ ݈_wّEӌE\Gq ƐeҐrE]BGx AtDCorTHIGFJBڑGN OKLMpUQGPSRcVWVXZ^[Y^H7(\ ]d_`acbefgbh՗LvijPkHy lmnopqɎrsܕڊCwMtquʔwǑvDH x zy|{}~͊ǗFH ŎHmcԉF|ڋI? ۑcՉϓpIP vΖ։sI t`rw׉xJ( ΊJGt yeۋىҏ؍p؉ԌHzJ GވJ8 {tKK  ӏN֖f|KO ~uWDH@KH ̕UӒK@ הԏǎB}C~nJPQLD NFHRGKLOEEIFdOVTLWX mSUWX[YZ˔M\a`L Abh]_^PAdcefL gՌsi|jklMd qrm\naopztwsM_ uv֎x`ua{^|}~gؔM IwMX XIډN% ZNg IaNH yN OspXqՏt߈\܋O- UܑьOoX ٍT֏O JAO( ݋A@CBDPEFGP5| vHeIJKK`LoMONePQRϊSTUPwV pWXYGZ[\PL ]vu`_P^Lab׏cKݐidf؏P ehigُ]frmwllkFlbYڏjQ=  opn֌_FsaUvrwtuqǓNۉbQ x zxkЊyzȗ_{~|@}Q dy uӎwTދR  xcRE  ]̝QR ` JR  Lؓۏ^S   eLvn݉̔ъӐMݑ\fSM Gd Go^܏qwS  S , Ԑ͎qNT p zTU  Ր׌HHT  xHT< @DABCJE֐GIFLRKMU| NQPOSRUTVWYXgZ[]^U] _\`ԎaORb]cfedygU0 riڍhqkmjlpnPory֗SsAutx`U wv{zyQ|}~DV# hCJ_ӕҒHVeH Iv}ߋԕމRqǒV4p H l0@P\P@P tD| p  |  X     $ h  4t(@ޑ trʒAߑTiNV ٓxV^Օ߉BkyKՎJIɗW+Ҋ WߓM׎@Wm` xYSsXsW AW ѓUގz|Vy_X3, XݏXu ΔэߎdʗBjޒtX ݓbn،X SޏzgY; eCLKY}< NݕseI|Y K@BACыdB^EDFZ BtՒKbGHLJIߏZC` OȒZMNLPZ VYXLQRUWZTSZ ^_`]\[dbcae[ < fhӊgsiljkmopqtruw[K v[ [ xMy•zJ[ՊԊ{|}~֊t}{\ ň\S hj\ɑ ~Õ@w׊A’˗z\ G@KuۍBחǐ] YWٌGԙJ_d][ kIP] ÐrʖvxC] ƈfڕ^! ؊BC^c ŕ{aДړ̗zjop^8 z{^ޗڌ@BA^ CDEF_)  HGIHQJKZєO_k0 LݖM{a`NOPRSUQTيVWXY_ Z\[^a]_`b_ cde]nfgyh`1  ʑwmljkiwnopqsrx`sd tvRuxˑyz`} |~{`  [a9 \ Ea{  TSa  @Da!@ LNbA! I~b! khVb"H Lؗc" P–ΓcI" c#, DCEL@ABQJFKc# HG{LMNIOߒSTRd# QWPUVYX[\]hZ^dQ$( _`ad$t bcdd$ efghki[jlٗmnpqo˖e$ sotuvwٖxzy{|}~eY%$ Cیl@e% Ve% sf&,X$x4X4 0(|\  T x !8!!"@""#$##$ $l$$%%%&$&Hfa&Pf@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~'X(d@ABC)pDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~*|+@ABCDEFG,HIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~-.@ABCDEFGHIJK/LMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~01@ABCDEFGHIJKLMNO2PQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~34@ABCDEFGHIJKLMNOPQRS6TUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~7 8@ABCDEFGHIJKLMNOPQRSTUVW9$XYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~:0;<@ABCDEFGHIJKLMNOPQRSTUVWXYZ[`@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_?l`abcdefghijklmnopqrstuvwxyz{|}~@xA@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcBdefghijklmnopqrstuvwxyz{|}~CD fE(\)h*t+,-./012345789:(;4<@=L>X?d@pA|BCDEFgF$ gIF gF s~BYabceilugF Iij{C|D^OPQRSTUVWXFGH`abcdefghijklmnopqrstuvwxym_nOQGdMobp` hHp hQIx PhJFFG\HhIpJJ(hJ0(iJ\ wJ\iIJ\ (`,l 'H'PFJTJdJlJti[J|jcodings-1.0.58/resources/tables/Transcoder_EmojiSjisKddi_ByteArray.bin000066400000000000000000000654341433325321700262400ustar00rootroot00000000000000k@  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmmmmmmmmmmmnopqrstummmmmmmmvwxyz{|mmmmmmmmmmm}~mmmmmmmmmmm@   !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~@  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWWWWWWWWXYZ[\]^_`abcdefghijklmnoWWWWWWWWpqrstuvwxyz{|}~WWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWW@  !"""""""""""""""#$%&'()*+,-./0123456789:;<=>?@ABC"""""""""""""DEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abc""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""@@  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRST@  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_@  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~@  !"#$%&'()*+,-./0123444444444444444444444444444444444444444444456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~@  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee@  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~@   !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwx  !"#$%&'(   !"#$%&'()*+,-./012                    !"#$%&'()*+,-./0123456789:;<=>?@  !"#$%&'()*+,-./012345678  !"#$%&'()*+,-./0123456788889:;<8          !     !"#$    !                                  !"#$   !"#$%&'                         !"#       !"#$%&                                                                                                           !"     !"#$%&   !                                      !"    !"        !                         !                 !"#                                                              !      !                                                                                                                                                                                                           !"                                                                                      !"#$                                                                                                                                                                                                                                                        !"#                                               !"#$  !"#$%&'()                      !"#                                                   !                                                                                                           !"#$%&'()*+,-./0123456789:;<=    !"#$%&'()*+,-./0123456789:;<=>>>   !"#$%&'()*+,  !  !"#$%&'()*+,-./0123456789:;<=>?  !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!   jcodings-1.0.58/resources/tables/Transcoder_EmojiSjisKddi_WordArray.bin000066400000000000000000002551501433325321700262440ustar00rootroot00000000000000V  \ ~ = p  z 9 d9`9\9X9T9P9L9 H9#D9&@9)<9,89/492095, 8(9:|9=x9@t9Cp9Fl9Ih9Ld9O`9R\9UX9XT9[P9^L9aH9dD9g@9j< m89n vq9t9w9z9}99999999 5Thx \XTPLHD @#<&8)4,0/,2(5$8 :t=p@lChFdI`L\OXRTUPXL[H^Da@d<g8j4m0nqtwz} N}L  ~ 5 wp ƒÃăŃƃǃȃɃʃ˃̃̓ ΃σ Ѓу҃ӃԃՃփ  F@ABCDEGHIJKLMNOPQRSTUVWXYZ[\]^_`pqrstuwxyz{|}~ = v   w ]\efghdc 0  %x TUVWXYZ[\] g   ˁ́ ́ ݁΁ށaȁɁ -0  o   ܁  @ABCDEFGHIJKLMNOPQRS5 wd   =, T lp(\$Ld@ABV XYZqrstuvwxyzklE ‚ÂĂłƂǂȂɂʂ˂̂͂΂ςЂт҂ӂԂՂւׂ؂قڂۂ܂݂Lނ߂ JKTU@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^X_`abcdefghijklmnopqrstuvwxyz{|}~ E[RS D M@ \ ei`cakjdlfn _mbgh~ rsopquU tDP<8Tx(0 Os^NuLۊOh TvVRh]T \]݌܌jiSlTYm wedtWMߗȈ‹CNO P˜Ɉތx`ĘLQf# ϒAȘʈZC̑Rǘ]ØŘƘCΘјϘɘ͘ge ҘʘT˘ИSVӘ̘UˈDN֕d WErWטܘژ՘ؘۘ٘ە֘MݘޘCoUZLx\P+X qŒ{|ߘ[؎Ylϗ`mX ^\̈Ε]ÎU T_PÍbBXp C͋@AlDaEHFmGI`KJƕ3VMN LQPOԘRSDזUTWVXu$Y Z[b[ƖeZ\}]cS_`ZaTb c~fečgh`ijkʎdnlmyopq~ustrvwe  xyyÙzË{}}f~Mʓo; nؐYgʕh}H OU܍n c͗hiw[JN@j uEוk΋MَܖCl mkxnٔC@\ ߌ™ڔPmęTřƙKopəș ʙp˙З̙Ι͙~X}ϙЙqљ \ QҙyFofrՙbpÌٙ@ڙؙ‰jEiۙK ܙhegݒD@fNi۔܊ߙzݙ\ޙ CۓČ uatBv@]PDCDiA ƍENFGLKNMJwS SOHISBYXOP UR[VWTZQ`ea`\ fPxhA^b[c_igridc mkpjnlkorwut[ QÉqsRv܉}{|~` \Xxyӓ dX! dlc͈}Ōc0 ޕyݍ\n ϋVByzRؒ ^C_{)T }|Wu|kx ͑š‘ÚĚƚgۗ̚ ȚY˚h˒ǍǚUɚŚo͚mT ΚĒКnњ֚՚ϚҚԚ1 ǕךdؚٚښܚۚޚӚߚݚmpsْs ϕĉ[OǙgVvΈ ޓt_zDz@D A@ܔϖDJWdBEÑWiFȍ9 GonƌψKLIWHÖPp{ ЈQORPNPMؕVWLSK kUXwYT }ZQ[_\ A ʼn^]kda`bcef  hgilڒdjmn @q opqrEstuyFЖGnjvwwxyz{}!|~ FvG@XqG{ɍQƉeh!I ГxQ@ljJ˞RΑ! ˎшqޖċAڎKsA!0Nj ͓rWjƎwԓR" ZБx݊"Q4 s" RśěÛ›" ɛƛțǛʛ˛̛#0 ϛΛ͛՛ћЛқӛ֛כԛ#Yx ؛ފٛۛڛܛݛBHIޛȌߛbJFЋ# sztȐёAX#D yNKcH$ LݔXM{xɌNf$a( pLf@CDB_FEAGHILJKMNUO$ ٕPMQTU|VOoʌWX^YJe$ ZK[\]_`abSRc`FʍVjdeefޔi%'°hgaґ mkjlk]ponqrzsOtJ%i4 SKEuuYZzwyOxv|%h|@88TT<XX(LLD8t(,(p< ¨,ü ( {|vӑ}}%4 P~pb&/Ŝ IxYߔ{&q  Փfɐ҈ySđz&ƨD ӈŜƜĜǜÜ&  ȜɜœԑQT̜֜͜Μ՜ԜҜdSϜќԈӜʜМלc˜|'7ǘ Jڜޜߜܜٜ؜ݜeۜ'y( 'Ȍ ^ʐ@ABCYDEFՑˌߖ['G ˍHőKILJM}NQ(?|Z OVPc}RSWTRܐeZ( cS]d_fba[YUXSِ`qg@hminAE\(` kwlˆgjUҔp}) Jqsoߕ{̎~xP)GLv |{uzrt@||̍TyڐT[wdf͒}~)ˤ `Kgh)$ rg* ̀ ېE̖*O TQPdBoh* i^FC[*` xU+ ̌ĝq~ݝsŝǝƝU֓hȝG~ɝ+W4 ʝ˝|Đk֍l͝ΎΝҋːϝafzVН{+Π ӝѝԝҝ՝֝؝םٝڝU|{۝ߝ+ VޝݝՈ̐ftGE,ϐ WWNAӔiq,_ ŋɉgÈb\A,И @ܓBCjDFGHȋgXIJJ֙]\֑, ō LKLN]MNOؖ{DQpSVUR-%ф TWLjލێZmXYۖ[\aYt^ܝnf`”-g f]cb͐їʉ}ged_͌kiˉgms-ҤƑ uAt^_ђMpoqnvljrhĎ`- ̒ȓhIxZz}ji͍.-Ә{j yĈ|~ˋKjVO.o ~[B.h Hǖ_IX.o ֈAŒ̓֒/5P kȑ^žƋ|ɋOy/w T|ҞP՞YԞӞОĞÞ֞Ξɞƞ/L ǞϞ̞\ƒʞŞȞl͞מߞ؞ޞݞΒ۞/֨ ٞWڞ͖~ўM0= k@ɓ0הh @wKGFEB0 DCIELHJMQN18 OܞRSTUӋ~WVY\ԋ1E؄ \[]̉V^`_abc~c΍def1g ihw}cjlBkmnopqsrtiuEkva1Pʚ Bwxœyіz|{~}2  CXiÔ2M` Ĕ]rD2d דBv͉2 @AgDבj3P mÒk^Fh3Uۼ lY_Q\CZ3  OܗUt3x ƟҗßişʟȟŸWɟğ˟̟[~ǟY4 ύakПߟٟnԟݟQ֟͟ϟ`۟ӟ4]X ڟ؟ܟΌÏXҟN՟Οџןp4 anM48 ŖؑHBޟ5#ޘ YRAВQ@5e NIRKHגkEDM5TGFL COPUTVYbSW5ߨQZ X][^aZG\`_Jdh6+ŔƠǐ ȄtXD˜xX,ΘψА| Ҝ Ӑ`HD֠׌0|H\H۴pP0ސLߠ`h fbcgemmjilғnoqp6mt rsΉD܎Ѝ6 FutxY{vzy_׈F6 }G~|wB73` ŏRď7u Əϔώ7 FonM7( RӗzWCי8;l ܒݎu8} ЕŔvĖSq84ҍ ]Ɣ@9 ό_ƓKT9C Җ—ALPQ9L blC9 ʋߊD:  ωEXHFG]ǔJ:K, IKMLNԗՋi: lڗO: PQŠ;@ Z@ZABCDFGErIH;St RKJLMONQPÊr[RYSpTcRb\jU; V[YXEW؈Ȕ\Z{L^l_]Ԕ`aSوfcbE;T idehgDa`^jklnmuvprt]us< oqaǏxwyzɒ|{s}~<[X < ×ȕoS<  TIFcHWUVXM=! u~mvXĊՔږӖ=c ȏŊ^=l Z“r= ˕uė>) mZΐ>k` Ӎ\uԍmCjv{> ]ɏ^d_> VOqɕאm?14 ֔A@CB?s ʏDbFEGIH`Ў?JV _FSPOcLNj_MKIˏ[ՍQR?(h֋ \TSЉdfTUWXHYZ[׋щÓ@9G \Hȉb]d`a`^_̏ڈ@{H bcŐBdetŗgfilj҉mke@P msoϐnnpqrntuv@ ˓ސwy{xzA|Eq~MAA  }g͏vhGj[^|ƊA| ΏJ}yA M؋}B| ͕ӉZkNJ\BIߐ ͔ѕzŽēUBP әȊB АĕC ̋HeSlϏCQ\ ЌWfƗnCI @gC[RBюhAfaےFݗ׍GaIЏHCD IgDJmEoMQLUniROPNKGWD TVSpXepa[_ۈZbfjԖԒ\odY]^ȖDYP ]ًΗqgchjmiҕɊɖ܈lkD nuovrȎtqwpcDks{~|z`ѐD< ɔ}x@qJrDUyJE [@ZEa$ ʊEp sߍrulE rtQA`HF' Kˊ|FipX d,D$8lLPxdX, HttHT<H4hhsV lҎϑkՖ^F EWF< ]яI̊ҌbmnxG/ ݈_wّEӌE\Gq ƐeҐrE]BGx AtDCorTHIGFJBڑGN OKLMpUQGPSRcVWVXZ^[Y^H7(\ ]d_`acbefgbh՗LvijPkHy lmnopqɎrsܕڊCwMtquʔwǑvDH x zy|{}~͊ǗFH ŎHmcԉF|ڋI? ۑcՉϓpIP vΖ։sI t`rw׉xJ( ΊJGt yeۋىҏ؍p؉ԌHzJ GވJ8 {tKK  ӏN֖f|KO ~uWDH@KH ̕UӒK@ הԏǎB}C~nJPQLD NFHRGKLOEEIFdOVTLWX mSUWX[YZ˔M\a`L Abh]_^PAdcefL gՌsi|jklMd qrm\naopztwsM_ uv֎x`ua{^|}~gؔM IwMX XIډN% ZNg IaNH yN OspXqՏt߈\܋O- UܑьOoX ٍT֏O JAO( ݋A@CBDPEFGP5| vHeIJKK`LoMONePQRϊSTUPwV pWXYGZ[\PL ]vu`_P^Lab׏cKݐidf؏P ehigُ]frmwllkFlbYڏjQ=  opn֌_FsaUvrwtuqǓNۉbQ x zxkЊyzȗ_{~|@}Q dy uӎwTދR  xcRE  ]̝QR ` JR  Lؓۏ^S   eLvn݉̔ъӐMݑ\fSM Gd Go^܏qwS  S , Ԑ͎qNT p zTU  Ր׌HHT  xHT< @DABCJE֐GIFLRKMU| NQPOSRUTVWYXgZ[]^U] _\`ԎaORb]cfedygU0 riڍhqkmjlpnPory֗SsAutx`U wv{zyQ|}~DV# hCJ_ӕҒHVeH Iv}ߋԕމRqǒV4p H l0@P\P@P tD| p  |  X     $ h  4t(@ޑ trʒAߑTiNV ٓxV^Օ߉BkyKՎJIɗW+Ҋ WߓM׎@Wm` xYSsXsW AW ѓUގz|Vy_X3, XݏXu ΔэߎdʗBjޒtX ݓbn،X SޏzgY; eCLKY}< NݕseI|Y K@BACыdB^EDFZ BtՒKbGHLJIߏZC` OȒZMNLPZ VYXLQRUWZTSZ ^_`]\[dbcae[ < fhӊgsiljkmopqtruw[K v[ [ xMy•zJ[ՊԊ{|}~֊t}{\ ň\S hj\ɑ ~Õ@w׊A’˗z\ G@KuۍBחǐ] YWٌGԙJ_d][ kIP] ÐrʖvxC] ƈfڕ^! ؊BC^c ŕ{aДړ̗zjop^8 z{^ޗڌ@BA^ CDEF_)  HGIHQJKZєO_k0 LݖM{a`NOPRSUQTيVWXY_ Z\[^a]_`b_ cde]nfgyh`1  ʑwmljkiwnopqsrx`sd tvRuxˑyz`} |~{`  [a9 \ Ea{  TSa  @Da!@ LNbA! I~b! khVb"H Lؗc" P–ΓcI" c#, DCEL@ABQJFKc# HG{LMNIOߒSTRd# QWPUVYX[\]hZ^dQ$( _`ad$t bcdd$ efghki[jlٗmnpqo˖e$ sotuvwٖxzy{|}~eY%$ Cیl@e% Ve% sf&,X$x4X4 0(|\  T x !8!!"@""#$##$ $l$$%%%&$&Hfa&Pf@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~'X(d@ABC)pDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~*|+@ABCDEFG,HIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~-.@ABCDEFGHIJK/LMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~01@ABCDEFGHIJKLMNO2PQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~34@ABCDEFGHIJKLMNOPQRS6TUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~7 8@ABCDEFGHIJKLMNOPQRSTUVW9$XYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~:0;<@ABCDEFGHIJKLMNOPQRSTUVWXYZ[`@ABCDEFGHIJKLMNOPQR@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_?l`abcdefghijklmnopqrstuvwxyz{|}~@xA@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcBdefghijklmnopqrstuvwxyz{|}~CD fESTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~F$G0@ABCH<DEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~IH gJT@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~ JK gIL@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~ M gN@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~ O(P4 gIQ@(\)h*t+,-./012345789:(;4<@=L>X?d@pA|BCDEFG(H4I@JLJKLMNO P,Q8R<gRD@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~ ST  gIU hV hQV0 s~BYabceiluhVD Iij{C|D^OPQRSTUVWXFGH`abcdefghijklmnopqrstuvwxym_nOQVMobp` hW iX PiYYxTUVV(V<VWXYpYiY(iY wYjY (`,l 'H'PRYYYYj!Yjcodings-1.0.58/resources/tables/Transcoder_EmojiSjisSoftbank_ByteArray.bin000066400000000000000000000651261433325321700271320ustar00rootroot00000000000000jR@  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmmmmmmmmmmmnopqrstummmmmmmmvwxyz{|mmmmmmmmmmm}~mmmmmmmmmmm@   !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~@  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWWWWWWWWXYZ[\]^_`abcdefghijklmnoWWWWWWWWpqrstuvwxyz{|}~WWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWW@  !"""""""""""""""#$%&'()*+,-./0123456789:;<=>?@ABC"""""""""""""DEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abc""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""@@  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRST@  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_@  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~@  !"#$%&'()*+,-./0123444444444444444444444444444444444444444444456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~@  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee@  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~@   !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwx  !"#$%&'(   !"#$%&'()*+,-./012                    !"#$%&'()*+,-./0123456789:;<=>?@  !"#$%&'()*+,-./012345678  !"#$%&'()*+,-./0123456788889:;<8          !     !"#$    !                                  !"#$   !"#$%&'                         !"#       !"#$%&                                                                                                           !"     !"#$%&   !                                      !"    !"        !                         !                 !"#                                                              !      !                                                                                                                                                                                                           !"                                                                                      !"#$                                                                                                                                                                                                                                                        !"#                                               !"#$  !"#$%&'()                      !"#                                                   !                                                                                                           !"#$%&'()*+,-./0123456789:;<=    !  !"#$%&'()*+,-./0123456789:;<=>?  !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!  jcodings-1.0.58/resources/tables/Transcoder_EmojiSjisSoftbank_WordArray.bin000066400000000000000000002453541433325321700271450ustar00rootroot00000000000000R  \ ~ = p  z 9 d9`9\9X9T9P9L9 H9#D9&@9)<9,89/492095, 8(9:|9=x9@t9Cp9Fl9Ih9Ld9O`9R\9UX9XT9[P9^L9aH9dD9g@9j< m89n vq9t9w9z9}99999999 5Thx \XTPLHD @#<&8)4,0/,2(5$8 :t=p@lChFdI`L\OXRTUPXL[H^Da@d<g8j4m0nqtwz} N}L  ~ 5 wp ƒÃăŃƃǃȃɃʃ˃̃̓ ΃σ Ѓу҃ӃԃՃփ  F@ABCDEGHIJKLMNOPQRSTUVWXYZ[\]^_`pqrstuwxyz{|}~ = v   w ]\efghdc 0  %x TUVWXYZ[\] g   ˁ́ ́ ݁΁ށaȁɁ -0  o   ܁  @ABCDEFGHIJKLMNOPQRS5 wd   =, T lp(\$Ld@ABV XYZqrstuvwxyzklE ‚ÂĂłƂǂȂɂʂ˂̂͂΂ςЂт҂ӂԂՂւׂ؂قڂۂ܂݂Lނ߂ JKTU@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^X_`abcdefghijklmnopqrstuvwxyz{|}~ E[RS D M@ \ ei`cakjdlfn _mbgh~ rsopquU tDP<8Tx(0 Os^NuLۊOh TvVRh]T \]݌܌jiSlTYm wedtWMߗȈ‹CNO P˜Ɉތx`ĘLQf# ϒAȘʈZC̑Rǘ]ØŘƘCΘјϘɘ͘ge ҘʘT˘ИSVӘ̘UˈDN֕d WErWטܘژ՘ؘۘ٘ە֘MݘޘCoUZLx\P+X qŒ{|ߘ[؎Ylϗ`mX ^\̈Ε]ÎU T_PÍbBXp C͋@AlDaEHFmGI`KJƕ3VMN LQPOԘRSDזUTWVXu$Y Z[b[ƖeZ\}]cS_`ZaTb c~fečgh`ijkʎdnlmyopq~ustrvwe  xyyÙzË{}}f~Mʓo; nؐYgʕh}H OU܍n c͗hiw[JN@j uEוk΋MَܖCl mkxnٔC@\ ߌ™ڔPmęTřƙKopəș ʙp˙З̙Ι͙~X}ϙЙqљ \ QҙyFofrՙbpÌٙ@ڙؙ‰jEiۙK ܙhegݒD@fNi۔܊ߙzݙ\ޙ CۓČ uatBv@]PDCDiA ƍENFGLKNMJwS SOHISBYXOP UR[VWTZQ`ea`\ fPxhA^b[c_igridc mkpjnlkorwut[ QÉqsRv܉}{|~` \Xxyӓ dX! dlc͈}Ōc0 ޕyݍ\n ϋVByzRؒ ^C_{)T }|Wu|kx ͑š‘ÚĚƚgۗ̚ ȚY˚h˒ǍǚUɚŚo͚mT ΚĒКnњ֚՚ϚҚԚ1 ǕךdؚٚښܚۚޚӚߚݚmpsْs ϕĉ[OǙgVvΈ ޓt_zDz@D A@ܔϖDJWdBEÑWiFȍ9 GonƌψKLIWHÖPp{ ЈQORPNPMؕVWLSK kUXwYT }ZQ[_\ A ʼn^]kda`bcef  hgilڒdjmn @q opqrEstuyFЖGnjvwwxyz{}!|~ FvG@XqG{ɍQƉeh!I ГxQ@ljJ˞RΑ! ˎшqޖċAڎKsA!0Nj ͓rWjƎwԓR" ZБx݊"Q4 s" RśěÛ›" ɛƛțǛʛ˛̛#0 ϛΛ͛՛ћЛқӛ֛כԛ#Yx ؛ފٛۛڛܛݛBHIޛȌߛbJFЋ# sztȐёAX#D yNKcH$ LݔXM{xɌNf$a( pLf@CDB_FEAGHILJKMNUO$ ٕPMQTU|VOoʌWX^YJe$ ZK[\]_`abSRc`FʍVjdeefޔi%'°hgaґ mkjlk]ponqrzsOtJ%i4 SKEuuYZzwyOxv|%h|@88TT<XX(LLD8t(,(p< ¨,ü ( {|vӑ}}%4 P~pb&/Ŝ IxYߔ{&q  Փfɐ҈ySđz&ƨD ӈŜƜĜǜÜ&  ȜɜœԑQT̜֜͜Μ՜ԜҜdSϜќԈӜʜМלc˜|'7ǘ Jڜޜߜܜٜ؜ݜeۜ'y( 'Ȍ ^ʐ@ABCYDEFՑˌߖ['G ˍHőKILJM}NQ(?|Z OVPc}RSWTRܐeZ( cS]d_fba[YUXSِ`qg@hminAE\(` kwlˆgjUҔp}) Jqsoߕ{̎~xP)GLv |{uzrt@||̍TyڐT[wdf͒}~)ˤ `Kgh)$ rg* ̀ ېE̖*O TQPdBoh* i^FC[*` xU+ ̌ĝq~ݝsŝǝƝU֓hȝG~ɝ+W4 ʝ˝|Đk֍l͝ΎΝҋːϝafzVН{+Π ӝѝԝҝ՝֝؝םٝڝU|{۝ߝ+ VޝݝՈ̐ftGE,ϐ WWNAӔiq,_ ŋɉgÈb\A,И @ܓBCjDFGHȋgXIJJ֙]\֑, ō LKLN]MNOؖ{DQpSVUR-%ф TWLjލێZmXYۖ[\aYt^ܝnf`”-g f]cb͐їʉ}ged_͌kiˉgms-ҤƑ uAt^_ђMpoqnvljrhĎ`- ̒ȓhIxZz}ji͍.-Ә{j yĈ|~ˋKjVO.o ~[B.h Hǖ_IX.o ֈAŒ̓֒/5P kȑ^žƋ|ɋOy/w T|ҞP՞YԞӞОĞÞ֞Ξɞƞ/L ǞϞ̞\ƒʞŞȞl͞מߞ؞ޞݞΒ۞/֨ ٞWڞ͖~ўM0= k@ɓ0הh @wKGFEB0 DCIELHJMQN18 OܞRSTUӋ~WVY\ԋ1E؄ \[]̉V^`_abc~c΍def1g ihw}cjlBkmnopqsrtiuEkva1Pʚ Bwxœyіz|{~}2  CXiÔ2M` Ĕ]rD2d דBv͉2 @AgDבj3P mÒk^Fh3Uۼ lY_Q\CZ3  OܗUt3x ƟҗßişʟȟŸWɟğ˟̟[~ǟY4 ύakПߟٟnԟݟQ֟͟ϟ`۟ӟ4]X ڟ؟ܟΌÏXҟN՟Οџןp4 anM48 ŖؑHBޟ5#ޘ YRAВQ@5e NIRKHגkEDM5TGFL COPUTVYbSW5ߨQZ X][^aZG\`_Jdh6+ŔƠǐ ȄtXD˜xX,ΘψА| Ҝ Ӑ`HD֠׌0|H\H۴pP0ސLߠ`h fbcgemmjilғnoqp6mt rsΉD܎Ѝ6 FutxY{vzy_׈F6 }G~|wB73` ŏRď7u Əϔώ7 FonM7( RӗzWCי8;l ܒݎu8} ЕŔvĖSq84ҍ ]Ɣ@9 ό_ƓKT9C Җ—ALPQ9L blC9 ʋߊD:  ωEXHFG]ǔJ:K, IKMLNԗՋi: lڗO: PQŠ;@ Z@ZABCDFGErIH;St RKJLMONQPÊr[RYSpTcRb\jU; V[YXEW؈Ȕ\Z{L^l_]Ԕ`aSوfcbE;T idehgDa`^jklnmuvprt]us< oqaǏxwyzɒ|{s}~<[X < ×ȕoS<  TIFcHWUVXM=! u~mvXĊՔږӖ=c ȏŊ^=l Z“r= ˕uė>) mZΐ>k` Ӎ\uԍmCjv{> ]ɏ^d_> VOqɕאm?14 ֔A@CB?s ʏDbFEGIH`Ў?JV _FSPOcLNj_MKIˏ[ՍQR?(h֋ \TSЉdfTUWXHYZ[׋щÓ@9G \Hȉb]d`a`^_̏ڈ@{H bcŐBdetŗgfilj҉mke@P msoϐnnpqrntuv@ ˓ސwy{xzA|Eq~MAA  }g͏vhGj[^|ƊA| ΏJ}yA M؋}B| ͕ӉZkNJ\BIߐ ͔ѕzŽēUBP әȊB АĕC ̋HeSlϏCQ\ ЌWfƗnCI @gC[RBюhAfaےFݗ׍GaIЏHCD IgDJmEoMQLUniROPNKGWD TVSpXepa[_ۈZbfjԖԒ\odY]^ȖDYP ]ًΗqgchjmiҕɊɖ܈lkD nuovrȎtqwpcDks{~|z`ѐD< ɔ}x@qJrDUyJE [@ZEa$ ʊEp sߍrulE rtQA`HF' Kˊ|FipX d,D$8lLPxdX, HttHT<H4hhsV lҎϑkՖ^F EWF< ]яI̊ҌbmnxG/ ݈_wّEӌE\Gq ƐeҐrE]BGx AtDCorTHIGFJBڑGN OKLMpUQGPSRcVWVXZ^[Y^H7(\ ]d_`acbefgbh՗LvijPkHy lmnopqɎrsܕڊCwMtquʔwǑvDH x zy|{}~͊ǗFH ŎHmcԉF|ڋI? ۑcՉϓpIP vΖ։sI t`rw׉xJ( ΊJGt yeۋىҏ؍p؉ԌHzJ GވJ8 {tKK  ӏN֖f|KO ~uWDH@KH ̕UӒK@ הԏǎB}C~nJPQLD NFHRGKLOEEIFdOVTLWX mSUWX[YZ˔M\a`L Abh]_^PAdcefL gՌsi|jklMd qrm\naopztwsM_ uv֎x`ua{^|}~gؔM IwMX XIډN% ZNg IaNH yN OspXqՏt߈\܋O- UܑьOoX ٍT֏O JAO( ݋A@CBDPEFGP5| vHeIJKK`LoMONePQRϊSTUPwV pWXYGZ[\PL ]vu`_P^Lab׏cKݐidf؏P ehigُ]frmwllkFlbYڏjQ=  opn֌_FsaUvrwtuqǓNۉbQ x zxkЊyzȗ_{~|@}Q dy uӎwTދR  xcRE  ]̝QR ` JR  Lؓۏ^S   eLvn݉̔ъӐMݑ\fSM Gd Go^܏qwS  S , Ԑ͎qNT p zTU  Ր׌HHT  xHT< @DABCJE֐GIFLRKMU| NQPOSRUTVWYXgZ[]^U] _\`ԎaORb]cfedygU0 riڍhqkmjlpnPory֗SsAutx`U wv{zyQ|}~DV# hCJ_ӕҒHVeH Iv}ߋԕމRqǒV4p H l0@P\P@P tD| p  |  X     $ h  4t(@ޑ trʒAߑTiNV ٓxV^Օ߉BkyKՎJIɗW+Ҋ WߓM׎@Wm` xYSsXsW AW ѓUގz|Vy_X3, XݏXu ΔэߎdʗBjޒtX ݓbn،X SޏzgY; eCLKY}< NݕseI|Y K@BACыdB^EDFZ BtՒKbGHLJIߏZC` OȒZMNLPZ VYXLQRUWZTSZ ^_`]\[dbcae[ < fhӊgsiljkmopqtruw[K v[ [ xMy•zJ[ՊԊ{|}~֊t}{\ ň\S hj\ɑ ~Õ@w׊A’˗z\ G@KuۍBחǐ] YWٌGԙJ_d][ kIP] ÐrʖvxC] ƈfڕ^! ؊BC^c ŕ{aДړ̗zjop^8 z{^ޗڌ@BA^ CDEF_)  HGIHQJKZєO_k0 LݖM{a`NOPRSUQTيVWXY_ Z\[^a]_`b_ cde]nfgyh`1  ʑwmljkiwnopqsrx`sd tvRuxˑyz`} |~{`  [a9 \ Ea{  TSa  @Da!@ LNbA! I~b! khVb"H Lؗc" P–ΓcI" c#, DCEL@ABQJFKc# HG{LMNIOߒSTRd# QWPUVYX[\]hZ^dQ$( _`ad$t bcdd$ efghki[jlٗmnpqo˖e$ sotuvwٖxzy{|}~eY%$ Cیl@e% Ve% sf&,X$x4X4 0(|\  T x !8!!"@""#$##$ $l$$%%%&$&Hfa&Pf@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~'X(d@ABC)pDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~*|ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~+@ABCDEFG,HIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~-./ghijklmnopqrstuvwxyz{|}~01@ABCDEFGHIJKLMNO2P34@ABCDEFGHIJKLMNOPQRS6TUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~7 ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~8@ABCDEFGHIJKLMNOPQRSTUVW9$XYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~:0;<[`@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_?l`abcdefghijklmnopqrstuvwxyz{|}~@xA@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcBdefghijklmnopqrstuvwxyz{|}~CD fE(\)h*t+,-./012345789:(;4<@=L>X?d@pA|BCDEFgF$ gIF gF s~BYabceilugF Iij{C|D^OPQRSTUVWXFGH`abcdefghijklmnopqrstuvwxym_nOQGdMobp` hHp hQIx PhJFFG\HhIpJJ(hJ0(iJ\ wJ\iIJ\ (`,l 'H'PFJTJdJlJti[J|jcodings-1.0.58/resources/tables/Transcoder_Emoji_ByteArray.bin000066400000000000000000000363241433325321700246070ustar00rootroot00000000000000<Ѐ  !"#$%&'()*+,-./0123456789:;<=>  !"#$%&!!!!!!'!()!!!*!!!!!!+!!!!!  !"#$%&'()*+,-.   !"#$%&'()*+ ,-./0123 4 56789    !"#$%&'()*+,-./0123456789:;<     ! " # $% &    !"#$%&    !"#$%&'()*         #⃣1⃣2⃣3⃣4⃣5⃣6⃣7⃣8⃣9⃣0⃣      !"#$%&'()*+,-./0123456   !"""#   !""#        !"#$%&'()*+                       !"#$%&'()*+,-,./01234   !"#$%&'()*)+,-     !"#$%%%           !"#$%&'''      !"#$%&'()*+,-./01234 56789:;  !"#$%&'()*+,-./01234  !"#$%&'()*+,-.-.---.//01      !"#$%&'()  !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!  !"#$%&'()*+,-./0123456789:;<=>?@  !"#$%&'()*+,-./0123456789:;*<***  !"#$%&'()     !"#$%&'()*+,-./0123456789:;<=>?  !"#$%&'()*+,-./0.............111      !"#$%&'()*+,-./01232456789  !"#$%&'()*+,-./01234356789   !"#$%&'()*+,-./01234555             !"#$%&'()*+,---  🇯🇵    🇺🇸   🇪🇸🇷🇺🇫🇷 🇩🇪🇮🇹🇺🇰🇨🇳🇰🇷          !"#$%&      !!!!!!!!!!!!"# $%%& ' ()*+,-               !   !              ! " # $        !"############$%&'(()*+,-./012   !"#$%&''()*+ ,-./0123456 789:;<   !"#$%&'()*+,-./0123456789:    !"#$%&'(()*+,-./01234/56789:;<=>   !"#$%&'()*+,-./0123456789:;<=>?    ! "#$%&'()*+,-./01234        !                                                                 !   !"#$%&'()*+,-./0123456789:   !"#$%&'()*+,-./012    !"#$%&#'()*   !"#$#$%&'()*+,-./01234567  !"#$%&'()*+,-./01**2345678  !"##$%&'()*+,,*,-./01,23,4567,,,   !"##$#%&'()*+,   !!!!!"#$%&'()*+,-./012345!                       !"""#$     !" #$%& ' $ ()       !"#  !"#$%&'()*+,-./0123  !"##$%&'()*))((+,-.//0           !!!!!   "#$%%%&'(!    jcodings-1.0.58/resources/tables/Transcoder_Emoji_WordArray.bin000066400000000000000000000570101433325321700246120ustar00rootroot00000000000000Bd0 H  L L t@D ( [PPP (HX`hp   X ')Q\ P  (4X`h<l  0 mnQoprsQtuwxQyr 8   - | 0   ( X`h  o @ ц    <  ~      D  2l   @  S    H 2   [   ц   !  c` x   d8@ X   `  )  kD<  (XX`h   < ( q x H 7 y`   ? ' $ X ` G l '!< !  ! O" #p@XPX d!4!!"#$ $ % % W&%%& & (%&X`h & ' '4 љ' nQoprsQtuwxQh' ;(P y( ^Q`7( ) )< Q)P ) m) ^Q` ) M) Q* *D m*` U*| + nQo+,',''(H(())4)H))))**<*X*t*+$+T +\prsQtuwxQ + ;],` y,,X,, , (+,X`h , -  #- e.4 . / +/ m/ 0t 0 3142 u1T-.,.///0l01,1L11 (1X`h11 ;2 }3H 4D 4 C567  7P K8X 823@4<45577H8P89p9x (9X`h9 9  :(  S:P  :| mnQoprsQtuwxQy : !;$ ![;p!  !;"!  ;^Q`Q"c;: :H:t:;;h;;;;;< (<4X`h<<"  &A>8 &>t &>'>'I=@ '><<<<==$=8=L=T==>>0>l>>>>>'> (?D (Q?\?T?l(?t(=@)=@ )Y? )?)=@ *?*a=@ *@ *@d +'@ 2+iA  +Ap +A ,/B ,qB ,B,C -7C0 -yCH -C-D?????@@ @\@AAhABB|BCC(C@CDD$.?D, D.D<| ?<?(D`h.D"D/D#)E#kE(#E@#Ep/E$sE0.E0pE0F%{F40F16F1xF1G< 1Gh'G2>G'GE E E8EhEEEEEF,FFFG4G`GGGG'G2=@(QHHH@HX(H`(Hx)H2H 3H 3FH3I( 3I@4 I 4NJ4K 4L 5L 5VM5N 5Ox,P4 6PHt6^Pl 6QL-QHHHH?I I8IJKLLMNOpP,P@PdQDQQ.?Q R4.R<D H8Hp(RH`h.RP"R6=@#)=@ #kR 7$R7f=@ 7R$sS0.S(7SD 0S` %{S%S16T 8,TL 8nT 8T'T2>T'URRRRRS S S<SXSST TDTTTTU U$'U, (U(QUUU(U(U2U 8V 94V4 3Vt 9vV 9V 9W :<X8 :~X :Y<' ;Z ;DZ ;[P;[ < [)Q ?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~0909  !"#$%&'()*+,-./012344444444444444444444444444444444444444444444444444444444444444444444444444409090909090909090909090909090909  090909 0909090909090909 0  !!!!!!"##########$$$$$$$%&'(()***+,---.////0001233455567889:::;<===>?@AAAAAAABBCCCCCDDEFGGHHHIJKLMNOOOOOPPQQQQQQRSTUUVWXXYYZZ[\\\\]^^^___`abcddeefffghhii  0909 09 0  !!!"##$%%%&'((((((((((()*++++,,,---./////0000122222222333333444444444555667777889999:::::::::::::::::::::;<==>>>>>???????@0909 0   !!""##$$$$%%&'((()*+++++,,-...//0001234456666660909 09 0  !!""#$$###$%%&&&'())))**++++++++++,-.....///////00111111123333444555555555566677789::::;<<<=>>>>>>????@@@@@@@@@@@AAAAAAAABBBCCCCDEEEEF0  !""#####""$%%&''()****+++++++,,,,---./////000112344455678999:;<=>???@ABBCDEFFGHIJJKKLMNNNNOPQQQQQRSTUUUUUUUUVWWXXYZ[\\\\]^_``abbbb0  !"###$$$$%&'())*****++++,,,,,----..//0111111223455666788999::;<<<<<<<=========>?@ABCDDDDDEEEFFGGGHIIIIIJKLMNOOPPQRSSSSSTUUUU0  !!!!!!!!!!!!!"""""""""##$$%&''''''())**+++,,---./00000000  !"###$%%%&&&&&&&&&'''''''(())*++,,-...////////01111222334456667778999:::;;;<<<<=>>?????@@@@@AAAABBBBBBBB0  !!"""""#$$$$%%&''(((()*+,--../0  !!!!!!!"""####$$%&'''''())***++++++++++++,---./00111123333444556678889999999:;<<<<<===>>>>>??@@@@@@@@@@AAAABBBBBB0  !!""""""""#######0  !""##$$$$$%&&&&&&&''())*++,,,,-../01222234555566667788899::;;<<<===>>>>?@ABBBBBBBCDDDDDDDEEEEFGGGGGHHHIIJJKLLLLLMMMMM0  !!!!!!!!""""""""##$$$$$$$$$$$%%&'''''''''''())****+++++++++++++,,,,,,,,,,,,,,,,,,,,,,---...0  !!!!!!!!!!!!!!!"#$%&&&'(()))*+,-..../////000001222233333330  !!!"#$$%&&'((()*+++,-.../00122333344444456677777789999:::::;;<<=>>>???@@AABBCCDEEFFFGGHHIJ0  !"###$%&&''())*+,---..////////000111112223345677777899:;;<<<<<====>???@@@@@AAAABBBBCCDEEEFFFFFFFFFFFFFFFFFFFGGGGGGG0  !"""#$%%%%&'(((())*****+,,,-0  !!"##$%&''''())))****++,,,,---.//01112233333344555567789999::::::::;<<<=>>>??@@@@AABBBBCDDDDEFGHHHIJJJJJJJKLMNOPPQQRSTUU0  !""#$$$$$$$%&&&'''''(((((((()***++++++++++,,,,,,,-./////////00112222333334444556777789:;;;<==>>>>>>>?@AAAABB0  !!!"""#$$$%&''())*+,-.////////001112333345566677777777899::0  !!!!!"""#$$%%%&&&'(())))****++++,,,,,---------...../////0000111122222222222222222222222222344444444556666667889::;<<<0  !"""""#$%%&&'())))****+,-.../01234456666666678888888888999:;<==>>>??@@ABBBBBBBBCDDDDEFGHIIJJJJJKKKLLLLLLLMMMMMMMNNNOOPQRSTUVVVVVV0  !!!!"""#####$%&''''''''''''((())))))))**+++,,,,---.//0000000000000000011223340  !!!!!!!!!!"##########$$$$$$$$$$$$%%%%%%&''''''())))*+++,,,,,,,-----..////////000000010 0  !"#####$$$$$$$$%%%&&&'((()))*******+++++,-.///0123334566777788999:;;;;;<<<=>0  !! "#$$%&&'()**++,,---.///000012233333345566778999:;;<=>?@AAAABCDEEFFGGHHHIIIIJJKKKLLLLLMMNNOOPQQRSSSSSTUVWWXXYYZZ[[[[[[\\\]]]0   !!!!!!!!""""""""####$%&&'''((((((((((())***************+++,--.....///////0001122334556666789::;<<<====>>>???@ABCCDDDEFGGGGGG0  !!!""#############$$$$%%%%%&&&&&&&&&&&''(())))))*++++++,,,,,,,-----------.////0  0  !!!!""""###$$$$$%%%%%%%&&&''''''()))*********++++++++++,,,,,0  !!!!!"#$$%%%%%%%%%%%%&&&&&&&&&&&&'((()*******+++,,,,-.////0110  !"#$%&'()*+,,--./012344567889:;<=>?@ABCDEFGHIIJK0 0000  !"#$%&'()*+,-./012345555555667788779999::;;<<=>==?????????0  !"#$%%%%%%%%%%%%%%%&'()*+,-./0123456789:;<=>?@ABCDEFGGGGGGGGGGGGG0  !"#$%&'()*+,-./0123456789:;<====>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>?????????????????????0  !!!!!!!!!!!!!!!0 0  !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!0 0 0  !!!!!"""##$%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%0  !! !"""####$%&&&'())*++,,--.../00122222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222220  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_P`abcdefghijklmnopqrstuvw0  !"""########$$$$$$$$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdFefghijjklmnopqrstuvwxyz{|}~0  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwx0  !!!""!!!!!!!!!!!!########$$$$%%%%%%%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~0  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefgh5ijklmnopqrstuvwxyz{0  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuv0  !!"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~0  !"#$%&'()*+,-./0123456789:;<=>?@ABCDE6FGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijk7lmnopqrs0  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~0  !!!"""###$$%%%&&&&&&&&'''()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~0  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuv0  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmn0  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqr0  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`0  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`ab0  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abc0  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqr0  !!!!!!""#$%&'()*+,-./0123456789:;<:=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\2]^_`abcdefghijklmnopqrstuvwxyz{|}~0  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~0  !!!""#$%&'((()))))))))))))**+,,,-...../0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstu1vwxyz{|}~0  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~0  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[?\;]^_`abcdefghijklmnopqrstuvwxyz{|0  !!""##$$$$$%%&'(()**++++++++++,,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~0  !"###$%%%&&&'''()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~0  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz0  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^^_`abcdefghijklmnopqrstuvrwxyz0  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrs0  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopq0  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmn0  !!""""#$%&'()*+,-./01234*56789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~0  !!!!!!!"""""#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{p|}~0  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvw0  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{0  !"#$%&'()*+,-./0123456789:;<=>?@A)BCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|0  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefgh0   !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijkl0  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`ab0  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`ab0  !"#$$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`0  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefffff0   !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMMNOPQRSTUVWXY3Z[\]^_`abcdecfghijklm0   !"#$%&'()*+,-./01232456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ0  !"##$%%&''()*+++,--.//011234567889:;<=>>???@A>ABBBCDEEFFGGHHIJKLMNOPQRSTUVWXYZ[\]^_`abcdedf0  !!""#$%&'()*+,*-./*0-123456789:;<=>??@ABCDEFGHIJKLMNOPQRSTUVWXYZ[WW\]^_`_abcdefghijklmnopqrstuvwxyz{0  !"#$%&'()*+,-./012345(67889:;+.<=>?@AB@CD8E9FDG=HIJHHK2ALMMGNOPQRSTUVWLX5YZ[\LY0  !"#$%&!'()*+,," -./012345667859:;<=>?1@ABCDBEFGHIJKLHMNOPQRST0  !"#$%&'()*+,-&./0123456789:;<=>?@ABCBDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~0  !"""##$$$%&'())**+,,-,./0123456789:;<=>?@ABCDDDEFGHDIJKLMNOPPQNELRSTUVWPXXYZ[\]^[[_``abcdeVfghijjklmnopqrstuvwx0  !"#$%&'()*++,-./012332'45*677889:;<=>?@A=:*BCDEFBGHIFJKLMNOPPQRSTUVWXYZ[\]^_`abcdee0  !"#$%&'()((*+(,-./01(23.4567889:;<=>?@ABCDEFEGHIJDKLMNOPQRSTUVWXYZ[\]^_`abccdefghijklmnopoq0  !"#$%&'(()))*+,-./0123456789:;<=>?@ABCDEEFGHIJKLMNOKPQRSSTUV0  !"#$%&'()*+,,-.//0122223455566789:;<=>?@ABCCDEFGHIJKKLMJNOPQRSTQU0   !"#!$%&'()*+,-./01--234567879:;<=>?@ABCDEEFGHIJKLMNOPQRSTUVW0  !"#$%&'()(*(+,-./01233.4566789:;<=>?@ABCDEFGHIJKLMNOPQRSTMUVWXXY0  !"#$%&'()*(*%+,-./0123456789::;<=>>?@ABCCDEFFFGGHHIJKLMNOO0  !!!!!"#$%&'()*+,-.-/012.345637489:;<=>=?@A0  !"#$$$%&'()*+,-./012345-6789:;<=>?@=ABCDEFGHHIIJKLKMNOPQRHSTUVWMXYZ[\]^__`0   !""#$%&'()*+,-./01234567889:;<=>?@AB6CDEFGHAHIJKKLKMMNOOPQRSTTTUUVTUUVWXXYZ[0  !"#$%&'(')*+,-./012344456789:;<=>?>@ABCDEFGHIJKLMNOOPQRRSTUVWWXXYZ[\]^^^____`abcdeefghijklm0  !""#$%&'(')*+,-.///0123456789:;<=>?@ABCDEFDGHHHHIJKLMNOLPQRSTTUVWTXYZ[\]^_`abbcdeffghijklmnopqrst0  !"""#$$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJDKLMNOPQRSTUVWXYZ[\]]^_`abbcdefghijklmnopq0   !"#$%&''()*''+++,-./,0123345-6789:;:<=>?<@ABCDEDFGHIJKLLMNOPNNQRSTUVWXXYZ[\0   !"#$%%%&'((&&)*+,,,--././..0122222334566666667778889:9;;;<==>>?0  !!!"##$%&&'((()**+$+++,-..///000012202233333333345556789:;<=>?@AB0  !"#$""%&&'(((())*+,-.../011111112324567897::;<=>?@ABCDEFDGHIJKLMNOPQRSTL0   !"#$%&'()*+,-.,/01/23414567879:;:<=>?@ABCDEFGHIJJJKLMNOPQRSTUVWXY0  !"#$%&''()*+,- ./0(102/3456789:;<=;>?@AABCD9E?FGHIJKLMNO0  !"#$%&'()*+,-./0123456789:;<<=>?@AABCDEFGHIJKLMNJOPQRGSTQUVWRXYZ[[\]^_S_`^a]bcdefgghijkilm0  !""#$%&'()*+,-./01233456789:;<==>?@@ABCD%E2FGHIJKLMNOPQRSTUVWXYZ[\]^_`aab0   !"##$%&&' ())$*)#+*,-./0/1234567118829:;<9=>?@ABCDEFGHIJKL0   !"#$%&'()*+,----./0111223344444455555677888888889999::::;;0  !"#$%&'%()*+*,,-./.0123456789:;<=>=?@ABCDEEFGHHIJKLMNNNONOPQORSTUVWXYYZ00 0  0 0      !"## $%#&'() *+,-./0122334567889:::;<=======>8??????????????????????????????????????????????????????????????????????????????????????????????  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~  !"#$%&'()*+,-./0123456789:;<=>?@    !""            !"#$%&'()*++,-./0123456789:;  !""#$$$$$$%&'())))))))))*+  !"#$%&'((()*+,----.///0  !"#$$%&'()***+,-./01233345678  !"#$%&'()*+,-.//  !""#$$%&''()*+,,,,-)./0  !"!#$%&&&&&'((((((((()  !"#$%&&&&'()***+,  !"#$  !"#$      !"#$%&'()*+,-./01233  !!"#$%&'()*+++,-.//  !!"#$%&'()*+,-.  !"#$%&'(()**+,-./01234  !!!!!!!!!!"#$     !"#$$%&  !"#$%&'()**+,-./0123456788889   !"""""""#$$$$%&&&'  !"#$%&'()*+,-./0123455  !"##$%&'()*+,-./01234456789:;<  !"#$$%&'((  !"#$%&'()*+++,--./012  !"##$%&&&'())))))*+,-./  !!!"####$%&'  !!"#$%&  !"#$%&'())*   !"#$%%%%%&"'  !"#$$$%     !"#  !  ! "#$%&&&'(()*+++,-...  !"#$$$%&&&&&&&  !"##$%%       !"#$%%&''()*+,-...  !"#$%&'''())  !!"#$$%&&&&&&'()**+,     !!!!!"""        !"#$%&&&&'(()**  !"#$%%%&'(((()**+,-./01222345  !""#  !""""#$$%&&&'()*+,-.  !"""""""#$%%%%&  !"#$$$$%&'       !"  !!"#####$%&&''())    !!!!!"#####$%&'()*++++,-   !""#$%&'((((((()*+,---  !"#$%&'''  !"######$%&''''()**  !"#$$%&&&'(()**+,-./  !"#$$$%&&&&&'((((()*++,  !"##$%%&'(()*+,-.  !"#$%&'()))*++,-...  !"#$%%&'(((((      !"#$$$$%&''()))))*+,  !"#$$%&&'(()**+,-.  !"""#$$$%&'()*+  !"#$%&''()*+,-./012344445678  !""#$$$$$$%&''())  !""""#$%%&'((((  !"#$%&''()**+,-./0123  !"#$%%%%&'(  !""#$%   !"###     !"#$$%&&&&&&&&  !"#$$$$$$$$%&&'())  !""""#$%%&'''''  !"#$$%&%'''''()*+  !"#$%%&'''()    !"#$$%&''''())*++  !""#$%&'()*+,-,,,,)./0  !"#$%&'(()*+,-.///////  !"#$%%%%%%%%&'(  !""#$%&  !"########$%&'((((((((   !"""    !!!"##!!          !!!"###$%%  !"#$%&'())*++++,--  !"#$%&''()))*+,  !"#$%&'(()&*++++,-./0123  !!" #$%&'()**+,-./01  !"#$$$%&'()*+   !"###$%&&&&'(()*+++,---  !"##$%&&'(()**+,,,,,,-  !"#$$$%&'()*+++   !"##$%&$$'&()))))   !"##$%&'((  !!!!"####$%%%%%%  !        !"#$%&&  !!!"##       !"""#$%%%&&   !"#$%&&'()*+,---  !!"##$%&''''()   !""#$%%%%    !"""""#$$$     !"#$%&'())*+    !"#$%&''())*+,,-./0  !" ####$%&&'(((()**+,,-   !""#$$!%&''()))*+,-    !"#$%&&&'())*+,-  !"#$%%%    !"   !"""#$$%&'''()*+   !"####$%%%%&'    !"#####   !"#$$$$$$$%&&'()**  !"#$   !"#####$%%%%%%%%%%%&   !"#$%%&'$(((()*+,-./0  !!"#$%&'())*+   !"     !    !!"#$  !"#$%&'()*++,--./01234556789   !"#$%&'(((((  !""""#$    !!!!!!!"#$$$  !""""""#$%&'()*++,-./0   !"#$%&'()*+),,-.."/0123  !"#$%&'()*+,-.//  !"#####$%  !""""#$%&&'(    !"#$%&'()**)+  !   !"#$%&'()*++,-.///012   !"""#$%&&'(()*+*,----    !"#$%&'()*+,-..    !!!!!!!"#$$%&''  !"#$%&'((  !"#####$$%%%&''                   !!!!!   !!"#$$$%&&&&'(  !""#$$%&&%'''())*+    !""     !!!"#$  !!!  !""#$#%    !"""""""     !"#$$%&'()*+,-./0123456789:  !"#$$%&''()**+,,-........    !"#$  !"#$%&&&'()**+,,-./0122222222    !"#$%%&'%(&))  !"       !!"#$$$$%&''''())*+++,-.  !"#$%&'()**+,,,-./000122  !"###$%%%%%%$&'((((())*+,,-./01  !!!!!!!"#$  !"#$%&'()(*+,-.//01    !!!!"###$%%%%&'(   !"#$%&$'()*+,-...//0     ! "#$%&'''''())*+  !"###$%&'()**+,  !!"#$%&''() ***+,-./00  !   !!"#$%&'(((()*+,-  !"#$$$$$%&'()*++++++++  !"  !""""#$  !!!!"#      !""#$$$$$$$$$$$$$$$$$$$$$$$$      !"""""""#$%%%%&'()'*+,,,         !!!!!!!!!!"#   !"          !"##############################       !"#$%&'()***+,-.///0jcodings-1.0.58/resources/tables/Transcoder_Gb18030_WordArray.bin000066400000000000000000003416041433325321700245000ustar00rootroot00000000000000p4h8l<p @tDxH|LP T $ X    ( \    , `    0 d    4 h  8l<p @tDxH|LP T$X(\,`0d,`0d4h8l<p @tDxH|L  P T $ X ( \ , ` 0d4h8l<p @tDxH|LP T$X(\ 8l<p @tDx  H |  !!L!!!""P"""# #T###$$$X$$$%(%\%%%0d4h8l<p @ t !!D!x!!""H"|""##L###$$P$$$% %T%%%%%%$&&&' '('8'L'\'t'~'~'~r'h'hd`'`'`_( ^]\[( WVUPO(<OKJ(\JIH(tHG(GEA((A?4(?(?>=@(=<(<)<;L);),;:X)<:)P%&'' '0'D'T'l'''''''(((4(T(l(((((()))$)4)H)Xd)`:0)0***$*8*H*`*t*~*~}{*{*{wL*w*wut*t+tsr+ r+8)X)* **0*@*X*l*|******+++0+@+Hrq+qpom++@+++ml+l+lkji , hfe@,(ed,@d,TdXTA,,dA?6,6,658,D,`,`,`VUP,U-UT-$T-8TR-HRO-\N-pNM-MLJI\-I-H-HGX-G-+,, ,8,L,\,x,,,,,,- --0-@-T-h-x------h-&&)++.`54,*&   {zyolkjigedb`^\[ZYXWVUTS.hGFL0F0,FE0<EDX0PD0dDC0tC0CBX0B0-0$040H0\0l00000B@0@1@?X1?1(>18>=1H=1\=<41l<1<;1;1001 1 101@1T1d1x11191;:X1:2:9292(982882L112 2 202D2T2\876E26265L252542424323332323,2143<03P0/3`/.3t.32T222222333$343H3X3l33Q3.-3-3-,4,+)'4'48'&%4H%4`%#L4p#4#"4"4"X44443344404@4X4h4|444444455L5`ioX5pio545X5h5|5]55$5012|35D55~}yxwvsponmlkjihgdcba_\YXWVUSRPONMLKIHEDCBA@=<;95ioZ6YYL6YYiYf 6YeYd7YdYbY` 7$Y`Y_X7<Y^7PY^Y\7`Y\7tY[756677747H7X7l7|7 77$7577zyxwurqpomnlkhdba`_\[ZYXWSQJGDCA?>;:87642-*'&%#"  F7Y[YZ48YZ8YZYYL8YY8YYYX9YX9YXYW9,YWYV9@YV9TYVYRYQYOYN 9dYNYKYIYF #9YF97888999$989L9\9|99 /9YFYDY29Y2Y(Y$YY :Y:(YX4:8X:LXX:\X:p :9:: :0:D:T:h:x: ::$:9::_^][ZYXVUSMHEDB@:98754210*)$#!  ;::&#!   ~}usrqpolhedcba_\[XUT ;:{qpnjdb`_]\[YXUTSRONMIHGFDCA@>=;:9541-+*%     =:1/.,+*(&%#!    >:%$#"  ?:P@:!A:B:utplkjigfdba_^\[YWVOMC<:~}zyxwvutrqponmljigfdc`_^]\ZYXWVUD|:}{zyvsmkihfcb`_]\[YVUTPNMKIFA?>;87610eE@:qolkjihged]\ZYXWVTSQOMLKJHGFEC?><;:864321/,*$#"!  6FGLGT$G\Gd/.+*'&#!   GlGdHGdwvtsrpomkjdca^]\ZYWUTSONKJIHGED@=<:8765ITGdvutsonmljigfedcba]\ZXVTSQRPNMLKJIDCBA@?>=<9865310/.-*)(&%$#"!zJGd\[ZYXWVUTSQNLKIHFEDCA@?=;:8765431/.-,*)(&%$#"  KKGdECBA?>=<:765320/.-*)('&$#    LGd3/.-+*)('&%!   MGdOGdOGd`PGd1QGd~{zyxvurqplkjfda][ZYXWVTRQONMLJIHGDC><64321/+RGdjihfdba`^]\[ZYWVURPOMLKIFEDCBA@?=;987654310.-+*)('&%$#!  SGdGFEDCBA>=<9876543210/.-,+)('&%$#! TGdQONLKJIHGDB@?>;:876320+*)&#!uUGd[ZYURQPONLKJHEDAB@?>=<;:7643210/.-+)('&%$#""FVGda`_^]\[ZYXVQPONLJIHGFEDB@?=<;954210/.,*)%! #VGdqrϘϜϛߍD~ߋϕϣϝϥ݄ݔݬݯݕݗݹ݋ݩݠݦܵ/ݞݜj݀݅ݑݲpcoݷݡݣٖٙߩ߲#%KM;=ߵ_ba#WGd(< Hp.nμx߈$XGd%YGdQRWy&[Y@Gdq',Y`Gd+COTV'YGd12:(ZGd'&96/&#xnշ)[GdԝӳӧӥӃzxv kjm/ oCp[ֽ]V   Bב׆*p\Gd[ZXVMKHGFEDC@<:95432/-.,+*)'&(+A]HGd):,]Gd?><:8653210/.*)('#! ),^`Gd*~-^GdDCA@?>=<;876530+*(&%$#" + ._(Gd}zxvutsponmlkhgeda^]\YXWTS+/V_GdNxZsTe%txw g^ 3TqlWwQ>mwjQRbEfvZ]pE~?aLi'ayb0'`Gdsqpoihedcb`^][ZYXWTSRPNMLJKIEDCA@?=;xzv+(s5V!{ _Up~FCyp 1Tyyx(~54xK|s[}^/z@-*vxB0bGd#{F{vqv9XRK¥OvkoR~Xw1<K'@0Ln -P!o1wb{JzxO1dGdQPOKJIHBA?=<9865410.-,&%$#"! ^|b|A[p }u:uF>  5)N/{q9O+fyjAHw>owbrUMs4*r?#unm d}Gi|{#2{2fGdX!dÂj sF|s#8}.s,{ w^t\Vİ6C R7m* 2}(sJjho3khGd*)('&#"    x\bGs\mUPJIKgÞ;zd#7PNCv/v{&9N{6UA!c|2ĜJ$&]}bZ#R|4<jGd~}|{Ɨ|&uqƆA>P~NjQ,Ao`}$/x~#\i|Q5N>(v |H-ren{nñ{~i5 ltGd  h@LƌN9g|Ch wƺ~~`^|˜'ppSI-Ǩ/}03'sGw,_5n|Gd}|{yxwutsrqnmj* rƱtS V39#_'y7p.'B:$6N|(PggCIJ+4:sJ{HD“xKs}WZ<6pTGdZa1x6H8ĭ  , )ȇUx}|Dŗwu\812~NƐ[lxB{|n Ůb!V--7rXGdrponmkjigfedcba`^]\ZYXU}0#u~<xƩS^!YhF(M=TI"I8pľ?azj‘zKm/xkezRA[6īNoʞ~#*8QtxGdqKn gSdiǓƐ]\PĐT?ipzh:xzzYBk=kƊoʾ(z~|1u±z`9"v\Gdxwvtsqnmljihgfedcba 4||Ƙ!X8834R˨Jvl|/ļU*qBʉVZ~a5oh#4oiȁ{1G9x Gd3iI,ʫ]E?RȊ:_dm1ECjOFC2%Ev%O~c]j 8<B(}q"}:yGd[T9B(@8 P'?P)Y@"uC_kn5+& RNΒ#xf_1w~̼ma_Q#:.ũ%KX;{Gd<=;:@ >,˵=˜}[6TV@% wˈ"Ȅ"VyɞR}z(0o %7aFģ.Ɖj9'&8_1L}ĥukki%=7~GdʶϷM4Nra0Dѐ/9 q&[<Aa-Ͱ'6ќ˹ &WЧDkl5]J4~[΃XZ6>GdSQPOMLJHDA@?98760/.*)('%$ T ƙVADZ) {m1S.^nB̢V[m5:\SX*f+_Ѩ*~/8WW%FaxcyD͕$\]>Gdysrqpnmljkcba`_^][ZYXoot6krc)9M"t)!'g.h¨[  Ò CЌDz{\KLz*+=Pv}?Gdy4Ju[JK]_QQslȣ M}o PmOL&ҬƜzϜa$m$.ihƪokIt@{Gdcba`^\ZYVSQPONLJGFB?876543210/.?.Lĝ.Ò2W ]=Kţä*q&|jrѣv, 3IѨ#EpsB'9Uw kA=xGkALGd~}|srpomligdcb^[Z4[cӣ^4S\ @"W^GAiX4vz+kq?e^gºKe˖wy Upf֋м˛Ά,uIeBGd(\%5["|%ZLFew͛afV^'~|qH7Wj)9׵śH&U]՜\jj]n7(cҵ*CɫBGdIFDCB@?:98610/-,+'&%$! cϕ\:ñn nr7b@ |+EL">vĿmD>?Pc\.m}uDǻ[.Δ4C0Gdz6IuÉ4B0־hpHPT^jCՕ9LdZ 9ix/؞}uyټ˭'|@˿rsÖƋT!gث9"aIu/ƠԭD$Gd43210/.-+$# 1yʕm"k3dũ²+Լ1c<ɥ{ڡ.(T6Uȅ%ÖƂ8GIӤX5%OHH PzrD5T u̍m=ÄEaGdCbG,t˙ƬfqEz0Xš|ɖսۙ<2ͿڂځLBA: Ŭqh2т% T`=C^QN R`=΍ƈ=ǰѥp{ѡF2Gd>=<;:9876510/.-+{O֯Cxʢ4X\}}O+@J ּ S`ƏҸ!խڧ#5*†V%wVSI%؁A_ۉO K؞ΙѺz|Ë 0n2GGdX̢>cWP3חA1W5zٸ1Ե"4Wԙשfn+@ץUo]P )֒Ȼ ;n̬^4aݧUKȦŊOLџaLeppGGd    )XժpgU݈~kŁ:_.beЬFL04؃ɨ&+ʸ)dJs(ޅqЉ:0ؚإuHɛٖ3ՄƁ}GJS]oַػ{HGd~}|{zywvt*ώԈR# yG ˟"3ڏ.߮Ԭ٩=w% q:ΣǍcVL1)]6cA*} {9lÆۤMj>.ǢIvGd    ҉<y$VKZTUˆl 5b Ô οxȟZNܲ9c${6Q{Τ݉XI8ǚE>gS,!Z·~nJOG)qJGGd~|{wvtrponmljgfecba`6q(8+aɹӬ9!P%t^ң $  0@֌(bצLv*T^ִ}zxG_tǹr^K|GdQr5 y1 sVooJ5ܷɻdה׺yV*ׄe/?&gEpR<ʻ>WY Q+1<2} 3,ԺeKxGd~}|{z(i', v|;\C6=ˊJ%*9>՛  Í}ʾyR CMvл~^ÿYWׯd+^*_ _*3OBlL$Gd$10kĕ^"αۺPۣkp҈O *˱,߿XOgpr߫ˈʎORC۩!Rwll:><`xboO`У?MGdr˖QI k׾0ւ[y˪Sќ[əJĈԜ1iձ*͛KVedHc:<Ɓ=Z=O,й3mg~ȑζN\tGdSRqoncZ[˜Dp)nѨNќL֟D) 4+Tkǣ 2dAI+D΢;̷Ͳ |'C޼H2O-GdyIȱ=  sҡ5I<"" ܼ̞WPkcknw|AtF}iKzǿv:՘f܈ ' &`߯[|sޟIMOGd ZםXo6:|ga|o=ʜ3}ZN%1_O1"^gneiwu{)\XZLJ\! ѻP8Gd9Bh^&) $(g@|kytWI ˕{o6ˑdkD\F5{F6nܻ9GB79QGd)&n^}yts`\S;URQVDP>@;RqlGdb`^[YXUTSRMLKIHGFCA?><;:8754/-,+*(&|vmkq  k{(LyoTU`bvrjn5?X3@4VJ8SBGd[<6" &ت1.-$,#! '%QLTGdRS0~1/2( ",. q}uw^KZLpdON&'-H17U TGdB^CU6;'`2*!1(}ݼݳ|jfi{^*٭٘هِ'e]J%m/Rt0# ؕ"+إتؔo؇_UGd    ؼؿؙ~vޚȎޗJga`tb;*HO](@&_/ 18^9VGdusrqmlkhfcba`_^\[ZYWVUTSaC%jn*01x{s}Twkrc[N3 WWGdaUF@><%  hXjW]~bK52] `]SONLDA?40)#~530.$'X(|GdQR͇͂͝z͒́͊~h}wltVZQI><.OLEC><975310F6=3%+} yxzXL GT:YGd:. h>!ϕաՃ|Տ7VLIRwml];: A ZJ:_rՎXTՖ՚ՆՒvUuoՋW< PR7QԛԫԪԶԙWx\jDԩԋ :ӧ10#(OAӜӸӲӞvebdyӀwz$[<:-,ӼӰӲӈӀӉlqXJ)&΀}o~j{rzc[WRXQ7t,xoneJR[:yxpJh^SAC  wm`tba`\_]ZXWRQONLKJIHQPONL\:ihƿƽƻƺƠƸƵƳƱƮƬƪƩƥƤƢơƞƝƜXTЗAIG+8< (-! j1є]\:zw}Y?EH(3#$ f`VmM1OG#H!6K޼޽޾ޥyލzޙ\ތ|ޢ}ިޝޟ5xv[ބ.݃^_l:tީޏޚE޺ގ.gA`F :&0u$%IM8   '1ݑݫ_݂݉(yoݖ>TݧxUAC+ԠԆXTKRFA9yxutsrpomj_0:kgUNC?=;:8760-+*$!   zӹӵӫӜӛӚzB3ȹamtndoPD=#.yI֌ք|njdcb`E`p:~{zyxwYɖݱݩݠݦݛݚݜݖݏݍ݆݇݀݁zxYDc_\׃R%  }ȢȻȮȪȕȒȌlȈrȄ|j{Ȃ6dk]MG&*:`0:     vdcZXFgZ5! ٰٮ٬ٔٓRj_كWـS5(1عدlt"ѦѢѝћъєючѓы}цtjfWK@#%a :\<@4[D;E(*޵ݰӷӶӯӧӚӢ ӈӜӀӘӒӗsUmӟv|_/82F.- ҸҿҪDԿԹԷԠԫ԰Ԛԍbt:()64kfY]aO93*VNQiJ?C<59Ĉ63540.1-'!#    cEX:~|{zxwut" d`:/.-,+*)_bI- y{}yxzvtsrqpnkjhgca]b?>=48*%"+- dt:}]x{\pn`k^dWGRK>;5/*)   UQI?>< ƯƭƶƽƟƩƕq]N)(ϿϾϸ϶ϩϧϡϝχπo{tre:=>  XR;:*0/1!$  "  ɵɲɛɹɳɫɝɔɩɭɶɢ`gkɇx|əɊrɋɗɌ_DL#f@:ɺɾɗɛɱɦɖɑzxtsϩ־ֳִֶֺ֪֖|֌֛֥֧֭֙֗֩֏ְwv]ևuh\giK6&3C9H;(gZՈ:0/.-,+*)'"yotc[]РОНж_ЃzyЁsqlhgdZVN931^ G{4)+*'   . j<5ԝJ.3ueVZ;ņŁƨƧh+H:68*2- ,([3ů\MŹűŰŤţŚŕŝŢśŨőŌpkft`WSXLsjciW\Vh:[\ʳʮʫ]vJ|zxk*('&/W4ZGECکB@?>:876542,*i:+# \z}y{wttvןYUSM DCj:TUtdko܄:ukoܠ:ukoܼ:4/-'&#   vJl@:|zyxwutsqpnmlkjihgfvmX:bgbbaawm:b+b*b)b&b bb-t2-'(-&&8&E--"#?""{!"!--2--(TO-5t3|x0n<068;=>?@ABC4DtE8FGDHILJKLMOOPQ RSTUV VWXYY8YXYxZ[\]@]^X^_ _`b|dfxhjllntpLrPtpvTxy{x} ~x|(||tpl0d|tD4 Tdh(PXl8Հ@|ܘܴP4<oD 0@P`p 0@P`p 0@P`p 0@P`p 0@P`p 0@P`ppL 0@P`p 0@P`p 0@P`p 0@P`p ¡0@P`ppX 0@P`p 0@P`p 0@P`p 0@P`p 0@P`p 0@P`ppd 0@P`p 0@P`p 0@P`p 0@P`p 0@P`p 0@P`ppp 0@P`p 0@P`p 0@P`p 0@P`p 0@P`p 0@P`pp| 0@P`p 0@P`p 0@P`p 0@P`p 0@P`p 0@P`pp 0@P`p 0@P`p 0@P`p 0@P`p 0@P`p 0@P`pp 0@P`p 0@P`p 0@P`p 0@P`p 0@P`p 0@P`p p0@P`p 0@P`p 0@P`p 0@P`p 0@P`p 0@P`p 0@P`pp 0@@AP`p 0@P`pB 0@P`p 0@P`p 0@P`p 0@Pp`p 0@P`p 0@P`p 0@P`p 0@P`p 0@P`p 0@P`ppÁÁ Á0Á@ÁPÁ`ÁpÁÁÁāā ā0ā@āPā`āpāāāŁŁ Ł0Ł@ŁPŁ`ŁpŁŁŁƁƁ Ɓ0Ɓ@ƁPƁ`ƁpƁƁƁǁǁ ǁ0ǁ@ǁPǁ`ǁpǁǁǁȁȁ ȁ0ȁ@ȁPȁ`ȁpȁȁȁɁɁ Ɂ0Ɂp@ɁPɁ`ɁpɁɁɁʁʁ ʁ0ʁ@ʁPʁ`ʁpʁʁʁˁˁ ˁ0ˁ@ˁPˁ`ˁpˁˁ¦æĦŦƦǦȦɦʦ˦̦ͦΦϦpЦѦˁҦӦԦզ֦צئ́́ ́0́@́Ṕ`́ṕ́́́́ ́0́@́Ṕ`́ṕ́́΁΁ ΁0΁@΁P΁`΁p΁΁΁ρρ ρ0ρ@ρPρ`ρpρρρЁЁ Ё0Ё@ЁPЁ`ЁpЁЁЁсс с0сp@сPс`сpсссҁҁ ҁ0ҁ@ҁPҁ`ҁpҁҁѧҧӧԧէ֧ا٧ڧۧܧݧާߧpҁקӁӁ Ӂ0Ӂ@ӁPӁ`ӁpӁӁӁԁԁ ԁ0ԁ@ԁPԁ`ԁpԁԁԁՁՁ Ձ0Ձ@ՁPՁ`ՁpՁՁՁցց ց0ց@ցPց`ցpցցցׁׁ ׁ0ׁ@ׁPׁp`ׁpׁׁׁ؁؁ ؁0؁@؁P؁`؁p؁؁؁فف ف0ف@فPف`فpفففځځ ځ0ځ@ځPځ`ځpځځځہہ ہ0ہ@ہPہ`ہpہہہ܁܁ ܁0܁@܁P܁`܁p܁܁܁݁݁ ݁0݁@݁P݁`݁p݁݁݁p ށށ ށ0ށ@ށPށ`ށpށށށ߁߁ ߁0߁@߁P߁`߁p߁߁߁ 0@P`p 0@P`p 0@P`p 0@P`p 0p@P`p 0@P`p 0@P`p 0@P`p 0@P`p 0@P`p 0@P`pp$ 0@P`p 0@P`p 0@P`p 0@P`p 0@P`p 0@P`pp0 0@P`p 0@P`p 0@P`p 0@P`p 0@P`p 0@P`p 0@Pp<`p 0@P`p 0@P`p 0@P`p 0@P`p 0@P`p 0@P`ppH 0@P`p!1AQaq!1AQaq!1AQaq!1AQaq!1AQaq!1pTAQaq!1AQaq!1AQaq!1AQaq!1AQaq!1AQaq!1AQaqp`!1AQaq!1AQaq!1AQaq!1AQaq!1AQaq!1AQaqpl!1AQaq!1AQaq!1AQaq!1AQaq!1AQaq!1AQaq!1AQpxaq!1AQaq!1AQaq!1AQaq!1AQaq!1AQaq!1AQaqp!1AQaq!1AQaq!1AQaq!1AQaq!1AQaq!1AQaq!1pAQaq!1AQaq!1AQaq!1AQaq!1AQaq!1AQaq!1AQaqp!1AQaq!1AQaq!1AQaq!1AQaq!1AQaq!1AQaqpp%q pC'ߍ&ߋ~߲ߩߵq+p'(.qm<p'L96/~q\~߈r(hqhb_ad`r3p'`ݹ_ݯ^ݬ]/\ݩ[ݲݷ&ݦW#VݠUݔݗݕݞPݜOݣݡ݄݋KݑJruJ݅I݀HGpjEoAc?rx?>/=<rp),;ܵ:s;p)P:p0Hs}H s0p*pPt`MK=;tC|%#~}{wtwuttٙsٖru p+8r-q-po--m-l-kj-i-h-feuK@e-dup,TdבXu,4LTp (@HXt08vϘϜTϛV׆ϣϥxϕϝAn?6B5vST5WvWֽv[]wշ`w[p,`μV Uw$p-UԝTwLp-8TӳRӧOӥNx!lNӃMzLxJvIxcp-I(H'Gxp-G&Fxp0,F&EE&8Dy)p0dD#?Cyk<C"ByTp0B""@"{?ytp1(?!>z1p18>!=zsp1\=<yp1<;zp1<D\d ,4Ldlz ;:{9p2:9{{p2(928{p2L876{ 65|A ,p254{9 Lp24(32| lp3,2T1O0| 0/} /.}I p3.5-,+} +)'&%#} p4#"{ X"~ pp4|~Q p4y p5`Ɨ54ټ߮¥,*׵ڡ&İƆۙѐu|Ǩsќ}ݧbgаΒg~   u acZޅQʞN}^vjujpZ_֋JG}zNyXm%~ <Wg.i C_, %H$FL1J/9 56 !(  ƺY T˨ƌʾz݈Â؞Ѩ~vȇhЧثڂځ^@Ĝ\evIy{ۉzpyB{~ƌ9zoJolksj[ixbgU)e&d(b$1`)^M\i[6ZY XWVUTS=0936  %~}yxwvϷsƱponmlka  $ < D \ d        H P h         L8|8@kljiÞhgڧdcba̼_Ҭ\YkXpW՜VV|UʉySgRtSPkON>M3LWK=5IIH@'xuE'DkCbBJA @=*<;9zizyxw־urqʫpӣo`omnlͲkñZh^݉dwƐbwaЌ`x_f\P[PZ9Y}X:WW6΃kSC8Q\Nze_cFJtaXG/4\\DLCC+ALC?>C?;:X81764G23@B*:-8$*97'q&%#" _^][ZYX˵VUSٸƩMHE˜DBܲǓ@ͰIJ:9Օ8ѣ7Ѩ54ŗ210bnpˈ*Ů)Tv؞$ۤ#Z!wI؁k{wuw1ȁ9s\C70ZXkLJ  E*G'H% >yĭX߿&Ɛ#!߫ Ȋڏ˜cҵyϜd[XԭٖƊSU Vc G͕oFR~JS>AiDednL=6()87Sm5^\?xenke%L1@DN"6G h4֯ԼܷսּľƘחש٩̢˹ץxɞzмnإuػs؃īؚtty“g~l}a]`bPuVssmr]qpkoO_:lIHhgoveGNd;c@bIa8_5%'\I[* XZ(UT/8&17!   -{ qpnjʶdb`_]l\[YXխUTSRĐONnMӤpnpIjHaGF֒ 4DCȄwA}@N>=C;:^94HC5K4O1%$-0_+**O%.9%[ ^  "J?9'3    !41ļ/.,+*(&%#޼u!߯ |ַ‘!V{x}swΆ:xrTk B c W"| [T(ONM3"  ۺǮժԵ#Dۣϕ%$ԙ#y"۩^±#nũh{X[]ޟy Ɖ ~OymՄpPX7JvoGrnj@b`_$l. TU9XBV>J( ?"@25.348%0 %Ҹ͛z}צ%&t[ѥтѡ`Δ<z6Lg&&"'m/ O>#'\ܼ׺'ԬԈהѺx|ִmzׄģ-(0|q֌˖}ĥ܈˛_jRwifrT2.Mh{=o(o\np".W>e//^LR)J&) *`ƙȣDzׯyxc5*pvџh^SJD'AuCnw+"! 6 +,@ܻ=,zzrv΍w_i<gtRUm80\6rt`wco,)tp&^G :UR:8DL&?I"O%)*>'/-,  ׾ͿӬ.Ь҉˿˭|՛rkԺƜ[kƪE/$^utɫΙЉpcibl[kj̍iW[gfVdUbCaW%_d/^`f\[YWPV : OM 510~}zyxwvu 14uvtrqpңonmljiւgfdM1dc~a`h_j^]b\]XZWYX28XKW5V2U2 2}˙{ʕzώyձvţs֟mqkyihabfkcU3\cÒbU`z_F]]@\>[<FYNAmV#UQTX?R>P[4 FN"M]CK=IZ6FF 93JAKZ? >,'+;%I876=1040qolkjihg̢edݼם5Xĝ]ݳ\ޚZɥYޗXWVTSԜQ¨ΣqOML̬KǻJm|HG]5gFEUC^?g>c<A;v:Xx8}w6J64`3]2Y15F/6pmS,)o*OKN5L$S#""D!#&A?O40)#74   %# ο#7pXL(Pp`d, x!,!"t"#<#$d%(%&l&'T'((()*X*+x+,8,,-.//01,120223T445P567,78p8ʢ/.+Ò*ä'&ɖ#x!Τ҈ś՘\e9[ȅaz}C D@ < k;·4m.>|1*(VryzxP9:x7! =JIG=;< +<лrpm<whpƠƋ_Ek=F>6=$[`!=ت3=Ŀ˟ʸќºzgwu>DǰxƂ{oУqlvoTo5D7^4z.p>LfwxnKH?3 _><H :3*0+9G#*?,'! ñƬҡũ;@|ѨȻќɨ{ˆ٭wsvtйsr٘cpȦo}AhoɛِmcWkkjهq^|dXceƈaPK^]t\mfZeY8]W]iUB=TUSNIbRO1NJ5eK*JIQH*G E%D((8@/'0=E<%:817#6+5B5v u"ts o nmljigfeαdcbaCC]\ZXÉVŬTSQRƏPN}MlLKYDHJتIÖإQD\CؕBGAI@ؔ?m>4=؇<}9D9A8oa6"5+[3_10 / .-2*).(&%$ Eh#"!\[ؿZؼYXKFWؙVUT~SvoQzxÖNѻLaK~ζFpI|HV{F{EDnCY^Aj@N?pA=g6;i:D?8Ä7H6~5s4F443^1E/.--,V *=))(B4&%$ #"  G )   ɹE²CBSH4A?>=<:ʻ765ȟˊ320͛/.-*΢)Ǎ(H('&y$t#^ǢmpnoŊadƁoN^8j(PD9IRD. = T  .#.JD ɻ[J3˱ʾ/.-š+*)('&%Łu! ͲǚK(hˈ\|mjf{k`i` VsË F}MOF5cBGHKB]K!,1e6]O6#V!5:/%!L- cMt˖˪޼޽޾y̷ޥǹʎިN ޥޢ†ޙXgޟޝkލPI\~ތyzIW|}?<ބx1vN0\)a['05=%%5)Op#. ! ޺ީkOޚޏ˜̞ގt sugdsP`KEF|AMI:݃.,08 Q&: M$%1)'L   41QsRݫəyݧݑiݖ݉R݂qyxfoÆ_}TUR+ >CA(+9SPpSÔvdc{SZXZfFNȑ^Ouwns<ZTX^jT!O<RKFA93&TtݱݩݦݠATݛݜݚݖʜݏݍ݆݇u݀݁szqա˕UXcˑhՏRՃiYP|HEoqSw48mlXuSVXU?JV]a/RKLIB 7*';:#A  W(  ȱ޵IW՚ՖՎՒ~ՆՋ{zyrxvvuuǣroq_p\lXlkXje]mTftdUlWaL]Ɓ@[ZPYRXQWgVTXT*<R$Q#}O7NYtN4MkLjTJ*I:HGKD*C. &>&<D6 4321Z4$/.+j ihfdba`^]\[ZYݰWQZWVĕUԶǿԫRPOԪMԛLÿKIԩFEԙDCBA@Í?[?|ԋ=nx;987[6j5\4W3^"\\10D.6-O+:*J)A(<'1&0%$%# !( #$\2 GFEY]lEDCBA>=<9ӧ8Ӹ76Ĉ5Ӳ43^ 34Ӝ2Ӟ1U0j/L.S-,[+@:)Ӏ(v'y&z%w$^$A#)e!dbU>_$$ӼQӰӲOa_:p;4;<===><>?@tA`BBCD@DE`EFhFG|H,HIJ<JK KLMlNNOhOPxPQ|RRRSHSSSTlTUVPW WXYlZ,Z[\T\]d^^___p_ONӈӉLӀKqlJ`JIXHJG|lzDNYBko@C?A>OKa 5;3:#8@76!3)201 #+ *B)!&#'a2[ZYURQPONib,NLٰKٮJ٬HEDٔٓAB|bAك@ـ?x>=j<P;M:te_7|6WR4S3291c,10I/.>-5S+D1)(( '&%"$/c$#"a`_^]\qd\[عدZsYX׃tVyoQoPfOϕdpN\LqcJ_I\H^G?F֌EJDKcBքQ@}?y|=<%;V{9nd#]5j4,d2c1b0`/I.5,3*0). %7e%'&$! #[ZXVMK͝HyeHGF͒ED͇C͊͂@́<z~:}9tw54t32Ԡlh/dkf-.ZV,Ԇ+Q*I)>+'<&.glq:_aIG"F<84+&-(1?g!  ?hd?><:8}653210/.*)h)Y(HE'є?#B!3 l(#ix$ GiӹDӵCAӫj@@?>Ӝ=ӛ<Ӛ;Ȏ8765t3ry0΀+*(ki&З%jf$[#a"] Y_rkOfy99nz3T kh*NP/?>=&K+8 4G<+*0-+%", Ok }zxvutslponmlkh}g{exda}^p]n\kYrX]Wd`m\T^STWRKG6>;nCQRn@b7E:J O+)(+Wnsqpoihedcb`^][ZYo@YXWTSRPNMLrqJKԿIԹԷEDCp|A԰@ԫ?Ԡ=ԚB;E6Q4QԍjRA3p\d"\C_q$QPOKJӷIӶHqӯBӧA?Ӣ=<Ӛ986Ӝ54Әӟ1ӗ0Ӓӈ.-,Ӏ&%r@X$#Ӏ"|!s vXm_~=U@ok%rF] R8KA2/R.-=4-$gsx' t *)ҿ(Ҹ'Ҫ&{Ѧ#"tѢ ѝћєѓюъ=ыч{ц@J};u t -tnq .jf WK@+'ou* u~}|{کb_zvsI -+ @n5R!5wD/1H *)9 427+7L   6ww־x4ֺ}|ִ{ֶyֳxw֪u֭tsְr֩q֧֥nm֛֖j֙֗֌֏x֌|vևLWwvTuhig]jm\"=yti])K`CHC269/;3G*&z,(rponmkjigfedcbaza`^]\ytZoYcXv{@][UX[d\GKE{I4+6+)*2'2- x{x w v t*sqnmljihgf|dfedcba |~jM},<5}H<}l<=ן}<g;ԝ:U}`JQPAON L }"ƿƽƻƺƸƵƳ~\ƱƮuƬƠƪpƩƥƤƢcơvƞƝƜKJnILItHsFDS~V@QNjJd|LCu?<9]5_')DD 81 9<,*  SQPOMLJ aab$bc$cddhdexefgdgh\hipij8jk`klmxn8no8opqqr8rsptttuuvw<wx,xylz$z{8{{|\|}$}@}d}|}}~TDpHɖȹDA@?9876ϿϾ0ϸ/.϶o*)\(Z#'ϩ%ϧ$q[ϡ ϝMWxχ\π*e(TQ2HPK %A$4(G5  B /ysrqpnnmljkcba`Ȼ_Ȯ^t]Ȫ[ȢZrY[X+ȕ]dȒVSȌ^ȈȄZȂ|{rl7VajS@mDikdH]K!MAG : *&cba`ж^\ZРYtОVНSQϩPONLJЃGЁFzByi?qsj8q7637l6W5h4g3d2q1Z0V/N.Do0bx1R.%-uO,1$_@#!:'%8 8~}| |srpoml~igodcb^[Z;TiqJmz;012}/1I(,.}"?`QL 18 %IFDCCB@?:986|10/-C-,}+wuq'e&A%p$l!V ^}dZNKLONU'=H)731-&'!  ,43210/.-+~^e$K$`#Ud BC;62O1'*R,(! 5>=<;:987y6}5Sp56XKZWm1R0/v.R-r;:3e01/^3*+Ea0$a!"1<    82*ɵɹɲɳɶɫɭɩɛɝɢ[t\ɔ ɝ T ə hɗɇɊɋɌ|x~|krg,`D_PLD#ɺ~ɾ}ɱ|!L|{ɦzɛyɗwɖvɑtĈzxca_x { q v x~VUK|QLO{,IT?9>"<331hE E;F ~|{wvtrpon)HnmlƽjƶƯgƭfeƩcbƟa`kƕ^q]oX o#1 #ʳ~ʮ}ʫ|{1{z]sXi0lI(S9SRv{R@4"%I2( ,- '!.   Ayy|owjƨƧ[}TM1]s(o`ji?c\WI)&}hr0m}_out}VWIngwZCgssņaŁfu3VPp9e*cZV#;'#b`^[YXUTSRMLQ$LůKIHGŹFűŰCA?Ť>ţ<Ũ;Ţ:ŝŚ8ś7ŕŚ54ogőO/Ō-\,U+M*Pn(tp&\kfRh``iWXSML9C(RYdRSSF{y5x_ukudts]RrFpCo/m!Bbj _H1< 154.( ,-$" a<l00$$h0l$D@PPxX(`\xp  £   ~de{zrF5jlccs[ThrWXRQ>/AUVRQP$~?D7@>;'*usrqmlkhfcba`_^\i\[Z~YWV|UvTëTmSk}nkpgC86<h2_u3-*:,O9a`( h,[C6./~QqQRijhR{|/7y-,Ż,-W4? i hƁ$hiHZh6Z534Z01.$-5}+{ +'&K(#! {&G0{   {lj8|}zw}q}t~y|{zPxawbu4tc| OPkgy|UȑdNzC?=;~:8760-xZ+*p|nT{q$V[_! dyy~NO{}XcpytslV]Y` Q\NeWSx*=; WL"{{#}xə~{zyxw|zx{wk|J Y P | ~` Vh{^}}(wQ+#w)& x(_ʡ(H()5|&j{l0gjaD|Q%\tvZAr]4 B  *+%A0|H{6xOg}|˩</.w-,,-vt+O*4)L|C,Uv+LE{~ECEvx>{n-<O9L~N75wb3[1]08DAo4=̱=>>x0]9wbv9Bb<aR` P_V\5]c1ZW~XWw>T RUQO NLK8J;IH}}w8 {͹0/.-,+*o)|'l'~}zz"{ywbtJ=$[8[\L^GEd)ECBs@?>:%8C76542χ.,*sTTU XUMlЏ 4||/-'&}{k#yzxxvzt~svrbqp n k j\hgczjab,]31(YUSMDCD3.%Uzz|zyxwutsqpї0pqunmxlkjihgfpZrUL*(W'&XxDxB6io]xp5`x`t@`x0H\Dt @T4,0d0D\xPdx (Dpppҟ(p():):))p()*~E8*~+ ӇL+ p`+ +p+td tdptduMuuԏupuvJvJvvpvwUwx0՗,x0p@x0qPqrdij|QQRijRij112<Znxyq]$q+COTV:֟TYmopYMYit2YfYeYdYbY`Y_#Y_t2Y^t3Y\Y[ep7  0DXh|$8H\tL| קY[bgYZqmYZbYYYYbYX+YXaYWaYVmYVb+YRb*YQb)YOb&YNb YKbYIbYFدp9YF YDlY2 Y( Y$ YY3p:(YuDXxp:LXkjXٷ\d08pGL|p„Œ;”p”m”P\ht(4@LXdp|L9`tœ¤¬´jcodings-1.0.58/resources/tables/Transcoder_Gbk_ByteArray.bin000066400000000000000000000141641433325321700242450ustar00rootroot00000000000000p@  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~@  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_@   !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRS@  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRST@  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVW@  !"#$%&'()*+,-./0123456789:;<=>?@ABCD@  !"#$%&'()*+,-./0123456789:;<=>?@ABC@  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVVVVVVVVVVVWXYZ[\]^_`abcdefghijklmnopqVrsVtVVVVuvwxyz{|}~VVVVVVVVVVVVVVVVVVVVV@  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~@  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa@  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~@   !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~       !"#$%&'(   !"#$%&'()*+,-./012                 !"#$%&'()*+,-./0123456789:;<=>?@  !"#$%&'()*+,-./01         !"#  !"#$%&'()*+,-./012345678  !"#$%&'()*+,-./01234567888889:;8  !"#$%&      !"#$%&''''''''''''''''''''''''''      !"#$%&      jcodings-1.0.58/resources/tables/Transcoder_Gbk_WordArray.bin000066400000000000000000005452141433325321700242620ustar00rootroot00000000000000   $(!,$0'4*8-<0@3D6H9LAEHKN  Q R T0 U WP X KZp    !$$(',*0-4083<6@9DADGKNQRT(UWHXZhZ Z  \ ¡ O\  ]<  ]\ ]|  W]  ] @AB ] ¦æĦŦƦǦȦɦʦ˦̦ͦΦϦ ]ЦѦ ҦӦԦզ֦צئ _^ ѧҧӧԧէ֧ا٧ڧۧܧݧާߧ ^ ק _] %` ` \CDEF G`  `h GHY `|  ` IJKLOa ʡǡơM̡ءޡNϡOΡġšɡȡҡӡߡáˡסa8 ֡աP١ԡܡݡQRڡۡa ѡ͡Sa СWa ٢ڢۢܢݢޢߢŢƢǢȢɢʢˢ̢͢΢ϢТbѢҢӢԢբ֢עآ¢âĢ bx©éĩũƩǩȩɩʩ˩̩ͩΩϩЩѩҩөԩթ֩שة٩ک۩ܩݩީߩb TUVWXYZ[\]^_`abcdefghijklmnopqrstuvw_d xyz{|}~d eD %ex ge``]`t`aa0aaabbpbcde<epeee e@ABCDEFGHf ¤äĤŤƤǤȤɤʤˤ̤ͤΤϤФѤҤӤԤդ֤פؤ٤ڤۤܤݤޤߤf abfg-g¥åĥťƥǥȥɥʥ˥̥ͥΥϥХѥҥӥԥե֥ץإ٥ڥۥܥݥޥߥ `cdoh ŨƨǨȨɨʨ˨̨ͨΨϨШѨҨӨԨը֨רب٨ڨۨܨݨިߨi Zj, I5jh JKLMNOwj| PQRSTjfghij$]j`jtjjj@ABCDEFԴGHIJKLMNOPQRSپjTUVWþXYZ[Թ\˳]^ž_`abcdefghijklmnopqrstuvlwxyz{|}~mӴֲۼݷ·n ÁāŁƁǁȁɁʁo,ˁ́́΁ρЁсҁӁԁՁ͵ցׁκ؁فځہ܁݁ށ߁۰Ѽp8޳@ĽABCDEFGHIJKLMNOPqDQRSٴTUVWXYZ[\]^_`abcdefghijklmnopqrsrP]lm no$p0q<rHsT=s\tuvwxyz{|}~sټ‚ÂĂłƂǂȂɂʂ˂̂͂΂tςЂт҂ӂԂՂւׂ؂قڂۂ܂݂ނ߂ߴ@ABuCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwvxyz{|}~w˿ҶƒÃăŃƃǃȃɃʃ˰˃̃ع߾̓΃σxЃу҃ӃԸԃՃփ׃؃كڃۃ܃݃ރ߃ڹyմ@ABCDEFGHIJKLMNO˻PQʵRSTzUVַWXYZ[\]^ո_`abcdefghiιjklmn̴̿op{qrstuvwxyйz{|}~˽|Ӽٽ„Ä~ĄńƄDŽȄɄʄ˄̄̈́΄τЄф҄ӄԄՄքׄ؄لڄۄ܄݄ބ߄Ҵ@ABCD׳EFGHIJKLMN˷OPQRSTUVWXYZ[\]^_`aܻbcdefghijklmnopqrstuv(wxyz{|}~޲Ǿ4βڿŹнȰɿź@ԳϺͷ…ÅąɰֶԷŅԿƅDžȅɅʅ˅̅Lͅ΅υЅхʳ҅ӅԅՅօׅ؅مڅۅ܅݅ޅ߅ǺX׾ͺ̾@ABCDȿEFGHIJKdLM߶NOPQRSTUVWXY޿Z[\]^_`abcߺdpefghijklmnopqrstuvwxyz{|}~|пȷȺ†ÆĆņƆdžȆɆʆˆ̆͆ΆφІц҆ӆԆՆֆ׆؆نچۆ܆݆ކ߆@AμBCD¸EFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdٺefghijklmnopqrstuvwxyz{|}~‡ÇćŇƇLJȇɇʇˇ͇̇·χЇч҇ӇԇՇևׇ؇هڇۇ܇݇އ߇ػڶѴ̹@ABCDEFGHIJKLMNOPQRSصTUVWXYZ[\]^_`abcdeӿfghijklӰطmnopqrstuvwxyz{|}~ѿdzˆÈĈňƈLjȈɈʈˈ͈̈ΈψЈш҈ӈԈѶՈֈ׈؈وڈۈ܈݈ވ߈̵¶@A BCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~ն$ڱ‰ÉĉʼnƉljȉɉʉˉ͉̉ΉωЉщ҉ӉǿԉՉ։׉؉ىډۉ܉݉0މ߉м@AB<CDEFGܷHIJKLMNOPQRSTU°VWXYZ[\]^_`abcdefgúhiHjklmnopqrʶ˼stuvwxyz{|}~Tù`ŠÊĊŊƊNJȊɊʊˊ̊͊ΊϊЊъҊӊԊՊ֊׊؊يڊۊ܊݊ފߊl@ABCDEFGHIJKLMNOPQRSTUxVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~޼յ‹ËċŋƋNjȋɋʋˋ̋͋΋ϋЋыҋӋԋՋ֋׋؋ًڋۋ܋݋ދߋ@ABCDEFGH׿IJKL¹MNOPQRSTUVWXYZ[\]^_`abcdefٹgͿ»hijklmnopҼqrstuvżwļܿxyz{|}~ѹԶ;߳־ŒӾÌČŌƌnjȌɌʌˌ̌͌ΌόЌьҌӌԌՌ֌׌،ٌڌی܌݌ތߌڸ@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~޴ÍčōƍǍȍɍʍˍ͍̍΍ύЍэҍӍԍՍ֍׍؍ٍڍۍ܍ݍލߍ@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{޾|}~Ͱ ұ۵,ϻŽÎĎŎƎǎȎɎʎˎ͎̎ΎώЎюҎӎɸԎՎ֎û׎8؎َڎێӱ܎ݎގߎ׵ϷȶD@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijPklmnױopqrstuvwڳxyzܵ{|}~\ʲ˱hܺõÏďŏƏǏȏɏʏˏ̏͏ΏϏЏяҏӏԏՏ֏µ׏؏ُڏջۏ܏tݏޏߏرɼ޷tuvwxyz{|} ,8DP\ht(4@LXdp| $0<HT`lx@ABCDEFGHIJKLMNֹOPQRSTUVWXYZ[\]^_`abcdefлghֿijklmnopqrstֻuv޺wxyҿz{|}~ڻ¼ݻҲͳѲ߹̻ÐĐŐƐǐȐɐʐː̐͐ΐϐАѐҐӐԐՐ֐אِؐڐېܐݐސиߐ߷@ȴABŻCDEFGHIJKLMNOPQRSTUVWۻXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~ð‘ÑđőƑǑȑɑʑˑ̑͑ΑϑБёґӑԑՑ֑בّؑڑۑܑݑޑߑɳؽŲ@AǰBCDEFGHIJKLMۿNOPQRSTUVWXYгZ[\]^_`Ѱabcdefghijkٿlmnopqrstuvwֵxyz{|}~չܾΰоݰֳҹӻ(ư’ÒĒŒƒǒȒɒʒ˒̒͒ΒϒВђݾҒӒԒՒ֒גݽْؒڒےܒݒ4ޒߒ޶ӽؿ@@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\ҽ]^_`abcdefghLijklmnopqrstuvwxyz{|}~Xڰݴd“ÓēœƓǓȓɓʓ˓͓̓ΓųϓГѓғӓԓՓ֓דؓٓړۓܓݓޓߓpٲ@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`|abcdefghijklmnopqrstuvwxyz{|}~ĸŷ̈ʹеȾֱ̽Ҹض͔”ÔĔŔƔǔȔɔ߰ʔ˔͔̔ΔϔДєҔӔԔՔ֔הؔ϶ٔڔ۔ܔݔޔߔΠȼɾ@ABCDEFGHIJϬKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopиqrλstuvwxyz{|}~޻•ÕĕŕƕǕȕɕʕ˕͕̕ΕϕЕѕҕӕԕՕ֕וٕؕڕەܕݕޕߕܲ@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdef˸ghijIJklmnopqrŶsܸtuvwxyz{ܽ|}~ݿܼϼذ̸–Ö¿ĖŖƖǖȖɖʖ˖̖͖ ΖϖЖіҖӖԖՖ֖זٖؖږۖܖݖޖߖ˺۽@ABCDEFGHIJKLMNOPQRSTU$VWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~0ÿ׹<—×ėŗƗǗȗɗʗ˗̗͗ΗϗЗїҗӗԗ՗֗חؗٗڗۗܗݗޗߗH@ABCDEFGHIJKLMNOPQRSTUTVŸWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~`۲l˜ØĘŘƘǘȘɘʘ˘̘͘ΘϘИјҘӘԘ՘֘טؘ٘ژۘܘݘޘߘxȳ@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~™ÙęřƙǙșəʙ˙̙͙ΙϙЙљҙәԙՙ֙יؙٙڙۙܙݙޙߙδ@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefg˴hijklmnopqrstuvwx߼yz{|}~вζٻȱϱѱбšÚĚŚƚǚȚɚʚ˚͚̚ΚϚКњҚӚԚ՚֚ךؚٚښۚܚݚշޚߚ@AسBCDEFGHIJKLMNOPQRSڷTUVWXYZ[\]^_`abcdefgײhiھjkӺlmnoзpqrstuvwxyz{|}~ñü›ÛěśƛǛƺțɛʛ˛̛͛ΛϛЛћқӛԛ՛֛כ؛ٛڛۛܛݛޛߛӵԺ @ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_,`abcdefghijklmnopqrsɶtuvwxyz۸{|}ʿ~8DȸœÜĜŜƜǜȜɜʜ˜̜͜ΜϜМќҜӜԜ՜֜ל؜ٜڜۜܜݜޜߜP@ABCεDEFGHIJKLM\NOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{h|}~tγÝĝŝƝǝȝɝʝ˝̝͝ΝϝНѝҝӝԝ՝֝İם؝ٝڝ۝ܝݝޝߝ@ABCDEFGHIJKLMNOPQRSTUVW ,8DP\ht̀͌ΘϤаѼ(4@LXdp| $0<HT`lxXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~ƵһľžÞĞӲŞƞǞȞɞʞ˞̞͞ΞϞОўҞӞԞ՞֞מ؞ٞڞ۞ܞݞޞߞ@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghٷijklmnopqrstuvwxyz{|}~ͻŸßğşƟǟȟɟʟ˟̟͟ΟϟПџҟӟԟ՟֟ן؟ٟڟ۟ܟݟޟߟ@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~ְ àĠŠƠǠȠɠʠˠ̠͠ΠϠРѠҠӠԠՠ֠נؠ٠ڠ۠ܠݠޠߠҵѾ@ABݺƽCDEFGHIJKLMNOP(QRSTUVWXYZ[\]^_`abc²defghijklmnopqrstu4vwxyz{|}~@ABCDEFGHIJKL @MNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwx Lyz{|}~@ABCDEFG XHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopq drstuvwxyz{|}~@ABC pDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuv|wxyz{|}~Ϲ@AɴBCDEFGHIJKLMNOPQRSTUVWXYZ[ʸ\]^_`abcdef±g׼hijklmnopqrstuvwxyz{|}~@ABCDEFGHIξJKLM̰NOPQRSôTUVWҾXYZ[\]^_`abۺcdefghijklmnopqrճstuvԱwxyz{|}~@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijkǵlװٰmnopĵqԽʻrs޸tuvwxyz{|}~@ABCDкEFǸGHIJKLMNOPQRSTUVWXYZ[\]^_`ܶabcdefghijklmnopqrstuvwxyz{|}~@ABCDEFG޽DzHIJKLMNOPQRSöTUVWXYZ[\]^_`abcdefghijklmnopqrɵstuvwxyz{|}~ @AؾBý̶CDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklm$nopqrstuvwxyz{|}~0@ABCDEFGHIJKLMNOPQṞSTUVWXYZ[\]^_`abc<dŴefghijklmnopqĿrstuvwxyz{|}~ǻ H@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghij!Tklmnopqrstuvwxyz{|}~"`@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abc̺d#lefgѸhijklmnƿopqrstuvwxyz{ӳ|}~Ƴս$x̳ް@ABCDEFGHIJKLMNOPQRSTUVWڼX%YZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~տ&ѽܴ߿@ABCDEFGHIJKLMNOPQRSTU'VWXYZ[\]^_`abcdefghijklmnopqrstuvwxy߽z˶{|}~͸(ʰʱѵڵ@ABCDEFGHIJ)KLMNOPQȵRSTUV߲WXYZ[\]^_`abcdefghijklmnopq*rstuvwxyz{|}~ܹ+@ABCDEFGHIJKLMNݸOPQRS۴TUVWXYZ[\]^_`abcdefghi,jklmnopشqrstuvwxyz{|}~ɻ-@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuv.wxyz{|}~۷ִ@/ABCDEFGHIJKLMNOڲPQRSTUVWXYZ[\]^_`abcdefghijklmn1opqrstuvwxyz{|}~@ABCDEFGH2IJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~3 @ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcd4,efghijklmnopqrstuvwxyz{|}~@ABCD58EFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~6D@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`a7Pbcdefghijklmnopqrstuvwxyz{|}~ͼٸ׷ķ8\ʽ̼´9hж޵ɽ׸:t޹@ABCDEFհGHIJKLMNOPQRSTUVWXYZ;[\]^_`abcdefghijklmnopqrstuvwxyz{|}~<Ե@ABCDEFGHIJKLMNOPQR= , 8 D P \ ht(4 @!L"X#d$p%|&'()*+,-./12 34$506<7H8T9`:l;x<=>>STUVWXYZ[ĺҰ\]^_`abcdefghijklmܳno?pqrstuvwxyz{|}~۾ϴ@@ABCDEFGHIJKLMNOǶظθPɹQʷRSTUϿVWXYZ[η\A]^_`abcdefghijklmnopqrstuvBwxyz{|}~ŽC@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcDdefghijklmnopqrstuvwxyz{|}~E۱@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_ʾ`aGb˾cdefghijklmnopqrstuvwxyղz{|}~H@ABCDEFGHIJIKLڽMNOPQRSTUVWXYZ[\]^ҷŰ_`abcdeJ(fghijkԲlmnopqrstuvwxyz{|}~K4Ĵ@AL@BCDEFݲGHIJKĻLMNOPQԼRSTUVWXYZɺ[\]^ML_`abcdefghijklmnopqrstuvwxyz{|}~NXվʺ˲@AƷBCDEFGHIJKOdLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuPpvwxyz{|}~д@ABQ|CDٵEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnoRpqrstuvwxyz{|}ͱ~S@ABCDEFGHIJKLMNOPQRSTUVW̲XYZ[\]^_`abcdefghijαklTmnopqrstuvwxyz{|}~U@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnoVpqrstuvwxyz{|ز}~@ABCDWEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}X~@ABCDEFGHIYJKLMNOPQRSTUVϲWXYZ[\]^_`abcdefghijklmnopZqrstuƹvwxy׻z{|}~[@ABCDEFGHIJKLMNOPQRSTUVW]XYZ[\]^_`abcdefghȻijklmnopqrstuvwxyz{|}~^ @ABCDEFGHIJKLMNOPQ_RSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~`$@ABCDEFGHIJKLMNOPQRSTUVWXa0YZ[\]^_`abcdefghiֽjklmnopqrstijuvwxyz{|}~b<@ABCDEFGHIJKLMNOcHPòQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvdTwxӹyz{|}~ֺ@ABCDEFGe`HIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~fl@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]gx^۹_`ǽabcdefghijklmnopqrstuvwxyz{|}~h@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`iabcdefghijklmnopqrstuvwxyz{|}~j@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{k|}~@ABCDEFGHIJKLMNOPQRSTUVWXYZ[l\]^_`abcdefghijklmnopqrstuvwxyz{|}~m@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwnxyz{|}~ƼǼ÷oʴϳø̷οpѻȹ@ABCDEFGqHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxryz{|}~Ѻ@ABCDEFGHIJKLMNOPQtRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~u@ABCDEFGHIJKLMNOƲܰѷغּ߻v ĶʹPQRSӸTUVWպXYZ[\ϸ]^_`abcdw,eófghijklmnopqrstuvwxyz{|}~x8ϰ@ABCDEFGHIJKLMNOPQRSTyDUVWXYZ[\]^_`abcdefghijklmnopqrȲstuvwxyz{|}~zPıŵ׶@ABCDEFGHڴ{\IJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|h|}~@ABCDEFGHIJKLMNOPQRSTUVWXYZ}t[\]^_`abcdefghijklmnopqrstuvwxyz{|}~~@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`aνbϽԻcdeǴٱfghijklmnopqrstuvw߱xyz{|}~ٳϵű@ABCDEFHIJ K,L8MDNPO\PhQtRSTUVWXYZ[\^_`a(b4c@dLeXfdgph|ijklmnopqrtu vw$x0y<zH{T|`}l~xݵ@AѳBCDEFGHIJKLMNOPQRƱSTUݶVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}ܱ~˵@ABCDEFGHIJKLMNºOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{ɱ|}~@ABCƾDEFGHIӷJKLMNOPQRSͽTUVWXYZ[\]^״_`abcdefghijklmnopqrstuvwxyz{|}~ɲ@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwx(yz{|}~@ABCDEFGHIJKLMNOPQRSTUV4WXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~@@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstLuvwxyz{|}~@ABCDEFGHIJKLMNOPQRSXTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~d@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnoppqrstuvwxyz{|}~@ABCDEFGHIJKLMNO|PQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~Ƹ۶ָؼ½@AͶBƶCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\ձ]Һ^_`abӶcdefghijklmno׽pqrstuvʼ³wxyz{|}~ݱ@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcde͹fghƴijklmnopqrstuvwxyz{|}~@ABCDEFGHIJKLMNOPQR԰STUVW XYZ[\]^_`abcdefghijklmnopǷqrstuvwxyz{|}~а@AϾBCDEFGHIJKޱLMNOPQRSTUVWXYZ$[\]^_`abcdefghijklmnopqrstuvwxyz{|}~¾0@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnop<qrstuvwxyz{|}~@ABCDE˹ٶHռFGHIſJߵKLMNOPQRSTUVWXYZ[\]^_`abcTdefghijklmnopqrstuvwxyɷz{|}~`@ABCDEFͲGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstluvwxyz{|}~Ƚxݹ@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~@ABCDEFGHIJKLMNOPQ۳RԾݼSTҳUVWXYZǹ[\]^_`abcdefghijklmnopqrstuvwxyz߸{|}~@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\ ]^_`abcdefghijklmnopqrstuvwxyz{|}~,@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|8}~@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\D]^_`abcdefghijklmnopqrstuvwxyz{|}~P@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`ab\cdefghijklmno׺pqrstuvwxyz{|}h~@ABCDEFGHIJKLMNOtPQRSƻTUVWXYZ[ں\]^_`abcdefghijklmnopqrstuvwxyz{|}~Ĺ@ABCDEFDZGHŒIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~ݳØ Ĥ ,8DP\ht(4@LXdp| $0<HT`lx„ÐĜD]L`  ` t %ƈ gƜ @ABCDEFGHIJKLMNOƴ U hijklmnopqrstuvwxyz{|}~-P £ãģţƣǣȣɣʣˣ̣ͣΣϣУѣңӣԣգ֣ףأ٣ڣۣܣݣޣߣ o VWɌ]lƀƔƬHɄɬɴ`5 g\]4]T]t]]]]^^__``ejs?PXy jcodings-1.0.58/resources/tables/Transcoder_Iso2022_ByteArray.bin000066400000000000000000000023411433325321700245740ustar00rootroot00000000000000@BBJ$(!~BJjcodings-1.0.58/resources/tables/Transcoder_Iso2022_WordArray.bin000066400000000000000000000004301433325321700246010ustar00rootroot00000000000000E $,HPXY`XYt  H  Hjcodings-1.0.58/resources/tables/Transcoder_JapaneseEuc_ByteArray.bin000066400000000000000000002644251433325321700257340ustar00rootroot00000000000000i  !"#$%&'()*+,-./0123456789:;<=>?@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@           !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVW  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUV  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^  !"#$%&'()*+,-./0123456789:;<=>?@ABCDDDDDDDDDDDDDDDDDDDDDDDDDDD  !"#$%&'()*+,-./0123456789:;<=>?@ABCDE  !"#$%&'()*+,-./0123456   !"#$%&'()*+,-./0123456789:;<=>?  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTTTTTTTTTTT  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWWWWWWWW  !"#$%&'()*+,-./01  !"""""""""""""""#$%&'()*+,-./0123456789:;<=>?@ABC"""""""""""""  !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!  !"#$%&'()*+,-./01234444444444444444444444444444444444444444444  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQ    !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQ  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRST  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOOPQRSTUVWXYZ[\]  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQ RSTU 𠂉𠂢𠂤𠆢𠈓𠌫𠎁𠍱𠏹𠑊𠔉𠗖𠘨𠝏𠠇𠠺𠢹𠥼𠦝𠫓𠬝𠵅𠷡𠺕𠹭𠹤𠽟𡈁𡉕𡉻𡉴𡋤𡋗𡋽𡌶𡍄𡏄𡑭𡗗𦰩𡙇𡜆𡝂𡧃𡱖𡴭𡵅𡵸𡵢𡶡𡶜𡶒𡶷𡷠𡸳𡼞𡽶𡿺𢅻𢌞𢎭𢛳𢡛𢢫𢦏𢪸𢭏𢭐𢭆𢰝𢮦𢰤𢷡𣇃𣇵𣆶𣍲𣏓𣏒𣏐𣏤𣏕𣏚𣏟𣑊𣑑𣑋𣑥𣓤𣕚𣖔𣘹𣙇𣘸𣘺𣜜𣜌𣝤𣟿𣟧𣠤𣠽𣪘𣱿𣴀𣵀𣷺𣷹𣷓𣽾𤂖𤄃𤇆𤇾𤎼𤘩𤚥𤢖𤩍𤭖𤭯𤰖𤴔𤸎𤸷𤹪𤺋𥁊𥁕𥄢𥆩𥇥𥇍𥈞𥉌𥐮𥓙𥖧𥞩𥞴𥧔𥫤𥫣𥫱𥮲𥱋𥱤𥸮𥹖𥹥𥹢𥻘𥻂𥻨𥼣𥽜𥿠𥿔𦀌𥿻𦀗𦁠𦃭𦉰𦊆𦍌𣴎𦐂𦙾𦚰𦜝𦣝𦣪𦥑𦥯𦧝𦨞𦩘𦪌𦪷𦱳𦳝𦹥𦾔𦿸𦿶𦿷𧄍𧄹𧏛𧏚𧏾𧐐𧑉𧘕𧘔𧘱𧚓𧜎𧜣𧝒𧦅𧪄𧮳𧮾𧯇𧲸𧶠𧸐𧾷𨂊𨂻𨊂𨋳𨐌𨑕𨕫𨗈𨗉𨛗𨛺𨥉𨥆𨥫𨦇𨦈𨦺𨦻𨨞𨨩𨩱𨩃𨪙𨫍𨫤𨫝𨯁𨯯𨴐𨵱𨷻𨸟𨸶𨺉𨻫𨼲𨿸𩊠𩊱𩒐𩗏𩙿𩛰𩜙𩝐𩣆𩩲𩷛𩸽𩸕𩺊𩹉𩻄𩻩𩻛𩿎𪀯𪀚𪃹𪂂𢈘𪎌𪐷𪗱𪘂𪘚𪚲    !"#$%&'()*+,-./0123456789:;<=>????????@ABCDEFGHIJKLMNOPQRSTU??  !"#$%&'$$$$$$$$()*+,-./0123456789:;<$$=>?@ABCDEFGHIJKLMNOPQRST  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTTTTTTTTTUV  !"#$%&'()*+,-./0123456788888889:;<=>?@ABCDEFGHI888J8888KL888MN𠀋𡈽𡌛𡑮𡢽𠮟𡚴𡸴𣇄𣗄𣜿𣝣𣳾𤟱𥒎𥔎𥝱𥧄𥶡𦫿𦹀𧃴𧚄𨉷𨏍𪆐  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`a     !"#$%&'()*+,-./0123456789:;<=>?@  !"#$%&'()*+,-./0123456789:;<  !"#$%&'()*+,-./0123456789:;<=>   !"#$%&'()*+,-./0123456789   !"#$%&'()*+,-./0123456789:;<=>?                !"#$%&'()*+,-./012345678  !"#$%&'()*+,-./0123456788889:;<8  !"#$%&'()*+,-.    !"   !"#$%&'()*   !"#$%&'()*+,-.  !"#$%&'  !"#$%&'()*+,-./012  !"#$%&'()*+,-  !"#$%&'()*+,-.   !"#$%&'()*+,-./012    !"#$%&'()*  !"#$%&'()   !"#$%&'()*+,   !"#$%&'()*+,-./0  !"#$%&'()*+,-  !"#$%&'()*+,-./0123    !"#$%&'()*+,        !" #$%&'()*     !"#$%&'()*    !"#$%&'()*+,-./0    !"#$%&'()*+,-./0123   !"#$%&'()*+,-./01234  !"#$%&'()*+,-./    !"#$%&  !"#$%&'()*+,-./012  !"#$%&'()*   !"#$%   !"#$%&'()*+,-./              !"#$%&'(       !"#  !"#$    !"#$  !"#$%&'()*+,-./  !"#$%&'()*+,-./0  !"#$%&'       !"#$%&'  !"#$   !"#    !"#$%   !"#$%&'()*+,-   !"#$%&'()*+,-  !"#$%&'()*+,-./    !"#$%    !"#$%&                     !"#$%&'(  !"#$%&'()*+,-./0123456      !"# $ %&'( )*+, - . /01  !"#$%&'()*+,-.  !"#$%&'()*     !"             !"     !"#$%&'    !"#$     !"#$%&'()*+,-   !"#   !"#$%&'()*+,-.  !"#$%&'()*+,-./0123456   !"#$%&'()*+,-./01  !"#$%&'()*+,-./   !"#$%&'()*+,-.  !"#$  !"#$%&'()*+,  !"#$%&'()*+,-./01    !"#$%&'()*+,-   !"#$%&'()*+,-.  !"#$%&'()*+,-    !"#$%&'()*  !"#$%&'()    !"#$%&'()*+,-   !"#$%&'()*  !"#$%&   !"#$%&'()*+,-   !"  !"#$%&'()*+    !"#$%&'()*+,-   !"#$%   !"       !"#$%&   !"#$%&'()*+,-     !"#$%&'()*   !"#     !"#$%&'()*+    !"#$%&'()*   !"#$%&'()*+,-./012   !"#$%&'()*+,-./012   !"#$%&'()     !"#$%&'()   !"#$%&'()*   !"#$%&'()*+,-   !"#$%&'()   !"#$%&'()*+,-.    !    !"#$%&'()*+,     !"#$%&'()*+   !"#$%&'()*+,-./  !"#$%&'()*    !"#$%&'()*+,-.    !"#   !"#$%    !"#$%&'()*+,-       !"#$%      !"#$%&'    !"#$%&'()    !"#$%&'()*+,-     !"#    !"#$%&'(     !"#$%&'()   !"#$%&'()*    !"#$%&        !"#$%&'()*+,-.     !"#$%&'   !"#$%     !"#$     !"#$%&'  !   !"#$%&'(     !"#$                                !"#     !"    !"#$%&'()*+,-./          !"#$   !"#$%&'()    !"#$      !"#$%  !"#$%&'(    !"#     !"#$%&'   !"#$%&'    !"#$%&   !"#$%&'()*+,-.  !"#$%&'()*+,-./01234   !"#$%&         !"#$%&' () * +,  !"#$%&'()*+,  !"#$%&'()*+,   !"#$%&'()*  !"#$%&'()*+    !"#$%&'()*    !"#$%&'    !"   !"#          !"#$%&'(    !"#$%&'    !   !"#$%&'()*    !"#$%&'(    !"#$%&'   !"#$%&'()*+,   !"#$%&'()*    !"#$%&  !"#$%&'()*+,-./0     !"#$%&  !"#$%&'   !"#$%&'()*  !"#$%&'(   !"#$%&'()*+  !"#$%&'()     !"#$%&'()*+    !"#$%&'(   !"#$%&'()*+,-./0123       ! " # $%&' () *+,- . /    !"#$%&'()*+,-./0  !"#$%&'()*+,    !"#$%&'()*+     !"#$%&'()*     !"#$%&'()*+  !"#$%&'()*     !"#$%   !"#$%&'()*+,-./01       !"#$    !"#$%&'     !"#    !"#$%&'()   !"#$%&'()*+,-./012   !"#$%&'()*+,-     !"#$%&'(    !"#$%&'()*+,-./012    !"#$%&'       !"#$%&'()* +,       !"#$%&'   !"#$      !"#$%&'()*+,-.    !  !"#$   !"#$%&   !"#$%&'()*+   !"#$%&'()*+,-./0    !"    !"#  !"#$%&     !"     !"#$%&'(   !"#$%&'()*+,     !    !"#$%     !"#$%&  !"#$%&'()  !"#$%&'()*+,-./  !  !"#$%&'()   !"#$%&'     !"#$%&'()*+     !"#$%&'()*        !"#$%&'()*+,-./    !"#$%&'()*+,-./01    !"#$%&'()*+,-./0   !"#$%&'()*+,-./0    !"#$%   !"#$%&'()    !"#$%&'()*+    !"#$%&'()*+,-./       ! " #$ %& ' ( )* +,-./0              !"#$%&'()    !"  !"#$%&'()    !"#$%&'   !"#$     !"#$%&'()*+,-./01           !"#$%&'()*+   !"#$%&'()*+,-./01234  !"#$%&'()*+,-./01234  !"#$%&'()      !"#     !"#$%   !"#$%&'    !"#$%&'()*+,-.   !"#$%&'()*+,-./0123    !"#$%&'()*+,   !"#$%&'()*+,-./0    !"#$%&'   !"#$%&'()*+,-    !"#$%&'()   !"#$%&'(     !"#$  !"#$%   !"#$    !"#$%  !"#$%&'()*+,-.            !"#$%&'()*+   !"#$%&'()*+,-./01  !"#$%&'(   !"#$%&     !"#$%&'()*+,-.    !"#$%&'()  !"#$%&'()*   !"#$%&'()*+,-./   !"#         !"#$%&'()*+,-       !"#$%&'(  !      !"#$%&'()*+,-./   !"#$%&'()*+,-./   !"#$%&'   !"#$%&'()*+,-  !"#$%&'()   !"#$%&'()*+,-./01   !"#$%&'(       !"#$     !"#$%&    !"#    !"#$%       !"#$%&'()*+,-    !"#$%&'()*  !"#$%&'    !"#$%&'()*+,    !"#$%&'()*+,-./0123456789:;<=   !"#$%&'()*+,-./0123456789:;<=  !"#$%&'()*+,-./0123456789:;<=>  !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!                            !"#$%&'()*+,-./   !"#$%&'()*+,-    !"#$%&'()*+,-   !"#$%&'()*+,-./0123456  !"#$%&'()*+,-./0  !"#$%&'(    !"#$%&      !"# $% &'() *+,- . / 012      !  !"#$%&'()*+,-./0  !"#$%&'()*+,-./012   !"#$%&'()*+,-./   !"#$   !"#$%&'()*+,-./0123   !"#$%&'()*+,-./0123    !"       !    !"#$%&'()*+,-./0      !     !"#$%&'()*+,-./       ! " #$ % & '()* + ,    !"  !"#$%&'()*+,-./01    !"#$%&'()*+,-./01  !"#$%&'()*+,-     !"#$%&'()*+,-./01   !"#$%&'()*   !"#$%&'()*       ! " #$ %& ' () *+ ,-./01         !"#$    !"#$%&  !"#$%&'()*+,-./   !"#$%&'    !"#$%&'()*+,-./0      !"#$%&'()*+,-./0   !"#$%&'(   !"#$%&'()*+    !  !"#$%&'()*+,-./0123456789:;<=>?    !"#$%&'(   !"#$%&'()*+,-./012     !     !"#$    !                                 !"#$   !"#$%&'                         !"#       !"#$%&                                                                                                           !"     !"#$%&   !                                      !"    !"        !                         !                 !"#                                                              !      !                                                                                                                                                                                                           !"                                                                                      !"#$                                                                                                                                                                                                                                                        !"#                                               !"#$  !"#$%&'()                      !"#                                                   !                                                                                                                     ! "#    !"#$%&'()*+,        !"#$                             !"#$%&'()*+,-./         !"#$  !"#$%&'()*+,-./0123456789:;<=      !"#$%&'()*+,-./01234   !"#$%&'()*      !"#$%&'()    !"#$%&'()     !"#$%&'()*      !"#$   !"#$%&'()*+,-./01  !"#$%&'(             !"#$%&'(   !"#$%&'()*+,    !"#     !"    !"#   !   !"#$%&'    !"#    !"#$%&'()     !"#$%&'()*  !"#$       !"#$%&                                             !"#              !"#$%&'()    !"#    !"#                             !"#$    !"#$%&'      !"#$%&'()*   !"#$%&'  !"#$                 !"#      !"#$%&        !"#$%&'(  !"#$%&'()*+,     !"#$%&'  !"#$%&'()*    !"#$           !"#$%   !"#   !   !"#$%         !"#   !"#$%     !"#$%&'(             !                   !"#$%&        !"#$%         !"#$%&'    !"#$%&'()*+,   !"      !"#$%&   !"#$%&'()*      !"#$%&'(     !"#$%&   !"#$%&'()   !"#$%&'()  !"    !"#$%&'     !"#$%&'   !"#$%&'                    !"#$%    !"#             !"#$%&'    !"#$%     !"#          !"#$%&'()*    !"#$%                       !"                                                                 !"     !"#          !"#$%&  !"#$%&'()*+,-.       !"#$%&'      !"#    !"#$%      !"#$    !"#$                                           !"#$       !"#$%&'()      !"#$%&                !"#$%    !   !"#$%&'()*+,            ! "# $% & '    !"#$%&'(   !    !"#$    !    !"#             !"#$%                         !"#$%    !"#$%&   !"#      !"#$%             !" #       !"      !"#$              !    !"#$               !   !                      !"         !     !"#$   !"     !     !"#               !"#$%&'(     !"#$%                                       !"#$  !"#$%&'()   !"#$%&'()*+    !                    !"#$%&'     !"#                            !"#$%&'(         !   !"#$%&'()*   !"#$       !"#$%          !"#$%&'        !                  !"#                 !"#$    !"#$%&'(   !"#$          !"              !"#               !  !"#$%&'()*+,,,,,,,,,,,,,,,,,,,,,                                          !jcodings-1.0.58/resources/tables/Transcoder_JapaneseEuc_WordArray.bin000066400000000000000000007664041433325321700257500ustar00rootroot00000000000000@  `  ~    \ @ @( 0  8@HPX`h "p#%x&(*+- .01346$79,:<4=?<@BDCELFHTIK\LNdOQlRTtUW|YZ\]_` `bxT8  ( 08@HPX` "h#%p&(x)+-.0 134679$:<,=?4@B<CEDFHLIKTLN\OQdRTlUWtXZ|\]_`bc,c4dT  e f g @i  j kX `lpmnpqstvwy z|(}08@HPX`hpx \dlt| (08¼@HPX`  hdLefgijkPlhln|pqstvwyz| }(08@HPX`hpT\dlt| (0´8ż@HPX`ӈӐ  DՄ،۔ޜ (<T8  ( 08@HPX` "h#%p&(x)+-.0 134679$:<,=?4@B<CEDFHLIKTLN\OQdRTlUWtXZ|\]_`bc,|؄یޔ (0    ADLT\dxgijkPlhl<n|pqstvwyz| }(08@HPX`hpT\dlt| (0´8ż@HPX`ӈDLT\d ll  tgijkPlhl<n|pqstvwyz| }(08@HPX`hpT\dlt| (0´8ż@HPX`ӈdl тQѷQ T ї  QѳQѷQѝQѿ !Q"#ѩ%&Q'(Ѭ*+Q,\-щ/0Q12ѵ45Q67џ9:Q;<ш>?Q@AщCDQEFѹH dIQJKўMNQOPѕ RSQTUљWXQYZѤ\ l]Q^_љabQcdfgQhiklQmnp qQrsѰuvQwxѾz{Q|}ыtQрQѫQџ|QѭQѠQѥQѨQјQъQѴQчQQшQ‘QǑцQ̑ѡQёхQ֑ѬQۑѲQїQ呻QꑹрQсQѯQѥQ QщQ ё  Q у!QѶQQ#( Q!"$%Q&')*Q+,./Q01њ34Q$56і89Q:;і=>Q?&0@цBCQDEѷGHQIJє'LMQNOѩQRQSTџVWQXY @)8T \  d lt| !# $&(')0*l*+, @.  /1  235t ,6 8T 9:QՑђ<QڑѢ>?QA ߑщBQDEѭQ鑙GюHQJ$рKM,QN+e,./j1235l68L9:1 ȏȏȏ¹ȏȏȏȏȏȏȏȏ>sȏȏȏ ȏȏȏȏȏȏȏȏȏȏȏȏ>0 ȏȏȏȏȏȏȏȏȏȏȏȏȏȏȏȏȏȏȏ> ôȏȏȏȏȏȏȏȏȏȏȏȏȏȏȏ?9tȏ ȏȏȏȏȏȏȏȏȏȏ´ȏȏȏȏȏȏȏȏȏȏȏȏȏ?{ ȏȏȏȏɏɏɏɏɏɏɏɏɏ?l,d,8,P\p DH84|PL@X(lDLɏ ɏɏɏɏɏɏɏɏɏɏɏɏ?X ɏɏɏɏɏɏɏɏɏɏɏɏɏвɏɏɏɏ޼Һɏ@A ɏɏɏɏɏɏɏɏɏɏɏɏɏɏɏٰ@d ɏɏɏɏɏɏɏɏɏɏ@ ɏɏɏɏɏɏɏɏɏɏǾɏɏɏɏɏɏƾA@ ɏɏɏɏɏɏɏɏɏɏɏɏɏȾʏѼʏAIʏ ʏʏʏʏʏʏϽʏʏʏʏʏʏʏʏA<ʏʏ ʏʏʏʏʏʏʏʏʏʏAʏ ʏʏʏʏʏʏʏʏʏʏʏʏ߼ʏʏBTʏʏʏ ʏʏʏʏʏʏʏʏʏʏʏʏʏʏʏʏʏʏʏʏʏʏBQԺ ʏʏʏʏʏʏʏʏʏʏʏʏB° ʏʏʏʏѸʏʏʏʏʏʏʏʏʏˏB( ˏˏˏˏˏˏˏˏˏˏˏˏˏˏˏˏˏˏˏˏˏˏC ˏˏˏˏˏˏˏˏˏˏýˏˏˏˏˏˏˏˏͳˏˏˏCYtˏˏ ˏˏˏ̶ˏˏˏˏˏˏˏˏˏˏˏˏˏˏˏˏˏˏˏˏˏˏC Ѳˏˏˏˏˏˏˏˏˏˏˏˏˏˏˏˏˏˏˏˏˏˏˏ̏CŰ̏̏ ̏̏̏̏̏̏̏̏̏̏̏̏̏̏̏̏̏̏׶̏D\̏ ̏̏̏̏̏̏̏̏̏ͱ̏̏̏̏̏̏̏̏̏̏Dȁ̏ ̏̏̏̏̏̏̏̏̏̏̏̏̏̏̏̏̏̏̏̏̏̏̏Ĵ̏̏̏̏̏̏Dǜ ̏̏̏̏̏̏̏̏̏̏̏̏̏̏̏̏̏̏̏̏DD ̏͏͏͏Ŵӿ͏͏͏͏͏͏͏ù͏͏͏͏͏E'͏ ͏͏͏͏ڰ͏͏͏͏͏͏ͷ͏۰͏͏͏͏͏͏͏Eiɬ ͏͏͏͏͏͏͏͏͏͏ֱ͏͏͏Eʈ͏͏͏͏ɾ ͏͏͏͏͏͏͏͏͏͏͏͏͏͏͏E,͏͏͏͏ ͏͏͏͏͏͏͏͏͏͏͏͏͏͏͏͏͏͏͏͏͏͏͏͏ΏΏF/ΏΏΏΏΏΏΏΏ ΏΏΏΏΏΏΏΏΏΏFq̤Ώ ΏĹΏΏΏΏΏΏΏΏΏΏΏΏΏΏΏΏΏΏF` ΏΏαΏױΏΏΏΏΏΏƴΏΏΏΏΏΏΏΏFΏʾ ΏΏǴΏΏΏΏΏΏΏΏΏΏΏΏΏΏΏΏΏΏΏG7 ΏΏΏΏΏΏΏΏΏΏΏΏΏΏΏϏϏϏϏϏϏϏϏϏϏGyπϏ ϏϏϏϏϏϏϏϏϏϏϏֽϏϏϏϏϏG( ϏϏϏϏϏϏϏϏϏϏϏϏϏϏϏϏϏϏGм ϏϏϏϏϏϏպϏϏϏϏֺεϏϏϏϏϏܹH?T ϏϏϏϏϏϏϏϏ˾ϏϏϏϏϏϏϏŹϏϏϏH ϏϏϏϏϏϏϏϏϏϏϏϏϏϏϏϏγЏЏЏHL ЏЏЏЏЏЏЏЏЏЏЏЏЏЏЏЏЏЏЏЏЏЏЏIЏ̾ ЏЏЏЏЏЏЏЏЏЏЏЏЏЏЏЏЏҼЏIGӠ ЏЏЏЏЏЏЏЏЏЏЏ˽;ЏЏЏ׺ЏЏЏЏЏI0ض ЏЏҲЏЏЏЏЏЏЏЏЏЏЏЏЏЏЏЏЏٶӲIЏ ЏЏЏЏЏʲЏЏЏЏЏяяяяяяξяяܰяJ Ր яяяяяяяяяяяяяяяяяяяяяԲηƹJO8 яяяяяϱяяяяяяяяяяϳяяяяJяяяя яяяяяяяяяяяяяяJר яяяяяяϾ׽яяяяяяяяяȴKL яояя޳яڿяяяяяяяяҏҏҏҏKWҏҏ ҏڶҏҏҏҏҏҏҏҏҏҏҏҏKټ ҏղҏҏҏҏҏҏҏҏɴҏҏҏҏҏҏҏҏҏҏҏKdҏ ҏҏҏҏҏҏҏҏҏļҏҏҏҏҏҏҏҏҏҏLҏҏҏҏ ҏҏҏҏҏҏҏҏҏʴҏҏҏҏҏҏҏҏҏҏL_ ҏҏҏҏҏҏҏҏҏҏҏҏӏӏӏӏӏӏӏӏӏӏӏL| ζӏӏӏӏͽӏӏӏѾӏӏӏӏӏӏӏL, ӏӏӏӏҸӏӏӏӏӏӏӏӏӏǹӏӏӏӏϷM% ӏȹӏӏӏӏӏӏӏӏӼɹӏӏӏӏӏӏٺӏ¿ҾӏӏӏMgސӏӏӏӏ зӏӏӏӏӏӏӏӏʹӏӏӏӏӏӏӏӏMh ӏӏӏӏӏӏӏӏӏӏӏӏѷӏԏԏԏԏݰ˹ԏԏԏԏM0 ԏԏԏԏԏ۶ԏԏԏԏԏԏԏԏ˴ԏԏԏްԏԏԏԏԏN-ԏ ԏԏԏԏԏԏԏʼԏĽԏԏԏԏ̽ԏԏԏԏNo ԏԏԏҷԏԏԏԏԏԏԏԏԏԏԏԏԏԏNp ԏԏԏԏԏԏԏԏԏԏԏN$ ̴ԏԏԏԏԏO5 ԏԏԏԏԏԏԏԏԏԏԏԏԏԏӷԏՏՏՏՏOwՏ ՏՏՏՏՏՏՏՏՏՏՏՏՏՏՏՏOՏ ՏՏՏՏՏՏՏՏՏՏՏՏʹՏՏՏՏՏO4\84L¨ ülŨTǔ<ɤʀ$̜X x дLDӘ(Ո0נDٴ\ۼt$ވ`(hU,x, ͹ԼՏՏՏՏՏՏՏՏՏ̹ՏՏՏՏՏՏՏՏՏՏՏՏՏՏՏՏՏP=Տ ՏՏՏՏՏՏՏP ՏՏՏӾՏδՏԸՏՏՏιϹՏՏP8 ߰ՏՏՏՏՏՏՏՏՏոՏՏ֏֏֏֏֏֏֏Q ֏֏֏֏֏ӵ֏֏֏֏֏֏֏֏֏֏QE| ֏֏֏֏տ֏й֏֏֏֏֏֏֏֏֏Q֏֏֏֏ ֏֏ѹ֏֏֏֏֏֏֏֏֏֏Q ֏֏֏֏֏֏֏֏֏֏֏֏ÿ֏֏֏֏֏֏֏֏֏֏֏֏R P֏֏ ˼֏֏֏ܴ֏֏ؽ֏֏֏֏ҹ֏֏֏RM$ ֏֏֏֏׏׏׏׏׏׏׏׏ϴ׏׏׏׏׏׏R׏׏ ׏׏׏׏׏׏׏׏׏׏׏׏Ǽ׏׏׏׏׏׏׏׏׏Ŀ׏ֲ׏׏׏ݷܶ׏׏׏׏R ׏׏׏׏ײ׏׏׏׏׏׏׏ѱ׏׏׏׏Sd׏׏ز׏׏׏׏ Է׏׏׏׏׏׏׏׏׏׏׏׏׏׏׏SU  ׏׏׏׏շ׏׏׏ӹ؏׏׏׏׏׏ٲ׏؏؏S؏ ؏؏؏؏؏؏؏؏؏؏؏؏д؏؏؏؏؏؏؏SL؏ ؏؏Ƶݶ؏؏؏۲؏Ծں؏؏؏ڲָ؏؏؏؏T ؏؏؏؏؏؏؏؏؏T] ؏؏؏؏؏؏؏؏؏؏؏؏؏؏؏؏؏؏؏؏؏؏؏؏؏T  ؏؏վ؏؏؏؏؏؏؏؏؏؏؏؏؏؏T؏؏ ؏؏؏؏؏ُُُُُُُُُُُU#`ü ُُُُُُُُُُُُُُُُُُُُُUe ُ־ɼُُُُُُُُُُُُُُُُُُُُُُUُ ُُُُُُُُُُُُُُſُُُُُُُُُUX ُُُُُُُُُُُُُُُڏV+$ڏ ڏڏڏڏڏڏڏڏڏڏڏڏڏڏڏڏڏڏڏVmڏ渏ڏ ڏ׸ԵڏڏڏڏڏڏڏڏڏڏڏڏڏڏڏڏڏڏڏVP ڏڏڏڏڏڏڏڏڏڏڏڏڏڏڏڏڏڏڏڏVڏڏ ڏڏؼַ³ڏڏڏڏڏڏڏڏڏڏڏڏڏW3 ڏڏڏڏڏڏڏڏڏڏڏڏڏڏۏۏۏۏۏۏۏۏۏۏWu4ۏ ۏۏۏۏۏۏۏۏܲۏۏۏۏW ۏۏۏۏۏۏۏۏۏۏۏۏۏۏۏۏۏۏۏۏۏۏۏۏۏۏWۏ ۏۏۏۏۏۏۏۏۏۏۏۏۏۏۏۏۏۏۏۏµۏX;  ۏۏۏۏۏۏۏۏۏۏۏۏۏۏۏۏۏۏۏۏۏۏۏ܏܏X}܏܏܏ ܏܏܏܏Թ܏܏ѽ܏܏܏܏ұ܏׾܏܏չ܏܏܏܏܏޶Xt܏ ܏܏܏܏܏܏܏܏Ӹ܏܏܏Y<܏ۺ ܏܏܏܏܏܏܏܏܏܏܏܏܏܏ؾ܏܏YC ܏܏܏܏܏܏܏܏܏܏܏܏܏܏܏܏܏܏܏܏܏܏Y|܏܏܏܏ ܏܏܏܏܏܏܏߶܏܏܏܏܏܏܏܏܏ݏݏݏY$ ݏݏݏݏݏгݏݏݏݏݏƿݏѴݏݏݏݏݏZ  ѳݏݏݏݏݏݏݏݏݏݏݏݏݏݏݏZK ݏݏݏ׷ֿݏݏݏݏݏݏپݏݏݏݏݏݏݏݏݏǿھݏݏZݏ ݏݏݏݏݏݏݏ۾ݏݏݏݏݏӱݏطݏݏ͵ܾݏݏݏݏݏݏݏݏZݏ ݏݏظݏݏݏݏݏݏݏݏݏݏݏݏݲݏޏޏޏõޏ[ ޏޏޏޏޏҴۿޏޏޏޏޏޏޏޏޏޏޏޏޏޏ[Shڱ ޏޏޏޏޏֹޏռޏޏޏޏޏޏ[4 ޏޏޏޏޏޏޏޏޏޏޏޏޏٷޏĵޏޏޏޏޏ[ޏ ޏޏޏޏޏޏޏޏޏޏ\ ޏޏޏޏ\[ ޏޏޏޏޏޏޏޏޏޏޏޏޏݾޏޏޏޏޏޏޏޏޏޏޏ\ ޏߏߏߏߏߏߏߏߏ׹ߏ߲Ӵߏߏ\ߏߏߏߏ ߏߏߏߏߏ޾ߏߏߏߏߏߏߏߏߏعߏߏ]! ߏߏߏߏߏߏ]cd ߏϼߏҳߏߏߏ] ߏߏߏ۱ߏߏߏߏߏߏߏߏߏߏߏߏߏߏߏߏߏ] ߏ ߏߏߏߏߏߏߏߏߏߏߏߏߏߏٸߏߏߏߏߏߏ^)  ߏߏߏߏߏߏߏߏߏߏߏ^k < ^  ȿ^  ּڷ_1 ( ӳܺ_s  _  ɿ_ ׿޷ҽ`90tH\DXPH,xl4t`,|U,\   4  x   HPյ ʿ`{\ ׼`8Դ ټ` ٹԳaA a\ ݿڹa ߾b ӺŽ˿bIh óڸb@ ۹b ƽc ԱݹcQp Ӷc0 c d dY( d մdd e ea  ״ִشճ޹ܱe@ ǰe f' ߹¸ؿٴfi ֳݺf ۸f  ̿g/!, ׳ٿgq! Ȱǵg" ڴg#D ܿ۷бh7# ۳ܸܳhy$ h%X h% ±۴i?&( ¶i& i'\ رٽj' jG(x öj) j) k ) kO* k+h k, ߷l, lW- l.P l. m/@ m_/ ܷm0 m1 n%1 ng2 n24 еn2 ݸo-3 oo4P o5 0 T`8h( \U,8 x!$!"#<#$%P%& &'T'(p))|)*+`,,-x.H./8/0x1112,234H55Xo5`p5X| ʡˡܡ£ãģţƣǣȣɣʣˣ̣ͣΣϣУѣңӣԣգ֣ףأ٣ڣΡϡpW6hСáѡ p7hŽÎĎŎƎǎȎɎʎˎ͎̎ΎώЎюҎӎԎՎ֎׎؎َڎێ܎ݎގߎ p8l q8U,7`8d89 q_9Xq9494q94RS$T U$U,UUVVWXtXX[h^dDPT6X6`9,9<9D9Lq9T ¢좏ޡ뢏Ģr9 ơǡȡɡšġs: s`:` s:Ϣ ߢТܢ¡ʢˢs: ݢt&;P th;x:XU,:|:YY0;HY;pY;Z|ZZZZ[ t; ҡӡԡա֡סء١ڡ̡ۡ͡t<( u.< up< ƭʭĭ­̭˭ŭͭǭϭu< έíȭɭ߭u= ӭԭЭѭҭ֭v6=D խvx=l<\]^U,<<==<=d=|v=οð صİƻŻŰưǰȰɰʰʰ˰Ķ̰ͰΰϰаѰv=U,_`<`>|b\c0cd> ϶²òIJŲѲƲDzȲw>> ڽŶнw?t w@4 xA Ѷ·÷ķŷƷǷȷɷʷ˷̷ͷηϷзѷҷӷxFA ¸øĸŸƸǸȸɸʸ˸̸͸θиxBۺܺ ݺ޺ߺຏẏ⺏㺏亏ɲ序溏纏躏xC4 Խy D лѻһӻ׻ջԻֻػٻڻۻܻݻ޻߻໏ỏ⻏㻏yND|· ۽yE eflg?lhidj<@,kl`m,nAopLq qrtAstTtuvvwLwxy|Bz{X{|C,}~t@0D<DtxE@4E8E oٱyF հ¾þľžƾǾȾɾʾ˾̾;ξzG θߵɷzVH װDZսzI ʷzI ɱÏÏÏÏÏÏÏÏÏÏÏÏ˳ÏʳϺÏ{J ŏŏŏŏŏŏŏŏŏŏ̵ŏŏŏŏŏŏŏ{^K` ŏŏŏŏŏŏŏŏŏŏŏŏŏŏŏŏŏŏ{K ǏǏǏǏǏʽǏǏǏǏǏǏǏǏǏǏ߽ǏǏǏ{L|G,Hxd,8,PIIJ DKX84KLtPL@M@(lDMHɏ ɏɏɏɏɏɏɏɏɏɏɏɏ|$NT ɏɏɏɏɏɏɏɏɏɏɏɏɏɏɏٰ|fN ̏͏͏͏Ŵӿ͏͏͏͏͏͏͏ù͏͏͏͏͏|OhΏΏĹ ΏΏΏΏΏΏΏΏΏΏΏΏΏΏΏΏΏΏ|P0Џ̾ ЏЏЏЏЏЏЏЏЏЏЏЏЏЏЏЏЏҼЏ},P яяяяяяϾ׽яяяяяяяяяȴ}nQ ӏӏӏӏӏӏӏӏӏӏӏӏѷӏԏԏԏԏݰ˹ԏԏԏԏ}RP ԏԏԏԏԏ۶ԏԏԏԏԏԏԏԏ˴ԏԏԏްԏԏԏԏԏ}S N\O`84L¨ ülŨTǔ<P(ʀ$̜XPx дLDӘQxՈ0נDRHٴ\ۼt$ވ`(SShU,x,S ׏׏׏׏շ׏׏׏ӹ؏׏׏׏׏׏ٲ׏؏؏~4Tُ ُُُُُُُُُُُُُُſُُُُُُُُُ~vUt ۏۏۏۏۏۏۏۏۏۏۏۏۏۏۏۏۏۏۏۏۏۏۏ܏܏~VD ޏޏޏޏޏޏޏޏޏޏޏޏޏٷޏĵޏޏޏޏޏ~Vߏߏߏߏ ߏߏߏߏߏ޾ߏߏߏߏߏߏߏߏߏعߏߏ<W ߏϼߏҳߏߏߏ~X|0tH\UlXPV<H,xV4t`,WU,XtX  4  x   HX ٹԳY Zt ״ִشճ޹ܱD[ ̿[ ׳ٿ\  ]T L] ^ е_@0 Zl[`8h( \U,8[ x!$\]L#<#$%P%& &'T](p))|)^+`_8,-x.H./8/0x1112,2_4H55Xo_`bcde(f4g@hLiXjdkpl|mnopqrstuvxy z{$|0}<~H Tacde f,g8hDiPj\khltmnopqrstuvwyz{|(}4~@LU,T L ` t ʡˡܡݡ£ãģţƣǣȣɣʣˣ̣ͣΣϣУѣңӣԣգ֣ףأ٣ڣΡϡСáѡ \ ̢âU,Xl88@:S$T U$U,UUVVWXtXX< =>FNLTY`6`Dd9<9D9L"l ޡ ߡ[ ¦æĦŦƦǦȦɦʦ˦̦ͦΦϦ(ЦѦ ҦӦԦզ֦צئ ѧҧӧԧէ֧ا٧ڧۧܧݧާߧ! קc 0 sP:XU,HYY0;HY;pY;Z|ZZZZ[ t ֵݴ ׵ø) ߸޸Ϳkο صƻŻʰĶ ˰ٵǻ ̰²Ȼ1 Ͱs ӽlU,xd ĸڼ  ΰż9 źĺ{ ϶X  A ߱ƺ̼ ڽŶн` Ͽɻ ޺I` ijò жۼP  ѵQ\ ߿ޱ ڵǽñŸIJ˻ʻP ɵƳȵ޴۵ ƸY|  ȺP  a ʵıD ̻ Ų޲' i@ ų ͻϰ޿Ǹ ߺ/4 Ѷq  0 7 ɺпνy L λѿ ƲȽа?$  ʺ( лϻȸѰѻ ҰG 0 h Dz  űO һڻɸس °¼ҵܵ˺Ȳɽ ɲ$ ͼӰҿƶܼԿWɶ ӻȼX ٳߴ Խ( _x   ʸҶ%` Իջg @ º˸ð dz-  ݵ̸o ̺ƱH· ۽ ֻ5\PXXHTHtH<8|,(D (` P pX8@T ׻޵w ÷4 ٱ ԰=@ հ ŷְķ0 Ʒ E$ ͸ ͺ   ȳM ػİú μ ݳκŵǷ< U ȷ d ɳ ] ٻl θߵɷ غмԶ»ۻܻ#8 ݻܽe װDZս( ʷ Ƕ˲Űû+0 ʶȱmǺ  ɰݼϵ ̲޻ϸͲ3< Ƽu ɱ˳ʳϺ0˷ ưͶ˵ ; }x ذ ȶݽ˶ڳh ݱC @ ߳ ̵ , K  նֶ β߻кt ޽Ļ̳S ` ʱ  ϲ¾[h ˱ ̱T ! þձc ʽ߽d Ѻľ½̷ иž)| ¹k 0  ô1 ´s@ ,8( x4\d0 (4(p`8$xlX`L\t(8   в޼Һ9p ٰ{è  Ǿƾ, ȾѼAh Ͻ  ߼t IԺ 0 Ѹƀ  ýͳQ@ ̶nj Ѳ ׶$ ͱY| Ĵ   Ŵӿù` ڰͷ۰a ֱʀ ɾ '` iˤ Ĺ αױƴ̐ ʾǴ/ q` ֽͨ  պֺεܹ7H ˾Źyΐ γ , ̾Ҽ?x ˽;׺ض ҲٶӲ( ʲξܰА ԲηƹG ϱϳP Ѹ Ͼ׽ȴ  о޳ڿOҰ ڶ ղɴӀ ļ ʴWD Ԡ ζͽѾ ҸǹϷt ȹӼɹٺ¿Ҿ_ зʹh ѷݰ˹ ۶˴ް%h ʼĽ̽g ҷH ؼ ̴- ӷo$ ٔ ʹhà$`ĸl(x8DŽǼtXxX˜̈X͠@Έ$pϸ ЈHѰ Ҩ x<Ԙl``@شU,ٌX` ͹Լ̹5l w ӾδԸιϹ< ߰ոܰ ӵ= տй` ѹ ÿ0 ˼ܴؽҹEޤ ϴ, ǼĿֲݷܶߐ ײѱ  زԷMT շӹٲ д  Ƶݶ۲Ծںڲָd U ( վ ü ]8 ־ɼ ſ #` e ׸Ե D ؼַ³+ m ܲL  µ3 u, Թѽұ׾չ޶·| Ӹ ۺؾ;P } ߶ÿ гƿѴp ѳC ׷ֿپǿھą ۾ӱط͵ܾ ظݲõ  ҴۿKڱ ֹռō ٷĵ  S4 ݾƕP ׹߲Ӵ ޾ع@ [ ϼҳǝ ۱D ٸ!x c ȥ ȿl ּڷ) ӳܺk$ ɭ ɿ ׿޷ҽ184ܨXݸ(ޜ$߈L\ 0X<D$tH h,U,H8<p d0 յʿs ׼ʵHԴ ټ ٹԳ9P { ݿڹ˽ ߾( ӺŽ˿A óڸ̃ ۹l ƽ ԱݹI$ Ӷ͋  H Q Γ մ   Y ״ִشճ޹ܱϛ ǰ( l ߹¸ؿٴa ֳݺУ$ ۸ ̿'4 ׳ٿi Ȱǵѫ0 ڴ ܿ۷б/ ۳ܸܳqD ҳ  ±۴7 ¶y ӻ رٽ ?` öԁ   G Չ ( ߷  O ֑X   W  ܷי|    _, ءP е ݸ%4 gl ٩@H xd@xU, d,(<xX| |Pt$H,do     ʡˡܡݡ£ãģţƣǣȣɣʣˣ̣ͣΣϣУѣңӣԣգ֣ףأ٣ڣΡϡ  ̢ U,   8   U,(XX=d6` 9<9D9L  ̢ޡ h©éĩũƩǩȩɩʩ˩̩ͩߡΩϩЩѩҩөԩթ֩שة٩ک۩ܩݩީߩ ɪ˪٪ߪ ̪ϪЪͪΪڪ۪ܪʪ$  ѪªҪêӪȪĪԪݪǪתުŪժƪ֪f  ۨP ūd ë«, nH ӫԫի֫تܰܫګ߫۫ ׫٫ޫݫ ҫ4ЦѦ٦ҦӦԦզ֦צئ v ݸ ƫǫЫѫU,< ¡ơǡȡɡšġث~ x  ݣߣܣD ׭߆ \ ͢΢ Ϣ ߢТǢƢݡۣܢԢբʢˢL 8 ¢âĢŢѢҢӢݢ|  ȢɢޢT §çݸħŧƧǧȧɧʧ˧̧ͧΧϧЧ  X ¬ìĬŬƬǬȬɬʬˬ̬ͬάϬЬѬҬӬԬլ֬׬ج٬ڬڦۦܦݦަߦl \4 h  " ۨ@ dT   *pU,T0tPd;,Z|Z`8Ll ҡӡԡա֡סء١ڡ̡ۡ͡ڢۢآ٢T ¥åĥťƥǥȥɥʥ˥̥ͥΥϥХѥҥӥԥե֥ץإ٥ڥۥܥݥޥߥ 2 ¨èĨŨƨǨȨɨʨ˨̨ͨΨϨtL ШѨҨӨԨը֨רب٨ڨۨܨݨި ۬ܬݬެ߬ խޣ:l | ޡ֡ Ӯ ۮB ȣ ݣޣᣏ磏  , ¤JD ʤ` t å ץR   ֨٨ܨި 﨏Z 0 L Ƭʬ ` ଏbx ۭ߭  ( 宏j  ȯݯ 08 rP h  8 z   @   , @\U,D<d==<=d$<Xl (DXp0H`x$8PHX  4  H ۨ \  p   P        ! X! !4 !H !` `! ! ! &! ! h" " R"0 "D ."\ p"t " " " 6" x" " # ># #4 #H #\ F#| # # Y# ֵݴ # ׵øN$ ߸޸Ϳ$ο صƻŻʰĶ% ˰ٵ¡ǻá&\ ̰ġš²ǡȡɡʡȻV& ˡ̡͡ΡͰСѡ' ҡӽӡԡաϡס( @ T hU, |     !!,!@!X!x!!!!!""("<"T"l"""""""##,#@#T#t####$$%&T&'|(((ء ĸ١ڡۡܡڼݡ®^)tîߡ ࡏΰᡏ⡏㡏䡏塏桏硏ż*  顏ꡏ롏Į졏衏źĺ* ϶ŮǮȮƮ$+ ˮ ʮ̮ͮήf+ ϮѮҮ,, ߱ƺ̼Ԯ, ծڽ֮Ŷ׮خٮн,-ڮϿ ܮݮɻn., ޮ߮޺. ijò£ãģţƣ/X ǣɣжˣۼ4/ ̣ͣΣϣУv0ѣ ԣգѵ֣1( ף߿ޱأڣ1ۣ ڵǽߣ࣏ñŸIJ˻⣏㣏ʻ<2D ɵƳȵ壏棏޴۵~2 裏䣏飏꣏룏Ƹ3 죏4 ȺD4 54 5 ʵı 6 ̻L6 Ų޲äĤ6Ť ƤǤȤɤ7h ųˤ̤ͤΤϤФѤҤ7 ӤԤͻդ֤ϰ޿פؤǸT8T ڤïۤߺݤįůƯ8 ߤएѶᤏ⤏䤏夏ǯ椏礏褏ȯ餏ɯ9h ʯ羅줏ͯ9 ίϯЯѯүӯԯկ\:@ ֯: ɺدٯпۯν;P ܯݯ߯"; λѿd$ ΥлϻϥȸѰХѥҥӥԥѻl> Ұإ٥ڥۥܥ? ݥޥߥ? ॏ᥏⥏㥏䥏奏楏祏襏饏2? Dzꥏ륏쥏累t@4 ű@ һڻɸس@ °¼ҵܵ˺Ȳɽ:A ɲ|B8 ͼӰҿƶܼԿBɶ ӻȼC ¨èĨƨٳǨߴBD0 ɨԽD ̨ͨϨШѨҨΨӨԨE ըרبڨ E ݨߨਏᨏ⨏㨏䨏娏稏 JE 訏騏ꨏ먏ʸҶ Fp Իջ G  G º˸ð RH0 dz H ݵ̸ IT ̺Ʊ J· ۽ ZJ ֻ¬ìĬŬ Kl**++,$,-.$./P/01 12<23445,56667`78L89`9:8:;H;<<<=>>??|?@,@@AB0BCD(DEEEFhGGH(HILJJKdLL Ǭ׻Ȭɬ޵ M ˬ÷̬ M ͬάٱϬѬҬӬ bN( Ԭլ֬԰׬ج٬ N հڬ۬ܬݬެ߬ O` ᬏ⬏㬏ŷְķ䬏 (O 欏笏謏鬏꬏묏Ʒ쬏 jP ﬏ Q ͸ Q ͺ0R( rR ȳSH ػİúS μ8Tp ݳκŵǷzT ­íUx ĭŭƭǭȭȷU ɭʭ˭̭ͭ@Vh έϭЭѭɳV ҭӭԭխ׭ح٭W0 ڭܭݭޭ୏ٻ᭏W ⭏θߵ㭏䭏ɷ孏HXT 歏筏譏魏غмԶ»ۻꭏ뭏쭏ܻX ﭏݻܽYp װDZսY ʷPZǶ ˲Űû[` ʶȱ[Ǻ \ ɰݼŮϵƮX]$ Ȯ̲޻ϸ̮ͮͲ] ήϮЮѮҮӮƼԮ^d ɱˮخٮڮܮ˳ݮʳϺޮ_˷߮ஏ ưᮏ⮏Ͷ˵㮏䮏殏箏讏鮏`_ ꮏ뮏쮏ﮏ`8 ` ذ&a ȶݽ˶ڳhb, ݱb įůƯǯɯʯcX ˯̯ͯ߳ϯЯѯү.d ӯԯ֯ׯ̵دկگpd ۯܯޯ߯௏⯏㯏e  䯏每寏篏诏믏쯏﯏e նֶ6f β߻кxf ޽Ļ̳g4 g ʱ>hL h ϲ¾i< ˱i ̱Fj k þձk ʽ߽ l Ѻľ½̷Nl иžmd ¹m n\ Vn ôol ´o p|MN NOXOPQQR RS@SThTUpUV`VW(WXLXYhYZ[X[\x]]^\__`0`ab$bcPcdeef fg,ghDhi4ij|kkllm\mnTnodoptqq ^r в޼Һr ٰs $s Ǿƾfs ȾѼtD Ͻt ,u0 ߼nu v(Ժ v Ѹ4w vw ýͳx ̶x Ѳ <y ׶ ~y ͱ z Ĵ!z !D{@ Ŵӿù!{ ڰͷ۰!|` ֱ" }$ ɾ"L} "~X "~ Ĺ# αױƴ#T, ʾǴ# #D ֽ$ $\, պֺεܹ$ ˾Ź$ γ%"\ %d̾ Ҽ%d ˽;׺%ض ҲٶӲ&*\ ʲξܰ&l Բηƹ&l ϱϳ& '2 Ͼ׽ȴ't  о޳ڿ' ڶ'\ ղɴ(: ļ(| ʴ( ) ζͽѾ)B ҸǹϷ) ȹӼɹٺ¿Ҿ)@ зʹ* ѷݰ˹*J ۶˴ް*P ʼĽ̽* ҷ+| +R  ̴+p ӷ+ ,0 ʹ,Zrs s|st<tu(uv vwwxxyyz z{8{|X}}~P~$<$T\TdTx8HthU,(<D͹Լ ̹,P , ӾδԸιϹ- l ߰ո-b ӵ-| տй- ѹ.(h ÿ.j ˼ܴؽҹ. ϴ.4 ǼĿֲݷܶ/0 ײѱ/rlز Է/ շӹʮٲ/ д08 Ƶݶ۲Ծںڲָ0z 0 0 վ1@( 1ü 1$ ־ɼ2 ſ2H0 2 2P ׸Ե3 3PL ؼַ³3 3L ܲ4 4X\ µ4 4< Թѽұ׾չ޶5 Ӹ5`Hۺ ؾ5 5T ߶6& гƿѴ6h< ѳ6 ׷ֿپǿھ6, ۾ӱط͵ܾ7. ظݲõ7p\ Ҵۿ7ڱ ֹռ7 ٷĵ86  8x 8 ݾ8 ׹߲Ӵ9> ޾ع9< 9 ϼҳ:, ۱:Fh ٸ: :( ;  ȿ;N ּڷ; ӳܺ; < ɿ$ ߾>fl ӺŽ˿> óڸ> ۹?, ƽ?n Աݹ? Ӷ? @4 @v @ @\ մA< A~@ ״ִشճ޹ܱA\ ǰB BDd ߹¸ؿٴB ֳݺB< ۸C  ̿CL ׳ٿC ȰǵC° ڴD0 ܿ۷бDTè ۳ܸܳDP D E ±۴E\Š ¶E0 Eƌ رٽF" Fdh öF FD G*x Gl Gɘ G ߷H2ʐ Ht, H Ht I:̰ I|, ܷI J4 JBΰ J J еKϰ ݸKJ< KМ K$Pdd T8U,T\4¨(àHŘ(Ƅ`<pɐ ʈ$l̨$͸,ΨϨ4ДPoX LX x LRҌ ˯ׯɮЮگޯLҤ L4  ʡˡܡ£ãģţƣǣȣɣʣˣ̣ͣΣϣУѣңӣԣգ֣ףأ٣ڣΡϡСáѡ֢עU,p҄Ҝ, 89 M  MZX Ml Mֈ ơۨ֜ N ְ Nb    N ( N< RP O(d ʣ| ңא ӣOjפ ٣ۨ׸ ܣOj   4 O O4 HdU,րּ֔֨  4H\t׈לװ,@TP0\ ٤¯Pr ܤ㤏ޤP 뤏ꤏP ̯Q8  Qz8 QzL Q` Qx ǥٌ R@٠ եRٴ ֥R    S SH, ŨȨSH ʨSh ˨T| ۨTPڔ 樏Tڨ 쨏ڼU,0DXpل٘٬$@`tڌڠڴT < P TPd Sx ЬUی 嬏UX۠ N ۴ R U U V  V`  ֭48U,H\pۄۘ۬0DVL Tܐ Vܤ W& ®ĮǮɮîWh ծ׮֮ۮW   84 H Qz\ ¯ïWp ݌ ٯίX.ݠ ᯏXpݼ ꯏ鯏X X   Y6, Yx@ YX Yl Y6ވU,ܜܸ,@Th݄ݘݴ$8PdހޔZ>ޜ   Z, D X Zl Nb߀ ߔ ߨ [߼   [F [ MZ(U,$<Pdxߌߠߴ  4[< \  M  \N TP p  \ \0 \D ]X Nbl ]V ] ] W& ^ 4   ^^  ^< X l ^U,(<Pdx4Pdx_$ _f  S$ S8 L R`p` R| Y6  Oj _ _ Oj TP $ `,8 P ĥd Ux Oj `n  `0U,DXlt0H\p` R@T a4h av a N a b< b~  $ Qz8 bL d Ux S a YU,`x0D\pc cD Y4 RH U\ p p O N  c c d  dL  d, dD \\ ep eT a Nb  e N N   W&  U4U,,@Th|$<Th,@eH f a R   \$ a8 RL W&` UXt f\ N  f \U,0DXlf g"D R\ p a p Y Nb gd W&TU,h|gX4܈L<,g4   H\U,@x(XL ,)lM rHPX6`Ph9D9Lhpjcodings-1.0.58/resources/tables/Transcoder_JapaneseSjis_ByteArray.bin000066400000000000000000001147561433325321700261310ustar00rootroot00000000000000@  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmmmmmmmmmmmnopqrstummmmmmmmvwxyz{|mmmmmmmmmmm}~mmmmmmmmmmm@   !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~@  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWWWWWWWWXYZ[\]^_`abcdefghijklmnoWWWWWWWWpqrstuvwxyz{|}~WWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWW@  !"""""""""""""""#$%&'()*+,-./0123456789:;<=>?@ABC"""""""""""""DEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abc""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""@@  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_@  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~@  !"#$%&'()*+,-./0123444444444444444444444444444444444444444444456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~@  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefgh@  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRST@  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~@   !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwx    !"#$%&'(   !"#$%&'()*+,-./012                !"#$%&'()*+,-./0123456789:;<=>?@  !"#$%&'()*+,-./012345678  !"#$%&'()*+,-./0123456788889:;<8         !"#$                                           !"   !"#$%                           !"       !"#$%                                                                                                           !"    !"#                                          !"                                    !                    !"#                                                                                                                                                                                                                                                                   !                                                                                     !                                                                                                                                                                                                                                                           !"#                                               !"#$  !"#$%&'(                                                                                                                                                                                     !"#$%&'()*+,-./0123456789:;<=   !"#$%&'()*+,-./0123456789:;<=  !"#$%&'()*+,-./0123456789:;<=>  !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!                           !    !                             !"#$   !"#$%&'                    !"#       !"#$%&                                          !"#$%&   !                         !"        !                                                         !      !                                                                                                                                                  !"                            !"#$                                                                                                   !"#$%&'()        !"#                                           !                                              !  !"#$%&'()*+,-./0123456789:;<=>?  jcodings-1.0.58/resources/tables/Transcoder_JapaneseSjis_WordArray.bin000066400000000000000000003141001433325321700261220ustar00rootroot00000000000000f  \ ~ = p z z zzzzzzz!z$z'z*z-z0z3 96z9 z<z?zBzEzH zKzNzQzSzVzYz\z_zbzezh kThx !$'*-0369<?B EHKMPSVY\_behkmtm| o( qzr uuzxz{z~zzzzzzzzz 4q|hxr !$'*-0369<?B EHKMPSVY\_behkmtux{~  Nʁ}L  ~ 4 vp ƒÃăŃƃǃȃɃʃ˃̃̓ $΃σ Ѓу҃ӃԃՃփ  F@ABCDEGHIJKLMNOPQRSTUVWXYZ[\]^_`pqrstuwxyz{|}~ < v ~ , v, ]\aefghdc D  $  f ˁ́ ́ ݁΁ށ|ځȁɁ  ߁,@ ہnl ܁  4, vD l  <8d$<d~@ABV XYZqrstuvwxyzkl` ‚ÂĂłƂǂȂɂʂ˂̂͂΂ςЂт҂ӂԂՂւׂ؂قڂۂ܂݂ނ߂ JKTU@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^D_`abcdefghijklmnopqrstuvwxyz{|}~ E[RSxxplt Os^NuۊO  TvVRhL T \]݌܌jiSl|Ym wedtWߗȈ‹C ˜Ɉތx`ĘLf ϒAȘʈZC̑ǘ]ØŘƘCΘјϘɘ͘gT Ҙʘ˘ИӘ̘ˈDN֕t Wrטܘژ՘ؘۘ٘ە֘MݘޘCoUtlDL qŒ{|ߘ؎lϗ`\| ̈ΕÎU TPÍbBXL C͋@AlDEHFmGIKJƕ"VMN LQPOԘRSDזUTWVXdY Z[[ƖeZ\}]S_`ZaTTb c~fečgh`ijkʎnlmyopq~ustrvw xyyÙzË{}}~Mʓo* nؐYʕhl OU܍n c͗wJN uEו΋Mَܖ2d kxٔCt\ ߌ™ڔPmęTřƙKpəș\ ʙ˙З̙Ι͙~X}ϙЙљ QҙyFofՙbpÌٙ@ڙؙ‰jEiۙ:D ܙhegݒD@fNi۔܊ߙzݙ|ޙ CۓČl aB@]PDCiA ƍENFGLKNMJB4 SOHISBYXOP UR[VWTZQ`ea\ fPhA^b[c_igridc$ mkpjnlkorwutJ QÉqsRv܉}{|~ \Xxyӓ dX` dlc͈}ŌR ޕyݍ\n ϋVBRؒx ^C_ Wu|Zx ͑š‘ÚĚƚg̚Xۗ ȚY˚h˒ǍǚUɚŚo͚m ΚĒКnњ֚՚ϚҚԚ  ǕךdؚٚښܚۚޚӚߚݚmpsْb` ϕĉ[OǙgVvΈ ޓt_zDz@D\ A@ܔϖDJWdBEÑWiFȍ( GonƌψKLIWHÖPpj0 ЈQORPNPMؕVWSK kUXwYT }ZQ[_\0  ʼn^]kda`bcefr4 hgilڒdjmn|q opqrEstuyFЖGnjvwwxyz{}~ FvG@XqG{ɍQƉeh 80 ГxQ@ljJ˞RΑ z ˎшqޖċAڎKsA \Nj ͓rWjƎwԓR  ZБx݊!@\ s! RśěÛ›! ɛƛțǛʛ˛̛"H ϛΛ͛՛ћЛқӛ֛כԛ"H ؛ފٛۛڛܛݛBHIޛȌߛbJFЋ" sztȐёAX"D yNKcH# LݔXM{xɌNf#P( pLf@CDB_FEAGHILJKMNUO#ˆ ٕPMQTU|VOoʌWX^YJe# Z[\]_`abSRc`FʍVjdeefޔi$èhgaґ mkjlk]ponqrzsOtJ$X$ SKEuuYZzwyOxv|$İDLx\T<d,XpP XT(,t(TT@|< €àĨ {|vӑ}}$ P~pb%Ƅ IxYߔ{%` Փfɐ҈ySđz%DŽD ӈŜƜĜǜÜ% ȜɜœԑQT̜֜͜Μ՜ԜҜdSϜќԈӜʜМלc˜|&&X Jڜޜߜܜٜ؜ݜeۜ&h &H ^ʐ@ABCYDEFՑˌߖ[&ɰG ˍHőKILJM}NQ'.4Z OVPc}RSWTRܐeZ'pʠ cS]d_fba[YUXSِ`qg@hminAE\' kwlˆgjUҔp}'ˬ Jqsoߕ{̎~xP(6v |{uzrt@||̍TyڐT[wdf͒}~(xX `Kgh( rg(0 ېE̖)>| TQPdBoh)Ͱ i^FC[) xU*x ̌ĝq~ݝsŝǝƝU֓hȝG~ɝ*F ʝ˝|Đk֍l͝ΎΝҋːϝafzVН{*@ ӝѝԝҝ՝֝؝םٝڝU|{۝ߝ*ϼ VޝݝՈ̐ftE+ 0 WWNAӔiq+NМ ŋɉgÈb\A+ @ܓBCjDFGHȋgXIJ֙]\֑+lō LKLN]MNOؖ{DQpSVUR, TWLjލێZmXYۖ[\aYt^ܝnf`”,Vh f]cb͐їʉ}ged_͌kiˉgms, ƑuAt^_ђMpoqnvljrhĎ`,` ̒ȓhIxZz}ji͍-{j yĈ|~ˋKjVO-^8 ~[B-Ԥ ǖ_IX-o ֈAŒ̓֒.$Մ kȑ^žƋ|ɋOy.f T|ҞP՞YԞӞОĞÞ֞Ξɞƞ.| ǞϞ̞\ƒʞŞȞl͞מߞ؞ޞݞΒ۞. ٞWڞ͖~ўM/,@ k@ɓ/n׸h @wKGFEB/ DCIELHJMQN/L OܞRSTUӋ~WVY\ԋ04ؐ \[]̉V^`_abc~c΍def0vg ihw}cjlBkmnopqsrtiuEkva0\ʚ Bwxœyіz|{~}0 CXiÔ1<$` Ĕ]rD1~h דBv͉1 @AgDבj2H mÒk^Fh2D۰ lY_Q\CZ2 OܗUt2d ƟҗßişʟȟŸWɟğ˟̟[~ǟY3 ܬ ύakПߟٟnԟݟQ֟͟ϟ`۟ӟ3L( ڟ؟ܟΌÏXҟN՟Οџןp3ݨ anM3 ŖؑHBޟ4T YRAВQ@4T޴ NIRKHגkEDM4GFL COPUTVYbSW4dQZ X][^aZG\`_Jdh5߰||P@ɨ,ʘ ˤP(tͨp8ϴ(Дd`X0Ԝ|t8װD؈T`@ۨ\ܤ ݠLެ\ߨ fbcgemmjilғnoqp5\$ rsΉD܎Ѝ5| FutxY{vzy_׈5 }G~|wB6" ŏRď6d, Əϔώ6` FonM6 RӗzWCי7* ܒݎu7lX ЕŔvĖSq7ҍ ]Ɣ7 ό_ƓKT82\ Җ—LPQ8t bl8 ʋߊ8` ωX]ǔ9: ԗՋi9| lڗ9$ Š:| Z@ZABCDFGErIH:B KJLMONQPÊr[RYSpTcRb\jU: V[YXEW؈Ȕ\Z{L^l_]Ԕ`aوfcbE: idehgDa`^jklnmuvprt]us; oqaǏxwyzɒ|{s}~;J ; ×ȕoS;4 IFcHM< u~mvXĊՔږӖ 4 ֔A@CB>b ʏDbFEGIHЎ>JV _FSPOcLNj_MKIˏ[ՍQR>$h֋ \TSЉTUWXHYZ[׋щÓ?(G \Hȉb]d`a`^_̏ڈ?jH bcŐBdetŗgfilj҉mke?D msoϐnnpqrntuv? ˓ސwy{xzA|Eq~M@0 }͏vG[^|Ɗ@rp ΏJ}y@ M؋}@d ͕ӉZNJ\A8ߐ ͔ѕzŽēUAz4 әȊA АĕA ̋HeSlϏB@@ ЌWfƗnBI @gC[RBюhAfaےFݗ׍GaIЏHB( IgDJEoMQLUiROPNKGWC TVSpXea[_ۈZbfjԖԒ\dY]^ȖCH, ]ًΗgchjmiҕɊɖ܈lkC nuovrȎtqwpcDks{~|z`ѐC  ɔ}x@qJDUyJD [ZDP ʊD8 ߍrulDT rQA`HE Kˊ|EX0t$XP TXtxx,xh,< h\,8 $x0L(sV lҎϑkՖ^E EWE ]яI̊ҌbmnxFd ݈_wّEӌE\F` ƐeҐrE]BF8 AtDCorTHIGFJBڑFN OKLMpUQGPSRcVWVXZ^[Y^G&\ ]d_`acbefgbh՗LvijPkGhX lmnopqɎrsܕڊCwMtquʔwǑvDGx zy|{}~͊ǗFGT ŎHmcԉF|ڋH. ۑcՉϓpHp Ζ։sH| t`r׉H ΊI6( eۋىҏ؍p؉ԌHIx GވI tKI< ӏN֖fJ> ~uWH@J ̕UӒJ@@ הԏǎBCnJPQKD NFHRGKLOEEIFdOVTKF mSUWX[YZ˔M\a`KX Abh]_^PAdcefK gՌsi|jklL  qrm\naopztwsLN< uv֎x`ua{^|}~gؔL IwL XIډMD ZMV IaM yM$ OspXqՏt߈\܋Np UܑьN^ ٍT֏ND JN ݋A@CBDPEFGO$ vHeIJKK`LoMONePQRϊSTUOf\V pWXYGZ[\O ]vu`_P^Lab׏cKݐidf؏O ehigُ]frmwllkFlbYڏjP, opn֌_FsaUvrwtuqǓNۉbPn zxkЊyzȗ_{~|@}Pldy uӎwTދP xcQ4 \ ]̝QQv  JQ  Lؓۏ^Q  eLvn݉̔ъӐMݑ\fR< pGd Go^܏qwR~  R  Ԑ͎qNS  zSD  Ր׌HHS 0 xHS  @DABCJE֐GIFLRKMT   NQPOSRUTVWYXgZ[]^TL $ _\`ԎaORb]cfedygT  riڍhqkmjlpnPory֗SsAutx`T  wv{zyQ|}~DUH hCJ_ӕҒHUT Iv}ߋԕމRqǒU\0PLt x48P4x<h<Txd T    h  |   (    x @LTޑ trʒAߑTiNU` ٓxV^Օ߉BkyKՎJIɗVҊ WߓM׎@V\ xYSsXsV AV@ ѓUގz|Vy_W"h XݏWd ΔэߎdʗBjޒtW$ ݓbn،W SޏzgX* eLKXl( Nݕse|Xp K@BACыdB^EDFX tՒKbGHLJIߏY2 OȒZMNLPYtL VYXLQRUWZTSY ^_`]\[dbcaeY fhӊgsiljkmopqtruwZ: vZ|h Z| xMy•zJ[ՊԊ{|}~֊t}{[ ň[B  hj[Pɑ ~Õ@w׊A’˗z[ G@KuۍBחǐ\ YWٌGԙJ_d\J kIP\ ÐrʖvxC\ ƈfڕ] ؊BC]RH ŕ{aДړ̗zjop] z{^ޗڌ@BA] CDEF^\ HGIHQJKZєO^Z LݖM{a`NOPRSUQTيVWXY^ Z\[^a]_`b^4 cde]nfgyh_ l ʑwmljkiwnopqsrx_b tvRuxˑyz_} |~{_P [`( E`j TS`( @D`| LNa0 I~ar khVap Lؗa P–Γb8  bz P DCEL@ABQJFKb  HG{LMNIOߒSTRb! QWPUVYX[\]hZ^c@!D _`ac! bcdc! efghki[jlٗmnpqo˖d! sotuvwٖxzy{|}~dH"< Cیl@d" Vd" se#@8` hD`tH|x@Tx,dH t h  H  !<!!!"4""#8#\eP#de, Iij{CD^OPQRSTUVWXFGH`abcdefghijklmnopqrstuvwxym_nOQe$lMobp e%l f8&p Pfz'%d&h&'f'<f'8 v'8g0'8$4<tX$\$d'0'@'H'PgB'X N}Lh9' ]\efghdch{' h(0 TUVWXYZ[\]@ABCDEFGHIh(Ṕ ݁΁ށځaȁɁiA( ہi) @ABCDEFGHIJKLMNOPQRSi)D(((H()d)<)$<dj)@ABV XYZqrstuvwxyzkljI) j*` j*| ei`cakjdlfnk* _mbgh~kQ* rsopquk+ tk+8*Xpl*t**++0+Hl+P Os^NuhۊOlY+Ym wedtWiߗȈ‹Cjl,k l˜Ɉތx`ĘLmfl, ϒAȘʈZC̑nǘ]ØŘƘCΘјϘɘ͘gm- Ҙʘp˘ИorӘ̘qˈDN֕ma- Warsטܘژ՘ؘۘ٘ە֘MݘޘCoUvm-,t,---.x. qŒ{|ߘw؎ulϗ`m.t zẍΕyÎUn'/0 T{PÍbBXni/ C͋@AlD}EHFmGI|KJƕn/Y Z[~[ƖeZ\}]S_`ZaTn0Lb c~fečgh`ijkʎnlmyopq~ustrvwo/0 xyyÙzË{}}~Mʓooq1 nؐYʕho2 c͗wwJNo2 uEו΋Mَܖp73 kxٔCpy3\ ߌ™ڔPmęTřƙKpəșp4 ʙ˙З̙Ι͙~X}ϙЙљp4 QҙyFofՙbpÌٙ@ڙؙ‰jEiۙq?5 aB@]PDCq5iA ƍENFGLKNMJq6 \ fPhA^b[c_igridcr6 ϋVBRؒrG6 ^C_r7@ Wu|r7 ΚĒКnњ֚՚ϚҚԚs 7 ϕĉ[OǙgVvΈsO88 ޓt_zDz@Ds8 A@ܔϖDJWdBEÑWiFȍs9<q opqrEstuyFЖGnjvwwxyz{}t9 ГxQ@ljJ˞RΑtW: ˎшqޖċAڎKsAt: ZБx݊t;P su; RśěÛ›u_; ɛƛțǛʛ˛̛ux SKEuuYZzwyOxv|w-?/(//0DL0122334 455d66x6Xp787|7 808949,t::;HT;;p??d?l P~pbwo@x IxYߔ{w@ Փfɐ҈ySđzwAD ӈŜƜĜǜÜx5A Jڜޜߜܜٜ؜ݜeۜxwBt ^ʐ@ABCYDEFՑˌߖ[xBZ OVPc}RSWTRܐeZxC` `Kghy=C ېE̖yD4 TQPdBohyDl i^FC[zD ̌ĝq~ݝsŝǝƝU֓hȝG~ɝzEE< VޝݝՈ̐ftcEzE WWNAӔiqzF4 ŋɉgÈb\A{ F @ܓBCjDFGHȋgXIJf֙]\֑{MG$ō LKLN]MNOؖ{DQpSVUR{G TWLjލێZmXYۖ[\aYt^ܝnf`”{H, f]cb͐їʉ}ged_͌kiˉgms|HƑ uAt^_ђMpoqnvljrhĎ`|UI, ̒ȓhIxZz}ji͍|I{j yĈ|~ˋKjVO|J  dǖ_IX}J kȑ^žƋ|ɋOy}]J T|ҞP՞YԞӞОĞÞ֞Ξɞƞ}Kl ǞϞ̞\ƒʞŞȞl͞מߞ؞ޞݞΒ۞}K ٞWڞ͖~ўM~#L8 k@ɓ~eL DCIELHJMQN~Mʚ Bwxœyіz|{~}~MT CXiÔ+M` Ĕ]rDmM דBv͉N\ @AgDבjN mÒk^Fh3OH lY_Q\CZuO O@ܗAUtP ƟҗßBişʟȟŸWɟğ˟̟[D~CǟYEPX ύakПߟٟnԟݟQH֟͟ϟ`F۟Iӟ;P ڟ؟ܟΌÏXGҟN՟Οџןp}Qp anMJQGFL CKOPUTVYbSLWR$QZ X][^aZG\`_JMdhCRx|@A|ABlBɨCXʘCˤPD,tDdDE4Eϴ(F,FGGH$HI$IJJxJKdKL0LMDMLTMMNTNO@OOPPPQhQRެ\RpRR fNObcgemmjilғnPoqpS QFutRxY{vzy_׈bTT TSŏRď T VWUƏϔώKT YRӗzWCיZU8ҍ ]Ɣ[\U Җ—]LPQU bl_SVT ʋߊ`V ωaXdbc]ǔfV egihjԗՋiW8 lڗk[W lmŠW nKJLMONQPÊr[RYSpTcRb\jUX  V[YXEW؈Ȕ\Z{L^l_]Ԕ`aoوfcbE!X pIFcHsqrtMcY@ v“rY ӍxuԍmCjv{Z yɏzd{)ZH ʏDbFEGIH|ЎkZh֋ \TSЉTUWXHYZ[׋щÓZ }͏vG[^|Ɗ[4 ͕ӉZNJ\1[ IgDJEoMQLUiROPNKGWs\8 TVSpXea[_ۈZbfjԖԒ\dY]^Ȗ\ ]ًΗgchjmiҕɊɖ܈lk]8 ɔ}x@qJDUyJ9] [\Z{^ ߍrul^d rQA`H^TLT$TU0U UVLVVW0WWXXY8x,YxYhZ@Z|Z[,< h[\\08 \]0]x^^\L^_@_H Ζ։sA`T t`r׉` eۋىҏ؍p؉ԌHa  tKax ӏN֖fIa ~uW`H@b0@ הԏǎBCnJPQbD NFHRGKLOEEIFdOVTb yQc` ٍT֏c J]d  ]vu`_P^Lab׏cKݐidf؏dt ehigُ]frmwllkFlbYڏjYd opn֌_FsaUvrwtuqǓNۉbeh zxkЊyzȗ_{~|@}e xcftGd Go^܏qwaf gd Ԑ͎qNg _\`ԎaORb]cfedyg'g\0PLt`axap4ab(bbcX4x<c<ddlTde`efl Tf   h g\gg (    xh8@Lh@ ٓxV^Օ߉BkyKՎJIɗiiL xYSsXsi Aj@ ΔэߎdʗBjޒt/jp ݓbn،qk Sޏzgk\ e_LKk Nݕsee|7l K@BACыdB^EDFylx ^tՒKbGHLJIߏl OȒZMNLPm8 VYXLQRUWZTS?mx ^_`]\[dbcaem fhӊgsiljkmopqtruwn xMy•zJ[ՊԊ{|}~֊t}{np G@KuۍBחǐGn kIPo ÐrʖvxCo z{^ޗڌ@BA p| LݖM{a`NOPRSUQTيVWXYOp cde]nfgyhq@} |~{q @Eq @DBAWrD CLNDErF khVr DCEL@ABHQJGFKsh J_`a_s sotuvKwٖxzy{|}~sij8jhkkTkl lplm0mpmnnhtnH|oxopt@pxq8dq|Hqr<trrhs`  H s!<!s!"4tT"#8#\ePt\@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~u\vh@ABCwtDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~xy@ABCDEFGzHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~{|@ABCDEFGHIJK}LMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~~@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~@ABCDEFGHIJKLMNOPQRSTUVW(XYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~4@@ABCDEFGHIJKLMNOPQRSTUVWXYZ[L\]^_`abcdefghijklmnopqrstuvwxyz{|}~Xd@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_p`abcdefghijklmnopqrstuvwxyz{|}~|@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~ v`wlxxyz{|}~ ,8DP\ht %( g  X^u}~I IWVij{C|D^OPQRSTUVWXFGH`abcdefghijklmnopqrstuvwxym_nOQhMobp` -t ʁPUo|`lt&'$4<)+.@pS`LiDuT$d'@'H'Pjcodings-1.0.58/resources/tables/Transcoder_Japanese_ByteArray.bin000066400000000000000000000016031433325321700252620ustar00rootroot00000000000000@jcodings-1.0.58/resources/tables/Transcoder_Japanese_WordArray.bin000066400000000000000000000002201433325321700252640ustar00rootroot00000000000000#  ``$`4 ,<D4`hpjcodings-1.0.58/resources/tables/Transcoder_Korean_ByteArray.bin000066400000000000000000001166071433325321700247660ustar00rootroot00000000000000         !"#$%&'(   !"#$%&'()*+,-./012                !"#$%&'()*+,-./0123456789            !"#$%&'()*+,-./0123456789:;<=>?@  !"#$%&'()*+,-./01234  !"#$%&'()*+,-./01234567888888888      !"#$%&'()*+,-./0123456789:;<=>                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     !"#$%&'()*+,-./0123456789:;<                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHHHHHHHHHHHHHHHHHHHHHHH   !"#$%&'()*+,- ./0123456789:;<=>?@ABCDE   !"#$%&'()*+,-./0123456789:;<=>?@ABCDEEEEEEEEEEEEEEEEEEEEEEEEEE  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPPPPPPPPPPPPPPP  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTTTTTTTTTTT  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWWWWWWWW  !"""""""""""""""#$%&'()*+,-./0123456789:;<=>?@ABC"""""""""""""  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[  !"#$%%%%%%%%%%%%%%%%%%%%%%%%%%%%A  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~A  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~A  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_____`abcdefghi_______jklmnopqrstuvwxyz{|}~______________A  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~A  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~A  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZY[\]^_`abYcdefghijklmnopqrstuvwxyz{|}~A  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~A  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~A  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvvvvvvvvvvvvvvvwxyz{|}~vvvvvvvvvvvvvA  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUA  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqA  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_A  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~Jjcodings-1.0.58/resources/tables/Transcoder_Korean_WordArray.bin000066400000000000000000006000601433325321700247650ustar00rootroot00000000000000  סơҢ Bd    J ¥åĥťƥǥȥɥʥ˥̥ͥΥϥХѥҥӥԥե֥ץإD  ѬҬӬԬլ֬ج٬ڬ۬ܬݬެ߬$ ׬RLL ӢԢǡȡءd  : ɡ٧ʡ|  բآ֢٢ע B ӡԡġСš ֡ա¡áL ѡx ҡJ  ͩΩϩЩѩҩөԩթ֩שة٩ک۩ܩݩީߩ0 ͨΨϨШѨҨӨԨը֨רب٨ڨۨܨݨިߨ ȦǦ¦ƦŦĦæɦʦ˦̦ͦΦϦЦѦҦӦԦզ֦צئ٦ڦR,ۦܦݦަߦ  ƢâǢȢˢʢɢ̢\ ߡޡ¢ۡݡܡĢŢ ڡ١Ϣ΢ТѢZϡ Ρۢ͢ܢݢڢ  Dp($T  H P   ªêĪŪƪǪȪɪʪ˪̪ͪΪϪЪѪҪӪԪժ֪תت٪ڪ۪ܪݪުߪb   «ëīūƫǫȫɫʫ˫̫ͫΫϫЫѫҫӫԫի֫׫ث٫ګ۫ܫݫޫ߫    ( ¤äĤŤƤǤȤɤʤˤ̤ͤΤϤФѤҤӤԤդ֤פؤ٤ڤۤܤݤޤߤb $ j0©éĩũƩǩȩɩʩ˩̩ߢ | ¨èĨŨƨǨȨɨʨ˨̨ޢ ɧʧ˧̧ͧ ܧݧާԧէ֧קا§çħŧƧǧȧΧϧЧѧҧӧ 0ڧۧ ߧ r  (t|      8  z  X    @  |  |P t8 @  Hp    $ h P    X    0 `  t & h$   . pT   6 xH x  >  @  F  X   N L    V X     !  ^!@ !p ! $" f" # # ,# n$  $X $ 4$ v$ %P % <& ~&\ & ' D'| '`|(l L@p8PD  P !!8!h!!"##|#$$P$$$%H%%&T&' 't'((b(0 )<  )| L) *@ * * T+X + ,  ,h  \,  -  -| !"- !d- !.H !. "*. "l. "/@ "/ #2/ #t0T #0 #1, $:1 $|2  $2 %2 %B3` %3 %4 &4| &J4 &5 &5\ '5 'R5 '6L '6| (6 (Z7 (7< (7x ) 7 )b7 )8< )8 *(8 *j9  *9p *9 +0:L +r: +: +;8 ,8; ,z< ,Hb>P .H?\ .? .? /@P /P@ /@ /A 0A` 0XA 0B 0B` 1B 1`B 1C 1CT 2&C 2hD 2D 2D 3.E\ 3pE 3F 3Fh 46F 4xG 4GL 4G 5>G 5H4 5Ht 6H 6FH 6I$ 6IT 7 I 7NI 7J 7J0 8J 8VJ 8K$ 8K 9K 9^L 9Lx 9L :$M :fMD :M| :M ;,M ;nN, ;N\ ;N <4O< Q >DQ`??@H@@AAXABBXBBCCLCD DDETEEF`FG GDGGH,HlHHIILIxIIJ(JJKK|KLLpLLM<MtMMN$NTNO4OOP0PPPQ QXQbQ >R >S  ? SX ?LS ?T ?TL @T @TT @U@ @U AU A\VP AV AV B"W$ BdW` BW BW C*X, ClXd CX CX D2Y0 DtYt DY DY E:Z0 E|ZX EZ FZ FBZ F[ F[D G[p GJ[ G\  G\\ H\ HR\ H]  H]0 I] IZ] I^\ I^ J _$ Jb_l J_ J_ K(_ Kj`d K` Ka L0a0 Lra` La La M8b Mzb0 Mbl Mb N@c Nc@SSPSSTDTTU8UUVHVVWWXWWX$X\XXY(YlYYZ(ZPZZZ[ [<[h[\\T\\]](]]^T^__d___`\``a(aXaaab(bdbcc8cbc Nd Oe  OHe Of OfD Pfp PPf Pf PgT Qg QXg Qh Qh, Rhx R`h Rh Ri  S&i4 Shi\ Sip Si T.i Tpj$ Tj Tj U6kl Uxk Uk Ul( V>lX Vl Vl Wm WFm\ Wm Wm X n XNnD Xnx Xn Yn YVn Yo YoP Zot Z^o Zo Zo [$p [fp( [pP [pl \,p \np \p \q ]4q@ ]vqh ]qeef f<fhffgLgggh$hphhii,iTihiijjjkdkkl lPllm mTmmnn<npnnnooHoloooop pHpdppppq8q`qq]q ^<r °ðİŰưǰȰɰʰ^~sD˰̰ ͰΰϰаѰҰӰ԰հְװذٰڰ۰ܰݰް߰^s _t _Dth ±_t ñıűƱDZȱɱʱ˱̱_uͱα ϱбѱұӱԱձֱױرٱڱ` uT۱ܱ ݱޱ߱`Lu `u `v\ av ²òIJŲƲaTv DzȲɲʲ˲̲ͲβϲвѲawҲ ӲԲղֲײزٲڲ۲awPܲ ݲ޲߲bws<s|st`tuuLuuvTv|vw wHwwb\w bx$ bxX c"x ³óijųƳdzȳɳcdy ʳ˳̳ͳγϳгѳҳӳԳճֳ׳سٳڳ۳ܳݳ޳߳cyX cy d*z dlzH dz dz ´ôĴŴƴǴȴɴʴ˴̴ʹδe2z ϴдѴҴӴԴմִ״شٴڴ۴ܴݴ޴ߴet{T e{ e|  f:|d µõĵŵf|| Ƶǵȵɵʵ˵̵͵f| εϵеѵҵӵԵյֵg}(׵ صٵڵ۵ܵݵ޵ߵgB}\ g} g} h~, hJ~x ¶öĶŶƶh~ Ƕȶɶʶ˶̶Ͷh~ ζ϶жi  ѶҶӶԶնֶ׶iR< ضٶڶ۶ihܶݶ ޶߶i j jZ  jt ·÷ķŷƷǷȷɷjʷ ˷̷ͷηϷзѷҷӷԷշַ׷k  طٷڷ۷ܷkbPݷ޷ ߷kt k l( ljD ¸øĸŸƸǸȸɸʸ˸̸͸θlϸи ѸҸӸԸոlָ ׸ظٸڸ۸ܸݸ޸߸m00 mr m m n8\ ¹ùĹŹƹnzǹ ȹɹʹ˹̹͹ιϹnй ѹҹӹԹչֹ׹عٹڹ۹ܹݹ޹߹n o@ o o$ ºúĺplź ƺǺȺɺʺ˺̺ͺpHκϺ кѺҺӺԺպֺ׺غٺںۺܺݺ޺p ߺp$ qT qP q q4 »ûĻŻƻrlǻȻ ɻʻ˻̻ͻrX λϻr лѻһӻԻջֻ׻rxPxyyPyzz@zzz{L{||\||} }T}}~$~p~~4`lHl<(TxdL,db ػs ٻڻۻܻݻ޻s`0 ߻sX s t& ¼üļżƼǼȼɼʼ˼̼ͼμϼмth ѼҼӼԼռּ׼ؼټڼۼܼݼ޼߼t t, u.t up ½u ýĽŽƽǽȽɽʽ˽̽ͽνϽнѽuhҽ ӽԽսֽ׽ؽٽڽ۽ܽݽ޽߽v6 vx v4 vP w> w w x ¾þľžxFD ƾǾȾɾʾ˾̾;ξϾоѾҾӾԾվ־׾ؾپھ۾ܾݾ޾߾x x y l ¿ÿĿſƿǿȿɿʿ˿̿yNͿο ϿпѿҿӿԿտֿ׿ؿٿڿۿܿݿ޿y`߿ y z zVp z z< { {^ {\ { |$ |f, |h | }, }nP } } ~4 ~v  ~H ~ < ~  h D  $  T L   P T  , l \(P x$l`,H<dX h4T$`H|@|`LH$db    "T d   *` l   2 th  $ :D |   B@ p   J8 d   RX   8 ZLX`<8h0\P0bXbdbpb|  £ãģţƣǣȣɣʣˣ̣ͣΣϣУѣңӣԣգ֣ףأ٣ڣۣݣޣߣb  ˡ̡͡ܣ`\htXB\\<DT\ h)4?TRdrxPX   0 ?P   _ ` ŘȠ$˨,ΰ4Ѹ<DLT\dlt| (08@H  P X`hpx " #%&()+$,.,/(HXpxˆ ŐȘˠ$Ψ,Ѱ4Ը<DLT\dlt| (08@  H PX`hpx "#% &()+,.$/1,14ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghb2ijklmnopqrstuvwxy°zðİŰưǰȰɰʰb3˰̰ͰΰϰаѰҰӰ԰հְװذٰڰ۰ܰݰް߰ÁāŁƁb4ǁȁɁʁˁ́́΁ρЁсҁӁԁՁցׁ؁فځہ܁݁ށ߁b5ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghb6ijklmnopqrstuvwxyz±b7ñıűƱDZȱɱʱ˱‚ÂĂłƂǂȂ̱ɂʂ˂̂͂΂ςЂb8ͱαт҂ϱӂԂՂбւׂ؂قڂۂ܂ѱұ݂ӱނ߂ԱձֱױرABٱCDڱb:۱ܱEFGHIJݱޱK߱LMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyzb; b<ƒÃăŃƃǃȃɃʃ˃̃̓΃σЃу҃ӃԃՃփ׃؃كڃۃ܃݃ރ߃b=$ABCDEFGHIJKLMNOPQRSTb>0UVWXYZabcdefghijklmnopqrstuvwxyz²òIJŲƲb?<DzȲɲʲ˲̲Ͳβϲв„ÄѲĄńƄDŽȄɄb@HҲʄ˄̄Ӳ̈́΄τԲЄф҄ӄԄՄքղֲׄ؄لײڄۄ܄݄ބ߄زٲڲ۲AbATܲBCDEFGݲ޲߲HIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxbB`3456789;<=>(?4@@ALBXCdb\ClyzbC…ÅąŅƅDžȅɅʅ˅̅ͅ΅υЅх҅ӅԅՅօׅ؅مڅۅ܅݅ޅ߅bDABCDEFGHIJKLMNbEOPQRS³óTUVWXYijųZaƳbcddzefghijkȳlmnoɳpqrstuvwxyzbFʳ˳̳ͳγϳгѳҳӳԳճֳ׳سٳڳ۳ܳݳ޳߳bG†ÆĆņƆdžȆɆʆˆ̆͆ΆφІц҆ӆԆՆֆ׆؆نچۆ܆݆ކ߆bHABCDEFGHIJKLMNOPQRSTUVWXYZabcdefgbJhijklmnopqrstuvwxyzbK‡ÇćŇƇLJȇɇʇˇ͇̇·χЇч҇ӇԇbLՇևׇ؇هڇۇ܇݇އ߇ABCDEFGHIJKLMNbM(OPQRSTUVWXYZabc´defôĴŴghijkƴǴlȴmɴʴnop˴q̴rstʹuvwδxyzbN4ϴдѴҴӴԴմִ״شٴڴ۴ܴݴ޴ߴbO@ˆÈĈňƈLjȈɈʈˈ͈̈ΈψЈш҈ӈԈՈֈ׈؈وڈۈ܈݈ވ߈bPLABCDEFGHIJKLMNOPQRbQXSTUVWXYZabcdefghijklmnopqrstuvwxyzbRdµõĵŵbSp‰ÉĉʼnƉljȉɉʉˉ͉̉ΉωЉщƵ҉ӉԉՉ։׉؉ǵىډۉȵ܉݉މɵ߉ʵ˵̵͵bT|ABCDEFGHIJKεϵLMеNOPѵQRSTUVWҵӵXԵYյZabcdeֵfghijklmnopqrstuvwxbU׵yzصٵڵ۵ܵݵ޵ߵbVŠÊĊŊƊNJȊɊʊˊ̊͊ΊϊЊъҊӊԊՊ֊׊؊يڊۊ܊݊ފߊbWABCDEFGHIJKLMNOPQRSTUVWXbXYZabcdefghijklmnopqrstuvwxyzbY‹ËċŋƋNjbZȋɋʋˋ̋͋΋ϋЋыҋ¶öĶӋԋՋ֋׋؋Ŷًڋۋ܋݋ދߋƶb[ABCDEFGHIJKLMNOPǶȶQRɶSTUʶVWXYZabcdefg˶hijklm̶nopqrstͶuvwxyzb\ζ϶жŒb]ÌČŌƌnjȌɌʌˌ̌͌ΌόЌьҌӌԌՌ֌׌،ٌڌی܌݌ތѶҶߌӶԶնֶ׶b^ABCDEFGHIJKLMNOPQضRSTUVWXYZabcdefghijklmnopqrٶstuڶvwx۶yzb`ܶݶ޶߶ba ÍčōƍǍȍɍʍˍ͍̍΍ύЍэҍӍԍՍ֍׍؍ٍڍۍ܍ݍލߍbbABCDEFGHIJKLMNOPQRSTUVWXbc$YZabcdefghijklmnopqrstuvwxyzbd0·÷ķŷƷǷȷɷŽÎĎŎƎǎbe<ʷȎɎʎ˷ˎ͎̎ΎώЎюҎӎԎՎ֎̷׎ͷ؎َڎێ܎ݎގߎηϷзѷҷӷԷշַ׷bfHABCDEFGHطIJKLMNOPQRSTUVWXYZabcdefghٷijklmnoڷpqr۷stuܷvwxyzbgTݷ޷߷bh`ÏďŏƏǏȏɏʏˏ̏͏ΏϏЏяҏӏԏՏ֏׏؏ُڏۏ܏ݏޏߏbilABCDEFGHIJKLMNOPQRSTUVWXYZabbjxcdefghijklmnopqrstuvwxyzbk¸øĸŸƸǸȸɸʸ˸̸͸θblϸиÐĐŐƐѸǐȐɐʐː̐͐ΐϐАѐҐҸӐԐՐ֐אِؐڐېܐݐސߐӸԸոbmָ׸AظٸBڸC۸ܸDEFGݸ޸߸HIJKLMNOPQRSTUVWXYZabcdefghijklbnmnopqrstuvwxyzbo‘ÑđőƑǑȑɑʑˑ̑͑ΑϑБёґӑԑՑ֑בّؑڑۑܑݑޑbpߑABCDEFGHIJKLMNbqOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyzbr¹ùĹŹƹ’ÒĒŒƒbsǹǒȒɒȹʒ˒̒ɹ͒ΒϒВђҒӒʹԒՒ˹֒גْؒڒےܒݒޒߒ̹͹ιϹbtйѹABCDEҹӹFԹչֹG׹HعIJٹڹ۹ܹݹKL޹߹MNOPQRSTUVWXYZabcdefghibujklmnopqrstuvwxyzbw“ÓēœƓǓȓɓʓ˓͓̓ΓbxϓГѓғӓԓՓ֓דؓٓړۓܓݓޓߓABby CDEFGHIJKLMNOPQºRSTUVWXYZabcdefúghijklmĺnopqrstuvwxyzbz,źƺǺȺɺʺ˺̺ͺb{8κϺкѺҺӺԺ”ÔĔŔƔպֺǔ׺Ȕغɔʔ˔ٺں̔ۺ͔ΔϔДєҔӔܺԔՔ֔הؔٔڔ۔ܔݔޔݺߔ޺b|DABߺCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklb}Pmnopqrstuvwxyzb~\•ÕĕŕƕǕȕɕʕ˕͕̕ΕϕЕbhѕҕӕԕՕ֕וٕؕڕەܕݕޕߕABCDEFGHbtIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyzb»ûĻŻƻ–bǻȻÖĖɻŖƖǖʻȖɖʖ˖̖͖Ζ˻̻ϖЖіͻҖӖԖՖ֖זٖؖږۖܖݖޖߖbABCDEFGHIJKLMNOPQλRSTUVWXYZabcdefghijklmnopqrϻstuvwxyzbлѻһӻԻջֻ׻bDEFGHIKLM N,O8PDQPR\ShTtUVWXYZ[\]^_abcd(e4f@gLhXidjpk|lmnopqrstuwx yz${0|<}H~T`lxb—×ėŗƗǗȗɗʗ˗̗͗ΗϗЗїҗӗԗ՗֗חؗٗڗۗܗݗޗߗػbABCDEFGHIJKLMNOPQٻRSTUVWڻXYZۻabcܻdefghijݻ޻klmnopqrstuvwxyzb߻b˜ØĘŘƘǘȘɘʘ˘̘͘ΘϘИјҘӘԘ՘֘טؘ٘ژۘܘݘޘߘbABCDEFGHIJbKLMNOPQR¼üļSTUVWXżƼYZǼabcȼdefghijɼʼk˼̼ͼlmnopqμrstϼuvwмxyzbѼҼӼԼռּ׼ؼټڼۼܼݼ޼߼b™ÙęřƙǙșəʙ˙̙͙ΙϙЙљҙәԙՙ֙יؙٙڙۙܙݙޙߙbABCDEFGHIJKLMNOPQRSTb(UVWXYZabcdefghijklmnopqrstuvwxyzb4½šb@ÚĚŚƚǚȚɚʚ˚͚̚ΚϚКњҚӚԚ՚֚ךؚٚښۚܚݚޚýĽߚŽƽǽȽɽʽ˽̽ͽνϽнѽbLҽӽԽսֽABC׽ؽٽDEڽFGH۽IJKLMNOܽݽPQ޽߽RSTUVWXYZabcdefghijklmbXnopqrstuvwxyzbd›ÛěśƛǛțɛʛ˛̛͛ΛϛЛћқӛԛ՛֛כ؛ٛڛۛܛݛޛߛbpABCDEFGHIJKLMNOPQRSTUVWXYZab|bcdefghijklmnopqrstuvwxyzbœÜĜŜƜǜȜɜʜ˜̜͜ΜϜМќҜӜԜ՜֜לb؜ٜڜۜܜݜޜߜABCDEFGHIJKLMNOPQRSTbUVWXYZabcdefghijklmnopqrstuvwxyzbÝĝŝƝǝ¾þȝľɝžʝ˝b̝͝ΝϝƾǾНѝȾɾʾҝ˾̾;ӝԝ՝֝ξϾоםѾҾӾ؝ٝڝԾվ۝־׾ܝݝؾޝߝپھ۾ܾݾ޾߾bABCDEFGHIJKLMNOPQRSTUVWXYZabcbdefghijklmnopqrstuvwxyzb¿ÿĿſƿǿȿɿʿ˿̿bͿοϿпѿҿӿԿտžÞĞŞƞǞֿ׿Ȟɞؿʞ˞̞͞ΞϞОўҞӞԞٿ՞֞ڿמۿ؞ٞڞ۞ܞݞܿݿޞߞ޿b߿ABCDEFGHIJKLMNOPQbRSTUVWXYZabcdefghijklmnopqrstuvwxyzb bŸßğşƟǟȟɟʟ˟̟͟ΟϟПџҟӟԟ՟֟ן؟ٟڟ۟ܟݟޟߟb$ABCDEb0FGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyzb<bH àĠŠƠǠȠɠʠˠ̠͠ΠϠРѠҠӠԠՠ֠נؠ٠ڠ۠ܠݠޠߠbTABCDEFGHIJKLMNOPQRSTUVWXb`YZabcdefghijklmnopqrstuvwxyzblABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrbxstuvwxyzABCDEFGHIJKLMbNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyzbABCDEFGHIJKLMNOPQRSTUVbWXYZabcdefghijklmnopqrstuvwxyzbABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstbuvwxyzABCDEFGHIJKLMNOPQRSTUVbWXYZabcdefghijklmnopqrstuvwxyzbABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvbwxyzABCDEFGHIJKLMNOPQbRSTUVWXYZabcdefghijklmnopqrstuvwxyzbABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyzbABCDEFGHIJKLMNObPQRSTUVWXYZabcdefghijklmnopqrstuvwxyzbABCDEFGHIJKLMNOPQRSTUVWXYZabcdeb fghijklmnopqrstuvwxyzABb,CDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyzb8ABCDEFGHIJKLMNOPQRSTUVWXYbDZabcdefghijklmnopqrstuvwxyzbPABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwb\xyzABCDEFGHIJKLMNOPbhQRSTUVWXYZabcdefghijklmnopqrstuvwxyzbtABCDEFGHIJKLMNOPQRSTUVWXYZabcdebĀfghijklmnopqrstuvwxyzbŌABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstubƘvwxyzABCDEFGHIJKLMNObǤPQRSTUVWXYZabcdefghijklmnopqrstuvwxyzbȰABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqbɼ ,8DP\ht(4@LXdp| $0<HT`lxńƐǜȨɴbrstuvwxyzABCDEFGHIJKLMNbOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyzbABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghibjklmnopqrstuvwxyzbABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyzbABCDEFGHIJKLMNOPQbRSTUVWXYZabcdefghijklmnopqrstuvwxyzbABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrsb(tuvwxyzABCDEFGHIJKLMNOb4PQRSTUVWXYZabcdefghijklmnopqrstuvwxyzb@ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmbLnopqrstuvwxyzABCDEbXFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrbdstuvwxyzABCDEFGHIJKLMNOPQRSTbpUVWXYZabcdefghijklmnopqrstuvwxyzb|ABCDEFGHIJKLMNOPQRSTUVWXYZabcdebۈfghijklmnopqrstuvwxyzABCDEFGHbܔIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyzbݠABCDEFGHIJKLMNOPQRSTUVWXYZabcdefgbެhijklmnopqrstuvwxyzABb߸CDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyzbABCDEFGHIJKLMNOPQRSbTUVWXYZabcdefghijklmnopqrstuvwxyzbABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmbnopqrstuvwxyzABCbDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxybzABCDEFGHIJKLMNOPQb RSTUVWXYZabcdefghijklmnopqrstuvwxyzbABCDEFGHIJKLMNOPQRSTUVWXYZabcdeb$fghijklmnopqrstuvwxyzb0ABCDEFGHIJKLMNOPQR < ,8DP\htۀ܌ݘޤ߰(4\<DT\ h)4?TRdrC`hd8 \ 0 T("%x(L+ -036p9D<>ADGh J<LO BR` T W@ Y\ B_| b( d gH h jkhn<qsvy|`4X,|P$ B p        0  @  P  `  p  ŀ  Ȑ  ˠ ( ΰ 8  H  X  h  x  ߈      0  @  P  `  p      \0T ( xL "%p(D+-036h9<<>ADG`J4LORXTW8Y\_tb dg@hjk`n4qsvy|X,|P$tHhx(8HXhxȈ˘ Ψ0Ѹ@P`p߀(8HXhx (jcodings-1.0.58/resources/tables/Transcoder_Newline_ByteArray.bin000066400000000000000000000010101433325321700251250ustar00rootroot00000000000000jcodings-1.0.58/resources/tables/Transcoder_Newline_WordArray.bin000066400000000000000000000000601433325321700251410ustar00rootroot00000000000000    jcodings-1.0.58/resources/tables/Transcoder_SingleByte_ByteArray.bin000066400000000000000000000637561433325321700256220ustar00rootroot00000000000000g  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~  !"#$%&'()*+,-./0123456789:;<=>?@   !"""#""$%""""&""'"""(""")"""""""         !   !"#$%&'()*+,-.&/0123456789:;<=&>?@A&BCDEFGHIJKLM&NOPQRSTUVWXYZ[\]^_&`abcdefghijk&lmnopqrstuvwxyz  !""#$""%&""""'""(")*+,"-.""""/""  !"#$%&'()*+,-./0     !"""#""$%""""&"'(""")"""*"""""""    !"#$%&       !""""""#"""""$""""""""""""""""""  !"#$%&'()*+,-./0123456789:;<=>?     !"""#"""""""$%"""""""""""""&"""'"()*+,-./0123456789:;<=>?@A"""""BCDEFGHIJKLMNOPQRST"""""""""""""  !"""#""""""""$""""""""""""""""""     !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQR/STUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~/  !""#""$%&'"()*""+,-."""/"""0"1""  !"#$%&'()*+,-./0123456789      !"#$%&'()*+,-./0123456789:;<=>?""""""""""""""""""""""""""""""""@ABCDEFGHIJKLMNOPQRSTUVWXYZ[""\]"  !"#$%&'()*"+,-./0123456789":;<="     !"#$%&'()*+,-./0123456789:;    !""""""#"""""$""%""""""&""""""""   !"#$%&'()*+,-.       !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\\\]^_`abcdefghijklmnopqrstuvwxy\\\\  !"""""""""""""""""""""""""""""""  !"#$%&'()*+,-./0123456789:;<    !"#$%"&'"(")*+,"-./0"123"4"5678"            !""#"""$"%"""&'"""""""("""""""""  !"#$%&'()*+,-./0123456789:;    !"#$%&%'%()*+,-./012%345%678%%%9    !""""""#"$"%"&""'("""")*"""+""""  !"#$%&'()*+,-./          !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`ab    !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|              !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|  !     !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnop         !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz     !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijk     !"#$%                       !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstu        !"#$             !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxy            !"#$%&'()*+,-./012345               !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefgVhijklmnopqVrstuvwxyz{|}~       !"#$%&'          !"#$%&'(                !"#$%&  !"#$%&'()*+,-./012345   !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwx        !"#$%&'()*+,-./0123456789                      !"#$%&'()*+,-./0123456789:            !"#$%&'()*+,-./0123456789:    !"#$%&'()*+,-./0123456  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuqvwxyz{|}~           !"#$%&'()*+,-./012345      !"#$%&'()*+,-./012      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWX   jcodings-1.0.58/resources/tables/Transcoder_SingleByte_WordArray.bin000066400000000000000000001443001433325321700256130ustar00rootroot000000000000002/  0@@:@(08HPXL` CEGG(08HPXE   < F  ,4 $ H(08HPX P       L  G   p   D  h  (08HPX E     O  \    8T0L(08HPXTE  W  <  D   _4<(08HPX   0  (  (08HPX` W@ YD  (  ad x  \(08HPX'   p b!p ! ""(" !h!!(0",8HPXj"4E"p a$| %t %%l%%(08HPX'%E% ' `(  )\ ) *0*<(*D()T)*((0*P8HPX&*X * , a- ....-.08HPX.E. 0 @1 2< 2 334(3<12423(03H8HPX&3PE3 H5 6H 7@  7`  P7  7 7 !87778!X86@787X7|(8408HPX!8<E8| ": ";x #;;#W;;p;(0;8HPX#;E< $> $> %? %V? %@8 %@X@h;@p>??@0@P(0@8HPX&@ '@ (B` (WBt #BBBBBl.0B8HPX(B )C *E EX FE FH *Fl +FFBF+XFEP4EF@Fd(0F8HPX+F EG, ,I8  I  J ,K #K, -K@FK8KP+XKXI|JK K$(0Kl8HPX-WKt .NK /PM "N@ /Nl /NN8NdNxN(0F8HPX0N 1 N 2P Q  2QQRDBF+XRLQNxQ\(0R`8HPX2Rh 3R 4TN8%l%TNxN(0F8HPX4T 5U 6V 7 WL 7KW 7X< 7XXXF+XX 8X 8SY(Y Yd8YlWD!NxNWX4(0X8Y|HPX8YEY 9[ :\\ :R\:K, \ :]L ;] ;Z] ;]^LBF+X^T\T\\Nx\]D]]](0^h8HPX;^p <^ =`  a a2423a4(0F8HPX+a<Ea >c >[c /d >d >d ?!d ?cd ?e  ?e, @)eL @keh @e @f(dee$eDe`ef fTA1f\cdxddd(0f8HPXAsf Bjf Clh Ch Ci4 i D2j Dtj djj0ef fTDj8hi,ij(0jX8HPXDj`Ej El F1l Fsl m Fndjn$ef fTDn,llmn(0nL8HPXFnTEn Gp @q  qp q rP H0rp Hrrrhr|erfTHrqqhqrH(0r8HPX&rEs$ Hu0 ul u FvX v I8w erw0Izw8uduvPvw(0wL8HPX+wTEw Iy  y  z  {\{herw0I{pyz{T(0{8HPX { J@{ /P} a~` X x~XPp(0wL8HPX&E KB K0 Kdee$eDef fTA1(dd(08HPXF E` Ll LJXddd(0f8HPXAs`E L cdddT(0f8HPXL\E M N NIde$eDe`ef fTNddd(08HPXAsE, N8 O$ddd(0f8HPXAs,Ep OQ| O O| djef fTPt(08HPX  PYD Q[0  p aerw0Qxh(08HPXQ E4 R@ S SZ S / S ($ T 8  _ Tb T T U(xUj 0(0,8HPXU4E V F1     Vx - W'Wip(08HPXW EL XX X Y& Yh(  Yh +Y  `(08HPXZ. E [%  G [g [ [ ( \- TLDpUjx(08HPXU E \o *0pUj8 \`p#x(0X8HPX\ E ] ^, ^n (0X8HPXU ^` _h  _ `6Tp`x\(0x8HPXUE ` , `4HWiPp,(0h8HPXa>pE b5F1d bw b ,0 D2H F` K| @k b @4Xt,`c=h(@(08HPXcE dv d @Xt„`c=Œ(0¬8HPXd´ e.08HPXL`EČ /PƘG( [g4 NIHTerw0Q\ ,@d(0t8HPXf|jcodings-1.0.58/resources/tables/Transcoder_Utf1632_ByteArray.bin000066400000000000000000000024141433325321700246070ustar00rootroot00000000000000jcodings-1.0.58/resources/tables/Transcoder_Utf1632_WordArray.bin000066400000000000000000000006541433325321700246230ustar00rootroot00000000000000j(0 <D LD \Td2lt|24  (G4<G<<L\G\\4DLTdlt|jcodings-1.0.58/resources/tables/Transcoder_Utf8Mac_ByteArray.bin000066400000000000000000003541701433325321700250150ustar00rootroot00000000000000t  !"#$%&'()*+,-./0123456  !"#$%&'()*+,-./012345678  !"#$%&'()*+,-./0123456  !"#$%&'()*+,ǕǖǗǘǙǚǛǜǞǟǠǡǢǣǬǭǮǯǺǻǼǽǾǿ  !"#$%&'()*+,-ȪȫȬȭȰȱ̈́  ΅ΆΈΉΊΌΎΏΪΫάέήίϊϋόύώϓϔ  ЀЁЃЇЌЍЎЙй ѐёѓїќѝўѶѷ   !"#ӁӂӐӑӒӓӖӗӚӛӜӝӞӟӢӣӤӥӦӧӪӫӬӭӮӯӰӱӲӳӴӵӸӹآأؤإئۀۂۓऩऱऴ क़ख़ग़ज़ड़ढ़फ़य़োৌড়ঢ়য়ਲ਼ਸ਼ਖ਼ਗ਼ਜ਼ਫ਼ୈୋୌଡ଼ଢ଼ஔொோௌైೀೇೈೊೋൊോൌේොෝෞ  གྷཌྷདྷབྷཛྷཀྵཱཱིུྲྀླཱྀྀྒྷྜྷྡྷྦྷྫྷྐྵ     ဦ  !"#$%&'()*+,-./0123456789:;<=>?@ḈḉḔḕḖḗḜḝḮḯḸḹṌṍṎṏṐṑṒṓṜṝṤṥṦṧṨṩṸṹṺṻ  !"#$%&'()*+,-./0123456789:;<ẛẤấẦầẨẩẪẫẬậẮắẰằẲẳẴẵẶặẾế  !"#$%&'()*+,-./0123456789:;;;;;;ỀềỂểỄễỆệỐốỒồỔổỖỗỘộỚớỜờỞởỠỡỢợỨứỪừỬửỮữỰự  !"#$%&'()*+,-./0123456789:;<=ἀἁἂἃἄἅἆἇἈἉἊἋἌἍἎἏἐἑἒἓἔἕἘἙἚἛἜἝἠἡἢἣἤἥἦἧἨἩἪἫἬἭἮἯἰἱἲἳἴἵἶἷἸἹἺἻἼἽἾἿ  !"#$%&'()*+,-./0ὀὁὂὃὄὅὈὉὊὋὌὍὐὑὒὓὔὕὖὗὙὛὝὟὠὡὢὣὤὥὦὧὨὩὪὫὬὭὮὯὰὲὴὶὸὺὼ  !"#$%&'()*+,-./0123456789:;6<6=6ᾀᾁᾂᾃᾄᾅᾆᾇᾈᾉᾊᾋᾌᾍᾎᾏᾐᾑᾒᾓᾔᾕᾖᾗᾘᾙᾚᾛᾜᾝᾞᾟᾠᾡᾢᾣᾤᾥᾦᾧᾨᾩᾪᾫᾬᾭᾮᾯᾰᾱᾲᾳᾴᾶᾷᾸᾹᾺᾼ   !"#$%&'()*+,-./0῁ῂῃῄῆῇῈῊῌ῍῎῏ῐῑῒΐῖῗῘῙῚ῝῞῟ῠῡῢΰῤῥῦῧῨῩῪῬ῭ῲῳῴῶῷῸῺῼ      がぎぐげござじずぜぞだぢづでどばぱびぴぶぷべぺぼぽ     ゔゞガギグゲゴザジズゼゾ   ダヂヅデドバパビピブプベペボポヴヷヸヹヺヾ가각갂갃간갅갆갇갈갉갊갋갌갍갎갏감갑값갓갔강갖갗갘같갚갛개객갞갟갠갡갢갣갤갥갦갧갨갩갪갫갬갭갮갯갰갱갲갳갴갵갶갷갸갹갺갻갼갽갾갿걀걁걂걃걄걅걆걇걈걉걊걋걌걍걎걏걐걑걒걓걔걕걖걗걘걙걚걛걜걝걞걟걠걡걢걣걤걥걦걧걨걩걪걫걬걭걮걯거걱걲걳건걵걶걷걸걹걺걻걼걽걾걿검겁겂것겄겅겆겇겈겉겊겋게겍겎겏겐겑겒겓겔겕겖겗겘겙겚겛겜겝겞겟겠겡겢겣겤겥겦겧겨격겪겫견겭겮겯결겱겲겳겴겵겶겷겸겹겺겻겼경겾겿곀곁곂곃계곅곆곇곈곉곊곋곌곍곎곏곐곑곒곓곔곕곖곗곘곙곚곛곜곝곞곟고곡곢곣곤곥곦곧골곩곪곫곬곭곮곯곰곱곲곳곴공곶곷곸곹곺곻과곽곾곿관괁괂괃괄괅괆괇괈괉괊괋괌괍괎괏괐광괒괓괔괕괖괗괘괙괚괛괜괝괞괟괠괡괢괣괤괥괦괧괨괩괪괫괬괭괮괯괰괱괲괳괴괵괶괷괸괹괺괻괼괽괾괿굀굁굂굃굄굅굆굇굈굉굊굋굌굍굎굏교굑굒굓굔굕굖굗굘굙굚굛굜굝굞굟굠굡굢굣굤굥굦굧굨굩굪굫구국굮굯군굱굲굳굴굵굶굷굸굹굺굻굼굽굾굿궀궁궂궃궄궅궆궇궈궉궊궋권궍궎궏궐궑궒궓궔궕궖궗궘궙궚궛궜궝궞궟궠궡궢궣궤궥궦궧궨궩궪궫궬궭궮궯궰궱궲궳궴궵궶궷궸궹궺궻궼궽궾궿귀귁귂귃귄귅귆귇귈귉귊귋귌귍귎귏귐귑귒귓귔귕귖귗귘귙귚귛규귝귞귟균귡귢귣귤귥귦귧귨귩귪귫귬귭귮귯귰귱귲귳귴귵귶귷그극귺귻근귽귾귿글긁긂긃긄긅긆긇금급긊긋긌긍긎긏긐긑긒긓긔긕긖긗긘긙긚긛긜긝긞긟긠긡긢긣긤긥긦긧긨긩긪긫긬긭긮긯기긱긲긳긴긵긶긷길긹긺긻긼긽긾긿김깁깂깃깄깅깆깇깈깉깊깋까깍깎깏깐깑깒깓깔깕깖깗깘깙깚깛깜깝깞깟깠깡깢깣깤깥깦깧깨깩깪깫깬깭깮깯깰깱깲깳깴깵깶깷깸깹깺깻깼깽깾깿꺀꺁꺂꺃꺄꺅꺆꺇꺈꺉꺊꺋꺌꺍꺎꺏꺐꺑꺒꺓꺔꺕꺖꺗꺘꺙꺚꺛꺜꺝꺞꺟꺠꺡꺢꺣꺤꺥꺦꺧꺨꺩꺪꺫꺬꺭꺮꺯꺰꺱꺲꺳꺴꺵꺶꺷꺸꺹꺺꺻꺼꺽꺾꺿껀껁껂껃껄껅껆껇껈껉껊껋껌껍껎껏껐껑껒껓껔껕껖껗께껙껚껛껜껝껞껟껠껡껢껣껤껥껦껧껨껩껪껫껬껭껮껯껰껱껲껳껴껵껶껷껸껹껺껻껼껽껾껿꼀꼁꼂꼃꼄꼅꼆꼇꼈꼉꼊꼋꼌꼍꼎꼏꼐꼑꼒꼓꼔꼕꼖꼗꼘꼙꼚꼛꼜꼝꼞꼟꼠꼡꼢꼣꼤꼥꼦꼧꼨꼩꼪꼫꼬꼭꼮꼯꼰꼱꼲꼳꼴꼵꼶꼷꼸꼹꼺꼻꼼꼽꼾꼿꽀꽁꽂꽃꽄꽅꽆꽇꽈꽉꽊꽋꽌꽍꽎꽏꽐꽑꽒꽓꽔꽕꽖꽗꽘꽙꽚꽛꽜꽝꽞꽟꽠꽡꽢꽣꽤꽥꽦꽧꽨꽩꽪꽫꽬꽭꽮꽯꽰꽱꽲꽳꽴꽵꽶꽷꽸꽹꽺꽻꽼꽽꽾꽿꾀꾁꾂꾃꾄꾅꾆꾇꾈꾉꾊꾋꾌꾍꾎꾏꾐꾑꾒꾓꾔꾕꾖꾗꾘꾙꾚꾛꾜꾝꾞꾟꾠꾡꾢꾣꾤꾥꾦꾧꾨꾩꾪꾫꾬꾭꾮꾯꾰꾱꾲꾳꾴꾵꾶꾷꾸꾹꾺꾻꾼꾽꾾꾿꿀꿁꿂꿃꿄꿅꿆꿇꿈꿉꿊꿋꿌꿍꿎꿏꿐꿑꿒꿓꿔꿕꿖꿗꿘꿙꿚꿛꿜꿝꿞꿟꿠꿡꿢꿣꿤꿥꿦꿧꿨꿩꿪꿫꿬꿭꿮꿯꿰꿱꿲꿳꿴꿵꿶꿷꿸꿹꿺꿻꿼꿽꿾꿿 뀀뀁뀂뀃뀄뀅뀆뀇뀈뀉뀊뀋뀌뀍뀎뀏뀐뀑뀒뀓뀔뀕뀖뀗뀘뀙뀚뀛뀜뀝뀞뀟뀠뀡뀢뀣뀤뀥뀦뀧뀨뀩뀪뀫뀬뀭뀮뀯뀰뀱뀲뀳뀴뀵뀶뀷뀸뀹뀺뀻뀼뀽뀾뀿끀끁끂끃끄끅끆끇끈끉끊끋끌끍끎끏끐끑끒끓끔끕끖끗끘끙끚끛끜끝끞끟끠끡끢끣끤끥끦끧끨끩끪끫끬끭끮끯끰끱끲끳끴끵끶끷끸끹끺끻끼끽끾끿낀낁낂낃낄낅낆낇낈낉낊낋낌낍낎낏낐낑낒낓낔낕낖낗나낙낚낛난낝낞낟날낡낢낣낤낥낦낧남납낪낫났낭낮낯낰낱낲낳내낵낶낷낸낹낺낻낼낽낾낿냀냁냂냃냄냅냆냇냈냉냊냋냌냍냎냏냐냑냒냓냔냕냖냗냘냙냚냛냜냝냞냟냠냡냢냣냤냥냦냧냨냩냪냫냬냭냮냯냰냱냲냳냴냵냶냷냸냹냺냻냼냽냾냿넀넁넂넃넄넅넆넇너넉넊넋넌넍넎넏널넑넒넓넔넕넖넗넘넙넚넛넜넝넞넟넠넡넢넣네넥넦넧넨넩넪넫넬넭넮넯넰넱넲넳넴넵넶넷넸넹넺넻넼넽넾넿녀녁녂녃년녅녆녇녈녉녊녋녌녍녎녏념녑녒녓녔녕녖녗녘녙녚녛녜녝녞녟녠녡녢녣녤녥녦녧녨녩녪녫녬녭녮녯녰녱녲녳녴녵녶녷노녹녺녻논녽녾녿놀놁놂놃놄놅놆놇놈놉놊놋놌농놎놏놐놑높놓놔놕놖놗놘놙놚놛놜놝놞놟놠놡놢놣놤놥놦놧놨놩놪놫놬놭놮놯놰놱놲놳놴놵놶놷놸놹놺놻놼놽놾놿뇀뇁뇂뇃뇄뇅뇆뇇뇈뇉뇊뇋뇌뇍뇎뇏뇐뇑뇒뇓뇔뇕뇖뇗뇘뇙뇚뇛뇜뇝뇞뇟뇠뇡뇢뇣뇤뇥뇦뇧뇨뇩뇪뇫뇬뇭뇮뇯뇰뇱뇲뇳뇴뇵뇶뇷뇸뇹뇺뇻뇼뇽뇾뇿눀눁눂눃누눅눆눇눈눉눊눋눌눍눎눏눐눑눒눓눔눕눖눗눘눙눚눛눜눝눞눟눠눡눢눣눤눥눦눧눨눩눪눫눬눭눮눯눰눱눲눳눴눵눶눷눸눹눺눻눼눽눾눿뉀뉁뉂뉃뉄뉅뉆뉇뉈뉉뉊뉋뉌뉍뉎뉏뉐뉑뉒뉓뉔뉕뉖뉗뉘뉙뉚뉛뉜뉝뉞뉟뉠뉡뉢뉣뉤뉥뉦뉧뉨뉩뉪뉫뉬뉭뉮뉯뉰뉱뉲뉳뉴뉵뉶뉷뉸뉹뉺뉻뉼뉽뉾뉿늀늁늂늃늄늅늆늇늈늉늊늋늌늍늎늏느늑늒늓는늕늖늗늘늙늚늛늜늝늞늟늠늡늢늣늤능늦늧늨늩늪늫늬늭늮늯늰늱늲늳늴늵늶늷늸늹늺늻늼늽늾늿닀닁닂닃닄닅닆닇니닉닊닋닌닍닎닏닐닑닒닓닔닕닖닗님닙닚닛닜닝닞닟닠닡닢닣다닥닦닧단닩닪닫달닭닮닯닰닱닲닳담답닶닷닸당닺닻닼닽닾닿대댁댂댃댄댅댆댇댈댉댊댋댌댍댎댏댐댑댒댓댔댕댖댗댘댙댚댛댜댝댞댟댠댡댢댣댤댥댦댧댨댩댪댫댬댭댮댯댰댱댲댳댴댵댶댷댸댹댺댻댼댽댾댿덀덁덂덃덄덅덆덇덈덉덊덋덌덍덎덏덐덑덒덓더덕덖덗던덙덚덛덜덝덞덟덠덡덢덣덤덥덦덧덨덩덪덫덬덭덮덯데덱덲덳덴덵덶덷델덹덺덻덼덽덾덿뎀뎁뎂뎃뎄뎅뎆뎇뎈뎉뎊뎋뎌뎍뎎뎏뎐뎑뎒뎓뎔뎕뎖뎗뎘뎙뎚뎛뎜뎝뎞뎟뎠뎡뎢뎣뎤뎥뎦뎧뎨뎩뎪뎫뎬뎭뎮뎯뎰뎱뎲뎳뎴뎵뎶뎷뎸뎹뎺뎻뎼뎽뎾뎿돀돁돂돃도독돆돇돈돉돊돋돌돍돎돏돐돑돒돓돔돕돖돗돘동돚돛돜돝돞돟돠돡돢돣돤돥돦돧돨돩돪돫돬돭돮돯돰돱돲돳돴돵돶돷돸돹돺돻돼돽돾돿됀됁됂됃됄됅됆됇됈됉됊됋됌됍됎됏됐됑됒됓됔됕됖됗되됙됚됛된됝됞됟될됡됢됣됤됥됦됧됨됩됪됫됬됭됮됯됰됱됲됳됴됵됶됷됸됹됺됻됼됽됾됿둀둁둂둃둄둅둆둇둈둉둊둋둌둍둎둏두둑둒둓둔둕둖둗둘둙둚둛둜둝둞둟둠둡둢둣둤둥둦둧둨둩둪둫둬둭둮둯둰둱둲둳둴둵둶둷둸둹둺둻둼둽둾둿뒀뒁뒂뒃뒄뒅뒆뒇뒈뒉뒊뒋뒌뒍뒎뒏뒐뒑뒒뒓뒔뒕뒖뒗뒘뒙뒚뒛뒜뒝뒞뒟뒠뒡뒢뒣뒤뒥뒦뒧뒨뒩뒪뒫뒬뒭뒮뒯뒰뒱뒲뒳뒴뒵뒶뒷뒸뒹뒺뒻뒼뒽뒾뒿듀듁듂듃듄듅듆듇듈듉듊듋듌듍듎듏듐듑듒듓듔듕듖듗듘듙듚듛드득듞듟든듡듢듣들듥듦듧듨듩듪듫듬듭듮듯듰등듲듳듴듵듶듷듸듹듺듻듼듽듾듿딀딁딂딃딄딅딆딇딈딉딊딋딌딍딎딏딐딑딒딓디딕딖딗딘딙딚딛딜딝딞딟딠딡딢딣딤딥딦딧딨딩딪딫딬딭딮딯따딱딲딳딴딵딶딷딸딹딺딻딼딽딾딿땀땁땂땃땄땅땆땇땈땉땊땋때땍땎땏땐땑땒땓땔땕땖땗땘땙땚땛땜땝땞땟땠땡땢땣땤땥땦땧땨땩땪땫땬땭땮땯땰땱땲땳땴땵땶땷땸땹땺땻땼땽땾땿떀떁떂떃떄떅떆떇떈떉떊떋떌떍떎떏떐떑떒떓떔떕떖떗떘떙떚떛떜떝떞떟떠떡떢떣떤떥떦떧떨떩떪떫떬떭떮떯떰떱떲떳떴떵떶떷떸떹떺떻떼떽떾떿뗀뗁뗂뗃뗄뗅뗆뗇뗈뗉뗊뗋뗌뗍뗎뗏뗐뗑뗒뗓뗔뗕뗖뗗뗘뗙뗚뗛뗜뗝뗞뗟뗠뗡뗢뗣뗤뗥뗦뗧뗨뗩뗪뗫뗬뗭뗮뗯뗰뗱뗲뗳뗴뗵뗶뗷뗸뗹뗺뗻뗼뗽뗾뗿똀똁똂똃똄똅똆똇똈똉똊똋똌똍똎똏또똑똒똓똔똕똖똗똘똙똚똛똜똝똞똟똠똡똢똣똤똥똦똧똨똩똪똫똬똭똮똯똰똱똲똳똴똵똶똷똸똹똺똻똼똽똾똿뙀뙁뙂뙃뙄뙅뙆뙇뙈뙉뙊뙋뙌뙍뙎뙏뙐뙑뙒뙓뙔뙕뙖뙗뙘뙙뙚뙛뙜뙝뙞뙟뙠뙡뙢뙣뙤뙥뙦뙧뙨뙩뙪뙫뙬뙭뙮뙯뙰뙱뙲뙳뙴뙵뙶뙷뙸뙹뙺뙻뙼뙽뙾뙿뚀뚁뚂뚃뚄뚅뚆뚇뚈뚉뚊뚋뚌뚍뚎뚏뚐뚑뚒뚓뚔뚕뚖뚗뚘뚙뚚뚛뚜뚝뚞뚟뚠뚡뚢뚣뚤뚥뚦뚧뚨뚩뚪뚫뚬뚭뚮뚯뚰뚱뚲뚳뚴뚵뚶뚷뚸뚹뚺뚻뚼뚽뚾뚿뛀뛁뛂뛃뛄뛅뛆뛇뛈뛉뛊뛋뛌뛍뛎뛏뛐뛑뛒뛓뛔뛕뛖뛗뛘뛙뛚뛛뛜뛝뛞뛟뛠뛡뛢뛣뛤뛥뛦뛧뛨뛩뛪뛫뛬뛭뛮뛯뛰뛱뛲뛳뛴뛵뛶뛷뛸뛹뛺뛻뛼뛽뛾뛿뜀뜁뜂뜃뜄뜅뜆뜇뜈뜉뜊뜋뜌뜍뜎뜏뜐뜑뜒뜓뜔뜕뜖뜗뜘뜙뜚뜛뜜뜝뜞뜟뜠뜡뜢뜣뜤뜥뜦뜧뜨뜩뜪뜫뜬뜭뜮뜯뜰뜱뜲뜳뜴뜵뜶뜷뜸뜹뜺뜻뜼뜽뜾뜿띀띁띂띃띄띅띆띇띈띉띊띋띌띍띎띏띐띑띒띓띔띕띖띗띘띙띚띛띜띝띞띟띠띡띢띣띤띥띦띧띨띩띪띫띬띭띮띯띰띱띲띳띴띵띶띷띸띹띺띻라락띾띿란랁랂랃랄랅랆랇랈랉랊랋람랍랎랏랐랑랒랓랔랕랖랗래랙랚랛랜랝랞랟랠랡랢랣랤랥랦랧램랩랪랫랬랭랮랯랰랱랲랳랴략랶랷랸랹랺랻랼랽랾랿럀럁럂럃럄럅럆럇럈량럊럋럌럍럎럏럐럑럒럓럔럕럖럗럘럙럚럛럜럝럞럟럠럡럢럣럤럥럦럧럨럩럪럫러럭럮럯런럱럲럳럴럵럶럷럸럹럺럻럼럽럾럿렀렁렂렃렄렅렆렇레렉렊렋렌렍렎렏렐렑렒렓렔렕렖렗렘렙렚렛렜렝렞렟렠렡렢렣려력렦렧련렩렪렫렬렭렮렯렰렱렲렳렴렵렶렷렸령렺렻렼렽렾렿례롁롂롃롄롅롆롇롈롉롊롋롌롍롎롏롐롑롒롓롔롕롖롗롘롙롚롛로록롞롟론롡롢롣롤롥롦롧롨롩롪롫롬롭롮롯롰롱롲롳롴롵롶롷롸롹롺롻롼롽롾롿뢀뢁뢂뢃뢄뢅뢆뢇뢈뢉뢊뢋뢌뢍뢎뢏뢐뢑뢒뢓뢔뢕뢖뢗뢘뢙뢚뢛뢜뢝뢞뢟뢠뢡뢢뢣뢤뢥뢦뢧뢨뢩뢪뢫뢬뢭뢮뢯뢰뢱뢲뢳뢴뢵뢶뢷뢸뢹뢺뢻뢼뢽뢾뢿룀룁룂룃룄룅룆룇룈룉룊룋료룍룎룏룐룑룒룓룔룕룖룗룘룙룚룛룜룝룞룟룠룡룢룣룤룥룦룧루룩룪룫룬룭룮룯룰룱룲룳룴룵룶룷룸룹룺룻룼룽룾룿뤀뤁뤂뤃뤄뤅뤆뤇뤈뤉뤊뤋뤌뤍뤎뤏뤐뤑뤒뤓뤔뤕뤖뤗뤘뤙뤚뤛뤜뤝뤞뤟뤠뤡뤢뤣뤤뤥뤦뤧뤨뤩뤪뤫뤬뤭뤮뤯뤰뤱뤲뤳뤴뤵뤶뤷뤸뤹뤺뤻뤼뤽뤾뤿륀륁륂륃륄륅륆륇륈륉륊륋륌륍륎륏륐륑륒륓륔륕륖륗류륙륚륛륜륝륞륟률륡륢륣륤륥륦륧륨륩륪륫륬륭륮륯륰륱륲륳르륵륶륷른륹륺륻를륽륾륿릀릁릂릃름릅릆릇릈릉릊릋릌릍릎릏릐릑릒릓릔릕릖릗릘릙릚릛릜릝릞릟릠릡릢릣릤릥릦릧릨릩릪릫리릭릮릯린릱릲릳릴릵릶릷릸릹릺릻림립릾릿맀링맂맃맄맅맆맇마막맊맋만맍많맏말맑맒맓맔맕맖맗맘맙맚맛맜망맞맟맠맡맢맣매맥맦맧맨맩맪맫맬맭맮맯맰맱맲맳맴맵맶맷맸맹맺맻맼맽맾맿먀먁먂먃먄먅먆먇먈먉먊먋먌먍먎먏먐먑먒먓먔먕먖먗먘먙먚먛먜먝먞먟먠먡먢먣먤먥먦먧먨먩먪먫먬먭먮먯먰먱먲먳먴먵먶먷머먹먺먻먼먽먾먿멀멁멂멃멄멅멆멇멈멉멊멋멌멍멎멏멐멑멒멓메멕멖멗멘멙멚멛멜멝멞멟멠멡멢멣멤멥멦멧멨멩멪멫멬멭멮멯며멱멲멳면멵멶멷멸멹멺멻멼멽멾멿몀몁몂몃몄명몆몇몈몉몊몋몌몍몎몏몐몑몒몓몔몕몖몗몘몙몚몛몜몝몞몟몠몡몢몣몤몥몦몧모목몪몫몬몭몮몯몰몱몲몳몴몵몶몷몸몹몺못몼몽몾몿뫀뫁뫂뫃뫄뫅뫆뫇뫈뫉뫊뫋뫌뫍뫎뫏뫐뫑뫒뫓뫔뫕뫖뫗뫘뫙뫚뫛뫜뫝뫞뫟뫠뫡뫢뫣뫤뫥뫦뫧뫨뫩뫪뫫뫬뫭뫮뫯뫰뫱뫲뫳뫴뫵뫶뫷뫸뫹뫺뫻뫼뫽뫾뫿묀묁묂묃묄묅묆묇묈묉묊묋묌묍묎묏묐묑묒묓묔묕묖묗묘묙묚묛묜묝묞묟묠묡묢묣묤묥묦묧묨묩묪묫묬묭묮묯묰묱묲묳무묵묶묷문묹묺묻물묽묾묿뭀뭁뭂뭃뭄뭅뭆뭇뭈뭉뭊뭋뭌뭍뭎뭏뭐뭑뭒뭓뭔뭕뭖뭗뭘뭙뭚뭛뭜뭝뭞뭟뭠뭡뭢뭣뭤뭥뭦뭧뭨뭩뭪뭫뭬뭭뭮뭯뭰뭱뭲뭳뭴뭵뭶뭷뭸뭹뭺뭻뭼뭽뭾뭿뮀뮁뮂뮃뮄뮅뮆뮇뮈뮉뮊뮋뮌뮍뮎뮏뮐뮑뮒뮓뮔뮕뮖뮗뮘뮙뮚뮛뮜뮝뮞뮟뮠뮡뮢뮣뮤뮥뮦뮧뮨뮩뮪뮫뮬뮭뮮뮯뮰뮱뮲뮳뮴뮵뮶뮷뮸뮹뮺뮻뮼뮽뮾뮿므믁믂믃믄믅믆믇믈믉믊믋믌믍믎믏믐믑믒믓믔믕믖믗믘믙믚믛믜믝믞믟믠믡믢믣믤믥믦믧믨믩믪믫믬믭믮믯믰믱믲믳믴믵믶믷미믹믺믻민믽믾믿밀밁밂밃밄밅밆밇밈밉밊밋밌밍밎및밐밑밒밓바박밖밗반밙밚받발밝밞밟밠밡밢밣밤밥밦밧밨방밪밫밬밭밮밯배백밲밳밴밵밶밷밸밹밺밻밼밽밾밿뱀뱁뱂뱃뱄뱅뱆뱇뱈뱉뱊뱋뱌뱍뱎뱏뱐뱑뱒뱓뱔뱕뱖뱗뱘뱙뱚뱛뱜뱝뱞뱟뱠뱡뱢뱣뱤뱥뱦뱧뱨뱩뱪뱫뱬뱭뱮뱯뱰뱱뱲뱳뱴뱵뱶뱷뱸뱹뱺뱻뱼뱽뱾뱿벀벁벂벃버벅벆벇번벉벊벋벌벍벎벏벐벑벒벓범법벖벗벘벙벚벛벜벝벞벟베벡벢벣벤벥벦벧벨벩벪벫벬벭벮벯벰벱벲벳벴벵벶벷벸벹벺벻벼벽벾벿변볁볂볃별볅볆볇볈볉볊볋볌볍볎볏볐병볒볓볔볕볖볗볘볙볚볛볜볝볞볟볠볡볢볣볤볥볦볧볨볩볪볫볬볭볮볯볰볱볲볳보복볶볷본볹볺볻볼볽볾볿봀봁봂봃봄봅봆봇봈봉봊봋봌봍봎봏봐봑봒봓봔봕봖봗봘봙봚봛봜봝봞봟봠봡봢봣봤봥봦봧봨봩봪봫봬봭봮봯봰봱봲봳봴봵봶봷봸봹봺봻봼봽봾봿뵀뵁뵂뵃뵄뵅뵆뵇뵈뵉뵊뵋뵌뵍뵎뵏뵐뵑뵒뵓뵔뵕뵖뵗뵘뵙뵚뵛뵜뵝뵞뵟뵠뵡뵢뵣뵤뵥뵦뵧뵨뵩뵪뵫뵬뵭뵮뵯뵰뵱뵲뵳뵴뵵뵶뵷뵸뵹뵺뵻뵼뵽뵾뵿부북붂붃분붅붆붇불붉붊붋붌붍붎붏붐붑붒붓붔붕붖붗붘붙붚붛붜붝붞붟붠붡붢붣붤붥붦붧붨붩붪붫붬붭붮붯붰붱붲붳붴붵붶붷붸붹붺붻붼붽붾붿뷀뷁뷂뷃뷄뷅뷆뷇뷈뷉뷊뷋뷌뷍뷎뷏뷐뷑뷒뷓뷔뷕뷖뷗뷘뷙뷚뷛뷜뷝뷞뷟뷠뷡뷢뷣뷤뷥뷦뷧뷨뷩뷪뷫뷬뷭뷮뷯뷰뷱뷲뷳뷴뷵뷶뷷뷸뷹뷺뷻뷼뷽뷾뷿븀븁븂븃븄븅븆븇븈븉븊븋브븍븎븏븐븑븒븓블븕븖븗븘븙븚븛븜븝븞븟븠븡븢븣븤븥븦븧븨븩븪븫븬븭븮븯븰븱븲븳븴븵븶븷븸븹븺븻븼븽븾븿빀빁빂빃비빅빆빇빈빉빊빋빌빍빎빏빐빑빒빓빔빕빖빗빘빙빚빛빜빝빞빟빠빡빢빣빤빥빦빧빨빩빪빫빬빭빮빯빰빱빲빳빴빵빶빷빸빹빺빻빼빽빾빿뺀뺁뺂뺃뺄뺅뺆뺇뺈뺉뺊뺋뺌뺍뺎뺏뺐뺑뺒뺓뺔뺕뺖뺗뺘뺙뺚뺛뺜뺝뺞뺟뺠뺡뺢뺣뺤뺥뺦뺧뺨뺩뺪뺫뺬뺭뺮뺯뺰뺱뺲뺳뺴뺵뺶뺷뺸뺹뺺뺻뺼뺽뺾뺿뻀뻁뻂뻃뻄뻅뻆뻇뻈뻉뻊뻋뻌뻍뻎뻏뻐뻑뻒뻓뻔뻕뻖뻗뻘뻙뻚뻛뻜뻝뻞뻟뻠뻡뻢뻣뻤뻥뻦뻧뻨뻩뻪뻫뻬뻭뻮뻯뻰뻱뻲뻳뻴뻵뻶뻷뻸뻹뻺뻻뻼뻽뻾뻿뼀뼁뼂뼃뼄뼅뼆뼇뼈뼉뼊뼋뼌뼍뼎뼏뼐뼑뼒뼓뼔뼕뼖뼗뼘뼙뼚뼛뼜뼝뼞뼟뼠뼡뼢뼣뼤뼥뼦뼧뼨뼩뼪뼫뼬뼭뼮뼯뼰뼱뼲뼳뼴뼵뼶뼷뼸뼹뼺뼻뼼뼽뼾뼿뽀뽁뽂뽃뽄뽅뽆뽇뽈뽉뽊뽋뽌뽍뽎뽏뽐뽑뽒뽓뽔뽕뽖뽗뽘뽙뽚뽛뽜뽝뽞뽟뽠뽡뽢뽣뽤뽥뽦뽧뽨뽩뽪뽫뽬뽭뽮뽯뽰뽱뽲뽳뽴뽵뽶뽷뽸뽹뽺뽻뽼뽽뽾뽿뾀뾁뾂뾃뾄뾅뾆뾇뾈뾉뾊뾋뾌뾍뾎뾏뾐뾑뾒뾓뾔뾕뾖뾗뾘뾙뾚뾛뾜뾝뾞뾟뾠뾡뾢뾣뾤뾥뾦뾧뾨뾩뾪뾫뾬뾭뾮뾯뾰뾱뾲뾳뾴뾵뾶뾷뾸뾹뾺뾻뾼뾽뾾뾿뿀뿁뿂뿃뿄뿅뿆뿇뿈뿉뿊뿋뿌뿍뿎뿏뿐뿑뿒뿓뿔뿕뿖뿗뿘뿙뿚뿛뿜뿝뿞뿟뿠뿡뿢뿣뿤뿥뿦뿧뿨뿩뿪뿫뿬뿭뿮뿯뿰뿱뿲뿳뿴뿵뿶뿷뿸뿹뿺뿻뿼뿽뿾뿿쀀쀁쀂쀃쀄쀅쀆쀇쀈쀉쀊쀋쀌쀍쀎쀏쀐쀑쀒쀓쀔쀕쀖쀗쀘쀙쀚쀛쀜쀝쀞쀟쀠쀡쀢쀣쀤쀥쀦쀧쀨쀩쀪쀫쀬쀭쀮쀯쀰쀱쀲쀳쀴쀵쀶쀷쀸쀹쀺쀻쀼쀽쀾쀿쁀쁁쁂쁃쁄쁅쁆쁇쁈쁉쁊쁋쁌쁍쁎쁏쁐쁑쁒쁓쁔쁕쁖쁗쁘쁙쁚쁛쁜쁝쁞쁟쁠쁡쁢쁣쁤쁥쁦쁧쁨쁩쁪쁫쁬쁭쁮쁯쁰쁱쁲쁳쁴쁵쁶쁷쁸쁹쁺쁻쁼쁽쁾쁿삀삁삂삃삄삅삆삇삈삉삊삋삌삍삎삏삐삑삒삓삔삕삖삗삘삙삚삛삜삝삞삟삠삡삢삣삤삥삦삧삨삩삪삫사삭삮삯산삱삲삳살삵삶삷삸삹삺삻삼삽삾삿샀상샂샃샄샅샆샇새색샊샋샌샍샎샏샐샑샒샓샔샕샖샗샘샙샚샛샜생샞샟샠샡샢샣샤샥샦샧샨샩샪샫샬샭샮샯샰샱샲샳샴샵샶샷샸샹샺샻샼샽샾샿섀섁섂섃섄섅섆섇섈섉섊섋섌섍섎섏섐섑섒섓섔섕섖섗섘섙섚섛서석섞섟선섡섢섣설섥섦섧섨섩섪섫섬섭섮섯섰성섲섳섴섵섶섷세섹섺섻센섽섾섿셀셁셂셃셄셅셆셇셈셉셊셋셌셍셎셏셐셑셒셓셔셕셖셗션셙셚셛셜셝셞셟셠셡셢셣셤셥셦셧셨셩셪셫셬셭셮셯셰셱셲셳셴셵셶셷셸셹셺셻셼셽셾셿솀솁솂솃솄솅솆솇솈솉솊솋소속솎솏손솑솒솓솔솕솖솗솘솙솚솛솜솝솞솟솠송솢솣솤솥솦솧솨솩솪솫솬솭솮솯솰솱솲솳솴솵솶솷솸솹솺솻솼솽솾솿쇀쇁쇂쇃쇄쇅쇆쇇쇈쇉쇊쇋쇌쇍쇎쇏쇐쇑쇒쇓쇔쇕쇖쇗쇘쇙쇚쇛쇜쇝쇞쇟쇠쇡쇢쇣쇤쇥쇦쇧쇨쇩쇪쇫쇬쇭쇮쇯쇰쇱쇲쇳쇴쇵쇶쇷쇸쇹쇺쇻쇼쇽쇾쇿숀숁숂숃숄숅숆숇숈숉숊숋숌숍숎숏숐숑숒숓숔숕숖숗수숙숚숛순숝숞숟술숡숢숣숤숥숦숧숨숩숪숫숬숭숮숯숰숱숲숳숴숵숶숷숸숹숺숻숼숽숾숿쉀쉁쉂쉃쉄쉅쉆쉇쉈쉉쉊쉋쉌쉍쉎쉏쉐쉑쉒쉓쉔쉕쉖쉗쉘쉙쉚쉛쉜쉝쉞쉟쉠쉡쉢쉣쉤쉥쉦쉧쉨쉩쉪쉫쉬쉭쉮쉯쉰쉱쉲쉳쉴쉵쉶쉷쉸쉹쉺쉻쉼쉽쉾쉿슀슁슂슃슄슅슆슇슈슉슊슋슌슍슎슏슐슑슒슓슔슕슖슗슘슙슚슛슜슝슞슟슠슡슢슣스슥슦슧슨슩슪슫슬슭슮슯슰슱슲슳슴습슶슷슸승슺슻슼슽슾슿싀싁싂싃싄싅싆싇싈싉싊싋싌싍싎싏싐싑싒싓싔싕싖싗싘싙싚싛시식싞싟신싡싢싣실싥싦싧싨싩싪싫심십싮싯싰싱싲싳싴싵싶싷싸싹싺싻싼싽싾싿쌀쌁쌂쌃쌄쌅쌆쌇쌈쌉쌊쌋쌌쌍쌎쌏쌐쌑쌒쌓쌔쌕쌖쌗쌘쌙쌚쌛쌜쌝쌞쌟쌠쌡쌢쌣쌤쌥쌦쌧쌨쌩쌪쌫쌬쌭쌮쌯쌰쌱쌲쌳쌴쌵쌶쌷쌸쌹쌺쌻쌼쌽쌾쌿썀썁썂썃썄썅썆썇썈썉썊썋썌썍썎썏썐썑썒썓썔썕썖썗썘썙썚썛썜썝썞썟썠썡썢썣썤썥썦썧써썩썪썫썬썭썮썯썰썱썲썳썴썵썶썷썸썹썺썻썼썽썾썿쎀쎁쎂쎃쎄쎅쎆쎇쎈쎉쎊쎋쎌쎍쎎쎏쎐쎑쎒쎓쎔쎕쎖쎗쎘쎙쎚쎛쎜쎝쎞쎟쎠쎡쎢쎣쎤쎥쎦쎧쎨쎩쎪쎫쎬쎭쎮쎯쎰쎱쎲쎳쎴쎵쎶쎷쎸쎹쎺쎻쎼쎽쎾쎿쏀쏁쏂쏃쏄쏅쏆쏇쏈쏉쏊쏋쏌쏍쏎쏏쏐쏑쏒쏓쏔쏕쏖쏗쏘쏙쏚쏛쏜쏝쏞쏟쏠쏡쏢쏣쏤쏥쏦쏧쏨쏩쏪쏫쏬쏭쏮쏯쏰쏱쏲쏳쏴쏵쏶쏷쏸쏹쏺쏻쏼쏽쏾쏿쐀쐁쐂쐃쐄쐅쐆쐇쐈쐉쐊쐋쐌쐍쐎쐏쐐쐑쐒쐓쐔쐕쐖쐗쐘쐙쐚쐛쐜쐝쐞쐟쐠쐡쐢쐣쐤쐥쐦쐧쐨쐩쐪쐫쐬쐭쐮쐯쐰쐱쐲쐳쐴쐵쐶쐷쐸쐹쐺쐻쐼쐽쐾쐿쑀쑁쑂쑃쑄쑅쑆쑇쑈쑉쑊쑋쑌쑍쑎쑏쑐쑑쑒쑓쑔쑕쑖쑗쑘쑙쑚쑛쑜쑝쑞쑟쑠쑡쑢쑣쑤쑥쑦쑧쑨쑩쑪쑫쑬쑭쑮쑯쑰쑱쑲쑳쑴쑵쑶쑷쑸쑹쑺쑻쑼쑽쑾쑿쒀쒁쒂쒃쒄쒅쒆쒇쒈쒉쒊쒋쒌쒍쒎쒏쒐쒑쒒쒓쒔쒕쒖쒗쒘쒙쒚쒛쒜쒝쒞쒟쒠쒡쒢쒣쒤쒥쒦쒧쒨쒩쒪쒫쒬쒭쒮쒯쒰쒱쒲쒳쒴쒵쒶쒷쒸쒹쒺쒻쒼쒽쒾쒿쓀쓁쓂쓃쓄쓅쓆쓇쓈쓉쓊쓋쓌쓍쓎쓏쓐쓑쓒쓓쓔쓕쓖쓗쓘쓙쓚쓛쓜쓝쓞쓟쓠쓡쓢쓣쓤쓥쓦쓧쓨쓩쓪쓫쓬쓭쓮쓯쓰쓱쓲쓳쓴쓵쓶쓷쓸쓹쓺쓻쓼쓽쓾쓿씀씁씂씃씄씅씆씇씈씉씊씋씌씍씎씏씐씑씒씓씔씕씖씗씘씙씚씛씜씝씞씟씠씡씢씣씤씥씦씧씨씩씪씫씬씭씮씯씰씱씲씳씴씵씶씷씸씹씺씻씼씽씾씿앀앁앂앃아악앆앇안앉않앋알앍앎앏앐앑앒앓암압앖앗았앙앚앛앜앝앞앟애액앢앣앤앥앦앧앨앩앪앫앬앭앮앯앰앱앲앳앴앵앶앷앸앹앺앻야약앾앿얀얁얂얃얄얅얆얇얈얉얊얋얌얍얎얏얐양얒얓얔얕얖얗얘얙얚얛얜얝얞얟얠얡얢얣얤얥얦얧얨얩얪얫얬얭얮얯얰얱얲얳어억얶얷언얹얺얻얼얽얾얿엀엁엂엃엄업없엇었엉엊엋엌엍엎엏에엑엒엓엔엕엖엗엘엙엚엛엜엝엞엟엠엡엢엣엤엥엦엧엨엩엪엫여역엮엯연엱엲엳열엵엶엷엸엹엺엻염엽엾엿였영옂옃옄옅옆옇예옉옊옋옌옍옎옏옐옑옒옓옔옕옖옗옘옙옚옛옜옝옞옟옠옡옢옣오옥옦옧온옩옪옫올옭옮옯옰옱옲옳옴옵옶옷옸옹옺옻옼옽옾옿와왁왂왃완왅왆왇왈왉왊왋왌왍왎왏왐왑왒왓왔왕왖왗왘왙왚왛왜왝왞왟왠왡왢왣왤왥왦왧왨왩왪왫왬왭왮왯왰왱왲왳왴왵왶왷외왹왺왻왼왽왾왿욀욁욂욃욄욅욆욇욈욉욊욋욌욍욎욏욐욑욒욓요욕욖욗욘욙욚욛욜욝욞욟욠욡욢욣욤욥욦욧욨용욪욫욬욭욮욯우욱욲욳운욵욶욷울욹욺욻욼욽욾욿움웁웂웃웄웅웆웇웈웉웊웋워웍웎웏원웑웒웓월웕웖웗웘웙웚웛웜웝웞웟웠웡웢웣웤웥웦웧웨웩웪웫웬웭웮웯웰웱웲웳웴웵웶웷웸웹웺웻웼웽웾웿윀윁윂윃위윅윆윇윈윉윊윋윌윍윎윏윐윑윒윓윔윕윖윗윘윙윚윛윜윝윞윟유육윢윣윤윥윦윧율윩윪윫윬윭윮윯윰윱윲윳윴융윶윷윸윹윺윻으윽윾윿은읁읂읃을읅읆읇읈읉읊읋음읍읎읏읐응읒읓읔읕읖읗의읙읚읛읜읝읞읟읠읡읢읣읤읥읦읧읨읩읪읫읬읭읮읯읰읱읲읳이익읶읷인읹읺읻일읽읾읿잀잁잂잃임입잆잇있잉잊잋잌잍잎잏자작잒잓잔잕잖잗잘잙잚잛잜잝잞잟잠잡잢잣잤장잦잧잨잩잪잫재잭잮잯잰잱잲잳잴잵잶잷잸잹잺잻잼잽잾잿쟀쟁쟂쟃쟄쟅쟆쟇쟈쟉쟊쟋쟌쟍쟎쟏쟐쟑쟒쟓쟔쟕쟖쟗쟘쟙쟚쟛쟜쟝쟞쟟쟠쟡쟢쟣쟤쟥쟦쟧쟨쟩쟪쟫쟬쟭쟮쟯쟰쟱쟲쟳쟴쟵쟶쟷쟸쟹쟺쟻쟼쟽쟾쟿저적젂젃전젅젆젇절젉젊젋젌젍젎젏점접젒젓젔정젖젗젘젙젚젛제젝젞젟젠젡젢젣젤젥젦젧젨젩젪젫젬젭젮젯젰젱젲젳젴젵젶젷져젹젺젻젼젽젾젿졀졁졂졃졄졅졆졇졈졉졊졋졌졍졎졏졐졑졒졓졔졕졖졗졘졙졚졛졜졝졞졟졠졡졢졣졤졥졦졧졨졩졪졫졬졭졮졯조족졲졳존졵졶졷졸졹졺졻졼졽졾졿좀좁좂좃좄종좆좇좈좉좊좋좌좍좎좏좐좑좒좓좔좕좖좗좘좙좚좛좜좝좞좟좠좡좢좣좤좥좦좧좨좩좪좫좬좭좮좯좰좱좲좳좴좵좶좷좸좹좺좻좼좽좾좿죀죁죂죃죄죅죆죇죈죉죊죋죌죍죎죏죐죑죒죓죔죕죖죗죘죙죚죛죜죝죞죟죠죡죢죣죤죥죦죧죨죩죪죫죬죭죮죯죰죱죲죳죴죵죶죷죸죹죺죻주죽죾죿준줁줂줃줄줅줆줇줈줉줊줋줌줍줎줏줐중줒줓줔줕줖줗줘줙줚줛줜줝줞줟줠줡줢줣줤줥줦줧줨줩줪줫줬줭줮줯줰줱줲줳줴줵줶줷줸줹줺줻줼줽줾줿쥀쥁쥂쥃쥄쥅쥆쥇쥈쥉쥊쥋쥌쥍쥎쥏쥐쥑쥒쥓쥔쥕쥖쥗쥘쥙쥚쥛쥜쥝쥞쥟쥠쥡쥢쥣쥤쥥쥦쥧쥨쥩쥪쥫쥬쥭쥮쥯쥰쥱쥲쥳쥴쥵쥶쥷쥸쥹쥺쥻쥼쥽쥾쥿즀즁즂즃즄즅즆즇즈즉즊즋즌즍즎즏즐즑즒즓즔즕즖즗즘즙즚즛즜증즞즟즠즡즢즣즤즥즦즧즨즩즪즫즬즭즮즯즰즱즲즳즴즵즶즷즸즹즺즻즼즽즾즿지직짂짃진짅짆짇질짉짊짋짌짍짎짏짐집짒짓짔징짖짗짘짙짚짛짜짝짞짟짠짡짢짣짤짥짦짧짨짩짪짫짬짭짮짯짰짱짲짳짴짵짶짷째짹짺짻짼짽짾짿쨀쨁쨂쨃쨄쨅쨆쨇쨈쨉쨊쨋쨌쨍쨎쨏쨐쨑쨒쨓쨔쨕쨖쨗쨘쨙쨚쨛쨜쨝쨞쨟쨠쨡쨢쨣쨤쨥쨦쨧쨨쨩쨪쨫쨬쨭쨮쨯쨰쨱쨲쨳쨴쨵쨶쨷쨸쨹쨺쨻쨼쨽쨾쨿쩀쩁쩂쩃쩄쩅쩆쩇쩈쩉쩊쩋쩌쩍쩎쩏쩐쩑쩒쩓쩔쩕쩖쩗쩘쩙쩚쩛쩜쩝쩞쩟쩠쩡쩢쩣쩤쩥쩦쩧쩨쩩쩪쩫쩬쩭쩮쩯쩰쩱쩲쩳쩴쩵쩶쩷쩸쩹쩺쩻쩼쩽쩾쩿쪀쪁쪂쪃쪄쪅쪆쪇쪈쪉쪊쪋쪌쪍쪎쪏쪐쪑쪒쪓쪔쪕쪖쪗쪘쪙쪚쪛쪜쪝쪞쪟쪠쪡쪢쪣쪤쪥쪦쪧쪨쪩쪪쪫쪬쪭쪮쪯쪰쪱쪲쪳쪴쪵쪶쪷쪸쪹쪺쪻쪼쪽쪾쪿쫀쫁쫂쫃쫄쫅쫆쫇쫈쫉쫊쫋쫌쫍쫎쫏쫐쫑쫒쫓쫔쫕쫖쫗쫘쫙쫚쫛쫜쫝쫞쫟쫠쫡쫢쫣쫤쫥쫦쫧쫨쫩쫪쫫쫬쫭쫮쫯쫰쫱쫲쫳쫴쫵쫶쫷쫸쫹쫺쫻쫼쫽쫾쫿쬀쬁쬂쬃쬄쬅쬆쬇쬈쬉쬊쬋쬌쬍쬎쬏쬐쬑쬒쬓쬔쬕쬖쬗쬘쬙쬚쬛쬜쬝쬞쬟쬠쬡쬢쬣쬤쬥쬦쬧쬨쬩쬪쬫쬬쬭쬮쬯쬰쬱쬲쬳쬴쬵쬶쬷쬸쬹쬺쬻쬼쬽쬾쬿쭀쭁쭂쭃쭄쭅쭆쭇쭈쭉쭊쭋쭌쭍쭎쭏쭐쭑쭒쭓쭔쭕쭖쭗쭘쭙쭚쭛쭜쭝쭞쭟쭠쭡쭢쭣쭤쭥쭦쭧쭨쭩쭪쭫쭬쭭쭮쭯쭰쭱쭲쭳쭴쭵쭶쭷쭸쭹쭺쭻쭼쭽쭾쭿쮀쮁쮂쮃쮄쮅쮆쮇쮈쮉쮊쮋쮌쮍쮎쮏쮐쮑쮒쮓쮔쮕쮖쮗쮘쮙쮚쮛쮜쮝쮞쮟쮠쮡쮢쮣쮤쮥쮦쮧쮨쮩쮪쮫쮬쮭쮮쮯쮰쮱쮲쮳쮴쮵쮶쮷쮸쮹쮺쮻쮼쮽쮾쮿쯀쯁쯂쯃쯄쯅쯆쯇쯈쯉쯊쯋쯌쯍쯎쯏쯐쯑쯒쯓쯔쯕쯖쯗쯘쯙쯚쯛쯜쯝쯞쯟쯠쯡쯢쯣쯤쯥쯦쯧쯨쯩쯪쯫쯬쯭쯮쯯쯰쯱쯲쯳쯴쯵쯶쯷쯸쯹쯺쯻쯼쯽쯾쯿찀찁찂찃찄찅찆찇찈찉찊찋찌찍찎찏찐찑찒찓찔찕찖찗찘찙찚찛찜찝찞찟찠찡찢찣찤찥찦찧차착찪찫찬찭찮찯찰찱찲찳찴찵찶찷참찹찺찻찼창찾찿챀챁챂챃채책챆챇챈챉챊챋챌챍챎챏챐챑챒챓챔챕챖챗챘챙챚챛챜챝챞챟챠챡챢챣챤챥챦챧챨챩챪챫챬챭챮챯챰챱챲챳챴챵챶챷챸챹챺챻챼챽챾챿첀첁첂첃첄첅첆첇첈첉첊첋첌첍첎첏첐첑첒첓첔첕첖첗처척첚첛천첝첞첟철첡첢첣첤첥첦첧첨첩첪첫첬청첮첯첰첱첲첳체첵첶첷첸첹첺첻첼첽첾첿쳀쳁쳂쳃쳄쳅쳆쳇쳈쳉쳊쳋쳌쳍쳎쳏쳐쳑쳒쳓쳔쳕쳖쳗쳘쳙쳚쳛쳜쳝쳞쳟쳠쳡쳢쳣쳤쳥쳦쳧쳨쳩쳪쳫쳬쳭쳮쳯쳰쳱쳲쳳쳴쳵쳶쳷쳸쳹쳺쳻쳼쳽쳾쳿촀촁촂촃촄촅촆촇초촉촊촋촌촍촎촏촐촑촒촓촔촕촖촗촘촙촚촛촜총촞촟촠촡촢촣촤촥촦촧촨촩촪촫촬촭촮촯촰촱촲촳촴촵촶촷촸촹촺촻촼촽촾촿쵀쵁쵂쵃쵄쵅쵆쵇쵈쵉쵊쵋쵌쵍쵎쵏쵐쵑쵒쵓쵔쵕쵖쵗쵘쵙쵚쵛최쵝쵞쵟쵠쵡쵢쵣쵤쵥쵦쵧쵨쵩쵪쵫쵬쵭쵮쵯쵰쵱쵲쵳쵴쵵쵶쵷쵸쵹쵺쵻쵼쵽쵾쵿춀춁춂춃춄춅춆춇춈춉춊춋춌춍춎춏춐춑춒춓추축춖춗춘춙춚춛출춝춞춟춠춡춢춣춤춥춦춧춨충춪춫춬춭춮춯춰춱춲춳춴춵춶춷춸춹춺춻춼춽춾춿췀췁췂췃췄췅췆췇췈췉췊췋췌췍췎췏췐췑췒췓췔췕췖췗췘췙췚췛췜췝췞췟췠췡췢췣췤췥췦췧취췩췪췫췬췭췮췯췰췱췲췳췴췵췶췷췸췹췺췻췼췽췾췿츀츁츂츃츄츅츆츇츈츉츊츋츌츍츎츏츐츑츒츓츔츕츖츗츘츙츚츛츜츝츞츟츠측츢츣츤츥츦츧츨츩츪츫츬츭츮츯츰츱츲츳츴층츶츷츸츹츺츻츼츽츾츿칀칁칂칃칄칅칆칇칈칉칊칋칌칍칎칏칐칑칒칓칔칕칖칗치칙칚칛친칝칞칟칠칡칢칣칤칥칦칧침칩칪칫칬칭칮칯칰칱칲칳카칵칶칷칸칹칺칻칼칽칾칿캀캁캂캃캄캅캆캇캈캉캊캋캌캍캎캏캐캑캒캓캔캕캖캗캘캙캚캛캜캝캞캟캠캡캢캣캤캥캦캧캨캩캪캫캬캭캮캯캰캱캲캳캴캵캶캷캸캹캺캻캼캽캾캿컀컁컂컃컄컅컆컇컈컉컊컋컌컍컎컏컐컑컒컓컔컕컖컗컘컙컚컛컜컝컞컟컠컡컢컣커컥컦컧컨컩컪컫컬컭컮컯컰컱컲컳컴컵컶컷컸컹컺컻컼컽컾컿케켁켂켃켄켅켆켇켈켉켊켋켌켍켎켏켐켑켒켓켔켕켖켗켘켙켚켛켜켝켞켟켠켡켢켣켤켥켦켧켨켩켪켫켬켭켮켯켰켱켲켳켴켵켶켷켸켹켺켻켼켽켾켿콀콁콂콃콄콅콆콇콈콉콊콋콌콍콎콏콐콑콒콓코콕콖콗콘콙콚콛콜콝콞콟콠콡콢콣콤콥콦콧콨콩콪콫콬콭콮콯콰콱콲콳콴콵콶콷콸콹콺콻콼콽콾콿쾀쾁쾂쾃쾄쾅쾆쾇쾈쾉쾊쾋쾌쾍쾎쾏쾐쾑쾒쾓쾔쾕쾖쾗쾘쾙쾚쾛쾜쾝쾞쾟쾠쾡쾢쾣쾤쾥쾦쾧쾨쾩쾪쾫쾬쾭쾮쾯쾰쾱쾲쾳쾴쾵쾶쾷쾸쾹쾺쾻쾼쾽쾾쾿쿀쿁쿂쿃쿄쿅쿆쿇쿈쿉쿊쿋쿌쿍쿎쿏쿐쿑쿒쿓쿔쿕쿖쿗쿘쿙쿚쿛쿜쿝쿞쿟쿠쿡쿢쿣쿤쿥쿦쿧쿨쿩쿪쿫쿬쿭쿮쿯쿰쿱쿲쿳쿴쿵쿶쿷쿸쿹쿺쿻쿼쿽쿾쿿퀀퀁퀂퀃퀄퀅퀆퀇퀈퀉퀊퀋퀌퀍퀎퀏퀐퀑퀒퀓퀔퀕퀖퀗퀘퀙퀚퀛퀜퀝퀞퀟퀠퀡퀢퀣퀤퀥퀦퀧퀨퀩퀪퀫퀬퀭퀮퀯퀰퀱퀲퀳퀴퀵퀶퀷퀸퀹퀺퀻퀼퀽퀾퀿큀큁큂큃큄큅큆큇큈큉큊큋큌큍큎큏큐큑큒큓큔큕큖큗큘큙큚큛큜큝큞큟큠큡큢큣큤큥큦큧큨큩큪큫크큭큮큯큰큱큲큳클큵큶큷큸큹큺큻큼큽큾큿킀킁킂킃킄킅킆킇킈킉킊킋킌킍킎킏킐킑킒킓킔킕킖킗킘킙킚킛킜킝킞킟킠킡킢킣키킥킦킧킨킩킪킫킬킭킮킯킰킱킲킳킴킵킶킷킸킹킺킻킼킽킾킿타탁탂탃탄탅탆탇탈탉탊탋탌탍탎탏탐탑탒탓탔탕탖탗탘탙탚탛태택탞탟탠탡탢탣탤탥탦탧탨탩탪탫탬탭탮탯탰탱탲탳탴탵탶탷탸탹탺탻탼탽탾탿턀턁턂턃턄턅턆턇턈턉턊턋턌턍턎턏턐턑턒턓턔턕턖턗턘턙턚턛턜턝턞턟턠턡턢턣턤턥턦턧턨턩턪턫턬턭턮턯터턱턲턳턴턵턶턷털턹턺턻턼턽턾턿텀텁텂텃텄텅텆텇텈텉텊텋테텍텎텏텐텑텒텓텔텕텖텗텘텙텚텛템텝텞텟텠텡텢텣텤텥텦텧텨텩텪텫텬텭텮텯텰텱텲텳텴텵텶텷텸텹텺텻텼텽텾텿톀톁톂톃톄톅톆톇톈톉톊톋톌톍톎톏톐톑톒톓톔톕톖톗톘톙톚톛톜톝톞톟토톡톢톣톤톥톦톧톨톩톪톫톬톭톮톯톰톱톲톳톴통톶톷톸톹톺톻톼톽톾톿퇀퇁퇂퇃퇄퇅퇆퇇퇈퇉퇊퇋퇌퇍퇎퇏퇐퇑퇒퇓퇔퇕퇖퇗퇘퇙퇚퇛퇜퇝퇞퇟퇠퇡퇢퇣퇤퇥퇦퇧퇨퇩퇪퇫퇬퇭퇮퇯퇰퇱퇲퇳퇴퇵퇶퇷퇸퇹퇺퇻퇼퇽퇾퇿툀툁툂툃툄툅툆툇툈툉툊툋툌툍툎툏툐툑툒툓툔툕툖툗툘툙툚툛툜툝툞툟툠툡툢툣툤툥툦툧툨툩툪툫투툭툮툯툰툱툲툳툴툵툶툷툸툹툺툻툼툽툾툿퉀퉁퉂퉃퉄퉅퉆퉇퉈퉉퉊퉋퉌퉍퉎퉏퉐퉑퉒퉓퉔퉕퉖퉗퉘퉙퉚퉛퉜퉝퉞퉟퉠퉡퉢퉣퉤퉥퉦퉧퉨퉩퉪퉫퉬퉭퉮퉯퉰퉱퉲퉳퉴퉵퉶퉷퉸퉹퉺퉻퉼퉽퉾퉿튀튁튂튃튄튅튆튇튈튉튊튋튌튍튎튏튐튑튒튓튔튕튖튗튘튙튚튛튜튝튞튟튠튡튢튣튤튥튦튧튨튩튪튫튬튭튮튯튰튱튲튳튴튵튶튷트특튺튻튼튽튾튿틀틁틂틃틄틅틆틇틈틉틊틋틌틍틎틏틐틑틒틓틔틕틖틗틘틙틚틛틜틝틞틟틠틡틢틣틤틥틦틧틨틩틪틫틬틭틮틯티틱틲틳틴틵틶틷틸틹틺틻틼틽틾틿팀팁팂팃팄팅팆팇팈팉팊팋파팍팎팏판팑팒팓팔팕팖팗팘팙팚팛팜팝팞팟팠팡팢팣팤팥팦팧패팩팪팫팬팭팮팯팰팱팲팳팴팵팶팷팸팹팺팻팼팽팾팿퍀퍁퍂퍃퍄퍅퍆퍇퍈퍉퍊퍋퍌퍍퍎퍏퍐퍑퍒퍓퍔퍕퍖퍗퍘퍙퍚퍛퍜퍝퍞퍟퍠퍡퍢퍣퍤퍥퍦퍧퍨퍩퍪퍫퍬퍭퍮퍯퍰퍱퍲퍳퍴퍵퍶퍷퍸퍹퍺퍻퍼퍽퍾퍿펀펁펂펃펄펅펆펇펈펉펊펋펌펍펎펏펐펑펒펓펔펕펖펗페펙펚펛펜펝펞펟펠펡펢펣펤펥펦펧펨펩펪펫펬펭펮펯펰펱펲펳펴펵펶펷편펹펺펻펼펽펾펿폀폁폂폃폄폅폆폇폈평폊폋폌폍폎폏폐폑폒폓폔폕폖폗폘폙폚폛폜폝폞폟폠폡폢폣폤폥폦폧폨폩폪폫포폭폮폯폰폱폲폳폴폵폶폷폸폹폺폻폼폽폾폿퐀퐁퐂퐃퐄퐅퐆퐇퐈퐉퐊퐋퐌퐍퐎퐏퐐퐑퐒퐓퐔퐕퐖퐗퐘퐙퐚퐛퐜퐝퐞퐟퐠퐡퐢퐣퐤퐥퐦퐧퐨퐩퐪퐫퐬퐭퐮퐯퐰퐱퐲퐳퐴퐵퐶퐷퐸퐹퐺퐻퐼퐽퐾퐿푀푁푂푃푄푅푆푇푈푉푊푋푌푍푎푏푐푑푒푓푔푕푖푗푘푙푚푛표푝푞푟푠푡푢푣푤푥푦푧푨푩푪푫푬푭푮푯푰푱푲푳푴푵푶푷푸푹푺푻푼푽푾푿풀풁풂풃풄풅풆풇품풉풊풋풌풍풎풏풐풑풒풓풔풕풖풗풘풙풚풛풜풝풞풟풠풡풢풣풤풥풦풧풨풩풪풫풬풭풮풯풰풱풲풳풴풵풶풷풸풹풺풻풼풽풾풿퓀퓁퓂퓃퓄퓅퓆퓇퓈퓉퓊퓋퓌퓍퓎퓏퓐퓑퓒퓓퓔퓕퓖퓗퓘퓙퓚퓛퓜퓝퓞퓟퓠퓡퓢퓣퓤퓥퓦퓧퓨퓩퓪퓫퓬퓭퓮퓯퓰퓱퓲퓳퓴퓵퓶퓷퓸퓹퓺퓻퓼퓽퓾퓿픀픁픂픃프픅픆픇픈픉픊픋플픍픎픏픐픑픒픓픔픕픖픗픘픙픚픛픜픝픞픟픠픡픢픣픤픥픦픧픨픩픪픫픬픭픮픯픰픱픲픳픴픵픶픷픸픹픺픻피픽픾픿핀핁핂핃필핅핆핇핈핉핊핋핌핍핎핏핐핑핒핓핔핕핖핗하학핚핛한핝핞핟할핡핢핣핤핥핦핧함합핪핫핬항핮핯핰핱핲핳해핵핶핷핸핹핺핻핼핽핾핿햀햁햂햃햄햅햆햇했행햊햋햌햍햎햏햐햑햒햓햔햕햖햗햘햙햚햛햜햝햞햟햠햡햢햣햤향햦햧햨햩햪햫햬햭햮햯햰햱햲햳햴햵햶햷햸햹햺햻햼햽햾햿헀헁헂헃헄헅헆헇허헉헊헋헌헍헎헏헐헑헒헓헔헕헖헗험헙헚헛헜헝헞헟헠헡헢헣헤헥헦헧헨헩헪헫헬헭헮헯헰헱헲헳헴헵헶헷헸헹헺헻헼헽헾헿혀혁혂혃현혅혆혇혈혉혊혋혌혍혎혏혐협혒혓혔형혖혗혘혙혚혛혜혝혞혟혠혡혢혣혤혥혦혧혨혩혪혫혬혭혮혯혰혱혲혳혴혵혶혷호혹혺혻혼혽혾혿홀홁홂홃홄홅홆홇홈홉홊홋홌홍홎홏홐홑홒홓화확홖홗환홙홚홛활홝홞홟홠홡홢홣홤홥홦홧홨황홪홫홬홭홮홯홰홱홲홳홴홵홶홷홸홹홺홻홼홽홾홿횀횁횂횃횄횅횆횇횈횉횊횋회획횎횏횐횑횒횓횔횕횖횗횘횙횚횛횜횝횞횟횠횡횢횣횤횥횦횧효횩횪횫횬횭횮횯횰횱횲횳횴횵횶횷횸횹횺횻횼횽횾횿훀훁훂훃후훅훆훇훈훉훊훋훌훍훎훏훐훑훒훓훔훕훖훗훘훙훚훛훜훝훞훟훠훡훢훣훤훥훦훧훨훩훪훫훬훭훮훯훰훱훲훳훴훵훶훷훸훹훺훻훼훽훾훿휀휁휂휃휄휅휆휇휈휉휊휋휌휍휎휏휐휑휒휓휔휕휖휗휘휙휚휛휜휝휞휟휠휡휢휣휤휥휦휧휨휩휪휫휬휭휮휯휰휱휲휳휴휵휶휷휸휹휺휻휼휽휾휿흀흁흂흃흄흅흆흇흈흉흊흋흌흍흎흏흐흑흒흓흔흕흖흗흘흙흚흛흜흝흞흟흠흡흢흣흤흥흦흧흨흩흪흫희흭흮흯흰흱흲흳흴흵흶흷흸흹흺흻흼흽흾흿  !"#$%%%%%%%%%%%%%%%%%%%%%%%%%%%%힀힁힂힃힄힅힆힇히힉힊힋힌힍힎힏힐힑힒힓힔힕힖힗힘힙힚힛힜힝힞힟힠힡힢힣   יִײַשׁשׂשּׁשּׂאַאָאּבּגּדּהּוּזּטּיּךּכּלּמּ נּסּףּפּצּקּרּשּתּוֹבֿכֿפֿ                   !"#$%&'(        A  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIjcodings-1.0.58/resources/tables/Transcoder_Utf8Mac_WordArray.bin000066400000000000000000004257641433325321700250350ustar00rootroot00000000000000AAAAAACEEEEIIIINOOOOOUUUUYaaaaaaceeeeiiiinooooouuuuyyBAaAaAaCcCcCcCcDdEeEeEeEeEeGgGgGgGgHhIiIiIiIiIJjKkLlLlLlNnNnNnOoOoOoRrRrRrSsSsSsSsTtTtUuUuUuUuUuUuWwYyYZzZzZzOoUuAaIiOoUucdfgijlmoprsuvQGgKkOowyz{ьjGgNn}~QJAaAaEeEeIiIiOoOoRrRrUuUuSsTtHhAaEeOoYy;z`QđQɑQΑQQIQQQQ !43467Q89;@AQBCEFQGHJKQLMOPQQRTUQVWYZQ[\hnoqrQsxQ$Q$@QQ{\ϑQZQQ+m >?A S <fgikQm VPoqQstQQ QQQ 4QƑQ T4Hl / Q\AaBbBbBbDdDdDdDdDdEeEeFfGgHhHhHhHhHhIiKkKkKkLlLlLlMm pMmMmNnNnNnNn    PpPpRrRrRrSsSsTtTtTtTtUuUuUu!"$%VvVv |WwWwWwWwWwXxXxYyZzZzZzhtwy7AaAa8:Q;=Q>@QACQDFQGIQJLQMOQPRQSUQEeEeEeVXQ jQkmQnpQqsQtщIiIiOoOovQwyQz|Q}QQQQQQQѣUuUuQQQQQрYyYyYyYy g QQQȑQQՑQؑۑQQQQQQQ  Q  Q |%Q&')+Q-.01Q3468Q9:<>Q@ACEQFHQJKMNQPQSUQWXZ[Q]^`bQdeghQijlmQS |QQQQƑQϑבQQQQQH    QQQQ Q!"$Q%'Q()+-Q./1245Q67`9:<=?@BCQHh t | t t@@ HegQijlnQpqsuQwxz|Q~QQTXQQQEQ̑QӑQڑQQQ hpQQQ  QQQQ!Q#&Q(+Q-0Q25Q7:Q<?QACFHKMPRUWZ\_adfiknpsuxz}QQQ QQQQQQQQQQQБՑڑߑ  QQQ"Q$'Q),Q.1Q36Q 8;Q=@QBEQGJQLOQQTQVX[]`begjloqtvy{~QQQQQQQQQQQ QQQ  !$&(Q*-Q/2Q47Q9AQCFQHKQMPQRUQWZQ\_QadQfiQkmpr uwz|QQQQQQQQQQQQQQ              " % ' * , / 1 4 6 9 ; =Q ? BQ D GQ I LQ N QQ S VQ X [Q ] `Q b eQ g jQ l oQ q tQ v yQ { ~Q               Ñ  Q Q Q Q Q Q Q Q Q Q Q Q  Q  Q         ! # & ( + - 0 2 5 7 : < ? A D F I K N  P RQ T WQ Y \Q ^ aQ c fQ h kQ m pQ r uQ w zQ | Q Q Q Q Q          đ  ɑ  Α  ӑ  ؑ  Q Q Q  Q Q Q Q Q  Q Q  Q  Q  Q  Q " $ ' ) , . 1 3 6 8 ; = @ B E G J L O Q T V Y [ ^ ` c e gQ i lQ n qQ s vQ x {Q } Q Q Q  Q Q Q Q Q Q      ő  ʑ  ϑ  ԑ  ّ  ޑ     Q Q Q Q  Q Q  Q  Q  Q  !Q # &Q (  +Q - 0Q 2 5Q 7 9 < > A C F H K M P R U W Z \ _ a d f i k n p s u x z |Q ~ Q Q Q Q Q Q Q Q Q Q Q Q Q  Ƒ   ˑ  Б  Ց  ڑ  ߑ           Q Q  Q  Q  Q  "Q $ 'Q ) ,Q . 1Q 3 6Q 8 ;Q = @Q B EQ G JQ L N Q S V X [ ] ` b e  g j l o q t v y { ~    Q Q Q Q Q Q Q Q Q Q Q Q Q Q ֑  ۑ           Q #Q%(Q*-Q/2Q47Q9AQCFQHKQMPQRUQWZQ\_Qacfhkmpruwz| (QQQQQQQQQQQQQQ   "%'*,/03Q58Q:=Q? 4BQDGQILQNQQSVQX[Q]`QbeQgjQloQqtQvx{}QQQQQQQQ !@ ,!8"D?"LQQQQQ Q Q "%'*,/1469;>@CEHJMORTVQX[Q]`QbeQgjQloQqtQvyQ{~QQQQ "QQÑȑ͑ґבܑQQQQQQQQ Q QQQQ!$Q&(+ #-0257:<?ADFIKNPSUXZ]_bdgikQmpQruQwzQ|QQQQQQQQQQđɑ $ΑӑؑݑQQQQ  QQQQ Q"%Q'*Q,/Q14Q69Q;=@BEGJLOQTVY[^`ceh %jmortwy|~QQQQQQQQQQQQQQőʑϑԑّޑ &   QQQQ!Q#&Q(+Q-0Q25Q7:Q<?QADQFIQKNQPRUWZ\_adfiknpsuxz}QQQQ 'QQQQQQQQQQڑߑ  "Q$'Q),Q.1Q36Q8;Q=@QB (EQGJQLOQQTQVYQ[^Q`cQegjloqtvy{~QQQQQQQQQQQQ )QQ  !$&)+.0347Q9AQCFQHKQMPQRUQWZQ\_QadQfiQknQpsQuxQz| *QQQQQQQQQQQQQQ   , "%'*,/1469;>@CEHILQNQQSVQX[Q]`QbeQgjQloQqtQvyQ{~QQQQ -Ñȑ͑ґQQQQQQQQQQQ Q QQ!#&(+-0257:<?ADFIKNPSUXZ . ]^aQcfQhkQmpQruQwzQ|QQQQQQQQđɑΑӑؑݑQQQQ /,QQQ  QQQQ Q"%Q'*Q,.1368;=@BEGJLOQTVY[^`cehjmorsvQx{Q}QQQQQ 08QQQQQQQőʑϑԑّޑQQQ  QQQQ!Q#&Q(+Q-0Q25Q 1D7:Q<?QACFHKMPRUWZ\_adfiknpsuxz}QQQQQQQQQQQQQQБ 2PՑڑߑ  QQQ"Q$'Q),Q.1Q36Q8;Q=@QBEQGJQLOQQTQVX[]`begjloq 3\tvy{~QQQQQQQQQQQQQQ   4h!$&(Q*-Q/2Q47Q9AQCFQHKQMPQRUQWZQ\_QadQfiQkmpruwz| 5tQQQQQQQQQQQQQQ   "%'*,/1469;=Q?BQDGQILQ 6NQQSVQX[Q]`QbeQgjQloQqtQvyQ{~QÑQQQQQQQ 7QQQQQQ Q !#&(+-0257:<?ADFIKNPRQTWQY\Q^aQcfQhkQmpQruQwzQ|QQQ 8QQđɑΑӑؑQQQQQQQQQ  QQQQ Q"$' 9),.1368;=@BEGJLOQTVY[^`cegQilQnqQsvQx{Q}QQQQQQQQQő :ʑϑԑّޑQQQQQ  QQQQ!Q#&Q(+Q-0Q25Q79<>ACFHKMPRUWZ\_ad ;fiknpsuxz|Q~QQQQQQQQQQQQQƑˑБՑڑߑ   <   Q Q  Q  Q  Q  "Q $ 'Q ) ,Q . 1Q 3 6Q 8 ;Q = @Q B EQ G JQ L N Q S V X [ ] ` b e g j l o q t v y { ~    Q Q Q Q = Q Q Q Q Q Q Q Q Q Q ֑  ۑ        !!!!! ! !!!!!!!Q! !#Q!%!(Q!*!-Q!/!2Q!4!7Q!9! >!AQ!C!FQ!H!KQ!M!PQ!R!UQ!W!ZQ!\!_Q!a!c!f!h!k!m!p!r!u!w!z!|!!!!!!!!!!!!!!!!!Q!!Q!!Q!!Q!!Q!!Q!!Q!!Q!!Q!!Q!!Q!!Q ?!!Q!!Q!!!!!!!!!!"""" " """""""" """%"'"*","/"0"3Q"5"8Q":"=Q"?"BQ"D"GQ"I"LQ"N"QQ"S"VQ"X"[Q"]"`Q"b"eQ"g"jQ"l"oQ"q"tQ"v"x"{ @"}"""""""""""""""""""""""""Q""Q""Q""Q""Q""Q""Q""Q""Q""Q""Q""Q""Q""Q"##### # ##### B###!###&#(#+#-#0#2#5#7#:#<#?#A#D#E#HQ#J#MQ#O#RQ#T#WQ#Y#\Q#^#aQ#c#fQ#h#kQ#m#pQ#r#uQ#w#zQ#|#Q##Q##Q################### C#####đ##ɑ##Α#Q##Q##Q##Q##Q##Q##Q##Q##Q##Q#$Q$$Q$ $ Q$$Q$$$$$$$"$$$'$)$,$.$1$3$6$8$;$=$@$B$E$G$J$L$O$Q$T$V D$Y$Z$]Q$_$bQ$d$gQ$i$lQ$n$qQ$s$vQ$x${Q$}$Q$$Q$$Q$$Q$$Q$$Q$$Q$$$$$$$$$$$$$$$$ő$$ʑ$$ϑ$$ԑ$$ّ$$ޑ$$$Q$$Q$$Q$$Q E($$Q$$Q%%Q%%Q% % Q%%Q%%Q%%Q%%!Q%#%&Q%(%*%-%/%2%4%7%9%<%>%A%C%F%H%K%M%P%R%U%W%Z%\%_%a%d%f%i%k%n%o%rQ%t%wQ%y%|Q%~%Q%%Q%%Q%%Q% F4%Q%%Q%%Q%%Q%%Q%%Q%%Q%%%%%%%%Ƒ%%ˑ%%Б%%Ց%%ڑ%%ߑ%%%%%%%%%%%Q%%Q&&Q&& Q& &Q&&Q&&Q&&Q&&"Q&$&'Q&)&,Q&.&1Q G@&3&6Q&8&;Q&=&?&B&D&G&I&L&N&Q&S&V&X&[&]&`&b&e&g&j&l&o&q&t&v&y&{&~&&&&Q&&Q&&Q&&Q&&Q&&Q&&Q&&Q&&Q&&Q&&Q&&Q&&Q&&Q&&̑& HL&ё&&֑&&ۑ&&&&&&&&&&&&&&''''' ' 'Q''Q''Q''Q' '#Q'%'(Q'*'-Q'/'2Q'4'7Q'9''AQ'C'FQ'H'KQ'M'PQ'R'T'W'Y'\'^'a'c'f'h'k'm IX'p'r'u'w'z'|'''''''''''''Q''Q''Q''Q''Q''Q''Q''Q''Q''Q''Q''Q''Q''Q''''''''''''''(((( (  Jd(((((((( ("($Q(&()Q(+(.Q(0(3Q(5(8Q(:(=Q(?(BQ(D(GQ(I(LQ(N(QQ(S(VQ(X([Q(](`Q(b(eQ(g(i(l(n(q(s(v(x({(}(((((((((((((((((( Kp(((Q((Q((Q((Q((Q((Q((Q((Q((Q((Q((Q((Q((Q((Q((((())))) ) ))))))))!)#)&)()+)-)0)2)5)7)9Q);)>Q)@)CQ)E)HQ L|)J)MQ)O)RQ)T)WQ)Y)\Q)^)aQ)c)fQ)h)kQ)m)pQ)r)uQ)w)zQ)|)~)))))))))))))))))))))))))))))Q))Q))Q))Q))Q))Q))Q) M)Q))Q))Q))Q))Q)*Q**Q* * *********"*$*'*)*,*.*1*3*6*8*;*=*@*B*E*G*J*L*NQ*P*SQ*U*XQ*Z*]Q*_*bQ*d*gQ*i*lQ*n*qQ*s*vQ*x*{Q*}*Q**Q N**Q**Q**********************ő**ʑ**ϑ**ԑ***Q**Q**Q**Q**Q**Q**Q**Q++Q++Q+ + Q++Q++Q++Q++ +# O+%+(+*+-+/+2+4+7+9+<+>+A+C+F+H+K+M+P+R+U+W+Z+\+_+a+cQ+e+hQ+j+mQ+o+rQ+t+wQ+y+|Q+~+Q++Q++Q++Q++Q++Q++Q++Q++++++++++++ P++Ƒ++ˑ++Б++Ց++ڑ++ߑ+++++++Q++Q++Q++Q,,Q,, Q, ,Q,,Q,,Q,,Q,,"Q,$,'Q,),,Q,.,1Q,3,5,8,:,=,?,B,D,G,I,L,N,Q,S,V,X,[,],` Q,b,e,g,j,l,o,q,t,v,xQ,z,}Q,,Q,,Q,,Q,,Q,,Q,,Q,,Q,,Q,,Q,,Q,,Q,,Q,,,,‘,,Ǒ,,̑,,ё,,֑,,ۑ,,,,,,,,,,,,,, R---Q-- Q- -Q--Q--Q--Q- -#Q-%-(Q-*--Q-/-2Q-4-7Q-9--AQ-C-FQ-H-J-M-O-R-T-W-Y-\-^-a-c-f-h-k-m-p-r-u-w-z-|-------Q--Q--Q--Q S--Q--Q--Q--Q--Q--Q--Q--Q--Q--Q--ґ--ב--ܑ--------------.... . ......Q..Q.!.$Q.&.)Q.+..Q.0.3Q.5.8Q.: T.=Q.?.BQ.D.GQ.I.LQ.N.QQ.S.VQ.X.[Q.]._.b.d.g.i.l.n.q.s.v.x.{.}...............Q..Q..Q..Q..Q..Q..Q..Q..Q..Q..Q..Q U..Q..Q...........///// / ////////!/#/&/(/+/,//Q/1/4Q/6/9Q/;/>Q/@/CQ/E/HQ/J/MQ/O/RQ/T/WQ/Y/\Q/^/aQ/c/fQ/h/kQ/m/pQ/r/t/w V/y/|/~///////////////////////Q//Q//Q//Q//Q//Q//Q//Q//Q//Q//Q//Q//Q//Q///0000 0 0000 X00000"0$0'0)0,0.010306080;0=0@0A0DQ0F0IQ0K0NQ0P0SQ0U0XQ0Z0]Q0_0bQ0d0gQ0i0lQ0n0qQ0s0vQ0x0{Q0}0Q00Q0000000000000000000 Y 0000000ő00ʑ0Q00Q00Q00Q00Q00Q00Q00Q00Q00Q00Q11Q11Q1 1 Q11111111 1#1%1(1*1-1/121417191<1>1A1C1F1H1K1M1P1R Z1U1V1YQ1[1^Q1`1cQ1e1hQ1j1mQ1o1rQ1t1wQ1y1|Q1~1Q11Q11Q11Q11Q11Q111111111111111111Ƒ11ˑ11Б11Ց11ڑ11ߑ1Q11Q11Q11Q [$11Q11Q11Q22Q22 Q2 2Q22Q22Q22Q22"Q2$2&2)2+2.202325282:2=2?2B2D2G2I2L2N2Q2S2V2X2[2]2`2b2e2g2j2k2nQ2p2sQ2u2xQ2z2}Q22Q22Q22Q2 \02Q22Q22Q22Q22Q22Q22Q22222222‘22Ǒ22̑22ё22֑22ۑ22222222222Q22Q23Q33Q33 Q3 3Q33Q33Q33Q3 3#Q3%3(Q3*3-Q ]<3/32Q3437Q393;3>3@3C3E3H3J3M3O3R3T3W3Y3\3^3a3c3f3h3k3m3p3r3u3w3z3|333Q33Q33Q33Q33Q33Q33Q33Q33Q33Q33Q33Q33Q33Q33ȑ3 ^H3͑33ґ33ב33ܑ333333333333334444 4 Q4 4Q44Q44Q44Q4!4$Q4&4)Q4+4.Q4043Q4548Q4:4=Q4?4BQ4D4GQ4I4LQ4N4P4S4U4X4Z4]4_4b4d4g4i _T4l4n4q4s4v4x4{4}44444444444Q44Q44Q44Q44Q44Q44Q44Q44Q44Q44Q44Q44Q44Q44ݑ44444444444445555 ``5 5 55555555 Q5"5%Q5'5*Q5,5/Q5154Q5659Q5;5>Q5@5CQ5E5HQ5J5MQ5O5RQ5T5WQ5Y5\Q5^5aQ5c5e5h5j5m5o5r5t5w5y5|5~5555555555555555 al555Q55Q55Q55Q55Q55Q55Q55Q55Q55Q55Q55Q55Q55Q55555556666 6 666666666"6$6'6)6,6.616365Q676:Q6<6?Q6A6DQ bx6F6IQ6K6NQ6P6SQ6U6XQ6Z6]Q6_6bQ6d6gQ6i6lQ6n6qQ6s6vQ6x6z6}6666666666666666666666666666Q66Q66Q66Q66Q66Q66Q6 c6Q66Q66Q66Q66Q66Q77Q777 7 77777777 7#7%7(7*7-7/727477797<7>7A7C7F7H7JQ7L7OQ7Q7TQ7V7YQ7[7^Q7`7cQ7e7hQ7j7mQ7o7rQ7t7wQ7y7|Q7~7Q d#$%&'()*,- ./$001<2H3T4`5l6x789:;<=>?@ACDE F,G8HDIPJ\KhLtMNOPQRSTUVWYZ[\(]4^@_L`Xadbpc|de e77Q77Q777777777777777777777777Ƒ77ˑ77Б777Q77Q77Q77Q77Q77Q77Q77Q77Q88Q88 Q8 8Q88Q88Q888 f8!8$8&8)8+8.808385888:8=8?8B8D8G8I8L8N8Q8S8V8X8[8]8_Q8a8dQ8f8iQ8k8nQ8p8sQ8u8xQ8z8}Q88Q88Q88Q88Q88Q88Q88Q888888888888 g88‘88Ǒ88̑88ё88֑88ۑ8888888Q88Q88Q88Q89Q99Q99 Q9 9Q99Q99Q99Q9 9#Q9%9(Q9*9-Q9/919496999;9>9@9C9E9H9J9M9O9R9T9W9Y9\ h9^9a9c9f9h9k9m9p9r9tQ9v9yQ9{9~Q99Q99Q99Q99Q99Q99Q99Q99Q99Q99Q99Q999999Ñ99ȑ99͑99ґ99ב99ܑ999999999999 i99:Q::Q:: Q: :Q::Q::Q::Q:!:$Q:&:)Q:+:.Q:0:3Q:5:8Q:::=Q:?:BQ:D:F:I:K:N:P:S:U:X:Z:]:_:b:d:g:i:l:n:q:s:v:x:{:}:::::Q::Q::Q::Q j::Q::Q::Q::Q::Q::Q::Q::Q::Q::Q::Α::ӑ::ؑ::ݑ:::::::::::::;;;;; ; ;;;;Q;;Q;; Q;";%Q;';*Q;,;/Q;1;4Q;6 k;9Q;;;>Q;@;CQ;E;HQ;J;MQ;O;RQ;T;WQ;Y;[;^;`;c;e;h;j;m;o;r;t;w;y;|;~;;;;;;;;;;;;;Q;;Q;;Q;;Q;;Q;;Q;;Q;;Q;;Q;;Q;;Q;;Q l;;Q;;Q;;;;;;;;;;;;;<<<< < <<<<<<<<<"<$<'<(<+Q<-<0Q<2<5Q<7<:Q<<>Q>> Q> > >>>>>>>>!>$>&>)>+>.>0>3>5>8>:>=>?>B>D>G>I>L>N q >Q>R>UQ>W>ZQ>\>_Q>a>dQ>f>iQ>k>nQ>p>sQ>u>xQ>z>}Q>>Q>>Q>>Q>>Q>>Q>>>>>>>>>>>>>>>>>>‘>>Ǒ>>̑>>ё>>֑>>ۑ>Q>>Q>>Q>>Q r,>>Q>>Q>>Q>?Q??Q?? Q? ?Q??Q??Q??Q? ?"?%?'?*?,?/?1?4?6?9?;?>?@?C?E?H?J?M?O?R?T?W?Y?\?^?a?c?f?g?jQ?l?oQ?q?tQ?v?yQ?{?~Q??Q??Q? s8?Q??Q??Q??Q??Q??Q??Q??????????Ñ??ȑ??͑??ґ??ב??ܑ?????????Q??Q??Q?@Q@@Q@@ Q@ @Q@@Q@@Q@@Q@!@$Q@&@)Q tD@+@.Q@0@3Q@5@7@:@<@?@A@D@F@I@K@N@P@S@U@X@Z@]@_@b@d@g@i@l@n@q@s@v@x@{@|@Q@@Q@@Q@@Q@@Q@@Q@@Q@@Q@@Q@@Q@@Q@@Q@@Q@@Q@@đ@ uP@ɑ@@Α@@ӑ@@ؑ@@ݑ@@@@@@@@@@@@@AAAAQA A QAAQAAQAAQAA QA"A%QA'A*QA,A/QA1A4QA6A9QA;A>QA@ACQAEAHQAJALAOAQATAVAYA[A^A`AcAe v\AhAjAmAoArAtAwAyA|A~AAAAAAAAAQAAQAAQAAQAAQAAQAAQAAQAAQAAQAAQAAQAAQAAQAAّAAޑAAAAAAAAAAAAABB whBB B BBBBBBBQBB!QB#B&QB(B+QB-B0QB2B5QB7B:QB<B?QBABDQBFBIQBKBNQBPBSQBUBXQBZB]QB_BaBdBfBiBkBnBpBsBuBxBzB}BBBBBBBBBBBBBBB xtBBBQBBQBBQBBQBBQBBQBBQBBQBBQBBQBBQBBQBBQBBQBBBBBBBBCCCCC C CCCCCCCC C#C%C(C*C-C/C1QC3C6QC8C;QC=C@Q yCBCEQCGCJQCLCOQCQCTQCVCYQC[C^QC`CcQCeChQCjCmQCoCrQCtCvCyC{C~CCCCCCCCCCCCCCCCCCCCCCCCCCQCCQCCQCCQCCQCCQCCQC zCQCCQCCQCCQCCQCCQCCQDDDDD D DDDDDDDD!D$D&D)D+D.D0D3D5D8D:D=D?DBDDDFQDHDKQDMDPQDRDUQDWDZQD\D_QDaDdQDfDiQDkDnQDpDsQDuDxQDzD}Q {DDQDDQDDDDDDDDDDDDDDDDDDDDDDDD‘DDǑDD̑DDDQDDQDDQDDQDDQDDQDDQDDQDDQDEQEEQEE QE EQEEQEEE |EE E"E%E'E*E,E/E1E4E6E9E;E>E@ECEEEHEJEMEOERETEWEYE[QE]E`QEbEeQEgEjQElEoQEqEtQEvEyQE{E~QEEQEEQEEQEEQEEQEEQEEEEEEEEEEEE }EEEEÑEEȑEE͑EEґEEבEEܑEEEEEQEEQEEQEEQEEQEFQFFQFF QF FQFFQFFQFFQF!F$QF&F)QF+F-F0F2F5F7F:F<F?FAFDFFFIFKFNFPFSFUFX ~FZF]F_FbFdFgFiFlFnFpQFrFuQFwFzQF|FQFFQFFQFFQFFQFFQFFQFFQFFQFFQFFQFFFFFFFFđFFɑFFΑFFӑFFؑFFݑFFFFFFFFFF FFFQFGQGGQG G QGGQGGQGGQGG QG"G%QG'G*QG,G/QG1G4QG6G9QG;G>QG@GBGEGGGJGLGOGQGTGVGYG[G^G`GcGeGhGjGmGoGrGtGwGyG|G~GGGQGGQGGQGGQ GGQGGQGGQGGQGGQGGQGGQGGQGGQGGQGGʑGGϑGGԑGGّGGޑGGGGGGGGGGGGGHHHH H HHHQHHQHHQHH!QH#H&QH(H+QH-H0QH2 H5QH7H:QH<H?QHAHDQHFHIQHKHNQHPHSQHUHWHZH\H_HaHdHfHiHkHnHpHsHuHxHzH}HHHHHHHHHHHHQHHQHHQHHQHHQHHQHHQHHQHHQHHQHHQHHQ HHQHHQHHߑHHHHHHHHHHHHIIIII I IIIIIIII I#I$I'QI)I,QI.I1QI3I6QI8I;QI=I@QIBIEQIGIJQILIOQIQITQIVIYQI[I^QI`IcQIeIhQIjIlIo IqItIvIyI{I~IIIIIIIIIIIIIIIIIIIIQIIQIIQIIQIIQIIQIIQIIQIIQIIQIIQIIQIIQIIQIIIIIIJJJJJ J JJJJJJJJ!J$J&J)J+J.J0J3J5J8J9JJAQJCJFQJHJKQJMJPQJRJUQJWJZQJ\J_QJaJdQJfJiQJkJnQJpJsQJuJxQJzJ}QJJJJJJJJJJJJJJJJJJJ JJJJJJJJJ‘JQJJQJJQJJQJJQJJQJJQJJQJJQJJQJJQJJQJKQKKQKK K KKKKKKKK K"K%K'K*K,K/K1K4K6K9K;K>K@KCKEKHKJ KMKNKQQKSKVQKXK[QK]K`QKbKeQKgKjQKlKoQKqKtQKvKyQK{K~QKKQKKQKKQKKQKKKKKKKKKKKKKKKKKKKKÑKKȑKK͑KKґKKבKQKKQKKQKKQ (KKQKKQKKQKKQKLQLLQLL QL LQLLQLLQLLL!L#L&L(L+L-L0L2L5L7L:L<L?LALDLFLILKLNLPLSLULXLZL]L_LbLcLfQLhLkQLmLpQLrLuQLwLzQL|LQLLQL 4LQLLQLLQLLQLLQLLQLLQLLLLLLLLLLLLđLLɑLLΑLLӑLLؑLLݑLLLLLLLQLLQLLQLLQLMQMMQM M QMMQMMQMMQMM QM"M%Q @M'M*QM,M/QM1M3M6M8M;M=M@MBMEMGMJMLMOMQMTMVMYM[M^M`McMeMhMjMmMoMrMtMwMxM{QM}MQMMQMMQMMQMMQMMQMMQMMQMMQMMQMMQMMQMMQMMM LMőMMʑMMϑMMԑMMّMMޑMMMMMMMMMMMMMNNQNNQN N QNNQNNQNNQNN!QN#N&QN(N+QN-N0QN2N5QN7N:QN<N?QNANDQNFNHNKNMNPNRNUNWNZN\N_Na XNdNfNiNkNnNpNsNuNxNzN}NNNNNNNNQNNQNNQNNQNNQNNQNNQNNQNNQNNQNNQNNQNNQNNQNNՑNNڑNNߑNNNNNNNNNNNNO dOOOO O OOOOOQOOQOO"QO$O'QO)O,QO.O1QO3O6QO8O;QO=O@QOBOEQOGOJQOLOOQOQOTQOVOYQO[O]O`ObOeOgOjOlOoOqOtOvOyO{O~OOOOOOOOOOOOO pOOOQOOQOOQOOQOOQOOQOOQOOQOOQOOQOOQOOQOOQOOQOOOOOOOOOOPPPPP P PPPPPPPP!P$P&P)P+P-QP/P2QP4P7QP9PPAQPCPFQPHPKQPMPPQPRPUQPWPZQP\P_QPaPdQPfPiQPkPnQPpPrPuPwPzP|PPPPPPPPPPPPPPPPPPPPPPPPPQPPQPPQPPQPPQPPQPPQP PQPPQPPQPPQPPQPPQPPQPPQQQQ Q QQQQQQQQ Q"Q%Q'Q*Q,Q/Q1Q4Q6Q9Q;Q>Q@QBQQDQGQQIQLQQNQQQQSQVQQXQ[QQ]Q`QQbQeQQgQjQQlQoQQqQtQQvQyQ Q{Q~QQQQQQQQQQQQQQQQQQQQQQQQQQQQQQÑQQȑQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQRQRRQRR QR RQRRR RRRR!R#R&R(R+R-R0R2R5R7R:R<R?RARDRFRIRKRNRPRSRURWQRYR\QR^RaQRcRfQRhRkQRmRpQRrRuQRwRzQR|RQRRQRRQRRQRRQRRQRRRRRRRRRRRR RRRRRRđRRɑRRΑRRӑRRؑRRݑRRRQRRQRRQRRQRRQRRQRSQSSQS S QSSQSSQSSQSS QS"S%QS'S)S,S.S1S3S6S8S;S=S@SBSESGSJSLSOSQST SVSYS[S^S`ScSeShSjSlQSnSqQSsSvQSxS{QS}SQSSQSSQSSQSSQSSQSSQSSQSSQSSQSSSSSSSSSSőSSʑSSϑSSԑSSّSSޑSSSSSSSS SSSQSSQTTQTTQT T QTTQTTQTTQTT!QT#T&QT(T+QT-T0QT2T5QT7T:QT<T>TATCTFTHTKTMTPTRTUTWTZT\T_TaTdTfTiTkTnTpTsTuTxTzT}TTQTTQTTQTTQ TTQTTQTTQTTQTTQTTQTTQTTQTTQTTQTTƑTTˑTTБTTՑTTڑTTߑTTTTTTTTTTTTUUUUU U UQUUQUUQUUQUU"QU$U'QU)U,QU. U1QU3U6QU8U;QU=U@QUBUEQUGUJQULUOQUQUSUVUXU[U]U`UbUeUgUjUlUoUqUtUvUyU{U~UUUUUUUUUUQUUQUUQUUQUUQUUQUUQUUQUUQUUQUUQUUQ UUQUUQUUۑUUUUUUUUUUUUUUVVVVV V VVVVVVVV V#QV%V(QV*V-QV/V2QV4V7QV9VVAQVCVFQVHVKQVMVPQVRVUQVWVZQV\V_QVaVdQVfVhVk VmVpVrVuVwVzV|VVVVVVVVVVVVVVVVVVVQVVQVVQVVQVVQVVQVVQVVQVVQVVQVVQVVQVVQVVQVVVVVVVVWWWW W WWWWWWWW W"W%W'W*W,W/W1W4W5W8QW:W=QW?WBQWDWGQWIWLQWNWQQWSWVQWXW[QW]W`QWbWeQWgWjQWlWoQWqWtQWvWyQW{W}WWWWWWWWWWWWWWWWW WWWWWWWWWWQWWQWWQWWQWWQWWQWWQWWQWWQWWQWWQWWQWWQWXQXXXX X XXXXXXXX!X#X&X(X+X-X0X2X5X7X:X<X?XAXDXF XIXJXMQXOXRQXTXWQXYX\QX^XaQXcXfQXhXkQXmXpQXrXuQXwXzQX|XQXXQXXQXXQXXXXXXXXXXXXXXXXXXXXXXđXXɑXXΑXXӑXQXXQXXQXXQ $XXQXXQXXQXXQXXQXYQYYQY Y QYYQYYQYYYYY"Y$Y'Y)Y,Y.Y1Y3Y6Y8Y;Y=Y@YBYEYGYJYLYOYQYTYVYYY[Y^Y_YbQYdYgQYiYlQYnYqQYsYvQYxY{QY}YQY 0YQYYQYYQYYQYYQYYQYYQYYYYYYYYYYYYYYőYYʑYYϑYYԑYYّYYޑYYYYYQYYQYYQYYQYYQZZQZZQZ Z QZZQZZQZZQZZ!Q <Z#Z&QZ(Z+QZ-Z/Z2Z4Z7Z9Z<Z>ZAZCZFZHZKZMZPZRZUZWZZZ\Z_ZaZdZfZiZkZnZpZsZtZwQZyZ|QZ~ZQZZQZZQZZQZZQZZQZZQZZQZZQZZQZZQZZQZZZ HZZZƑZZˑZZБZZՑZZڑZZߑZZZZZZZZZZZZZQ[[Q[[ Q[ [Q[[Q[[Q[[Q[["Q[$['Q[)[,Q[.[1Q[3[6Q[8[;Q[=[@Q[B[D[G[I[L[N[Q[S[V[X[[[] T[`[b[e[g[j[l[o[q[t[v[y[{[~[[[[[[Q[[Q[[Q[[Q[[Q[[Q[[Q[[Q[[Q[[Q[[Q[[Q[[Q[[Q[[ё[[֑[[ۑ[[[[[[[[[[[[[ `[\\\\\ \ \\\Q\\Q\\Q\ \#Q\%\(Q\*\-Q\/\2Q\4\7Q\9\\AQ\C\FQ\H\KQ\M\PQ\R\UQ\W\Y\\\^\a\c\f\h\k\m\p\r\u\w\z\|\\\\\\\\\\\\ l\\\Q\\Q\\Q\\Q\\Q\\Q\\Q\\Q\\Q\\Q\\Q\\Q\\Q\\Q\\\\\\\\\\\\]]]] ] ]]]]]]]] ]"]%]'])Q]+].Q]0]3Q]5]8Q x]:]=Q]?]BQ]D]GQ]I]LQ]N]QQ]S]VQ]X][Q]]]`Q]b]eQ]g]jQ]l]n]q]s]v]x]{]}]]]]]]]]]]]]]]]]]]]]]]]Q]]Q]]Q]]Q]]Q]]Q]]Q] ]Q]]Q]]Q]]Q]]Q]]Q]]Q]]]^^^^^ ^ ^^^^^^^^!^#^&^(^+^-^0^2^5^7^:^<^>Q^@^CQ^E^HQ^J^MQ^O^RQ^T^WQ^Y^\Q^^^aQ^c^fQ^h^kQ^m^pQ^r^uQ ^w^zQ^|^Q^^^^^^^^^^^^^^^^^^^^^^^^^^^^đ^^^Q^^Q^^Q^^Q^^Q^^Q^^Q^^Q^^Q^^Q^^Q^_Q__Q_ _ Q___ ghijklmop qr$s0t<uHvTw`xlyxz{|}~ ,8DP\ht(4@LXdp| ______"_$_'_)_,_._1_3_6_8_;_=_@_B_E_G_J_L_O_Q_SQ_U_XQ_Z_]Q___bQ_d_gQ_i_lQ_n_qQ_s_vQ_x_{Q_}_Q__Q__Q__Q__Q____________ ________ő__ʑ__ϑ__ԑ__ّ___Q__Q__Q__Q__Q__Q__Q``Q``Q` ` Q``Q``Q``Q``!Q`#`%`(`*`-`/`2`4`7`9`<`>`A`C`F`H`K`M`P `R`U`W`Z`\`_`a`d`f`hQ`j`mQ`o`rQ`t`wQ`y`|Q`~`Q``Q``Q``Q``Q``Q``Q``Q``Q````````````Ƒ``ˑ``Б``Ց``ڑ``ߑ`````` ```Q``Q``QaaQaa Qa aQaaQaaQaaQaa"Qa$a'Qa)a,Qa.a1Qa3a6Qa8a:a=a?aBaDaGaIaLaNaQaSaVaXa[a]a`abaeagajalaoaqatavaya{a}QaaQaaQaaQ aaQaaQaaQaaQaaQaaQaaQaaQaaQaaQaa‘aaǑaȃaaёaa֑aaۑaaaaaaaaaaaaaabbbbb Qb bQbbQbbQbbQb b#Qb%b(Qb* b-Qb/b2Qb4b7Qb9bbAQbCbFQbHbKQbMbObRbTbWbYb\b^babcbfbhbkbmbpbrbubwbzb|bbbbbbbbbQbbQbbQbbQbbQbbQbbQbbQbbQbbQbbQbbQ bbQbbQbbבbbܑbbbbbbbbbbbbbbcccc c ccccccccQc!c$Qc&c)Qc+c.Qc0c3Qc5c8Qc:c=Qc?cBQcDcGQcIcLQcNcQQcScVQcXc[Qc]c`Qcbcdcg ciclcncqcscvcxc{c}cccccccccccccccccQccQccQccQccQccQccQccQccQccQccQccQccQccQcccccccccddd dd d dddddddd!d#d&d(d+d-d0d1d4Qd6d9Qd;d>Qd@dCQdEdHQdJdMQdOdRQdTdWQdYd\Qd^daQdcdfQdhdkQdmdpQdrduQdwdyd|d~ddddddddddddddd ddddddddddQddQddQddQddQddQddQddQddQddQddQddQddQddQdeeee e eeeeeeeee"e$e'e)e,e.e1e3e6e8e;e=e@eB eEeFeIQeKeNQePeSQeUeXQeZe]Qe_ebQedegQeielQeneqQesevQexe{Qe}eQeeQeeQeeeeeeeeeeeeeeeeeeeeeeeeőeeʑeeϑeQeeQeeQeeQ ,eeQeeQeeQeeQeeQeeQffQffQf f QffQffffff f#f%f(f*f-f/f2f4f7f9f<f>fAfCfFfHfKfMfPfRfUfWfZf[f^Qf`fcQfefhQfjfmQfofrQftfwQfyf|Qf~ 8fQffQffQffQffQffQffQffffffffffffffffƑffˑffБffՑffڑffߑfffQffQffQffQffQffQggQgg Qg gQggQggQggQ Dgg"Qg$g'Qg)g+g.g0g3g5g8g:g=g?gBgDgGgIgLgNgQgSgVgXg[g]g`gbgegggjglgogpgsQgugxQgzg}QggQggQggQggQggQggQggQggQggQggQggQggg Pggg‘ggǑgg̑ggёgg֑ggۑgggggggggggggQghQhhQhh Qh hQhhQhhQhhQh h#Qh%h(Qh*h-Qh/h2Qh4h7Qh9hh@hChEhHhJhMhOhRhThWhY \h\h^hahchfhhhkhmhphrhuhwhzh|hhhhhQhhQhhQhhQhhQhhQhhQhhQhhQhhQhhQhhQhhQhhQhh͑hhґhhבhhܑhhhhhhhhhhh hhhhiiii i iiQiiQiiQiiQi!i$Qi&i)Qi+i.Qi0i3Qi5i8Qi:i=Qi?iBQiDiGQiIiLQiNiQQiSiUiXiZi]i_ibidigiiiliniqisivixi{i}iiiiiiiiii tiiiQiiQiiQiiQiiQiiQiiQiiQiiQiiQiiQiiQiiQiiQiiiiiiiiiiiiijjjjj j jjjjjjjj!j#j%Qj'j*Qj,j/Qj1j4Q j6j9Qj;j>Qj@jCQjEjHQjJjMQjOjRQjTjWQjYj\Qj^jaQjcjfQjhjjjmjojrjtjwjyj|j~jjjjjjjjjjjjjjjjjjjjjQjjQjjQjjQjjQjjQjjQj jQjjQjjQjjQjjQjjQjjQjjjjjkkkk k kkkkkkkkk"k$k'k)k,k.k1k3k6k8k:Qk<k?QkAkDQkFkIQkKkNQkPkSQkUkXQkZk]Qk_kbQkdkgQkiklQknkqQ kskvQkxk{Qk}kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkQkkQkkQkkQkkQkkQkkQkkQkkQkkQkkQkkQllQllQl l l lllllll l#l%l(l*l-l/l2l4l7l9l<l>lAlClFlHlKlMlOQlQlTQlVlYQl[l^Ql`lcQlelhQljlmQlolrQltlwQlyl|Ql~lQllQllQllQllllllllllll llllllllllƑllˑllБllՑlllQllQllQllQllQllQllQllQmmQmm Qm mQmmQmmQmmQmm!m$m&m)m+m.m0m3m5m8m:m=m?mBmDmGmImL mNmQmSmVmXm[m]m`mbmdQmfmiQmkmnQmpmsQmumxQmzm}QmmQmmQmmQmmQmmQmmQmmQmmQmmmmmmmmmmmm‘mmǑmm̑mmёmm֑mmۑmmmmmm mmmQmmQmmQmnQnnQnn Qn nQnnQnnQnnQn n#Qn%n(Qn*n-Qn/n2Qn4n6n9n;n>n@nCnEnHnJnMnOnRnTnWnYn\n^nancnfnhnknmnpnrnunwnyQn{n~QnnQnnQ nnQnnQnnQnnQnnQnnQnnQnnQnnQnnQnnnnÑnnȑnn͑nnґnnבnnܑnnnnnnnnnnnnnnoooQoo Qo oQooQooQooQo!o$Qo& o)Qo+o.Qo0o3Qo5o8Qo:o=Qo?oBQoDoGQoIoKoNoPoSoUoXoZo]o_obodogoiolonoqosovoxo{o}oooooooQooQooQooQooQooQooQooQooQooQooQooQ ooQooQooӑooؑooݑoooooooooooooppppp p ppppppQpp Qp"p%Qp'p*Qp,p/Qp1p4Qp6p9Qp;p>Qp@pCQpEpHQpJpMQpOpRQpTpWQpYp\Qp^p`pc pephpjpmpoprptpwpyp|p~pppppppppppppppQppQppQppQppQppQppQppQppQppQppQppQppQppQpppppppppppq qqq q qqqqqqqqq"q$q'q)q,q-q0Qq2q5Qq7q:Qq<q?QqAqDQqFqIQqKqNQqPqSQqUqXQqZq]Qq_qbQqdqgQqiqlQqnqqQqsquqxqzq}qqqqqqqqqqqqqq qqqqqqqqđqqqQqqQqqQqqQqqQqqQqqQqqQqqQqqQqqQqrQrrQr Ɗ $0<HT`lxʴ1ʼr%Qr&r'r)r*Qr,r-r/r0Qr1r2r4r5Qr6r7r9r:Qr;r<r>r?QSHrQrRQrSrTrVrWQrXrYr[r\Qr]r^r`ˬˤɅP (08@X,`8T@P"f@H P$ F=H͌h͔kͤʹhͼ̘hh 0xh΀!ΐΘhΠ$ΰhMh| `hhͯxπhψͲϘϰhϸh h=$LhTqdШhаΜhΥh @hHXxhр.ѐhah τ8h@ϪP\hdϮtҜhҤҴh=,h4kDTh\̘lӄhӌӜӸhh !08h@$PphxԈԬhԴ9hl$h,Ͳ<Th\lՈhՐՠհhո=hqLhTΜdphxΥֈ֬hִhy h(.8׈hאaנ׬h״ЦhϪh LhTd؀h؈ؘͯجؤشؼh h ,4h<LXh` pxhـِ٤h٬ ټhhh  08h@ PXh`pڄhڌڜڰhڸ h hh ,4h<L`hh xۀhۈۘ۬h۴h h h,@hH$Dhوٴ(Hhڔ$Dpېۼ$P.Xhh (h0@LhT8\kd݀݌hݔݤݰhݸ!h!h!h!(0h8 HPhX hphxވސhޘިްh޸!hݜ @`ހޠтѸ 8h@ѸPhhpѸ߀ߘhߠѸ߰hhHxߨ (h0 @HhP8X` t|h hhh h h$ ,4X`hhpx(+h+( (B<\hd+thYh\h+( (4<sD(T\sdtv+h+vB0ͯXP`h+|h4l,Ll(t|ҭhBͯ<4DL+`v|tұͯұͯ( sҴ,8h@ X$HҾPxhh hhh(0h8H\hd t|hhhhh (h0@LhT dlhthhhh  $h,<DhL @l8\|4T\hhh(0h8HPhX2hphx2h @`5hhh 08h@(HjP~l|ӃӆYӃYӃӉYӃY Ӄ(Y8@ӃH0PӎXӥpxӨӫӥӨӫӥӨӫӮӼӿ( 08DӫLT!\Ӽl|tӫ!ӿӫӼӿ $0ӫ8ӼHPX`ӫh@pxӫӫ $,ӫ4DLT\ӫd<ltӼӿ ӫӼ ӫ ((0ӫ8+HP(X`ӫh@p.xd4ұJMPX(`hJpP(JPX(`hJpP(JPX(`hJpP(JPX(`hJpP(JPX(`hJpP(JPX(`hJpP(JPX(`hJpP(JPX(`hJpP(JPX(`hJpP(JPX(`hJpxxxxxxxxxxg h h| ,4h< LTh\!lth|!hDdԀԌhԌhͯh ͯ08h@(HԓPͯlth|ͯhԯvv$(8@sH(X`sh(xs(s(s(sv  4vH@T\(pxs(s(s(s(s(s 0<hDT`hhxhhvv$(8@sH(X`sh(xs(s(s(sv  4vH@T\(pxs(s(s(s(s(s 0ͯD<LThͯ|tͯͯ0Pp,h(Lp0Pp,h(`Գhhh(4h<Lͯ`Xhpͯͯv0vD<PX(lts|(s(s(s(s( s,v@8LThv|t(s(s(s( s($,s4(DLsT(dlst(s(s D|(d$`<\|(8@sHXͯldt|P.(s(sͯ   : $d0 ,u 4շ h pͯ x պ շ  ͯ  պ շ  ͯ  պ շ  ͯ  պ շ ( 0ͯ 8 @պ Hշ X `ͯ h pպ xշ  ͯ  պ շ  ͯ  պ շ  ͯ  պ շ  ͯ ( 0պ 8շ H Pͯ X `պ hշ x ͯ  պ շ  ͯ  պ շ  ͯ  պ շ  ͯ  պ (շ 8 @ͯ H Pպ Xս h tͯ | պ ս  ͯ  պ ս  ͯ  պ ս  ͯ  պ (ս 8 Dͯ L Tպ \     P     @ p    0 `    0 d lշ  ͯ  պ շ ͯ պշ,4ͯ<DպLշ\dͯltպ|շͯպշͯպշͯպ շ$ͯ,4պ<շLTͯ\dպlշ|ͯպշͯպշͯպշ ͯ$պ, $TDt4<շ|ͯպշͯպշͯպշ ͯ$պ,ս<HͯPXպ`սp|ͯպսͯպսͯպս ͯ (պ0շ@HͯPXպ`շpxͯպշͯպշͯպշͯպ 4h8h(0 tl]tb|J$b4|Jb|H@X`lJt,|ցb| ,J4bD|J<ּb|ld|Jb| $,8J@HPbd|Jb |xpJb| 08DJLT\bt|J b|J5b|D<T\hJpb|Jx T(b<|Jb|PH`htJ|sb| $0J8bH|Jb| \ T l t J @ ց b |!!!,!4!@J!Hb!X|!!!!!J!!P!ּ"b"|""x"""J"b"|#(# #8#@#LJ#T"#\#db#x|####$J$b$ |$$$$$J$b$|%4%,%D%L%XJ%`$$%h%pb%|%%&& &J& b&0|&&&&&J&&(&5&b&|'X'P'h'p'|J'b'|('((($J(,'(4T(<b(P|(((((J(b(|)d)\)t)|)J)()s)b)|* **0*8*DJ*Lb*\|*****J*b+|+p+h+++J+*T*+ց+b+|,0,(,@,H,TJ,\b,l|,,,,,J-,d- ּ-\l4 " #p%&(H)+- ג-(b-t|----.J. b.|.....J....b.|/D/</T/\/hJ/pb/|///00J0b0(|00000J0/x0 00b0|1T1L1d1l1xJ1b1|112 22 J2(120528b2L|22222J2b2|3`3X3p3x3J323T3b3|444,444@J4Hb4X|44444J44P4s5b5|55x555J5b5|6(6 686@6LJ6Tb6d|66666J656\7ց7 b7$|77777J7b7|88808H8P8\J8d78lּ8tb8|8899 9J9 b90|99999J99(99b9|:X:P:h:p:|J:b:|;:;;;$J;,b;<|;;;;;J;:;4;;b;||>t>l>>>J>>>T>b>|?0?(?@?H?TJ?\b?l|?????J@?d@ s@b@(|@@@@@J@b@|A<A4ALATA`JAhbAx|AAAABJB@ApBցB bB8|BBBBBJBbB|CLCDC\CdCpJCxBCּCbC|DDDD D,JD4bDD|DDDDDJDD<DDbE|ElEdE|EEJEbE|FF F$F,F8JF@bFP|FFFFFJFEFHFFbG|G|GtGGGJGbG|H$HH4H<HHJHPGHX5H`bHt|HHHHIJI bI|IIIIIJIIITIbI|JDJ<JTJ\JhJJpbJ|JJJKKJKJxK sK(bK<|KKKKKJKbK|LPLHL`LhLtJL|bL|LLMMMJM$KLM,ցM4bML|MMMMMJMbM|N`NXNpNxNJNMNּNbN|OOO,O4O@JOHbOX|OOOOOJOOPOPbP|PPxPPPJPbP|Q(Q Q8Q@QLJQTbQd|QQQQQJQPQ\RR bR$|RRRRRJRbR|S8S0SHSPS\JSdRSl5StbS|SSTT TJT bT0|TTTTTJTT(TTTbT|UXUPUhUpU|JUbU|VUVVV$JV,UV4sV<bVP|VVVVVJVbV|WdW\WtW|WJWbW|X XXX$X0JX8VWX@ցXHbX`|XXXXXJXbY|YtYlYYYJYYYּYbY|Z0Z(Z@ZHZTJZ\bZl|ZZZZZJ[Zd[ [b[(|[[[[[J[b[|\<\4\L\T\`J\hb\x|\\\\]J][\p]] b]8|]]]]]J]b]|^L^D^\^d^pJ^x]^5^b^|____ _,J_4b_D|_____J__<_T_b`|`l`d`|``J`b`|aa a$a,a8Ja@`aHsaPbad|aaaaaJabb |bxbpbbbJbbb|c cc0c8cDJcLbbcTցc\bct|ccccdJd bd|dddddJdddּdbd|eDe<eTe\ehJepbe|eeeffJfexf f(bf<|fffffJfbf|gPgHg`ghgtJg|bg|gghhhJh$fgh,h4bhL|hhhhhJhbh|i`iXipixiJihi5ibi|jjj,j4j@JjHbjX|jjjjjJjjPjTkbk|kkxkkkJkbk|l(l l8l@lLJlTkl\sldblx|llllmJmbm |mmmmmJmbm|n4n,nDnLnXJn`mmnhցnpbn|nnoo oJo bo0|oooooJoo(oּobo|pXpPphppp|Jpbp|qpqqq$Jq,pq4q<bqP|qqqqqJqbq|rdr\rtr|rJrbr|s sss$s0Js8qrs@sHbs`|sssssJsbt|tttltttJttt5tbt|u0u(u@uHuTJu\bul|uuuuuJvudv Tvbv(|vvvvvJvbv|w<w4wLwTw`Jwhvwpswxbw|wwxxxJx$bx4|xxxxxJxbx|yHy@yXy`ylJytx,xy|ցyby|zzzz z,Jz4bzD|zzzzzJzz<zּzb{|{l{d{|{{J{b{||| |$|,|8J|@{|H|Pb|d||||||J|b} |}x}p}}}J}b}|~ ~~0~8~DJ~L}}~T~\b~t|~~~~J b|J5b|D<T\hJpb|Jx T(b<|Jb|PH`htJ|sb| $0J8bH|Jb|\TltJ@ցb|,4@JHbX|JPּb|xJb|( 8@LJT\dbx|Jb |Jb|4,DLXJ`hpb| J b0|J(5b|XPhp|Jb|$J,4T<bP|Jb|d\t|Jsb| 08DJLb\|Jb|phJTցb|0(@HTJ\bl|Jd ּb(|Jb|<4LT`Jhpx.02D35 789;=X>@ B0CDGHlIK4MDNP RSTVHXXY[ ]0^_a\cldf4hDik lpnoqHsXtv wyz|\~l4 pH  b|(J0b@|Jb|TLdlxJ8b| $,8J@bP|JH5b |xpJb| 08DJLTT\bp|Jb||Jsb|@8PXdJlb|| Jb$|Jtցb|PH`htJ|b|J$,ּ4bH|Jb|\TltJb|(0<JDbT|Jb|h`xJLb|( 8@LJTbd|J\5 b |Jb|4,DLXJ`hTpb|Jb,|J$sb|TLdlxJb|  J(b8|J0ցb|d\t|Jb| $0J8@ּHb\|Jb|phJb|,$<DPJXbh|Jb||tJ`b|<4LT`Jhbx|Jp5 b4|Jb|H@X`lJt|Tb|(J0b@|J8sb|h`xJb| (4J<bL|JDցb |xpJb| 08DJLTּ\bp|Jb||Jb|@8PXdJlb|| Jb$|Jtb|PH`htJ|b|J$,54bH|Jb|\TltJTb|(0<JDbT|JLsb||tJb|$4<HJPb`|JXցb |Jb|4,DLXJ`hּpb|Jb,|J$b|TLdlxJb|  J(b8|J0b|d\t|ˆJb | $0J8˜@5Hb\|Jb|phĀĈĔJĜĤTĬb|,$<DPJXbh|J`sb$|ƐƈƠƨƴJƼb|80HP\Jdbt|J lցb4|ȠȘȰȸJb|H@X`lJt|ּɄbɘ|(J0b@|ʬʤʼJ8b|h`xˀˌJ˔bˤ| (4J<bL|̸̰J˜Db |xp͈͐͜Jͤbʹ| 08DJLͬT5\bp|Jb|τ|ϔϜϨJϰϸTb|@8PXdJlb|| Jts$b8|ѤќѴѼJb|LD\dpJxb҈| J Ҁ(ց0bH|ӴӬJb|\TltԀJԈԐּԘbԬ|(0<JDbT|ոJLb||t֌֔֠J֨bָ|$4<HJPb`|JְXb |،؄؜ؤذJظb|4,DLXJ`h5pbل|Jb,|ژڐڨڰڼJ$Tb|TLdlxJۀbې|  J(ۈ0s8bL|ܸܰJb|`Xpx݄J݌bݜ| ,J4ݔ<ցDb\|Jb|ph߀߈ߔJߜߤּ߬b|,$<DPJXbh|J`b$|Jb|80HP\Jdbt|J lb4|Jb|H@X`lJt|5b|(J0b@|J8Tb|h`xJb| (4J<DsLb`|Jb|tlJb|,4@JHPցXbp|Jb||Jּb|@8PXdJlb|| Jt$b8|Jb|LD\dpJxb| J (0bH|Jb|\TltJ5b|(0<JDbT|JLTb||tJb|$4<HJPXs`bt|J b|Jb|0(@HTJ\dցlb|Jb,|J$ּb|TLdlxJb|  J(08bL|Jb|`XpxJb| ,J4<Dh@|T,h@|Tĸ,ɐh0@Ԥ|DT߸,Xh0@l|DT \bh|Jb||tJ5b|80HP\Jdbt|J lTb0|Jb|D<T\hJpxsb|$J,b<|Jb|PH`htJ|4ցb| (4J<bL|JDּb|tlJb|,4@JHPXbl|Jb|xJb|( 8@LJT \db|| Jb$|J5b|LD\dpJxb| J (T0bD|Jb| X P h p |J  s b |   $ , 8J @b P|     J b | d \ t | J  H  ց b | $  4 < HJ Pb `|     J  X ּ b |     J b |0(@HTJ\ dlb|Jb(|Jb|<4LT`Jh pxb|  J(b8|J05b|`XpxJb| ,J4<TDbX|Jb|ld|Jsb|( 8@LJTbd|Jb |xpJ\ցb|80HP\Jdbt|J lּb0|Jb|D<T\hJpxb|$J,b<|Jb|PH`htJ|4b| (4J<bL|JD5b|tlJb|,4@JHPTXbl|Jb|xJ sb| < 4 L T `J hb x|    !J!b! |!!!!!J! p!!ց!b!|"L"D"\"d"pJ"xb"|""## #J# "#(ּ#0b#D|#####J#b#|$X$P$h$p$|J$#$$b$|%% %$%,%8J%@b%P|%%%%%J%b%|&d&\&t&|&J&%H%&&b&|'$''4'<'HJ'Pb'`|'''''J''X(5(b(|(((((J(b(|)0)()@)H)TJ)\()dT)lb)|)))**J** *((dt<   xP(d!#<$&()x*0פ*8͜(ΈΨpϐ\иPшHlҬ<dӔ(HԀԼ4d՘\րּ0ט׼\ܼؐxlPpdh `-l`**jcodings-1.0.58/scripts/000077500000000000000000000000001433325321700150775ustar00rootroot00000000000000jcodings-1.0.58/scripts/EncodingListTemplate.java000066400000000000000000000026541433325321700220270ustar00rootroot00000000000000/* * Permission is hereby granted, free of charge, to any person obtaining a copy of * this software and associated documentation files (the "Software"), to deal in * the Software without restriction, including without limitation the rights to * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies * of the Software, and to permit persons to whom the Software is furnished to do * so, subject to the following conditions: * * The above copyright notice and this permission notice shall be included in all * copies or substantial portions of the Software. * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE * SOFTWARE. */ package org.jcodings; import org.jcodings.specific.*; final class EncodingList { static final void load() { %{defines} EncodingDB.ascii = EncodingDB.encodings.get("ASCII-8BIT".getBytes()); %{other} } public static Encoding getInstance(String name) { switch (name) { %{switch} default: return Encoding.load(name); } } } jcodings-1.0.58/scripts/TranscoderListTemplate.java000066400000000000000000000030241433325321700223750ustar00rootroot00000000000000/* * Permission is hereby granted, free of charge, to any person obtaining a copy of * this software and associated documentation files (the "Software"), to deal in * the Software without restriction, including without limitation the rights to * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies * of the Software, and to permit persons to whom the Software is furnished to do * so, subject to the following conditions: * * The above copyright notice and this permission notice shall be included in all * copies or substantial portions of the Software. * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE * SOFTWARE. */ package org.jcodings.transcode; import org.jcodings.transcode.Transcoder.GenericTranscoderEntry; import org.jcodings.transcode.specific.*; final class TranscoderList { static void load() { %{list} }; static final GenericTranscoderEntry[] GENERIC_LIST = new GenericTranscoderEntry[] { %{generic} }; public static Transcoder getInstance(String name) { switch (name) { %{switch} default: return Transcoder.load(name); } } } jcodings-1.0.58/scripts/UnicodeCodeRangeTemplate.java000066400000000000000000000034671433325321700226060ustar00rootroot00000000000000/* * Permission is hereby granted, free of charge, to any person obtaining a copy of * this software and associated documentation files (the "Software"), to deal in * the Software without restriction, including without limitation the rights to * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies * of the Software, and to permit persons to whom the Software is furnished to do * so, subject to the following conditions: * * The above copyright notice and this permission notice shall be included in all * copies or substantial portions of the Software. * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE * SOFTWARE. */ package org.jcodings.unicode; import org.jcodings.util.ArrayReader; import org.jcodings.CodeRange; public enum UnicodeCodeRange { %{extcrs}; private final String table; final byte[]name; private int[]range; private UnicodeCodeRange(String name, String table) { this.table = table; this.name = name.getBytes(); } int[]getRange() { if (range == null) range = ArrayReader.readIntArray(table); return range; } public boolean contains(int code) { return CodeRange.isInCodeRange(range, code); } public int getCType() { return ordinal(); } static final UnicodeCodeRange[]CodeRangeTable = UnicodeCodeRange.values(); static final int MAX_WORD_LENGTH = %{max_length}; } jcodings-1.0.58/scripts/generate.rb000066400000000000000000000303561433325321700172250ustar00rootroot00000000000000#!/usr/bin/env ruby # coding: utf-8 REPO_PATH = ARGV.first || '/usr/src/ruby' # path to ruby repo SECTION_NAME, G_PREFIX = case RUBY_PLATFORM when /linux/i; ["rodata", ""] when /darwin/i; ["const_data", "g"] else ;["rdata", ""] end UNICODE_VERSION = "13.0.0" SRC_DIR = "../src/org/jcodings" DST_BIN_DIR = "../resources/tables" INDENT = " " * 4 def generate_data generate_encoding_list generate_transcoder_list generate_transoder_data generate_coderange_data generate_coderange_list generate_fold_data end def process_binary obj_name binary = open(obj_name, "rb"){|f|f.read} offset = `#{G_PREFIX}objdump -h -j .#{SECTION_NAME} #{obj_name}`[/\.#{SECTION_NAME}.*?(\w+)\s+\S+$/, 1].to_i(16) `#{G_PREFIX}nm --no-sort --defined-only #{obj_name}`.split("\n").map{|s|s.split(/\s+/)}.each do |address, _, name| yield name, binary, address.to_i(16) + offset end end def generate_encoding_list enc_map = { "ASCII-8BIT" => "ASCII", "UTF-8" => "UTF8", "US-ASCII" => "USASCII", "Big5" => "BIG5", "Big5-HKSCS" => "Big5HKSCS", "Big5-UAO" => "Big5UAO", "CP949" => "CP949", "Emacs-Mule" => "EmacsMule", "EUC-JP" => "EUCJP", "EUC-KR" => "EUCKR", "EUC-TW" => "EUCTW", "GB2312" => "GB2312", "GB18030" => "GB18030", "GBK" => "GBK", "ISO-8859-1" => "ISO8859_1", "ISO-8859-2" => "ISO8859_2", "ISO-8859-3" => "ISO8859_3", "ISO-8859-4" => "ISO8859_4", "ISO-8859-5" => "ISO8859_5", "ISO-8859-6" => "ISO8859_6", "ISO-8859-7" => "ISO8859_7", "ISO-8859-8" => "ISO8859_8", "ISO-8859-9" => "ISO8859_9", "ISO-8859-10" => "ISO8859_10", "ISO-8859-11" => "ISO8859_11", "ISO-8859-13" => "ISO8859_13", "ISO-8859-14" => "ISO8859_14", "ISO-8859-15" => "ISO8859_15", "ISO-8859-16" => "ISO8859_16", "KOI8-R" => "KOI8R", "KOI8-U" => "KOI8U", "Shift_JIS" => "SJIS", "CESU-8" => "CESU8", "UTF-16BE" => "UTF16BE", "UTF-16LE" => "UTF16LE", "UTF-32BE" => "UTF32BE", "UTF-32LE" => "UTF32LE", "Windows-31J" => "Windows_31J", # TODO: Windows-31J is actually a variant of SJIS "Windows-1250" => "Windows_1250", "Windows-1251" => "Windows_1251", "Windows-1252" => "Windows_1252", "Windows-1253" => "Windows_1253", "Windows-1254" => "Windows_1254", "Windows-1257" => "Windows_1257" } defines, other = open("#{REPO_PATH}/encdb.h").read.tr('()', '').scan(/ENC_([A-Z_]+)(.*?);/m).partition { |a, b| a =~ /DEFINE/ } other << ["ALIAS", "\"MS932\", \"Windows-31J\""] other << ["ALIAS", "\"UTF8\", \"UTF-8\""] open("#{SRC_DIR}/EncodingList.java", "wb") { |f| f << open("EncodingListTemplate.java", "rb").read. sub(/%\{defines\}/, defines.map { |cmd, name| "#{INDENT*2}EncodingDB.declare(#{name}, \"#{enc_map[name[/[^"]+/]] || (raise 'class not found for encoding ' + name)}\");" }.join("\n")). sub(/%\{other\}/, other.map { |cmd, from, to| "#{INDENT*2}EncodingDB.#{cmd.downcase}(#{from}#{to.nil? ? "" : to});" }.join("\n")). sub(/%\{switch\}/, defines.map { |cmd, name| "#{INDENT*3}case \"#{enc_map[name[/[^"]+/]]}\": return #{enc_map[name[/[^"]+/]]}Encoding.INSTANCE;"}.join("\n"))} end def generate_transcoder_list generic_list = [] specific_list = [] transcoder_list = [] Dir["#{REPO_PATH}/enc/trans/*.c"].reject{|f| f =~ /transdb/}.sort.each do |trans_file| name = trans_file[/(\w+)\.c/, 1].split('_').map{|e| e.capitalize}.join("") trans_src = open(trans_file){|f|f.read} trans_src.scan(/static\s+const\s+rb_transcoder.*?(\w+)\s+=\s+\{(.+?)\};/m) do |t_name, body| n = t_name.split('_') t_name = n[1].capitalize t_name += '_' + n[2..-1].join('_') unless n[2..-1].empty? body = body.gsub(/(\/\*.*?\*\/)/, "").split(',').map{|e|e.strip} src, dst, tree_start, table_info, iul, max_in, max_out, conv, state_size, state_init, state_fini, *funcs = body tree_start = trans_src[/#define\s+#{tree_start}\s+WORDINDEX2INFO\((\d+)\)/, 1].to_i << 2 state_size = "24" if state_size == "sizeof(struct from_utf8_mac_status)" generic = funcs.all?{|f|f == "NULL" || f == "0"} if generic generic_list << [src, dst, tree_start, "\"#{name}\"", iul, max_in, max_out, "AsciiCompatibility.#{conv.split('_').last.upcase}", state_size] else specific_list << [t_name, src, dst, tree_start, "\"#{name}\"", iul, max_in, max_out, "AsciiCompatibility.#{conv.split('_').last.upcase}", state_size] end transcoder_list << [src, dst, t_name, !generic] end end open("#{SRC_DIR}/transcode/TranscoderList.java", "wb") << open("TranscoderListTemplate.java", "rb"){|f|f.read}. sub(/%\{list\}/, transcoder_list.map{|src, dst, cls, specific| "#{INDENT*2}TranscoderDB.declare(#{src}, #{dst}, #{specific ? '"' + cls + '"' : 'null /*' + cls + '*/'});"}.join("\n")). sub(/%\{generic\}/, generic_list.map{|g| "#{INDENT*2}new GenericTranscoderEntry(#{g.join(', ')})"}.join(",\n")). sub(/%\{switch\}/, transcoder_list.map{|src, dst, cls, specific| "#{INDENT*3}case \"#{cls}\": return #{cls}_Transcoder.INSTANCE;" if specific}.compact.join("\n")) generate_specific_transcoder_data(specific_list) end def generate_specific_transcoder_data(specific_list) specific_list.each do |transcoder| path = "#{SRC_DIR}/transcode/specific/#{transcoder[0]}_Transcoder.java" next unless File.exist?(path) content = open(path, "rb"){ |f| f.read } if content.match("super\\((.*)\\);") content.sub!($1, transcoder[1..-1].join(", ")) open(path, "wb") << content end end end def generate_transoder_data Dir["#{REPO_PATH}/enc/trans/*.c"].reject{|f| f =~ /transdb/}.sort.each do |trans_file| # next unless trans_file =~ /utf8/ trans_file = trans_file[/(.*)\./, 1] src = open("#{trans_file}.c", "rb").read make_name = -> (name) {name.split('_').map{|e|e.capitalize}.join('')} process_binary "#{trans_file}.o" do |name, binary, address| case name when /(.*)_byte_array/ name = $1 size = src[/(\w+?_byte_array)\[(\d+?)\]/m, 2].to_i open("#{DST_BIN_DIR}/" + "Transcoder_#{make_name.(name)}_ByteArray.bin", "wb") do |f| f << [size].pack("N") f << binary[address, size] end when /(.*)_word_array/ name = $1 size = src[/(\w+?_word_array)\[(\d+?)\]/m, 2].to_i open("#{DST_BIN_DIR}/" + "Transcoder_#{make_name.(name)}_WordArray.bin", "wb") do |f| f << [size].pack("N") address.step(address + (size * 4 - 1), 4).each do |adr| f << binary[adr, 4].unpack("l").pack("N") end end end end end end def generate_coderange_data process_binary "#{REPO_PATH}/enc/unicode.o" do |name, binary, address| case name when /CR_(.*)/ size = binary[address, 4].unpack("l") address += 4 open("#{DST_BIN_DIR}/#{name}.bin", "wb") do |f| f << [size[0] * 2 + 1].pack("N") f << size.pack("N") address.step(address + (size[0] * 2 * 4 - 1), 4).each do |adr| f << binary[adr, 4].unpack("l").pack("N") end end end end end def generate_coderange_list name2ctype_h = "#{REPO_PATH}/enc/unicode/#{UNICODE_VERSION}/name2ctype.h" cr_map = open("#{name2ctype_h}", "rb"){|f|f.read}.scan(/#define CR_(.*?) CR_(.*)/).inject({}){|h, (k, v)|h[v] = k.tr('_', '').downcase; h} unicode_src = `cpp #{name2ctype_h} -DUSE_UNICODE_PROPERTIES -DUSE_UNICODE_AGE_PROPERTIES | grep "^[^#;]"` gperf_map = Hash[unicode_src[/struct\s+uniname2ctype_pool_t\s+\{(.*?)\}\;/m, 1].scan(/uniname2ctype_pool_str(\d+).*\"(\S+)\"/)] aliases = unicode_src[/wordlist\[\]\s+=\s+\{(.*?)\}\;/m, 1].scan(/uniname2ctype_pool_str(\d+).*?(\d+)/). inject(Hash.new{|h, k|h[k] = []}){|h, (name, num)|h[num] << gperf_map[name]; h}.inject({}) do |h, (k, v)| h.merge! Hash[v.map{|val|[val, v - [val]]}] h end ranges = unicode_src[/CodeRanges\[\]\s+=\s+\{(.*?)\}\;/m, 1].scan(/CR_(\w+)/).flatten standard_char_type_range = 16 out = ranges.take(standard_char_type_range).map{|range|[range.tr('_', '').downcase, range]} + ranges.drop(standard_char_type_range).map do |range| name = range =~ /Age_(\d+)_(\d+)/ ? "age=#{$1}.#{$2}" : range.tr('_', '').downcase name = cr_map.delete(range) || name name = "#{$1}=#{$2}" if name =~ /(graphemeclusterbreak)(.*)/i ([name] + aliases[name].to_a).map{|n|[n, range]} end.flatten(1) max_length = out.max_by{|name, table|name.length}.first.length.to_s open("#{SRC_DIR}/unicode/UnicodeCodeRange.java", "wb") do |f| f << open("UnicodeCodeRangeTemplate.java", "rb").read.sub(/%\{max_length\}/, max_length).sub(/%\{extcrs\}/, out.map{|name, table| "#{INDENT}" + "#{name.upcase.tr('=.', '_')}(\"#{name}\", \"CR_#{table}\")"}.join(",\n")) end end def generate_fold_data src = open("#{REPO_PATH}/enc/unicode/#{UNICODE_VERSION}/casefold.h"){|f|f.read} offsets = src.scan(/#define (Case\S+).*?\[(\w+)\].*?\+(\d+)/).inject({}){|h, (k, *v)| h[k] = v.map(&:to_i);h} extract = -> (f, binary, address, from, range, from_w, to_w) do f << [0].pack("N") width = from_w + to_w size = 0 start = address + from * width * 4 start.step(start + (range * width * 4 - 1), width * 4) do |adr| f << binary[adr, from_w * 4].unpack("l*").pack("N*") packed = binary[adr + from_w * 4, 4].unpack("l").first length = packed & 7 size += length f << [packed].pack("N") f << binary[adr + from_w * 4 + 4, length * 4].unpack("l*").pack("N*") end f.seek(0) vrange = size - (size - range) f << [(range + vrange) / 2].pack("N") end process_binary "#{REPO_PATH}/enc/unicode.o" do |name, binary, address| case name when /(CaseFold)_11_Table/ name = $1 range, from = offsets[name] range += offsets[name + '_Locale'].first open("#{DST_BIN_DIR}/CaseFold.bin", "wb") do |f| extract.(f, binary, address, from, range, 1, 4) end when /(CaseUnfold_(\d+))_Table/ name = $1 case $2 when '11' range, from = offsets[name] open("#{DST_BIN_DIR}/CaseUnfold_11.bin", "wb") do |f| extract.(f, binary, address, from, range, 1, 4) end range, from = offsets[name + '_Locale'] open("#{DST_BIN_DIR}/CaseUnfold_11_Locale.bin", "wb") do |f| extract.(f, binary, address, from, range, 1, 4) end when '12' range, from = offsets[name] open("#{DST_BIN_DIR}/CaseUnfold_12.bin", "wb") do |f| extract.(f, binary, address, from, range, 2, 3) end range, from = offsets[name + '_Locale'] open("#{DST_BIN_DIR}/CaseUnfold_12_Locale.bin", "wb") do |f| extract.(f, binary, address, from, range, 2, 3) end when '13' range, from = offsets[name] open("#{DST_BIN_DIR}/CaseUnfold_13.bin", "wb") do |f| extract.(f, binary, address, from, range, 3, 3) end end when /CaseMappingSpecials/ open("#{DST_BIN_DIR}/CaseMappingSpecials.bin", "wb") do |f| size = src[/CaseMappingSpecials\[\]\s+=\s+\{(.*?)\}\;/m, 1].scan(/0x[0-9A-F]{4}/).size f << [size].pack("N") address.step(address + (size * 4 - 1), 4).each do |adr| f << binary[adr, 4].unpack("l").pack("N") end end end end end generate_data jcodings-1.0.58/src/000077500000000000000000000000001433325321700141775ustar00rootroot00000000000000jcodings-1.0.58/src/module-info.java000066400000000000000000000005671433325321700172700ustar00rootroot00000000000000open module org.jruby.jcodings { exports org.jcodings; exports org.jcodings.ascii; exports org.jcodings.constants; exports org.jcodings.exception; exports org.jcodings.specific; exports org.jcodings.spi; exports org.jcodings.transcode; exports org.jcodings.transcode.specific; exports org.jcodings.unicode; exports org.jcodings.util; }jcodings-1.0.58/src/org/000077500000000000000000000000001433325321700147665ustar00rootroot00000000000000jcodings-1.0.58/src/org/jcodings/000077500000000000000000000000001433325321700165665ustar00rootroot00000000000000jcodings-1.0.58/src/org/jcodings/AbstractEncoding.java000066400000000000000000000145351433325321700226530ustar00rootroot00000000000000/* * Permission is hereby granted, free of charge, to any person obtaining a copy of * this software and associated documentation files (the "Software"), to deal in * the Software without restriction, including without limitation the rights to * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies * of the Software, and to permit persons to whom the Software is furnished to do * so, subject to the following conditions: * * The above copyright notice and this permission notice shall be included in all * copies or substantial portions of the Software. * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE * SOFTWARE. */ package org.jcodings; import org.jcodings.ascii.AsciiTables; import org.jcodings.constants.PosixBracket; import org.jcodings.exception.CharacterPropertyException; import org.jcodings.exception.EncodingError; abstract class AbstractEncoding extends Encoding { private final short CTypeTable[]; protected AbstractEncoding(String name, int minLength, int maxLength, short[]CTypeTable) { super(name, minLength, maxLength); this.CTypeTable = CTypeTable; } /** CTYPE_TO_BIT */ private static int CTypeToBit(int ctype) { return 1 << ctype; } /** ONIGENC_IS_XXXXXX_CODE_CTYPE */ protected final boolean isCodeCTypeInternal(int code, int ctype) { return (CTypeTable[code] & CTypeToBit(ctype)) != 0; } /** onigenc_is_mbc_newline_0x0a / used also by multibyte encodings * */ @Override public boolean isNewLine(byte[]bytes, int p, int end) { return p < end ? bytes[p] == Encoding.NEW_LINE : false; } protected final int asciiMbcCaseFold(int flag, byte[]bytes, IntHolder pp, int end, byte[]lower) { lower[0] = AsciiTables.ToLowerCaseTable[bytes[pp.value] & 0xff]; pp.value++; return 1; } /** onigenc_ascii_mbc_case_fold */ @Override public int mbcCaseFold(int flag, byte[]bytes, IntHolder pp, int end, byte[]lower) { return asciiMbcCaseFold(flag, bytes, pp, end, lower); } protected final void asciiApplyAllCaseFold(int flag, ApplyAllCaseFoldFunction fun, Object arg) { int[]code = new int[]{0}; for (int i=0; i= 'a' && code <= 'z' && ((flags & Config.CASE_UPCASE) != 0)) { flags |= Config.CASE_MODIFIED; code += 'A' - 'a'; } else if (code >= 'A' && code <= 'Z' && ((flags & (Config.CASE_DOWNCASE | Config.CASE_FOLD)) != 0)) { flags |= Config.CASE_MODIFIED; code += 'a' - 'A'; } toP += codeToMbc(code, to, toP); if ((flags & Config.CASE_TITLECASE) != 0) { flags ^= (Config.CASE_UPCASE | Config.CASE_DOWNCASE | Config.CASE_TITLECASE); } } flagP.value = flags; return toP - toStart; } int singleByteAsciiOnlyCaseMap(IntHolder flagP, byte[]bytes, IntHolder pp, int end, byte[]to, int toP, int toEnd) { int toStart = toP; int flags = flagP.value; while (pp.value < end && toP < toEnd) { int code = bytes[pp.value++] & 0xff; if (code >= 'a' && code <= 'z' && ((flags & Config.CASE_UPCASE) != 0)) { flags |= Config.CASE_MODIFIED; code += 'A' - 'a'; } else if (code >= 'A' && code <= 'Z' && ((flags & (Config.CASE_DOWNCASE | Config.CASE_FOLD)) != 0)) { flags |= Config.CASE_MODIFIED; code += 'a' - 'A'; } to[toP++] = (byte)code; if ((flags & Config.CASE_TITLECASE) != 0) { flags ^= (Config.CASE_UPCASE | Config.CASE_DOWNCASE | Config.CASE_TITLECASE); } } flagP.value = flags; return toP - toStart; } /** onigenc_minimum_property_name_to_ctype * notably overridden by unicode encodings */ @Override public int propertyNameToCType(byte[]bytes, int p, int end) { Integer ctype = PosixBracket.PBSTableUpper.get(bytes, p, end); if (ctype != null) return ctype; throw new CharacterPropertyException(EncodingError.ERR_INVALID_CHAR_PROPERTY_NAME, bytes, p, end - p); } } jcodings-1.0.58/src/org/jcodings/ApplyAllCaseFoldFunction.java000066400000000000000000000022771433325321700242660ustar00rootroot00000000000000/* * Permission is hereby granted, free of charge, to any person obtaining a copy of * this software and associated documentation files (the "Software"), to deal in * the Software without restriction, including without limitation the rights to * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies * of the Software, and to permit persons to whom the Software is furnished to do * so, subject to the following conditions: * * The above copyright notice and this permission notice shall be included in all * copies or substantial portions of the Software. * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE * SOFTWARE. */ package org.jcodings; public interface ApplyAllCaseFoldFunction { public void apply(int from, int[]to, int toLength, Object o); } jcodings-1.0.58/src/org/jcodings/CanBeTrailTableEncoding.java000066400000000000000000000042441433325321700240200ustar00rootroot00000000000000/* * Permission is hereby granted, free of charge, to any person obtaining a copy of * this software and associated documentation files (the "Software"), to deal in * the Software without restriction, including without limitation the rights to * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies * of the Software, and to permit persons to whom the Software is furnished to do * so, subject to the following conditions: * * The above copyright notice and this permission notice shall be included in all * copies or substantial portions of the Software. * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE * SOFTWARE. */ package org.jcodings; public abstract class CanBeTrailTableEncoding extends MultiByteEncoding { protected final boolean[] CanBeTrailTable; protected CanBeTrailTableEncoding(String name, int minLength, int maxLength, int[]EncLen, int[][]Trans, short[]CTypeTable, boolean[]CanBeTrailTable) { super(name, minLength, maxLength, EncLen, Trans, CTypeTable); this.CanBeTrailTable = CanBeTrailTable; } @Override public int leftAdjustCharHead(byte[]bytes, int p, int s, int end) { if (s <= p) return s; int p_ = s; if (CanBeTrailTable[bytes[p_] & 0xff]) { while (p_ > p) { if (!(EncLen[bytes[--p_] & 0xff] > 1)) { p_++; break; } } } int len = length(bytes, p_, end); if (p_ + len > s) return p_; p_ += len; return p_ + ((s - p_) & ~1); } @Override public boolean isReverseMatchAllowed(byte[]bytes, int p, int end) { return !CanBeTrailTable[bytes[p] & 0xff]; } }jcodings-1.0.58/src/org/jcodings/CaseFoldCodeItem.java000066400000000000000000000035341433325321700225300ustar00rootroot00000000000000/* * Permission is hereby granted, free of charge, to any person obtaining a copy of * this software and associated documentation files (the "Software"), to deal in * the Software without restriction, including without limitation the rights to * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies * of the Software, and to permit persons to whom the Software is furnished to do * so, subject to the following conditions: * * The above copyright notice and this permission notice shall be included in all * copies or substantial portions of the Software. * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE * SOFTWARE. */ package org.jcodings; public final class CaseFoldCodeItem { public static final CaseFoldCodeItem[] EMPTY_FOLD_CODES = new CaseFoldCodeItem[]{}; public final int byteLen; public final int code[]; private CaseFoldCodeItem(int byteLen, int[]code) { this.byteLen = byteLen; this.code = code; } public static CaseFoldCodeItem create(int byteLen, int code1) { return new CaseFoldCodeItem(byteLen, new int[] {code1}); } public static CaseFoldCodeItem create(int byteLen, int code1, int code2) { return new CaseFoldCodeItem(byteLen, new int[] {code1, code2}); } public static CaseFoldCodeItem create(int byteLen, int code1, int code2, int code3) { return new CaseFoldCodeItem(byteLen, new int[] {code1, code2, code3}); } } jcodings-1.0.58/src/org/jcodings/CaseFoldMapEncoding.java000066400000000000000000000122441433325321700232210ustar00rootroot00000000000000/* * Permission is hereby granted, free of charge, to any person obtaining a copy of * this software and associated documentation files (the "Software"), to deal in * the Software without restriction, including without limitation the rights to * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies * of the Software, and to permit persons to whom the Software is furnished to do * so, subject to the following conditions: * * The above copyright notice and this permission notice shall be included in all * copies or substantial portions of the Software. * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE * SOFTWARE. */ package org.jcodings; public abstract class CaseFoldMapEncoding extends SingleByteEncoding { protected final int[][]CaseFoldMap; protected final boolean foldFlag; protected CaseFoldMapEncoding(String name, short[]CTypeTable, byte[]LowerCaseTable, int[][]CaseFoldMap) { this(name, CTypeTable, LowerCaseTable, CaseFoldMap, true); } protected CaseFoldMapEncoding(String name, short[]CTypeTable, byte[]LowerCaseTable, int[][]CaseFoldMap, boolean foldFlag) { super(name, CTypeTable, LowerCaseTable); this.CaseFoldMap = CaseFoldMap; this.foldFlag = foldFlag; } /** onigenc_apply_all_case_fold_with_map */ protected final int applyAllCaseFoldWithMap(int mapSize, int[][]map, boolean essTsettFlag, int flag, ApplyAllCaseFoldFunction fun, Object arg) { asciiApplyAllCaseFold(flag, fun, arg); int[]code = new int[]{0}; for (int i=0; i p + 1 && (bytes[p+1] == (byte)0x53 || bytes[p+1] == (byte)0x73)) { /* SS */ CaseFoldCodeItem item1 = CaseFoldCodeItem.create(2, 0xdf); return new CaseFoldCodeItem[]{item0, item1}; } else { return new CaseFoldCodeItem[]{item0}; } } else if (0x61 <= b && b <= 0x7a) { CaseFoldCodeItem item0 = CaseFoldCodeItem.create(1, b - 0x20); if (b == 0x73 && essTsettFlag && end >p + 1 && (bytes[p+1] == (byte)0x73 || bytes[p+1] == (byte)0x53)) { /* ss */ CaseFoldCodeItem item1 = CaseFoldCodeItem.create(2, 0xdf); return new CaseFoldCodeItem[]{item0, item1}; } else { return new CaseFoldCodeItem[]{item0}; } } else if (b == 0xdf && essTsettFlag) { CaseFoldCodeItem item0 = CaseFoldCodeItem.create(1, 's', 's'); CaseFoldCodeItem item1 = CaseFoldCodeItem.create(1, 'S', 'S'); CaseFoldCodeItem item2 = CaseFoldCodeItem.create(1, 's', 'S'); CaseFoldCodeItem item3 = CaseFoldCodeItem.create(1, 'S', 's'); return new CaseFoldCodeItem[]{item0, item1, item2, item3}; } else { for (int i=0; i> 1; if (code > p[(x << 1) + 2 + offset]) { low = x + 1; } else { high = x; } } return low < n && code >= p[(low << 1) + 1 + offset]; } } jcodings-1.0.58/src/org/jcodings/Config.java000066400000000000000000000075671433325321700206550ustar00rootroot00000000000000/* * Permission is hereby granted, free of charge, to any person obtaining a copy of * this software and associated documentation files (the "Software"), to deal in * the Software without restriction, including without limitation the rights to * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies * of the Software, and to permit persons to whom the Software is furnished to do * so, subject to the following conditions: * * The above copyright notice and this permission notice shall be included in all * copies or substantial portions of the Software. * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE * SOFTWARE. */ package org.jcodings; public interface Config { /* work size */ final int ENC_CODE_TO_MBC_MAXLEN = 7; final int ENC_MBC_CASE_FOLD_MAXLEN = 18; final int ENC_MAX_COMP_CASE_FOLD_CODE_LEN = 3; final int ENC_GET_CASE_FOLD_CODES_MAX_NUM = 13; /* 13 => Unicode:0x1ffc */ final boolean USE_UNICODE_CASE_FOLD_TURKISH_AZERI = false; final boolean USE_UNICODE_ALL_LINE_TERMINATORS = false; final boolean USE_CRNL_AS_LINE_TERMINATOR = false; final boolean USE_UNICODE_PROPERTIES = true; final int CodePointMaskWidth = 3; final int CodePointMask = (1 << CodePointMaskWidth) - 1; final int SpecialIndexShift = 3; final int SpecialIndexWidth = 10; final int SpecialIndexMask = ((1 << SpecialIndexWidth) - 1) << SpecialIndexShift; final int SpecialsLengthOffset = 25; final int CASE_UPCASE = (1<<13); /* has/needs uppercase mapping */ final int CASE_DOWNCASE = (1<<14); /* has/needs lowercase mapping */ final int CASE_TITLECASE = (1<<15); /* has/needs (special) titlecase mapping */ final int CASE_SPECIAL_OFFSET = 3; /* offset in bits from ONIGENC_CASE to ONIGENC_CASE_SPECIAL */ final int CASE_UP_SPECIAL = (1<<16); /* has special upcase mapping */ final int CASE_DOWN_SPECIAL = (1<<17); /* has special downcase mapping */ final int CASE_MODIFIED = (1<<18); /* data has been modified */ final int CASE_FOLD = (1<<19); /* has/needs case folding */ final int CASE_FOLD_TURKISH_AZERI = (1<<20); /* needs mapping specific to Turkic languages; better not change original value! */ final int CASE_FOLD_LITHUANIAN = (1<<21); /* needs Lithuanian-specific mapping */ final int CASE_ASCII_ONLY = (1<<22); /* only modify ASCII range */ final int CASE_IS_TITLECASE = (1<<23); /* character itself is already titlecase */ final int CASE_SPECIALS = (CASE_TITLECASE | CASE_IS_TITLECASE | CASE_UP_SPECIAL | CASE_DOWN_SPECIAL); final int INTERNAL_ENC_CASE_FOLD_MULTI_CHAR = (1<<30); /* better not change original value! */ final int ENC_CASE_FOLD_MIN = INTERNAL_ENC_CASE_FOLD_MULTI_CHAR; final int ENC_CASE_FOLD_DEFAULT = ENC_CASE_FOLD_MIN; final String UNICODE_VERSION_STRING = "13.0.0"; final int UNICODE_VERSION_MAJOR = 13; final int UNICODE_VERSION_MINOR = 0; final int UNICODE_VERSION_TEENY = 0; final String UNICODE_EMOJI_VERSION_STRING = "13.1"; final int UNICODE_EMOJI_VERSION_MAJOR = 13; final int UNICODE_EMOJI_VERSION_MINOR = 1; } jcodings-1.0.58/src/org/jcodings/Encoding.java000066400000000000000000000435521433325321700211700ustar00rootroot00000000000000/* * Permission is hereby granted, free of charge, to any person obtaining a copy of * this software and associated documentation files (the "Software"), to deal in * the Software without restriction, including without limitation the rights to * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies * of the Software, and to permit persons to whom the Software is furnished to do * so, subject to the following conditions: * * The above copyright notice and this permission notice shall be included in all * copies or substantial portions of the Software. * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE * SOFTWARE. */ package org.jcodings; import java.nio.charset.Charset; import org.jcodings.ascii.AsciiTables; import org.jcodings.constants.CharacterType; import org.jcodings.exception.EncodingException; import org.jcodings.exception.EncodingError; import org.jcodings.exception.ErrorMessages; import org.jcodings.exception.InternalException; import org.jcodings.util.BytesHash; public abstract class Encoding implements Cloneable { public static final int CHAR_INVALID = -1; private static int count; protected final int minLength, maxLength; private final boolean isFixedWidth, isSingleByte; private boolean isAsciiCompatible; protected boolean isUnicode = false, isUTF8 = false; private byte[]name; private int hashCode; private int index; private Charset charset = null; private boolean isDummy = false; private String stringName; protected Encoding(String name, int minLength, int maxLength) { setName(name); this.minLength = minLength; this.maxLength = maxLength; this.isFixedWidth = minLength == maxLength; this.isSingleByte = isFixedWidth && minLength == 1; this.index = count++; this.isAsciiCompatible = minLength == 1; } protected final void setName(String name) { this.name = name.getBytes(); this.hashCode = BytesHash.hashCode(this.name, 0, this.name.length); this.stringName = name; } protected final void setName(byte[]name) { this.name = name; this.hashCode = BytesHash.hashCode(this.name, 0, this.name.length); this.stringName = new String(name); } protected final void setDummy() { isDummy = true; isAsciiCompatible = false; } @Override public final String toString() { return stringName; } @Override public final boolean equals(Object other) { return this == other; } @Override public final int hashCode() { return hashCode; } public final int getIndex() { return index; } public final byte[]getName() { return name; } public final boolean isDummy() { return isDummy; } public final boolean isAsciiCompatible() { return isAsciiCompatible; } public final boolean isUnicode() { return isUnicode; } public final boolean isUTF8() { return isUTF8; } /** * If this encoding is capable of being represented by a Java Charset * then provide it. Otherwise this will raise a CharsetNotFound error via the JDK APIs. * * To reduce cases like jruby/jruby#4716, we always attempt to find a charset here, and default to using the * encoding name which is never null. Either the encoding will exist in the JDK or it will fail hard, rather * than propagating a null Charset. Encodings with names different than those found in the JDK can override * this getCharsetName to provide that name or getCharset to return the right Charset. */ public Charset getCharset() { if (charset == null) { charset = Charset.forName(getCharsetName()); } return charset; } /** * The name of the equivalent Java Charset for this encoding. * * Defaults to the name of the encoding. Subclasses can override this to provide a different name. * * @return the name of the equivalent Java Charset for this encoding */ public String getCharsetName() { return stringName; } Encoding replicate(byte[]name) { try { Encoding clone = (Encoding)clone(); clone.setName(name); clone.index = count++; return clone; } catch (CloneNotSupportedException cnse){ throw new EncodingException(EncodingError.ERR_COULD_NOT_REPLICATE, new String(name)); } } /** * Returns character length given character head * returns 1 for singlebyte encodings or performs direct length table lookup for multibyte ones. * * @param c * Character head * Oniguruma equivalent: mbc_enc_len * * To be deprecated very soon (use length(byte[]bytes, int p, int end) version) */ public abstract int length(byte c); /** * Returns character length given stream, character position and stream end * returns 1 for singlebyte encodings or performs sanity validations for multibyte ones * and returns the character length, missing characters in the stream otherwise * * @return * 0 Never * > 0 Valid character, length returned * -1 Illegal/malformed character * < -1 (-1 - n) Number of missing bytes for character in p...end range * * Oniguruma equivalent: mbc_enc_len * modified for 1.9 purposes, */ public abstract int length(byte[]bytes, int p, int end); /** * Returns maximum character byte length that can appear in an encoding * * Oniguruma equivalent: max_enc_len */ public final int maxLength() { return maxLength; } /* ONIGENC_MBC_MAXLEN_DIST */ @Deprecated public final int maxLengthDistance() { return maxLength(); } /** * Returns minimum character byte length that can appear in an encoding * * Oniguruma equivalent: min_enc_len */ public final int minLength() { return minLength; } /** * Returns true if bytes[p] is a head of a new line character * * Oniguruma equivalent: is_mbc_newline */ public abstract boolean isNewLine(byte[]bytes, int p, int end); /** * Returns code point for a character * * Oniguruma equivalent: mbc_to_code */ public abstract int mbcToCode(byte[]bytes, int p, int end); /** * Returns character length given a code point * * Oniguruma equivalent: code_to_mbclen */ public abstract int codeToMbcLength(int code); /** * Extracts code point into it's multibyte representation * * @return character length for the given code point * * Oniguruma equivalent: code_to_mbc */ public abstract int codeToMbc(int code, byte[]bytes, int p); /** * Performs case folding for a character at bytes[pp.value] * * @param flag case fold flag * @param pp an IntHolder that points at character head * @param to a buffer where to extract case folded character * * Oniguruma equivalent: mbc_case_fold */ public abstract int mbcCaseFold(int flag, byte[]bytes, IntHolder pp, int end, byte[]to); /** * Returns lower case table if it's safe to use it directly, otherwise null * Used for fast case insensitive matching for some singlebyte encodings * * @return lower case table */ public byte[] toLowerCaseTable() {return null;} /** * Expand case folds given a character class (used for case insensitive matching) * * @param flag case fold flag * @param fun case folding functor (look at: ApplyCaseFold) * @param arg case folding functor argument (look at: ApplyCaseFoldArg) * * Oniguruma equivalent: apply_all_case_fold */ public abstract void applyAllCaseFold(int flag, ApplyAllCaseFoldFunction fun, Object arg); /** * Expand AST string nodes into their folded alternatives (look at: Analyser.expandCaseFoldString) * * Oniguruma equivalent: get_case_fold_codes_by_str */ public abstract CaseFoldCodeItem[]caseFoldCodesByString(int flag, byte[]bytes, int p, int end); /** * Returns character type given character type name (used when e.g. \p{Alpha}) * * Oniguruma equivalent: property_name_to_ctype */ public abstract int propertyNameToCType(byte[]bytes, int p, int end); /** * Perform a check whether given code is of given character type (e.g. used by isWord(someByte) and similar methods) * * @param code a code point of a character * @param ctype a character type to check against * * Oniguruma equivalent: is_code_ctype */ public abstract boolean isCodeCType(int code, int ctype); /** * Returns code range for a given character type * * Oniguruma equivalent: get_ctype_code_range */ public abstract int[]ctypeCodeRange(int ctype, IntHolder sbOut); /** * Seeks the previous character head in a stream * * Oniguruma equivalent: left_adjust_char_head * * @param bytes byte stream * @param p position * @param s stop * @param end end */ public abstract int leftAdjustCharHead(byte[]bytes, int p, int s, int end); /** * Returns true if it's safe to use reversal Boyer-Moore search fail fast algorithm * * Oniguruma equivalent: is_allowed_reverse_match */ public abstract boolean isReverseMatchAllowed(byte[]bytes, int p, int end); /** * * Oniguruma equivalent: case_map */ public abstract int caseMap(IntHolder flagP, byte[]bytes, IntHolder pp, int end, byte[]to, int toP, int toEnd); /* onigenc_get_right_adjust_char_head / ONIGENC_LEFT_ADJUST_CHAR_HEAD */ public final int rightAdjustCharHead(byte[]bytes, int p, int s, int end) { int p_ = leftAdjustCharHead(bytes, p, s, end); if (p_ < s) p_ += length(bytes, p_, end); return p_; } /* onigenc_get_right_adjust_char_head_with_prev */ public final int rightAdjustCharHeadWithPrev(byte[]bytes, int p, int s, int end, IntHolder prev) { int p_ = leftAdjustCharHead(bytes, p, s, end); if (p_ < s) { if (prev != null) prev.value = p_; p_ += length(bytes, p_, end); } else { if (prev != null) prev.value = -1; /* Sorry */ } return p_; } /* onigenc_get_prev_char_head */ public final int prevCharHead(byte[]bytes, int p, int s, int end) { if (s <= p) return -1; // ?? return leftAdjustCharHead(bytes, p, s - 1, end); } /* onigenc_step_back */ public final int stepBack(byte[]bytes, int p, int s, int end, int n) { while (s != -1 && n-- > 0) { if (s <= p) return -1; s = leftAdjustCharHead(bytes, p, s - 1, end); } return s; } /* onigenc_step */ public final int step(byte[]bytes, int p, int end, int n) { int q = p; while (n-- > 0) { q += length(bytes, q, end); } return q <= end ? q : -1; } /* onigenc_strlen */ public abstract int strLength(byte[]bytes, int p, int end); public abstract int strCodeAt(byte[]bytes, int p, int end, int index); /* onigenc_strlen_null */ public final int strLengthNull(byte[]bytes, int p, int end) { int n = 0; while (true) { if (bytes[p] == 0) { int len = minLength(); if (len == 1) return n; int q = p + 1; while (len > 1) { if (bytes[q] != 0) break; q++; len--; } if (len == 1) return n; } p += length(bytes, p, end); n++; } } /* onigenc_str_bytelen_null */ public final int strByteLengthNull(byte[]bytes, int p, int end) { int p_, start; p_ = start = 0; while (true) { if (bytes[p_] == 0) { int len = minLength(); if (len == 1) return p_ - start; int q = p_ + 1; while (len > 1) { if (q >= bytes.length) return p_ - start; if (bytes[q] != 0) break; q++; len--; } if (len == 1) return p_ - start; } p_ += length(bytes, p_, end); } } /* onigenc_with_ascii_strncmp */ public final int strNCmp(byte[]bytes, int p, int end, byte[]ascii, int asciiP, int n) { while (n-- > 0) { if (p >= end) return ascii[asciiP]; int c = mbcToCode(bytes, p, end); int x = ascii[asciiP] - c; if (x != 0) return x; asciiP++; p += length(bytes, p, end); } return 0; } public final boolean isNewLine(int code) { return isCodeCType(code, CharacterType.NEWLINE); } public final boolean isGraph(int code) { return isCodeCType(code, CharacterType.GRAPH); } public final boolean isPrint(int code) { return isCodeCType(code, CharacterType.PRINT); } public final boolean isAlnum(int code) { return isCodeCType(code, CharacterType.ALNUM); } public final boolean isAlpha(int code) { return isCodeCType(code, CharacterType.ALPHA); } public final boolean isLower(int code) { return isCodeCType(code, CharacterType.LOWER); } public final boolean isUpper(int code) { return isCodeCType(code, CharacterType.UPPER); } public final boolean isCntrl(int code) { return isCodeCType(code, CharacterType.CNTRL); } public final boolean isPunct(int code) { return isCodeCType(code, CharacterType.PUNCT); } public final boolean isSpace(int code) { return isCodeCType(code, CharacterType.SPACE); } public final boolean isBlank(int code) { return isCodeCType(code, CharacterType.BLANK); } public final boolean isDigit(int code) { return isCodeCType(code, CharacterType.DIGIT); } public final boolean isXDigit(int code) { return isCodeCType(code, CharacterType.XDIGIT); } public final boolean isWord(int code) { return isCodeCType(code, CharacterType.WORD); } // ONIGENC_IS_MBC_WORD public final boolean isMbcWord(byte[]bytes, int p, int end) { return isWord(mbcToCode(bytes, p, end)); } // IS_CODE_SB_WORD public final boolean isSbWord(int code) { return isAscii(code) && isWord(code); } // ONIGENC_IS_MBC_HEAD public final boolean isMbcHead(byte[]bytes, int p, int end) { return length(bytes, p, end) != 1; } public boolean isMbcCrnl(byte[]bytes, int p, int end) { return mbcToCode(bytes, p, end) == 13 && isNewLine(bytes, p + length(bytes, p, end), end); } // ============================================================ // helpers // ============================================================ public static int digitVal(int code) { return code - '0'; } public static int odigitVal(int code) { return digitVal(code); } public final int xdigitVal(int code) { if (isDigit(code)) { return digitVal(code); } else { return isUpper(code) ? code - 'A' + 10 : code - 'a' + 10; } } // ONIGENC_IS_MBC_ASCII public static boolean isMbcAscii(byte b) { return (b & 0xff) < 128; // b > 0 ? } // ONIGENC_IS_CODE_ASCII public static boolean isAscii(int code) { return code < 128; } public static boolean isAscii(byte b) { return b >= 0; } public static byte asciiToLower(int c) { return AsciiTables.ToLowerCaseTable[c]; } public static byte asciiToUpper(int c) { return AsciiTables.ToUpperCaseTable[c]; } public static boolean isWordGraphPrint(int ctype) { return ctype == CharacterType.WORD || ctype == CharacterType.GRAPH || ctype == CharacterType.PRINT; } @Deprecated public final int mbcodeStartPosition() { return minLength() > 1 ? 0 : 0x80; } public final boolean isSingleByte() { return isSingleByte; } public final boolean isFixedWidth() { return isFixedWidth; } public static final byte NEW_LINE = (byte)0x0a; public static Encoding load(String name) { return load(name, "org.jcodings.specific"); } public static Encoding load(String name, String pkg) { String encClassName = pkg + "." + name + "Encoding"; Class encClass; try { encClass = Class.forName(encClassName); } catch (ClassNotFoundException cnfe) { throw new InternalException(ErrorMessages.ERR_ENCODING_CLASS_DEF_NOT_FOUND, encClassName); } try { return (Encoding)encClass.getField("INSTANCE").get(encClass); } catch (Exception e2) { throw new InternalException(ErrorMessages.ERR_ENCODING_LOAD_ERROR, encClassName); } } } jcodings-1.0.58/src/org/jcodings/EncodingDB.java000066400000000000000000000140041433325321700213640ustar00rootroot00000000000000/* * Permission is hereby granted, free of charge, to any person obtaining a copy of * this software and associated documentation files (the "Software"), to deal in * the Software without restriction, including without limitation the rights to * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies * of the Software, and to permit persons to whom the Software is furnished to do * so, subject to the following conditions: * * The above copyright notice and this permission notice shall be included in all * copies or substantial portions of the Software. * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE * SOFTWARE. */ package org.jcodings; import org.jcodings.exception.ErrorMessages; import org.jcodings.exception.InternalException; import org.jcodings.util.CaseInsensitiveBytesHash; public final class EncodingDB { public static final class Entry { private static int count; private final Entry base; private Encoding encoding; private final String encodingClass; private final int index; private final boolean isDummy; private final byte[]name; private Entry (byte[]name, String encodingClass, Entry base, boolean isDummy) { this.name = name; this.encodingClass = encodingClass; this.base = base; this.isDummy = isDummy; index = count++; } // declare Entry(String encodingClass) { this(null, encodingClass, null, false); } // replicate Entry(byte[]name, Entry base) { this(name, base.encodingClass, base, false); } // dummy Entry(byte[]name) { this(name, ascii.encodingClass, ascii, true); } // dummy with base Entry(byte[]name, Entry base, boolean dummy) { this(name, base.encodingClass, base, dummy); } @Override public int hashCode() { return encodingClass.hashCode(); } public Entry getBase() { return base; } public Encoding getEncoding() { if (encoding == null) { if (name == null) { encoding = EncodingList.getInstance(encodingClass); } else { encoding = EncodingList.getInstance(encodingClass).replicate(name); if (isDummy) encoding.setDummy(); } } return encoding; } public String getEncodingClass() { return encodingClass; } public int getIndex() { return index; } public boolean isDummy() { return isDummy; } } static Entry ascii; static final CaseInsensitiveBytesHash encodings = new CaseInsensitiveBytesHash(50); static final CaseInsensitiveBytesHash aliases = new CaseInsensitiveBytesHash(150); public static final CaseInsensitiveBytesHash getEncodings() { return encodings; } public static final CaseInsensitiveBytesHash getAliases() { return aliases; } public static void declare(String name, String encodingClass) { byte[]bytes = name.getBytes(); if (encodings.get(bytes) != null) throw new InternalException(ErrorMessages.ERR_ENCODING_ALREADY_REGISTERED, name); encodings.putDirect(bytes, new Entry(encodingClass)); } public static void alias(String alias, String original) { byte[]origBytes = original.getBytes(); Entry originalEntry = encodings.get(origBytes); if (originalEntry == null) throw new InternalException(ErrorMessages.ERR_NO_SUCH_ENCODNG, original); byte[]aliasBytes = alias.getBytes(); if (aliases.get(aliasBytes) != null) throw new InternalException(ErrorMessages.ERR_ENCODING_ALIAS_ALREADY_REGISTERED, alias); aliases.putDirect(aliasBytes, originalEntry); } public static void replicate(String replica, String original) { byte[]origBytes = original.getBytes(); Entry originalEntry = encodings.get(origBytes); if (originalEntry == null) throw new InternalException(ErrorMessages.ERR_NO_SUCH_ENCODNG, original); finishReplica(replica, originalEntry.isDummy, originalEntry); } private static void replicate(String replica, String original, boolean dummy) { byte[]origBytes = original.getBytes(); Entry originalEntry = encodings.get(origBytes); if (originalEntry == null) throw new InternalException(ErrorMessages.ERR_NO_SUCH_ENCODNG, original); finishReplica(replica, dummy, originalEntry); } private static void finishReplica(String replica, boolean dummy, Entry originalEntry) { byte[]replicaBytes = replica.getBytes(); if (encodings.get(replicaBytes) != null) throw new InternalException(ErrorMessages.ERR_ENCODING_REPLICA_ALREADY_REGISTERED, replica); encodings.putDirect(replicaBytes, new Entry(replicaBytes, originalEntry, dummy)); } public static void set_base(String name, String original) { } public static Entry dummy(byte[] bytes) { if (encodings.get(bytes) != null) throw new InternalException(ErrorMessages.ERR_ENCODING_ALREADY_REGISTERED, new String(bytes)); Entry entry = new Entry(bytes); encodings.putDirect(bytes, entry); return entry; } public static void dummy(String name) { dummy(name.getBytes()); } public static void dummy_unicode(String replica) { replicate(replica, replica + "BE", true); } static { EncodingList.load(); } } jcodings-1.0.58/src/org/jcodings/EncodingList.java000066400000000000000000000324241433325321700220200ustar00rootroot00000000000000/* * Permission is hereby granted, free of charge, to any person obtaining a copy of * this software and associated documentation files (the "Software"), to deal in * the Software without restriction, including without limitation the rights to * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies * of the Software, and to permit persons to whom the Software is furnished to do * so, subject to the following conditions: * * The above copyright notice and this permission notice shall be included in all * copies or substantial portions of the Software. * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE * SOFTWARE. */ package org.jcodings; import org.jcodings.specific.*; final class EncodingList { static final void load() { EncodingDB.declare("ASCII-8BIT", "ASCII"); EncodingDB.declare("UTF-8", "UTF8"); EncodingDB.declare("US-ASCII", "USASCII"); EncodingDB.declare("Big5", "BIG5"); EncodingDB.declare("Big5-HKSCS", "Big5HKSCS"); EncodingDB.declare("Big5-UAO", "Big5UAO"); EncodingDB.declare("CESU-8", "CESU8"); EncodingDB.declare("CP949", "CP949"); EncodingDB.declare("Emacs-Mule", "EmacsMule"); EncodingDB.declare("EUC-JP", "EUCJP"); EncodingDB.declare("EUC-KR", "EUCKR"); EncodingDB.declare("EUC-TW", "EUCTW"); EncodingDB.declare("GB18030", "GB18030"); EncodingDB.declare("GBK", "GBK"); EncodingDB.declare("ISO-8859-1", "ISO8859_1"); EncodingDB.declare("ISO-8859-2", "ISO8859_2"); EncodingDB.declare("ISO-8859-3", "ISO8859_3"); EncodingDB.declare("ISO-8859-4", "ISO8859_4"); EncodingDB.declare("ISO-8859-5", "ISO8859_5"); EncodingDB.declare("ISO-8859-6", "ISO8859_6"); EncodingDB.declare("ISO-8859-7", "ISO8859_7"); EncodingDB.declare("ISO-8859-8", "ISO8859_8"); EncodingDB.declare("ISO-8859-9", "ISO8859_9"); EncodingDB.declare("ISO-8859-10", "ISO8859_10"); EncodingDB.declare("ISO-8859-11", "ISO8859_11"); EncodingDB.declare("ISO-8859-13", "ISO8859_13"); EncodingDB.declare("ISO-8859-14", "ISO8859_14"); EncodingDB.declare("ISO-8859-15", "ISO8859_15"); EncodingDB.declare("ISO-8859-16", "ISO8859_16"); EncodingDB.declare("KOI8-R", "KOI8R"); EncodingDB.declare("KOI8-U", "KOI8U"); EncodingDB.declare("Shift_JIS", "SJIS"); EncodingDB.declare("UTF-16BE", "UTF16BE"); EncodingDB.declare("UTF-16LE", "UTF16LE"); EncodingDB.declare("UTF-32BE", "UTF32BE"); EncodingDB.declare("UTF-32LE", "UTF32LE"); EncodingDB.declare("Windows-31J", "Windows_31J"); EncodingDB.declare("Windows-1250", "Windows_1250"); EncodingDB.declare("Windows-1251", "Windows_1251"); EncodingDB.declare("Windows-1252", "Windows_1252"); EncodingDB.declare("Windows-1253", "Windows_1253"); EncodingDB.declare("Windows-1254", "Windows_1254"); EncodingDB.declare("Windows-1257", "Windows_1257"); EncodingDB.ascii = EncodingDB.encodings.get("ASCII-8BIT".getBytes()); EncodingDB.alias("BINARY", "ASCII-8BIT"); EncodingDB.replicate("IBM437", "ASCII-8BIT"); EncodingDB.alias("CP437", "IBM437"); EncodingDB.replicate("IBM720", "ASCII-8BIT"); EncodingDB.alias("CP720", "IBM720"); EncodingDB.replicate("IBM737", "ASCII-8BIT"); EncodingDB.alias("CP737", "IBM737"); EncodingDB.replicate("IBM775", "ASCII-8BIT"); EncodingDB.alias("CP775", "IBM775"); EncodingDB.replicate("CP850", "ASCII-8BIT"); EncodingDB.alias("IBM850", "CP850"); EncodingDB.replicate("IBM852", "ASCII-8BIT"); EncodingDB.replicate("CP852", "IBM852"); EncodingDB.replicate("IBM855", "ASCII-8BIT"); EncodingDB.replicate("CP855", "IBM855"); EncodingDB.replicate("IBM857", "ASCII-8BIT"); EncodingDB.alias("CP857", "IBM857"); EncodingDB.replicate("IBM860", "ASCII-8BIT"); EncodingDB.alias("CP860", "IBM860"); EncodingDB.replicate("IBM861", "ASCII-8BIT"); EncodingDB.alias("CP861", "IBM861"); EncodingDB.replicate("IBM862", "ASCII-8BIT"); EncodingDB.alias("CP862", "IBM862"); EncodingDB.replicate("IBM863", "ASCII-8BIT"); EncodingDB.alias("CP863", "IBM863"); EncodingDB.replicate("IBM864", "ASCII-8BIT"); EncodingDB.alias("CP864", "IBM864"); EncodingDB.replicate("IBM865", "ASCII-8BIT"); EncodingDB.alias("CP865", "IBM865"); EncodingDB.replicate("IBM866", "ASCII-8BIT"); EncodingDB.alias("CP866", "IBM866"); EncodingDB.replicate("IBM869", "ASCII-8BIT"); EncodingDB.alias("CP869", "IBM869"); EncodingDB.replicate("Windows-1258", "ASCII-8BIT"); EncodingDB.alias("CP1258", "Windows-1258"); EncodingDB.replicate("GB1988", "ASCII-8BIT"); EncodingDB.replicate("macCentEuro", "ASCII-8BIT"); EncodingDB.replicate("macCroatian", "ASCII-8BIT"); EncodingDB.replicate("macCyrillic", "ASCII-8BIT"); EncodingDB.replicate("macGreek", "ASCII-8BIT"); EncodingDB.replicate("macIceland", "ASCII-8BIT"); EncodingDB.replicate("macRoman", "ASCII-8BIT"); EncodingDB.replicate("macRomania", "ASCII-8BIT"); EncodingDB.replicate("macThai", "ASCII-8BIT"); EncodingDB.replicate("macTurkish", "ASCII-8BIT"); EncodingDB.replicate("macUkraine", "ASCII-8BIT"); EncodingDB.replicate("CP950", "Big5"); EncodingDB.set_base("Big5-HKSCS", "Big5"); EncodingDB.alias("Big5-HKSCS:2008", "Big5-HKSCS"); EncodingDB.replicate("CP951", "Big5-HKSCS"); EncodingDB.set_base("Big5-UAO", "Big5"); EncodingDB.dummy("IBM037"); EncodingDB.alias("ebcdic-cp-us", "IBM037"); EncodingDB.replicate("stateless-ISO-2022-JP", "Emacs-Mule"); EncodingDB.alias("eucJP", "EUC-JP" /* UI-OSF Application Platform Profile for Japanese Environment Version 1.1 */); EncodingDB.replicate("eucJP-ms", "EUC-JP" /* TOG/JVC CDE/Motif Technical WG */); EncodingDB.alias("euc-jp-ms", "eucJP-ms"); EncodingDB.replicate("CP51932", "EUC-JP"); EncodingDB.replicate("EUC-JIS-2004", "EUC-JP" /* defined at JIS X 0213:2004 */); EncodingDB.alias("EUC-JISX0213", "EUC-JIS-2004" /* defined at JIS X 0213:2000, and obsolete at JIS X 0213:2004 */); EncodingDB.alias("eucKR", "EUC-KR"); EncodingDB.alias("eucTW", "EUC-TW"); EncodingDB.replicate("GB2312", "EUC-KR"); EncodingDB.alias("EUC-CN", "GB2312"); EncodingDB.alias("eucCN", "GB2312"); EncodingDB.replicate("GB12345", "GB2312"); EncodingDB.alias("CP936", "GBK"); EncodingDB.dummy("ISO-2022-JP"); EncodingDB.alias("ISO2022-JP", "ISO-2022-JP"); EncodingDB.replicate("ISO-2022-JP-2", "ISO-2022-JP"); EncodingDB.alias("ISO2022-JP2", "ISO-2022-JP-2"); EncodingDB.replicate("CP50220", "ISO-2022-JP"); EncodingDB.replicate("CP50221", "ISO-2022-JP"); EncodingDB.alias("ISO8859-1", "ISO-8859-1"); EncodingDB.alias("ISO8859-2", "ISO-8859-2"); EncodingDB.alias("ISO8859-3", "ISO-8859-3"); EncodingDB.alias("ISO8859-4", "ISO-8859-4"); EncodingDB.alias("ISO8859-5", "ISO-8859-5"); EncodingDB.alias("ISO8859-6", "ISO-8859-6"); EncodingDB.replicate("Windows-1256", "ISO-8859-6"); EncodingDB.alias("CP1256", "Windows-1256"); EncodingDB.alias("ISO8859-7", "ISO-8859-7"); EncodingDB.alias("ISO8859-8", "ISO-8859-8"); EncodingDB.replicate("Windows-1255", "ISO-8859-8"); EncodingDB.alias("CP1255", "Windows-1255"); EncodingDB.alias("ISO8859-9", "ISO-8859-9"); EncodingDB.alias("ISO8859-10", "ISO-8859-10"); EncodingDB.alias("ISO8859-11", "ISO-8859-11"); EncodingDB.replicate("TIS-620", "ISO-8859-11"); EncodingDB.replicate("Windows-874", "ISO-8859-11"); EncodingDB.alias("CP874", "Windows-874"); EncodingDB.alias("ISO8859-13", "ISO-8859-13"); EncodingDB.alias("ISO8859-14", "ISO-8859-14"); EncodingDB.alias("ISO8859-15", "ISO-8859-15"); EncodingDB.alias("ISO8859-16", "ISO-8859-16"); EncodingDB.alias("CP878", "KOI8-R"); EncodingDB.replicate("MacJapanese", "Shift_JIS"); EncodingDB.alias("MacJapan", "MacJapanese"); EncodingDB.alias("ASCII", "US-ASCII"); EncodingDB.alias("ANSI_X3.4-1968", "US-ASCII"); EncodingDB.alias("646", "US-ASCII"); EncodingDB.dummy("UTF-7"); EncodingDB.alias("CP65000", "UTF-7"); EncodingDB.alias("CP65001", "UTF-8"); EncodingDB.replicate("UTF8-MAC", "UTF-8"); EncodingDB.alias("UTF-8-MAC", "UTF8-MAC"); EncodingDB.alias("UTF-8-HFS", "UTF8-MAC" /* Emacs 23.2 */); EncodingDB.dummy_unicode("UTF-16"); EncodingDB.dummy_unicode("UTF-32"); EncodingDB.alias("UCS-2BE", "UTF-16BE"); EncodingDB.alias("UCS-4BE", "UTF-32BE"); EncodingDB.alias("UCS-4LE", "UTF-32LE"); EncodingDB.alias("CP932", "Windows-31J"); EncodingDB.alias("csWindows31J", "Windows-31J" /* IANA. IE6 don't accept Windows-31J but csWindows31J. */); EncodingDB.alias("SJIS", "Windows-31J"); EncodingDB.alias("PCK", "Windows-31J"); EncodingDB.alias("CP1250", "Windows-1250"); EncodingDB.alias("CP1251", "Windows-1251"); EncodingDB.alias("CP1252", "Windows-1252"); EncodingDB.alias("CP1253", "Windows-1253"); EncodingDB.alias("CP1254", "Windows-1254"); EncodingDB.alias("CP1257", "Windows-1257"); EncodingDB.replicate("UTF8-DoCoMo", "UTF-8"); EncodingDB.replicate("SJIS-DoCoMo", "Windows-31J"); EncodingDB.replicate("UTF8-KDDI", "UTF-8"); EncodingDB.replicate("SJIS-KDDI", "Windows-31J"); EncodingDB.replicate("ISO-2022-JP-KDDI", "ISO-2022-JP"); EncodingDB.replicate("stateless-ISO-2022-JP-KDDI", "stateless-ISO-2022-JP"); EncodingDB.replicate("UTF8-SoftBank", "UTF-8"); EncodingDB.replicate("SJIS-SoftBank", "Windows-31J"); EncodingDB.alias("MS932", "Windows-31J"); EncodingDB.alias("UTF8", "UTF-8"); } public static Encoding getInstance(String name) { switch (name) { case "ASCII": return ASCIIEncoding.INSTANCE; case "UTF8": return UTF8Encoding.INSTANCE; case "USASCII": return USASCIIEncoding.INSTANCE; case "BIG5": return BIG5Encoding.INSTANCE; case "Big5HKSCS": return Big5HKSCSEncoding.INSTANCE; case "Big5UAO": return Big5UAOEncoding.INSTANCE; case "CESU8": return CESU8Encoding.INSTANCE; case "CP949": return CP949Encoding.INSTANCE; case "EmacsMule": return EmacsMuleEncoding.INSTANCE; case "EUCJP": return EUCJPEncoding.INSTANCE; case "EUCKR": return EUCKREncoding.INSTANCE; case "EUCTW": return EUCTWEncoding.INSTANCE; case "GB18030": return GB18030Encoding.INSTANCE; case "GBK": return GBKEncoding.INSTANCE; case "ISO8859_1": return ISO8859_1Encoding.INSTANCE; case "ISO8859_2": return ISO8859_2Encoding.INSTANCE; case "ISO8859_3": return ISO8859_3Encoding.INSTANCE; case "ISO8859_4": return ISO8859_4Encoding.INSTANCE; case "ISO8859_5": return ISO8859_5Encoding.INSTANCE; case "ISO8859_6": return ISO8859_6Encoding.INSTANCE; case "ISO8859_7": return ISO8859_7Encoding.INSTANCE; case "ISO8859_8": return ISO8859_8Encoding.INSTANCE; case "ISO8859_9": return ISO8859_9Encoding.INSTANCE; case "ISO8859_10": return ISO8859_10Encoding.INSTANCE; case "ISO8859_11": return ISO8859_11Encoding.INSTANCE; case "ISO8859_13": return ISO8859_13Encoding.INSTANCE; case "ISO8859_14": return ISO8859_14Encoding.INSTANCE; case "ISO8859_15": return ISO8859_15Encoding.INSTANCE; case "ISO8859_16": return ISO8859_16Encoding.INSTANCE; case "KOI8R": return KOI8REncoding.INSTANCE; case "KOI8U": return KOI8UEncoding.INSTANCE; case "SJIS": return SJISEncoding.INSTANCE; case "UTF16BE": return UTF16BEEncoding.INSTANCE; case "UTF16LE": return UTF16LEEncoding.INSTANCE; case "UTF32BE": return UTF32BEEncoding.INSTANCE; case "UTF32LE": return UTF32LEEncoding.INSTANCE; case "Windows_31J": return Windows_31JEncoding.INSTANCE; case "Windows_1250": return Windows_1250Encoding.INSTANCE; case "Windows_1251": return Windows_1251Encoding.INSTANCE; case "Windows_1252": return Windows_1252Encoding.INSTANCE; case "Windows_1253": return Windows_1253Encoding.INSTANCE; case "Windows_1254": return Windows_1254Encoding.INSTANCE; case "Windows_1257": return Windows_1257Encoding.INSTANCE; default: return Encoding.load(name); } } } jcodings-1.0.58/src/org/jcodings/EucEncoding.java000066400000000000000000000035151433325321700216200ustar00rootroot00000000000000/* * Permission is hereby granted, free of charge, to any person obtaining a copy of * this software and associated documentation files (the "Software"), to deal in * the Software without restriction, including without limitation the rights to * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies * of the Software, and to permit persons to whom the Software is furnished to do * so, subject to the following conditions: * * The above copyright notice and this permission notice shall be included in all * copies or substantial portions of the Software. * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE * SOFTWARE. */ package org.jcodings; public abstract class EucEncoding extends MultiByteEncoding { protected EucEncoding(String name, int minLength, int maxLength, int[]EncLen, int[][]Trans, short[]CTypeTable) { super(name, minLength, maxLength, EncLen, Trans, CTypeTable); } protected abstract boolean isLead(int c); @Override public int leftAdjustCharHead(byte[]bytes, int p, int s, int end) { /* In this encoding mb-trail bytes doesn't mix with single bytes. */ if (s <= p) return s; int p_ = s; while (!isLead(bytes[p_] & 0xff) && p_ > p) p_--; int len = length(bytes, p_, end); if (p_ + len > s) return p_; p_ += len; return p_ + ((s - p_) & ~1); } } jcodings-1.0.58/src/org/jcodings/ISOEncoding.java000066400000000000000000000044361433325321700215410ustar00rootroot00000000000000/* * Permission is hereby granted, free of charge, to any person obtaining a copy of * this software and associated documentation files (the "Software"), to deal in * the Software without restriction, including without limitation the rights to * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies * of the Software, and to permit persons to whom the Software is furnished to do * so, subject to the following conditions: * * The above copyright notice and this permission notice shall be included in all * copies or substantial portions of the Software. * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE * SOFTWARE. */ package org.jcodings; public abstract class ISOEncoding extends CaseFoldMapEncoding { public static int SHARP_s = 0xdf; protected ISOEncoding(String name, short[]CTypeTable, byte[]LowerCaseTable, int[][]CaseFoldMap) { this(name, CTypeTable, LowerCaseTable, CaseFoldMap, true); } protected ISOEncoding(String name, short[]CTypeTable, byte[]LowerCaseTable, int[][]CaseFoldMap, boolean foldFlag) { super(name, CTypeTable, LowerCaseTable, CaseFoldMap, foldFlag); } @Override public String getCharsetName() { return new String(getName()); } /** iso_*_mbc_case_fold */ @Override public int mbcCaseFold(int flag, byte[]bytes, IntHolder pp, int end, byte[]lower) { int p = pp.value; int lowerP = 0; if (bytes[p] == (byte)0xdf && (flag & Config.INTERNAL_ENC_CASE_FOLD_MULTI_CHAR) != 0) { lower[lowerP++] = 's'; lower[lowerP] = 's'; pp.value++; return 2; } lower[lowerP] = LowerCaseTable[bytes[p] & 0xff]; pp.value++; return 1; } @Override public boolean isCodeCType(int code, int ctype) { return code < 256 ? isCodeCTypeInternal(code, ctype) : false; } } jcodings-1.0.58/src/org/jcodings/IntHolder.java000066400000000000000000000021771433325321700213300ustar00rootroot00000000000000/* * Permission is hereby granted, free of charge, to any person obtaining a copy of * this software and associated documentation files (the "Software"), to deal in * the Software without restriction, including without limitation the rights to * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies * of the Software, and to permit persons to whom the Software is furnished to do * so, subject to the following conditions: * * The above copyright notice and this permission notice shall be included in all * copies or substantial portions of the Software. * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE * SOFTWARE. */ package org.jcodings; public class IntHolder { public int value; } jcodings-1.0.58/src/org/jcodings/MultiByteEncoding.java000066400000000000000000000171461433325321700230270ustar00rootroot00000000000000/* * Permission is hereby granted, free of charge, to any person obtaining a copy of * this software and associated documentation files (the "Software"), to deal in * the Software without restriction, including without limitation the rights to * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies * of the Software, and to permit persons to whom the Software is furnished to do * so, subject to the following conditions: * * The above copyright notice and this permission notice shall be included in all * copies or substantial portions of the Software. * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE * SOFTWARE. */ package org.jcodings; import org.jcodings.ascii.AsciiTables; import org.jcodings.exception.ErrorCodes; import static java.lang.Integer.toUnsignedLong; public abstract class MultiByteEncoding extends AbstractEncoding { protected final int EncLen[]; protected static final int A = -1; // ACCEPT protected static final int F = -2; // FAILURE protected final int Trans[][]; protected final int TransZero[]; protected MultiByteEncoding(String name, int minLength, int maxLength, int[]EncLen, int[][]Trans, short[]CTypeTable) { super(name, minLength, maxLength, CTypeTable); this.EncLen = EncLen; this.Trans = Trans; this.TransZero = Trans != null ? Trans[0] : null; } @Override public int length(byte c) { return EncLen[c & 0xff]; } protected final int missing(int n) { return -1 - n; } protected final int missing(int b, int delta) { return missing(EncLen[b] - delta); } protected final int safeLengthForUptoFour(byte[]bytes, int p ,int end) { int b = bytes[p] & 0xff; int s = TransZero[b]; if (s < 0) return s == A ? 1 : CHAR_INVALID; return lengthForTwoUptoFour(bytes, p, end, b, s); } protected final int lengthForTwoUptoFour(byte[]bytes, int p, int end, int b, int s) { if (++p == end) return missing(b, 1); s = Trans[s][bytes[p] & 0xff]; if (s < 0) return s == A ? 2 : CHAR_INVALID; return lengthForThreeUptoFour(bytes, p, end, b, s); } private int lengthForThreeUptoFour(byte[]bytes, int p, int end, int b, int s) { if (++p == end) return missing(b, 2); s = Trans[s][bytes[p] & 0xff]; if (s < 0) return s == A ? 3 : CHAR_INVALID; if (++p == end) return missing(b, 3); s = Trans[s][bytes[p] & 0xff]; return s == A ? 4 : CHAR_INVALID; } protected final int safeLengthForUptoThree(byte[]bytes, int p, int end) { int b = bytes[p] & 0xff; int s = TransZero[b]; if (s < 0) return s == A ? 1 : CHAR_INVALID; return lengthForTwoUptoThree(bytes, p, end, b, s); } private int lengthForTwoUptoThree(byte[]bytes, int p, int end, int b, int s) { if (++p == end) return missing(b, 1); s = Trans[s][bytes[p] & 0xff]; if (s < 0) return s == A ? 2 : CHAR_INVALID; return lengthForThree(bytes, p, end, b, s); } private int lengthForThree(byte[]bytes, int p, int end, int b, int s) { if (++p == end) return missing(b, 2); s = Trans[s][bytes[p] & 0xff]; return s == A ? 3 : CHAR_INVALID; } protected final int safeLengthForUptoTwo(byte[]bytes, int p, int end) { int b = bytes[p] & 0xff; int s = TransZero[b]; if (s < 0) return s == A ? 1 : CHAR_INVALID; return lengthForTwo(bytes, p, end, b, s); } private int lengthForTwo(byte[]bytes, int p, int end, int b, int s) { if (++p == end) return missing(b, 1); s = Trans[s][bytes[p] & 0xff]; return s == A ? 2 : CHAR_INVALID; } protected final int mbnMbcToCode(byte[]bytes, int p, int end) { int len = length(bytes, p, end); int n = bytes[p++] & 0xff; if (len == 1) return n; for (int i=1; i= end) break; int c = bytes[p++] & 0xff; n <<= 8; n += c; } return n; } @Override public int caseMap(IntHolder flagP, byte[] bytes, IntHolder pp, int end, byte[] to, int toP, int toEnd) { return asciiOnlyCaseMap(flagP, bytes, pp, end, to, toP, toEnd); } protected final int mbnMbcCaseFold(int flag, byte[]bytes, IntHolder pp, int end, byte[]lower) { int p = pp.value; int lowerP = 0; if (isAscii(bytes[p] & 0xff)) { lower[lowerP] = AsciiTables.ToLowerCaseTable[bytes[p] & 0xff]; pp.value++; return 1; } else { int len = length(bytes, p, end); for (int i=0; i>> 8) & 0xff); } bytes[p_++] = (byte)(code & 0xff); if (length(bytes, p, p_) != (p_ - p)) return ErrorCodes.ERR_INVALID_CODE_POINT_VALUE; return p_ - p; } protected final int mb4CodeToMbc(int code, byte[]bytes, int p) { int p_ = p; if ((code & 0xff000000) != 0) bytes[p_++] = (byte)((code >>> 24) & 0xff); if ((code & 0xff0000) != 0 || p_ != p) bytes[p_++] = (byte)((code >>> 16) & 0xff); if ((code & 0xff00) != 0 || p_ != p) bytes[p_++] = (byte)((code >>> 8) & 0xff); bytes[p_++] = (byte)(code & 0xff); if (length(bytes, p, p_) != (p_ - p)) return ErrorCodes.ERR_INVALID_CODE_POINT_VALUE; return p_ - p; } protected final boolean mb2IsCodeCType(int code, int ctype) { if (toUnsignedLong(code) < 128) { // unsigned 32-bit return isCodeCTypeInternal(code, ctype); // configured with ascii } else { if (isWordGraphPrint(ctype)) { return codeToMbcLength(code) > 1; } } return false; } protected final boolean mb4IsCodeCType(int code, int ctype) { return mb2IsCodeCType(code, ctype); } /* onigenc_strlen */ public int strLength(byte[]bytes, int p, int end) { int n = 0; int q = p; while (q < end) { q += length(bytes, q, end); n++; } return n; } public int strCodeAt(byte[]bytes, int p, int end, int index) { int n = 0; int q = p; while (q < end) { if (n == index) return mbcToCode(bytes, q, end); q += length(bytes, q, end); n++; } return -1; } public static boolean isInRange(int code, int from, int to) { return code - from >= 0 && to - code >= 0; } } jcodings-1.0.58/src/org/jcodings/ObjPtr.java000066400000000000000000000024361433325321700206360ustar00rootroot00000000000000/* * Permission is hereby granted, free of charge, to any person obtaining a copy of * this software and associated documentation files (the "Software"), to deal in * the Software without restriction, including without limitation the rights to * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies * of the Software, and to permit persons to whom the Software is furnished to do * so, subject to the following conditions: * * The above copyright notice and this permission notice shall be included in all * copies or substantial portions of the Software. * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE * SOFTWARE. */ package org.jcodings; public final class ObjPtr { public ObjPtr() { this(null); } public ObjPtr(T p) { this.p = p; } public T p; static final ObjPtr NULL = new ObjPtr(); } jcodings-1.0.58/src/org/jcodings/Ptr.java000066400000000000000000000024111433325321700201740ustar00rootroot00000000000000/* * Permission is hereby granted, free of charge, to any person obtaining a copy of * this software and associated documentation files (the "Software"), to deal in * the Software without restriction, including without limitation the rights to * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies * of the Software, and to permit persons to whom the Software is furnished to do * so, subject to the following conditions: * * The above copyright notice and this permission notice shall be included in all * copies or substantial portions of the Software. * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE * SOFTWARE. */ package org.jcodings; public final class Ptr { public Ptr() { this(0); } public Ptr(int p) { this.p = p; } public int p; public static final Ptr NULL = new Ptr(0); } jcodings-1.0.58/src/org/jcodings/SingleByteEncoding.java000066400000000000000000000062741433325321700231560ustar00rootroot00000000000000/* * Permission is hereby granted, free of charge, to any person obtaining a copy of * this software and associated documentation files (the "Software"), to deal in * the Software without restriction, including without limitation the rights to * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies * of the Software, and to permit persons to whom the Software is furnished to do * so, subject to the following conditions: * * The above copyright notice and this permission notice shall be included in all * copies or substantial portions of the Software. * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE * SOFTWARE. */ package org.jcodings; import org.jcodings.exception.ErrorCodes; public abstract class SingleByteEncoding extends AbstractEncoding { public static final int MAX_BYTE = 0xff; protected final byte[] LowerCaseTable; protected SingleByteEncoding(String name, short[] CTypeTable, byte[] LowerCaseTable) { super(name, 1, 1, CTypeTable); this.LowerCaseTable = LowerCaseTable; } /** onigenc_single_byte_mbc_enc_len */ @Override public int length(byte c) { return 1; } @Override public int length(byte[] bytes, int p, int end) { return 1; } @Override public final int strLength(byte[] bytes, int p, int end) { return end - p; } @Override public int strCodeAt(byte[] bytes, int p, int end, int index) { return bytes[index] & 0xff; } // onigenc_is_mbc_newline_0x0a here @Override public int caseMap(IntHolder flagP, byte[] bytes, IntHolder pp, int end, byte[] to, int toP, int toEnd) { return singleByteAsciiOnlyCaseMap(flagP, bytes, pp, end, to, toP, toEnd); } /** onigenc_single_byte_mbc_to_code */ @Override public int mbcToCode(byte[] bytes, int p, int end) { return bytes[p] & 0xff; } /** onigenc_single_byte_code_to_mbclen */ @Override public int codeToMbcLength(int code) { return 1; } /** onigenc_single_byte_code_to_mbc */ @Override public final int codeToMbc(int code, byte[] bytes, int p) { if (code > MAX_BYTE) return ErrorCodes.ERR_TOO_BIG_WIDE_CHAR_VALUE; bytes[p] = (byte)code; return 1; } /** onigenc_not_support_get_ctype_code_range */ @Override public final int[] ctypeCodeRange(int ctype, IntHolder sbOut) { return null; } /** onigenc_single_byte_left_adjust_char_head */ @Override public final int leftAdjustCharHead(byte[] bytes, int p, int s, int end) { return s; } /** onigenc_always_true_is_allowed_reverse_match */ @Override public final boolean isReverseMatchAllowed(byte[] bytes, int p, int end) { return true; } } jcodings-1.0.58/src/org/jcodings/ascii/000077500000000000000000000000001433325321700176565ustar00rootroot00000000000000jcodings-1.0.58/src/org/jcodings/ascii/AsciiTables.java000066400000000000000000000272231433325321700227120ustar00rootroot00000000000000/* * Permission is hereby granted, free of charge, to any person obtaining a copy of * this software and associated documentation files (the "Software"), to deal in * the Software without restriction, including without limitation the rights to * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies * of the Software, and to permit persons to whom the Software is furnished to do * so, subject to the following conditions: * * The above copyright notice and this permission notice shall be included in all * copies or substantial portions of the Software. * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE * SOFTWARE. */ package org.jcodings.ascii; public class AsciiTables { public static final short AsciiCtypeTable[] = { 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x420c, 0x4209, 0x4208, 0x4208, 0x4208, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4284, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x78b0, 0x78b0, 0x78b0, 0x78b0, 0x78b0, 0x78b0, 0x78b0, 0x78b0, 0x78b0, 0x78b0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x7ca2, 0x7ca2, 0x7ca2, 0x7ca2, 0x7ca2, 0x7ca2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x51a0, 0x41a0, 0x78e2, 0x78e2, 0x78e2, 0x78e2, 0x78e2, 0x78e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x4008, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }; public static final byte ToLowerCaseTable[] = { (byte)'\000', (byte)'\001', (byte)'\002', (byte)'\003', (byte)'\004', (byte)'\005', (byte)'\006', (byte)'\007', (byte)'\010', (byte)'\011', (byte)'\012', (byte)'\013', (byte)'\014', (byte)'\015', (byte)'\016', (byte)'\017', (byte)'\020', (byte)'\021', (byte)'\022', (byte)'\023', (byte)'\024', (byte)'\025', (byte)'\026', (byte)'\027', (byte)'\030', (byte)'\031', (byte)'\032', (byte)'\033', (byte)'\034', (byte)'\035', (byte)'\036', (byte)'\037', (byte)'\040', (byte)'\041', (byte)'\042', (byte)'\043', (byte)'\044', (byte)'\045', (byte)'\046', (byte)'\047', (byte)'\050', (byte)'\051', (byte)'\052', (byte)'\053', (byte)'\054', (byte)'\055', (byte)'\056', (byte)'\057', (byte)'\060', (byte)'\061', (byte)'\062', (byte)'\063', (byte)'\064', (byte)'\065', (byte)'\066', (byte)'\067', (byte)'\070', (byte)'\071', (byte)'\072', (byte)'\073', (byte)'\074', (byte)'\075', (byte)'\076', (byte)'\077', (byte)'\100', (byte)'\141', (byte)'\142', (byte)'\143', (byte)'\144', (byte)'\145', (byte)'\146', (byte)'\147', (byte)'\150', (byte)'\151', (byte)'\152', (byte)'\153', (byte)'\154', (byte)'\155', (byte)'\156', (byte)'\157', (byte)'\160', (byte)'\161', (byte)'\162', (byte)'\163', (byte)'\164', (byte)'\165', (byte)'\166', (byte)'\167', (byte)'\170', (byte)'\171', (byte)'\172', (byte)'\133', (byte)'\134', (byte)'\135', (byte)'\136', (byte)'\137', (byte)'\140', (byte)'\141', (byte)'\142', (byte)'\143', (byte)'\144', (byte)'\145', (byte)'\146', (byte)'\147', (byte)'\150', (byte)'\151', (byte)'\152', (byte)'\153', (byte)'\154', (byte)'\155', (byte)'\156', (byte)'\157', (byte)'\160', (byte)'\161', (byte)'\162', (byte)'\163', (byte)'\164', (byte)'\165', (byte)'\166', (byte)'\167', (byte)'\170', (byte)'\171', (byte)'\172', (byte)'\173', (byte)'\174', (byte)'\175', (byte)'\176', (byte)'\177', (byte)'\200', (byte)'\201', (byte)'\202', (byte)'\203', (byte)'\204', (byte)'\205', (byte)'\206', (byte)'\207', (byte)'\210', (byte)'\211', (byte)'\212', (byte)'\213', (byte)'\214', (byte)'\215', (byte)'\216', (byte)'\217', (byte)'\220', (byte)'\221', (byte)'\222', (byte)'\223', (byte)'\224', (byte)'\225', (byte)'\226', (byte)'\227', (byte)'\230', (byte)'\231', (byte)'\232', (byte)'\233', (byte)'\234', (byte)'\235', (byte)'\236', (byte)'\237', (byte)'\240', (byte)'\241', (byte)'\242', (byte)'\243', (byte)'\244', (byte)'\245', (byte)'\246', (byte)'\247', (byte)'\250', (byte)'\251', (byte)'\252', (byte)'\253', (byte)'\254', (byte)'\255', (byte)'\256', (byte)'\257', (byte)'\260', (byte)'\261', (byte)'\262', (byte)'\263', (byte)'\264', (byte)'\265', (byte)'\266', (byte)'\267', (byte)'\270', (byte)'\271', (byte)'\272', (byte)'\273', (byte)'\274', (byte)'\275', (byte)'\276', (byte)'\277', (byte)'\300', (byte)'\301', (byte)'\302', (byte)'\303', (byte)'\304', (byte)'\305', (byte)'\306', (byte)'\307', (byte)'\310', (byte)'\311', (byte)'\312', (byte)'\313', (byte)'\314', (byte)'\315', (byte)'\316', (byte)'\317', (byte)'\320', (byte)'\321', (byte)'\322', (byte)'\323', (byte)'\324', (byte)'\325', (byte)'\326', (byte)'\327', (byte)'\330', (byte)'\331', (byte)'\332', (byte)'\333', (byte)'\334', (byte)'\335', (byte)'\336', (byte)'\337', (byte)'\340', (byte)'\341', (byte)'\342', (byte)'\343', (byte)'\344', (byte)'\345', (byte)'\346', (byte)'\347', (byte)'\350', (byte)'\351', (byte)'\352', (byte)'\353', (byte)'\354', (byte)'\355', (byte)'\356', (byte)'\357', (byte)'\360', (byte)'\361', (byte)'\362', (byte)'\363', (byte)'\364', (byte)'\365', (byte)'\366', (byte)'\367', (byte)'\370', (byte)'\371', (byte)'\372', (byte)'\373', (byte)'\374', (byte)'\375', (byte)'\376', (byte)'\377', }; public static final byte ToUpperCaseTable[] = { (byte)'\000', (byte)'\001', (byte)'\002', (byte)'\003', (byte)'\004', (byte)'\005', (byte)'\006', (byte)'\007', (byte)'\010', (byte)'\011', (byte)'\012', (byte)'\013', (byte)'\014', (byte)'\015', (byte)'\016', (byte)'\017', (byte)'\020', (byte)'\021', (byte)'\022', (byte)'\023', (byte)'\024', (byte)'\025', (byte)'\026', (byte)'\027', (byte)'\030', (byte)'\031', (byte)'\032', (byte)'\033', (byte)'\034', (byte)'\035', (byte)'\036', (byte)'\037', (byte)'\040', (byte)'\041', (byte)'\042', (byte)'\043', (byte)'\044', (byte)'\045', (byte)'\046', (byte)'\047', (byte)'\050', (byte)'\051', (byte)'\052', (byte)'\053', (byte)'\054', (byte)'\055', (byte)'\056', (byte)'\057', (byte)'\060', (byte)'\061', (byte)'\062', (byte)'\063', (byte)'\064', (byte)'\065', (byte)'\066', (byte)'\067', (byte)'\070', (byte)'\071', (byte)'\072', (byte)'\073', (byte)'\074', (byte)'\075', (byte)'\076', (byte)'\077', (byte)'\100', (byte)'\101', (byte)'\102', (byte)'\103', (byte)'\104', (byte)'\105', (byte)'\106', (byte)'\107', (byte)'\110', (byte)'\111', (byte)'\112', (byte)'\113', (byte)'\114', (byte)'\115', (byte)'\116', (byte)'\117', (byte)'\120', (byte)'\121', (byte)'\122', (byte)'\123', (byte)'\124', (byte)'\125', (byte)'\126', (byte)'\127', (byte)'\130', (byte)'\131', (byte)'\132', (byte)'\133', (byte)'\134', (byte)'\135', (byte)'\136', (byte)'\137', (byte)'\140', (byte)'\101', (byte)'\102', (byte)'\103', (byte)'\104', (byte)'\105', (byte)'\106', (byte)'\107', (byte)'\110', (byte)'\111', (byte)'\112', (byte)'\113', (byte)'\114', (byte)'\115', (byte)'\116', (byte)'\117', (byte)'\120', (byte)'\121', (byte)'\122', (byte)'\123', (byte)'\124', (byte)'\125', (byte)'\126', (byte)'\127', (byte)'\130', (byte)'\131', (byte)'\132', (byte)'\173', (byte)'\174', (byte)'\175', (byte)'\176', (byte)'\177', (byte)'\200', (byte)'\201', (byte)'\202', (byte)'\203', (byte)'\204', (byte)'\205', (byte)'\206', (byte)'\207', (byte)'\210', (byte)'\211', (byte)'\212', (byte)'\213', (byte)'\214', (byte)'\215', (byte)'\216', (byte)'\217', (byte)'\220', (byte)'\221', (byte)'\222', (byte)'\223', (byte)'\224', (byte)'\225', (byte)'\226', (byte)'\227', (byte)'\230', (byte)'\231', (byte)'\232', (byte)'\233', (byte)'\234', (byte)'\235', (byte)'\236', (byte)'\237', (byte)'\240', (byte)'\241', (byte)'\242', (byte)'\243', (byte)'\244', (byte)'\245', (byte)'\246', (byte)'\247', (byte)'\250', (byte)'\251', (byte)'\252', (byte)'\253', (byte)'\254', (byte)'\255', (byte)'\256', (byte)'\257', (byte)'\260', (byte)'\261', (byte)'\262', (byte)'\263', (byte)'\264', (byte)'\265', (byte)'\266', (byte)'\267', (byte)'\270', (byte)'\271', (byte)'\272', (byte)'\273', (byte)'\274', (byte)'\275', (byte)'\276', (byte)'\277', (byte)'\300', (byte)'\301', (byte)'\302', (byte)'\303', (byte)'\304', (byte)'\305', (byte)'\306', (byte)'\307', (byte)'\310', (byte)'\311', (byte)'\312', (byte)'\313', (byte)'\314', (byte)'\315', (byte)'\316', (byte)'\317', (byte)'\320', (byte)'\321', (byte)'\322', (byte)'\323', (byte)'\324', (byte)'\325', (byte)'\326', (byte)'\327', (byte)'\330', (byte)'\331', (byte)'\332', (byte)'\333', (byte)'\334', (byte)'\335', (byte)'\336', (byte)'\337', (byte)'\340', (byte)'\341', (byte)'\342', (byte)'\343', (byte)'\344', (byte)'\345', (byte)'\346', (byte)'\347', (byte)'\350', (byte)'\351', (byte)'\352', (byte)'\353', (byte)'\354', (byte)'\355', (byte)'\356', (byte)'\357', (byte)'\360', (byte)'\361', (byte)'\362', (byte)'\363', (byte)'\364', (byte)'\365', (byte)'\366', (byte)'\367', (byte)'\370', (byte)'\371', (byte)'\372', (byte)'\373', (byte)'\374', (byte)'\375', (byte)'\376', (byte)'\377', }; public static final int LowerMap[][] = { {0x41, 0x61}, {0x42, 0x62}, {0x43, 0x63}, {0x44, 0x64}, {0x45, 0x65}, {0x46, 0x66}, {0x47, 0x67}, {0x48, 0x68}, {0x49, 0x69}, {0x4a, 0x6a}, {0x4b, 0x6b}, {0x4c, 0x6c}, {0x4d, 0x6d}, {0x4e, 0x6e}, {0x4f, 0x6f}, {0x50, 0x70}, {0x51, 0x71}, {0x52, 0x72}, {0x53, 0x73}, {0x54, 0x74}, {0x55, 0x75}, {0x56, 0x76}, {0x57, 0x77}, {0x58, 0x78}, {0x59, 0x79}, {0x5a, 0x7a} }; }jcodings-1.0.58/src/org/jcodings/constants/000077500000000000000000000000001433325321700206025ustar00rootroot00000000000000jcodings-1.0.58/src/org/jcodings/constants/CharacterType.java000066400000000000000000000043521433325321700242070ustar00rootroot00000000000000/* * Permission is hereby granted, free of charge, to any person obtaining a copy of * this software and associated documentation files (the "Software"), to deal in * the Software without restriction, including without limitation the rights to * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies * of the Software, and to permit persons to whom the Software is furnished to do * so, subject to the following conditions: * * The above copyright notice and this permission notice shall be included in all * copies or substantial portions of the Software. * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE * SOFTWARE. */ package org.jcodings.constants; public interface CharacterType { final int NEWLINE = 0; final int ALPHA = 1; final int BLANK = 2; final int CNTRL = 3; final int DIGIT = 4; final int GRAPH = 5; final int LOWER = 6; final int PRINT = 7; final int PUNCT = 8; final int SPACE = 9; final int UPPER = 10; final int XDIGIT = 11; final int WORD = 12; final int ALNUM = 13; /* alpha || digit */ final int ASCII = 14; final int MAX_STD_CTYPE = 14; final int BIT_NEWLINE = (1<< NEWLINE); final int BIT_ALPHA = (1<< ALPHA); final int BIT_BLANK = (1<< BLANK); final int BIT_CNTRL = (1<< CNTRL); final int BIT_DIGIT = (1<< DIGIT); final int BIT_GRAPH = (1<< GRAPH); final int BIT_LOWER = (1<< LOWER); final int BIT_PRINT = (1<< PRINT); final int BIT_PUNCT = (1<< PUNCT); final int BIT_SPACE = (1<< SPACE); final int BIT_UPPER = (1<< UPPER); final int BIT_XDIGIT = (1<< XDIGIT); final int BIT_WORD = (1<< WORD); final int BIT_ALNUM = (1<< ALNUM); final int BIT_ASCII = (1<< ASCII); } jcodings-1.0.58/src/org/jcodings/constants/PosixBracket.java000066400000000000000000000044651433325321700240540ustar00rootroot00000000000000/* * Permission is hereby granted, free of charge, to any person obtaining a copy of * this software and associated documentation files (the "Software"), to deal in * the Software without restriction, including without limitation the rights to * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies * of the Software, and to permit persons to whom the Software is furnished to do * so, subject to the following conditions: * * The above copyright notice and this permission notice shall be included in all * copies or substantial portions of the Software. * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE * SOFTWARE. */ package org.jcodings.constants; import org.jcodings.util.CaseInsensitiveBytesHash; public class PosixBracket{ public static final byte[][] PBSNamesLower = { "alnum".getBytes(), "alpha".getBytes(), "blank".getBytes(), "cntrl".getBytes(), "digit".getBytes(), "graph".getBytes(), "lower".getBytes(), "print".getBytes(), "punct".getBytes(), "space".getBytes(), "upper".getBytes(), "xdigit".getBytes(), "ascii".getBytes(), "word".getBytes() }; public static final int PBSValues[] = { CharacterType.ALNUM, CharacterType.ALPHA, CharacterType.BLANK, CharacterType.CNTRL, CharacterType.DIGIT, CharacterType.GRAPH, CharacterType.LOWER, CharacterType.PRINT, CharacterType.PUNCT, CharacterType.SPACE, CharacterType.UPPER, CharacterType.XDIGIT, CharacterType.ASCII, CharacterType.WORD, }; public static final CaseInsensitiveBytesHash PBSTableUpper = new CaseInsensitiveBytesHash(PBSNamesLower.length + 5); static { for (int i=0; i CODE_TO_ERROR = new IntHash(); static { for (EncodingError error : EncodingError.values()) { CODE_TO_ERROR.put(error.getCode(), error); } } } jcodings-1.0.58/src/org/jcodings/exception/EncodingException.java000066400000000000000000000040761433325321700250430ustar00rootroot00000000000000/* * Permission is hereby granted, free of charge, to any person obtaining a copy of * this software and associated documentation files (the "Software"), to deal in * the Software without restriction, including without limitation the rights to * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies * of the Software, and to permit persons to whom the Software is furnished to do * so, subject to the following conditions: * * The above copyright notice and this permission notice shall be included in all * copies or substantial portions of the Software. * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE * SOFTWARE. */ package org.jcodings.exception; public class EncodingException extends JCodingsException { private final EncodingError error; public EncodingException(EncodingError error) { super(error.getMessage()); this.error = error; } public EncodingException(EncodingError error, String str) { super(error.getMessage()); this.error = error; } public EncodingException(EncodingError error, byte[]bytes, int p, int end) { super(error.getMessage(), bytes, p, end); this.error = error; } public EncodingError getError() { return error; } @Deprecated public EncodingException(String message) { super(message); error = null; } @Deprecated public EncodingException(String message, String str) { super(message, str); error = null; } @Deprecated public EncodingException(String message, byte[]bytes, int p, int end) { super(message, bytes, p, end); error = null; } } jcodings-1.0.58/src/org/jcodings/exception/ErrorCodes.java000066400000000000000000000113021433325321700234730ustar00rootroot00000000000000package org.jcodings.exception; public interface ErrorCodes { public static final int NORMAL = 0; public static final int MISMATCH = -1; public static final int NO_SUPPORT_CONFIG = -2; /* internal error */ public static final int ERR_MEMORY = -5; public static final int ERR_TYPE_BUG = -6; public static final int ERR_PARSER_BUG = -11; public static final int ERR_STACK_BUG = -12; public static final int ERR_UNDEFINED_BYTECODE = -13; public static final int ERR_UNEXPECTED_BYTECODE = -14; public static final int ERR_MATCH_STACK_LIMIT_OVER = -15; public static final int ERR_DEFAULT_ENCODING_IS_NOT_SET = -21; public static final int ERR_SPECIFIED_ENCODING_CANT_CONVERT_TO_WIDE_CHAR = -22; /* general error */ public static final int ERR_INVALID_ARGUMENT = -30; /* syntax error */ public static final int ERR_END_PATTERN_AT_LEFT_BRACE = -100; public static final int ERR_END_PATTERN_AT_LEFT_BRACKET = -101; public static final int ERR_EMPTY_CHAR_CLASS = -102; public static final int ERR_PREMATURE_END_OF_CHAR_CLASS = -103; public static final int ERR_END_PATTERN_AT_ESCAPE = -104; public static final int ERR_END_PATTERN_AT_META = -105; public static final int ERR_END_PATTERN_AT_CONTROL = -106; public static final int ERR_META_CODE_SYNTAX = -108; public static final int ERR_CONTROL_CODE_SYNTAX = -109; public static final int ERR_CHAR_CLASS_VALUE_AT_END_OF_RANGE = -110; public static final int ERR_CHAR_CLASS_VALUE_AT_START_OF_RANGE = -111; public static final int ERR_UNMATCHED_RANGE_SPECIFIER_IN_CHAR_CLASS = -112; public static final int ERR_TARGET_OF_REPEAT_OPERATOR_NOT_SPECIFIED = -113; public static final int ERR_TARGET_OF_REPEAT_OPERATOR_INVALID = -114; public static final int ERR_NESTED_REPEAT_OPERATOR = -115; public static final int ERR_UNMATCHED_CLOSE_PARENTHESIS = -116; public static final int ERR_END_PATTERN_WITH_UNMATCHED_PARENTHESIS = -117; public static final int ERR_END_PATTERN_IN_GROUP = -118; public static final int ERR_UNDEFINED_GROUP_OPTION = -119; public static final int ERR_INVALID_POSIX_BRACKET_TYPE = -121; public static final int ERR_INVALID_LOOK_BEHIND_PATTERN = -122; public static final int ERR_INVALID_REPEAT_RANGE_PATTERN = -123; public static final int ERR_INVALID_CONDITION_PATTERN = -124; /* values error (syntax error) */ public static final int ERR_TOO_BIG_NUMBER = -200; public static final int ERR_TOO_BIG_NUMBER_FOR_REPEAT_RANGE = -201; public static final int ERR_UPPER_SMALLER_THAN_LOWER_IN_REPEAT_RANGE = -202; public static final int ERR_EMPTY_RANGE_IN_CHAR_CLASS = -203; public static final int ERR_MISMATCH_CODE_LENGTH_IN_CLASS_RANGE = -204; public static final int ERR_TOO_MANY_MULTI_BYTE_RANGES = -205; public static final int ERR_TOO_SHORT_MULTI_BYTE_STRING = -206; public static final int ERR_TOO_BIG_BACKREF_NUMBER = -207; public static final int ERR_INVALID_BACKREF = -208; public static final int ERR_NUMBERED_BACKREF_OR_CALL_NOT_ALLOWED = -209; public static final int ERR_TOO_SHORT_DIGITS = -210; public static final int ERR_TOO_LONG_WIDE_CHAR_VALUE = -212; public static final int ERR_EMPTY_GROUP_NAME = -214; public static final int ERR_INVALID_GROUP_NAME = -215; public static final int ERR_INVALID_CHAR_IN_GROUP_NAME = -216; public static final int ERR_UNDEFINED_NAME_REFERENCE = -217; public static final int ERR_UNDEFINED_GROUP_REFERENCE = -218; public static final int ERR_MULTIPLEX_DEFINED_NAME = -219; public static final int ERR_MULTIPLEX_DEFINITION_NAME_CALL = -220; public static final int ERR_NEVER_ENDING_RECURSION = -221; public static final int ERR_GROUP_NUMBER_OVER_FOR_CAPTURE_HISTORY = -222; public static final int ERR_INVALID_CHAR_PROPERTY_NAME = -223; public static final int ERR_TOO_MANY_CAPTURE_GROUPS = -224; public static final int ERR_INVALID_CODE_POINT_VALUE = -400; public static final int ERR_INVALID_WIDE_CHAR_VALUE = -400; public static final int ERR_TOO_BIG_WIDE_CHAR_VALUE = -401; public static final int ERR_NOT_SUPPORTED_ENCODING_COMBINATION = -402; public static final int ERR_INVALID_COMBINATION_OF_OPTIONS = -403; // specific to jcodings int ERR_ENCODING_CLASS_DEF_NOT_FOUND = -1000; int ERR_ENCODING_LOAD_ERROR = -1001; int ERR_ENCODING_ALREADY_REGISTERED = -1002; int ERR_ENCODING_ALIAS_ALREADY_REGISTERED = -1003; int ERR_ENCODING_REPLICA_ALREADY_REGISTERED = -1004; int ERR_NO_SUCH_ENCODNG = -1005; int ERR_COULD_NOT_REPLICATE = -1006; int ERR_TRANSCODER_ALREADY_REGISTERED = -1007; int ERR_TRANSCODER_CLASS_DEF_NOT_FOUND = -1008; int ERR_TRANSCODER_LOAD_ERROR = -1009; } jcodings-1.0.58/src/org/jcodings/exception/ErrorMessages.java000066400000000000000000000046571433325321700242240ustar00rootroot00000000000000/* * Permission is hereby granted, free of charge, to any person obtaining a copy of * this software and associated documentation files (the "Software"), to deal in * the Software without restriction, including without limitation the rights to * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies * of the Software, and to permit persons to whom the Software is furnished to do * so, subject to the following conditions: * * The above copyright notice and this permission notice shall be included in all * copies or substantial portions of the Software. * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE * SOFTWARE. */ package org.jcodings.exception; public interface ErrorMessages { final String ERR_TYPE_BUG = "undefined type (bug)"; final String ERR_TOO_BIG_WIDE_CHAR_VALUE = "too big wide-char value"; final String ERR_TOO_LONG_WIDE_CHAR_VALUE = "too long wide-char value"; final String ERR_INVALID_CHAR_PROPERTY_NAME = "invalid character property name <%n>"; final String ERR_INVALID_CODE_POINT_VALUE = "invalid code point value"; final String ERR_ENCODING_CLASS_DEF_NOT_FOUND = "encoding class <%n> not found"; final String ERR_ENCODING_LOAD_ERROR = "problem loading encoding <%n>"; final String ERR_ILLEGAL_CHARACTER = "illegal character"; final String ERR_ENCODING_ALREADY_REGISTERED = "encoding already registerd <%n>"; final String ERR_ENCODING_ALIAS_ALREADY_REGISTERED = "encoding alias already registerd <%n>"; final String ERR_ENCODING_REPLICA_ALREADY_REGISTERED = "encoding replica already registerd <%n>"; final String ERR_NO_SUCH_ENCODNG = "no such encoding <%n>"; final String ERR_COULD_NOT_REPLICATE = "could not replicate <%n> encoding"; // transcoder messages final String ERR_TRANSCODER_ALREADY_REGISTERED = "transcoder from <%n> has been already registered"; final String ERR_TRANSCODER_CLASS_DEF_NOT_FOUND = "transcoder class <%n> not found"; final String ERR_TRANSCODER_LOAD_ERROR = "problem loading transcoder <%n>"; } jcodings-1.0.58/src/org/jcodings/exception/InternalException.java000066400000000000000000000030041433325321700250570ustar00rootroot00000000000000/* * Permission is hereby granted, free of charge, to any person obtaining a copy of * this software and associated documentation files (the "Software"), to deal in * the Software without restriction, including without limitation the rights to * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies * of the Software, and to permit persons to whom the Software is furnished to do * so, subject to the following conditions: * * The above copyright notice and this permission notice shall be included in all * copies or substantial portions of the Software. * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE * SOFTWARE. */ package org.jcodings.exception; public class InternalException extends JCodingsException { private static final long serialVersionUID = -3871816465397927992L; public InternalException(String message) { super(message); } public InternalException(String message, String str) { super(message, str); } public InternalException(String message, byte[]bytes, int p, int end) { super(message, bytes, p, end); } } jcodings-1.0.58/src/org/jcodings/exception/JCodingsException.java000066400000000000000000000027321433325321700250120ustar00rootroot00000000000000/* * Permission is hereby granted, free of charge, to any person obtaining a copy of * this software and associated documentation files (the "Software"), to deal in * the Software without restriction, including without limitation the rights to * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies * of the Software, and to permit persons to whom the Software is furnished to do * so, subject to the following conditions: * * The above copyright notice and this permission notice shall be included in all * copies or substantial portions of the Software. * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE * SOFTWARE. */ package org.jcodings.exception; public class JCodingsException extends RuntimeException { public JCodingsException(String message) { super(message); } public JCodingsException(String message, String str) { super(message.replaceAll("%n", str)); } public JCodingsException(String message, byte[]bytes, int p, int end) { this(message, new String(bytes, p, end - p)); } } jcodings-1.0.58/src/org/jcodings/exception/TranscoderException.java000066400000000000000000000027031433325321700254140ustar00rootroot00000000000000/* * Permission is hereby granted, free of charge, to any person obtaining a copy of * this software and associated documentation files (the "Software"), to deal in * the Software without restriction, including without limitation the rights to * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies * of the Software, and to permit persons to whom the Software is furnished to do * so, subject to the following conditions: * * The above copyright notice and this permission notice shall be included in all * copies or substantial portions of the Software. * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE * SOFTWARE. */ package org.jcodings.exception; public class TranscoderException extends JCodingsException { public TranscoderException(String message) { super(message); } public TranscoderException(String message, String str) { super(message, str); } public TranscoderException(String message, byte[]bytes, int p, int end) { super(message, bytes, p, end); } } jcodings-1.0.58/src/org/jcodings/specific/000077500000000000000000000000001433325321700203535ustar00rootroot00000000000000jcodings-1.0.58/src/org/jcodings/specific/ASCIIEncoding.java000066400000000000000000000034671433325321700235270ustar00rootroot00000000000000/* * Permission is hereby granted, free of charge, to any person obtaining a copy of * this software and associated documentation files (the "Software"), to deal in * the Software without restriction, including without limitation the rights to * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies * of the Software, and to permit persons to whom the Software is furnished to do * so, subject to the following conditions: * * The above copyright notice and this permission notice shall be included in all * copies or substantial portions of the Software. * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE * SOFTWARE. */ package org.jcodings.specific; import org.jcodings.SingleByteEncoding; import org.jcodings.ascii.AsciiTables; public final class ASCIIEncoding extends SingleByteEncoding { protected ASCIIEncoding() { super("ASCII-8BIT", AsciiTables.AsciiCtypeTable, AsciiTables.ToLowerCaseTable); } @Override public final byte[] toLowerCaseTable() { return LowerCaseTable; } @Override public String getCharsetName() { return "ISO-8859-1"; } /** ascii_is_code_ctype / ONIGENC_IS_ASCII_CODE_CTYPE */ @Override public boolean isCodeCType(int code, int ctype) { return code < 128 ? isCodeCTypeInternal(code, ctype) : false; } public static final ASCIIEncoding INSTANCE = new ASCIIEncoding(); } jcodings-1.0.58/src/org/jcodings/specific/BIG5Encoding.java000066400000000000000000000045171433325321700233620ustar00rootroot00000000000000/* * Permission is hereby granted, free of charge, to any person obtaining a copy of * this software and associated documentation files (the "Software"), to deal in * the Software without restriction, including without limitation the rights to * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies * of the Software, and to permit persons to whom the Software is furnished to do * so, subject to the following conditions: * * The above copyright notice and this permission notice shall be included in all * copies or substantial portions of the Software. * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE * SOFTWARE. */ package org.jcodings.specific; public final class BIG5Encoding extends BaseBIG5Encoding { private static final String BIG5 = "Big5"; protected BIG5Encoding() { super(BIG5, Big5EncLen, 0); } @Override public String getCharsetName() { return BIG5; } static final int Big5EncLen[] = { 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1 }; public static final BIG5Encoding INSTANCE = new BIG5Encoding(); } jcodings-1.0.58/src/org/jcodings/specific/BaseBIG5Encoding.java000066400000000000000000000173121433325321700241520ustar00rootroot00000000000000/* * Permission is hereby granted, free of charge, to any person obtaining a copy of * this software and associated documentation files (the "Software"), to deal in * the Software without restriction, including without limitation the rights to * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies * of the Software, and to permit persons to whom the Software is furnished to do * so, subject to the following conditions: * * The above copyright notice and this permission notice shall be included in all * copies or substantial portions of the Software. * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE * SOFTWARE. */ package org.jcodings.specific; import org.jcodings.CanBeTrailTableEncoding; import org.jcodings.IntHolder; import org.jcodings.ascii.AsciiTables; public abstract class BaseBIG5Encoding extends CanBeTrailTableEncoding { private final int[]TransBase; protected BaseBIG5Encoding(String name, int[]EncLen, int transIndex) { super(name, 1, 2, EncLen, BIG5Trans, AsciiTables.AsciiCtypeTable, BIG5_CAN_BE_TRAIL_TABLE); TransBase = Trans[transIndex]; } @Override public int length(byte[]bytes, int p, int end) { int b = bytes[p++] & 0xff; int s = TransBase[b]; if (s < 0) return s == A ? 1 : CHAR_INVALID; if (p == end) return missing(EncLen[b] - 1); s = Trans[s][bytes[p] & 0xff]; return s == A ? 2 : CHAR_INVALID; } @Override public int mbcToCode(byte[]bytes, int p, int end) { return mbnMbcToCode(bytes, p, end); } @Override public int codeToMbcLength(int code) { return mb2CodeToMbcLength(code); } @Override public int codeToMbc(int code, byte[]bytes, int p) { return mb2CodeToMbc(code, bytes, p); } @Override public int mbcCaseFold(int flag, byte[]bytes, IntHolder pp, int end, byte[]lower) { return mbnMbcCaseFold(flag, bytes, pp, end, lower); } @Override public boolean isCodeCType(int code, int ctype) { return mb2IsCodeCType(code, ctype); } @Override public int[]ctypeCodeRange(int ctype, IntHolder sbOut) { return null; } static final boolean BIG5_CAN_BE_TRAIL_TABLE[] = { false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, false, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, false }; private static final int BIG5Trans[][] = new int[][]{ { /* S0 0 1 2 3 4 5 6 7 8 9 a b c d e f */ /* 0 */ A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, /* 1 */ A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, /* 2 */ A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, /* 3 */ A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, /* 4 */ A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, /* 5 */ A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, /* 6 */ A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, /* 7 */ A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, /* 8 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, /* 9 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, /* a */ F, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* b */ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* c */ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* d */ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* e */ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* f */ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, F }, { /* S1 0 1 2 3 4 5 6 7 8 9 a b c d e f */ /* 0 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, /* 1 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, /* 2 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, /* 3 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, /* 4 */ A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, /* 5 */ A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, /* 6 */ A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, /* 7 */ A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, F, /* 8 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, /* 9 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, /* a */ F, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, /* b */ A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, /* c */ A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, /* d */ A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, /* e */ A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, /* f */ A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, F }, { /* S2 0 1 2 3 4 5 6 7 8 9 a b c d e f */ /* 0 */ A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, /* 1 */ A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, /* 2 */ A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, /* 3 */ A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, /* 4 */ A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, /* 5 */ A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, /* 6 */ A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, /* 7 */ A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, /* 8 */ F, F, F, F, F, F, F, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 9 */ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* a */ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* b */ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* c */ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* d */ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* e */ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* f */ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, F } }; } jcodings-1.0.58/src/org/jcodings/specific/BaseEUCJPEncoding.java000066400000000000000000000171621433325321700243350ustar00rootroot00000000000000/* * Permission is hereby granted, free of charge, to any person obtaining a copy of * this software and associated documentation files (the "Software"), to deal in * the Software without restriction, including without limitation the rights to * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies * of the Software, and to permit persons to whom the Software is furnished to do * so, subject to the following conditions: * * The above copyright notice and this permission notice shall be included in all * copies or substantial portions of the Software. * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE * SOFTWARE. */ package org.jcodings.specific; import org.jcodings.CodeRange; import org.jcodings.EucEncoding; import org.jcodings.IntHolder; import org.jcodings.ascii.AsciiTables; import org.jcodings.constants.CharacterType; import org.jcodings.exception.ErrorCodes; import org.jcodings.exception.ErrorMessages; import org.jcodings.exception.InternalException; import org.jcodings.util.CaseInsensitiveBytesHash; abstract class BaseEUCJPEncoding extends EucEncoding { protected BaseEUCJPEncoding(int[][]Trans) { super("EUC-JP", 1, 3, EUCJPEncLen, Trans, AsciiTables.AsciiCtypeTable); } @Override public int mbcToCode(byte[]bytes, int p, int end) { return mbnMbcToCode(bytes, p, end); } @Override public int codeToMbcLength(int code) { if (isAscii(code)) return 1; if (code > 0x00ffffff) { return ErrorCodes.ERR_TOO_BIG_WIDE_CHAR_VALUE; } else if ((code & 0xff808080) == 0x00808080) return 3; else if ((code & 0xffff8080) == 0x00008080) return 2; return ErrorCodes.ERR_INVALID_CODE_POINT_VALUE; } @Override public int codeToMbc(int code, byte[]bytes, int p) { int p_ = p; if ((code & 0xff0000) != 0) bytes[p_++] = (byte)((code >> 16) & 0xff); // need mask here ?? if ((code & 0xff00) != 0) bytes[p_++] = (byte)((code >> 8) & 0xff); bytes[p_++] = (byte)(code & 0xff); if (length(bytes, p, p_) != p_ - p) return ErrorCodes.ERR_INVALID_CODE_POINT_VALUE; return p_ - p; } private static int getLowerCase(int code) { if (isInRange(code, 0xa3c1, 0xa3da)) { return code + 0x0020; } else if (isInRange(code, 0xa6a1, 0xa6b8)) { return code + 0x0020; } else if (isInRange(code, 0xa7a1, 0xa7c1)) { return code + 0x0030; } return code; } @Override public int mbcCaseFold(int flag, byte[]bytes, IntHolder pp, int end, byte[]lower) { int p = pp.value; int lowerP = 0; if (isMbcAscii(bytes[p])) { lower[lowerP] = AsciiTables.ToLowerCaseTable[bytes[p] & 0xff]; pp.value++; return 1; } else { //int len = length(bytes, p, end); int code = getLowerCase(mbcToCode(bytes, pp.value, end)); int len = codeToMbc(code, lower, lowerP); if (len == ErrorCodes.ERR_INVALID_CODE_POINT_VALUE) len = 1; pp.value += len; return len; /* return byte length of converted char to lower */ } } protected boolean isLead(int c) { return ((c - 0xa1) & 0xff) > 0xfe - 0xa1; } @Override public boolean isReverseMatchAllowed(byte[]bytes, int p, int end) { int c = bytes[p] & 0xff; return c <= 0x7e || c == 0x8e || c == 0x8f; } private static final int CR_Hiragana[] = { 1, 0xa4a1, 0xa4f3 }; private static final int CR_Katakana[] = { 3, 0x8ea6, 0x8eaf, /* JIS X 0201 Katakana */ 0x8eb1, 0x8edd, /* JIS X 0201 Katakana */ 0xa5a1, 0xa5f6, }; private static final int CR_Han[] = { /* EUC-JP (JIS X 0208 based) */ 4, 0xa1b8, 0xa1b8, 0xb0a1, 0xcfd3, /* Kanji level 1 */ 0xd0a1, 0xf4a6, /* Kanji level 2 */ 0x8fb0a1, 0x8fedf3 /* JIS X 0212 Supplemental Kanji (row 16 .. 77) */ }; private static final int CR_Latin[] = { 4, 0x0041, 0x005a, 0x0061, 0x007a, 0xa3c1, 0xa3da, 0xa3e1, 0xa3fa, }; private static final int CR_Greek[] = { 2, 0xa6a1, 0xa6b8, 0xa6c1, 0xa6d8, }; private static final int CR_Cyrillic[] = { 2, 0xa7a1, 0xa7c1, 0xa7d1, 0xa7f1, }; private static final int PropertyList[][] = new int[][] { CR_Hiragana, CR_Katakana, CR_Han, CR_Latin, CR_Greek, CR_Cyrillic }; private static final CaseInsensitiveBytesHash CTypeNameHash = new CaseInsensitiveBytesHash(); static { String[] names = new String[] {"Hiragana", "Katakana", "Han", "Latin", "Greek", "Cyrillic"}; for (int i = 0; i < names.length; i++) { CTypeNameHash.put(names[i].getBytes(), i + 1 + CharacterType.MAX_STD_CTYPE); } } @Override public int propertyNameToCType(byte[]bytes, int p, int end) { Integer ctype; if ((ctype = CTypeNameHash.get(bytes, p, end)) == null) { return super.propertyNameToCType(bytes, p, end); } return ctype; } @Override public boolean isCodeCType(int code, int ctype) { if (ctype <= CharacterType.MAX_STD_CTYPE) { if (code < 128) { // ctype table is configured with ASCII return isCodeCTypeInternal(code, ctype); } else { if (isWordGraphPrint(ctype)) { return codeToMbcLength(code) > 1; } } } else { ctype -= (CharacterType.MAX_STD_CTYPE + 1); if (ctype >= PropertyList.length) throw new InternalException(ErrorMessages.ERR_TYPE_BUG); return CodeRange.isInCodeRange(PropertyList[ctype], code); } return false; } @Override public int[]ctypeCodeRange(int ctype, IntHolder sbOut) { if (ctype <= CharacterType.MAX_STD_CTYPE) { return null; } else { sbOut.value = 0x80; ctype -= (CharacterType.MAX_STD_CTYPE + 1); if (ctype >= PropertyList.length) throw new InternalException(ErrorMessages.ERR_TYPE_BUG); return PropertyList[ctype]; } } static final int EUCJPEncLen[] = { 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 3, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1 }; } jcodings-1.0.58/src/org/jcodings/specific/BaseSJISEncoding.java000066400000000000000000000202541433325321700242330ustar00rootroot00000000000000/* * Permission is hereby granted, free of charge, to any person obtaining a copy of * this software and associated documentation files (the "Software"), to deal in * the Software without restriction, including without limitation the rights to * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies * of the Software, and to permit persons to whom the Software is furnished to do * so, subject to the following conditions: * * The above copyright notice and this permission notice shall be included in all * copies or substantial portions of the Software. * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE * SOFTWARE. */ package org.jcodings.specific; import org.jcodings.CanBeTrailTableEncoding; import org.jcodings.CodeRange; import org.jcodings.IntHolder; import org.jcodings.ascii.AsciiTables; import org.jcodings.constants.CharacterType; import org.jcodings.exception.ErrorCodes; import org.jcodings.exception.ErrorMessages; import org.jcodings.exception.InternalException; import org.jcodings.util.BytesHash; abstract class BaseSJISEncoding extends CanBeTrailTableEncoding { protected BaseSJISEncoding(String name, int[][]Trans) { super(name, 1, 2, SjisEncLen, Trans, AsciiTables.AsciiCtypeTable, SJIS_CAN_BE_TRAIL_TABLE); } @Override public String getCharsetName() { return "windows-31j"; } @Override public int mbcToCode(byte[]bytes, int p, int end) { return mbnMbcToCode(bytes, p, end); } @Override public int codeToMbcLength(int code) { if (code < 256) { return SjisEncLen[code] == 1 ? 1 : ErrorCodes.ERR_INVALID_CODE_POINT_VALUE; } else if (code <= 0xffff) { int low = code & 0xff; if (!SJIS_ISMB_TRAIL(low)) { return ErrorCodes.ERR_INVALID_CODE_POINT_VALUE; } return 2; } else { return ErrorCodes.ERR_INVALID_CODE_POINT_VALUE; } } private static boolean SJIS_ISMB_TRAIL(int code) { return SJIS_CAN_BE_TRAIL_TABLE[code]; } @Override public int codeToMbc(int code, byte[]bytes, int p) { int p_ = p; if ((code & 0xff00) != 0) bytes[p_++] = (byte)(((code >> 8) & 0xff)); bytes[p_++] = (byte)(code & 0xff); return p_ - p; } private static int getLowerCase(int code) { if (isInRange(code, 0x8260, 0x8279)) { return code + 0x0021; } else if (isInRange(code, 0x839f, 0x83b6)) { return code + 0x0020; } else if (isInRange(code, 0x8440, 0x8460)) { int d = code >= 0x844f ? 1 : 0; return code + (0x0030 + d); } return code; } @Override public int mbcCaseFold(int flag, byte[]bytes, IntHolder pp, int end, byte[]lower) { if (isAscii(bytes[pp.value])) { return asciiMbcCaseFold(flag, bytes, pp, end, lower); } else { int lowerP = 0; int code = getLowerCase(mbcToCode(bytes, pp.value, end)); int len = codeToMbc(code, lower, lowerP); pp.value += len; return len; } } private static final int CR_Hiragana[] = { 1, 0x829f, 0x82f1 }; /* CR_Hiragana */ private static final int CR_Katakana[] = { 4, 0x00a6, 0x00af, 0x00b1, 0x00dd, 0x8340, 0x837e, 0x8380, 0x8396, }; /* CR_Katakana */ private static final int PropertyList[][] = new int[][] { CR_Hiragana, CR_Katakana }; private static final BytesHash CTypeNameHash = new BytesHash(); static { CTypeNameHash.put("Hiragana".getBytes(), 1 + CharacterType.MAX_STD_CTYPE); CTypeNameHash.put("Katakana".getBytes(), 2 + CharacterType.MAX_STD_CTYPE); } @Override public int propertyNameToCType(byte[]bytes, int p, int end) { Integer ctype; if ((ctype = CTypeNameHash.get(bytes, p, end)) == null) { return super.propertyNameToCType(bytes, p, end); } return ctype; } @Override public boolean isCodeCType(int code, int ctype) { if (ctype <= CharacterType.MAX_STD_CTYPE) { if (code < 128) { // ctype table is configured with ASCII return isCodeCTypeInternal(code, ctype); } else { if (isWordGraphPrint(ctype)) { return true; } } } else { ctype -= (CharacterType.MAX_STD_CTYPE + 1); if (ctype >= PropertyList.length) throw new InternalException(ErrorMessages.ERR_TYPE_BUG); return CodeRange.isInCodeRange(PropertyList[ctype], code); } return false; } @Override public int[]ctypeCodeRange(int ctype, IntHolder sbOut) { if (ctype <= CharacterType.MAX_STD_CTYPE) { return null; } else { sbOut.value = 0x80; ctype -= (CharacterType.MAX_STD_CTYPE + 1); if (ctype >= PropertyList.length) throw new InternalException(ErrorMessages.ERR_TYPE_BUG); return PropertyList[ctype]; } } static final boolean SJIS_CAN_BE_TRAIL_TABLE[] = { false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, false, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, false, false, false }; static final int SjisEncLen[] = { 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1 }; } jcodings-1.0.58/src/org/jcodings/specific/BaseUTF8Encoding.java000066400000000000000000000155671433325321700242240ustar00rootroot00000000000000/* * Permission is hereby granted, free of charge, to any person obtaining a copy of * this software and associated documentation files (the "Software"), to deal in * the Software without restriction, including without limitation the rights to * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies * of the Software, and to permit persons to whom the Software is furnished to do * so, subject to the following conditions: * * The above copyright notice and this permission notice shall be included in all * copies or substantial portions of the Software. * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE * SOFTWARE. */ package org.jcodings.specific; import org.jcodings.Config; import org.jcodings.IntHolder; import org.jcodings.ascii.AsciiTables; import org.jcodings.exception.ErrorCodes; import org.jcodings.unicode.UnicodeEncoding; import static java.lang.Integer.toUnsignedLong; abstract class BaseUTF8Encoding extends UnicodeEncoding { static final boolean USE_INVALID_CODE_SCHEME = true; protected BaseUTF8Encoding(int[]EncLen, int[][]Trans) { super("UTF-8", 1, 4, EncLen, Trans); isUTF8 = true; } @Override public String getCharsetName() { return "UTF-8"; } @Override public boolean isNewLine(byte[]bytes, int p, int end) { if (p < end) { if (bytes[p] == (byte)0x0a) return true; if (Config.USE_UNICODE_ALL_LINE_TERMINATORS) { if (!Config.USE_CRNL_AS_LINE_TERMINATOR) { if (bytes[p] == (byte)0x0d) return true; } if (p + 1 < end) { // & 0xff... if (bytes[p+1] == (byte)0x85 && bytes[p] == (byte)0xc2) return true; /* U+0085 */ if (p + 2 < end) { if ((bytes[p+2] == (byte)0xa8 || bytes[p+2] == (byte)0xa9) && bytes[p+1] == (byte)0x80 && bytes[p] == (byte)0xe2) return true; /* U+2028, U+2029 */ } } } // USE_UNICODE_ALL_LINE_TERMINATORS } return false; } private static final int INVALID_CODE_FE = 0xfffffffe; private static final int INVALID_CODE_FF = 0xffffffff; private static final int VALID_CODE_LIMIT = 0x0010ffff; @Override public int codeToMbcLength(int code) { if ((code & 0xffffff80) == 0) { return 1; } else if ((code & 0xfffff800) == 0) { return 2; } else if ((code & 0xffff0000) == 0) { return 3; } else if (toUnsignedLong(code) <= VALID_CODE_LIMIT) { return 4; } else if (USE_INVALID_CODE_SCHEME && code == INVALID_CODE_FE) { return 1; } else if (USE_INVALID_CODE_SCHEME && code == INVALID_CODE_FF) { return 1; } else { return ErrorCodes.ERR_TOO_BIG_WIDE_CHAR_VALUE; } } @Override public int mbcToCode(byte[]bytes, int p, int end) { int len = length(bytes, p, end); int c = bytes[p++] & 0xff; if (len > 1) { len--; int n = c & ((1 << (6 - len)) - 1); while (len-- != 0) { c = bytes[p++] & 0xff; n = (n << 6) | (c & ((1 << 6) - 1)); } return n; } else { if (USE_INVALID_CODE_SCHEME) { if (c > 0xfd) return c == 0xfe ? INVALID_CODE_FE : INVALID_CODE_FF; } return c; } } static byte trailS(int code, int shift) { return (byte)(((code >>> shift) & 0x3f) | 0x80); } static byte trail0(int code) { return (byte)((code & 0x3f) | 0x80); } @Override public int codeToMbc(int code, byte[]bytes, int p) { int p_ = p; if ((code & 0xffffff80) == 0) { bytes[p_] = (byte)code; return 1; } else { if ((code & 0xfffff800) == 0) { bytes[p_++] = (byte)(((code >>> 6) & 0x1f) | 0xc0); } else if ((code & 0xffff0000) == 0) { bytes[p_++] = (byte)(((code >>> 12) & 0x0f) | 0xe0); bytes[p_++] = trailS(code, 6); } else if (toUnsignedLong(code) <= VALID_CODE_LIMIT) { bytes[p_++] = (byte)(((code >>> 18) & 0x07) | 0xf0); bytes[p_++] = trailS(code, 12); bytes[p_++] = trailS(code, 6); } else if (USE_INVALID_CODE_SCHEME && code == INVALID_CODE_FE) { bytes[p_] = (byte)0xfe; return 1; } else if (USE_INVALID_CODE_SCHEME && code == INVALID_CODE_FF) { bytes[p_] = (byte)0xff; return 1; } else { return ErrorCodes.ERR_TOO_BIG_WIDE_CHAR_VALUE; } bytes[p_++] = trail0(code); return p_ - p; } } // utf8_mbc_case_fold @Override public int mbcCaseFold(int flag, byte[]bytes, IntHolder pp, int end, byte[]fold) { int p = pp.value; int foldP = 0; if (isMbcAscii(bytes[p])) { if (Config.USE_UNICODE_CASE_FOLD_TURKISH_AZERI) { if ((flag & Config.CASE_FOLD_TURKISH_AZERI) != 0) { if (bytes[p] == (byte)0x49) { fold[foldP++] = (byte)0xc4; fold[foldP] = (byte)0xb1; pp.value++; return 2; } } } // USE_UNICODE_CASE_FOLD_TURKISH_AZERI fold[foldP] = AsciiTables.ToLowerCaseTable[bytes[p] & 0xff]; pp.value++; return 1; /* return byte length of converted char to lower */ } else { return super.mbcCaseFold(flag, bytes, pp, end, fold); } } /** utf8_get_ctype_code_range */ @Override public int[]ctypeCodeRange(int ctype, IntHolder sbOut) { sbOut.value = 0x80; return super.ctypeCodeRange(ctype); // onigenc_unicode_ctype_code_range } private static boolean utf8IsLead(int c) { return ((c & 0xc0) & 0xff) != 0x80; } /** utf8_left_adjust_char_head */ @Override public int leftAdjustCharHead(byte[]bytes, int p, int s, int end) { if (s <= p) return s; int p_ = s; while (!utf8IsLead(bytes[p_] & 0xff) && p_ > p) p_--; return p_; } /** onigenc_always_true_is_allowed_reverse_match */ @Override public boolean isReverseMatchAllowed(byte[]bytes, int p, int end) { return true; } } jcodings-1.0.58/src/org/jcodings/specific/Big5HKSCSEncoding.java000066400000000000000000000046711433325321700242570ustar00rootroot00000000000000/* * Permission is hereby granted, free of charge, to any person obtaining a copy of * this software and associated documentation files (the "Software"), to deal in * the Software without restriction, including without limitation the rights to * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies * of the Software, and to permit persons to whom the Software is furnished to do * so, subject to the following conditions: * * The above copyright notice and this permission notice shall be included in all * copies or substantial portions of the Software. * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE * SOFTWARE. */ package org.jcodings.specific; public final class Big5HKSCSEncoding extends BaseBIG5Encoding { protected Big5HKSCSEncoding() { super("Big5-HKSCS", Big5HKSCSEncLen, 2); } static final int Big5HKSCSEncLen[] = { /* LEN 0 1 2 3 4 5 6 7 8 9 A B C D E F */ /* 0 */ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 1 */ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 2 */ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 3 */ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 4 */ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 5 */ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 6 */ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 7 */ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 8 */ 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, /* 9 */ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, /* A */ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, /* B */ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, /* C */ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, /* D */ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, /* E */ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, /* F */ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, }; public static final Big5HKSCSEncoding INSTANCE = new Big5HKSCSEncoding(); } jcodings-1.0.58/src/org/jcodings/specific/Big5UAOEncoding.java000066400000000000000000000046531433325321700240300ustar00rootroot00000000000000/* * Permission is hereby granted, free of charge, to any person obtaining a copy of * this software and associated documentation files (the "Software"), to deal in * the Software without restriction, including without limitation the rights to * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies * of the Software, and to permit persons to whom the Software is furnished to do * so, subject to the following conditions: * * The above copyright notice and this permission notice shall be included in all * copies or substantial portions of the Software. * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE * SOFTWARE. */ package org.jcodings.specific; public final class Big5UAOEncoding extends BaseBIG5Encoding { protected Big5UAOEncoding() { super("Big5-UAO", Big5UAOEncLen, 2); } static final int Big5UAOEncLen[] = { /* LEN 0 1 2 3 4 5 6 7 8 9 A B C D E F */ /* 0 */ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 1 */ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 2 */ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 3 */ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 4 */ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 5 */ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 6 */ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 7 */ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 8 */ 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, /* 9 */ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, /* A */ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, /* B */ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, /* C */ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, /* D */ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, /* E */ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, /* F */ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, }; public static final Big5UAOEncoding INSTANCE = new Big5UAOEncoding(); } jcodings-1.0.58/src/org/jcodings/specific/CESU8Encoding.java000066400000000000000000000430031433325321700235140ustar00rootroot00000000000000/* * Permission is hereby granted, free of charge, to any person obtaining a copy of * this software and associated documentation files (the "Software"), to deal in * the Software without restriction, including without limitation the rights to * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies * of the Software, and to permit persons to whom the Software is furnished to do * so, subject to the following conditions: * * The above copyright notice and this permission notice shall be included in all * copies or substantial portions of the Software. * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE * SOFTWARE. */ package org.jcodings.specific; import org.jcodings.Config; import org.jcodings.IntHolder; import org.jcodings.ascii.AsciiTables; import org.jcodings.exception.ErrorCodes; import org.jcodings.unicode.UnicodeEncoding; import static java.lang.Integer.toUnsignedLong; public final class CESU8Encoding extends UnicodeEncoding { static final boolean USE_INVALID_CODE_SCHEME = true; protected CESU8Encoding() { super("CESU-8", 1, 6, CESU8EncLen, CESU8Trans); } @Override public String getCharsetName() { return "CESU-8"; } @Override public int length(byte[] bytes, int p, int end) { int b = bytes[p] & 0xff; if (b <= 127) { return 1; } int s = TransZero[b]; if (s < 0) return CHAR_INVALID; return lengthForOneUptoSix(bytes, p, end, b, s); } private int lengthForOneUptoSix(byte[] bytes, int p, int end, int b, int s) { if (++p == end) { return missing(b, 1); } s = Trans[s][bytes[p] & 0xff]; if (s < 0) { return s == A ? 2 : CHAR_INVALID; } if (++p == end) { return missing(b, s == 4 ? 4 : TransZero[b] - 2); } s = Trans[s][bytes[p] & 0xff]; if (s < 0) { return s == A ? 3 : CHAR_INVALID; } if (++p == end) return missing(b, 3); s = Trans[s][bytes[p] & 0xff]; if (s < 0) { return s == A ? 4 : CHAR_INVALID; } if (++p == end) return missing(b, 2); s = Trans[s][bytes[p] & 0xff]; if (s < 0) { return s == A ? 5 : CHAR_INVALID; } if (++p == end) return missing(b, 1); s = Trans[s][bytes[p] & 0xff]; return s == A ? 6 : CHAR_INVALID; } @Override public boolean isNewLine(byte[] bytes, int p, int end) { if (p < end) { if (bytes[p] == (byte) 0x0a) return true; if (Config.USE_UNICODE_ALL_LINE_TERMINATORS) { if (!Config.USE_CRNL_AS_LINE_TERMINATOR) { if (bytes[p] == (byte) 0x0d) return true; } if (p + 1 < end) { if (bytes[p + 1] == (byte) 0x85 && bytes[p] == (byte) 0xc2) return true; if (p + 2 < end) { if ((bytes[p + 2] == (byte) 0xa8 || bytes[p + 2] == (byte) 0xa9) && bytes[p + 1] == (byte) 0x80 && bytes[p] == (byte) 0xe2) return true; } } } } return false; } private static final int INVALID_CODE_FE = 0xfffffffe; private static final int INVALID_CODE_FF = 0xffffffff; private static final int VALID_CODE_LIMIT = 0x0010ffff; @Override public int codeToMbcLength(int code) { if ((code & 0xffffff80) == 0) { return 1; } else if ((code & 0xfffff800) == 0) { return 2; } else if ((code & 0xffff0000) == 0) { return 3; } else if (toUnsignedLong(code) <= VALID_CODE_LIMIT) { return 6; } else if (USE_INVALID_CODE_SCHEME && code == INVALID_CODE_FE) { return 1; } else if (USE_INVALID_CODE_SCHEME && code == INVALID_CODE_FF) { return 1; } else { return ErrorCodes.ERR_TOO_BIG_WIDE_CHAR_VALUE; } } @Override public int mbcToCode(byte[] bytes, int p, int end) { int len = length(bytes, p, end); int c = bytes[p] & 0xff; switch (len) { case 1: return c; case 2: return ((c & 0x1F) << 6) | (bytes[p + 1] & 0xff & 0x3f); case 3: return ((c & 0xF) << 12) | ((bytes[p + 1] & 0xff & 0x3f) << 6) | (bytes[p + 2] & 0xff & 0x3f); case 6: { int high = ((c & 0xF) << 12) | ((bytes[p + 1] & 0xff & 0x3f) << 6) | (bytes[p + 2] & 0xff & 0x3f); int low = ((bytes[p + 3] & 0xff & 0xF) << 12) | ((bytes[p + 4] & 0xff & 0x3f) << 6) | (bytes[p + 5] & 0xff & 0x3f); return ((high & 0x03ff) << 10) + (low & 0x03ff) + 0x10000; } } if (USE_INVALID_CODE_SCHEME) { if (c > 0xfd) { return ((c == 0xfe) ? INVALID_CODE_FE : INVALID_CODE_FF); } } return c; } static byte trailS(int code, int shift) { return (byte) (((code >>> shift) & 0x3f) | 0x80); } static byte trail0(int code) { return (byte) ((code & 0x3f) | 0x80); } static byte trailS(long code, int shift) { return (byte) (((code >>> shift) & 0x3f) | 0x80); } static byte trail0(long code) { return (byte) ((code & 0x3f) | 0x80); } @Override public int codeToMbc(int code, byte[] bytes, int p) { int p_ = p; if ((code & 0xffffff80) == 0) { bytes[p_] = (byte) code; return 1; } else { if ((code & 0xfffff800) == 0) { bytes[p_++] = (byte) (((code >>> 6) & 0x1f) | 0xc0); } else if ((code & 0xffff0000) == 0) { bytes[p_++] = (byte) (((code >>> 12) & 0x0f) | 0xe0); bytes[p_++] = trailS(code, 6); } else if (toUnsignedLong(code) <= VALID_CODE_LIMIT) { long high = (code >> 10) + 0xD7C0; code = (code & 0x3FF) + 0xDC00; bytes[p_++] = (byte)(((high>>12) & 0x0f) | 0xe0); bytes[p_++] = trailS(high, 6); bytes[p_++] = trail0(high); bytes[p_++] = (byte)(((code>>12) & 0x0f) | 0xe0); bytes[p_++] = trailS(code, 6); } else if (USE_INVALID_CODE_SCHEME && code == INVALID_CODE_FE) { bytes[p_] = (byte) 0xfe; return 1; } else if (USE_INVALID_CODE_SCHEME && code == INVALID_CODE_FF) { bytes[p_] = (byte) 0xff; return 1; } else { return ErrorCodes.ERR_TOO_BIG_WIDE_CHAR_VALUE; } bytes[p_++] = trail0(code); return p_ - p; } } @Override public int mbcCaseFold(int flag, byte[] bytes, IntHolder pp, int end, byte[] fold) { int p = pp.value; int foldP = 0; if (isMbcAscii(bytes[p])) { if (Config.USE_UNICODE_CASE_FOLD_TURKISH_AZERI) { if ((flag & Config.CASE_FOLD_TURKISH_AZERI) != 0) { if (bytes[p] == (byte) 0x49) { fold[foldP++] = (byte) 0xc4; fold[foldP] = (byte) 0xb1; pp.value++; return 2; } } } fold[foldP] = AsciiTables.ToLowerCaseTable[bytes[p] & 0xff]; pp.value++; return 1; } else { return super.mbcCaseFold(flag, bytes, pp, end, fold); } } @Override public int[] ctypeCodeRange(int ctype, IntHolder sbOut) { sbOut.value = 0x80; return super.ctypeCodeRange(ctype); } private static boolean utf8IsLead(int c) { return ((c & 0xc0) & 0xff) != 0x80; } @Override public int leftAdjustCharHead(byte[] bytes, int p, int s, int end) { if (s <= p) return s; int p_ = s; while (!utf8IsLead(bytes[p_] & 0xff) && p_ > p) p_--; return p_; } @Override public boolean isReverseMatchAllowed(byte[] bytes, int p, int end) { return true; } private static final int CESU8EncLen[] = { 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 }; static final int CESU8Trans[][] = new int[][] { { /* S0 0 1 2 3 4 5 6 7 8 9 a b c d e f */ /* 0 */ A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, /* 1 */ A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, /* 2 */ A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, /* 3 */ A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, /* 4 */ A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, /* 5 */ A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, /* 6 */ A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, /* 7 */ A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, /* 8 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, /* 9 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, /* a */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, /* b */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, /* c */ F, F, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* d */ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* e */ 2, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 4, 3, 3, /* f */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F }, { /* S1 0 1 2 3 4 5 6 7 8 9 a b c d e f */ /* 0 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, /* 1 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, /* 2 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, /* 3 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, /* 4 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, /* 5 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, /* 6 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, /* 7 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, /* 8 */ A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, /* 9 */ A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, /* a */ A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, /* b */ A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, /* c */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, /* d */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, /* e */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, /* f */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F }, { /* S2 0 1 2 3 4 5 6 7 8 9 a b c d e f */ /* 0 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, /* 1 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, /* 2 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, /* 3 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, /* 4 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, /* 5 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, /* 6 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, /* 7 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, /* 8 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, /* 9 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, /* a */ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* b */ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* c */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, /* d */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, /* e */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, /* f */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F }, { /* S3 0 1 2 3 4 5 6 7 8 9 a b c d e f */ /* 0 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, /* 1 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, /* 2 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, /* 3 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, /* 4 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, /* 5 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, /* 6 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, /* 7 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, /* 8 */ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 9 */ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* a */ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* b */ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* c */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, /* d */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, /* e */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, /* f */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F }, { /* S4 0 1 2 3 4 5 6 7 8 9 a b c d e f */ /* 0 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, /* 1 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, /* 2 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, /* 3 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, /* 4 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, /* 5 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, /* 6 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, /* 7 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, /* 8 */ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 9 */ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* a */ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, /* b */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, /* c */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, /* d */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, /* e */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, /* f */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F }, { /* S5 0 1 2 3 4 5 6 7 8 9 a b c d e f */ /* 0 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, /* 1 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, /* 2 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, /* 3 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, /* 4 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, /* 5 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, /* 6 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, /* 7 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, /* 8 */ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, /* 9 */ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, /* a */ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, /* b */ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, /* c */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, /* d */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, /* e */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, /* f */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F }, { /* S6 0 1 2 3 4 5 6 7 8 9 a b c d e f */ /* 0 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, /* 1 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, /* 2 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, /* 3 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, /* 4 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, /* 5 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, /* 6 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, /* 7 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, /* 8 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, /* 9 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, /* a */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, /* b */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, /* c */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, /* d */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, /* e */ F, F, F, F, F, F, F, F, F, F, F, F, F, 7, F, F, /* f */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F }, { /* S7 0 1 2 3 4 5 6 7 8 9 a b c d e f */ /* 0 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, /* 1 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, /* 2 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, /* 3 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, /* 4 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, /* 5 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, /* 6 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, /* 7 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, /* 8 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, /* 9 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, /* a */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, /* b */ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* c */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, /* d */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, /* e */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, /* f */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F } }; public static final CESU8Encoding INSTANCE = new CESU8Encoding(); } jcodings-1.0.58/src/org/jcodings/specific/CP949Encoding.java000066400000000000000000000166331433325321700234460ustar00rootroot00000000000000/* * Permission is hereby granted, free of charge, to any person obtaining a copy of * this software and associated documentation files (the "Software"), to deal in * the Software without restriction, including without limitation the rights to * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies * of the Software, and to permit persons to whom the Software is furnished to do * so, subject to the following conditions: * * The above copyright notice and this permission notice shall be included in all * copies or substantial portions of the Software. * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE * SOFTWARE. */ package org.jcodings.specific; import org.jcodings.CanBeTrailTableEncoding; import org.jcodings.IntHolder; import org.jcodings.ascii.AsciiTables; public final class CP949Encoding extends CanBeTrailTableEncoding { private static final String CP949 = "CP949"; protected CP949Encoding() { super(CP949, 1, 2, CP949EncLen, CP949Trans, AsciiTables.AsciiCtypeTable, CP949_CAN_BE_TRAIL_TABLE); } @Override public String getCharsetName() { return CP949; } @Override public int length(byte[]bytes, int p, int end) { return safeLengthForUptoTwo(bytes, p, end); } @Override public int mbcToCode(byte[]bytes, int p, int end) { return mbnMbcToCode(bytes, p, end); } @Override public int codeToMbcLength(int code) { return mb2CodeToMbcLength(code); } @Override public int codeToMbc(int code, byte[]bytes, int p) { return mb2CodeToMbc(code, bytes, p); } @Override public int mbcCaseFold(int flag, byte[]bytes, IntHolder pp, int end, byte[]lower) { return mbnMbcCaseFold(flag, bytes, pp, end, lower); } @Override public boolean isCodeCType(int code, int ctype) { return mb2IsCodeCType(code, ctype); } @Override public int[]ctypeCodeRange(int ctype, IntHolder sbOut) { return null; } static final boolean CP949_CAN_BE_TRAIL_TABLE[] = { false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, false, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, false }; static final int CP949EncLen[] = { 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1 }; private static final int CP949Trans[][] = new int[][]{ { /* S0 0 1 2 3 4 5 6 7 8 9 a b c d e f */ /* 0 */ A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, /* 1 */ A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, /* 2 */ A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, /* 3 */ A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, /* 4 */ A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, /* 5 */ A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, /* 6 */ A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, /* 7 */ A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, /* 8 */ A, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 9 */ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* a */ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* b */ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* c */ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* d */ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* e */ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* f */ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, F }, { /* S1 0 1 2 3 4 5 6 7 8 9 a b c d e f */ /* 0 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, /* 1 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, /* 2 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, /* 3 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, /* 4 */ F, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, /* 5 */ A, A, A, A, A, A, A, A, A, A, A, F, F, F, F, F, /* 6 */ F, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, /* 7 */ A, A, A, A, A, A, A, A, A, A, A, F, F, F, F, F, /* 8 */ F, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, /* 9 */ A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, /* a */ A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, /* b */ A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, /* c */ A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, /* d */ A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, /* e */ A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, /* f */ A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, F } }; public static final CP949Encoding INSTANCE = new CP949Encoding(); } jcodings-1.0.58/src/org/jcodings/specific/EUCJPEncoding.java000066400000000000000000000116601433325321700235370ustar00rootroot00000000000000/* * Permission is hereby granted, free of charge, to any person obtaining a copy of * this software and associated documentation files (the "Software"), to deal in * the Software without restriction, including without limitation the rights to * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies * of the Software, and to permit persons to whom the Software is furnished to do * so, subject to the following conditions: * * The above copyright notice and this permission notice shall be included in all * copies or substantial portions of the Software. * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE * SOFTWARE. */ package org.jcodings.specific; public final class EUCJPEncoding extends BaseEUCJPEncoding { private static final String EUC_JP = "EUC-JP"; protected EUCJPEncoding() { super(EUCJPTrans); } @Override public int length(byte[]bytes, int p, int end) { return safeLengthForUptoThree(bytes, p, end); } @Override public String getCharsetName() { return EUC_JP; } private static final int EUCJPTrans[][] = new int[][]{ { /* S0 0 1 2 3 4 5 6 7 8 9 a b c d e f */ /* 0 */ A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, /* 1 */ A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, /* 2 */ A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, /* 3 */ A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, /* 4 */ A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, /* 5 */ A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, /* 6 */ A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, /* 7 */ A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, /* 8 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, 1, 2, /* 9 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, /* a */ F, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* b */ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* c */ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* d */ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* e */ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* f */ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, F }, { /* S1 0 1 2 3 4 5 6 7 8 9 a b c d e f */ /* 0 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, /* 1 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, /* 2 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, /* 3 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, /* 4 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, /* 5 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, /* 6 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, /* 7 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, /* 8 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, /* 9 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, /* a */ F, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, /* b */ A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, /* c */ A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, /* d */ A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, /* e */ A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, /* f */ A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, F }, { /* S2 0 1 2 3 4 5 6 7 8 9 a b c d e f */ /* 0 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, /* 1 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, /* 2 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, /* 3 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, /* 4 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, /* 5 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, /* 6 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, /* 7 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, /* 8 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, /* 9 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, /* a */ F, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* b */ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* c */ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* d */ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* e */ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* f */ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, F } }; public static final EUCJPEncoding INSTANCE = new EUCJPEncoding(); } jcodings-1.0.58/src/org/jcodings/specific/EUCKREncoding.java000066400000000000000000000134561433325321700235470ustar00rootroot00000000000000/* * Permission is hereby granted, free of charge, to any person obtaining a copy of * this software and associated documentation files (the "Software"), to deal in * the Software without restriction, including without limitation the rights to * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies * of the Software, and to permit persons to whom the Software is furnished to do * so, subject to the following conditions: * * The above copyright notice and this permission notice shall be included in all * copies or substantial portions of the Software. * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE * SOFTWARE. */ package org.jcodings.specific; import org.jcodings.EucEncoding; import org.jcodings.IntHolder; import org.jcodings.ascii.AsciiTables; public class EUCKREncoding extends EucEncoding { protected EUCKREncoding() { this("EUC-KR"); } protected EUCKREncoding(String name) { super(name, 1, 2, EUCKREncLen, EUCKRTrans, AsciiTables.AsciiCtypeTable); } @Override public int length(byte[]bytes, int p, int end) { return safeLengthForUptoTwo(bytes, p, end); } @Override public int mbcToCode(byte[]bytes, int p, int end) { return mbnMbcToCode(bytes, p, end); } @Override public int codeToMbcLength(int code) { return mb2CodeToMbcLength(code); } @Override public int codeToMbc(int code, byte[]bytes, int p) { return mb2CodeToMbc(code, bytes, p); } @Override public int mbcCaseFold(int flag, byte[]bytes, IntHolder pp, int end, byte[]lower) { return mbnMbcCaseFold(flag, bytes, pp, end, lower); } @Override public boolean isCodeCType(int code, int ctype) { return mb2IsCodeCType(code, ctype); } @Override public int[]ctypeCodeRange(int ctype, IntHolder sbOut) { return null; } // euckr_islead protected boolean isLead(int c) { return ((c) < 0xa1 || (c) == 0xff); } @Override public boolean isReverseMatchAllowed(byte[]bytes, int p, int end) { int c = bytes[p] & 0xff; return c <= 0x7e; } static final int EUCKREncLen[] = { 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1 }; private static final int EUCKRTrans[][] = new int[][]{ { /* S0 0 1 2 3 4 5 6 7 8 9 a b c d e f */ /* 0 */ A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, /* 1 */ A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, /* 2 */ A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, /* 3 */ A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, /* 4 */ A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, /* 5 */ A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, /* 6 */ A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, /* 7 */ A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, /* 8 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, /* 9 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, /* a */ F, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* b */ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* c */ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* d */ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* e */ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* f */ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, F }, { /* S1 0 1 2 3 4 5 6 7 8 9 a b c d e f */ /* 0 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, /* 1 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, /* 2 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, /* 3 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, /* 4 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, /* 5 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, /* 6 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, /* 7 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, /* 8 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, /* 9 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, /* a */ F, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, /* b */ A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, /* c */ A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, /* d */ A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, /* e */ A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, /* f */ A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, F } }; public static final EUCKREncoding INSTANCE = new EUCKREncoding(); } jcodings-1.0.58/src/org/jcodings/specific/EUCTWEncoding.java000066400000000000000000000202321433325321700235530ustar00rootroot00000000000000/* * Permission is hereby granted, free of charge, to any person obtaining a copy of * this software and associated documentation files (the "Software"), to deal in * the Software without restriction, including without limitation the rights to * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies * of the Software, and to permit persons to whom the Software is furnished to do * so, subject to the following conditions: * * The above copyright notice and this permission notice shall be included in all * copies or substantial portions of the Software. * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE * SOFTWARE. */ package org.jcodings.specific; import org.jcodings.EucEncoding; import org.jcodings.IntHolder; import org.jcodings.ascii.AsciiTables; public final class EUCTWEncoding extends EucEncoding { private static final String EUC_TW = "EUC-TW"; protected EUCTWEncoding() { super(EUC_TW, 1, 4, EUCTWEncLen, EUCTWTrans, AsciiTables.AsciiCtypeTable); } @Override public String getCharsetName() { return EUC_TW; } @Override public int length(byte[]bytes, int p, int end) { return safeLengthForUptoFour(bytes, p, end); } @Override public int mbcToCode(byte[]bytes, int p, int end) { return mbnMbcToCode(bytes, p, end); } @Override public int codeToMbcLength(int code) { return mb4CodeToMbcLength(code); } @Override public int codeToMbc(int code, byte[]bytes, int p) { return mb4CodeToMbc(code, bytes, p); } @Override public int mbcCaseFold(int flag, byte[]bytes, IntHolder pp, int end, byte[]lower) { return mbnMbcCaseFold(flag, bytes, pp, end, lower); } @Override public boolean isCodeCType(int code, int ctype) { return mb4IsCodeCType(code, ctype); } @Override public int[] ctypeCodeRange(int ctype, IntHolder sbOut) { return null; } // euctw_islead @Override protected boolean isLead(int c) { // 0xff equivalent to casting to unsigned char return ((c - 0xa1) & 0xff) > 0xfe - 0xa1; } @Override public boolean isReverseMatchAllowed(byte[]bytes, int p, int end) { int c = bytes[p] & 0xff; return c <= 0x7e; } static final int EUCTWEncLen[] = { 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 4, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1 }; private static final int EUCTWTrans[][] = new int[][]{ { /* S0 0 1 2 3 4 5 6 7 8 9 a b c d e f */ /* 0 */ A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, /* 1 */ A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, /* 2 */ A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, /* 3 */ A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, /* 4 */ A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, /* 5 */ A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, /* 6 */ A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, /* 7 */ A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, /* 8 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, 2, F, /* 9 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, /* a */ F, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* b */ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* c */ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* d */ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* e */ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* f */ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, F }, { /* S1 0 1 2 3 4 5 6 7 8 9 a b c d e f */ /* 0 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, /* 1 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, /* 2 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, /* 3 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, /* 4 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, /* 5 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, /* 6 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, /* 7 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, /* 8 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, /* 9 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, /* a */ F, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, /* b */ A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, /* c */ A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, /* d */ A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, /* e */ A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, /* f */ A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, F }, { /* S2 0 1 2 3 4 5 6 7 8 9 a b c d e f */ /* 0 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, /* 1 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, /* 2 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, /* 3 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, /* 4 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, /* 5 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, /* 6 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, /* 7 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, /* 8 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, /* 9 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, /* a */ F, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, /* b */ 3, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, /* c */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, /* d */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, /* e */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, /* f */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F }, { /* S3 0 1 2 3 4 5 6 7 8 9 a b c d e f */ /* 0 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, /* 1 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, /* 2 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, /* 3 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, /* 4 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, /* 5 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, /* 6 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, /* 7 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, /* 8 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, /* 9 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, /* a */ F, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* b */ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* c */ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* d */ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* e */ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* f */ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, F } }; public static final EUCTWEncoding INSTANCE = new EUCTWEncoding(); } jcodings-1.0.58/src/org/jcodings/specific/EmacsMuleEncoding.java000066400000000000000000000311341433325321700245420ustar00rootroot00000000000000/* * Permission is hereby granted, free of charge, to any person obtaining a copy of * this software and associated documentation files (the "Software"), to deal in * the Software without restriction, including without limitation the rights to * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies * of the Software, and to permit persons to whom the Software is furnished to do * so, subject to the following conditions: * * The above copyright notice and this permission notice shall be included in all * copies or substantial portions of the Software. * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE * SOFTWARE. */ package org.jcodings.specific; import org.jcodings.IntHolder; import org.jcodings.MultiByteEncoding; import org.jcodings.ascii.AsciiTables; import org.jcodings.exception.ErrorCodes; public final class EmacsMuleEncoding extends MultiByteEncoding { protected EmacsMuleEncoding() { super("Emacs-Mule", 1, 4, EmacsMuleEncLen, EmacsMuleTrans, AsciiTables.AsciiCtypeTable); } @Override public int length(byte[]bytes, int p, int end) { return safeLengthForUptoFour(bytes, p, end); } @Override public int mbcToCode(byte[]bytes, int p, int end) { return mbnMbcToCode(bytes, p, end); } @Override public int codeToMbcLength(int code) { // TODO: this won't work with signed values, probably need to move to long or use bitwise 'and' and masks if (isAscii(code)) { return 1; } else if (code > 0xffffffff) { return 0; } else if ((code & 0xff000000) >= 0x80000000) { return 4; } else if ((code & 0xff0000) >= 0x800000) { return 3; } else if ((code & 0xff00) >= 0x8000) { return 2; } return ErrorCodes.ERR_INVALID_CODE_POINT_VALUE; } @Override public int codeToMbc(int code, byte[]bytes, int p) { // TODO: check if mb4CodeToMbc is enough (too much code duplication in 1.9 sources) int p_ = p; if ((code & 0xff000000) != 0) bytes[p_++] = (byte)((code >>> 24) & 0xff); if ((code & 0xff0000) != 0) bytes[p_++] = (byte)((code >>> 16) & 0xff); if ((code & 0xff00) != 0 ) bytes[p_++] = (byte)((code >>> 8) & 0xff); bytes[p_++] = (byte)(code & 0xff); if (length(bytes, p, p_) != (p_ - p)) return ErrorCodes.ERR_INVALID_CODE_POINT_VALUE; return p_ - p; } @Override public int mbcCaseFold(int flag, byte[]bytes, IntHolder pp, int end, byte[]lower) { return mbnMbcCaseFold(flag, bytes, pp, end, lower); } @Override public boolean isCodeCType(int code, int ctype) { if (code < 128) { return isCodeCTypeInternal(code, ctype); // configured with ascii } else { return codeToMbcLength(code) > 1; } } @Override public int[]ctypeCodeRange(int ctype, IntHolder sbOut) { return null; } private static boolean islead(int c) { return c < 0x9d; } @Override public int leftAdjustCharHead(byte[] bytes, int p, int s, int end) { if (s <= p) return s; int p_ = s; while (!islead(bytes[p_] & 0xff) && p_ > p) p_--; return p_; }; @Override public boolean isReverseMatchAllowed(byte[]bytes, int p, int end) { return true; } static final int EmacsMuleEncLen[] = { 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 4, 4, 4, 4, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 }; private static final int EmacsMuleTrans[][] = new int[][]{ { /* S0 0 1 2 3 4 5 6 7 8 9 a b c d e f */ /* 0 */ A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, /* 1 */ A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, /* 2 */ A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, /* 3 */ A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, /* 4 */ A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, /* 5 */ A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, /* 6 */ A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, /* 7 */ A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, /* 8 */ F, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 9 */ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 4, 4, 5, 6, F, F, /* a */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, /* b */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, /* c */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, /* d */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, /* e */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, /* f */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F }, { /* S1 0 1 2 3 4 5 6 7 8 9 a b c d e f */ /* 0 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, /* 1 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, /* 2 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, /* 3 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, /* 4 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, /* 5 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, /* 6 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, /* 7 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, /* 8 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, /* 9 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, /* a */ A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, /* b */ A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, /* c */ A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, /* d */ A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, /* e */ A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, /* f */ A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A }, { /* S2 0 1 2 3 4 5 6 7 8 9 a b c d e f */ /* 0 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, /* 1 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, /* 2 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, /* 3 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, /* 4 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, /* 5 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, /* 6 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, /* 7 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, /* 8 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, /* 9 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, /* a */ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* b */ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* c */ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* d */ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* e */ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* f */ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 }, { /* S3 0 1 2 3 4 5 6 7 8 9 a b c d e f */ /* 0 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, /* 1 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, /* 2 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, /* 3 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, /* 4 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, /* 5 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, /* 6 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, /* 7 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, /* 8 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, /* 9 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, /* a */ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* b */ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* c */ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* d */ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* e */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, /* f */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F }, { /* S4 0 1 2 3 4 5 6 7 8 9 a b c d e f */ /* 0 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, /* 1 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, /* 2 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, /* 3 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, /* 4 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, /* 5 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, /* 6 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, /* 7 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, /* 8 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, /* 9 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, /* a */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, /* b */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, /* c */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, /* d */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, /* e */ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* f */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F }, { /* S5 0 1 2 3 4 5 6 7 8 9 a b c d e f */ /* 0 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, /* 1 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, /* 2 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, /* 3 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, /* 4 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, /* 5 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, /* 6 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, /* 7 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, /* 8 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, /* 9 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, /* a */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, /* b */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, /* c */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, /* d */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, /* e */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, /* f */ 2, 2, 2, 2, 2, F, F, F, F, F, F, F, F, F, F, F }, { /* S6 0 1 2 3 4 5 6 7 8 9 a b c d e f */ /* 0 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, /* 1 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, /* 2 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, /* 3 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, /* 4 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, /* 5 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, /* 6 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, /* 7 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, /* 8 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, /* 9 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, /* a */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, /* b */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, /* c */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, /* d */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, /* e */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, /* f */ F, F, F, F, F, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, F }, }; public static final EmacsMuleEncoding INSTANCE = new EmacsMuleEncoding(); } jcodings-1.0.58/src/org/jcodings/specific/GB18030Encoding.java000066400000000000000000000520761433325321700235630ustar00rootroot00000000000000/* * Permission is hereby granted, free of charge, to any person obtaining a copy of * this software and associated documentation files (the "Software"), to deal in * the Software without restriction, including without limitation the rights to * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies * of the Software, and to permit persons to whom the Software is furnished to do * so, subject to the following conditions: * * The above copyright notice and this permission notice shall be included in all * copies or substantial portions of the Software. * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE * SOFTWARE. */ package org.jcodings.specific; import org.jcodings.IntHolder; import org.jcodings.MultiByteEncoding; import org.jcodings.ascii.AsciiTables; public final class GB18030Encoding extends MultiByteEncoding { private static final String GB18030 = "GB18030"; protected GB18030Encoding() { super(GB18030, 1, 4, null, GB18030Trans, AsciiTables.AsciiCtypeTable); } @Override public int length(byte[]bytes, int p, int end) { int s = TransZero[bytes[p] & 0xff]; if (s < 0) return s == A ? 1 : CHAR_INVALID; return lengthForTwoUptoFour(bytes, p, end, s); } private int lengthForTwoUptoFour(byte[]bytes, int p, int end, int s) { if (++p == end) return missing(1); s = Trans[s][bytes[p] & 0xff]; if (s < 0) return s == A ? 2 : CHAR_INVALID; return lengthForThreeUptoFour(bytes, p, end, s); } private int lengthForThreeUptoFour(byte[]bytes, int p, int end, int s) { if (++p == end) return missing(2); s = Trans[s][bytes[p] & 0xff]; if (s < 0) return s == A ? 3 : CHAR_INVALID; if (++p == end) return missing(1); s = Trans[s][bytes[p] & 0xff]; return s == A ? 4 : CHAR_INVALID; } @Override public int mbcToCode(byte[]bytes, int p, int end) { return mbnMbcToCode(bytes, p, end); } @Override public int codeToMbcLength(int code) { return mb4CodeToMbcLength(code); } @Override public int codeToMbc(int code, byte[]bytes, int p) { return mb4CodeToMbc(code, bytes, p); } @Override public int mbcCaseFold(int flag, byte[]bytes, IntHolder pp, int end, byte[]lower) { return mbnMbcCaseFold(flag, bytes, pp, end, lower); } @Override public boolean isCodeCType(int code, int ctype) { return mb4IsCodeCType(code, ctype); } @Override public int[] ctypeCodeRange(int ctype, IntHolder sbOut) { return null; } @Override public String getCharsetName() { return GB18030; } private enum State { START, One_C2, One_C4, One_CM, Odd_CM_One_CX, Even_CM_One_CX, /* CMC4 : pair of "CM C4" */ One_CMC4, Odd_CMC4, One_C4_Odd_CMC4, Even_CMC4, One_C4_Even_CMC4, Odd_CM_Odd_CMC4, Even_CM_Odd_CMC4, Odd_CM_Even_CMC4, Even_CM_Even_CMC4, /* C4CM : pair of "C4 CM" */ Odd_C4CM, One_CM_Odd_C4CM, Even_C4CM, One_CM_Even_C4CM, Even_CM_Odd_C4CM, Odd_CM_Odd_C4CM, Even_CM_Even_C4CM, Odd_CM_Even_C4CM }; @Override public int leftAdjustCharHead(byte[]bytes, int start, int s, int end) { State state = State.START; for (int p = s; p >= start; p--) { int pByte = bytes[p] & 0xff; switch (state) { case START: switch (GB18030_MAP[pByte]) { case C1: return s; case C2: state = State.One_C2; /* C2 */ break; case C4: state = State.One_C4; /* C4 */ break; case CM: state = State.One_CM; /* CM */ break; } break; case One_C2: /* C2 */ switch (GB18030_MAP[pByte]) { case C1: case C2: case C4: return s; case CM: state = State.Odd_CM_One_CX; /* CM C2 */ break; } break; case One_C4: /* C4 */ switch (GB18030_MAP[pByte]) { case C1: case C2: case C4: return s; case CM: state = State.One_CMC4; break; } break; case One_CM: /* CM */ switch (GB18030_MAP[pByte]) { case C1: case C2: return s; case C4: state = State.Odd_C4CM; break; case CM: state = State.Odd_CM_One_CX; /* CM CM */ break; } break; case Odd_CM_One_CX: /* CM C2 */ /* CM CM */ /* CM CM CM C4 */ switch (GB18030_MAP[pByte]) { case C1: case C2: case C4: return (s - 1); case CM: state = State.Even_CM_One_CX; break; } break; case Even_CM_One_CX: /* CM CM C2 */ /* CM CM CM */ /* CM CM C4 */ switch (GB18030_MAP[pByte]) { case C1: case C2: case C4: return s; case CM: state = State.Odd_CM_One_CX; break; } break; case One_CMC4: /* CM C4 */ switch (GB18030_MAP[pByte]) { case C1: case C2: return (s - 1); case C4: state = State.One_C4_Odd_CMC4; /* C4 CM C4 */ break; case CM: state = State.Even_CM_One_CX; /* CM CM C4 */ break; } break; case Odd_CMC4: /* CM C4 CM C4 CM C4 */ switch (GB18030_MAP[pByte]) { case C1: case C2: return (s - 1); case C4: state = State.One_C4_Odd_CMC4; break; case CM: state = State.Odd_CM_Odd_CMC4; break; } break; case One_C4_Odd_CMC4: /* C4 CM C4 */ switch (GB18030_MAP[pByte]) { case C1: case C2: case C4: return (s - 1); case CM: state = State.Even_CMC4; /* CM C4 CM C4 */ break; } break; case Even_CMC4: /* CM C4 CM C4 */ switch (GB18030_MAP[pByte]) { case C1: case C2: return (s - 3); case C4: state = State.One_C4_Even_CMC4; break; case CM: state = State.Odd_CM_Even_CMC4; break; } break; case One_C4_Even_CMC4: /* C4 CM C4 CM C4 */ switch (GB18030_MAP[pByte]) { case C1: case C2: case C4: return (s - 3); case CM: state = State.Odd_CMC4; break; } break; case Odd_CM_Odd_CMC4: /* CM CM C4 CM C4 CM C4 */ switch (GB18030_MAP[pByte]) { case C1: case C2: case C4: return (s - 3); case CM: state = State.Even_CM_Odd_CMC4; break; } break; case Even_CM_Odd_CMC4: /* CM CM CM C4 CM C4 CM C4 */ switch (GB18030_MAP[pByte]) { case C1: case C2: case C4: return (s - 1); case CM: state = State.Odd_CM_Odd_CMC4; break; } break; case Odd_CM_Even_CMC4: /* CM CM C4 CM C4 */ switch (GB18030_MAP[pByte]) { case C1: case C2: case C4: return (s - 1); case CM: state = State.Even_CM_Even_CMC4; break; } break; case Even_CM_Even_CMC4: /* CM CM CM C4 CM C4 */ switch (GB18030_MAP[pByte]) { case C1: case C2: case C4: return (s - 3); case CM: state = State.Odd_CM_Even_CMC4; break; } break; case Odd_C4CM: /* C4 CM */ /* C4 CM C4 CM C4 CM*/ switch (GB18030_MAP[pByte]) { case C1: case C2: case C4: return s; case CM: state = State.One_CM_Odd_C4CM; /* CM C4 CM */ break; } break; case One_CM_Odd_C4CM: /* CM C4 CM */ /* CM C4 CM C4 CM C4 CM */ switch (GB18030_MAP[pByte]) { case C1: case C2: return (s - 2); /* |CM C4 CM */ case C4: state = State.Even_C4CM; break; case CM: state = State.Even_CM_Odd_C4CM; break; } break; case Even_C4CM: /* C4 CM C4 CM */ switch (GB18030_MAP[pByte]) { case C1: case C2: case C4: return (s - 2); /* C4|CM C4 CM */ case CM: state = State.One_CM_Even_C4CM; break; } break; case One_CM_Even_C4CM: /* CM C4 CM C4 CM */ switch (GB18030_MAP[pByte]) { case C1: case C2: return (s - 0); /*|CM C4 CM C4|CM */ case C4: state = State.Odd_C4CM; break; case CM: state = State.Even_CM_Even_C4CM; break; } break; case Even_CM_Odd_C4CM: /* CM CM C4 CM */ switch (GB18030_MAP[pByte]) { case C1: case C2: case C4: return (s - 0); /* |CM CM|C4|CM */ case CM: state = State.Odd_CM_Odd_C4CM; break; } break; case Odd_CM_Odd_C4CM: /* CM CM CM C4 CM */ switch (GB18030_MAP[pByte]) { case C1: case C2: case C4: return (s - 2); /* |CM CM|CM C4 CM */ case CM: state = State.Even_CM_Odd_C4CM; break; } break; case Even_CM_Even_C4CM: /* CM CM C4 CM C4 CM */ switch (GB18030_MAP[pByte]) { case C1: case C2: case C4: return (s - 2); /* |CM CM|C4|CM C4 CM */ case CM: state = State.Odd_CM_Even_C4CM; break; } break; case Odd_CM_Even_C4CM: /* CM CM CM C4 CM C4 CM */ switch (GB18030_MAP[pByte]) { case C1: case C2: case C4: return (s - 0); /* |CM CM|CM C4 CM C4|CM */ case CM: state = State.Even_CM_Even_C4CM; break; } break; } } switch (state) { case START: return (s - 0); case One_C2: return (s - 0); case One_C4: return (s - 0); case One_CM: return (s - 0); case Odd_CM_One_CX: return (s - 1); case Even_CM_One_CX: return (s - 0); case One_CMC4: return (s - 1); case Odd_CMC4: return (s - 1); case One_C4_Odd_CMC4: return (s - 1); case Even_CMC4: return (s - 3); case One_C4_Even_CMC4: return (s - 3); case Odd_CM_Odd_CMC4: return (s - 3); case Even_CM_Odd_CMC4: return (s - 1); case Odd_CM_Even_CMC4: return (s - 1); case Even_CM_Even_CMC4: return (s - 3); case Odd_C4CM: return (s - 0); case One_CM_Odd_C4CM: return (s - 2); case Even_C4CM: return (s - 2); case One_CM_Even_C4CM: return (s - 0); case Even_CM_Odd_C4CM: return (s - 0); case Odd_CM_Odd_C4CM: return (s - 2); case Even_CM_Even_C4CM: return (s - 2); case Odd_CM_Even_C4CM: return (s - 0); } return s; } @Override public boolean isReverseMatchAllowed(byte[]bytes, int p, int end) { return GB18030_MAP[bytes[p] & 0xff] == C1; } private static final int C1 = 0; /* one-byte char */ private static final int C2 = 1; /* one-byte or second of two-byte char */ private static final int C4 = 2; /* one-byte or second or fourth of four-byte char */ private static final int CM = 3; /* first of two- or four-byte char or second of two-byte char */ private static final int GB18030_MAP[] = { C1, C1, C1, C1, C1, C1, C1, C1, C1, C1, C1, C1, C1, C1, C1, C1, C1, C1, C1, C1, C1, C1, C1, C1, C1, C1, C1, C1, C1, C1, C1, C1, C1, C1, C1, C1, C1, C1, C1, C1, C1, C1, C1, C1, C1, C1, C1, C1, C4, C4, C4, C4, C4, C4, C4, C4, C4, C4, C1, C1, C1, C1, C1, C1, C2, C2, C2, C2, C2, C2, C2, C2, C2, C2, C2, C2, C2, C2, C2, C2, C2, C2, C2, C2, C2, C2, C2, C2, C2, C2, C2, C2, C2, C2, C2, C2, C2, C2, C2, C2, C2, C2, C2, C2, C2, C2, C2, C2, C2, C2, C2, C2, C2, C2, C2, C2, C2, C2, C2, C2, C2, C2, C2, C2, C2, C2, C2, C1, C2, CM, CM, CM, CM, CM, CM, CM, CM, CM, CM, CM, CM, CM, CM, CM, CM, CM, CM, CM, CM, CM, CM, CM, CM, CM, CM, CM, CM, CM, CM, CM, CM, CM, CM, CM, CM, CM, CM, CM, CM, CM, CM, CM, CM, CM, CM, CM, CM, CM, CM, CM, CM, CM, CM, CM, CM, CM, CM, CM, CM, CM, CM, CM, CM, CM, CM, CM, CM, CM, CM, CM, CM, CM, CM, CM, CM, CM, CM, CM, CM, CM, CM, CM, CM, CM, CM, CM, CM, CM, CM, CM, CM, CM, CM, CM, CM, CM, CM, CM, CM, CM, CM, CM, CM, CM, CM, CM, CM, CM, CM, CM, CM, CM, CM, CM, CM, CM, CM, CM, CM, CM, CM, CM, CM, CM, CM, C1 }; private static final int GB18030Trans[][] = new int[][]{ { /* S0 0 1 2 3 4 5 6 7 8 9 a b c d e f */ /* 0 */ A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, /* 1 */ A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, /* 2 */ A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, /* 3 */ A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, /* 4 */ A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, /* 5 */ A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, /* 6 */ A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, /* 7 */ A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, /* 8 */ F, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 9 */ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* a */ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* b */ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* c */ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* d */ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* e */ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* f */ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, F }, { /* S1 0 1 2 3 4 5 6 7 8 9 a b c d e f */ /* 0 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, /* 1 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, /* 2 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, /* 3 */ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, F, F, F, F, F, F, /* 4 */ A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, /* 5 */ A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, /* 6 */ A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, /* 7 */ A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, F, /* 8 */ A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, /* 9 */ A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, /* a */ A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, /* b */ A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, /* c */ A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, /* d */ A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, /* e */ A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, /* f */ A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, F }, { /* S2 0 1 2 3 4 5 6 7 8 9 a b c d e f */ /* 0 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, /* 1 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, /* 2 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, /* 3 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, /* 4 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, /* 5 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, /* 6 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, /* 7 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, /* 8 */ F, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, /* 9 */ 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, /* a */ 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, /* b */ 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, /* c */ 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, /* d */ 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, /* e */ 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, /* f */ 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, F }, { /* S3 0 1 2 3 4 5 6 7 8 9 a b c d e f */ /* 0 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, /* 1 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, /* 2 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, /* 3 */ A, A, A, A, A, A, A, A, A, A, F, F, F, F, F, F, /* 4 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, /* 5 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, /* 6 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, /* 7 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, /* 8 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, /* 9 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, /* a */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, /* b */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, /* c */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, /* d */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, /* e */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, /* f */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F } }; public static final GB18030Encoding INSTANCE = new GB18030Encoding(); } jcodings-1.0.58/src/org/jcodings/specific/GB2312Encoding.java000066400000000000000000000024351433325321700234710ustar00rootroot00000000000000/* * Permission is hereby granted, free of charge, to any person obtaining a copy of * this software and associated documentation files (the "Software"), to deal in * the Software without restriction, including without limitation the rights to * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies * of the Software, and to permit persons to whom the Software is furnished to do * so, subject to the following conditions: * * The above copyright notice and this permission notice shall be included in all * copies or substantial portions of the Software. * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE * SOFTWARE. */ package org.jcodings.specific; public final class GB2312Encoding extends EUCKREncoding { protected GB2312Encoding() { super("GB2312"); } public static final GB2312Encoding INSTANCE = new GB2312Encoding(); } jcodings-1.0.58/src/org/jcodings/specific/GBKEncoding.java000066400000000000000000000166011433325321700232740ustar00rootroot00000000000000/* * Permission is hereby granted, free of charge, to any person obtaining a copy of * this software and associated documentation files (the "Software"), to deal in * the Software without restriction, including without limitation the rights to * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies * of the Software, and to permit persons to whom the Software is furnished to do * so, subject to the following conditions: * * The above copyright notice and this permission notice shall be included in all * copies or substantial portions of the Software. * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE * SOFTWARE. */ package org.jcodings.specific; import org.jcodings.CanBeTrailTableEncoding; import org.jcodings.IntHolder; import org.jcodings.ascii.AsciiTables; public final class GBKEncoding extends CanBeTrailTableEncoding { private static final String GBK = "GBK"; protected GBKEncoding() { super(GBK, 1, 2, GBKEncLen, GBKTrans, AsciiTables.AsciiCtypeTable, GBK_CAN_BE_TRAIL_TABLE); } @Override public int length(byte[]bytes, int p, int end) { return safeLengthForUptoTwo(bytes, p, end); } @Override public int mbcToCode(byte[]bytes, int p, int end) { return mbnMbcToCode(bytes, p, end); } @Override public int codeToMbcLength(int code) { return mb2CodeToMbcLength(code); } @Override public int codeToMbc(int code, byte[]bytes, int p) { return mb2CodeToMbc(code, bytes, p); } @Override public int mbcCaseFold(int flag, byte[]bytes, IntHolder pp, int end, byte[]lower) { return mbnMbcCaseFold(flag, bytes, pp, end, lower); } @Override public boolean isCodeCType(int code, int ctype) { return mb2IsCodeCType(code, ctype); } @Override public int[]ctypeCodeRange(int ctype, IntHolder sbOut) { return null; } @Override public String getCharsetName() { return GBK; } static final boolean GBK_CAN_BE_TRAIL_TABLE[] = { false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, false, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, false }; static final int GBKEncLen[] = { 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1 }; private static final int GBKTrans[][] = new int[][]{ { /* S0 0 1 2 3 4 5 6 7 8 9 a b c d e f */ /* 0 */ A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, /* 1 */ A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, /* 2 */ A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, /* 3 */ A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, /* 4 */ A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, /* 5 */ A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, /* 6 */ A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, /* 7 */ A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, /* 8 */ A, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 9 */ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* a */ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* b */ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* c */ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* d */ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* e */ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* f */ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, F }, { /* S1 0 1 2 3 4 5 6 7 8 9 a b c d e f */ /* 0 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, /* 1 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, /* 2 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, /* 3 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, /* 4 */ A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, /* 5 */ A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, /* 6 */ A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, /* 7 */ A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, F, /* 8 */ A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, /* 9 */ A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, /* a */ A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, /* b */ A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, /* c */ A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, /* d */ A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, /* e */ A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, /* f */ A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, F } }; public static final GBKEncoding INSTANCE = new GBKEncoding(); } jcodings-1.0.58/src/org/jcodings/specific/ISO8859_10Encoding.java000066400000000000000000000245271433325321700241670ustar00rootroot00000000000000/* * Permission is hereby granted, free of charge, to any person obtaining a copy of * this software and associated documentation files (the "Software"), to deal in * the Software without restriction, including without limitation the rights to * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies * of the Software, and to permit persons to whom the Software is furnished to do * so, subject to the following conditions: * * The above copyright notice and this permission notice shall be included in all * copies or substantial portions of the Software. * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE * SOFTWARE. */ package org.jcodings.specific; import org.jcodings.Config; import org.jcodings.ISOEncoding; import org.jcodings.IntHolder; import org.jcodings.constants.CharacterType; public final class ISO8859_10Encoding extends ISOEncoding { protected ISO8859_10Encoding() { super("ISO-8859-10", ISO8859_10CtypeTable, ISO8859_10ToLowerCaseTable, ISO8859_10CaseFoldMap); } @Override public int caseMap(IntHolder flagP, byte[] bytes, IntHolder pp, int end, byte[] to, int toP, int toEnd) { int toStart = toP; int flags = flagP.value; while (pp.value < end && toP < toEnd) { int code = bytes[pp.value++] & 0xff; if (code == SHARP_s) { if ((flags & Config.CASE_UPCASE) != 0) { flags |= Config.CASE_MODIFIED; to[toP++] = 'S'; code = (flags & Config.CASE_TITLECASE) != 0 ? 's' : 'S'; } else if ((flags & Config.CASE_FOLD) != 0) { flags |= Config.CASE_MODIFIED; to[toP++] = 's'; code = 's'; } } else if (code == 0xBD || code == 0xFF) { } else if ((ISO8859_10CtypeTable[code] & CharacterType.BIT_UPPER) != 0 && (flags & (Config.CASE_DOWNCASE | Config.CASE_FOLD)) != 0) { flags |= Config.CASE_MODIFIED; code = LowerCaseTable[code]; } else if ((ISO8859_10CtypeTable[code] & CharacterType.BIT_LOWER) != 0 && (flags & Config.CASE_UPCASE) != 0) { flags |= Config.CASE_MODIFIED; if (code >= 0xA0 && code <= 0xBF) { code -= 0x10; } else { code -= 0x20; } } to[toP++] = (byte)code; if ((flags & Config.CASE_TITLECASE) != 0) { flags ^= (Config.CASE_UPCASE | Config.CASE_DOWNCASE | Config.CASE_TITLECASE); } } flagP.value = flags; return toP - toStart; } static final short ISO8859_10CtypeTable[] = { 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x420c, 0x4209, 0x4208, 0x4208, 0x4208, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4284, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x78b0, 0x78b0, 0x78b0, 0x78b0, 0x78b0, 0x78b0, 0x78b0, 0x78b0, 0x78b0, 0x78b0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x7ca2, 0x7ca2, 0x7ca2, 0x7ca2, 0x7ca2, 0x7ca2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x51a0, 0x41a0, 0x78e2, 0x78e2, 0x78e2, 0x78e2, 0x78e2, 0x78e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x4008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0284, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x00a0, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x01a0, 0x34a2, 0x34a2, 0x00a0, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x01a0, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x01a0, 0x30e2, 0x30e2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2 }; static final byte ISO8859_10ToLowerCaseTable[] = new byte[]{ (byte)'\000', (byte)'\001', (byte)'\002', (byte)'\003', (byte)'\004', (byte)'\005', (byte)'\006', (byte)'\007', (byte)'\010', (byte)'\011', (byte)'\012', (byte)'\013', (byte)'\014', (byte)'\015', (byte)'\016', (byte)'\017', (byte)'\020', (byte)'\021', (byte)'\022', (byte)'\023', (byte)'\024', (byte)'\025', (byte)'\026', (byte)'\027', (byte)'\030', (byte)'\031', (byte)'\032', (byte)'\033', (byte)'\034', (byte)'\035', (byte)'\036', (byte)'\037', (byte)'\040', (byte)'\041', (byte)'\042', (byte)'\043', (byte)'\044', (byte)'\045', (byte)'\046', (byte)'\047', (byte)'\050', (byte)'\051', (byte)'\052', (byte)'\053', (byte)'\054', (byte)'\055', (byte)'\056', (byte)'\057', (byte)'\060', (byte)'\061', (byte)'\062', (byte)'\063', (byte)'\064', (byte)'\065', (byte)'\066', (byte)'\067', (byte)'\070', (byte)'\071', (byte)'\072', (byte)'\073', (byte)'\074', (byte)'\075', (byte)'\076', (byte)'\077', (byte)'\100', (byte)'\141', (byte)'\142', (byte)'\143', (byte)'\144', (byte)'\145', (byte)'\146', (byte)'\147', (byte)'\150', (byte)'\151', (byte)'\152', (byte)'\153', (byte)'\154', (byte)'\155', (byte)'\156', (byte)'\157', (byte)'\160', (byte)'\161', (byte)'\162', (byte)'\163', (byte)'\164', (byte)'\165', (byte)'\166', (byte)'\167', (byte)'\170', (byte)'\171', (byte)'\172', (byte)'\133', (byte)'\134', (byte)'\135', (byte)'\136', (byte)'\137', (byte)'\140', (byte)'\141', (byte)'\142', (byte)'\143', (byte)'\144', (byte)'\145', (byte)'\146', (byte)'\147', (byte)'\150', (byte)'\151', (byte)'\152', (byte)'\153', (byte)'\154', (byte)'\155', (byte)'\156', (byte)'\157', (byte)'\160', (byte)'\161', (byte)'\162', (byte)'\163', (byte)'\164', (byte)'\165', (byte)'\166', (byte)'\167', (byte)'\170', (byte)'\171', (byte)'\172', (byte)'\173', (byte)'\174', (byte)'\175', (byte)'\176', (byte)'\177', (byte)'\200', (byte)'\201', (byte)'\202', (byte)'\203', (byte)'\204', (byte)'\205', (byte)'\206', (byte)'\207', (byte)'\210', (byte)'\211', (byte)'\212', (byte)'\213', (byte)'\214', (byte)'\215', (byte)'\216', (byte)'\217', (byte)'\220', (byte)'\221', (byte)'\222', (byte)'\223', (byte)'\224', (byte)'\225', (byte)'\226', (byte)'\227', (byte)'\230', (byte)'\231', (byte)'\232', (byte)'\233', (byte)'\234', (byte)'\235', (byte)'\236', (byte)'\237', (byte)'\240', (byte)'\261', (byte)'\262', (byte)'\263', (byte)'\264', (byte)'\265', (byte)'\266', (byte)'\247', (byte)'\270', (byte)'\271', (byte)'\272', (byte)'\273', (byte)'\274', (byte)'\255', (byte)'\276', (byte)'\277', (byte)'\260', (byte)'\261', (byte)'\262', (byte)'\263', (byte)'\264', (byte)'\265', (byte)'\266', (byte)'\267', (byte)'\270', (byte)'\271', (byte)'\272', (byte)'\273', (byte)'\274', (byte)'\275', (byte)'\276', (byte)'\277', (byte)'\340', (byte)'\341', (byte)'\342', (byte)'\343', (byte)'\344', (byte)'\345', (byte)'\346', (byte)'\347', (byte)'\350', (byte)'\351', (byte)'\352', (byte)'\353', (byte)'\354', (byte)'\355', (byte)'\356', (byte)'\357', (byte)'\360', (byte)'\361', (byte)'\362', (byte)'\363', (byte)'\364', (byte)'\365', (byte)'\366', (byte)'\367', (byte)'\370', (byte)'\371', (byte)'\372', (byte)'\373', (byte)'\374', (byte)'\375', (byte)'\376', (byte)'\337', (byte)'\340', (byte)'\341', (byte)'\342', (byte)'\343', (byte)'\344', (byte)'\345', (byte)'\346', (byte)'\347', (byte)'\350', (byte)'\351', (byte)'\352', (byte)'\353', (byte)'\354', (byte)'\355', (byte)'\356', (byte)'\357', (byte)'\360', (byte)'\361', (byte)'\362', (byte)'\363', (byte)'\364', (byte)'\365', (byte)'\366', (byte)'\367', (byte)'\370', (byte)'\371', (byte)'\372', (byte)'\373', (byte)'\374', (byte)'\375', (byte)'\376', (byte)'\377' }; static final int ISO8859_10CaseFoldMap[][] = { { 0xa1, 0xb1 }, { 0xa2, 0xb2 }, { 0xa3, 0xb3 }, { 0xa4, 0xb4 }, { 0xa5, 0xb5 }, { 0xa6, 0xb6 }, { 0xa8, 0xb8 }, { 0xa9, 0xb9 }, { 0xaa, 0xba }, { 0xab, 0xbb }, { 0xac, 0xbc }, { 0xae, 0xbe }, { 0xaf, 0xbf }, { 0xc0, 0xe0 }, { 0xc1, 0xe1 }, { 0xc2, 0xe2 }, { 0xc3, 0xe3 }, { 0xc4, 0xe4 }, { 0xc5, 0xe5 }, { 0xc6, 0xe6 }, { 0xc7, 0xe7 }, { 0xc8, 0xe8 }, { 0xc9, 0xe9 }, { 0xca, 0xea }, { 0xcb, 0xeb }, { 0xcc, 0xec }, { 0xcd, 0xed }, { 0xce, 0xee }, { 0xcf, 0xef }, { 0xd0, 0xf0 }, { 0xd1, 0xf1 }, { 0xd2, 0xf2 }, { 0xd3, 0xf3 }, { 0xd4, 0xf4 }, { 0xd5, 0xf5 }, { 0xd6, 0xf6 }, { 0xd7, 0xf7 }, { 0xd8, 0xf8 }, { 0xd9, 0xf9 }, { 0xda, 0xfa }, { 0xdb, 0xfb }, { 0xdc, 0xfc }, { 0xdd, 0xfd }, { 0xde, 0xfe } }; public static final ISO8859_10Encoding INSTANCE = new ISO8859_10Encoding(); } jcodings-1.0.58/src/org/jcodings/specific/ISO8859_11Encoding.java000066400000000000000000000106661433325321700241670ustar00rootroot00000000000000/* * Permission is hereby granted, free of charge, to any person obtaining a copy of * this software and associated documentation files (the "Software"), to deal in * the Software without restriction, including without limitation the rights to * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies * of the Software, and to permit persons to whom the Software is furnished to do * so, subject to the following conditions: * * The above copyright notice and this permission notice shall be included in all * copies or substantial portions of the Software. * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE * SOFTWARE. */ package org.jcodings.specific; import org.jcodings.ApplyAllCaseFoldFunction; import org.jcodings.CaseFoldCodeItem; import org.jcodings.ISOEncoding; import org.jcodings.IntHolder; import org.jcodings.ascii.AsciiTables; public final class ISO8859_11Encoding extends ISOEncoding { protected ISO8859_11Encoding() { super("ISO-8859-11", ISO8859_11CtypeTable, AsciiTables.ToLowerCaseTable, null); } @Override public int mbcCaseFold(int flag, byte[]bytes, IntHolder pp, int end, byte[]lower) { return asciiMbcCaseFold(flag, bytes, pp, end, lower); } @Override public final byte[]toLowerCaseTable() { return LowerCaseTable; } @Override public void applyAllCaseFold(int flag, ApplyAllCaseFoldFunction fun, Object arg) { asciiApplyAllCaseFold(flag, fun, arg); } @Override public CaseFoldCodeItem[]caseFoldCodesByString(int flag, byte[]bytes, int p, int end) { return asciiCaseFoldCodesByString(flag, bytes, p, end); } static final short ISO8859_11CtypeTable[] = { 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x420c, 0x4209, 0x4208, 0x4208, 0x4208, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4284, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x78b0, 0x78b0, 0x78b0, 0x78b0, 0x78b0, 0x78b0, 0x78b0, 0x78b0, 0x78b0, 0x78b0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x7ca2, 0x7ca2, 0x7ca2, 0x7ca2, 0x7ca2, 0x7ca2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x51a0, 0x41a0, 0x78e2, 0x78e2, 0x78e2, 0x78e2, 0x78e2, 0x78e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x4008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0284, 0x30a2, 0x30a2, 0x30a2, 0x30a2, 0x30a2, 0x30a2, 0x30a2, 0x30a2, 0x30a2, 0x30a2, 0x30a2, 0x30a2, 0x30a2, 0x30a2, 0x30a2, 0x30a2, 0x30a2, 0x30a2, 0x30a2, 0x30a2, 0x30a2, 0x30a2, 0x30a2, 0x30a2, 0x30a2, 0x30a2, 0x30a2, 0x30a2, 0x30a2, 0x30a2, 0x30a2, 0x30a2, 0x30a2, 0x30a2, 0x30a2, 0x30a2, 0x30a2, 0x30a2, 0x30a2, 0x30a2, 0x30a2, 0x30a2, 0x30a2, 0x30a2, 0x30a2, 0x30a2, 0x30a2, 0x30a2, 0x30a2, 0x30a2, 0x30a2, 0x30a2, 0x30a2, 0x30a2, 0x30a2, 0x30a2, 0x30a2, 0x30a2, 0x0000, 0x0000, 0x0000, 0x0000, 0x30a2, 0x30a2, 0x30a2, 0x30a2, 0x30a2, 0x30a2, 0x30a2, 0x30a2, 0x30a2, 0x30a2, 0x30a2, 0x30a2, 0x30a2, 0x30a2, 0x30a2, 0x30a2, 0x30a2, 0x30a2, 0x30a2, 0x30a2, 0x30a2, 0x30a2, 0x30a2, 0x30a2, 0x30a2, 0x30a2, 0x30a2, 0x30a2, 0x30a2, 0x0000, 0x0000, 0x0000, 0x0000 }; public static final ISO8859_11Encoding INSTANCE = new ISO8859_11Encoding(); } jcodings-1.0.58/src/org/jcodings/specific/ISO8859_13Encoding.java000066400000000000000000000240071433325321700241630ustar00rootroot00000000000000/* * Permission is hereby granted, free of charge, to any person obtaining a copy of * this software and associated documentation files (the "Software"), to deal in * the Software without restriction, including without limitation the rights to * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies * of the Software, and to permit persons to whom the Software is furnished to do * so, subject to the following conditions: * * The above copyright notice and this permission notice shall be included in all * copies or substantial portions of the Software. * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE * SOFTWARE. */ package org.jcodings.specific; import org.jcodings.Config; import org.jcodings.ISOEncoding; import org.jcodings.IntHolder; import org.jcodings.constants.CharacterType; public final class ISO8859_13Encoding extends ISOEncoding { protected ISO8859_13Encoding() { super("ISO-8859-13", ISO8859_13CtypeTable, ISO8859_13ToLowerCaseTable, ISO8859_13CaseFoldMap); } @Override public int caseMap(IntHolder flagP, byte[] bytes, IntHolder pp, int end, byte[] to, int toP, int toEnd) { int toStart = toP; int flags = flagP.value; while (pp.value < end && toP < toEnd) { int code = bytes[pp.value++] & 0xff; if (code == SHARP_s) { if ((flags & Config.CASE_UPCASE) != 0) { flags |= Config.CASE_MODIFIED; to[toP++] = 'S'; code = (flags & Config.CASE_TITLECASE) != 0 ? 's' : 'S'; } else if ((flags & Config.CASE_FOLD) != 0) { flags |= Config.CASE_MODIFIED; to[toP++] = 's'; code = 's'; } } else if ((ISO8859_13CtypeTable[code] & CharacterType.BIT_UPPER) != 0 && (flags & (Config.CASE_DOWNCASE | Config.CASE_FOLD)) != 0) { flags |= Config.CASE_MODIFIED; code = LowerCaseTable[code]; } else if (code == 0xB5) { } else if ((ISO8859_13CtypeTable[code] & CharacterType.BIT_LOWER) != 0 && (flags & Config.CASE_UPCASE) != 0) { flags |= Config.CASE_MODIFIED; if (code == 0xB8 || code == 0xBA || code == 0xBF) { code -= 0x10; } else { code -= 0x20; } } to[toP++] = (byte)code; if ((flags & Config.CASE_TITLECASE) != 0) { flags ^= (Config.CASE_UPCASE | Config.CASE_DOWNCASE | Config.CASE_TITLECASE); } } flagP.value = flags; return toP - toStart; } static final short ISO8859_13CtypeTable[] = { 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x420c, 0x4209, 0x4208, 0x4208, 0x4208, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4284, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x78b0, 0x78b0, 0x78b0, 0x78b0, 0x78b0, 0x78b0, 0x78b0, 0x78b0, 0x78b0, 0x78b0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x7ca2, 0x7ca2, 0x7ca2, 0x7ca2, 0x7ca2, 0x7ca2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x51a0, 0x41a0, 0x78e2, 0x78e2, 0x78e2, 0x78e2, 0x78e2, 0x78e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x4008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0284, 0x01a0, 0x00a0, 0x00a0, 0x00a0, 0x01a0, 0x00a0, 0x00a0, 0x34a2, 0x00a0, 0x34a2, 0x01a0, 0x00a0, 0x01a0, 0x00a0, 0x34a2, 0x00a0, 0x00a0, 0x10a0, 0x10a0, 0x01a0, 0x30e2, 0x00a0, 0x01a0, 0x30e2, 0x10a0, 0x30e2, 0x01a0, 0x10a0, 0x10a0, 0x10a0, 0x30e2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x00a0, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x00a0, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x01a0 }; static final byte ISO8859_13ToLowerCaseTable[] = new byte[]{ (byte)'\000', (byte)'\001', (byte)'\002', (byte)'\003', (byte)'\004', (byte)'\005', (byte)'\006', (byte)'\007', (byte)'\010', (byte)'\011', (byte)'\012', (byte)'\013', (byte)'\014', (byte)'\015', (byte)'\016', (byte)'\017', (byte)'\020', (byte)'\021', (byte)'\022', (byte)'\023', (byte)'\024', (byte)'\025', (byte)'\026', (byte)'\027', (byte)'\030', (byte)'\031', (byte)'\032', (byte)'\033', (byte)'\034', (byte)'\035', (byte)'\036', (byte)'\037', (byte)'\040', (byte)'\041', (byte)'\042', (byte)'\043', (byte)'\044', (byte)'\045', (byte)'\046', (byte)'\047', (byte)'\050', (byte)'\051', (byte)'\052', (byte)'\053', (byte)'\054', (byte)'\055', (byte)'\056', (byte)'\057', (byte)'\060', (byte)'\061', (byte)'\062', (byte)'\063', (byte)'\064', (byte)'\065', (byte)'\066', (byte)'\067', (byte)'\070', (byte)'\071', (byte)'\072', (byte)'\073', (byte)'\074', (byte)'\075', (byte)'\076', (byte)'\077', (byte)'\100', (byte)'\141', (byte)'\142', (byte)'\143', (byte)'\144', (byte)'\145', (byte)'\146', (byte)'\147', (byte)'\150', (byte)'\151', (byte)'\152', (byte)'\153', (byte)'\154', (byte)'\155', (byte)'\156', (byte)'\157', (byte)'\160', (byte)'\161', (byte)'\162', (byte)'\163', (byte)'\164', (byte)'\165', (byte)'\166', (byte)'\167', (byte)'\170', (byte)'\171', (byte)'\172', (byte)'\133', (byte)'\134', (byte)'\135', (byte)'\136', (byte)'\137', (byte)'\140', (byte)'\141', (byte)'\142', (byte)'\143', (byte)'\144', (byte)'\145', (byte)'\146', (byte)'\147', (byte)'\150', (byte)'\151', (byte)'\152', (byte)'\153', (byte)'\154', (byte)'\155', (byte)'\156', (byte)'\157', (byte)'\160', (byte)'\161', (byte)'\162', (byte)'\163', (byte)'\164', (byte)'\165', (byte)'\166', (byte)'\167', (byte)'\170', (byte)'\171', (byte)'\172', (byte)'\173', (byte)'\174', (byte)'\175', (byte)'\176', (byte)'\177', (byte)'\200', (byte)'\201', (byte)'\202', (byte)'\203', (byte)'\204', (byte)'\205', (byte)'\206', (byte)'\207', (byte)'\210', (byte)'\211', (byte)'\212', (byte)'\213', (byte)'\214', (byte)'\215', (byte)'\216', (byte)'\217', (byte)'\220', (byte)'\221', (byte)'\222', (byte)'\223', (byte)'\224', (byte)'\225', (byte)'\226', (byte)'\227', (byte)'\230', (byte)'\231', (byte)'\232', (byte)'\233', (byte)'\234', (byte)'\235', (byte)'\236', (byte)'\237', (byte)'\240', (byte)'\241', (byte)'\242', (byte)'\243', (byte)'\244', (byte)'\245', (byte)'\246', (byte)'\247', (byte)'\270', (byte)'\251', (byte)'\272', (byte)'\253', (byte)'\254', (byte)'\255', (byte)'\256', (byte)'\277', (byte)'\260', (byte)'\261', (byte)'\262', (byte)'\263', (byte)'\264', (byte)'\265', (byte)'\266', (byte)'\267', (byte)'\270', (byte)'\271', (byte)'\272', (byte)'\273', (byte)'\274', (byte)'\275', (byte)'\276', (byte)'\277', (byte)'\340', (byte)'\341', (byte)'\342', (byte)'\343', (byte)'\344', (byte)'\345', (byte)'\346', (byte)'\347', (byte)'\350', (byte)'\351', (byte)'\352', (byte)'\353', (byte)'\354', (byte)'\355', (byte)'\356', (byte)'\357', (byte)'\360', (byte)'\361', (byte)'\362', (byte)'\363', (byte)'\364', (byte)'\365', (byte)'\366', (byte)'\327', (byte)'\370', (byte)'\371', (byte)'\372', (byte)'\373', (byte)'\374', (byte)'\375', (byte)'\376', (byte)'\337', (byte)'\340', (byte)'\341', (byte)'\342', (byte)'\343', (byte)'\344', (byte)'\345', (byte)'\346', (byte)'\347', (byte)'\350', (byte)'\351', (byte)'\352', (byte)'\353', (byte)'\354', (byte)'\355', (byte)'\356', (byte)'\357', (byte)'\360', (byte)'\361', (byte)'\362', (byte)'\363', (byte)'\364', (byte)'\365', (byte)'\366', (byte)'\367', (byte)'\370', (byte)'\371', (byte)'\372', (byte)'\373', (byte)'\374', (byte)'\375', (byte)'\376', (byte)'\377' }; static final int ISO8859_13CaseFoldMap[][] = { { 0xc0, 0xe0 }, { 0xc1, 0xe1 }, { 0xc2, 0xe2 }, { 0xc3, 0xe3 }, { 0xc4, 0xe4 }, { 0xc5, 0xe5 }, { 0xc6, 0xe6 }, { 0xc7, 0xe7 }, { 0xc8, 0xe8 }, { 0xc9, 0xe9 }, { 0xca, 0xea }, { 0xcb, 0xeb }, { 0xcc, 0xec }, { 0xcd, 0xed }, { 0xce, 0xee }, { 0xcf, 0xef }, { 0xd0, 0xf0 }, { 0xd1, 0xf1 }, { 0xd2, 0xf2 }, { 0xd3, 0xf3 }, { 0xd4, 0xf4 }, { 0xd5, 0xf5 }, { 0xd6, 0xf6 }, { 0xd8, 0xf8 }, { 0xd9, 0xf9 }, { 0xda, 0xfa }, { 0xdb, 0xfb }, { 0xdc, 0xfc }, { 0xdd, 0xfd }, { 0xde, 0xfe } }; public static final ISO8859_13Encoding INSTANCE = new ISO8859_13Encoding(); } jcodings-1.0.58/src/org/jcodings/specific/ISO8859_14Encoding.java000066400000000000000000000253221433325321700241650ustar00rootroot00000000000000/* * Permission is hereby granted, free of charge, to any person obtaining a copy of * this software and associated documentation files (the "Software"), to deal in * the Software without restriction, including without limitation the rights to * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies * of the Software, and to permit persons to whom the Software is furnished to do * so, subject to the following conditions: * * The above copyright notice and this permission notice shall be included in all * copies or substantial portions of the Software. * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE * SOFTWARE. */ package org.jcodings.specific; import org.jcodings.Config; import org.jcodings.ISOEncoding; import org.jcodings.IntHolder; import org.jcodings.constants.CharacterType; public final class ISO8859_14Encoding extends ISOEncoding { protected ISO8859_14Encoding() { super("ISO-8859-14", ISO8859_14CtypeTable, ISO8859_14ToLowerCaseTable, ISO8859_14CaseFoldMap); } @Override public int caseMap(IntHolder flagP, byte[] bytes, IntHolder pp, int end, byte[] to, int toP, int toEnd) { int toStart = toP; int flags = flagP.value; while (pp.value < end && toP < toEnd) { int code = bytes[pp.value++] & 0xff; if (code == SHARP_s) { if ((flags & Config.CASE_UPCASE) != 0) { flags |= Config.CASE_MODIFIED; to[toP++] = 'S'; code = (flags & Config.CASE_TITLECASE) != 0 ? 's' : 'S'; } else if ((flags & Config.CASE_FOLD) != 0) { flags |= Config.CASE_MODIFIED; to[toP++] = 's'; code = 's'; } } else if ((ISO8859_14CtypeTable[code] & CharacterType.BIT_UPPER) != 0 && (flags & (Config.CASE_DOWNCASE | Config.CASE_FOLD)) != 0) { flags |= Config.CASE_MODIFIED; code = LowerCaseTable[code]; } else if ((ISO8859_14CtypeTable[code] & CharacterType.BIT_LOWER) != 0 && (flags & Config.CASE_UPCASE) != 0) { flags |= Config.CASE_MODIFIED; if (code == 0xA2 || code == 0xA5 || code == 0xB1 || code == 0xB3 || code == 0xB5 || code == 0xBE) code -= 0x1; else if (code == 0xAB) code -= 0x5; else if (code == 0xFF) code -= 0x50; else if (code == 0xB9) code -= 0x2; else if (code == 0xBF) code -= 0x4; else if (code == 0xB8 || code == 0xBA || code == 0xBC) code -= 0x10; else code -= 0x20; } to[toP++] = (byte)code; if ((flags & Config.CASE_TITLECASE) != 0) { flags ^= (Config.CASE_UPCASE | Config.CASE_DOWNCASE | Config.CASE_TITLECASE); } } flagP.value = flags; return toP - toStart; } static final short ISO8859_14CtypeTable[] = { 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x420c, 0x4209, 0x4208, 0x4208, 0x4208, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4284, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x78b0, 0x78b0, 0x78b0, 0x78b0, 0x78b0, 0x78b0, 0x78b0, 0x78b0, 0x78b0, 0x78b0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x7ca2, 0x7ca2, 0x7ca2, 0x7ca2, 0x7ca2, 0x7ca2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x51a0, 0x41a0, 0x78e2, 0x78e2, 0x78e2, 0x78e2, 0x78e2, 0x78e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x4008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0284, 0x34a2, 0x30e2, 0x00a0, 0x34a2, 0x30e2, 0x34a2, 0x00a0, 0x34a2, 0x00a0, 0x34a2, 0x30e2, 0x34a2, 0x01a0, 0x00a0, 0x34a2, 0x34a2, 0x30e2, 0x34a2, 0x30e2, 0x34a2, 0x30e2, 0x00a0, 0x34a2, 0x30e2, 0x30e2, 0x30e2, 0x34a2, 0x30e2, 0x34a2, 0x30e2, 0x30e2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2 }; static final byte ISO8859_14ToLowerCaseTable[] = new byte[]{ (byte)'\000', (byte)'\001', (byte)'\002', (byte)'\003', (byte)'\004', (byte)'\005', (byte)'\006', (byte)'\007', (byte)'\010', (byte)'\011', (byte)'\012', (byte)'\013', (byte)'\014', (byte)'\015', (byte)'\016', (byte)'\017', (byte)'\020', (byte)'\021', (byte)'\022', (byte)'\023', (byte)'\024', (byte)'\025', (byte)'\026', (byte)'\027', (byte)'\030', (byte)'\031', (byte)'\032', (byte)'\033', (byte)'\034', (byte)'\035', (byte)'\036', (byte)'\037', (byte)'\040', (byte)'\041', (byte)'\042', (byte)'\043', (byte)'\044', (byte)'\045', (byte)'\046', (byte)'\047', (byte)'\050', (byte)'\051', (byte)'\052', (byte)'\053', (byte)'\054', (byte)'\055', (byte)'\056', (byte)'\057', (byte)'\060', (byte)'\061', (byte)'\062', (byte)'\063', (byte)'\064', (byte)'\065', (byte)'\066', (byte)'\067', (byte)'\070', (byte)'\071', (byte)'\072', (byte)'\073', (byte)'\074', (byte)'\075', (byte)'\076', (byte)'\077', (byte)'\100', (byte)'\141', (byte)'\142', (byte)'\143', (byte)'\144', (byte)'\145', (byte)'\146', (byte)'\147', (byte)'\150', (byte)'\151', (byte)'\152', (byte)'\153', (byte)'\154', (byte)'\155', (byte)'\156', (byte)'\157', (byte)'\160', (byte)'\161', (byte)'\162', (byte)'\163', (byte)'\164', (byte)'\165', (byte)'\166', (byte)'\167', (byte)'\170', (byte)'\171', (byte)'\172', (byte)'\133', (byte)'\134', (byte)'\135', (byte)'\136', (byte)'\137', (byte)'\140', (byte)'\141', (byte)'\142', (byte)'\143', (byte)'\144', (byte)'\145', (byte)'\146', (byte)'\147', (byte)'\150', (byte)'\151', (byte)'\152', (byte)'\153', (byte)'\154', (byte)'\155', (byte)'\156', (byte)'\157', (byte)'\160', (byte)'\161', (byte)'\162', (byte)'\163', (byte)'\164', (byte)'\165', (byte)'\166', (byte)'\167', (byte)'\170', (byte)'\171', (byte)'\172', (byte)'\173', (byte)'\174', (byte)'\175', (byte)'\176', (byte)'\177', (byte)'\200', (byte)'\201', (byte)'\202', (byte)'\203', (byte)'\204', (byte)'\205', (byte)'\206', (byte)'\207', (byte)'\210', (byte)'\211', (byte)'\212', (byte)'\213', (byte)'\214', (byte)'\215', (byte)'\216', (byte)'\217', (byte)'\220', (byte)'\221', (byte)'\222', (byte)'\223', (byte)'\224', (byte)'\225', (byte)'\226', (byte)'\227', (byte)'\230', (byte)'\231', (byte)'\232', (byte)'\233', (byte)'\234', (byte)'\235', (byte)'\236', (byte)'\237', (byte)'\240', (byte)'\242', (byte)'\242', (byte)'\243', (byte)'\245', (byte)'\245', (byte)'\253', (byte)'\247', (byte)'\270', (byte)'\251', (byte)'\272', (byte)'\253', (byte)'\274', (byte)'\255', (byte)'\256', (byte)'\377', (byte)'\261', (byte)'\261', (byte)'\263', (byte)'\263', (byte)'\265', (byte)'\265', (byte)'\266', (byte)'\271', (byte)'\270', (byte)'\271', (byte)'\272', (byte)'\277', (byte)'\274', (byte)'\276', (byte)'\276', (byte)'\277', (byte)'\340', (byte)'\341', (byte)'\342', (byte)'\343', (byte)'\344', (byte)'\345', (byte)'\346', (byte)'\347', (byte)'\350', (byte)'\351', (byte)'\352', (byte)'\353', (byte)'\354', (byte)'\355', (byte)'\356', (byte)'\357', (byte)'\360', (byte)'\361', (byte)'\362', (byte)'\363', (byte)'\364', (byte)'\365', (byte)'\366', (byte)'\367', (byte)'\370', (byte)'\371', (byte)'\372', (byte)'\373', (byte)'\374', (byte)'\375', (byte)'\376', (byte)'\337', (byte)'\340', (byte)'\341', (byte)'\342', (byte)'\343', (byte)'\344', (byte)'\345', (byte)'\346', (byte)'\347', (byte)'\350', (byte)'\351', (byte)'\352', (byte)'\353', (byte)'\354', (byte)'\355', (byte)'\356', (byte)'\357', (byte)'\360', (byte)'\361', (byte)'\362', (byte)'\363', (byte)'\364', (byte)'\365', (byte)'\366', (byte)'\367', (byte)'\370', (byte)'\371', (byte)'\372', (byte)'\373', (byte)'\374', (byte)'\375', (byte)'\376', (byte)'\377' }; static final int ISO8859_14CaseFoldMap[][] = { { 0xa1, 0xa2 }, { 0xa4, 0xa5 }, { 0xa6, 0xab }, { 0xa8, 0xb8 }, { 0xaa, 0xba }, { 0xac, 0xbc }, { 0xaf, 0xff }, { 0xb0, 0xb1 }, { 0xb2, 0xb3 }, { 0xb4, 0xb5 }, { 0xb7, 0xb9 }, { 0xbb, 0xbf }, { 0xbd, 0xbe }, { 0xc0, 0xe0 }, { 0xc1, 0xe1 }, { 0xc2, 0xe2 }, { 0xc3, 0xe3 }, { 0xc4, 0xe4 }, { 0xc5, 0xe5 }, { 0xc6, 0xe6 }, { 0xc7, 0xe7 }, { 0xc8, 0xe8 }, { 0xc9, 0xe9 }, { 0xca, 0xea }, { 0xcb, 0xeb }, { 0xcc, 0xec }, { 0xcd, 0xed }, { 0xce, 0xee }, { 0xcf, 0xef }, { 0xd0, 0xf0 }, { 0xd1, 0xf1 }, { 0xd2, 0xf2 }, { 0xd3, 0xf3 }, { 0xd4, 0xf4 }, { 0xd5, 0xf5 }, { 0xd6, 0xf6 }, { 0xd7, 0xf7 }, { 0xd8, 0xf8 }, { 0xd9, 0xf9 }, { 0xda, 0xfa }, { 0xdb, 0xfb }, { 0xdc, 0xfc }, { 0xdd, 0xfd }, { 0xde, 0xfe } }; public static final ISO8859_14Encoding INSTANCE = new ISO8859_14Encoding(); } jcodings-1.0.58/src/org/jcodings/specific/ISO8859_15Encoding.java000066400000000000000000000244421433325321700241700ustar00rootroot00000000000000/* * Permission is hereby granted, free of charge, to any person obtaining a copy of * this software and associated documentation files (the "Software"), to deal in * the Software without restriction, including without limitation the rights to * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies * of the Software, and to permit persons to whom the Software is furnished to do * so, subject to the following conditions: * * The above copyright notice and this permission notice shall be included in all * copies or substantial portions of the Software. * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE * SOFTWARE. */ package org.jcodings.specific; import org.jcodings.Config; import org.jcodings.ISOEncoding; import org.jcodings.IntHolder; import org.jcodings.constants.CharacterType; public final class ISO8859_15Encoding extends ISOEncoding { protected ISO8859_15Encoding() { super("ISO-8859-15", ISO8859_15CtypeTable, ISO8859_15ToLowerCaseTable, ISO8859_15CaseFoldMap); } @Override public int caseMap(IntHolder flagP, byte[] bytes, IntHolder pp, int end, byte[] to, int toP, int toEnd) { int toStart = toP; int flags = flagP.value; while (pp.value < end && toP < toEnd) { int code = bytes[pp.value++] & 0xff; if (code == SHARP_s) { if ((flags & Config.CASE_UPCASE) != 0) { flags |= Config.CASE_MODIFIED; to[toP++] = 'S'; code = (flags & Config.CASE_TITLECASE) != 0 ? 's' : 'S'; } else if ((flags & Config.CASE_FOLD) != 0) { flags |= Config.CASE_MODIFIED; to[toP++] = 's'; code = 's'; } } else if (code == 0xAA || code == 0xBA || code == 0xB5) { } else if ((ISO8859_15CtypeTable[code] & CharacterType.BIT_UPPER) != 0 && (flags & (Config.CASE_DOWNCASE | Config.CASE_FOLD)) != 0) { flags |= Config.CASE_MODIFIED; code = LowerCaseTable[code]; } else if ((ISO8859_15CtypeTable[code] & CharacterType.BIT_LOWER) != 0 && (flags & Config.CASE_UPCASE) != 0) { flags |= Config.CASE_MODIFIED; if (code == 0xA8) code -= 2; else if (code == 0xB8) code -= 4; else if (code == 0xBD) code -= 1; else if (code == 0xFF) code -= 0x41; else code -= 0x20; } to[toP++] = (byte)code; if ((flags & Config.CASE_TITLECASE) != 0) { flags ^= (Config.CASE_UPCASE | Config.CASE_DOWNCASE | Config.CASE_TITLECASE); } } flagP.value = flags; return toP - toStart; } static final short ISO8859_15CtypeTable[] = { 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x420c, 0x4209, 0x4208, 0x4208, 0x4208, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4284, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x78b0, 0x78b0, 0x78b0, 0x78b0, 0x78b0, 0x78b0, 0x78b0, 0x78b0, 0x78b0, 0x78b0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x7ca2, 0x7ca2, 0x7ca2, 0x7ca2, 0x7ca2, 0x7ca2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x51a0, 0x41a0, 0x78e2, 0x78e2, 0x78e2, 0x78e2, 0x78e2, 0x78e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x4008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0284, 0x01a0, 0x00a0, 0x00a0, 0x00a0, 0x00a0, 0x34a2, 0x00a0, 0x30e2, 0x00a0, 0x30e2, 0x01a0, 0x00a0, 0x01a0, 0x00a0, 0x00a0, 0x00a0, 0x00a0, 0x10a0, 0x10a0, 0x34a2, 0x30e2, 0x00a0, 0x01a0, 0x30e2, 0x10a0, 0x30e2, 0x01a0, 0x34a2, 0x30e2, 0x34a2, 0x01a0, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x00a0, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x00a0, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2 }; static final byte ISO8859_15ToLowerCaseTable[] = new byte[]{ (byte)'\000', (byte)'\001', (byte)'\002', (byte)'\003', (byte)'\004', (byte)'\005', (byte)'\006', (byte)'\007', (byte)'\010', (byte)'\011', (byte)'\012', (byte)'\013', (byte)'\014', (byte)'\015', (byte)'\016', (byte)'\017', (byte)'\020', (byte)'\021', (byte)'\022', (byte)'\023', (byte)'\024', (byte)'\025', (byte)'\026', (byte)'\027', (byte)'\030', (byte)'\031', (byte)'\032', (byte)'\033', (byte)'\034', (byte)'\035', (byte)'\036', (byte)'\037', (byte)'\040', (byte)'\041', (byte)'\042', (byte)'\043', (byte)'\044', (byte)'\045', (byte)'\046', (byte)'\047', (byte)'\050', (byte)'\051', (byte)'\052', (byte)'\053', (byte)'\054', (byte)'\055', (byte)'\056', (byte)'\057', (byte)'\060', (byte)'\061', (byte)'\062', (byte)'\063', (byte)'\064', (byte)'\065', (byte)'\066', (byte)'\067', (byte)'\070', (byte)'\071', (byte)'\072', (byte)'\073', (byte)'\074', (byte)'\075', (byte)'\076', (byte)'\077', (byte)'\100', (byte)'\141', (byte)'\142', (byte)'\143', (byte)'\144', (byte)'\145', (byte)'\146', (byte)'\147', (byte)'\150', (byte)'\151', (byte)'\152', (byte)'\153', (byte)'\154', (byte)'\155', (byte)'\156', (byte)'\157', (byte)'\160', (byte)'\161', (byte)'\162', (byte)'\163', (byte)'\164', (byte)'\165', (byte)'\166', (byte)'\167', (byte)'\170', (byte)'\171', (byte)'\172', (byte)'\133', (byte)'\134', (byte)'\135', (byte)'\136', (byte)'\137', (byte)'\140', (byte)'\141', (byte)'\142', (byte)'\143', (byte)'\144', (byte)'\145', (byte)'\146', (byte)'\147', (byte)'\150', (byte)'\151', (byte)'\152', (byte)'\153', (byte)'\154', (byte)'\155', (byte)'\156', (byte)'\157', (byte)'\160', (byte)'\161', (byte)'\162', (byte)'\163', (byte)'\164', (byte)'\165', (byte)'\166', (byte)'\167', (byte)'\170', (byte)'\171', (byte)'\172', (byte)'\173', (byte)'\174', (byte)'\175', (byte)'\176', (byte)'\177', (byte)'\200', (byte)'\201', (byte)'\202', (byte)'\203', (byte)'\204', (byte)'\205', (byte)'\206', (byte)'\207', (byte)'\210', (byte)'\211', (byte)'\212', (byte)'\213', (byte)'\214', (byte)'\215', (byte)'\216', (byte)'\217', (byte)'\220', (byte)'\221', (byte)'\222', (byte)'\223', (byte)'\224', (byte)'\225', (byte)'\226', (byte)'\227', (byte)'\230', (byte)'\231', (byte)'\232', (byte)'\233', (byte)'\234', (byte)'\235', (byte)'\236', (byte)'\237', (byte)'\240', (byte)'\241', (byte)'\242', (byte)'\243', (byte)'\244', (byte)'\245', (byte)'\250', (byte)'\247', (byte)'\250', (byte)'\251', (byte)'\252', (byte)'\253', (byte)'\254', (byte)'\255', (byte)'\256', (byte)'\257', (byte)'\260', (byte)'\261', (byte)'\262', (byte)'\263', (byte)'\270', (byte)'\265', (byte)'\266', (byte)'\267', (byte)'\270', (byte)'\271', (byte)'\272', (byte)'\273', (byte)'\275', (byte)'\275', (byte)'\377', (byte)'\277', (byte)'\340', (byte)'\341', (byte)'\342', (byte)'\343', (byte)'\344', (byte)'\345', (byte)'\346', (byte)'\347', (byte)'\350', (byte)'\351', (byte)'\352', (byte)'\353', (byte)'\354', (byte)'\355', (byte)'\356', (byte)'\357', (byte)'\360', (byte)'\361', (byte)'\362', (byte)'\363', (byte)'\364', (byte)'\365', (byte)'\366', (byte)'\327', (byte)'\370', (byte)'\371', (byte)'\372', (byte)'\373', (byte)'\374', (byte)'\375', (byte)'\376', (byte)'\337', (byte)'\340', (byte)'\341', (byte)'\342', (byte)'\343', (byte)'\344', (byte)'\345', (byte)'\346', (byte)'\347', (byte)'\350', (byte)'\351', (byte)'\352', (byte)'\353', (byte)'\354', (byte)'\355', (byte)'\356', (byte)'\357', (byte)'\360', (byte)'\361', (byte)'\362', (byte)'\363', (byte)'\364', (byte)'\365', (byte)'\366', (byte)'\367', (byte)'\370', (byte)'\371', (byte)'\372', (byte)'\373', (byte)'\374', (byte)'\375', (byte)'\376', (byte)'\377' }; static final int ISO8859_15CaseFoldMap[][] = { { 0xa6, 0xa8 }, { 0xb4, 0xb8 }, { 0xbc, 0xbd }, { 0xbe, 0xff }, { 0xc0, 0xe0 }, { 0xc1, 0xe1 }, { 0xc2, 0xe2 }, { 0xc3, 0xe3 }, { 0xc4, 0xe4 }, { 0xc5, 0xe5 }, { 0xc6, 0xe6 }, { 0xc7, 0xe7 }, { 0xc8, 0xe8 }, { 0xc9, 0xe9 }, { 0xca, 0xea }, { 0xcb, 0xeb }, { 0xcc, 0xec }, { 0xcd, 0xed }, { 0xce, 0xee }, { 0xcf, 0xef }, { 0xd0, 0xf0 }, { 0xd1, 0xf1 }, { 0xd2, 0xf2 }, { 0xd3, 0xf3 }, { 0xd4, 0xf4 }, { 0xd5, 0xf5 }, { 0xd6, 0xf6 }, { 0xd8, 0xf8 }, { 0xd9, 0xf9 }, { 0xda, 0xfa }, { 0xdb, 0xfb }, { 0xdc, 0xfc }, { 0xdd, 0xfd }, { 0xde, 0xfe } }; public static final ISO8859_15Encoding INSTANCE = new ISO8859_15Encoding(); } jcodings-1.0.58/src/org/jcodings/specific/ISO8859_16Encoding.java000066400000000000000000000251301433325321700241640ustar00rootroot00000000000000/* * Permission is hereby granted, free of charge, to any person obtaining a copy of * this software and associated documentation files (the "Software"), to deal in * the Software without restriction, including without limitation the rights to * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies * of the Software, and to permit persons to whom the Software is furnished to do * so, subject to the following conditions: * * The above copyright notice and this permission notice shall be included in all * copies or substantial portions of the Software. * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE * SOFTWARE. */ package org.jcodings.specific; import org.jcodings.Config; import org.jcodings.ISOEncoding; import org.jcodings.IntHolder; import org.jcodings.constants.CharacterType; public final class ISO8859_16Encoding extends ISOEncoding { protected ISO8859_16Encoding() { super("ISO-8859-16", ISO8859_16CtypeTable, ISO8859_16ToLowerCaseTable, ISO8859_16CaseFoldMap); } @Override public int caseMap(IntHolder flagP, byte[] bytes, IntHolder pp, int end, byte[] to, int toP, int toEnd) { int toStart = toP; int flags = flagP.value; while (pp.value < end && toP < toEnd) { int code = bytes[pp.value++] & 0xff; if (code == SHARP_s) { if ((flags & Config.CASE_UPCASE) != 0) { flags |= Config.CASE_MODIFIED; to[toP++] = 'S'; code = (flags & Config.CASE_TITLECASE) != 0 ? 's' : 'S'; } else if ((flags & Config.CASE_FOLD) != 0) { flags |= Config.CASE_MODIFIED; to[toP++] = 's'; code = 's'; } } else if ((ISO8859_16CtypeTable[code] & CharacterType.BIT_UPPER) != 0 && (flags & (Config.CASE_DOWNCASE | Config.CASE_FOLD)) != 0) { flags |= Config.CASE_MODIFIED; code = LowerCaseTable[code]; } else if ((ISO8859_16CtypeTable[code] & CharacterType.BIT_LOWER) != 0 && (flags & Config.CASE_UPCASE) != 0) { flags |= Config.CASE_MODIFIED; if (code == 0xA2 || code == 0xBD) code--; else if (code == 0xB3 || code == 0xBA || code == 0xBF) code -= 0x10; else if (code == 0xA8 || code == 0xAE) code -= 0x02; else if (code == 0xB9) code -= 0x07; else if (code == 0xB8) code -= 0x04; else if (code == 0xFF) code -= 0x41; else code -= 0x20; } to[toP++] = (byte)code; if ((flags & Config.CASE_TITLECASE) != 0) { flags ^= (Config.CASE_UPCASE | Config.CASE_DOWNCASE | Config.CASE_TITLECASE); } } flagP.value = flags; return toP - toStart; } static final short ISO8859_16CtypeTable[] = { 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x420c, 0x4209, 0x4208, 0x4208, 0x4208, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4284, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x78b0, 0x78b0, 0x78b0, 0x78b0, 0x78b0, 0x78b0, 0x78b0, 0x78b0, 0x78b0, 0x78b0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x7ca2, 0x7ca2, 0x7ca2, 0x7ca2, 0x7ca2, 0x7ca2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x51a0, 0x41a0, 0x78e2, 0x78e2, 0x78e2, 0x78e2, 0x78e2, 0x78e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x4008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0284, 0x34a2, 0x30e2, 0x34a2, 0x00a0, 0x01a0, 0x34a2, 0x00a0, 0x30e2, 0x00a0, 0x34a2, 0x01a0, 0x34a2, 0x01a0, 0x30e2, 0x34a2, 0x00a0, 0x00a0, 0x34a2, 0x30e2, 0x34a2, 0x01a0, 0x00a0, 0x01a0, 0x30e2, 0x30e2, 0x30e2, 0x01a0, 0x34a2, 0x30e2, 0x34a2, 0x30e2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2 }; static final byte ISO8859_16ToLowerCaseTable[] = new byte[]{ (byte)'\000', (byte)'\001', (byte)'\002', (byte)'\003', (byte)'\004', (byte)'\005', (byte)'\006', (byte)'\007', (byte)'\010', (byte)'\011', (byte)'\012', (byte)'\013', (byte)'\014', (byte)'\015', (byte)'\016', (byte)'\017', (byte)'\020', (byte)'\021', (byte)'\022', (byte)'\023', (byte)'\024', (byte)'\025', (byte)'\026', (byte)'\027', (byte)'\030', (byte)'\031', (byte)'\032', (byte)'\033', (byte)'\034', (byte)'\035', (byte)'\036', (byte)'\037', (byte)'\040', (byte)'\041', (byte)'\042', (byte)'\043', (byte)'\044', (byte)'\045', (byte)'\046', (byte)'\047', (byte)'\050', (byte)'\051', (byte)'\052', (byte)'\053', (byte)'\054', (byte)'\055', (byte)'\056', (byte)'\057', (byte)'\060', (byte)'\061', (byte)'\062', (byte)'\063', (byte)'\064', (byte)'\065', (byte)'\066', (byte)'\067', (byte)'\070', (byte)'\071', (byte)'\072', (byte)'\073', (byte)'\074', (byte)'\075', (byte)'\076', (byte)'\077', (byte)'\100', (byte)'\141', (byte)'\142', (byte)'\143', (byte)'\144', (byte)'\145', (byte)'\146', (byte)'\147', (byte)'\150', (byte)'\151', (byte)'\152', (byte)'\153', (byte)'\154', (byte)'\155', (byte)'\156', (byte)'\157', (byte)'\160', (byte)'\161', (byte)'\162', (byte)'\163', (byte)'\164', (byte)'\165', (byte)'\166', (byte)'\167', (byte)'\170', (byte)'\171', (byte)'\172', (byte)'\133', (byte)'\134', (byte)'\135', (byte)'\136', (byte)'\137', (byte)'\140', (byte)'\141', (byte)'\142', (byte)'\143', (byte)'\144', (byte)'\145', (byte)'\146', (byte)'\147', (byte)'\150', (byte)'\151', (byte)'\152', (byte)'\153', (byte)'\154', (byte)'\155', (byte)'\156', (byte)'\157', (byte)'\160', (byte)'\161', (byte)'\162', (byte)'\163', (byte)'\164', (byte)'\165', (byte)'\166', (byte)'\167', (byte)'\170', (byte)'\171', (byte)'\172', (byte)'\173', (byte)'\174', (byte)'\175', (byte)'\176', (byte)'\177', (byte)'\200', (byte)'\201', (byte)'\202', (byte)'\203', (byte)'\204', (byte)'\205', (byte)'\206', (byte)'\207', (byte)'\210', (byte)'\211', (byte)'\212', (byte)'\213', (byte)'\214', (byte)'\215', (byte)'\216', (byte)'\217', (byte)'\220', (byte)'\221', (byte)'\222', (byte)'\223', (byte)'\224', (byte)'\225', (byte)'\226', (byte)'\227', (byte)'\230', (byte)'\231', (byte)'\232', (byte)'\233', (byte)'\234', (byte)'\235', (byte)'\236', (byte)'\237', (byte)'\240', (byte)'\242', (byte)'\242', (byte)'\263', (byte)'\245', (byte)'\245', (byte)'\250', (byte)'\247', (byte)'\250', (byte)'\251', (byte)'\272', (byte)'\253', (byte)'\256', (byte)'\255', (byte)'\256', (byte)'\277', (byte)'\260', (byte)'\261', (byte)'\271', (byte)'\263', (byte)'\270', (byte)'\265', (byte)'\266', (byte)'\267', (byte)'\270', (byte)'\271', (byte)'\272', (byte)'\273', (byte)'\275', (byte)'\275', (byte)'\377', (byte)'\277', (byte)'\340', (byte)'\341', (byte)'\342', (byte)'\343', (byte)'\344', (byte)'\345', (byte)'\346', (byte)'\347', (byte)'\350', (byte)'\351', (byte)'\352', (byte)'\353', (byte)'\354', (byte)'\355', (byte)'\356', (byte)'\357', (byte)'\360', (byte)'\361', (byte)'\362', (byte)'\363', (byte)'\364', (byte)'\365', (byte)'\366', (byte)'\367', (byte)'\370', (byte)'\371', (byte)'\372', (byte)'\373', (byte)'\374', (byte)'\375', (byte)'\376', (byte)'\337', (byte)'\340', (byte)'\341', (byte)'\342', (byte)'\343', (byte)'\344', (byte)'\345', (byte)'\346', (byte)'\347', (byte)'\350', (byte)'\351', (byte)'\352', (byte)'\353', (byte)'\354', (byte)'\355', (byte)'\356', (byte)'\357', (byte)'\360', (byte)'\361', (byte)'\362', (byte)'\363', (byte)'\364', (byte)'\365', (byte)'\366', (byte)'\367', (byte)'\370', (byte)'\371', (byte)'\372', (byte)'\373', (byte)'\374', (byte)'\375', (byte)'\376', (byte)'\377' }; static final int ISO8859_16CaseFoldMap[][] = { { 0xa1, 0xa2 }, { 0xa3, 0xb3 }, { 0xa6, 0xa8 }, { 0xaa, 0xba }, { 0xac, 0xae }, { 0xaf, 0xbf }, { 0xb2, 0xb9 }, { 0xb4, 0xb8 }, { 0xbc, 0xbd }, { 0xbe, 0xff }, { 0xc0, 0xe0 }, { 0xc1, 0xe1 }, { 0xc2, 0xe2 }, { 0xc3, 0xe3 }, { 0xc4, 0xe4 }, { 0xc5, 0xe5 }, { 0xc6, 0xe6 }, { 0xc7, 0xe7 }, { 0xc8, 0xe8 }, { 0xc9, 0xe9 }, { 0xca, 0xea }, { 0xcb, 0xeb }, { 0xcc, 0xec }, { 0xcd, 0xed }, { 0xce, 0xee }, { 0xcf, 0xef }, { 0xd0, 0xf0 }, { 0xd1, 0xf1 }, { 0xd2, 0xf2 }, { 0xd3, 0xf3 }, { 0xd4, 0xf4 }, { 0xd5, 0xf5 }, { 0xd6, 0xf6 }, { 0xd7, 0xf7 }, { 0xd8, 0xf8 }, { 0xd9, 0xf9 }, { 0xda, 0xfa }, { 0xdb, 0xfb }, { 0xdc, 0xfc }, { 0xdd, 0xfd }, { 0xde, 0xfe } }; public static final ISO8859_16Encoding INSTANCE = new ISO8859_16Encoding(); } jcodings-1.0.58/src/org/jcodings/specific/ISO8859_1Encoding.java000066400000000000000000000402301433325321700240740ustar00rootroot00000000000000/* * Permission is hereby granted, free of charge, to any person obtaining a copy of * this software and associated documentation files (the "Software"), to deal in * the Software without restriction, including without limitation the rights to * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies * of the Software, and to permit persons to whom the Software is furnished to do * so, subject to the following conditions: * * The above copyright notice and this permission notice shall be included in all * copies or substantial portions of the Software. * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE * SOFTWARE. */ package org.jcodings.specific; import org.jcodings.ApplyAllCaseFoldFunction; import org.jcodings.CaseFoldCodeItem; import org.jcodings.Config; import org.jcodings.ISOEncoding; import org.jcodings.IntHolder; import org.jcodings.constants.CharacterType; public final class ISO8859_1Encoding extends ISOEncoding { protected ISO8859_1Encoding() { super("ISO-8859-1", ISO8859_1CtypeTable, ISO8859_1ToLowerCaseTable, ISO8859_1CaseFoldMap); } @Override public void applyAllCaseFold(int flag, ApplyAllCaseFoldFunction fun, Object arg) { applyAllCaseFoldWithMap(CaseFoldMap.length, CaseFoldMap, true, flag, fun, arg); } /** get_case_fold_codes_by_str */ @Override public CaseFoldCodeItem[]caseFoldCodesByString(int flag, byte[]bytes, int p, int end) { int b = bytes[p] & 0xff; if (0x41 <= b && b <= 0x5a) { CaseFoldCodeItem item0 = CaseFoldCodeItem.create(1, b + 0x20); if (b == 0x53 && end > p + 1 && (bytes[p+1] == (byte)0x53 || bytes[p+1] == (byte)0x73)) { /* ss */ CaseFoldCodeItem item1 = CaseFoldCodeItem.create(2, SHARP_s); return new CaseFoldCodeItem[]{item0, item1}; } else { return new CaseFoldCodeItem[]{item0}; } } else if (0x61 <= b && b <= 0x7a) { CaseFoldCodeItem item0 = CaseFoldCodeItem.create(1, b - 0x20); if (b == 0x73 && end > p + 1 && (bytes[p+1] == (byte)0x73 || bytes[p+1] == (byte)0x53)) { /* ss */ CaseFoldCodeItem item1 = CaseFoldCodeItem.create(2, SHARP_s); return new CaseFoldCodeItem[]{item0, item1}; } else { return new CaseFoldCodeItem[]{item0}; } } else if (0xc0 <= b && b <= 0xcf) { return new CaseFoldCodeItem[]{CaseFoldCodeItem.create(1, b + 0x20)}; } else if (0xd0 <= b && b <= SHARP_s) { if (b == SHARP_s) { CaseFoldCodeItem item0 = CaseFoldCodeItem.create(1, 's', 's'); CaseFoldCodeItem item1 = CaseFoldCodeItem.create(1, 'S', 'S'); CaseFoldCodeItem item2 = CaseFoldCodeItem.create(1, 's', 'S'); CaseFoldCodeItem item3 = CaseFoldCodeItem.create(1, 'S', 's'); return new CaseFoldCodeItem[]{item0, item1, item2, item3}; } else if (b != 0xd7) { return new CaseFoldCodeItem[]{CaseFoldCodeItem.create(1, b + 0x20)}; } } else if (0xe0 <= b && b <= 0xef) { return new CaseFoldCodeItem[]{CaseFoldCodeItem.create(1, b - 0x20)}; } else if (0xf0 <= b && b <= 0xfe) { if (b != 0xf7) { return new CaseFoldCodeItem[]{CaseFoldCodeItem.create(1, b - 0x20)}; } } return CaseFoldCodeItem.EMPTY_FOLD_CODES; } @Override public int caseMap(IntHolder flagP, byte[] bytes, IntHolder pp, int end, byte[] to, int toP, int toEnd) { int toStart = toP; int flags = flagP.value; while (pp.value < end && toP < toEnd) { int code = bytes[pp.value++] & 0xff; if (code == SHARP_s) { if ((flags & Config.CASE_UPCASE) != 0) { flags |= Config.CASE_MODIFIED; to[toP++] = 'S'; code = (flags & Config.CASE_TITLECASE) != 0 ? 's' : 'S'; } else if ((flags & Config.CASE_FOLD) != 0) { flags |= Config.CASE_MODIFIED; to[toP++] = 's'; code = 's'; } } else if ((ISO8859_1CtypeTable[code] & CharacterType.BIT_UPPER) != 0 && (flags & (Config.CASE_DOWNCASE | Config.CASE_FOLD)) != 0) { flags |= Config.CASE_MODIFIED; code += 0x20; } else if (code == 0xAA || code == 0xBA || code == 0xB5 || code == 0xFF) { } else if ((ISO8859_1CtypeTable[code] & CharacterType.BIT_LOWER) != 0 && (flags & Config.CASE_UPCASE) != 0) { flags |= Config.CASE_MODIFIED; code -= 0x20; } to[toP++] = (byte)code; if ((flags & Config.CASE_TITLECASE) != 0) { flags ^= (Config.CASE_UPCASE | Config.CASE_DOWNCASE | Config.CASE_TITLECASE); } } flagP.value = flags; return toP - toStart; } static final short ISO8859_1CtypeTable[] = { 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x420c, 0x4209, 0x4208, 0x4208, 0x4208, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4284, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x78b0, 0x78b0, 0x78b0, 0x78b0, 0x78b0, 0x78b0, 0x78b0, 0x78b0, 0x78b0, 0x78b0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x7ca2, 0x7ca2, 0x7ca2, 0x7ca2, 0x7ca2, 0x7ca2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x51a0, 0x41a0, 0x78e2, 0x78e2, 0x78e2, 0x78e2, 0x78e2, 0x78e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x4008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0284, 0x01a0, 0x00a0, 0x00a0, 0x00a0, 0x00a0, 0x00a0, 0x00a0, 0x00a0, 0x00a0, 0x30e2, 0x01a0, 0x00a0, 0x01a0, 0x00a0, 0x00a0, 0x00a0, 0x00a0, 0x10a0, 0x10a0, 0x00a0, 0x30e2, 0x00a0, 0x01a0, 0x00a0, 0x10a0, 0x30e2, 0x01a0, 0x10a0, 0x10a0, 0x10a0, 0x01a0, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x00a0, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x00a0, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2 }; static final byte ISO8859_1ToLowerCaseTable[] = new byte[]{ (byte)'\000', (byte)'\001', (byte)'\002', (byte)'\003', (byte)'\004', (byte)'\005', (byte)'\006', (byte)'\007', (byte)'\010', (byte)'\011', (byte)'\012', (byte)'\013', (byte)'\014', (byte)'\015', (byte)'\016', (byte)'\017', (byte)'\020', (byte)'\021', (byte)'\022', (byte)'\023', (byte)'\024', (byte)'\025', (byte)'\026', (byte)'\027', (byte)'\030', (byte)'\031', (byte)'\032', (byte)'\033', (byte)'\034', (byte)'\035', (byte)'\036', (byte)'\037', (byte)'\040', (byte)'\041', (byte)'\042', (byte)'\043', (byte)'\044', (byte)'\045', (byte)'\046', (byte)'\047', (byte)'\050', (byte)'\051', (byte)'\052', (byte)'\053', (byte)'\054', (byte)'\055', (byte)'\056', (byte)'\057', (byte)'\060', (byte)'\061', (byte)'\062', (byte)'\063', (byte)'\064', (byte)'\065', (byte)'\066', (byte)'\067', (byte)'\070', (byte)'\071', (byte)'\072', (byte)'\073', (byte)'\074', (byte)'\075', (byte)'\076', (byte)'\077', (byte)'\100', (byte)'\141', (byte)'\142', (byte)'\143', (byte)'\144', (byte)'\145', (byte)'\146', (byte)'\147', (byte)'\150', (byte)'\151', (byte)'\152', (byte)'\153', (byte)'\154', (byte)'\155', (byte)'\156', (byte)'\157', (byte)'\160', (byte)'\161', (byte)'\162', (byte)'\163', (byte)'\164', (byte)'\165', (byte)'\166', (byte)'\167', (byte)'\170', (byte)'\171', (byte)'\172', (byte)'\133', (byte)'\134', (byte)'\135', (byte)'\136', (byte)'\137', (byte)'\140', (byte)'\141', (byte)'\142', (byte)'\143', (byte)'\144', (byte)'\145', (byte)'\146', (byte)'\147', (byte)'\150', (byte)'\151', (byte)'\152', (byte)'\153', (byte)'\154', (byte)'\155', (byte)'\156', (byte)'\157', (byte)'\160', (byte)'\161', (byte)'\162', (byte)'\163', (byte)'\164', (byte)'\165', (byte)'\166', (byte)'\167', (byte)'\170', (byte)'\171', (byte)'\172', (byte)'\173', (byte)'\174', (byte)'\175', (byte)'\176', (byte)'\177', (byte)'\200', (byte)'\201', (byte)'\202', (byte)'\203', (byte)'\204', (byte)'\205', (byte)'\206', (byte)'\207', (byte)'\210', (byte)'\211', (byte)'\212', (byte)'\213', (byte)'\214', (byte)'\215', (byte)'\216', (byte)'\217', (byte)'\220', (byte)'\221', (byte)'\222', (byte)'\223', (byte)'\224', (byte)'\225', (byte)'\226', (byte)'\227', (byte)'\230', (byte)'\231', (byte)'\232', (byte)'\233', (byte)'\234', (byte)'\235', (byte)'\236', (byte)'\237', (byte)'\240', (byte)'\241', (byte)'\242', (byte)'\243', (byte)'\244', (byte)'\245', (byte)'\246', (byte)'\247', (byte)'\250', (byte)'\251', (byte)'\252', (byte)'\253', (byte)'\254', (byte)'\255', (byte)'\256', (byte)'\257', (byte)'\260', (byte)'\261', (byte)'\262', (byte)'\263', (byte)'\264', (byte)'\265', (byte)'\266', (byte)'\267', (byte)'\270', (byte)'\271', (byte)'\272', (byte)'\273', (byte)'\274', (byte)'\275', (byte)'\276', (byte)'\277', (byte)'\340', (byte)'\341', (byte)'\342', (byte)'\343', (byte)'\344', (byte)'\345', (byte)'\346', (byte)'\347', (byte)'\350', (byte)'\351', (byte)'\352', (byte)'\353', (byte)'\354', (byte)'\355', (byte)'\356', (byte)'\357', (byte)'\360', (byte)'\361', (byte)'\362', (byte)'\363', (byte)'\364', (byte)'\365', (byte)'\366', (byte)'\327', (byte)'\370', (byte)'\371', (byte)'\372', (byte)'\373', (byte)'\374', (byte)'\375', (byte)'\376', (byte)'\337', (byte)'\340', (byte)'\341', (byte)'\342', (byte)'\343', (byte)'\344', (byte)'\345', (byte)'\346', (byte)'\347', (byte)'\350', (byte)'\351', (byte)'\352', (byte)'\353', (byte)'\354', (byte)'\355', (byte)'\356', (byte)'\357', (byte)'\360', (byte)'\361', (byte)'\362', (byte)'\363', (byte)'\364', (byte)'\365', (byte)'\366', (byte)'\367', (byte)'\370', (byte)'\371', (byte)'\372', (byte)'\373', (byte)'\374', (byte)'\375', (byte)'\376', (byte)'\377' }; static final byte ISO8859_1ToUpperCaseTable[] = new byte[]{ (byte)'\000', (byte)'\001', (byte)'\002', (byte)'\003', (byte)'\004', (byte)'\005', (byte)'\006', (byte)'\007', (byte)'\010', (byte)'\011', (byte)'\012', (byte)'\013', (byte)'\014', (byte)'\015', (byte)'\016', (byte)'\017', (byte)'\020', (byte)'\021', (byte)'\022', (byte)'\023', (byte)'\024', (byte)'\025', (byte)'\026', (byte)'\027', (byte)'\030', (byte)'\031', (byte)'\032', (byte)'\033', (byte)'\034', (byte)'\035', (byte)'\036', (byte)'\037', (byte)'\040', (byte)'\041', (byte)'\042', (byte)'\043', (byte)'\044', (byte)'\045', (byte)'\046', (byte)'\047', (byte)'\050', (byte)'\051', (byte)'\052', (byte)'\053', (byte)'\054', (byte)'\055', (byte)'\056', (byte)'\057', (byte)'\060', (byte)'\061', (byte)'\062', (byte)'\063', (byte)'\064', (byte)'\065', (byte)'\066', (byte)'\067', (byte)'\070', (byte)'\071', (byte)'\072', (byte)'\073', (byte)'\074', (byte)'\075', (byte)'\076', (byte)'\077', (byte)'\100', (byte)'\101', (byte)'\102', (byte)'\103', (byte)'\104', (byte)'\105', (byte)'\106', (byte)'\107', (byte)'\110', (byte)'\111', (byte)'\112', (byte)'\113', (byte)'\114', (byte)'\115', (byte)'\116', (byte)'\117', (byte)'\120', (byte)'\121', (byte)'\122', (byte)'\123', (byte)'\124', (byte)'\125', (byte)'\126', (byte)'\127', (byte)'\130', (byte)'\131', (byte)'\132', (byte)'\133', (byte)'\134', (byte)'\135', (byte)'\136', (byte)'\137', (byte)'\140', (byte)'\101', (byte)'\102', (byte)'\103', (byte)'\104', (byte)'\105', (byte)'\106', (byte)'\107', (byte)'\110', (byte)'\111', (byte)'\112', (byte)'\113', (byte)'\114', (byte)'\115', (byte)'\116', (byte)'\117', (byte)'\120', (byte)'\121', (byte)'\122', (byte)'\123', (byte)'\124', (byte)'\125', (byte)'\126', (byte)'\127', (byte)'\130', (byte)'\131', (byte)'\132', (byte)'\173', (byte)'\174', (byte)'\175', (byte)'\176', (byte)'\177', (byte)'\200', (byte)'\201', (byte)'\202', (byte)'\203', (byte)'\204', (byte)'\205', (byte)'\206', (byte)'\207', (byte)'\210', (byte)'\211', (byte)'\212', (byte)'\213', (byte)'\214', (byte)'\215', (byte)'\216', (byte)'\217', (byte)'\220', (byte)'\221', (byte)'\222', (byte)'\223', (byte)'\224', (byte)'\225', (byte)'\226', (byte)'\227', (byte)'\230', (byte)'\231', (byte)'\232', (byte)'\233', (byte)'\234', (byte)'\235', (byte)'\236', (byte)'\237', (byte)'\240', (byte)'\241', (byte)'\242', (byte)'\243', (byte)'\244', (byte)'\245', (byte)'\246', (byte)'\247', (byte)'\250', (byte)'\251', (byte)'\252', (byte)'\253', (byte)'\254', (byte)'\255', (byte)'\256', (byte)'\257', (byte)'\260', (byte)'\261', (byte)'\262', (byte)'\263', (byte)'\264', (byte)'\265', (byte)'\266', (byte)'\267', (byte)'\270', (byte)'\271', (byte)'\272', (byte)'\273', (byte)'\274', (byte)'\275', (byte)'\276', (byte)'\277', (byte)'\300', (byte)'\301', (byte)'\302', (byte)'\303', (byte)'\304', (byte)'\305', (byte)'\306', (byte)'\307', (byte)'\310', (byte)'\311', (byte)'\312', (byte)'\313', (byte)'\314', (byte)'\315', (byte)'\316', (byte)'\317', (byte)'\320', (byte)'\321', (byte)'\322', (byte)'\323', (byte)'\324', (byte)'\325', (byte)'\326', (byte)'\327', (byte)'\330', (byte)'\331', (byte)'\332', (byte)'\333', (byte)'\334', (byte)'\335', (byte)'\336', (byte)'\337', (byte)'\300', (byte)'\301', (byte)'\302', (byte)'\303', (byte)'\304', (byte)'\305', (byte)'\306', (byte)'\307', (byte)'\310', (byte)'\311', (byte)'\312', (byte)'\313', (byte)'\314', (byte)'\315', (byte)'\316', (byte)'\317', (byte)'\320', (byte)'\321', (byte)'\322', (byte)'\323', (byte)'\324', (byte)'\325', (byte)'\326', (byte)'\367', (byte)'\330', (byte)'\331', (byte)'\332', (byte)'\333', (byte)'\334', (byte)'\335', (byte)'\336', (byte)'\377', }; static final int ISO8859_1CaseFoldMap[][] = { { 0xc0, 0xe0 }, { 0xc1, 0xe1 }, { 0xc2, 0xe2 }, { 0xc3, 0xe3 }, { 0xc4, 0xe4 }, { 0xc5, 0xe5 }, { 0xc6, 0xe6 }, { 0xc7, 0xe7 }, { 0xc8, 0xe8 }, { 0xc9, 0xe9 }, { 0xca, 0xea }, { 0xcb, 0xeb }, { 0xcc, 0xec }, { 0xcd, 0xed }, { 0xce, 0xee }, { 0xcf, 0xef }, { 0xd0, 0xf0 }, { 0xd1, 0xf1 }, { 0xd2, 0xf2 }, { 0xd3, 0xf3 }, { 0xd4, 0xf4 }, { 0xd5, 0xf5 }, { 0xd6, 0xf6 }, { 0xd8, 0xf8 }, { 0xd9, 0xf9 }, { 0xda, 0xfa }, { 0xdb, 0xfb }, { 0xdc, 0xfc }, { 0xdd, 0xfd }, { 0xde, 0xfe } }; public static final ISO8859_1Encoding INSTANCE = new ISO8859_1Encoding(); } jcodings-1.0.58/src/org/jcodings/specific/ISO8859_2Encoding.java000066400000000000000000000242631433325321700241050ustar00rootroot00000000000000/* * Permission is hereby granted, free of charge, to any person obtaining a copy of * this software and associated documentation files (the "Software"), to deal in * the Software without restriction, including without limitation the rights to * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies * of the Software, and to permit persons to whom the Software is furnished to do * so, subject to the following conditions: * * The above copyright notice and this permission notice shall be included in all * copies or substantial portions of the Software. * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE * SOFTWARE. */ package org.jcodings.specific; import org.jcodings.Config; import org.jcodings.ISOEncoding; import org.jcodings.IntHolder; import org.jcodings.constants.CharacterType; public final class ISO8859_2Encoding extends ISOEncoding { protected ISO8859_2Encoding() { super("ISO-8859-2", ISO8859_2CtypeTable, ISO8859_2ToLowerCaseTable, ISO8859_2CaseFoldMap); } @Override public int caseMap(IntHolder flagP, byte[] bytes, IntHolder pp, int end, byte[] to, int toP, int toEnd) { int toStart = toP; int flags = flagP.value; while (pp.value < end && toP < toEnd) { int code = bytes[pp.value++] & 0xff; if (code == SHARP_s) { if ((flags & Config.CASE_UPCASE) != 0) { flags |= Config.CASE_MODIFIED; to[toP++] = 'S'; code = (flags & Config.CASE_TITLECASE) != 0 ? 's' : 'S'; } else if ((flags & Config.CASE_FOLD) != 0) { flags |= Config.CASE_MODIFIED; to[toP++] = 's'; code = 's'; } } else if ((ISO8859_2CtypeTable[code] & CharacterType.BIT_UPPER) != 0 && (flags & (Config.CASE_DOWNCASE | Config.CASE_FOLD)) != 0) { flags |= Config.CASE_MODIFIED; code = LowerCaseTable[code]; } else if ((ISO8859_2CtypeTable[code] & CharacterType.BIT_LOWER) != 0 && (flags & Config.CASE_UPCASE) != 0) { flags |= Config.CASE_MODIFIED; if (code >= 0xB1 && code <= 0xBF) { code -= 0x10; } else { code -= 0x20; } } to[toP++] = (byte)code; if ((flags & Config.CASE_TITLECASE) != 0) { flags ^= (Config.CASE_UPCASE | Config.CASE_DOWNCASE | Config.CASE_TITLECASE); } } flagP.value = flags; return toP - toStart; } static final short ISO8859_2CtypeTable[] = { 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x420c, 0x4209, 0x4208, 0x4208, 0x4208, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4284, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x78b0, 0x78b0, 0x78b0, 0x78b0, 0x78b0, 0x78b0, 0x78b0, 0x78b0, 0x78b0, 0x78b0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x7ca2, 0x7ca2, 0x7ca2, 0x7ca2, 0x7ca2, 0x7ca2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x51a0, 0x41a0, 0x78e2, 0x78e2, 0x78e2, 0x78e2, 0x78e2, 0x78e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x4008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0284, 0x34a2, 0x00a0, 0x34a2, 0x00a0, 0x34a2, 0x34a2, 0x00a0, 0x00a0, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x01a0, 0x34a2, 0x34a2, 0x00a0, 0x30e2, 0x00a0, 0x30e2, 0x00a0, 0x30e2, 0x30e2, 0x00a0, 0x00a0, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x00a0, 0x30e2, 0x30e2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x00a0, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x00a0, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x00a0 }; static final byte ISO8859_2ToLowerCaseTable[] = new byte[]{ (byte)'\000', (byte)'\001', (byte)'\002', (byte)'\003', (byte)'\004', (byte)'\005', (byte)'\006', (byte)'\007', (byte)'\010', (byte)'\011', (byte)'\012', (byte)'\013', (byte)'\014', (byte)'\015', (byte)'\016', (byte)'\017', (byte)'\020', (byte)'\021', (byte)'\022', (byte)'\023', (byte)'\024', (byte)'\025', (byte)'\026', (byte)'\027', (byte)'\030', (byte)'\031', (byte)'\032', (byte)'\033', (byte)'\034', (byte)'\035', (byte)'\036', (byte)'\037', (byte)'\040', (byte)'\041', (byte)'\042', (byte)'\043', (byte)'\044', (byte)'\045', (byte)'\046', (byte)'\047', (byte)'\050', (byte)'\051', (byte)'\052', (byte)'\053', (byte)'\054', (byte)'\055', (byte)'\056', (byte)'\057', (byte)'\060', (byte)'\061', (byte)'\062', (byte)'\063', (byte)'\064', (byte)'\065', (byte)'\066', (byte)'\067', (byte)'\070', (byte)'\071', (byte)'\072', (byte)'\073', (byte)'\074', (byte)'\075', (byte)'\076', (byte)'\077', (byte)'\100', (byte)'\141', (byte)'\142', (byte)'\143', (byte)'\144', (byte)'\145', (byte)'\146', (byte)'\147', (byte)'\150', (byte)'\151', (byte)'\152', (byte)'\153', (byte)'\154', (byte)'\155', (byte)'\156', (byte)'\157', (byte)'\160', (byte)'\161', (byte)'\162', (byte)'\163', (byte)'\164', (byte)'\165', (byte)'\166', (byte)'\167', (byte)'\170', (byte)'\171', (byte)'\172', (byte)'\133', (byte)'\134', (byte)'\135', (byte)'\136', (byte)'\137', (byte)'\140', (byte)'\141', (byte)'\142', (byte)'\143', (byte)'\144', (byte)'\145', (byte)'\146', (byte)'\147', (byte)'\150', (byte)'\151', (byte)'\152', (byte)'\153', (byte)'\154', (byte)'\155', (byte)'\156', (byte)'\157', (byte)'\160', (byte)'\161', (byte)'\162', (byte)'\163', (byte)'\164', (byte)'\165', (byte)'\166', (byte)'\167', (byte)'\170', (byte)'\171', (byte)'\172', (byte)'\173', (byte)'\174', (byte)'\175', (byte)'\176', (byte)'\177', (byte)'\200', (byte)'\201', (byte)'\202', (byte)'\203', (byte)'\204', (byte)'\205', (byte)'\206', (byte)'\207', (byte)'\210', (byte)'\211', (byte)'\212', (byte)'\213', (byte)'\214', (byte)'\215', (byte)'\216', (byte)'\217', (byte)'\220', (byte)'\221', (byte)'\222', (byte)'\223', (byte)'\224', (byte)'\225', (byte)'\226', (byte)'\227', (byte)'\230', (byte)'\231', (byte)'\232', (byte)'\233', (byte)'\234', (byte)'\235', (byte)'\236', (byte)'\237', (byte)'\240', (byte)'\261', (byte)'\242', (byte)'\263', (byte)'\244', (byte)'\265', (byte)'\266', (byte)'\247', (byte)'\250', (byte)'\271', (byte)'\272', (byte)'\273', (byte)'\274', (byte)'\255', (byte)'\276', (byte)'\277', (byte)'\260', (byte)'\261', (byte)'\262', (byte)'\263', (byte)'\264', (byte)'\265', (byte)'\266', (byte)'\267', (byte)'\270', (byte)'\271', (byte)'\272', (byte)'\273', (byte)'\274', (byte)'\275', (byte)'\276', (byte)'\277', (byte)'\340', (byte)'\341', (byte)'\342', (byte)'\343', (byte)'\344', (byte)'\345', (byte)'\346', (byte)'\347', (byte)'\350', (byte)'\351', (byte)'\352', (byte)'\353', (byte)'\354', (byte)'\355', (byte)'\356', (byte)'\357', (byte)'\360', (byte)'\361', (byte)'\362', (byte)'\363', (byte)'\364', (byte)'\365', (byte)'\366', (byte)'\327', (byte)'\370', (byte)'\371', (byte)'\372', (byte)'\373', (byte)'\374', (byte)'\375', (byte)'\376', (byte)'\337', (byte)'\340', (byte)'\341', (byte)'\342', (byte)'\343', (byte)'\344', (byte)'\345', (byte)'\346', (byte)'\347', (byte)'\350', (byte)'\351', (byte)'\352', (byte)'\353', (byte)'\354', (byte)'\355', (byte)'\356', (byte)'\357', (byte)'\360', (byte)'\361', (byte)'\362', (byte)'\363', (byte)'\364', (byte)'\365', (byte)'\366', (byte)'\367', (byte)'\370', (byte)'\371', (byte)'\372', (byte)'\373', (byte)'\374', (byte)'\375', (byte)'\376', (byte)'\377' }; static final int ISO8859_2CaseFoldMap[][] = { { 0xa1, 0xb1 }, { 0xa3, 0xb3 }, { 0xa5, 0xb5 }, { 0xa6, 0xb6 }, { 0xa9, 0xb9 }, { 0xaa, 0xba }, { 0xab, 0xbb }, { 0xac, 0xbc }, { 0xae, 0xbe }, { 0xaf, 0xbf }, { 0xc0, 0xe0 }, { 0xc1, 0xe1 }, { 0xc2, 0xe2 }, { 0xc3, 0xe3 }, { 0xc4, 0xe4 }, { 0xc5, 0xe5 }, { 0xc6, 0xe6 }, { 0xc7, 0xe7 }, { 0xc8, 0xe8 }, { 0xc9, 0xe9 }, { 0xca, 0xea }, { 0xcb, 0xeb }, { 0xcc, 0xec }, { 0xcd, 0xed }, { 0xce, 0xee }, { 0xcf, 0xef }, { 0xd0, 0xf0 }, { 0xd1, 0xf1 }, { 0xd2, 0xf2 }, { 0xd3, 0xf3 }, { 0xd4, 0xf4 }, { 0xd5, 0xf5 }, { 0xd6, 0xf6 }, { 0xd8, 0xf8 }, { 0xd9, 0xf9 }, { 0xda, 0xfa }, { 0xdb, 0xfb }, { 0xdc, 0xfc }, { 0xdd, 0xfd }, { 0xde, 0xfe } }; public static final ISO8859_2Encoding INSTANCE = new ISO8859_2Encoding(); } jcodings-1.0.58/src/org/jcodings/specific/ISO8859_3Encoding.java000066400000000000000000000251151433325321700241030ustar00rootroot00000000000000/* * Permission is hereby granted, free of charge, to any person obtaining a copy of * this software and associated documentation files (the "Software"), to deal in * the Software without restriction, including without limitation the rights to * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies * of the Software, and to permit persons to whom the Software is furnished to do * so, subject to the following conditions: * * The above copyright notice and this permission notice shall be included in all * copies or substantial portions of the Software. * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE * SOFTWARE. */ package org.jcodings.specific; import org.jcodings.Config; import org.jcodings.ISOEncoding; import org.jcodings.IntHolder; import org.jcodings.constants.CharacterType; public final class ISO8859_3Encoding extends ISOEncoding { protected ISO8859_3Encoding() { super("ISO-8859-3", ISO8859_3CtypeTable, ISO8859_3ToLowerCaseTable, ISO8859_3CaseFoldMap); } static final int DOTLESS_i = 0xB9; static final int I_WITH_DOT_ABOVE = 0xA9; @Override public int caseMap(IntHolder flagP, byte[] bytes, IntHolder pp, int end, byte[] to, int toP, int toEnd) { int toStart = toP; int flags = flagP.value; while (pp.value < end && toP < toEnd) { int code = bytes[pp.value++] & 0xff; if (code == SHARP_s) { if ((flags & Config.CASE_UPCASE) != 0) { flags |= Config.CASE_MODIFIED; to[toP++] = 'S'; code = (flags & Config.CASE_TITLECASE) != 0 ? 's' : 'S'; } else if ((flags & Config.CASE_FOLD) != 0) { flags |= Config.CASE_MODIFIED; to[toP++] = 's'; code = 's'; } } else if (code == 0xB5); else if ((ISO8859_3CtypeTable[code] & CharacterType.BIT_UPPER) != 0 && (flags & (Config.CASE_DOWNCASE | Config.CASE_FOLD)) != 0) { flags |= Config.CASE_MODIFIED; if (code == 'I') { code = (flags & Config.CASE_FOLD_TURKISH_AZERI) != 0 ? DOTLESS_i : 'i'; } else { code = LowerCaseTable[code]; } } else if ((ISO8859_3CtypeTable[code] & CharacterType.BIT_LOWER) != 0 && (flags & Config.CASE_UPCASE) != 0) { flags |= Config.CASE_MODIFIED; if (code == 'i') { code = (flags & Config.CASE_FOLD_TURKISH_AZERI) != 0 ? I_WITH_DOT_ABOVE : 'I'; } else if (code == DOTLESS_i) { code = 'I'; } else if (code >= 0xB0 && code <= 0xBF) { code -= 0x10; } else { code -= 0x20; } } to[toP++] = (byte)code; if ((flags & Config.CASE_TITLECASE) != 0) { flags ^= (Config.CASE_UPCASE | Config.CASE_DOWNCASE | Config.CASE_TITLECASE); } } flagP.value = flags; return toP - toStart; } static final short ISO8859_3CtypeTable[] = { 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x420c, 0x4209, 0x4208, 0x4208, 0x4208, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4284, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x78b0, 0x78b0, 0x78b0, 0x78b0, 0x78b0, 0x78b0, 0x78b0, 0x78b0, 0x78b0, 0x78b0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x7ca2, 0x7ca2, 0x7ca2, 0x7ca2, 0x7ca2, 0x7ca2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x51a0, 0x41a0, 0x78e2, 0x78e2, 0x78e2, 0x78e2, 0x78e2, 0x78e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x4008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0284, 0x34a2, 0x00a0, 0x00a0, 0x00a0, 0x0000, 0x34a2, 0x00a0, 0x00a0, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x01a0, 0x0000, 0x34a2, 0x00a0, 0x30e2, 0x10a0, 0x10a0, 0x00a0, 0x30e2, 0x30e2, 0x01a0, 0x00a0, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x11a0, 0x0000, 0x30e2, 0x34a2, 0x34a2, 0x34a2, 0x0000, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x0000, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x00a0, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x0000, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x0000, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x00a0, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x00a0 }; static final byte ISO8859_3ToLowerCaseTable[] = new byte[]{ (byte)'\000', (byte)'\001', (byte)'\002', (byte)'\003', (byte)'\004', (byte)'\005', (byte)'\006', (byte)'\007', (byte)'\010', (byte)'\011', (byte)'\012', (byte)'\013', (byte)'\014', (byte)'\015', (byte)'\016', (byte)'\017', (byte)'\020', (byte)'\021', (byte)'\022', (byte)'\023', (byte)'\024', (byte)'\025', (byte)'\026', (byte)'\027', (byte)'\030', (byte)'\031', (byte)'\032', (byte)'\033', (byte)'\034', (byte)'\035', (byte)'\036', (byte)'\037', (byte)'\040', (byte)'\041', (byte)'\042', (byte)'\043', (byte)'\044', (byte)'\045', (byte)'\046', (byte)'\047', (byte)'\050', (byte)'\051', (byte)'\052', (byte)'\053', (byte)'\054', (byte)'\055', (byte)'\056', (byte)'\057', (byte)'\060', (byte)'\061', (byte)'\062', (byte)'\063', (byte)'\064', (byte)'\065', (byte)'\066', (byte)'\067', (byte)'\070', (byte)'\071', (byte)'\072', (byte)'\073', (byte)'\074', (byte)'\075', (byte)'\076', (byte)'\077', (byte)'\100', (byte)'\141', (byte)'\142', (byte)'\143', (byte)'\144', (byte)'\145', (byte)'\146', (byte)'\147', (byte)'\150', (byte)'\151', (byte)'\152', (byte)'\153', (byte)'\154', (byte)'\155', (byte)'\156', (byte)'\157', (byte)'\160', (byte)'\161', (byte)'\162', (byte)'\163', (byte)'\164', (byte)'\165', (byte)'\166', (byte)'\167', (byte)'\170', (byte)'\171', (byte)'\172', (byte)'\133', (byte)'\134', (byte)'\135', (byte)'\136', (byte)'\137', (byte)'\140', (byte)'\141', (byte)'\142', (byte)'\143', (byte)'\144', (byte)'\145', (byte)'\146', (byte)'\147', (byte)'\150', (byte)'\151', (byte)'\152', (byte)'\153', (byte)'\154', (byte)'\155', (byte)'\156', (byte)'\157', (byte)'\160', (byte)'\161', (byte)'\162', (byte)'\163', (byte)'\164', (byte)'\165', (byte)'\166', (byte)'\167', (byte)'\170', (byte)'\171', (byte)'\172', (byte)'\173', (byte)'\174', (byte)'\175', (byte)'\176', (byte)'\177', (byte)'\200', (byte)'\201', (byte)'\202', (byte)'\203', (byte)'\204', (byte)'\205', (byte)'\206', (byte)'\207', (byte)'\210', (byte)'\211', (byte)'\212', (byte)'\213', (byte)'\214', (byte)'\215', (byte)'\216', (byte)'\217', (byte)'\220', (byte)'\221', (byte)'\222', (byte)'\223', (byte)'\224', (byte)'\225', (byte)'\226', (byte)'\227', (byte)'\230', (byte)'\231', (byte)'\232', (byte)'\233', (byte)'\234', (byte)'\235', (byte)'\236', (byte)'\237', (byte)'\240', (byte)'\261', (byte)'\242', (byte)'\243', (byte)'\244', (byte)'\245', (byte)'\266', (byte)'\247', (byte)'\250', (byte)'\271', (byte)'\272', (byte)'\273', (byte)'\274', (byte)'\255', (byte)'\256', (byte)'\277', (byte)'\260', (byte)'\261', (byte)'\262', (byte)'\263', (byte)'\264', (byte)'\265', (byte)'\266', (byte)'\267', (byte)'\270', (byte)'\271', (byte)'\272', (byte)'\273', (byte)'\274', (byte)'\275', (byte)'\276', (byte)'\277', (byte)'\340', (byte)'\341', (byte)'\342', (byte)'\303', (byte)'\344', (byte)'\345', (byte)'\346', (byte)'\347', (byte)'\350', (byte)'\351', (byte)'\352', (byte)'\353', (byte)'\354', (byte)'\355', (byte)'\356', (byte)'\357', (byte)'\320', (byte)'\361', (byte)'\362', (byte)'\363', (byte)'\364', (byte)'\365', (byte)'\366', (byte)'\327', (byte)'\370', (byte)'\371', (byte)'\372', (byte)'\373', (byte)'\374', (byte)'\375', (byte)'\376', (byte)'\337', (byte)'\340', (byte)'\341', (byte)'\342', (byte)'\343', (byte)'\344', (byte)'\345', (byte)'\346', (byte)'\347', (byte)'\350', (byte)'\351', (byte)'\352', (byte)'\353', (byte)'\354', (byte)'\355', (byte)'\356', (byte)'\357', (byte)'\360', (byte)'\361', (byte)'\362', (byte)'\363', (byte)'\364', (byte)'\365', (byte)'\366', (byte)'\367', (byte)'\370', (byte)'\371', (byte)'\372', (byte)'\373', (byte)'\374', (byte)'\375', (byte)'\376', (byte)'\377' }; static final int ISO8859_3CaseFoldMap[][] = { { 0xa1, 0xb1 }, { 0xa6, 0xb6 }, { 0xa9, 0xb9 }, { 0xaa, 0xba }, { 0xab, 0xbb }, { 0xac, 0xbc }, { 0xaf, 0xbf }, { 0xc0, 0xe0 }, { 0xc1, 0xe1 }, { 0xc2, 0xe2 }, { 0xc4, 0xe4 }, { 0xc5, 0xe5 }, { 0xc6, 0xe6 }, { 0xc7, 0xe7 }, { 0xc8, 0xe8 }, { 0xc9, 0xe9 }, { 0xca, 0xea }, { 0xcb, 0xeb }, { 0xcc, 0xec }, { 0xcd, 0xed }, { 0xce, 0xee }, { 0xcf, 0xef }, { 0xd1, 0xf1 }, { 0xd2, 0xf2 }, { 0xd3, 0xf3 }, { 0xd4, 0xf4 }, { 0xd5, 0xf5 }, { 0xd6, 0xf6 }, { 0xd8, 0xf8 }, { 0xd9, 0xf9 }, { 0xda, 0xfa }, { 0xdb, 0xfb }, { 0xdc, 0xfc }, { 0xdd, 0xfd }, { 0xde, 0xfe } }; public static final ISO8859_3Encoding INSTANCE = new ISO8859_3Encoding(); } jcodings-1.0.58/src/org/jcodings/specific/ISO8859_4Encoding.java000066400000000000000000000244551433325321700241120ustar00rootroot00000000000000/* * Permission is hereby granted, free of charge, to any person obtaining a copy of * this software and associated documentation files (the "Software"), to deal in * the Software without restriction, including without limitation the rights to * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies * of the Software, and to permit persons to whom the Software is furnished to do * so, subject to the following conditions: * * The above copyright notice and this permission notice shall be included in all * copies or substantial portions of the Software. * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE * SOFTWARE. */ package org.jcodings.specific; import org.jcodings.Config; import org.jcodings.ISOEncoding; import org.jcodings.IntHolder; import org.jcodings.constants.CharacterType; public final class ISO8859_4Encoding extends ISOEncoding { protected ISO8859_4Encoding() { super("ISO-8859-4", ISO8859_4CtypeTable, ISO8859_4ToLowerCaseTable, ISO8859_4CaseFoldMap); } @Override public int caseMap(IntHolder flagP, byte[] bytes, IntHolder pp, int end, byte[] to, int toP, int toEnd) { int toStart = toP; int flags = flagP.value; while (pp.value < end && toP < toEnd) { int code = bytes[pp.value++] & 0xff; if (code == SHARP_s) { if ((flags & Config.CASE_UPCASE) != 0) { flags |= Config.CASE_MODIFIED; to[toP++] = 'S'; code = (flags & Config.CASE_TITLECASE) != 0 ? 's' : 'S'; } else if ((flags & Config.CASE_FOLD) != 0) { flags |= Config.CASE_MODIFIED; to[toP++] = 's'; code = 's'; } } else if ((ISO8859_4CtypeTable[code] & CharacterType.BIT_UPPER) != 0 && (flags & (Config.CASE_DOWNCASE | Config.CASE_FOLD)) != 0) { flags |= Config.CASE_MODIFIED; code = LowerCaseTable[code]; } else if (code == 0xA2) { } else if ((ISO8859_4CtypeTable[code] & CharacterType.BIT_LOWER) != 0 && (flags & Config.CASE_UPCASE) != 0) { flags |= Config.CASE_MODIFIED; if (code >= 0xA0 && code <= 0xBF) { if (code == 0xBF) code -= 0x02; else code -= 0x10; } else { code -= 0x20; } } to[toP++] = (byte)code; if ((flags & Config.CASE_TITLECASE) != 0) { flags ^= (Config.CASE_UPCASE | Config.CASE_DOWNCASE | Config.CASE_TITLECASE); } } flagP.value = flags; return toP - toStart; } static final short ISO8859_4CtypeTable[] = { 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x420c, 0x4209, 0x4208, 0x4208, 0x4208, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4284, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x78b0, 0x78b0, 0x78b0, 0x78b0, 0x78b0, 0x78b0, 0x78b0, 0x78b0, 0x78b0, 0x78b0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x7ca2, 0x7ca2, 0x7ca2, 0x7ca2, 0x7ca2, 0x7ca2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x51a0, 0x41a0, 0x78e2, 0x78e2, 0x78e2, 0x78e2, 0x78e2, 0x78e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x4008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0284, 0x34a2, 0x30e2, 0x34a2, 0x00a0, 0x34a2, 0x34a2, 0x00a0, 0x00a0, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x01a0, 0x34a2, 0x00a0, 0x00a0, 0x30e2, 0x00a0, 0x30e2, 0x00a0, 0x30e2, 0x30e2, 0x00a0, 0x00a0, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x34a2, 0x30e2, 0x30e2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x00a0, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x00a0, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x00a0 }; static final byte ISO8859_4ToLowerCaseTable[] = new byte[]{ (byte)'\000', (byte)'\001', (byte)'\002', (byte)'\003', (byte)'\004', (byte)'\005', (byte)'\006', (byte)'\007', (byte)'\010', (byte)'\011', (byte)'\012', (byte)'\013', (byte)'\014', (byte)'\015', (byte)'\016', (byte)'\017', (byte)'\020', (byte)'\021', (byte)'\022', (byte)'\023', (byte)'\024', (byte)'\025', (byte)'\026', (byte)'\027', (byte)'\030', (byte)'\031', (byte)'\032', (byte)'\033', (byte)'\034', (byte)'\035', (byte)'\036', (byte)'\037', (byte)'\040', (byte)'\041', (byte)'\042', (byte)'\043', (byte)'\044', (byte)'\045', (byte)'\046', (byte)'\047', (byte)'\050', (byte)'\051', (byte)'\052', (byte)'\053', (byte)'\054', (byte)'\055', (byte)'\056', (byte)'\057', (byte)'\060', (byte)'\061', (byte)'\062', (byte)'\063', (byte)'\064', (byte)'\065', (byte)'\066', (byte)'\067', (byte)'\070', (byte)'\071', (byte)'\072', (byte)'\073', (byte)'\074', (byte)'\075', (byte)'\076', (byte)'\077', (byte)'\100', (byte)'\141', (byte)'\142', (byte)'\143', (byte)'\144', (byte)'\145', (byte)'\146', (byte)'\147', (byte)'\150', (byte)'\151', (byte)'\152', (byte)'\153', (byte)'\154', (byte)'\155', (byte)'\156', (byte)'\157', (byte)'\160', (byte)'\161', (byte)'\162', (byte)'\163', (byte)'\164', (byte)'\165', (byte)'\166', (byte)'\167', (byte)'\170', (byte)'\171', (byte)'\172', (byte)'\133', (byte)'\134', (byte)'\135', (byte)'\136', (byte)'\137', (byte)'\140', (byte)'\141', (byte)'\142', (byte)'\143', (byte)'\144', (byte)'\145', (byte)'\146', (byte)'\147', (byte)'\150', (byte)'\151', (byte)'\152', (byte)'\153', (byte)'\154', (byte)'\155', (byte)'\156', (byte)'\157', (byte)'\160', (byte)'\161', (byte)'\162', (byte)'\163', (byte)'\164', (byte)'\165', (byte)'\166', (byte)'\167', (byte)'\170', (byte)'\171', (byte)'\172', (byte)'\173', (byte)'\174', (byte)'\175', (byte)'\176', (byte)'\177', (byte)'\200', (byte)'\201', (byte)'\202', (byte)'\203', (byte)'\204', (byte)'\205', (byte)'\206', (byte)'\207', (byte)'\210', (byte)'\211', (byte)'\212', (byte)'\213', (byte)'\214', (byte)'\215', (byte)'\216', (byte)'\217', (byte)'\220', (byte)'\221', (byte)'\222', (byte)'\223', (byte)'\224', (byte)'\225', (byte)'\226', (byte)'\227', (byte)'\230', (byte)'\231', (byte)'\232', (byte)'\233', (byte)'\234', (byte)'\235', (byte)'\236', (byte)'\237', (byte)'\240', (byte)'\261', (byte)'\242', (byte)'\263', (byte)'\244', (byte)'\265', (byte)'\266', (byte)'\247', (byte)'\250', (byte)'\271', (byte)'\272', (byte)'\273', (byte)'\274', (byte)'\255', (byte)'\276', (byte)'\257', (byte)'\260', (byte)'\261', (byte)'\262', (byte)'\263', (byte)'\264', (byte)'\265', (byte)'\266', (byte)'\267', (byte)'\270', (byte)'\271', (byte)'\272', (byte)'\273', (byte)'\274', (byte)'\277', (byte)'\276', (byte)'\277', (byte)'\340', (byte)'\341', (byte)'\342', (byte)'\343', (byte)'\344', (byte)'\345', (byte)'\346', (byte)'\347', (byte)'\350', (byte)'\351', (byte)'\352', (byte)'\353', (byte)'\354', (byte)'\355', (byte)'\356', (byte)'\357', (byte)'\360', (byte)'\361', (byte)'\362', (byte)'\363', (byte)'\364', (byte)'\365', (byte)'\366', (byte)'\327', (byte)'\370', (byte)'\371', (byte)'\372', (byte)'\373', (byte)'\374', (byte)'\375', (byte)'\376', (byte)'\337', (byte)'\340', (byte)'\341', (byte)'\342', (byte)'\343', (byte)'\344', (byte)'\345', (byte)'\346', (byte)'\347', (byte)'\350', (byte)'\351', (byte)'\352', (byte)'\353', (byte)'\354', (byte)'\355', (byte)'\356', (byte)'\357', (byte)'\360', (byte)'\361', (byte)'\362', (byte)'\363', (byte)'\364', (byte)'\365', (byte)'\366', (byte)'\367', (byte)'\370', (byte)'\371', (byte)'\372', (byte)'\373', (byte)'\374', (byte)'\375', (byte)'\376', (byte)'\377' }; static final int ISO8859_4CaseFoldMap[][] = { { 0xa1, 0xb1 }, { 0xa3, 0xb3 }, { 0xa5, 0xb5 }, { 0xa6, 0xb6 }, { 0xa9, 0xb9 }, { 0xaa, 0xba }, { 0xab, 0xbb }, { 0xac, 0xbc }, { 0xae, 0xbe }, { 0xc0, 0xe0 }, { 0xc1, 0xe1 }, { 0xc2, 0xe2 }, { 0xc3, 0xe3 }, { 0xc4, 0xe4 }, { 0xc5, 0xe5 }, { 0xc6, 0xe6 }, { 0xc7, 0xe7 }, { 0xc8, 0xe8 }, { 0xc9, 0xe9 }, { 0xca, 0xea }, { 0xcb, 0xeb }, { 0xcc, 0xec }, { 0xcd, 0xed }, { 0xce, 0xee }, { 0xcf, 0xef }, { 0xd0, 0xf0 }, { 0xd1, 0xf1 }, { 0xd2, 0xf2 }, { 0xd3, 0xf3 }, { 0xd4, 0xf4 }, { 0xd5, 0xf5 }, { 0xd6, 0xf6 }, { 0xd8, 0xf8 }, { 0xd9, 0xf9 }, { 0xda, 0xfa }, { 0xdb, 0xfb }, { 0xdc, 0xfc }, { 0xdd, 0xfd }, { 0xde, 0xfe } }; public static final ISO8859_4Encoding INSTANCE = new ISO8859_4Encoding(); } jcodings-1.0.58/src/org/jcodings/specific/ISO8859_5Encoding.java000066400000000000000000000242741433325321700241120ustar00rootroot00000000000000/* * Permission is hereby granted, free of charge, to any person obtaining a copy of * this software and associated documentation files (the "Software"), to deal in * the Software without restriction, including without limitation the rights to * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies * of the Software, and to permit persons to whom the Software is furnished to do * so, subject to the following conditions: * * The above copyright notice and this permission notice shall be included in all * copies or substantial portions of the Software. * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE * SOFTWARE. */ package org.jcodings.specific; import org.jcodings.Config; import org.jcodings.ISOEncoding; import org.jcodings.IntHolder; import org.jcodings.constants.CharacterType; public final class ISO8859_5Encoding extends ISOEncoding { protected ISO8859_5Encoding() { super("ISO-8859-5", ISO8859_5CtypeTable, ISO8859_5ToLowerCaseTable, ISO8859_5CaseFoldMap, false); } @Override public int caseMap(IntHolder flagP, byte[] bytes, IntHolder pp, int end, byte[] to, int toP, int toEnd) { int toStart = toP; int flags = flagP.value; while (pp.value < end && toP < toEnd) { int code = bytes[pp.value++] & 0xff; if ((ISO8859_5CtypeTable[code] & CharacterType.BIT_UPPER) != 0 && (flags & (Config.CASE_DOWNCASE | Config.CASE_FOLD)) != 0) { flags |= Config.CASE_MODIFIED; code = LowerCaseTable[code]; } else if ((ISO8859_5CtypeTable[code] & CharacterType.BIT_LOWER) != 0 && (flags & Config.CASE_UPCASE) != 0) { flags |= Config.CASE_MODIFIED; if (0xF1 <= code && code <= 0xFF) { code -= 0x50; } else { code -= 0x20; } } to[toP++] = (byte)code; if ((flags & Config.CASE_TITLECASE) != 0) { flags ^= (Config.CASE_UPCASE | Config.CASE_DOWNCASE | Config.CASE_TITLECASE); } } flagP.value = flags; return toP - toStart; } @Override public int mbcCaseFold(int flag, byte[]bytes, IntHolder pp, int end, byte[]lower) { int p = pp.value; lower[0] = LowerCaseTable[bytes[p] & 0xff]; pp.value++; return 1; } @Override public final byte[]toLowerCaseTable() { return LowerCaseTable; } static final short ISO8859_5CtypeTable[] = { 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x420c, 0x4209, 0x4208, 0x4208, 0x4208, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4284, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x78b0, 0x78b0, 0x78b0, 0x78b0, 0x78b0, 0x78b0, 0x78b0, 0x78b0, 0x78b0, 0x78b0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x7ca2, 0x7ca2, 0x7ca2, 0x7ca2, 0x7ca2, 0x7ca2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x51a0, 0x41a0, 0x78e2, 0x78e2, 0x78e2, 0x78e2, 0x78e2, 0x78e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x4008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0284, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x01a0, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x00a0, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x00a0, 0x30e2, 0x30e2 }; static final byte ISO8859_5ToLowerCaseTable[] = new byte[]{ (byte)'\000', (byte)'\001', (byte)'\002', (byte)'\003', (byte)'\004', (byte)'\005', (byte)'\006', (byte)'\007', (byte)'\010', (byte)'\011', (byte)'\012', (byte)'\013', (byte)'\014', (byte)'\015', (byte)'\016', (byte)'\017', (byte)'\020', (byte)'\021', (byte)'\022', (byte)'\023', (byte)'\024', (byte)'\025', (byte)'\026', (byte)'\027', (byte)'\030', (byte)'\031', (byte)'\032', (byte)'\033', (byte)'\034', (byte)'\035', (byte)'\036', (byte)'\037', (byte)'\040', (byte)'\041', (byte)'\042', (byte)'\043', (byte)'\044', (byte)'\045', (byte)'\046', (byte)'\047', (byte)'\050', (byte)'\051', (byte)'\052', (byte)'\053', (byte)'\054', (byte)'\055', (byte)'\056', (byte)'\057', (byte)'\060', (byte)'\061', (byte)'\062', (byte)'\063', (byte)'\064', (byte)'\065', (byte)'\066', (byte)'\067', (byte)'\070', (byte)'\071', (byte)'\072', (byte)'\073', (byte)'\074', (byte)'\075', (byte)'\076', (byte)'\077', (byte)'\100', (byte)'\141', (byte)'\142', (byte)'\143', (byte)'\144', (byte)'\145', (byte)'\146', (byte)'\147', (byte)'\150', (byte)'\151', (byte)'\152', (byte)'\153', (byte)'\154', (byte)'\155', (byte)'\156', (byte)'\157', (byte)'\160', (byte)'\161', (byte)'\162', (byte)'\163', (byte)'\164', (byte)'\165', (byte)'\166', (byte)'\167', (byte)'\170', (byte)'\171', (byte)'\172', (byte)'\133', (byte)'\134', (byte)'\135', (byte)'\136', (byte)'\137', (byte)'\140', (byte)'\141', (byte)'\142', (byte)'\143', (byte)'\144', (byte)'\145', (byte)'\146', (byte)'\147', (byte)'\150', (byte)'\151', (byte)'\152', (byte)'\153', (byte)'\154', (byte)'\155', (byte)'\156', (byte)'\157', (byte)'\160', (byte)'\161', (byte)'\162', (byte)'\163', (byte)'\164', (byte)'\165', (byte)'\166', (byte)'\167', (byte)'\170', (byte)'\171', (byte)'\172', (byte)'\173', (byte)'\174', (byte)'\175', (byte)'\176', (byte)'\177', (byte)'\200', (byte)'\201', (byte)'\202', (byte)'\203', (byte)'\204', (byte)'\205', (byte)'\206', (byte)'\207', (byte)'\210', (byte)'\211', (byte)'\212', (byte)'\213', (byte)'\214', (byte)'\215', (byte)'\216', (byte)'\217', (byte)'\220', (byte)'\221', (byte)'\222', (byte)'\223', (byte)'\224', (byte)'\225', (byte)'\226', (byte)'\227', (byte)'\230', (byte)'\231', (byte)'\232', (byte)'\233', (byte)'\234', (byte)'\235', (byte)'\236', (byte)'\237', (byte)'\240', (byte)'\361', (byte)'\362', (byte)'\363', (byte)'\364', (byte)'\365', (byte)'\366', (byte)'\367', (byte)'\370', (byte)'\371', (byte)'\372', (byte)'\373', (byte)'\374', (byte)'\255', (byte)'\376', (byte)'\377', (byte)'\320', (byte)'\321', (byte)'\322', (byte)'\323', (byte)'\324', (byte)'\325', (byte)'\326', (byte)'\327', (byte)'\330', (byte)'\331', (byte)'\332', (byte)'\333', (byte)'\334', (byte)'\335', (byte)'\336', (byte)'\337', (byte)'\340', (byte)'\341', (byte)'\342', (byte)'\343', (byte)'\344', (byte)'\345', (byte)'\346', (byte)'\347', (byte)'\350', (byte)'\351', (byte)'\352', (byte)'\353', (byte)'\354', (byte)'\355', (byte)'\356', (byte)'\357', (byte)'\320', (byte)'\321', (byte)'\322', (byte)'\323', (byte)'\324', (byte)'\325', (byte)'\326', (byte)'\327', (byte)'\330', (byte)'\331', (byte)'\332', (byte)'\333', (byte)'\334', (byte)'\335', (byte)'\336', (byte)'\337', (byte)'\340', (byte)'\341', (byte)'\342', (byte)'\343', (byte)'\344', (byte)'\345', (byte)'\346', (byte)'\347', (byte)'\350', (byte)'\351', (byte)'\352', (byte)'\353', (byte)'\354', (byte)'\355', (byte)'\356', (byte)'\357', (byte)'\360', (byte)'\361', (byte)'\362', (byte)'\363', (byte)'\364', (byte)'\365', (byte)'\366', (byte)'\367', (byte)'\370', (byte)'\371', (byte)'\372', (byte)'\373', (byte)'\374', (byte)'\375', (byte)'\376', (byte)'\377' }; static final int ISO8859_5CaseFoldMap[][] = { { 0xa1, 0xf1 }, { 0xa2, 0xf2 }, { 0xa3, 0xf3 }, { 0xa4, 0xf4 }, { 0xa5, 0xf5 }, { 0xa6, 0xf6 }, { 0xa7, 0xf7 }, { 0xa8, 0xf8 }, { 0xa9, 0xf9 }, { 0xaa, 0xfa }, { 0xab, 0xfb }, { 0xac, 0xfc }, { 0xae, 0xfe }, { 0xaf, 0xff }, { 0xb0, 0xd0 }, { 0xb1, 0xd1 }, { 0xb2, 0xd2 }, { 0xb3, 0xd3 }, { 0xb4, 0xd4 }, { 0xb5, 0xd5 }, { 0xb6, 0xd6 }, { 0xb7, 0xd7 }, { 0xb8, 0xd8 }, { 0xb9, 0xd9 }, { 0xba, 0xda }, { 0xbb, 0xdb }, { 0xbc, 0xdc }, { 0xbd, 0xdd }, { 0xbe, 0xde }, { 0xbf, 0xdf }, { 0xc0, 0xe0 }, { 0xc1, 0xe1 }, { 0xc2, 0xe2 }, { 0xc3, 0xe3 }, { 0xc4, 0xe4 }, { 0xc5, 0xe5 }, { 0xc6, 0xe6 }, { 0xc7, 0xe7 }, { 0xc8, 0xe8 }, { 0xc9, 0xe9 }, { 0xca, 0xea }, { 0xcb, 0xeb }, { 0xcc, 0xec }, { 0xcd, 0xed }, { 0xce, 0xee }, { 0xcf, 0xef } }; public static final ISO8859_5Encoding INSTANCE = new ISO8859_5Encoding(); } jcodings-1.0.58/src/org/jcodings/specific/ISO8859_6Encoding.java000066400000000000000000000106571433325321700241130ustar00rootroot00000000000000/* * Permission is hereby granted, free of charge, to any person obtaining a copy of * this software and associated documentation files (the "Software"), to deal in * the Software without restriction, including without limitation the rights to * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies * of the Software, and to permit persons to whom the Software is furnished to do * so, subject to the following conditions: * * The above copyright notice and this permission notice shall be included in all * copies or substantial portions of the Software. * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE * SOFTWARE. */ package org.jcodings.specific; import org.jcodings.ApplyAllCaseFoldFunction; import org.jcodings.CaseFoldCodeItem; import org.jcodings.ISOEncoding; import org.jcodings.IntHolder; import org.jcodings.ascii.AsciiTables; public final class ISO8859_6Encoding extends ISOEncoding { protected ISO8859_6Encoding() { super("ISO-8859-6", ISO8859_6CtypeTable, AsciiTables.ToLowerCaseTable, null); } @Override public int mbcCaseFold(int flag, byte[]bytes, IntHolder pp, int end, byte[]lower) { return asciiMbcCaseFold(flag, bytes, pp, end, lower); } @Override public final byte[]toLowerCaseTable() { return LowerCaseTable; } @Override public void applyAllCaseFold(int flag, ApplyAllCaseFoldFunction fun, Object arg) { asciiApplyAllCaseFold(flag, fun, arg); } @Override public CaseFoldCodeItem[]caseFoldCodesByString(int flag, byte[]bytes, int p, int end) { return asciiCaseFoldCodesByString(flag, bytes, p, end); } static final short ISO8859_6CtypeTable[] = { 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x420c, 0x4209, 0x4208, 0x4208, 0x4208, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4284, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x78b0, 0x78b0, 0x78b0, 0x78b0, 0x78b0, 0x78b0, 0x78b0, 0x78b0, 0x78b0, 0x78b0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x7ca2, 0x7ca2, 0x7ca2, 0x7ca2, 0x7ca2, 0x7ca2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x51a0, 0x41a0, 0x78e2, 0x78e2, 0x78e2, 0x78e2, 0x78e2, 0x78e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x4008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0284, 0x0000, 0x0000, 0x0000, 0x00a0, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x01a0, 0x01a0, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x01a0, 0x0000, 0x0000, 0x0000, 0x01a0, 0x0000, 0x30a2, 0x30a2, 0x30a2, 0x30a2, 0x30a2, 0x30a2, 0x30a2, 0x30a2, 0x30a2, 0x30a2, 0x30a2, 0x30a2, 0x30a2, 0x30a2, 0x30a2, 0x30a2, 0x30a2, 0x30a2, 0x30a2, 0x30a2, 0x30a2, 0x30a2, 0x30a2, 0x30a2, 0x30a2, 0x30a2, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x30a2, 0x30a2, 0x30a2, 0x30a2, 0x30a2, 0x30a2, 0x30a2, 0x30a2, 0x30a2, 0x30a2, 0x30a2, 0x30a2, 0x30a2, 0x30a2, 0x30a2, 0x30a2, 0x30a2, 0x30a2, 0x30a2, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }; public static final ISO8859_6Encoding INSTANCE = new ISO8859_6Encoding(); } jcodings-1.0.58/src/org/jcodings/specific/ISO8859_7Encoding.java000066400000000000000000000250421433325321700241060ustar00rootroot00000000000000/* * Permission is hereby granted, free of charge, to any person obtaining a copy of * this software and associated documentation files (the "Software"), to deal in * the Software without restriction, including without limitation the rights to * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies * of the Software, and to permit persons to whom the Software is furnished to do * so, subject to the following conditions: * * The above copyright notice and this permission notice shall be included in all * copies or substantial portions of the Software. * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE * SOFTWARE. */ package org.jcodings.specific; import org.jcodings.Config; import org.jcodings.ISOEncoding; import org.jcodings.IntHolder; import org.jcodings.constants.CharacterType; public final class ISO8859_7Encoding extends ISOEncoding { protected ISO8859_7Encoding() { super("ISO-8859-7", ISO8859_7CtypeTable, ISO8859_7ToLowerCaseTable, ISO8859_7CaseFoldMap, false); } @Override public int caseMap(IntHolder flagP, byte[] bytes, IntHolder pp, int end, byte[] to, int toP, int toEnd) { int toStart = toP; int flags = flagP.value; while (pp.value < end && toP < toEnd) { int code = bytes[pp.value++] & 0xff; if (code == 0xF2) { if ((flags & Config.CASE_UPCASE) != 0) { flags |= Config.CASE_MODIFIED; code = 0xD3; } else if ((flags & Config.CASE_FOLD) != 0) { flags |= Config.CASE_MODIFIED; code = 0xF3; } } else if ((ISO8859_7CtypeTable[code] & CharacterType.BIT_UPPER) != 0 && (flags & (Config.CASE_DOWNCASE | Config.CASE_FOLD)) != 0) { flags |= Config.CASE_MODIFIED; code = LowerCaseTable[code]; } else if (code == 0xC0 || code == 0xE0) { } else if ((ISO8859_7CtypeTable[code] & CharacterType.BIT_LOWER) != 0 && (flags & Config.CASE_UPCASE) != 0) { flags |= Config.CASE_MODIFIED; if (code == 0xDC) { code -= 0x26; } else if (code >= 0xDD && code <= 0xDF) { code -= 0x25; } else if (code == 0xFC) { code -= 0x40; } else if (code == 0xFD || code == 0xFE) { code -= 0x3F; } else { code -= 0x20; } } to[toP++] = (byte)code; if ((flags & Config.CASE_TITLECASE) != 0) { flags ^= (Config.CASE_UPCASE | Config.CASE_DOWNCASE | Config.CASE_TITLECASE); } } flagP.value = flags; return toP - toStart; } @Override public int mbcCaseFold(int flag, byte[]bytes, IntHolder pp, int end, byte[]lower) { int p = pp.value; lower[0] = LowerCaseTable[bytes[p] & 0xff]; pp.value++; return 1; } @Override public final byte[]toLowerCaseTable() { return LowerCaseTable; } static final short ISO8859_7CtypeTable[] = { 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x420c, 0x4209, 0x4208, 0x4208, 0x4208, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4284, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x78b0, 0x78b0, 0x78b0, 0x78b0, 0x78b0, 0x78b0, 0x78b0, 0x78b0, 0x78b0, 0x78b0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x7ca2, 0x7ca2, 0x7ca2, 0x7ca2, 0x7ca2, 0x7ca2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x51a0, 0x41a0, 0x78e2, 0x78e2, 0x78e2, 0x78e2, 0x78e2, 0x78e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x4008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0284, 0x01a0, 0x01a0, 0x00a0, 0x0000, 0x0000, 0x00a0, 0x00a0, 0x00a0, 0x00a0, 0x0000, 0x01a0, 0x00a0, 0x01a0, 0x0000, 0x01a0, 0x00a0, 0x00a0, 0x10a0, 0x10a0, 0x00a0, 0x00a0, 0x34a2, 0x01a0, 0x34a2, 0x34a2, 0x34a2, 0x01a0, 0x34a2, 0x10a0, 0x34a2, 0x34a2, 0x30e2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x0000, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x0000 }; static final byte ISO8859_7ToLowerCaseTable[] = new byte[]{ (byte)'\000', (byte)'\001', (byte)'\002', (byte)'\003', (byte)'\004', (byte)'\005', (byte)'\006', (byte)'\007', (byte)'\010', (byte)'\011', (byte)'\012', (byte)'\013', (byte)'\014', (byte)'\015', (byte)'\016', (byte)'\017', (byte)'\020', (byte)'\021', (byte)'\022', (byte)'\023', (byte)'\024', (byte)'\025', (byte)'\026', (byte)'\027', (byte)'\030', (byte)'\031', (byte)'\032', (byte)'\033', (byte)'\034', (byte)'\035', (byte)'\036', (byte)'\037', (byte)'\040', (byte)'\041', (byte)'\042', (byte)'\043', (byte)'\044', (byte)'\045', (byte)'\046', (byte)'\047', (byte)'\050', (byte)'\051', (byte)'\052', (byte)'\053', (byte)'\054', (byte)'\055', (byte)'\056', (byte)'\057', (byte)'\060', (byte)'\061', (byte)'\062', (byte)'\063', (byte)'\064', (byte)'\065', (byte)'\066', (byte)'\067', (byte)'\070', (byte)'\071', (byte)'\072', (byte)'\073', (byte)'\074', (byte)'\075', (byte)'\076', (byte)'\077', (byte)'\100', (byte)'\141', (byte)'\142', (byte)'\143', (byte)'\144', (byte)'\145', (byte)'\146', (byte)'\147', (byte)'\150', (byte)'\151', (byte)'\152', (byte)'\153', (byte)'\154', (byte)'\155', (byte)'\156', (byte)'\157', (byte)'\160', (byte)'\161', (byte)'\162', (byte)'\163', (byte)'\164', (byte)'\165', (byte)'\166', (byte)'\167', (byte)'\170', (byte)'\171', (byte)'\172', (byte)'\133', (byte)'\134', (byte)'\135', (byte)'\136', (byte)'\137', (byte)'\140', (byte)'\141', (byte)'\142', (byte)'\143', (byte)'\144', (byte)'\145', (byte)'\146', (byte)'\147', (byte)'\150', (byte)'\151', (byte)'\152', (byte)'\153', (byte)'\154', (byte)'\155', (byte)'\156', (byte)'\157', (byte)'\160', (byte)'\161', (byte)'\162', (byte)'\163', (byte)'\164', (byte)'\165', (byte)'\166', (byte)'\167', (byte)'\170', (byte)'\171', (byte)'\172', (byte)'\173', (byte)'\174', (byte)'\175', (byte)'\176', (byte)'\177', (byte)'\200', (byte)'\201', (byte)'\202', (byte)'\203', (byte)'\204', (byte)'\205', (byte)'\206', (byte)'\207', (byte)'\210', (byte)'\211', (byte)'\212', (byte)'\213', (byte)'\214', (byte)'\215', (byte)'\216', (byte)'\217', (byte)'\220', (byte)'\221', (byte)'\222', (byte)'\223', (byte)'\224', (byte)'\225', (byte)'\226', (byte)'\227', (byte)'\230', (byte)'\231', (byte)'\232', (byte)'\233', (byte)'\234', (byte)'\235', (byte)'\236', (byte)'\237', (byte)'\240', (byte)'\241', (byte)'\242', (byte)'\243', (byte)'\244', (byte)'\245', (byte)'\246', (byte)'\247', (byte)'\250', (byte)'\251', (byte)'\252', (byte)'\253', (byte)'\254', (byte)'\255', (byte)'\256', (byte)'\257', (byte)'\260', (byte)'\261', (byte)'\262', (byte)'\263', (byte)'\264', (byte)'\265', (byte)'\334', (byte)'\267', (byte)'\335', (byte)'\336', (byte)'\337', (byte)'\273', (byte)'\374', (byte)'\275', (byte)'\375', (byte)'\376', (byte)'\300', (byte)'\341', (byte)'\342', (byte)'\343', (byte)'\344', (byte)'\345', (byte)'\346', (byte)'\347', (byte)'\350', (byte)'\351', (byte)'\352', (byte)'\353', (byte)'\354', (byte)'\355', (byte)'\356', (byte)'\357', (byte)'\360', (byte)'\361', (byte)'\322', (byte)'\363', (byte)'\364', (byte)'\365', (byte)'\366', (byte)'\367', (byte)'\370', (byte)'\371', (byte)'\372', (byte)'\373', (byte)'\334', (byte)'\335', (byte)'\336', (byte)'\337', (byte)'\340', (byte)'\341', (byte)'\342', (byte)'\343', (byte)'\344', (byte)'\345', (byte)'\346', (byte)'\347', (byte)'\350', (byte)'\351', (byte)'\352', (byte)'\353', (byte)'\354', (byte)'\355', (byte)'\356', (byte)'\357', (byte)'\360', (byte)'\361', (byte)'\362', (byte)'\363', (byte)'\364', (byte)'\365', (byte)'\366', (byte)'\367', (byte)'\370', (byte)'\371', (byte)'\372', (byte)'\373', (byte)'\374', (byte)'\375', (byte)'\376', (byte)'\377' }; static final int ISO8859_7CaseFoldMap[][] = { { 0xb6, 0xdc }, { 0xb8, 0xdd }, { 0xb9, 0xde }, { 0xba, 0xdf }, { 0xbc, 0xfc }, { 0xbe, 0xfd }, { 0xbf, 0xfe }, { 0xc1, 0xe1 }, { 0xc2, 0xe2 }, { 0xc3, 0xe3 }, { 0xc4, 0xe4 }, { 0xc5, 0xe5 }, { 0xc6, 0xe6 }, { 0xc7, 0xe7 }, { 0xc8, 0xe8 }, { 0xc9, 0xe9 }, { 0xca, 0xea }, { 0xcb, 0xeb }, { 0xcc, 0xec }, { 0xcd, 0xed }, { 0xce, 0xee }, { 0xcf, 0xef }, { 0xd0, 0xf0 }, { 0xd1, 0xf1 }, { 0xd2, 0xf2 }, { 0xd3, 0xf3 }, { 0xd4, 0xf4 }, { 0xd5, 0xf5 }, { 0xd6, 0xf6 }, { 0xd7, 0xf7 }, { 0xd8, 0xf8 }, { 0xd9, 0xf9 }, { 0xda, 0xfa }, { 0xdb, 0xfb } }; public static final ISO8859_7Encoding INSTANCE = new ISO8859_7Encoding(); } jcodings-1.0.58/src/org/jcodings/specific/ISO8859_8Encoding.java000066400000000000000000000106571433325321700241150ustar00rootroot00000000000000/* * Permission is hereby granted, free of charge, to any person obtaining a copy of * this software and associated documentation files (the "Software"), to deal in * the Software without restriction, including without limitation the rights to * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies * of the Software, and to permit persons to whom the Software is furnished to do * so, subject to the following conditions: * * The above copyright notice and this permission notice shall be included in all * copies or substantial portions of the Software. * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE * SOFTWARE. */ package org.jcodings.specific; import org.jcodings.ApplyAllCaseFoldFunction; import org.jcodings.CaseFoldCodeItem; import org.jcodings.ISOEncoding; import org.jcodings.IntHolder; import org.jcodings.ascii.AsciiTables; public final class ISO8859_8Encoding extends ISOEncoding { protected ISO8859_8Encoding() { super("ISO-8859-8", ISO8859_8CtypeTable, AsciiTables.ToLowerCaseTable, null); } @Override public int mbcCaseFold(int flag, byte[]bytes, IntHolder pp, int end, byte[]lower) { return asciiMbcCaseFold(flag, bytes, pp, end, lower); } @Override public final byte[]toLowerCaseTable() { return LowerCaseTable; } @Override public void applyAllCaseFold(int flag, ApplyAllCaseFoldFunction fun, Object arg) { asciiApplyAllCaseFold(flag, fun, arg); } @Override public CaseFoldCodeItem[]caseFoldCodesByString(int flag, byte[]bytes, int p, int end) { return asciiCaseFoldCodesByString(flag, bytes, p, end); } static final short ISO8859_8CtypeTable[] = { 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x420c, 0x4209, 0x4208, 0x4208, 0x4208, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4284, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x78b0, 0x78b0, 0x78b0, 0x78b0, 0x78b0, 0x78b0, 0x78b0, 0x78b0, 0x78b0, 0x78b0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x7ca2, 0x7ca2, 0x7ca2, 0x7ca2, 0x7ca2, 0x7ca2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x51a0, 0x41a0, 0x78e2, 0x78e2, 0x78e2, 0x78e2, 0x78e2, 0x78e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x4008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0284, 0x0000, 0x00a0, 0x00a0, 0x00a0, 0x00a0, 0x00a0, 0x00a0, 0x00a0, 0x00a0, 0x00a0, 0x01a0, 0x00a0, 0x01a0, 0x00a0, 0x00a0, 0x00a0, 0x00a0, 0x10a0, 0x10a0, 0x00a0, 0x30e2, 0x00a0, 0x01a0, 0x00a0, 0x10a0, 0x00a0, 0x01a0, 0x10a0, 0x10a0, 0x10a0, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x01a0, 0x30a2, 0x30a2, 0x30a2, 0x30a2, 0x30a2, 0x30a2, 0x30a2, 0x30a2, 0x30a2, 0x30a2, 0x30a2, 0x30a2, 0x30a2, 0x30a2, 0x30a2, 0x30a2, 0x30a2, 0x30a2, 0x30a2, 0x30a2, 0x30a2, 0x30a2, 0x30a2, 0x30a2, 0x30a2, 0x30a2, 0x30a2, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }; public static final ISO8859_8Encoding INSTANCE = new ISO8859_8Encoding(); } jcodings-1.0.58/src/org/jcodings/specific/ISO8859_9Encoding.java000066400000000000000000000246461433325321700241210ustar00rootroot00000000000000/* * Permission is hereby granted, free of charge, to any person obtaining a copy of * this software and associated documentation files (the "Software"), to deal in * the Software without restriction, including without limitation the rights to * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies * of the Software, and to permit persons to whom the Software is furnished to do * so, subject to the following conditions: * * The above copyright notice and this permission notice shall be included in all * copies or substantial portions of the Software. * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE * SOFTWARE. */ package org.jcodings.specific; import org.jcodings.Config; import org.jcodings.ISOEncoding; import org.jcodings.IntHolder; import org.jcodings.constants.CharacterType; public final class ISO8859_9Encoding extends ISOEncoding { protected ISO8859_9Encoding() { super("ISO-8859-9", ISO8859_9CtypeTable, ISO8859_9ToLowerCaseTable, ISO8859_9CaseFoldMap); } static final int DOTLESS_i = 0xFD; static final int I_WITH_DOT_ABOVE = 0xDD; @Override public int caseMap(IntHolder flagP, byte[] bytes, IntHolder pp, int end, byte[] to, int toP, int toEnd) { int toStart = toP; int flags = flagP.value; while (pp.value < end && toP < toEnd) { int code = bytes[pp.value++] & 0xff; if (code == SHARP_s) { if ((flags & Config.CASE_UPCASE) != 0) { flags |= Config.CASE_MODIFIED; to[toP++] = 'S'; code = (flags & Config.CASE_TITLECASE) != 0 ? 's' : 'S'; } else if ((flags & Config.CASE_FOLD) != 0) { flags |= Config.CASE_MODIFIED; to[toP++] = 's'; code = 's'; } } else if (code == 0xAA || code == 0xB5 || code == 0xBA || code == 0xFF); else if ((ISO8859_9CtypeTable[code] & CharacterType.BIT_UPPER) != 0 && (flags & (Config.CASE_DOWNCASE | Config.CASE_FOLD)) != 0) { flags |= Config.CASE_MODIFIED; if (code == 'I') { code = (flags & Config.CASE_FOLD_TURKISH_AZERI) != 0 ? DOTLESS_i : 'i'; } else { code = LowerCaseTable[code]; } } else if ((ISO8859_9CtypeTable[code] & CharacterType.BIT_LOWER) != 0 && (flags & Config.CASE_UPCASE) != 0) { flags |= Config.CASE_MODIFIED; if (code == 'i') { code = (flags & Config.CASE_FOLD_TURKISH_AZERI) != 0 ? I_WITH_DOT_ABOVE : 'I'; } else if (code == DOTLESS_i) { code = 'I'; } else { code -= 0x20; } } to[toP++] = (byte)code; if ((flags & Config.CASE_TITLECASE) != 0) { flags ^= (Config.CASE_UPCASE | Config.CASE_DOWNCASE | Config.CASE_TITLECASE); } } flagP.value = flags; return toP - toStart; } static final short ISO8859_9CtypeTable[] = { 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x420c, 0x4209, 0x4208, 0x4208, 0x4208, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4284, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x78b0, 0x78b0, 0x78b0, 0x78b0, 0x78b0, 0x78b0, 0x78b0, 0x78b0, 0x78b0, 0x78b0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x7ca2, 0x7ca2, 0x7ca2, 0x7ca2, 0x7ca2, 0x7ca2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x51a0, 0x41a0, 0x78e2, 0x78e2, 0x78e2, 0x78e2, 0x78e2, 0x78e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x4008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0284, 0x01a0, 0x00a0, 0x00a0, 0x00a0, 0x00a0, 0x00a0, 0x00a0, 0x00a0, 0x00a0, 0x30e2, 0x01a0, 0x00a0, 0x01a0, 0x00a0, 0x00a0, 0x00a0, 0x00a0, 0x10a0, 0x10a0, 0x00a0, 0x30e2, 0x00a0, 0x01a0, 0x00a0, 0x10a0, 0x30e2, 0x01a0, 0x10a0, 0x10a0, 0x10a0, 0x01a0, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x00a0, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x00a0, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2 }; static final byte ISO8859_9ToLowerCaseTable[] = new byte[]{ (byte)'\000', (byte)'\001', (byte)'\002', (byte)'\003', (byte)'\004', (byte)'\005', (byte)'\006', (byte)'\007', (byte)'\010', (byte)'\011', (byte)'\012', (byte)'\013', (byte)'\014', (byte)'\015', (byte)'\016', (byte)'\017', (byte)'\020', (byte)'\021', (byte)'\022', (byte)'\023', (byte)'\024', (byte)'\025', (byte)'\026', (byte)'\027', (byte)'\030', (byte)'\031', (byte)'\032', (byte)'\033', (byte)'\034', (byte)'\035', (byte)'\036', (byte)'\037', (byte)'\040', (byte)'\041', (byte)'\042', (byte)'\043', (byte)'\044', (byte)'\045', (byte)'\046', (byte)'\047', (byte)'\050', (byte)'\051', (byte)'\052', (byte)'\053', (byte)'\054', (byte)'\055', (byte)'\056', (byte)'\057', (byte)'\060', (byte)'\061', (byte)'\062', (byte)'\063', (byte)'\064', (byte)'\065', (byte)'\066', (byte)'\067', (byte)'\070', (byte)'\071', (byte)'\072', (byte)'\073', (byte)'\074', (byte)'\075', (byte)'\076', (byte)'\077', (byte)'\100', (byte)'\141', (byte)'\142', (byte)'\143', (byte)'\144', (byte)'\145', (byte)'\146', (byte)'\147', (byte)'\150', (byte)'\151', (byte)'\152', (byte)'\153', (byte)'\154', (byte)'\155', (byte)'\156', (byte)'\157', (byte)'\160', (byte)'\161', (byte)'\162', (byte)'\163', (byte)'\164', (byte)'\165', (byte)'\166', (byte)'\167', (byte)'\170', (byte)'\171', (byte)'\172', (byte)'\133', (byte)'\134', (byte)'\135', (byte)'\136', (byte)'\137', (byte)'\140', (byte)'\141', (byte)'\142', (byte)'\143', (byte)'\144', (byte)'\145', (byte)'\146', (byte)'\147', (byte)'\150', (byte)'\151', (byte)'\152', (byte)'\153', (byte)'\154', (byte)'\155', (byte)'\156', (byte)'\157', (byte)'\160', (byte)'\161', (byte)'\162', (byte)'\163', (byte)'\164', (byte)'\165', (byte)'\166', (byte)'\167', (byte)'\170', (byte)'\171', (byte)'\172', (byte)'\173', (byte)'\174', (byte)'\175', (byte)'\176', (byte)'\177', (byte)'\200', (byte)'\201', (byte)'\202', (byte)'\203', (byte)'\204', (byte)'\205', (byte)'\206', (byte)'\207', (byte)'\210', (byte)'\211', (byte)'\212', (byte)'\213', (byte)'\214', (byte)'\215', (byte)'\216', (byte)'\217', (byte)'\220', (byte)'\221', (byte)'\222', (byte)'\223', (byte)'\224', (byte)'\225', (byte)'\226', (byte)'\227', (byte)'\230', (byte)'\231', (byte)'\232', (byte)'\233', (byte)'\234', (byte)'\235', (byte)'\236', (byte)'\237', (byte)'\240', (byte)'\241', (byte)'\242', (byte)'\243', (byte)'\244', (byte)'\245', (byte)'\246', (byte)'\247', (byte)'\250', (byte)'\251', (byte)'\252', (byte)'\253', (byte)'\254', (byte)'\255', (byte)'\256', (byte)'\257', (byte)'\260', (byte)'\261', (byte)'\262', (byte)'\263', (byte)'\264', (byte)'\265', (byte)'\266', (byte)'\267', (byte)'\270', (byte)'\271', (byte)'\272', (byte)'\273', (byte)'\274', (byte)'\275', (byte)'\276', (byte)'\277', (byte)'\340', (byte)'\341', (byte)'\342', (byte)'\343', (byte)'\344', (byte)'\345', (byte)'\346', (byte)'\347', (byte)'\350', (byte)'\351', (byte)'\352', (byte)'\353', (byte)'\354', (byte)'\355', (byte)'\356', (byte)'\357', (byte)'\360', (byte)'\361', (byte)'\362', (byte)'\363', (byte)'\364', (byte)'\365', (byte)'\366', (byte)'\327', (byte)'\370', (byte)'\371', (byte)'\372', (byte)'\373', (byte)'\374', (byte)'\335', (byte)'\376', (byte)'\337', (byte)'\340', (byte)'\341', (byte)'\342', (byte)'\343', (byte)'\344', (byte)'\345', (byte)'\346', (byte)'\347', (byte)'\350', (byte)'\351', (byte)'\352', (byte)'\353', (byte)'\354', (byte)'\355', (byte)'\356', (byte)'\357', (byte)'\360', (byte)'\361', (byte)'\362', (byte)'\363', (byte)'\364', (byte)'\365', (byte)'\366', (byte)'\367', (byte)'\370', (byte)'\371', (byte)'\372', (byte)'\373', (byte)'\374', (byte)'\375', (byte)'\376', (byte)'\377' }; static final int ISO8859_9CaseFoldMap[][] = { { 0xc0, 0xe0 }, { 0xc1, 0xe1 }, { 0xc2, 0xe2 }, { 0xc3, 0xe3 }, { 0xc4, 0xe4 }, { 0xc5, 0xe5 }, { 0xc6, 0xe6 }, { 0xc7, 0xe7 }, { 0xc8, 0xe8 }, { 0xc9, 0xe9 }, { 0xca, 0xea }, { 0xcb, 0xeb }, { 0xcc, 0xec }, { 0xcd, 0xed }, { 0xce, 0xee }, { 0xcf, 0xef }, { 0xd0, 0xf0 }, { 0xd1, 0xf1 }, { 0xd2, 0xf2 }, { 0xd3, 0xf3 }, { 0xd4, 0xf4 }, { 0xd5, 0xf5 }, { 0xd6, 0xf6 }, { 0xd8, 0xf8 }, { 0xd9, 0xf9 }, { 0xda, 0xfa }, { 0xdb, 0xfb }, { 0xdc, 0xfc }, { 0xdd, 0xfd }, { 0xde, 0xfe } }; public static final ISO8859_9Encoding INSTANCE = new ISO8859_9Encoding(); } jcodings-1.0.58/src/org/jcodings/specific/KOI8Encoding.java000066400000000000000000000236011433325321700234010ustar00rootroot00000000000000/* * Permission is hereby granted, free of charge, to any person obtaining a copy of * this software and associated documentation files (the "Software"), to deal in * the Software without restriction, including without limitation the rights to * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies * of the Software, and to permit persons to whom the Software is furnished to do * so, subject to the following conditions: * * The above copyright notice and this permission notice shall be included in all * copies or substantial portions of the Software. * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE * SOFTWARE. */ package org.jcodings.specific; import org.jcodings.CaseFoldMapEncoding; import org.jcodings.IntHolder; final public class KOI8Encoding extends CaseFoldMapEncoding { protected KOI8Encoding() { super("KOI8", KOI8_CtypeTable, KOI8_ToLowerCaseTable, KOI8_CaseFoldMap, false); } private static final int ENC_CASE_FOLD_ASCII_CASE = 0; private static final int ONIGENC_CASE_FOLD_NONASCII_CASE = 0; @Override public int mbcCaseFold(int flag, byte[]bytes, IntHolder pp, int end, byte[]lower) { int p = pp.value; int lowerP = 0; if (((flag & ENC_CASE_FOLD_ASCII_CASE) !=0 && isAscii(bytes[p] & 0xff)) || ((flag & ONIGENC_CASE_FOLD_NONASCII_CASE) !=0 && !isAscii(bytes[p] & 0xff))) { lower[lowerP] = LowerCaseTable[bytes[p] & 0xff]; } else { lower[lowerP] = bytes[p]; } pp.value++; return 1; /* return byte length of converted char to lower */ } @Override public boolean isCodeCType(int code, int ctype) { return code < 256 ? isCodeCTypeInternal(code, ctype) : false; } static final short KOI8_CtypeTable[] = { 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x420c, 0x4209, 0x4208, 0x4208, 0x4208, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4284, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x78b0, 0x78b0, 0x78b0, 0x78b0, 0x78b0, 0x78b0, 0x78b0, 0x78b0, 0x78b0, 0x78b0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x7ca2, 0x7ca2, 0x7ca2, 0x7ca2, 0x7ca2, 0x7ca2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x51a0, 0x41a0, 0x78e2, 0x78e2, 0x78e2, 0x78e2, 0x78e2, 0x78e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x4008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0284, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2 }; static final byte KOI8_ToLowerCaseTable[] = new byte[]{ (byte)'\000', (byte)'\001', (byte)'\002', (byte)'\003', (byte)'\004', (byte)'\005', (byte)'\006', (byte)'\007', (byte)'\010', (byte)'\011', (byte)'\012', (byte)'\013', (byte)'\014', (byte)'\015', (byte)'\016', (byte)'\017', (byte)'\020', (byte)'\021', (byte)'\022', (byte)'\023', (byte)'\024', (byte)'\025', (byte)'\026', (byte)'\027', (byte)'\030', (byte)'\031', (byte)'\032', (byte)'\033', (byte)'\034', (byte)'\035', (byte)'\036', (byte)'\037', (byte)'\040', (byte)'\041', (byte)'\042', (byte)'\043', (byte)'\044', (byte)'\045', (byte)'\046', (byte)'\047', (byte)'\050', (byte)'\051', (byte)'\052', (byte)'\053', (byte)'\054', (byte)'\055', (byte)'\056', (byte)'\057', (byte)'\060', (byte)'\061', (byte)'\062', (byte)'\063', (byte)'\064', (byte)'\065', (byte)'\066', (byte)'\067', (byte)'\070', (byte)'\071', (byte)'\072', (byte)'\073', (byte)'\074', (byte)'\075', (byte)'\076', (byte)'\077', (byte)'\100', (byte)'\141', (byte)'\142', (byte)'\143', (byte)'\144', (byte)'\145', (byte)'\146', (byte)'\147', (byte)'\150', (byte)'\151', (byte)'\152', (byte)'\153', (byte)'\154', (byte)'\155', (byte)'\156', (byte)'\157', (byte)'\160', (byte)'\161', (byte)'\162', (byte)'\163', (byte)'\164', (byte)'\165', (byte)'\166', (byte)'\167', (byte)'\170', (byte)'\171', (byte)'\172', (byte)'\133', (byte)'\134', (byte)'\135', (byte)'\136', (byte)'\137', (byte)'\140', (byte)'\141', (byte)'\142', (byte)'\143', (byte)'\144', (byte)'\145', (byte)'\146', (byte)'\147', (byte)'\150', (byte)'\151', (byte)'\152', (byte)'\153', (byte)'\154', (byte)'\155', (byte)'\156', (byte)'\157', (byte)'\160', (byte)'\161', (byte)'\162', (byte)'\163', (byte)'\164', (byte)'\165', (byte)'\166', (byte)'\167', (byte)'\170', (byte)'\171', (byte)'\172', (byte)'\173', (byte)'\174', (byte)'\175', (byte)'\176', (byte)'\177', (byte)'\200', (byte)'\201', (byte)'\202', (byte)'\203', (byte)'\204', (byte)'\205', (byte)'\206', (byte)'\207', (byte)'\210', (byte)'\211', (byte)'\212', (byte)'\213', (byte)'\214', (byte)'\215', (byte)'\216', (byte)'\217', (byte)'\220', (byte)'\221', (byte)'\222', (byte)'\223', (byte)'\224', (byte)'\225', (byte)'\226', (byte)'\227', (byte)'\230', (byte)'\231', (byte)'\232', (byte)'\233', (byte)'\234', (byte)'\235', (byte)'\236', (byte)'\237', (byte)'\240', (byte)'\241', (byte)'\242', (byte)'\243', (byte)'\244', (byte)'\245', (byte)'\246', (byte)'\247', (byte)'\250', (byte)'\251', (byte)'\252', (byte)'\253', (byte)'\254', (byte)'\255', (byte)'\256', (byte)'\257', (byte)'\260', (byte)'\261', (byte)'\262', (byte)'\263', (byte)'\264', (byte)'\265', (byte)'\266', (byte)'\267', (byte)'\270', (byte)'\271', (byte)'\272', (byte)'\273', (byte)'\274', (byte)'\275', (byte)'\276', (byte)'\277', (byte)'\300', (byte)'\301', (byte)'\302', (byte)'\303', (byte)'\304', (byte)'\305', (byte)'\306', (byte)'\307', (byte)'\310', (byte)'\311', (byte)'\312', (byte)'\313', (byte)'\314', (byte)'\315', (byte)'\316', (byte)'\317', (byte)'\320', (byte)'\321', (byte)'\322', (byte)'\323', (byte)'\324', (byte)'\325', (byte)'\326', (byte)'\327', (byte)'\330', (byte)'\331', (byte)'\332', (byte)'\333', (byte)'\334', (byte)'\335', (byte)'\336', (byte)'\337', (byte)'\300', (byte)'\301', (byte)'\302', (byte)'\303', (byte)'\304', (byte)'\305', (byte)'\306', (byte)'\307', (byte)'\310', (byte)'\311', (byte)'\312', (byte)'\313', (byte)'\314', (byte)'\315', (byte)'\316', (byte)'\317', (byte)'\320', (byte)'\321', (byte)'\322', (byte)'\323', (byte)'\324', (byte)'\325', (byte)'\326', (byte)'\327', (byte)'\330', (byte)'\331', (byte)'\332', (byte)'\333', (byte)'\334', (byte)'\335', (byte)'\336', (byte)'\337' }; static final int KOI8_CaseFoldMap[][] = { { 0xc0, 0xe0 }, { 0xc1, 0xe1 }, { 0xc2, 0xe2 }, { 0xc3, 0xe3 }, { 0xc4, 0xe4 }, { 0xc5, 0xe5 }, { 0xc6, 0xe6 }, { 0xc7, 0xe7 }, { 0xc8, 0xe8 }, { 0xc9, 0xe9 }, { 0xca, 0xea }, { 0xcb, 0xeb }, { 0xcc, 0xec }, { 0xcd, 0xed }, { 0xce, 0xee }, { 0xcf, 0xef }, { 0xd0, 0xf0 }, { 0xd1, 0xf1 }, { 0xd2, 0xf2 }, { 0xd3, 0xf3 }, { 0xd4, 0xf4 }, { 0xd5, 0xf5 }, { 0xd6, 0xf6 }, { 0xd7, 0xf7 }, { 0xd8, 0xf8 }, { 0xd9, 0xf9 }, { 0xda, 0xfa }, { 0xdb, 0xfb }, { 0xdc, 0xfc }, { 0xdd, 0xfd }, { 0xde, 0xfe }, { 0xdf, 0xff }, { 0xe0, 0xc0 }, { 0xe1, 0xc1 }, { 0xe2, 0xc2 }, { 0xe3, 0xc3 }, { 0xe4, 0xc4 }, { 0xe5, 0xc5 }, { 0xe6, 0xc6 }, { 0xe7, 0xc7 }, { 0xe8, 0xc8 }, { 0xe9, 0xc9 }, { 0xea, 0xca }, { 0xeb, 0xcb }, { 0xec, 0xcc }, { 0xed, 0xcd }, { 0xee, 0xce }, { 0xef, 0xcf }, { 0xf0, 0xd0 }, { 0xf1, 0xd1 }, { 0xf2, 0xd2 }, { 0xf3, 0xd3 }, { 0xf4, 0xd4 }, { 0xf5, 0xd5 }, { 0xf6, 0xd6 }, { 0xf7, 0xd7 }, { 0xf8, 0xd8 }, { 0xf9, 0xd9 }, { 0xfa, 0xda }, { 0xfb, 0xdb }, { 0xfc, 0xdc }, { 0xfe, 0xde }, { 0xff, 0xdf } }; public static final KOI8Encoding INSTANCE = new KOI8Encoding(); } jcodings-1.0.58/src/org/jcodings/specific/KOI8REncoding.java000066400000000000000000000213731433325321700235270ustar00rootroot00000000000000/* * Permission is hereby granted, free of charge, to any person obtaining a copy of * this software and associated documentation files (the "Software"), to deal in * the Software without restriction, including without limitation the rights to * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies * of the Software, and to permit persons to whom the Software is furnished to do * so, subject to the following conditions: * * The above copyright notice and this permission notice shall be included in all * copies or substantial portions of the Software. * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE * SOFTWARE. */ package org.jcodings.specific; import org.jcodings.CaseFoldMapEncoding; import org.jcodings.IntHolder; final public class KOI8REncoding extends CaseFoldMapEncoding { protected KOI8REncoding() { super("KOI8-R", KOI8R_CtypeTable, KOI8R_ToLowerCaseTable, KOI8R_CaseFoldMap, false); } @Override public int mbcCaseFold(int flag, byte[]bytes, IntHolder pp, int end, byte[]lower) { int p = pp.value; int lowerP = 0; lower[lowerP] = LowerCaseTable[bytes[p] & 0xff]; pp.value++; return 1; } @Override public boolean isCodeCType(int code, int ctype) { return code < 256 ? isCodeCTypeInternal(code, ctype) : false; } static final short KOI8R_CtypeTable[] = { 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x420c, 0x4209, 0x4208, 0x4208, 0x4208, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4284, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x78b0, 0x78b0, 0x78b0, 0x78b0, 0x78b0, 0x78b0, 0x78b0, 0x78b0, 0x78b0, 0x78b0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x7ca2, 0x7ca2, 0x7ca2, 0x7ca2, 0x7ca2, 0x7ca2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x51a0, 0x41a0, 0x78e2, 0x78e2, 0x78e2, 0x78e2, 0x78e2, 0x78e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x4008, 0x00a0, 0x00a0, 0x00a0, 0x00a0, 0x00a0, 0x00a0, 0x00a0, 0x00a0, 0x00a0, 0x00a0, 0x00a0, 0x00a0, 0x00a0, 0x00a0, 0x00a0, 0x00a0, 0x00a0, 0x00a0, 0x00a0, 0x00a0, 0x00a0, 0x00a0, 0x00a0, 0x00a0, 0x00a0, 0x00a0, 0x0284, 0x00a0, 0x00a0, 0x10a0, 0x01a0, 0x00a0, 0x00a0, 0x00a0, 0x00a0, 0x30e2, 0x00a0, 0x00a0, 0x00a0, 0x00a0, 0x00a0, 0x00a0, 0x00a0, 0x00a0, 0x00a0, 0x00a0, 0x00a0, 0x00a0, 0x00a0, 0x00a0, 0x00a0, 0x34a2, 0x00a0, 0x00a0, 0x00a0, 0x00a0, 0x00a0, 0x00a0, 0x00a0, 0x00a0, 0x00a0, 0x00a0, 0x00a0, 0x00a0, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2 }; static final byte KOI8R_ToLowerCaseTable[] = { (byte)'\000', (byte)'\001', (byte)'\002', (byte)'\003', (byte)'\004', (byte)'\005', (byte)'\006', (byte)'\007', (byte)'\010', (byte)'\011', (byte)'\012', (byte)'\013', (byte)'\014', (byte)'\015', (byte)'\016', (byte)'\017', (byte)'\020', (byte)'\021', (byte)'\022', (byte)'\023', (byte)'\024', (byte)'\025', (byte)'\026', (byte)'\027', (byte)'\030', (byte)'\031', (byte)'\032', (byte)'\033', (byte)'\034', (byte)'\035', (byte)'\036', (byte)'\037', (byte)'\040', (byte)'\041', (byte)'\042', (byte)'\043', (byte)'\044', (byte)'\045', (byte)'\046', (byte)'\047', (byte)'\050', (byte)'\051', (byte)'\052', (byte)'\053', (byte)'\054', (byte)'\055', (byte)'\056', (byte)'\057', (byte)'\060', (byte)'\061', (byte)'\062', (byte)'\063', (byte)'\064', (byte)'\065', (byte)'\066', (byte)'\067', (byte)'\070', (byte)'\071', (byte)'\072', (byte)'\073', (byte)'\074', (byte)'\075', (byte)'\076', (byte)'\077', (byte)'\100', (byte)'\141', (byte)'\142', (byte)'\143', (byte)'\144', (byte)'\145', (byte)'\146', (byte)'\147', (byte)'\150', (byte)'\151', (byte)'\152', (byte)'\153', (byte)'\154', (byte)'\155', (byte)'\156', (byte)'\157', (byte)'\160', (byte)'\161', (byte)'\162', (byte)'\163', (byte)'\164', (byte)'\165', (byte)'\166', (byte)'\167', (byte)'\170', (byte)'\171', (byte)'\172', (byte)'\133', (byte)'\134', (byte)'\135', (byte)'\136', (byte)'\137', (byte)'\140', (byte)'\141', (byte)'\142', (byte)'\143', (byte)'\144', (byte)'\145', (byte)'\146', (byte)'\147', (byte)'\150', (byte)'\151', (byte)'\152', (byte)'\153', (byte)'\154', (byte)'\155', (byte)'\156', (byte)'\157', (byte)'\160', (byte)'\161', (byte)'\162', (byte)'\163', (byte)'\164', (byte)'\165', (byte)'\166', (byte)'\167', (byte)'\170', (byte)'\171', (byte)'\172', (byte)'\173', (byte)'\174', (byte)'\175', (byte)'\176', (byte)'\177', (byte)'\200', (byte)'\201', (byte)'\202', (byte)'\203', (byte)'\204', (byte)'\205', (byte)'\206', (byte)'\207', (byte)'\210', (byte)'\211', (byte)'\212', (byte)'\213', (byte)'\214', (byte)'\215', (byte)'\216', (byte)'\217', (byte)'\220', (byte)'\221', (byte)'\222', (byte)'\223', (byte)'\224', (byte)'\225', (byte)'\226', (byte)'\227', (byte)'\230', (byte)'\231', (byte)'\232', (byte)'\233', (byte)'\234', (byte)'\235', (byte)'\236', (byte)'\237', (byte)'\240', (byte)'\241', (byte)'\242', (byte)'\243', (byte)'\244', (byte)'\245', (byte)'\246', (byte)'\247', (byte)'\250', (byte)'\251', (byte)'\252', (byte)'\253', (byte)'\254', (byte)'\255', (byte)'\256', (byte)'\257', (byte)'\260', (byte)'\261', (byte)'\262', (byte)'\243', (byte)'\264', (byte)'\265', (byte)'\266', (byte)'\267', (byte)'\270', (byte)'\271', (byte)'\272', (byte)'\273', (byte)'\274', (byte)'\275', (byte)'\276', (byte)'\277', (byte)'\300', (byte)'\301', (byte)'\302', (byte)'\303', (byte)'\304', (byte)'\305', (byte)'\306', (byte)'\307', (byte)'\310', (byte)'\311', (byte)'\312', (byte)'\313', (byte)'\314', (byte)'\315', (byte)'\316', (byte)'\317', (byte)'\320', (byte)'\321', (byte)'\322', (byte)'\323', (byte)'\324', (byte)'\325', (byte)'\326', (byte)'\327', (byte)'\330', (byte)'\331', (byte)'\332', (byte)'\333', (byte)'\334', (byte)'\335', (byte)'\336', (byte)'\337', (byte)'\300', (byte)'\301', (byte)'\302', (byte)'\303', (byte)'\304', (byte)'\305', (byte)'\306', (byte)'\307', (byte)'\310', (byte)'\311', (byte)'\312', (byte)'\313', (byte)'\314', (byte)'\315', (byte)'\316', (byte)'\317', (byte)'\320', (byte)'\321', (byte)'\322', (byte)'\323', (byte)'\324', (byte)'\325', (byte)'\326', (byte)'\327', (byte)'\330', (byte)'\331', (byte)'\332', (byte)'\333', (byte)'\334', (byte)'\335', (byte)'\336', (byte)'\337' }; static final int KOI8R_CaseFoldMap[][] = { { 0xa3, 0xb3 }, { 0xc0, 0xe0 }, { 0xc1, 0xe1 }, { 0xc2, 0xe2 }, { 0xc3, 0xe3 }, { 0xc4, 0xe4 }, { 0xc5, 0xe5 }, { 0xc6, 0xe6 }, { 0xc7, 0xe7 }, { 0xc8, 0xe8 }, { 0xc9, 0xe9 }, { 0xca, 0xea }, { 0xcb, 0xeb }, { 0xcc, 0xec }, { 0xcd, 0xed }, { 0xce, 0xee }, { 0xcf, 0xef }, { 0xd0, 0xf0 }, { 0xd1, 0xf1 }, { 0xd2, 0xf2 }, { 0xd3, 0xf3 }, { 0xd4, 0xf4 }, { 0xd5, 0xf5 }, { 0xd6, 0xf6 }, { 0xd7, 0xf7 }, { 0xd8, 0xf8 }, { 0xd9, 0xf9 }, { 0xda, 0xfa }, { 0xdb, 0xfb }, { 0xdc, 0xfc }, { 0xdd, 0xfd }, { 0xde, 0xfe }, { 0xdf, 0xff } }; public static final KOI8REncoding INSTANCE = new KOI8REncoding(); } jcodings-1.0.58/src/org/jcodings/specific/KOI8UEncoding.java000066400000000000000000000215331433325321700235300ustar00rootroot00000000000000/* * Permission is hereby granted, free of charge, to any person obtaining a copy of * this software and associated documentation files (the "Software"), to deal in * the Software without restriction, including without limitation the rights to * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies * of the Software, and to permit persons to whom the Software is furnished to do * so, subject to the following conditions: * * The above copyright notice and this permission notice shall be included in all * copies or substantial portions of the Software. * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE * SOFTWARE. */ package org.jcodings.specific; import org.jcodings.CaseFoldMapEncoding; import org.jcodings.IntHolder; final public class KOI8UEncoding extends CaseFoldMapEncoding { protected KOI8UEncoding() { super("KOI8-U", KOI8U_CtypeTable, KOI8U_ToLowerCaseTable, KOI8U_CaseFoldMap, false); } @Override public int mbcCaseFold(int flag, byte[]bytes, IntHolder pp, int end, byte[]lower) { int p = pp.value; int lowerP = 0; lower[lowerP] = LowerCaseTable[bytes[p] & 0xff]; pp.value++; return 1; } @Override public boolean isCodeCType(int code, int ctype) { return code < 256 ? isCodeCTypeInternal(code, ctype) : false; } static final short KOI8U_CtypeTable[] = { 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x420c, 0x4209, 0x4208, 0x4208, 0x4208, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4284, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x78b0, 0x78b0, 0x78b0, 0x78b0, 0x78b0, 0x78b0, 0x78b0, 0x78b0, 0x78b0, 0x78b0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x7ca2, 0x7ca2, 0x7ca2, 0x7ca2, 0x7ca2, 0x7ca2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x51a0, 0x41a0, 0x78e2, 0x78e2, 0x78e2, 0x78e2, 0x78e2, 0x78e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x4008, 0x00a0, 0x00a0, 0x00a0, 0x00a0, 0x00a0, 0x00a0, 0x00a0, 0x00a0, 0x00a0, 0x00a0, 0x00a0, 0x00a0, 0x00a0, 0x00a0, 0x00a0, 0x00a0, 0x00a0, 0x00a0, 0x00a0, 0x00a0, 0x00a0, 0x00a0, 0x00a0, 0x00a0, 0x00a0, 0x00a0, 0x0284, 0x00a0, 0x00a0, 0x10a0, 0x01a0, 0x00a0, 0x00a0, 0x00a0, 0x00a0, 0x30e2, 0x30e2, 0x00a0, 0x30e2, 0x30e2, 0x00a0, 0x00a0, 0x00a0, 0x00a0, 0x00a0, 0x30e2, 0x00a0, 0x00a0, 0x00a0, 0x00a0, 0x00a0, 0x34a2, 0x34a2, 0x00a0, 0x34a2, 0x34a2, 0x00a0, 0x00a0, 0x00a0, 0x00a0, 0x00a0, 0x34a2, 0x00a0, 0x00a0, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2 }; static final byte KOI8U_ToLowerCaseTable[] = { (byte)'\000', (byte)'\001', (byte)'\002', (byte)'\003', (byte)'\004', (byte)'\005', (byte)'\006', (byte)'\007', (byte)'\010', (byte)'\011', (byte)'\012', (byte)'\013', (byte)'\014', (byte)'\015', (byte)'\016', (byte)'\017', (byte)'\020', (byte)'\021', (byte)'\022', (byte)'\023', (byte)'\024', (byte)'\025', (byte)'\026', (byte)'\027', (byte)'\030', (byte)'\031', (byte)'\032', (byte)'\033', (byte)'\034', (byte)'\035', (byte)'\036', (byte)'\037', (byte)'\040', (byte)'\041', (byte)'\042', (byte)'\043', (byte)'\044', (byte)'\045', (byte)'\046', (byte)'\047', (byte)'\050', (byte)'\051', (byte)'\052', (byte)'\053', (byte)'\054', (byte)'\055', (byte)'\056', (byte)'\057', (byte)'\060', (byte)'\061', (byte)'\062', (byte)'\063', (byte)'\064', (byte)'\065', (byte)'\066', (byte)'\067', (byte)'\070', (byte)'\071', (byte)'\072', (byte)'\073', (byte)'\074', (byte)'\075', (byte)'\076', (byte)'\077', (byte)'\100', (byte)'\141', (byte)'\142', (byte)'\143', (byte)'\144', (byte)'\145', (byte)'\146', (byte)'\147', (byte)'\150', (byte)'\151', (byte)'\152', (byte)'\153', (byte)'\154', (byte)'\155', (byte)'\156', (byte)'\157', (byte)'\160', (byte)'\161', (byte)'\162', (byte)'\163', (byte)'\164', (byte)'\165', (byte)'\166', (byte)'\167', (byte)'\170', (byte)'\171', (byte)'\172', (byte)'\133', (byte)'\134', (byte)'\135', (byte)'\136', (byte)'\137', (byte)'\140', (byte)'\141', (byte)'\142', (byte)'\143', (byte)'\144', (byte)'\145', (byte)'\146', (byte)'\147', (byte)'\150', (byte)'\151', (byte)'\152', (byte)'\153', (byte)'\154', (byte)'\155', (byte)'\156', (byte)'\157', (byte)'\160', (byte)'\161', (byte)'\162', (byte)'\163', (byte)'\164', (byte)'\165', (byte)'\166', (byte)'\167', (byte)'\170', (byte)'\171', (byte)'\172', (byte)'\173', (byte)'\174', (byte)'\175', (byte)'\176', (byte)'\177', (byte)'\200', (byte)'\201', (byte)'\202', (byte)'\203', (byte)'\204', (byte)'\205', (byte)'\206', (byte)'\207', (byte)'\210', (byte)'\211', (byte)'\212', (byte)'\213', (byte)'\214', (byte)'\215', (byte)'\216', (byte)'\217', (byte)'\220', (byte)'\221', (byte)'\222', (byte)'\223', (byte)'\224', (byte)'\225', (byte)'\226', (byte)'\227', (byte)'\230', (byte)'\231', (byte)'\232', (byte)'\233', (byte)'\234', (byte)'\235', (byte)'\236', (byte)'\237', (byte)'\240', (byte)'\241', (byte)'\242', (byte)'\243', (byte)'\244', (byte)'\245', (byte)'\246', (byte)'\247', (byte)'\250', (byte)'\251', (byte)'\252', (byte)'\253', (byte)'\254', (byte)'\255', (byte)'\256', (byte)'\257', (byte)'\260', (byte)'\261', (byte)'\262', (byte)'\243', (byte)'\244', (byte)'\265', (byte)'\246', (byte)'\247', (byte)'\270', (byte)'\271', (byte)'\272', (byte)'\273', (byte)'\274', (byte)'\255', (byte)'\276', (byte)'\277', (byte)'\300', (byte)'\301', (byte)'\302', (byte)'\303', (byte)'\304', (byte)'\305', (byte)'\306', (byte)'\307', (byte)'\310', (byte)'\311', (byte)'\312', (byte)'\313', (byte)'\314', (byte)'\315', (byte)'\316', (byte)'\317', (byte)'\320', (byte)'\321', (byte)'\322', (byte)'\323', (byte)'\324', (byte)'\325', (byte)'\326', (byte)'\327', (byte)'\330', (byte)'\331', (byte)'\332', (byte)'\333', (byte)'\334', (byte)'\335', (byte)'\336', (byte)'\337', (byte)'\300', (byte)'\301', (byte)'\302', (byte)'\303', (byte)'\304', (byte)'\305', (byte)'\306', (byte)'\307', (byte)'\310', (byte)'\311', (byte)'\312', (byte)'\313', (byte)'\314', (byte)'\315', (byte)'\316', (byte)'\317', (byte)'\320', (byte)'\321', (byte)'\322', (byte)'\323', (byte)'\324', (byte)'\325', (byte)'\326', (byte)'\327', (byte)'\330', (byte)'\331', (byte)'\332', (byte)'\333', (byte)'\334', (byte)'\335', (byte)'\336', (byte)'\337' }; static final int KOI8U_CaseFoldMap[][] = { { 0xa3, 0xb3 }, { 0xa4, 0xb4 }, { 0xa6, 0xb6 }, { 0xa7, 0xb7 }, { 0xad, 0xbd }, { 0xc0, 0xe0 }, { 0xc1, 0xe1 }, { 0xc2, 0xe2 }, { 0xc3, 0xe3 }, { 0xc4, 0xe4 }, { 0xc5, 0xe5 }, { 0xc6, 0xe6 }, { 0xc7, 0xe7 }, { 0xc8, 0xe8 }, { 0xc9, 0xe9 }, { 0xca, 0xea }, { 0xcb, 0xeb }, { 0xcc, 0xec }, { 0xcd, 0xed }, { 0xce, 0xee }, { 0xcf, 0xef }, { 0xd0, 0xf0 }, { 0xd1, 0xf1 }, { 0xd2, 0xf2 }, { 0xd3, 0xf3 }, { 0xd4, 0xf4 }, { 0xd5, 0xf5 }, { 0xd6, 0xf6 }, { 0xd7, 0xf7 }, { 0xd8, 0xf8 }, { 0xd9, 0xf9 }, { 0xda, 0xfa }, { 0xdb, 0xfb }, { 0xdc, 0xfc }, { 0xdd, 0xfd }, { 0xde, 0xfe }, { 0xdf, 0xff } }; public static final KOI8UEncoding INSTANCE = new KOI8UEncoding(); } jcodings-1.0.58/src/org/jcodings/specific/NonStrictEUCJPEncoding.java000066400000000000000000000026501433325321700254020ustar00rootroot00000000000000/* * Permission is hereby granted, free of charge, to any person obtaining a copy of * this software and associated documentation files (the "Software"), to deal in * the Software without restriction, including without limitation the rights to * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies * of the Software, and to permit persons to whom the Software is furnished to do * so, subject to the following conditions: * * The above copyright notice and this permission notice shall be included in all * copies or substantial portions of the Software. * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE * SOFTWARE. */ package org.jcodings.specific; public final class NonStrictEUCJPEncoding extends BaseEUCJPEncoding { protected NonStrictEUCJPEncoding() { super(null); } @Override public int length(byte[]bytes, int p, int end) { return length(bytes[p]); } public static final NonStrictEUCJPEncoding INSTANCE = new NonStrictEUCJPEncoding(); } jcodings-1.0.58/src/org/jcodings/specific/NonStrictSJISEncoding.java000066400000000000000000000026601433325321700253050ustar00rootroot00000000000000/* * Permission is hereby granted, free of charge, to any person obtaining a copy of * this software and associated documentation files (the "Software"), to deal in * the Software without restriction, including without limitation the rights to * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies * of the Software, and to permit persons to whom the Software is furnished to do * so, subject to the following conditions: * * The above copyright notice and this permission notice shall be included in all * copies or substantial portions of the Software. * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE * SOFTWARE. */ package org.jcodings.specific; public final class NonStrictSJISEncoding extends BaseSJISEncoding { protected NonStrictSJISEncoding() { super("Shift_JIS", null); } @Override public int length(byte[]bytes, int p, int end) { return length(bytes[p]); } public static final NonStrictSJISEncoding INSTANCE = new NonStrictSJISEncoding(); } jcodings-1.0.58/src/org/jcodings/specific/NonStrictUTF8Encoding.java000066400000000000000000000050671433325321700252670ustar00rootroot00000000000000/* * Permission is hereby granted, free of charge, to any person obtaining a copy of * this software and associated documentation files (the "Software"), to deal in * the Software without restriction, including without limitation the rights to * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies * of the Software, and to permit persons to whom the Software is furnished to do * so, subject to the following conditions: * * The above copyright notice and this permission notice shall be included in all * copies or substantial portions of the Software. * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE * SOFTWARE. */ package org.jcodings.specific; public final class NonStrictUTF8Encoding extends BaseUTF8Encoding { protected NonStrictUTF8Encoding() { super(UTF8EncLen, UTF8Encoding.UTF8Trans); } @Override public int length(byte[]bytes, int p, int end) { int len = safeLengthForUptoFour(bytes, p, end); return len < 0 ? 1 : len; } private static final int UTF8EncLen[] = { 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 4, 4, 4, 4, 4, 4, 4, 4, 5, 5, 5, 5, 6, 6, 1, 1 }; public static final NonStrictUTF8Encoding INSTANCE = new NonStrictUTF8Encoding(); @Override public boolean isCodeCType(int code, int ctype) { return code >= 0 && super.isCodeCType(code, ctype); } } jcodings-1.0.58/src/org/jcodings/specific/SJISEncoding.java000066400000000000000000000072711433325321700234440ustar00rootroot00000000000000/* * Permission is hereby granted, free of charge, to any person obtaining a copy of * this software and associated documentation files (the "Software"), to deal in * the Software without restriction, including without limitation the rights to * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies * of the Software, and to permit persons to whom the Software is furnished to do * so, subject to the following conditions: * * The above copyright notice and this permission notice shall be included in all * copies or substantial portions of the Software. * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE * SOFTWARE. */ package org.jcodings.specific; public final class SJISEncoding extends BaseSJISEncoding { protected SJISEncoding() { super("Shift_JIS", SjisTrans); } @Override public int length(byte[]bytes, int p, int end) { return safeLengthForUptoTwo(bytes, p, end); } static final int SjisTrans[][] = new int[][]{ { /* S0 0 1 2 3 4 5 6 7 8 9 a b c d e f */ /* 0 */ A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, /* 1 */ A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, /* 2 */ A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, /* 3 */ A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, /* 4 */ A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, /* 5 */ A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, /* 6 */ A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, /* 7 */ A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, /* 8 */ F, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 9 */ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* a */ F, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, /* b */ A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, /* c */ A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, /* d */ A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, /* e */ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* f */ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, F, F, F }, { /* S1 0 1 2 3 4 5 6 7 8 9 a b c d e f */ /* 0 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, /* 1 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, /* 2 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, /* 3 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, /* 4 */ A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, /* 5 */ A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, /* 6 */ A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, /* 7 */ A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, F, /* 8 */ A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, /* 9 */ A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, /* a */ A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, /* b */ A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, /* c */ A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, /* d */ A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, /* e */ A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, /* f */ A, A, A, A, A, A, A, A, A, A, A, A, A, F, F, F } }; public static final SJISEncoding INSTANCE = new SJISEncoding(); } jcodings-1.0.58/src/org/jcodings/specific/USASCIIEncoding.java000066400000000000000000000036731433325321700237760ustar00rootroot00000000000000/* * Permission is hereby granted, free of charge, to any person obtaining a copy of * this software and associated documentation files (the "Software"), to deal in * the Software without restriction, including without limitation the rights to * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies * of the Software, and to permit persons to whom the Software is furnished to do * so, subject to the following conditions: * * The above copyright notice and this permission notice shall be included in all * copies or substantial portions of the Software. * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE * SOFTWARE. */ package org.jcodings.specific; import org.jcodings.SingleByteEncoding; import org.jcodings.ascii.AsciiTables; public final class USASCIIEncoding extends SingleByteEncoding { protected USASCIIEncoding() { super("US-ASCII", AsciiTables.AsciiCtypeTable, AsciiTables.ToLowerCaseTable); } @Override public int length(byte[] bytes, int p, int end) { return (bytes[p] & 0x80) == 0 ? 1 : -1; } @Override public final byte[] toLowerCaseTable() { return LowerCaseTable; } @Override public String getCharsetName() { return "US-ASCII"; } /** ascii_is_code_ctype / ONIGENC_IS_ASCII_CODE_CTYPE */ @Override public boolean isCodeCType(int code, int ctype) { return code < 128 ? isCodeCTypeInternal(code, ctype) : false; } public static final USASCIIEncoding INSTANCE = new USASCIIEncoding(); } jcodings-1.0.58/src/org/jcodings/specific/UTF16BEEncoding.java000066400000000000000000000145761433325321700237160ustar00rootroot00000000000000/* * Permission is hereby granted, free of charge, to any person obtaining a copy of * this software and associated documentation files (the "Software"), to deal in * the Software without restriction, including without limitation the rights to * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies * of the Software, and to permit persons to whom the Software is furnished to do * so, subject to the following conditions: * * The above copyright notice and this permission notice shall be included in all * copies or substantial portions of the Software. * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE * SOFTWARE. */ package org.jcodings.specific; import org.jcodings.Config; import org.jcodings.IntHolder; import org.jcodings.ascii.AsciiTables; import org.jcodings.unicode.UnicodeEncoding; public final class UTF16BEEncoding extends UnicodeEncoding { protected UTF16BEEncoding() { super("UTF-16BE", 2, 4, UTF16EncLen); } @Override public int length(byte[]bytes, int p, int end) { int b = bytes[p] & 0xff; if (!isSurrogate(b)) { return end - p >= 2 ? 2 : missing(1); } if (isSurrogateFirst(b)) { switch (end - p) { case 1: return missing(3); case 2: return missing(2); case 3: if (isSurrogateSecond(bytes[p + 2] & 0xff)) return missing(1); default: if (isSurrogateSecond(bytes[p + 2] & 0xff)) return 4; } } return CHAR_INVALID; } @Override public boolean isNewLine(byte[]bytes, int p, int end) { if (p + 1 < end) { if (bytes[p + 1] == (byte)0x0a && bytes[p] == (byte)0x00) return true; if (Config.USE_UNICODE_ALL_LINE_TERMINATORS) { if ((!Config.USE_CRNL_AS_LINE_TERMINATOR && bytes[p+1] == (byte)0x0d) || bytes[p+1] == (byte)0x85 && bytes[p] == (byte)0x00) return true; if (bytes[p] == (byte)0x20 && (bytes[p+1] == (byte)0x29 || bytes[p+1] == (byte)0x28)) return true; } } return false; } @Override public int mbcToCode(byte[]bytes, int p, int end) { final int code; if (isSurrogateFirst(bytes[p] & 0xff)) { code = (((((bytes[p + 0] & 0xff) << 8) + (bytes[p + 1] & 0xff)) & 0x03ff) << 10) + ((((bytes[p + 2] & 0xff) << 8) + (bytes[p + 3] & 0xff)) & 0x03ff) + 0x10000; } else { code = (bytes[p + 0] & 0xff) * 256 + (bytes[p + 1] & 0xff); } return code; } @Override public int codeToMbcLength(int code) { return code > 0xffff ? 4 : 2; } @Override public int codeToMbc(int code, byte[]bytes, int p) { int p_ = p; if (code > 0xffff) { int high = (code >>> 10) + 0xd7c0; int low = (code & 0x3ff) + 0xdc00; bytes[p_++] = (byte)((high >>> 8) & 0xff); bytes[p_++] = (byte)(high & 0xff); bytes[p_++] = (byte)((low >>> 8) & 0xff); bytes[p_] = (byte)(low & 0xff); return 4; } else { bytes[p_++] = (byte)((code & 0xff00) >>> 8); bytes[p_++] = (byte)(code & 0xff); return 2; } } @Override public int mbcCaseFold(int flag, byte[]bytes, IntHolder pp, int end, byte[]fold) { int p = pp.value; int foldP = 0; if (isAscii(bytes[p+1] & 0xff) && bytes[p] == 0) { p++; if (Config.USE_UNICODE_CASE_FOLD_TURKISH_AZERI) { if ((flag & Config.CASE_FOLD_TURKISH_AZERI) != 0) { if (bytes[p] == (byte)0x49) { fold[foldP++] = (byte)0x01; fold[foldP] = (byte)0x31; pp.value += 2; return 2; } } } // USE_UNICODE_CASE_FOLD_TURKISH_AZERI fold[foldP++] = 0; fold[foldP] = AsciiTables.ToLowerCaseTable[bytes[p] & 0xff]; pp.value += 2; return 2; } else { return super.mbcCaseFold(flag, bytes, pp, end, fold); } } /** onigenc_utf16_32_get_ctype_code_range */ @Override public int[]ctypeCodeRange(int ctype, IntHolder sbOut) { sbOut.value = 0x00; return super.ctypeCodeRange(ctype); } @Override public int leftAdjustCharHead(byte[]bytes, int p, int s, int end) { if (s <= p) return s; if ((s - p) % 2 == 1) s--; if (isSurrogateSecond(bytes[s] & 0xff) && s > p + 1) s -= 2; return s; } @Override public boolean isReverseMatchAllowed(byte[]bytes, int p, int end) { return false; } static final int UTF16EncLen[] = { 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 4, 4, 4, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2 }; private static boolean isSurrogateFirst(int c) { return (c & 0xfc) == 0xd8; } private static boolean isSurrogateSecond(int c) { return (c & 0xfc) == 0xdc; } private static boolean isSurrogate(int c) { return (c & 0xf8) == 0xd8; } public static final UTF16BEEncoding INSTANCE = new UTF16BEEncoding(); } jcodings-1.0.58/src/org/jcodings/specific/UTF16LEEncoding.java000066400000000000000000000127141433325321700237200ustar00rootroot00000000000000/* * Permission is hereby granted, free of charge, to any person obtaining a copy of * this software and associated documentation files (the "Software"), to deal in * the Software without restriction, including without limitation the rights to * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies * of the Software, and to permit persons to whom the Software is furnished to do * so, subject to the following conditions: * * The above copyright notice and this permission notice shall be included in all * copies or substantial portions of the Software. * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE * SOFTWARE. */ package org.jcodings.specific; import org.jcodings.Config; import org.jcodings.IntHolder; import org.jcodings.ascii.AsciiTables; import org.jcodings.unicode.UnicodeEncoding; public final class UTF16LEEncoding extends UnicodeEncoding { protected UTF16LEEncoding() { super("UTF-16LE", 2, 4, UTF16BEEncoding.UTF16EncLen); } @Override public int length(byte c) { return EncLen[(c & 0xff) + 1]; } @Override public int length(byte[]bytes, int p, int end) { int length = end - p; if (length < 2) return missing(1); int b = bytes[p + 1] & 0xff; if (!isSurrogate(b)) return 2; if (isSurrogateFirst(b)) { if (length < 4) return missing(4 - length); if (isSurrogateSecond(bytes[p + 3] & 0xff)) return 4; } return CHAR_INVALID; } @Override public boolean isNewLine(byte[]bytes, int p, int end) { if (p + 1 < end) { if (bytes[p] == (byte)0x0a && bytes[p + 1] == (byte)0x00) return true; if (Config.USE_UNICODE_ALL_LINE_TERMINATORS) { if ((!Config.USE_CRNL_AS_LINE_TERMINATOR && bytes[p] == (byte)0x0d) || bytes[p] == (byte)0x85 && bytes[p + 1] == (byte)0x00) return true; if (bytes[p + 1] == (byte)0x20 && (bytes[p] == (byte)0x29 || bytes[p] == (byte)0x28)) return true; } } return false; } @Override public int mbcToCode(byte[]bytes, int p, int end) { final int code; if (isSurrogateFirst(bytes[p + 1] & 0xff)) { int c0 = bytes[p] & 0xff; int c1 = bytes[p + 1] & 0xff; code = ((((c1 << 8) + c0) & 0x03ff) << 10) + ((((bytes[p + 3] & 0xff) << 8) + (bytes[p + 2] & 0xff)) & 0x03ff) + 0x10000; } else { code = (bytes[p + 1] & 0xff) * 256 + (bytes[p + 0] & 0xff); } return code; } @Override public int codeToMbcLength(int code) { return code > 0xffff ? 4 : 2; } @Override public int codeToMbc(int code, byte[]bytes, int p) { int p_ = p; if (code > 0xffff) { int high = (code >>> 10) + 0xd7c0; int low = (code & 0x3ff) + 0xdc00; bytes[p_++] = (byte)(high & 0xff); bytes[p_++] = (byte)((high >>> 8) & 0xff); bytes[p_++] = (byte)(low & 0xff); bytes[p_] = (byte)((low >>> 8) & 0xff); return 4; } else { bytes[p_++] = (byte)(code & 0xff); bytes[p_++] = (byte)((code & 0xff00) >>> 8); return 2; } } @Override public int mbcCaseFold(int flag, byte[]bytes, IntHolder pp, int end, byte[]fold) { int p = pp.value; int foldP = 0; if (isAscii(bytes[p] & 0xff) && bytes[p + 1] == 0) { if (Config.USE_UNICODE_CASE_FOLD_TURKISH_AZERI) { if ((flag & Config.CASE_FOLD_TURKISH_AZERI) != 0) { if (bytes[p] == (byte)0x49) { fold[foldP++] = (byte)0x01; fold[foldP] = (byte)0x31; pp.value += 2; return 2; } } } // USE_UNICODE_CASE_FOLD_TURKISH_AZERI fold[foldP++] = AsciiTables.ToLowerCaseTable[bytes[p] & 0xff]; fold[foldP] = 0; pp.value += 2; return 2; } else { return super.mbcCaseFold(flag, bytes, pp, end, fold); } } /** onigenc_utf16_32_get_ctype_code_range */ @Override public int[]ctypeCodeRange(int ctype, IntHolder sbOut) { sbOut.value = 0x00; return super.ctypeCodeRange(ctype); } @Override public int leftAdjustCharHead(byte[]bytes, int p, int s, int end) { if (s <= p) return s; if ((s - p) % 2 == 1) s--; if (isSurrogateSecond(bytes[s + 1] & 0xff) && s > p + 1) s -= 2; return s; } @Override public boolean isReverseMatchAllowed(byte[]bytes, int p, int end) { return false; } private static boolean isSurrogateFirst(int c) { return (c & 0xfc) == 0xd8; } private static boolean isSurrogateSecond(int c) { return (c & 0xfc) == 0xdc; } private static boolean isSurrogate(int c) { return (c & 0xf8) == 0xd8; } public static final UTF16LEEncoding INSTANCE = new UTF16LEEncoding(); } jcodings-1.0.58/src/org/jcodings/specific/UTF32BEEncoding.java000066400000000000000000000074021433325321700237020ustar00rootroot00000000000000/* * Permission is hereby granted, free of charge, to any person obtaining a copy of * this software and associated documentation files (the "Software"), to deal in * the Software without restriction, including without limitation the rights to * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies * of the Software, and to permit persons to whom the Software is furnished to do * so, subject to the following conditions: * * The above copyright notice and this permission notice shall be included in all * copies or substantial portions of the Software. * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE * SOFTWARE. */ package org.jcodings.specific; import org.jcodings.Config; import org.jcodings.IntHolder; import org.jcodings.ascii.AsciiTables; import org.jcodings.unicode.FixedWidthUnicodeEncoding; public final class UTF32BEEncoding extends FixedWidthUnicodeEncoding { protected UTF32BEEncoding() { super("UTF-32BE", 4); } @Override public boolean isNewLine(byte[]bytes, int p, int end) { if (p + 3 < end) { if (bytes[p + 3] == (byte)0x0a && bytes[p + 2] == 0 && bytes[p + 1] == 0 && bytes[p] == 0) return true; if (Config.USE_UNICODE_ALL_LINE_TERMINATORS) { if ((bytes[p + 3] == (byte)0x0b || bytes[p + 3] == (byte)0x0c || bytes[p + 3] == (byte)0x0d || bytes[p + 3] == (byte)0x85) && bytes[p + 2] == 0 && bytes[p + 1] == 0 && bytes[p] == 0) return true; if (bytes[p + 2] == (byte)0x20 && (bytes[p + 3] == (byte)0x29 || bytes[p + 3] == (byte)0x28) && bytes[p + 1] == 0 && bytes[p] == 0) return true; } // USE_UNICODE_ALL_LINE_TERMINATORS } return false; } @Override public int mbcToCode(byte[]bytes, int p, int end) { return (((bytes[p] & 0xff) * 256 + (bytes[p + 1] & 0xff)) * 256 + (bytes[p + 2] & 0xff)) * 256 + (bytes[p + 3] & 0xff); } @Override public int codeToMbc(int code, byte[]bytes, int p) { int p_ = p; bytes[p_++] = (byte)((code & 0xff000000) >>> 24); bytes[p_++] = (byte)((code & 0xff0000) >>> 16); bytes[p_++] = (byte)((code & 0xff00) >>> 8); bytes[p_++] = (byte) (code & 0xff); return 4; } @Override public int mbcCaseFold(int flag, byte[]bytes, IntHolder pp, int end, byte[]fold) { int p = pp.value; int foldP = 0; if (isAscii(bytes[p + 3] & 0xff) && bytes[p + 2] == 0 && bytes[p + 1] == 0 && bytes[p] == 0) { fold[foldP++] = 0; fold[foldP++] = 0; if (Config.USE_UNICODE_CASE_FOLD_TURKISH_AZERI) { if ((flag & Config.CASE_FOLD_TURKISH_AZERI) != 0) { if (bytes[p + 3] == (byte)0x49) { fold[foldP++] = (byte)0x01; fold[foldP] = (byte)0x31; pp.value += 4; return 4; } } } // USE_UNICODE_CASE_FOLD_TURKISH_AZERI fold[foldP++] = 0; fold[foldP] = AsciiTables.ToLowerCaseTable[bytes[p + 3] & 0xff]; pp.value += 4; return 4; } else { return super.mbcCaseFold(flag, bytes, pp, end, fold); } } public static UTF32BEEncoding INSTANCE = new UTF32BEEncoding(); } jcodings-1.0.58/src/org/jcodings/specific/UTF32LEEncoding.java000066400000000000000000000072531433325321700237200ustar00rootroot00000000000000/* * Permission is hereby granted, free of charge, to any person obtaining a copy of * this software and associated documentation files (the "Software"), to deal in * the Software without restriction, including without limitation the rights to * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies * of the Software, and to permit persons to whom the Software is furnished to do * so, subject to the following conditions: * * The above copyright notice and this permission notice shall be included in all * copies or substantial portions of the Software. * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE * SOFTWARE. */ package org.jcodings.specific; import org.jcodings.Config; import org.jcodings.IntHolder; import org.jcodings.ascii.AsciiTables; import org.jcodings.unicode.FixedWidthUnicodeEncoding; public final class UTF32LEEncoding extends FixedWidthUnicodeEncoding { protected UTF32LEEncoding() { super("UTF-32LE", 4); } @Override public boolean isNewLine(byte[]bytes, int p, int end) { if (p + 3 < end) { if (bytes[p + 3] == 0 && bytes[p + 2] == 0 && bytes[p + 1] == 0 && bytes[p] == (byte)0x0a) return true; if (Config.USE_UNICODE_ALL_LINE_TERMINATORS) { if (bytes[p + 3] == 0 && bytes[p + 2] == 0 && bytes[p + 1] == 0 && (bytes[p] == (byte)0x0b || bytes[p] == (byte)0x0c || bytes[p] == (byte)0x0d || bytes[p] == (byte)0x85)) return true; if (bytes[p + 3] == 0 && bytes[p + 2] == 0 && bytes[p + 1] == (byte)0x20 && (bytes[p] == (byte)0x29 || bytes[p] == (byte)0x28)) return true; } // USE_UNICODE_ALL_LINE_TERMINATORS } return false; } @Override public int mbcToCode(byte[]bytes, int p, int end) { return (((bytes[p + 3] & 0xff) * 256 + (bytes[p + 2] & 0xff)) * 256 + (bytes[p + 1] & 0xff)) * 256 + (bytes[p] & 0xff); } @Override public int codeToMbc(int code, byte[]bytes, int p) { int p_ = p; bytes[p_++] = (byte) (code & 0xff); bytes[p_++] = (byte)((code & 0xff00) >>> 8); bytes[p_++] = (byte)((code & 0xff0000) >>> 16); bytes[p_++] = (byte)((code & 0xff000000) >>> 24); return 4; } @Override public int mbcCaseFold(int flag, byte[]bytes, IntHolder pp, int end, byte[]fold) { int p = pp.value; int foldP = 0; if (isAscii(bytes[p] & 0xff) && bytes[p + 1] == 0 && bytes[p + 2] == 0 && bytes[p + 3] == 0) { if (Config.USE_UNICODE_CASE_FOLD_TURKISH_AZERI) { if ((flag & Config.CASE_FOLD_TURKISH_AZERI) != 0) { if (bytes[p] == (byte)0x49) { fold[foldP++] = (byte)0x31; fold[foldP++] = (byte)0x01; } } } else { fold[foldP++] = AsciiTables.ToLowerCaseTable[bytes[p] & 0xff]; fold[foldP++] = 0; } // USE_UNICODE_CASE_FOLD_TURKISH_AZERI fold[foldP++] = 0; fold[foldP] = 0; pp.value += 4; return 4; } else { return super.mbcCaseFold(flag, bytes, pp, end, fold); } } public static UTF32LEEncoding INSTANCE = new UTF32LEEncoding(); } jcodings-1.0.58/src/org/jcodings/specific/UTF8Encoding.java000066400000000000000000000266161433325321700234260ustar00rootroot00000000000000/* * Permission is hereby granted, free of charge, to any person obtaining a copy of * this software and associated documentation files (the "Software"), to deal in * the Software without restriction, including without limitation the rights to * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies * of the Software, and to permit persons to whom the Software is furnished to do * so, subject to the following conditions: * * The above copyright notice and this permission notice shall be included in all * copies or substantial portions of the Software. * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE * SOFTWARE. */ package org.jcodings.specific; public final class UTF8Encoding extends BaseUTF8Encoding { protected UTF8Encoding() { super(UTF8EncLen, UTF8Trans); } @Override public int length(byte[]bytes, int p, int end) { int b = bytes[p] & 0xff; if (b <= 127) return 1; int s = TransZero[b]; if (s < 0) return CHAR_INVALID; return lengthForTwoUptoFour(bytes, p, end, b, s); } private static final int UTF8EncLen[] = { 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 4, 4, 4, 4, 4, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 }; static final int UTF8Trans[][] = new int[][]{ { /* S0 0 1 2 3 4 5 6 7 8 9 a b c d e f */ /* 0 */ A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, /* 1 */ A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, /* 2 */ A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, /* 3 */ A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, /* 4 */ A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, /* 5 */ A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, /* 6 */ A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, /* 7 */ A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, /* 8 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, /* 9 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, /* a */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, /* b */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, /* c */ F, F, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* d */ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* e */ 2, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 4, 3, 3, /* f */ 5, 6, 6, 6, 7, F, F, F, F, F, F, F, F, F, F, F }, { /* S1 0 1 2 3 4 5 6 7 8 9 a b c d e f */ /* 0 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, /* 1 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, /* 2 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, /* 3 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, /* 4 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, /* 5 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, /* 6 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, /* 7 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, /* 8 */ A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, /* 9 */ A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, /* a */ A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, /* b */ A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, /* c */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, /* d */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, /* e */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, /* f */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F }, { /* S2 0 1 2 3 4 5 6 7 8 9 a b c d e f */ /* 0 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, /* 1 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, /* 2 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, /* 3 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, /* 4 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, /* 5 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, /* 6 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, /* 7 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, /* 8 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, /* 9 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, /* a */ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* b */ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* c */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, /* d */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, /* e */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, /* f */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F }, { /* S3 0 1 2 3 4 5 6 7 8 9 a b c d e f */ /* 0 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, /* 1 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, /* 2 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, /* 3 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, /* 4 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, /* 5 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, /* 6 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, /* 7 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, /* 8 */ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 9 */ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* a */ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* b */ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* c */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, /* d */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, /* e */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, /* f */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F }, { /* S4 0 1 2 3 4 5 6 7 8 9 a b c d e f */ /* 0 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, /* 1 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, /* 2 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, /* 3 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, /* 4 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, /* 5 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, /* 6 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, /* 7 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, /* 8 */ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 9 */ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* a */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, /* b */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, /* c */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, /* d */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, /* e */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, /* f */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F }, { /* S5 0 1 2 3 4 5 6 7 8 9 a b c d e f */ /* 0 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, /* 1 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, /* 2 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, /* 3 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, /* 4 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, /* 5 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, /* 6 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, /* 7 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, /* 8 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, /* 9 */ 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, /* a */ 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, /* b */ 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, /* c */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, /* d */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, /* e */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, /* f */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F }, { /* S6 0 1 2 3 4 5 6 7 8 9 a b c d e f */ /* 0 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, /* 1 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, /* 2 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, /* 3 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, /* 4 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, /* 5 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, /* 6 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, /* 7 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, /* 8 */ 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, /* 9 */ 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, /* a */ 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, /* b */ 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, /* c */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, /* d */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, /* e */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, /* f */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F }, { /* S7 0 1 2 3 4 5 6 7 8 9 a b c d e f */ /* 0 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, /* 1 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, /* 2 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, /* 3 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, /* 4 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, /* 5 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, /* 6 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, /* 7 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, /* 8 */ 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, /* 9 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, /* a */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, /* b */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, /* c */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, /* d */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, /* e */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, /* f */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F } }; public static final UTF8Encoding INSTANCE = new UTF8Encoding(); } jcodings-1.0.58/src/org/jcodings/specific/Windows_1250Encoding.java000066400000000000000000000255571433325321700250040ustar00rootroot00000000000000/* * Permission is hereby granted, free of charge, to any person obtaining a copy of * this software and associated documentation files (the "Software"), to deal in * the Software without restriction, including without limitation the rights to * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies * of the Software, and to permit persons to whom the Software is furnished to do * so, subject to the following conditions: * * The above copyright notice and this permission notice shall be included in all * copies or substantial portions of the Software. * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE * SOFTWARE. */ package org.jcodings.specific; import org.jcodings.CaseFoldMapEncoding; import org.jcodings.Config; import org.jcodings.ISOEncoding; import org.jcodings.IntHolder; import org.jcodings.constants.CharacterType; final public class Windows_1250Encoding extends CaseFoldMapEncoding { protected Windows_1250Encoding() { super("Windows-1250", CP1250_CtypeTable, CP1250_ToLowerCaseTable, CP1250_CaseFoldMap, true); } @Override public int caseMap(IntHolder flagP, byte[] bytes, IntHolder pp, int end, byte[] to, int toP, int toEnd) { int toStart = toP; int flags = flagP.value; while (pp.value < end && toP < toEnd) { int code = bytes[pp.value++] & 0xff; if (code == ISOEncoding.SHARP_s) { if ((flags & Config.CASE_UPCASE) != 0) { flags |= Config.CASE_MODIFIED; to[toP++] = 'S'; code = (flags & Config.CASE_TITLECASE) != 0 ? 's' : 'S'; } else if ((flags & Config.CASE_FOLD) != 0) { flags |= Config.CASE_MODIFIED; to[toP++] = 's'; code = 's'; } } else if ((CP1250_CtypeTable[code] & CharacterType.BIT_UPPER) != 0 && (flags & (Config.CASE_DOWNCASE | Config.CASE_FOLD)) != 0) { flags |= Config.CASE_MODIFIED; code = LowerCaseTable[code]; } else if (code == 0xB5) { } else if ((CP1250_CtypeTable[code] & CharacterType.BIT_LOWER) != 0 && (flags & Config.CASE_UPCASE) != 0) { flags |= Config.CASE_MODIFIED; if (code == 0xB9) code = 0xA5; else if (code == 0xBE) code = 0xBC; else if (code >= 0x8A && code <= 0xBF && code != 0xB9) code -= 0x10; else code -= 0x20; } to[toP++] = (byte)code; if ((flags & Config.CASE_TITLECASE) != 0) { flags ^= (Config.CASE_UPCASE | Config.CASE_DOWNCASE | Config.CASE_TITLECASE); } } flagP.value = flags; return toP - toStart; } @Override public int mbcCaseFold(int flag, byte[]bytes, IntHolder pp, int end, byte[]lower) { int p = pp.value; int lowerP = 0; lower[lowerP] = LowerCaseTable[bytes[p] & 0xff]; pp.value++; return 1; } @Override public boolean isCodeCType(int code, int ctype) { return code < 256 ? isCodeCTypeInternal(code, ctype) : false; } static final short CP1250_CtypeTable[] = { 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x420c, 0x4209, 0x4208, 0x4208, 0x4208, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4284, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x78b0, 0x78b0, 0x78b0, 0x78b0, 0x78b0, 0x78b0, 0x78b0, 0x78b0, 0x78b0, 0x78b0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x7ca2, 0x7ca2, 0x7ca2, 0x7ca2, 0x7ca2, 0x7ca2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x51a0, 0x41a0, 0x78e2, 0x78e2, 0x78e2, 0x78e2, 0x78e2, 0x78e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x4008, 0x00a0, 0x0000, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008,/* 8 */ 0x0008, 0x0008, 0x34a2, 0x0008, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x0000, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008,/* 9 */ 0x0008, 0x0008, 0x30e2, 0x0008, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x0284, 0x01a0, 0x00a0, 0x34a2, 0x00a0, 0x34a2, 0x00a0, 0x00a0,/* A */ 0x00a0, 0x00a0, 0x34a2, 0x01a0, 0x00a0, 0x01a0, 0x00a0, 0x34a2, 0x00a0, 0x00a0, 0x10a0, 0x30e2, 0x00a0, 0x30e2, 0x00a0, 0x01a0,/* B */ 0x00a0, 0x30e2, 0x30e2, 0x01a0, 0x34a2, 0x10a0, 0x30e2, 0x30e2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2,/* C */ 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x00a0,/* D */ 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2,/* E */ 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x00a0,/* F */ 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, }; static final byte CP1250_ToLowerCaseTable[] = new byte[]{ (byte)'\000', (byte)'\001', (byte)'\002', (byte)'\003', (byte)'\004', (byte)'\005', (byte)'\006', (byte)'\007', (byte)'\010', (byte)'\011', (byte)'\012', (byte)'\013', (byte)'\014', (byte)'\015', (byte)'\016', (byte)'\017', (byte)'\020', (byte)'\021', (byte)'\022', (byte)'\023', (byte)'\024', (byte)'\025', (byte)'\026', (byte)'\027', (byte)'\030', (byte)'\031', (byte)'\032', (byte)'\033', (byte)'\034', (byte)'\035', (byte)'\036', (byte)'\037', (byte)'\040', (byte)'\041', (byte)'\042', (byte)'\043', (byte)'\044', (byte)'\045', (byte)'\046', (byte)'\047', (byte)'\050', (byte)'\051', (byte)'\052', (byte)'\053', (byte)'\054', (byte)'\055', (byte)'\056', (byte)'\057', (byte)'\060', (byte)'\061', (byte)'\062', (byte)'\063', (byte)'\064', (byte)'\065', (byte)'\066', (byte)'\067', (byte)'\070', (byte)'\071', (byte)'\072', (byte)'\073', (byte)'\074', (byte)'\075', (byte)'\076', (byte)'\077', (byte)'\100', (byte)'\141', (byte)'\142', (byte)'\143', (byte)'\144', (byte)'\145', (byte)'\146', (byte)'\147', (byte)'\150', (byte)'\151', (byte)'\152', (byte)'\153', (byte)'\154', (byte)'\155', (byte)'\156', (byte)'\157', (byte)'\160', (byte)'\161', (byte)'\162', (byte)'\163', (byte)'\164', (byte)'\165', (byte)'\166', (byte)'\167', (byte)'\170', (byte)'\171', (byte)'\172', (byte)'\133', (byte)'\134', (byte)'\135', (byte)'\136', (byte)'\137', (byte)'\140', (byte)'\141', (byte)'\142', (byte)'\143', (byte)'\144', (byte)'\145', (byte)'\146', (byte)'\147', (byte)'\150', (byte)'\151', (byte)'\152', (byte)'\153', (byte)'\154', (byte)'\155', (byte)'\156', (byte)'\157', (byte)'\160', (byte)'\161', (byte)'\162', (byte)'\163', (byte)'\164', (byte)'\165', (byte)'\166', (byte)'\167', (byte)'\170', (byte)'\171', (byte)'\172', (byte)'\173', (byte)'\174', (byte)'\175', (byte)'\176', (byte)'\177', (byte)'\200', (byte)'\201', (byte)'\202', (byte)'\203', (byte)'\204', (byte)'\205', (byte)'\206', (byte)'\207', (byte)'\210', (byte)'\211', (byte)'\232', (byte)'\213', (byte)'\234', (byte)'\235', (byte)'\236', (byte)'\237', (byte)'\220', (byte)'\221', (byte)'\222', (byte)'\223', (byte)'\224', (byte)'\225', (byte)'\226', (byte)'\227', (byte)'\230', (byte)'\231', (byte)'\232', (byte)'\233', (byte)'\234', (byte)'\235', (byte)'\236', (byte)'\237', (byte)'\240', (byte)'\241', (byte)'\242', (byte)'\263', (byte)'\244', (byte)'\271', (byte)'\246', (byte)'\247', (byte)'\250', (byte)'\251', (byte)'\272', (byte)'\253', (byte)'\254', (byte)'\255', (byte)'\256', (byte)'\277', (byte)'\260', (byte)'\261', (byte)'\262', (byte)'\263', (byte)'\264', (byte)'\265', (byte)'\266', (byte)'\267', (byte)'\270', (byte)'\271', (byte)'\272', (byte)'\273', (byte)'\276', (byte)'\275', (byte)'\276', (byte)'\277', (byte)'\340', (byte)'\341', (byte)'\342', (byte)'\343', (byte)'\344', (byte)'\345', (byte)'\346', (byte)'\347', (byte)'\350', (byte)'\351', (byte)'\352', (byte)'\353', (byte)'\354', (byte)'\355', (byte)'\356', (byte)'\357', (byte)'\360', (byte)'\361', (byte)'\362', (byte)'\363', (byte)'\364', (byte)'\365', (byte)'\366', (byte)'\367', (byte)'\370', (byte)'\371', (byte)'\372', (byte)'\373', (byte)'\374', (byte)'\375', (byte)'\376', (byte)'\337', (byte)'\340', (byte)'\341', (byte)'\342', (byte)'\343', (byte)'\344', (byte)'\345', (byte)'\346', (byte)'\347', (byte)'\350', (byte)'\351', (byte)'\352', (byte)'\353', (byte)'\354', (byte)'\355', (byte)'\356', (byte)'\357', (byte)'\360', (byte)'\361', (byte)'\362', (byte)'\363', (byte)'\364', (byte)'\365', (byte)'\366', (byte)'\367', (byte)'\370', (byte)'\371', (byte)'\372', (byte)'\373', (byte)'\374', (byte)'\375', (byte)'\376', (byte)'\377' }; static final int CP1250_CaseFoldMap[][] = { { 0x8a, 0x9a }, { 0x8c, 0x9c }, { 0x8d, 0x9d }, { 0x8e, 0x9e }, { 0x8f, 0x9f }, { 0xa3, 0xb3 }, { 0xa5, 0xb9 }, { 0xaa, 0xba }, { 0xaf, 0xbf }, { 0xbc, 0xbe }, { 0xc0, 0xe0 }, { 0xc1, 0xe1 }, { 0xc2, 0xe2 }, { 0xc3, 0xe3 }, { 0xc4, 0xe4 }, { 0xc5, 0xe5 }, { 0xc6, 0xe6 }, { 0xc7, 0xe7 }, { 0xc8, 0xe8 }, { 0xc9, 0xe9 }, { 0xca, 0xea }, { 0xcb, 0xeb }, { 0xcc, 0xec }, { 0xcd, 0xed }, { 0xce, 0xee }, { 0xcf, 0xef }, { 0xd0, 0xf0 }, { 0xd1, 0xf1 }, { 0xd2, 0xf2 }, { 0xd3, 0xf3 }, { 0xd4, 0xf4 }, { 0xd5, 0xf5 }, { 0xd6, 0xf6 }, { 0xd8, 0xf8 }, { 0xd9, 0xf9 }, { 0xda, 0xfa }, { 0xdb, 0xfb }, { 0xdc, 0xfc }, { 0xdd, 0xfd }, { 0xde, 0xfe }, }; public static final Windows_1250Encoding INSTANCE = new Windows_1250Encoding(); } jcodings-1.0.58/src/org/jcodings/specific/Windows_1251Encoding.java000066400000000000000000000245661433325321700250040ustar00rootroot00000000000000/* * Permission is hereby granted, free of charge, to any person obtaining a copy of * this software and associated documentation files (the "Software"), to deal in * the Software without restriction, including without limitation the rights to * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies * of the Software, and to permit persons to whom the Software is furnished to do * so, subject to the following conditions: * * The above copyright notice and this permission notice shall be included in all * copies or substantial portions of the Software. * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE * SOFTWARE. */ package org.jcodings.specific; import org.jcodings.CaseFoldMapEncoding; import org.jcodings.Config; import org.jcodings.ISOEncoding; import org.jcodings.IntHolder; import org.jcodings.constants.CharacterType; final public class Windows_1251Encoding extends CaseFoldMapEncoding { protected Windows_1251Encoding() { super("Windows-1251", CP1251_CtypeTable, CP1251_ToLowerCaseTable, CP1251_CaseFoldMap, false); } @Override public int caseMap(IntHolder flagP, byte[] bytes, IntHolder pp, int end, byte[] to, int toP, int toEnd) { int toStart = toP; int flags = flagP.value; while (pp.value < end && toP < toEnd) { int code = bytes[pp.value++] & 0xff; if ((CP1251_CtypeTable[code] & CharacterType.BIT_UPPER) != 0 && (flags & (Config.CASE_DOWNCASE | Config.CASE_FOLD)) != 0) { flags |= Config.CASE_MODIFIED; code = LowerCaseTable[code]; } else if (code == 0xB5) { } else if ((CP1251_CtypeTable[code] & CharacterType.BIT_LOWER) != 0 && (flags & Config.CASE_UPCASE) != 0) { flags |= Config.CASE_MODIFIED; if ((0x61 <= code && code <= 0x7A) || (0xE0 <= code && code <= 0xFF)) code -= 0x20; else if (code == 0xA2 || code == 0xB3 || code == 0xBE) code -= 0x01; else if (code == 0x83) code = 0x81; else if (code == 0xBC) code = 0xA3; else if (code == 0xB4) code = 0xA5; else code -= 0x10; } to[toP++] = (byte)code; if ((flags & Config.CASE_TITLECASE) != 0) { flags ^= (Config.CASE_UPCASE | Config.CASE_DOWNCASE | Config.CASE_TITLECASE); } } flagP.value = flags; return toP - toStart; } @Override public int mbcCaseFold(int flag, byte[]bytes, IntHolder pp, int end, byte[]lower) { int p = pp.value; int lowerP = 0; lower[lowerP] = LowerCaseTable[bytes[p] & 0xff]; pp.value++; return 1; } @Override public boolean isCodeCType(int code, int ctype) { return code < 256 ? isCodeCTypeInternal(code, ctype) : false; } static final short CP1251_CtypeTable[] = { 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x428c, 0x4209, 0x4208, 0x4208, 0x4208, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4284, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x78b0, 0x78b0, 0x78b0, 0x78b0, 0x78b0, 0x78b0, 0x78b0, 0x78b0, 0x78b0, 0x78b0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x7ca2, 0x7ca2, 0x7ca2, 0x7ca2, 0x7ca2, 0x7ca2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x51a0, 0x41a0, 0x78e2, 0x78e2, 0x78e2, 0x78e2, 0x78e2, 0x78e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x4008, 0x34a2, 0x34a2, 0x01a0, 0x30e2, 0x01a0, 0x01a0, 0x01a0, 0x01a0, 0x0000, 0x01a0, 0x34a2, 0x01a0, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x30e2, 0x01a0, 0x01a0, 0x01a0, 0x01a0, 0x01a0, 0x01a0, 0x01a0, 0x0008, 0x0000, 0x30e2, 0x01a0, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x0280, 0x34a2, 0x30e2, 0x34a2, 0x01a0, 0x34a2, 0x01a0, 0x01a0, 0x34a2, 0x01a0, 0x34a2, 0x01a0, 0x01a0, 0x01a0, 0x01a0, 0x34a2, 0x01a0, 0x01a0, 0x34a2, 0x30e2, 0x30e2, 0x31e2, 0x01a0, 0x01a0, 0x30e2, 0x0000, 0x30e2, 0x01a0, 0x30e2, 0x34a2, 0x30e2, 0x30e2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2 }; static final byte CP1251_ToLowerCaseTable[] = new byte[]{ (byte)'\000', (byte)'\001', (byte)'\002', (byte)'\003', (byte)'\004', (byte)'\005', (byte)'\006', (byte)'\007', (byte)'\010', (byte)'\011', (byte)'\012', (byte)'\013', (byte)'\014', (byte)'\015', (byte)'\016', (byte)'\017', (byte)'\020', (byte)'\021', (byte)'\022', (byte)'\023', (byte)'\024', (byte)'\025', (byte)'\026', (byte)'\027', (byte)'\030', (byte)'\031', (byte)'\032', (byte)'\033', (byte)'\034', (byte)'\035', (byte)'\036', (byte)'\037', (byte)'\040', (byte)'\041', (byte)'\042', (byte)'\043', (byte)'\044', (byte)'\045', (byte)'\046', (byte)'\047', (byte)'\050', (byte)'\051', (byte)'\052', (byte)'\053', (byte)'\054', (byte)'\055', (byte)'\056', (byte)'\057', (byte)'\060', (byte)'\061', (byte)'\062', (byte)'\063', (byte)'\064', (byte)'\065', (byte)'\066', (byte)'\067', (byte)'\070', (byte)'\071', (byte)'\072', (byte)'\073', (byte)'\074', (byte)'\075', (byte)'\076', (byte)'\077', (byte)'\100', (byte)'\141', (byte)'\142', (byte)'\143', (byte)'\144', (byte)'\145', (byte)'\146', (byte)'\147', (byte)'\150', (byte)'\151', (byte)'\152', (byte)'\153', (byte)'\154', (byte)'\155', (byte)'\156', (byte)'\157', (byte)'\160', (byte)'\161', (byte)'\162', (byte)'\163', (byte)'\164', (byte)'\165', (byte)'\166', (byte)'\167', (byte)'\170', (byte)'\171', (byte)'\172', (byte)'\133', (byte)'\134', (byte)'\135', (byte)'\136', (byte)'\137', (byte)'\140', (byte)'\141', (byte)'\142', (byte)'\143', (byte)'\144', (byte)'\145', (byte)'\146', (byte)'\147', (byte)'\150', (byte)'\151', (byte)'\152', (byte)'\153', (byte)'\154', (byte)'\155', (byte)'\156', (byte)'\157', (byte)'\160', (byte)'\161', (byte)'\162', (byte)'\163', (byte)'\164', (byte)'\165', (byte)'\166', (byte)'\167', (byte)'\170', (byte)'\171', (byte)'\172', (byte)'\173', (byte)'\174', (byte)'\175', (byte)'\176', (byte)'\177', (byte)'\220', (byte)'\203', (byte)'\202', (byte)'\203', (byte)'\204', (byte)'\205', (byte)'\206', (byte)'\207', (byte)'\210', (byte)'\211', (byte)'\232', (byte)'\213', (byte)'\234', (byte)'\235', (byte)'\236', (byte)'\237', (byte)'\220', (byte)'\221', (byte)'\222', (byte)'\223', (byte)'\224', (byte)'\225', (byte)'\226', (byte)'\227', (byte)'\230', (byte)'\231', (byte)'\232', (byte)'\233', (byte)'\234', (byte)'\235', (byte)'\236', (byte)'\237', (byte)'\240', (byte)'\242', (byte)'\242', (byte)'\274', (byte)'\244', (byte)'\264', (byte)'\246', (byte)'\247', (byte)'\270', (byte)'\251', (byte)'\272', (byte)'\253', (byte)'\254', (byte)'\255', (byte)'\256', (byte)'\277', (byte)'\260', (byte)'\261', (byte)'\263', (byte)'\263', (byte)'\264', (byte)'\265', (byte)'\266', (byte)'\267', (byte)'\270', (byte)'\271', (byte)'\272', (byte)'\273', (byte)'\274', (byte)'\276', (byte)'\276', (byte)'\277', (byte)'\340', (byte)'\341', (byte)'\342', (byte)'\343', (byte)'\344', (byte)'\345', (byte)'\346', (byte)'\347', (byte)'\350', (byte)'\351', (byte)'\352', (byte)'\353', (byte)'\354', (byte)'\355', (byte)'\356', (byte)'\357', (byte)'\360', (byte)'\361', (byte)'\362', (byte)'\363', (byte)'\364', (byte)'\365', (byte)'\366', (byte)'\367', (byte)'\370', (byte)'\371', (byte)'\372', (byte)'\373', (byte)'\374', (byte)'\375', (byte)'\376', (byte)'\377', (byte)'\340', (byte)'\341', (byte)'\342', (byte)'\343', (byte)'\344', (byte)'\345', (byte)'\346', (byte)'\347', (byte)'\350', (byte)'\351', (byte)'\352', (byte)'\353', (byte)'\354', (byte)'\355', (byte)'\356', (byte)'\357', (byte)'\360', (byte)'\361', (byte)'\362', (byte)'\363', (byte)'\364', (byte)'\365', (byte)'\366', (byte)'\367', (byte)'\370', (byte)'\371', (byte)'\372', (byte)'\373', (byte)'\374', (byte)'\375', (byte)'\376', (byte)'\377' }; static final int CP1251_CaseFoldMap[][] = { { 0xb8, 0xa8 }, { 0xe0, 0xc0 }, { 0xe1, 0xc1 }, { 0xe2, 0xc2 }, { 0xe3, 0xc3 }, { 0xe4, 0xc4 }, { 0xe5, 0xc5 }, { 0xe6, 0xc6 }, { 0xe7, 0xc7 }, { 0xe8, 0xc8 }, { 0xe9, 0xc9 }, { 0xea, 0xca }, { 0xeb, 0xcb }, { 0xec, 0xcc }, { 0xed, 0xcd }, { 0xee, 0xce }, { 0xef, 0xcf }, { 0xf0, 0xd0 }, { 0xf1, 0xd1 }, { 0xf2, 0xd2 }, { 0xf3, 0xd3 }, { 0xf4, 0xd4 }, { 0xf5, 0xd5 }, { 0xf6, 0xd6 }, { 0xf7, 0xd7 }, { 0xf8, 0xd8 }, { 0xf9, 0xd9 }, { 0xfa, 0xda }, { 0xfb, 0xdb }, { 0xfc, 0xdc }, { 0xfd, 0xdd }, { 0xfe, 0xde }, { 0xff, 0xdf } }; public static final Windows_1251Encoding INSTANCE = new Windows_1251Encoding(); } jcodings-1.0.58/src/org/jcodings/specific/Windows_1252Encoding.java000066400000000000000000000252161433325321700247760ustar00rootroot00000000000000/* * Permission is hereby granted, free of charge, to any person obtaining a copy of * this software and associated documentation files (the "Software"), to deal in * the Software without restriction, including without limitation the rights to * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies * of the Software, and to permit persons to whom the Software is furnished to do * so, subject to the following conditions: * * The above copyright notice and this permission notice shall be included in all * copies or substantial portions of the Software. * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE * SOFTWARE. */ package org.jcodings.specific; import org.jcodings.CaseFoldMapEncoding; import org.jcodings.Config; import org.jcodings.ISOEncoding; import org.jcodings.IntHolder; import org.jcodings.constants.CharacterType; final public class Windows_1252Encoding extends CaseFoldMapEncoding { protected Windows_1252Encoding() { super("Windows-1252", CP1252_CtypeTable, CP1252_ToLowerCaseTable, CP1252_CaseFoldMap, true); } @Override public int caseMap(IntHolder flagP, byte[] bytes, IntHolder pp, int end, byte[] to, int toP, int toEnd) { int toStart = toP; int flags = flagP.value; while (pp.value < end && toP < toEnd) { int code = bytes[pp.value++] & 0xff; if (code == ISOEncoding.SHARP_s) { if ((flags & Config.CASE_UPCASE) != 0) { flags |= Config.CASE_MODIFIED; to[toP++] = 'S'; code = (flags & Config.CASE_TITLECASE) != 0 ? 's' : 'S'; } else if ((flags & Config.CASE_FOLD) != 0) { flags |= Config.CASE_MODIFIED; to[toP++] = 's'; code = 's'; } } else if ((CP1252_CtypeTable[code] & CharacterType.BIT_UPPER) != 0 && (flags & (Config.CASE_DOWNCASE | Config.CASE_FOLD)) != 0) { flags |= Config.CASE_MODIFIED; code = LowerCaseTable[code]; } else if (code == 0x83 || code == 0xAA || code == 0xBA || code == 0xB5) { } else if ((CP1252_CtypeTable[code] & CharacterType.BIT_LOWER) != 0 && (flags & Config.CASE_UPCASE) != 0) { flags |= Config.CASE_MODIFIED; if (code == 0x9A || code == 0x9C || code == 0x9E) code -= 0x10; else if (code == 0xFF) code -= 0x60; else code -= 0x20; } to[toP++] = (byte)code; if ((flags & Config.CASE_TITLECASE) != 0) { flags ^= (Config.CASE_UPCASE | Config.CASE_DOWNCASE | Config.CASE_TITLECASE); } } flagP.value = flags; return toP - toStart; } @Override public int mbcCaseFold(int flag, byte[]bytes, IntHolder pp, int end, byte[]lower) { int p = pp.value; int lowerP = 0; lower[lowerP] = LowerCaseTable[bytes[p] & 0xff]; pp.value++; return 1; } @Override public boolean isCodeCType(int code, int ctype) { return code < 256 ? isCodeCTypeInternal(code, ctype) : false; } static final short CP1252_CtypeTable[] = { 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x420c, 0x4209, 0x4208, 0x4208, 0x4208, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4284, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x78b0, 0x78b0, 0x78b0, 0x78b0, 0x78b0, 0x78b0, 0x78b0, 0x78b0, 0x78b0, 0x78b0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x7ca2, 0x7ca2, 0x7ca2, 0x7ca2, 0x7ca2, 0x7ca2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x51a0, 0x41a0, 0x78e2, 0x78e2, 0x78e2, 0x78e2, 0x78e2, 0x78e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x4008, 0x00a0, 0x0000, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x34a2, 0x0008, 0x34a2, 0x0000, 0x34a2, 0x0000, 0x0000, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x30e2, 0x0008, 0x30e2, 0x0000, 0x30e2, 0x34a2, 0x0284, 0x01a0, 0x00a0, 0x00a0, 0x00a0, 0x00a0, 0x00a0, 0x00a0, 0x00a0, 0x00a0, 0x30e2, 0x01a0, 0x00a0, 0x01a0, 0x00a0, 0x00a0, 0x00a0, 0x00a0, 0x10a0, 0x10a0, 0x00a0, 0x30e2, 0x00a0, 0x01a0, 0x00a0, 0x10a0, 0x30e2, 0x01a0, 0x10a0, 0x10a0, 0x10a0, 0x01a0, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x00a0, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x00a0, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, }; static final byte CP1252_ToLowerCaseTable[] = new byte[]{ (byte)'\000', (byte)'\001', (byte)'\002', (byte)'\003', (byte)'\004', (byte)'\005', (byte)'\006', (byte)'\007', (byte)'\010', (byte)'\011', (byte)'\012', (byte)'\013', (byte)'\014', (byte)'\015', (byte)'\016', (byte)'\017', (byte)'\020', (byte)'\021', (byte)'\022', (byte)'\023', (byte)'\024', (byte)'\025', (byte)'\026', (byte)'\027', (byte)'\030', (byte)'\031', (byte)'\032', (byte)'\033', (byte)'\034', (byte)'\035', (byte)'\036', (byte)'\037', (byte)'\040', (byte)'\041', (byte)'\042', (byte)'\043', (byte)'\044', (byte)'\045', (byte)'\046', (byte)'\047', (byte)'\050', (byte)'\051', (byte)'\052', (byte)'\053', (byte)'\054', (byte)'\055', (byte)'\056', (byte)'\057', (byte)'\060', (byte)'\061', (byte)'\062', (byte)'\063', (byte)'\064', (byte)'\065', (byte)'\066', (byte)'\067', (byte)'\070', (byte)'\071', (byte)'\072', (byte)'\073', (byte)'\074', (byte)'\075', (byte)'\076', (byte)'\077', (byte)'\100', (byte)'\141', (byte)'\142', (byte)'\143', (byte)'\144', (byte)'\145', (byte)'\146', (byte)'\147', (byte)'\150', (byte)'\151', (byte)'\152', (byte)'\153', (byte)'\154', (byte)'\155', (byte)'\156', (byte)'\157', (byte)'\160', (byte)'\161', (byte)'\162', (byte)'\163', (byte)'\164', (byte)'\165', (byte)'\166', (byte)'\167', (byte)'\170', (byte)'\171', (byte)'\172', (byte)'\133', (byte)'\134', (byte)'\135', (byte)'\136', (byte)'\137', (byte)'\140', (byte)'\141', (byte)'\142', (byte)'\143', (byte)'\144', (byte)'\145', (byte)'\146', (byte)'\147', (byte)'\150', (byte)'\151', (byte)'\152', (byte)'\153', (byte)'\154', (byte)'\155', (byte)'\156', (byte)'\157', (byte)'\160', (byte)'\161', (byte)'\162', (byte)'\163', (byte)'\164', (byte)'\165', (byte)'\166', (byte)'\167', (byte)'\170', (byte)'\171', (byte)'\172', (byte)'\173', (byte)'\174', (byte)'\175', (byte)'\176', (byte)'\177', (byte)'\200', (byte)'\201', (byte)'\202', (byte)'\203', (byte)'\204', (byte)'\205', (byte)'\206', (byte)'\207', (byte)'\210', (byte)'\211', (byte)'\232', (byte)'\213', (byte)'\234', (byte)'\215', (byte)'\236', (byte)'\217', (byte)'\220', (byte)'\221', (byte)'\222', (byte)'\223', (byte)'\224', (byte)'\225', (byte)'\226', (byte)'\227', (byte)'\230', (byte)'\231', (byte)'\232', (byte)'\233', (byte)'\234', (byte)'\235', (byte)'\236', (byte)'\377', (byte)'\240', (byte)'\241', (byte)'\242', (byte)'\243', (byte)'\244', (byte)'\245', (byte)'\246', (byte)'\247', (byte)'\250', (byte)'\251', (byte)'\252', (byte)'\253', (byte)'\254', (byte)'\255', (byte)'\256', (byte)'\277', (byte)'\260', (byte)'\261', (byte)'\262', (byte)'\263', (byte)'\264', (byte)'\265', (byte)'\266', (byte)'\267', (byte)'\270', (byte)'\271', (byte)'\272', (byte)'\273', (byte)'\274', (byte)'\275', (byte)'\276', (byte)'\277', (byte)'\340', (byte)'\341', (byte)'\342', (byte)'\343', (byte)'\344', (byte)'\345', (byte)'\346', (byte)'\347', (byte)'\350', (byte)'\351', (byte)'\352', (byte)'\353', (byte)'\354', (byte)'\355', (byte)'\356', (byte)'\357', (byte)'\360', (byte)'\361', (byte)'\362', (byte)'\363', (byte)'\364', (byte)'\365', (byte)'\366', (byte)'\367', (byte)'\370', (byte)'\371', (byte)'\372', (byte)'\373', (byte)'\374', (byte)'\375', (byte)'\376', (byte)'\337', (byte)'\340', (byte)'\341', (byte)'\342', (byte)'\343', (byte)'\344', (byte)'\345', (byte)'\346', (byte)'\347', (byte)'\350', (byte)'\351', (byte)'\352', (byte)'\353', (byte)'\354', (byte)'\355', (byte)'\356', (byte)'\357', (byte)'\360', (byte)'\361', (byte)'\362', (byte)'\363', (byte)'\364', (byte)'\365', (byte)'\366', (byte)'\367', (byte)'\370', (byte)'\371', (byte)'\372', (byte)'\373', (byte)'\374', (byte)'\375', (byte)'\376', (byte)'\377' }; static final int CP1252_CaseFoldMap[][] = { { 0x8a, 0x9a }, { 0x8c, 0x9c }, { 0x8e, 0x9e }, { 0x9f, 0xff }, { 0xc0, 0xe0 }, { 0xc1, 0xe1 }, { 0xc2, 0xe2 }, { 0xc3, 0xe3 }, { 0xc4, 0xe4 }, { 0xc5, 0xe5 }, { 0xc6, 0xe6 }, { 0xc7, 0xe7 }, { 0xc8, 0xe8 }, { 0xc9, 0xe9 }, { 0xca, 0xea }, { 0xcb, 0xeb }, { 0xcc, 0xec }, { 0xcd, 0xed }, { 0xce, 0xee }, { 0xcf, 0xef }, { 0xd0, 0xf0 }, { 0xd1, 0xf1 }, { 0xd2, 0xf2 }, { 0xd3, 0xf3 }, { 0xd4, 0xf4 }, { 0xd5, 0xf5 }, { 0xd6, 0xf6 }, { 0xd8, 0xf8 }, { 0xd9, 0xf9 }, { 0xda, 0xfa }, { 0xdb, 0xfb }, { 0xdc, 0xfc }, { 0xdd, 0xfd }, { 0xde, 0xfe }, }; public static final Windows_1252Encoding INSTANCE = new Windows_1252Encoding(); } jcodings-1.0.58/src/org/jcodings/specific/Windows_1253Encoding.java000066400000000000000000000257671433325321700250120ustar00rootroot00000000000000/* * Permission is hereby granted, free of charge, to any person obtaining a copy of * this software and associated documentation files (the "Software"), to deal in * the Software without restriction, including without limitation the rights to * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies * of the Software, and to permit persons to whom the Software is furnished to do * so, subject to the following conditions: * * The above copyright notice and this permission notice shall be included in all * copies or substantial portions of the Software. * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE * SOFTWARE. */ package org.jcodings.specific; import org.jcodings.CaseFoldMapEncoding; import org.jcodings.Config; import org.jcodings.IntHolder; import org.jcodings.constants.CharacterType; final public class Windows_1253Encoding extends CaseFoldMapEncoding { protected Windows_1253Encoding() { super("Windows-1253", CP1253_CtypeTable, CP1253_ToLowerCaseTable, CP1253_CaseFoldMap, true); } @Override public int caseMap(IntHolder flagP, byte[] bytes, IntHolder pp, int end, byte[] to, int toP, int toEnd) { int toStart = toP; int flags = flagP.value; while (pp.value < end && toP < toEnd) { int code = bytes[pp.value++] & 0xff; if (code == 0xF2) { if ((flags & Config.CASE_UPCASE) != 0) { flags |= Config.CASE_MODIFIED; code = 0xD3; } else if ((flags & Config.CASE_FOLD) != 0) { flags |= Config.CASE_MODIFIED; code = 0xF3; } } else if (code == 0xB5) { if ((flags & Config.CASE_UPCASE) != 0) { flags |= Config.CASE_MODIFIED; code = 0xCC; } else if ((flags & Config.CASE_FOLD) != 0) { flags |= Config.CASE_MODIFIED; code = 0xEC; } } else if (code == 0xC0 || code == 0xE0 || code == 0xB6) { } else if ((CP1253_CtypeTable[code] & CharacterType.BIT_UPPER) != 0 && (flags & (Config.CASE_DOWNCASE | Config.CASE_FOLD)) != 0) { flags |= Config.CASE_MODIFIED; code = LowerCaseTable[code]; } else if (code == 0xC0 || code == 0xE0) { } else if ((CP1253_CtypeTable[code] & CharacterType.BIT_LOWER) != 0 && (flags & Config.CASE_UPCASE) != 0) { flags |= Config.CASE_MODIFIED; if (code == 0xDC) code = 0xA2; else if (code >= 0xDD && code <= 0xDF) code -= 0x25; else if (code == 0xFC) code = 0xBC; else if (code == 0xFD || code == 0xFE) code -= 0x3F; else code -= 0x20; } to[toP++] = (byte)code; if ((flags & Config.CASE_TITLECASE) != 0) { flags ^= (Config.CASE_UPCASE | Config.CASE_DOWNCASE | Config.CASE_TITLECASE); } } flagP.value = flags; return toP - toStart; } @Override public int mbcCaseFold(int flag, byte[]bytes, IntHolder pp, int end, byte[]lower) { int p = pp.value; int lowerP = 0; lower[lowerP] = LowerCaseTable[bytes[p] & 0xff]; pp.value++; return 1; } @Override public boolean isCodeCType(int code, int ctype) { return code < 256 ? isCodeCTypeInternal(code, ctype) : false; } static final short CP1253_CtypeTable[] = { 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x420c, 0x4209, 0x4208, 0x4208, 0x4208, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4284, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x78b0, 0x78b0, 0x78b0, 0x78b0, 0x78b0, 0x78b0, 0x78b0, 0x78b0, 0x78b0, 0x78b0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x7ca2, 0x7ca2, 0x7ca2, 0x7ca2, 0x7ca2, 0x7ca2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x51a0, 0x41a0, 0x78e2, 0x78e2, 0x78e2, 0x78e2, 0x78e2, 0x78e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x4008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0284, 0x01a0, 0x34a2, 0x00a0, 0x0000, 0x0000, 0x00a0, 0x00a0, 0x00a0, 0x00a0, 0x0000, 0x01a0, 0x00a0, 0x01a0, 0x0000, 0x01a0, 0x00a0, 0x00a0, 0x10a0, 0x10a0, 0x00a0, 0x30e2, 0x34a2, 0x01a0, 0x34a2, 0x34a2, 0x34a2, 0x01a0, 0x34a2, 0x10a0, 0x34a2, 0x34a2, 0x30e2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x0000, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x0000 }; static final byte CP1253_ToLowerCaseTable[] = new byte[]{ (byte)'\000', (byte)'\001', (byte)'\002', (byte)'\003', (byte)'\004', (byte)'\005', (byte)'\006', (byte)'\007', (byte)'\010', (byte)'\011', (byte)'\012', (byte)'\013', (byte)'\014', (byte)'\015', (byte)'\016', (byte)'\017', (byte)'\020', (byte)'\021', (byte)'\022', (byte)'\023', (byte)'\024', (byte)'\025', (byte)'\026', (byte)'\027', (byte)'\030', (byte)'\031', (byte)'\032', (byte)'\033', (byte)'\034', (byte)'\035', (byte)'\036', (byte)'\037', (byte)'\040', (byte)'\041', (byte)'\042', (byte)'\043', (byte)'\044', (byte)'\045', (byte)'\046', (byte)'\047', (byte)'\050', (byte)'\051', (byte)'\052', (byte)'\053', (byte)'\054', (byte)'\055', (byte)'\056', (byte)'\057', (byte)'\060', (byte)'\061', (byte)'\062', (byte)'\063', (byte)'\064', (byte)'\065', (byte)'\066', (byte)'\067', (byte)'\070', (byte)'\071', (byte)'\072', (byte)'\073', (byte)'\074', (byte)'\075', (byte)'\076', (byte)'\077', (byte)'\100', (byte)'\141', (byte)'\142', (byte)'\143', (byte)'\144', (byte)'\145', (byte)'\146', (byte)'\147', (byte)'\150', (byte)'\151', (byte)'\152', (byte)'\153', (byte)'\154', (byte)'\155', (byte)'\156', (byte)'\157', (byte)'\160', (byte)'\161', (byte)'\162', (byte)'\163', (byte)'\164', (byte)'\165', (byte)'\166', (byte)'\167', (byte)'\170', (byte)'\171', (byte)'\172', (byte)'\133', (byte)'\134', (byte)'\135', (byte)'\136', (byte)'\137', (byte)'\140', (byte)'\141', (byte)'\142', (byte)'\143', (byte)'\144', (byte)'\145', (byte)'\146', (byte)'\147', (byte)'\150', (byte)'\151', (byte)'\152', (byte)'\153', (byte)'\154', (byte)'\155', (byte)'\156', (byte)'\157', (byte)'\160', (byte)'\161', (byte)'\162', (byte)'\163', (byte)'\164', (byte)'\165', (byte)'\166', (byte)'\167', (byte)'\170', (byte)'\171', (byte)'\172', (byte)'\173', (byte)'\174', (byte)'\175', (byte)'\176', (byte)'\177', (byte)'\200', (byte)'\201', (byte)'\202', (byte)'\203', (byte)'\204', (byte)'\205', (byte)'\206', (byte)'\207', (byte)'\210', (byte)'\211', (byte)'\212', (byte)'\213', (byte)'\214', (byte)'\215', (byte)'\216', (byte)'\217', (byte)'\220', (byte)'\221', (byte)'\222', (byte)'\223', (byte)'\224', (byte)'\225', (byte)'\226', (byte)'\227', (byte)'\230', (byte)'\231', (byte)'\232', (byte)'\233', (byte)'\234', (byte)'\235', (byte)'\236', (byte)'\237', (byte)'\240', (byte)'\241', (byte)'\334', (byte)'\243', (byte)'\244', (byte)'\245', (byte)'\246', (byte)'\247', (byte)'\250', (byte)'\251', (byte)'\252', (byte)'\253', (byte)'\254', (byte)'\255', (byte)'\256', (byte)'\257', (byte)'\260', (byte)'\261', (byte)'\262', (byte)'\263', (byte)'\264', (byte)'\354', (byte)'\334', (byte)'\267', (byte)'\335', (byte)'\336', (byte)'\337', (byte)'\273', (byte)'\374', (byte)'\275', (byte)'\375', (byte)'\376', (byte)'\300', (byte)'\341', (byte)'\342', (byte)'\343', (byte)'\344', (byte)'\345', (byte)'\346', (byte)'\347', (byte)'\350', (byte)'\351', (byte)'\352', (byte)'\353', (byte)'\354', (byte)'\355', (byte)'\356', (byte)'\357', (byte)'\360', (byte)'\361', (byte)'\322', (byte)'\363', (byte)'\364', (byte)'\365', (byte)'\366', (byte)'\367', (byte)'\370', (byte)'\371', (byte)'\372', (byte)'\373', (byte)'\334', (byte)'\335', (byte)'\336', (byte)'\337', (byte)'\340', (byte)'\341', (byte)'\342', (byte)'\343', (byte)'\344', (byte)'\345', (byte)'\346', (byte)'\347', (byte)'\350', (byte)'\351', (byte)'\352', (byte)'\353', (byte)'\354', (byte)'\355', (byte)'\356', (byte)'\357', (byte)'\360', (byte)'\361', (byte)'\362', (byte)'\363', (byte)'\364', (byte)'\365', (byte)'\366', (byte)'\367', (byte)'\370', (byte)'\371', (byte)'\372', (byte)'\373', (byte)'\374', (byte)'\375', (byte)'\376', (byte)'\377' }; static final int CP1253_CaseFoldMap[][] = { { 0xb6, 0xdc }, { 0xb8, 0xdd }, { 0xb9, 0xde }, { 0xba, 0xdf }, { 0xbc, 0xfc }, { 0xbe, 0xfd }, { 0xbf, 0xfe }, { 0xc1, 0xe1 }, { 0xc2, 0xe2 }, { 0xc3, 0xe3 }, { 0xc4, 0xe4 }, { 0xc5, 0xe5 }, { 0xc6, 0xe6 }, { 0xc7, 0xe7 }, { 0xc8, 0xe8 }, { 0xc9, 0xe9 }, { 0xca, 0xea }, { 0xcb, 0xeb }, { 0xcc, 0xec }, { 0xcd, 0xed }, { 0xce, 0xee }, { 0xcf, 0xef }, { 0xd0, 0xf0 }, { 0xd1, 0xf1 }, { 0xd2, 0xf2 }, { 0xd3, 0xf3 }, { 0xd4, 0xf4 }, { 0xd5, 0xf5 }, { 0xd6, 0xf6 }, { 0xd7, 0xf7 }, { 0xd8, 0xf8 }, { 0xd9, 0xf9 }, { 0xda, 0xfa }, { 0xdb, 0xfb } }; public static final Windows_1253Encoding INSTANCE = new Windows_1253Encoding(); } jcodings-1.0.58/src/org/jcodings/specific/Windows_1254Encoding.java000066400000000000000000000260141433325321700247750ustar00rootroot00000000000000/* * Permission is hereby granted, free of charge, to any person obtaining a copy of * this software and associated documentation files (the "Software"), to deal in * the Software without restriction, including without limitation the rights to * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies * of the Software, and to permit persons to whom the Software is furnished to do * so, subject to the following conditions: * * The above copyright notice and this permission notice shall be included in all * copies or substantial portions of the Software. * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE * SOFTWARE. */ package org.jcodings.specific; import org.jcodings.CaseFoldMapEncoding; import org.jcodings.Config; import org.jcodings.ISOEncoding; import org.jcodings.IntHolder; import org.jcodings.constants.CharacterType; final public class Windows_1254Encoding extends CaseFoldMapEncoding { protected Windows_1254Encoding() { super("Windows-1254", CP1254_CtypeTable, CP1254_ToLowerCaseTable, CP1254_CaseFoldMap, true); } static final int DOTLESS_i = 0xFD; static final int I_WITH_DOT_ABOVE = 0xDD; @Override public int caseMap(IntHolder flagP, byte[] bytes, IntHolder pp, int end, byte[] to, int toP, int toEnd) { int toStart = toP; int flags = flagP.value; while (pp.value < end && toP < toEnd) { int code = bytes[pp.value++] & 0xff; if (code == ISOEncoding.SHARP_s) { if ((flags & Config.CASE_UPCASE) != 0) { flags |= Config.CASE_MODIFIED; to[toP++] = 'S'; code = (flags & Config.CASE_TITLECASE) != 0 ? 's' : 'S'; } else if ((flags & Config.CASE_FOLD) != 0) { flags |= Config.CASE_MODIFIED; to[toP++] = 's'; code = 's'; } } else if ((CP1254_CtypeTable[code] & CharacterType.BIT_UPPER) != 0 && (flags & (Config.CASE_DOWNCASE | Config.CASE_FOLD)) != 0) { flags |= Config.CASE_MODIFIED; if (code == 'I') { code = (flags & Config.CASE_FOLD_TURKISH_AZERI) != 0 ? DOTLESS_i : 'i'; } else { code = LowerCaseTable[code]; } } else if (code == 0x83 || code == 0xAA || code == 0xBA || code == 0xB5) { } else if ((CP1254_CtypeTable[code] & CharacterType.BIT_LOWER) != 0 && (flags & Config.CASE_UPCASE) != 0) { flags |= Config.CASE_MODIFIED; if (code == 'i') { code = (flags & Config.CASE_FOLD_TURKISH_AZERI) != 0 ? I_WITH_DOT_ABOVE : 'I'; } else if (code == DOTLESS_i) { code = 'I'; } else if (code == 0x9A || code == 0x9C || code == 0x9E) code -= 0x10; else if (code == 0xFF) code -= 0x60; else code -= 0x20; } to[toP++] = (byte)code; if ((flags & Config.CASE_TITLECASE) != 0) { flags ^= (Config.CASE_UPCASE | Config.CASE_DOWNCASE | Config.CASE_TITLECASE); } } flagP.value = flags; return toP - toStart; } @Override public int mbcCaseFold(int flag, byte[]bytes, IntHolder pp, int end, byte[]lower) { int p = pp.value; int lowerP = 0; lower[lowerP] = LowerCaseTable[bytes[p] & 0xff]; pp.value++; return 1; } @Override public boolean isCodeCType(int code, int ctype) { return code < 256 ? isCodeCTypeInternal(code, ctype) : false; } static final short CP1254_CtypeTable[] = { 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x420c, 0x4209, 0x4208, 0x4208, 0x4208, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4284, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x78b0, 0x78b0, 0x78b0, 0x78b0, 0x78b0, 0x78b0, 0x78b0, 0x78b0, 0x78b0, 0x78b0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x7ca2, 0x7ca2, 0x7ca2, 0x7ca2, 0x7ca2, 0x7ca2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x51a0, 0x41a0, 0x78e2, 0x78e2, 0x78e2, 0x78e2, 0x78e2, 0x78e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x4008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x34a2, 0x0008, 0x34a2, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x30e2, 0x0008, 0x30e2, 0x0008, 0x0008, 0x34a2, 0x0284, 0x01a0, 0x00a0, 0x00a0, 0x00a0, 0x00a0, 0x00a0, 0x00a0, 0x00a0, 0x00a0, 0x30e2, 0x01a0, 0x00a0, 0x01a0, 0x00a0, 0x00a0, 0x00a0, 0x00a0, 0x10a0, 0x10a0, 0x00a0, 0x30e2, 0x00a0, 0x01a0, 0x00a0, 0x10a0, 0x30e2, 0x01a0, 0x10a0, 0x10a0, 0x10a0, 0x01a0, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x00a0, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x00a0, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2 }; static final byte CP1254_ToLowerCaseTable[] = new byte[]{ (byte)'\000', (byte)'\001', (byte)'\002', (byte)'\003', (byte)'\004', (byte)'\005', (byte)'\006', (byte)'\007', (byte)'\010', (byte)'\011', (byte)'\012', (byte)'\013', (byte)'\014', (byte)'\015', (byte)'\016', (byte)'\017', (byte)'\020', (byte)'\021', (byte)'\022', (byte)'\023', (byte)'\024', (byte)'\025', (byte)'\026', (byte)'\027', (byte)'\030', (byte)'\031', (byte)'\032', (byte)'\033', (byte)'\034', (byte)'\035', (byte)'\036', (byte)'\037', (byte)'\040', (byte)'\041', (byte)'\042', (byte)'\043', (byte)'\044', (byte)'\045', (byte)'\046', (byte)'\047', (byte)'\050', (byte)'\051', (byte)'\052', (byte)'\053', (byte)'\054', (byte)'\055', (byte)'\056', (byte)'\057', (byte)'\060', (byte)'\061', (byte)'\062', (byte)'\063', (byte)'\064', (byte)'\065', (byte)'\066', (byte)'\067', (byte)'\070', (byte)'\071', (byte)'\072', (byte)'\073', (byte)'\074', (byte)'\075', (byte)'\076', (byte)'\077', (byte)'\100', (byte)'\141', (byte)'\142', (byte)'\143', (byte)'\144', (byte)'\145', (byte)'\146', (byte)'\147', (byte)'\150', (byte)'\151', (byte)'\152', (byte)'\153', (byte)'\154', (byte)'\155', (byte)'\156', (byte)'\157', (byte)'\160', (byte)'\161', (byte)'\162', (byte)'\163', (byte)'\164', (byte)'\165', (byte)'\166', (byte)'\167', (byte)'\170', (byte)'\171', (byte)'\172', (byte)'\133', (byte)'\134', (byte)'\135', (byte)'\136', (byte)'\137', (byte)'\140', (byte)'\141', (byte)'\142', (byte)'\143', (byte)'\144', (byte)'\145', (byte)'\146', (byte)'\147', (byte)'\150', (byte)'\151', (byte)'\152', (byte)'\153', (byte)'\154', (byte)'\155', (byte)'\156', (byte)'\157', (byte)'\160', (byte)'\161', (byte)'\162', (byte)'\163', (byte)'\164', (byte)'\165', (byte)'\166', (byte)'\167', (byte)'\170', (byte)'\171', (byte)'\172', (byte)'\173', (byte)'\174', (byte)'\175', (byte)'\176', (byte)'\177', (byte)'\200', (byte)'\201', (byte)'\202', (byte)'\203', (byte)'\204', (byte)'\205', (byte)'\206', (byte)'\207', (byte)'\210', (byte)'\211', (byte)'\232', (byte)'\213', (byte)'\234', (byte)'\215', (byte)'\216', (byte)'\217', (byte)'\220', (byte)'\221', (byte)'\222', (byte)'\223', (byte)'\224', (byte)'\225', (byte)'\226', (byte)'\227', (byte)'\230', (byte)'\231', (byte)'\232', (byte)'\233', (byte)'\234', (byte)'\235', (byte)'\236', (byte)'\377', (byte)'\240', (byte)'\241', (byte)'\242', (byte)'\243', (byte)'\244', (byte)'\245', (byte)'\246', (byte)'\247', (byte)'\250', (byte)'\251', (byte)'\252', (byte)'\253', (byte)'\254', (byte)'\255', (byte)'\256', (byte)'\257', (byte)'\260', (byte)'\261', (byte)'\262', (byte)'\263', (byte)'\264', (byte)'\265', (byte)'\266', (byte)'\267', (byte)'\270', (byte)'\271', (byte)'\272', (byte)'\273', (byte)'\274', (byte)'\275', (byte)'\276', (byte)'\277', (byte)'\340', (byte)'\341', (byte)'\342', (byte)'\343', (byte)'\344', (byte)'\345', (byte)'\346', (byte)'\347', (byte)'\350', (byte)'\351', (byte)'\352', (byte)'\353', (byte)'\354', (byte)'\355', (byte)'\356', (byte)'\357', (byte)'\360', (byte)'\361', (byte)'\362', (byte)'\363', (byte)'\364', (byte)'\365', (byte)'\366', (byte)'\327', (byte)'\370', (byte)'\371', (byte)'\372', (byte)'\373', (byte)'\374', (byte)'\151', (byte)'\376', (byte)'\337', (byte)'\340', (byte)'\341', (byte)'\342', (byte)'\343', (byte)'\344', (byte)'\345', (byte)'\346', (byte)'\347', (byte)'\350', (byte)'\351', (byte)'\352', (byte)'\353', (byte)'\354', (byte)'\355', (byte)'\356', (byte)'\357', (byte)'\360', (byte)'\361', (byte)'\362', (byte)'\363', (byte)'\364', (byte)'\365', (byte)'\366', (byte)'\367', (byte)'\370', (byte)'\371', (byte)'\372', (byte)'\373', (byte)'\374', (byte)'\375', (byte)'\376', (byte)'\377' }; static final int CP1254_CaseFoldMap[][] = { { 0xc0, 0xe0 }, { 0xc1, 0xe1 }, { 0xc2, 0xe2 }, { 0xc3, 0xe3 }, { 0xc4, 0xe4 }, { 0xc5, 0xe5 }, { 0xc6, 0xe6 }, { 0xc7, 0xe7 }, { 0xc8, 0xe8 }, { 0xc9, 0xe9 }, { 0xca, 0xea }, { 0xcb, 0xeb }, { 0xcc, 0xec }, { 0xcd, 0xed }, { 0xce, 0xee }, { 0xcf, 0xef }, { 0xd0, 0xf0 }, { 0xd1, 0xf1 }, { 0xd2, 0xf2 }, { 0xd3, 0xf3 }, { 0xd4, 0xf4 }, { 0xd5, 0xf5 }, { 0xd6, 0xf6 }, { 0xd8, 0xf8 }, { 0xd9, 0xf9 }, { 0xda, 0xfa }, { 0xdb, 0xfb }, { 0xdc, 0xfc }, { 0xdd, 0xfd }, { 0xde, 0xfe } }; public static final Windows_1254Encoding INSTANCE = new Windows_1254Encoding(); } jcodings-1.0.58/src/org/jcodings/specific/Windows_1257Encoding.java000066400000000000000000000257141433325321700250060ustar00rootroot00000000000000/* * Permission is hereby granted, free of charge, to any person obtaining a copy of * this software and associated documentation files (the "Software"), to deal in * the Software without restriction, including without limitation the rights to * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies * of the Software, and to permit persons to whom the Software is furnished to do * so, subject to the following conditions: * * The above copyright notice and this permission notice shall be included in all * copies or substantial portions of the Software. * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE * SOFTWARE. */ package org.jcodings.specific; import org.jcodings.CaseFoldMapEncoding; import org.jcodings.Config; import org.jcodings.ISOEncoding; import org.jcodings.IntHolder; import org.jcodings.constants.CharacterType; final public class Windows_1257Encoding extends CaseFoldMapEncoding { protected Windows_1257Encoding() { super("Windows-1257", CP1257_CtypeTable, CP1257_ToLowerCaseTable, CP1257_CaseFoldMap, true); } static final int DOTLESS_i = 0xB9; static final int I_WITH_DOT_ABOVE = 0xA9; @Override public int caseMap(IntHolder flagP, byte[] bytes, IntHolder pp, int end, byte[] to, int toP, int toEnd) { int toStart = toP; int flags = flagP.value; while (pp.value < end && toP < toEnd) { int code = bytes[pp.value++] & 0xff; if (code == ISOEncoding.SHARP_s) { if ((flags & Config.CASE_UPCASE) != 0) { flags |= Config.CASE_MODIFIED; to[toP++] = 'S'; code = (flags & Config.CASE_TITLECASE) != 0 ? 's' : 'S'; } else if ((flags & Config.CASE_FOLD) != 0) { flags |= Config.CASE_MODIFIED; to[toP++] = 's'; code = 's'; } } else if (code == 0xB5) { } else if ((CP1257_CtypeTable[code] & CharacterType.BIT_UPPER) != 0 && (flags & (Config.CASE_DOWNCASE | Config.CASE_FOLD)) != 0) { flags |= Config.CASE_MODIFIED; if (code == 'I') { code = (flags & Config.CASE_FOLD_TURKISH_AZERI) != 0 ? DOTLESS_i : 'i'; } else { code = LowerCaseTable[code]; } } else if ((CP1257_CtypeTable[code] & CharacterType.BIT_LOWER) != 0 && (flags & Config.CASE_UPCASE) != 0) { flags |= Config.CASE_MODIFIED; if (code == 'i') { code = (flags & Config.CASE_FOLD_TURKISH_AZERI) != 0 ? I_WITH_DOT_ABOVE : 'I'; } else if (code == DOTLESS_i) { code = 'I'; } else if (code >= 0xB0 && code <= 0xBF) code -= 0x10; else code -= 0x20; } to[toP++] = (byte)code; if ((flags & Config.CASE_TITLECASE) != 0) { flags ^= (Config.CASE_UPCASE | Config.CASE_DOWNCASE | Config.CASE_TITLECASE); } } flagP.value = flags; return toP - toStart; } @Override public int mbcCaseFold(int flag, byte[]bytes, IntHolder pp, int end, byte[]lower) { int p = pp.value; int lowerP = 0; lower[lowerP] = LowerCaseTable[bytes[p] & 0xff]; pp.value++; return 1; } @Override public boolean isCodeCType(int code, int ctype) { return code < 256 ? isCodeCTypeInternal(code, ctype) : false; } static final short CP1257_CtypeTable[] = { 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x420c, 0x4209, 0x4208, 0x4208, 0x4208, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4284, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x78b0, 0x78b0, 0x78b0, 0x78b0, 0x78b0, 0x78b0, 0x78b0, 0x78b0, 0x78b0, 0x78b0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x7ca2, 0x7ca2, 0x7ca2, 0x7ca2, 0x7ca2, 0x7ca2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x51a0, 0x41a0, 0x78e2, 0x78e2, 0x78e2, 0x78e2, 0x78e2, 0x78e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x4008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0284, 0x01a0, 0x00a0, 0x00a0, 0x00a0, 0x01a0, 0x00a0, 0x00a0, 0x34a2, 0x00a0, 0x34a2, 0x01a0, 0x00a0, 0x01a0, 0x00a0, 0x34a2, 0x00a0, 0x00a0, 0x10a0, 0x10a0, 0x01a0, 0x30e2, 0x00a0, 0x01a0, 0x30e2, 0x10a0, 0x30e2, 0x01a0, 0x10a0, 0x10a0, 0x10a0, 0x30e2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x00a0, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x00a0, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x01a0 }; static final byte CP1257_ToLowerCaseTable[] = new byte[]{ (byte)'\000', (byte)'\001', (byte)'\002', (byte)'\003', (byte)'\004', (byte)'\005', (byte)'\006', (byte)'\007', (byte)'\010', (byte)'\011', (byte)'\012', (byte)'\013', (byte)'\014', (byte)'\015', (byte)'\016', (byte)'\017', (byte)'\020', (byte)'\021', (byte)'\022', (byte)'\023', (byte)'\024', (byte)'\025', (byte)'\026', (byte)'\027', (byte)'\030', (byte)'\031', (byte)'\032', (byte)'\033', (byte)'\034', (byte)'\035', (byte)'\036', (byte)'\037', (byte)'\040', (byte)'\041', (byte)'\042', (byte)'\043', (byte)'\044', (byte)'\045', (byte)'\046', (byte)'\047', (byte)'\050', (byte)'\051', (byte)'\052', (byte)'\053', (byte)'\054', (byte)'\055', (byte)'\056', (byte)'\057', (byte)'\060', (byte)'\061', (byte)'\062', (byte)'\063', (byte)'\064', (byte)'\065', (byte)'\066', (byte)'\067', (byte)'\070', (byte)'\071', (byte)'\072', (byte)'\073', (byte)'\074', (byte)'\075', (byte)'\076', (byte)'\077', (byte)'\100', (byte)'\141', (byte)'\142', (byte)'\143', (byte)'\144', (byte)'\145', (byte)'\146', (byte)'\147', (byte)'\150', (byte)'\151', (byte)'\152', (byte)'\153', (byte)'\154', (byte)'\155', (byte)'\156', (byte)'\157', (byte)'\160', (byte)'\161', (byte)'\162', (byte)'\163', (byte)'\164', (byte)'\165', (byte)'\166', (byte)'\167', (byte)'\170', (byte)'\171', (byte)'\172', (byte)'\133', (byte)'\134', (byte)'\135', (byte)'\136', (byte)'\137', (byte)'\140', (byte)'\141', (byte)'\142', (byte)'\143', (byte)'\144', (byte)'\145', (byte)'\146', (byte)'\147', (byte)'\150', (byte)'\151', (byte)'\152', (byte)'\153', (byte)'\154', (byte)'\155', (byte)'\156', (byte)'\157', (byte)'\160', (byte)'\161', (byte)'\162', (byte)'\163', (byte)'\164', (byte)'\165', (byte)'\166', (byte)'\167', (byte)'\170', (byte)'\171', (byte)'\172', (byte)'\173', (byte)'\174', (byte)'\175', (byte)'\176', (byte)'\177', (byte)'\200', (byte)'\201', (byte)'\202', (byte)'\203', (byte)'\204', (byte)'\205', (byte)'\206', (byte)'\207', (byte)'\210', (byte)'\211', (byte)'\212', (byte)'\213', (byte)'\214', (byte)'\215', (byte)'\216', (byte)'\217', (byte)'\220', (byte)'\221', (byte)'\222', (byte)'\223', (byte)'\224', (byte)'\225', (byte)'\226', (byte)'\227', (byte)'\230', (byte)'\231', (byte)'\232', (byte)'\233', (byte)'\234', (byte)'\235', (byte)'\236', (byte)'\237', (byte)'\240', (byte)'\241', (byte)'\242', (byte)'\243', (byte)'\244', (byte)'\245', (byte)'\246', (byte)'\247', (byte)'\270', (byte)'\251', (byte)'\272', (byte)'\253', (byte)'\254', (byte)'\255', (byte)'\256', (byte)'\277', (byte)'\260', (byte)'\261', (byte)'\262', (byte)'\263', (byte)'\264', (byte)'\265', (byte)'\266', (byte)'\267', (byte)'\270', (byte)'\271', (byte)'\272', (byte)'\273', (byte)'\274', (byte)'\275', (byte)'\276', (byte)'\277', (byte)'\340', (byte)'\341', (byte)'\342', (byte)'\343', (byte)'\344', (byte)'\345', (byte)'\346', (byte)'\347', (byte)'\350', (byte)'\351', (byte)'\352', (byte)'\353', (byte)'\354', (byte)'\355', (byte)'\356', (byte)'\357', (byte)'\360', (byte)'\361', (byte)'\362', (byte)'\363', (byte)'\364', (byte)'\365', (byte)'\366', (byte)'\327', (byte)'\370', (byte)'\371', (byte)'\372', (byte)'\373', (byte)'\374', (byte)'\375', (byte)'\376', (byte)'\337', (byte)'\340', (byte)'\341', (byte)'\342', (byte)'\343', (byte)'\344', (byte)'\345', (byte)'\346', (byte)'\347', (byte)'\350', (byte)'\351', (byte)'\352', (byte)'\353', (byte)'\354', (byte)'\355', (byte)'\356', (byte)'\357', (byte)'\360', (byte)'\361', (byte)'\362', (byte)'\363', (byte)'\364', (byte)'\365', (byte)'\366', (byte)'\367', (byte)'\370', (byte)'\371', (byte)'\372', (byte)'\373', (byte)'\374', (byte)'\375', (byte)'\376', (byte)'\377' }; static final int CP1257_CaseFoldMap[][] = { { 0xa8, 0xb8 }, { 0xaa, 0xba }, { 0xaf, 0xbf }, { 0xc0, 0xe0 }, { 0xc1, 0xe1 }, { 0xc2, 0xe2 }, { 0xc3, 0xe3 }, { 0xc4, 0xe4 }, { 0xc5, 0xe5 }, { 0xc6, 0xe6 }, { 0xc7, 0xe7 }, { 0xc8, 0xe8 }, { 0xc9, 0xe9 }, { 0xca, 0xea }, { 0xcb, 0xeb }, { 0xcc, 0xec }, { 0xcd, 0xed }, { 0xce, 0xee }, { 0xcf, 0xef }, { 0xd0, 0xf0 }, { 0xd1, 0xf1 }, { 0xd2, 0xf2 }, { 0xd3, 0xf3 }, { 0xd4, 0xf4 }, { 0xd5, 0xf5 }, { 0xd6, 0xf6 }, { 0xd8, 0xf8 }, { 0xd9, 0xf9 }, { 0xda, 0xfa }, { 0xdb, 0xfb }, { 0xdc, 0xfc }, { 0xdd, 0xfd }, { 0xde, 0xfe } }; public static final Windows_1257Encoding INSTANCE = new Windows_1257Encoding(); } jcodings-1.0.58/src/org/jcodings/specific/Windows_31JEncoding.java000066400000000000000000000030461433325321700247370ustar00rootroot00000000000000/* * Permission is hereby granted, free of charge, to any person obtaining a copy of * this software and associated documentation files (the "Software"), to deal in * the Software without restriction, including without limitation the rights to * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies * of the Software, and to permit persons to whom the Software is furnished to do * so, subject to the following conditions: * * The above copyright notice and this permission notice shall be included in all * copies or substantial portions of the Software. * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE * SOFTWARE. */ package org.jcodings.specific; public final class Windows_31JEncoding extends BaseSJISEncoding { protected Windows_31JEncoding() { super("Windows-31J", SJISEncoding.SjisTrans); } @Override public String getCharsetName() { return "Windows-31J"; } @Override public int length(byte[]bytes, int p, int end) { return safeLengthForUptoTwo(bytes, p, end); } public static final Windows_31JEncoding INSTANCE = new Windows_31JEncoding(); } jcodings-1.0.58/src/org/jcodings/spi/000077500000000000000000000000001433325321700173615ustar00rootroot00000000000000jcodings-1.0.58/src/org/jcodings/spi/Charsets.java000066400000000000000000000012771433325321700220070ustar00rootroot00000000000000package org.jcodings.spi; import java.nio.charset.Charset; import java.util.Collections; import java.util.Iterator; import java.util.List; /** * An SPI character set provider for ISO-8859-16. */ public class Charsets extends java.nio.charset.spi.CharsetProvider { private static final List charsets = Collections.singletonList((Charset) ISO_8859_16.INSTANCE); public Iterator charsets() { return charsets.iterator(); } public Charset charsetForName(String charsetName) { if ("ISO-8859-16".equals(charsetName) || ISO_8859_16.INSTANCE.aliases().contains(charsetName)) { return ISO_8859_16.INSTANCE; } return null; } } jcodings-1.0.58/src/org/jcodings/spi/ISO_8859_16.java000066400000000000000000000156711433325321700216730ustar00rootroot00000000000000/* * Permission is hereby granted, free of charge, to any person obtaining a copy of * this software and associated documentation files (the "Software"), to deal in * the Software without restriction, including without limitation the rights to * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies * of the Software, and to permit persons to whom the Software is furnished to do * so, subject to the following conditions: * * The above copyright notice and this permission notice shall be included in all * copies or substantial portions of the Software. * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE * SOFTWARE. */ package org.jcodings.spi; import java.nio.Buffer; import java.nio.ByteBuffer; import java.nio.CharBuffer; import java.nio.charset.Charset; import java.nio.charset.CharsetDecoder; import java.nio.charset.CharsetEncoder; import java.nio.charset.CoderResult; import static java.lang.Byte.toUnsignedInt; /** * Implementation of Charset, CharsetDecoder, and CharsetEncoder for ISO-8859-16. */ public class ISO_8859_16 extends Charset { public static final ISO_8859_16 INSTANCE = new ISO_8859_16(); ISO_8859_16() { super("ISO-8859-16", new String[]{"iso-ir-226", "ISO_8859-16:2001", "ISO_8859-16", "latin10", "l10", "csISO885916", "ISO8859_16", "ISO_8859_16", "8859_16", "ISO8859-16"}); } @Override public boolean contains(Charset cs) { return cs.name().equals("US-ASCII") || cs instanceof ISO_8859_16; } @Override public CharsetDecoder newDecoder() { return new Decoder(this); } @Override public CharsetEncoder newEncoder() { return new Encoder(this); } private static class Decoder extends CharsetDecoder { Decoder(Charset charset) { super(charset, 1.0f, 1.0f); } @Override protected CoderResult decodeLoop(ByteBuffer in, CharBuffer out) { for (;;) { if (!in.hasRemaining()) return CoderResult.UNDERFLOW; if (!out.hasRemaining()) return CoderResult.OVERFLOW; int b = toUnsignedInt(in.get()); char c = TABLE[b]; out.put(c); } } private static final char[] TABLE; static { TABLE = new char[256]; for (int i = 0; i < 256; i++) { TABLE[i] = (char)i; } TABLE[0xA1] = '\u0104'; TABLE[0xA2] = '\u0105'; TABLE[0xA3] = '\u0141'; TABLE[0xA4] = '\u20AC'; TABLE[0xA5] = '\u201E'; TABLE[0xA6] = '\u0160'; TABLE[0xA8] = '\u0161'; TABLE[0xAA] = '\u0218'; TABLE[0xAC] = '\u0179'; TABLE[0xAE] = '\u017A'; TABLE[0xAF] = '\u017B'; TABLE[0xB2] = '\u010C'; TABLE[0xB3] = '\u0142'; TABLE[0xB4] = '\u017D'; TABLE[0xB5] = '\u201D'; TABLE[0xB8] = '\u017E'; TABLE[0xB9] = '\u010D'; TABLE[0xBA] = '\u0219'; TABLE[0xBC] = '\u0152'; TABLE[0xBD] = '\u0153'; TABLE[0xBE] = '\u0178'; TABLE[0xBF] = '\u017C'; TABLE[0xC3] = '\u0102'; TABLE[0xC5] = '\u0106'; TABLE[0xD1] = '\u0110'; TABLE[0xD2] = '\u0143'; TABLE[0xD5] = '\u0150'; TABLE[0xD7] = '\u015A'; TABLE[0xD8] = '\u0170'; TABLE[0xDD] = '\u0118'; TABLE[0xDE] = '\u021A'; TABLE[0xE3] = '\u0103'; TABLE[0xE5] = '\u0107'; } } private static class Encoder extends CharsetEncoder { Encoder(Charset charset) { super(charset, 1.0f, 1.0f, new byte[]{(byte)'?'}); } @Override protected CoderResult encodeLoop(CharBuffer in, ByteBuffer out) { for (;;) { if (!in.hasRemaining()) return CoderResult.UNDERFLOW; if (!out.hasRemaining()) return CoderResult.OVERFLOW; char c = in.get(); byte b = 0; byte[] replace = null; switch (c) { case '\u0104': b = (byte)0xA1; break; case '\u0105': b = (byte)0xA2; break; case '\u0141': b = (byte)0xA3; break; case '\u20AC': b = (byte)0xA4; break; case '\u201E': b = (byte)0xA5; break; case '\u0160': b = (byte)0xA6; break; case '\u0161': b = (byte)0xA8; break; case '\u0218': b = (byte)0xAA; break; case '\u0179': b = (byte)0xAC; break; case '\u017A': b = (byte)0xAE; break; case '\u017B': b = (byte)0xAF; break; case '\u010C': b = (byte)0xB2; break; case '\u0142': b = (byte)0xB3; break; case '\u017D': b = (byte)0xB4; break; case '\u201D': b = (byte)0xB5; break; case '\u017E': b = (byte)0xB8; break; case '\u010D': b = (byte)0xB9; break; case '\u0219': b = (byte)0xBA; break; case '\u0152': b = (byte)0xBC; break; case '\u0153': b = (byte)0xBD; break; case '\u0178': b = (byte)0xBE; break; case '\u017C': b = (byte)0xBF; break; case '\u0102': b = (byte)0xC3; break; case '\u0106': b = (byte)0xC5; break; case '\u0110': b = (byte)0xD1; break; case '\u0143': b = (byte)0xD2; break; case '\u0150': b = (byte)0xD5; break; case '\u015A': b = (byte)0xD7; break; case '\u0170': b = (byte)0xD8; break; case '\u0118': b = (byte)0xDD; break; case '\u021A': b = (byte)0xDE; break; case '\u0103': b = (byte)0xE3; break; case '\u0107': b = (byte)0xE5; break; default: if (c < 256) b = (byte)c; else replace = replacement(); } if (replace != null) { if (out.remaining() < replace.length) { ((Buffer) in).position(in.position() - 1); return CoderResult.OVERFLOW; } else { out.put(replace); } } else { out.put(b); } } } } } jcodings-1.0.58/src/org/jcodings/transcode/000077500000000000000000000000001433325321700205505ustar00rootroot00000000000000jcodings-1.0.58/src/org/jcodings/transcode/AsciiCompatibility.java000066400000000000000000000025671433325321700252070ustar00rootroot00000000000000/* * Permission is hereby granted, free of charge, to any person obtaining a copy of * this software and associated documentation files (the "Software"), to deal in * the Software without restriction, including without limitation the rights to * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies * of the Software, and to permit persons to whom the Software is furnished to do * so, subject to the following conditions: * * The above copyright notice and this permission notice shall be included in all * copies or substantial portions of the Software. * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE * SOFTWARE. */ package org.jcodings.transcode; public enum AsciiCompatibility { CONVERTER, DECODER, ENCODER; public boolean isConverter() { return this == CONVERTER; } public boolean isDecoder() { return this == DECODER; } public boolean isEncoder() { return this == ENCODER; } }jcodings-1.0.58/src/org/jcodings/transcode/Buffer.java000066400000000000000000000024561433325321700226330ustar00rootroot00000000000000/* * Permission is hereby granted, free of charge, to any person obtaining a copy of * this software and associated documentation files (the "Software"), to deal in * the Software without restriction, including without limitation the rights to * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies * of the Software, and to permit persons to whom the Software is furnished to do * so, subject to the following conditions: * * The above copyright notice and this permission notice shall be included in all * copies or substantial portions of the Software. * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE * SOFTWARE. */ package org.jcodings.transcode; class Buffer { int bufStart, dataStart, dataEnd, bufEnd; byte[] bytes; void allocate(int num) { bytes = new byte[num]; bufStart = dataStart = dataEnd = 0; bufEnd = num; } } jcodings-1.0.58/src/org/jcodings/transcode/EConv.java000066400000000000000000001002631433325321700224270ustar00rootroot00000000000000/* * Permission is hereby granted, free of charge, to any person obtaining a copy of * this software and associated documentation files (the "Software"), to deal in * the Software without restriction, including without limitation the rights to * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies * of the Software, and to permit persons to whom the Software is furnished to do * so, subject to the following conditions: * * The above copyright notice and this permission notice shall be included in all * copies or substantial portions of the Software. * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE * SOFTWARE. */ package org.jcodings.transcode; import static org.jcodings.util.CaseInsensitiveBytesHash.caseInsensitiveEquals; import org.jcodings.Encoding; import org.jcodings.Ptr; import org.jcodings.exception.InternalException; import org.jcodings.specific.UTF32BEEncoding; import java.util.Arrays; public final class EConv implements EConvFlags { int flags; public byte[] source, destination; // source/destination encoding names boolean started = false; public byte[] replacementString; public int replacementLength; public byte[] replacementEncoding; Buffer inBuf = new Buffer(); public EConvElement[] elements; public int numTranscoders; int numFinished; public Transcoding lastTranscoding; public final LastError lastError = new LastError(); public Encoding sourceEncoding, destinationEncoding; @Override public String toString() { return new String(source) + " => " + new String(destination); } EConv(int nHint) { if (nHint <= 0) nHint = 1; elements = new EConvElement[nHint]; lastError.result = EConvResult.SourceBufferEmpty; } public static final class EConvElement extends Buffer { EConvElement(Transcoding transcoding) { this.transcoding = transcoding; lastResult = EConvResult.SourceBufferEmpty; } public final Transcoding transcoding; EConvResult lastResult; @Override public String toString() { String s = "EConv " + transcoding.toString() + "\n"; s += " last result: " + lastResult; return s; } } public static final class LastError { EConvResult result; Transcoding errorTranscoding; byte[] source, destination; byte[] errorBytes; int errorBytesP, errorBytesLength; int readAgainLength; void reset() { result = null; errorTranscoding = null; source = destination = null; errorBytes = null; errorBytesP = errorBytesLength = 0; readAgainLength = 0; } public EConvResult getResult() { return result; } public Transcoding getErrorTranscoding() { return errorTranscoding; } public byte[] getSource() { return source; } public byte[] getDestination() { return destination; } public byte[] getErrorBytes() { return errorBytes; } public int getErrorBytesP() { return errorBytesP; } public int getErrorBytesLength() { return errorBytesLength; } public int getReadAgainLength() { return readAgainLength; } @Override public String toString() { String s = "Last Error " + (source == null ? "null" : new String(source)) + " => " + (destination == null ? "null" : new String(destination)) + "\n"; s += " result: " + result.toString() + "\n"; s += " error bytes: " + (errorBytes == null ? "null" : new String(errorBytes, errorBytesP, errorBytesP + errorBytesLength)) + "\n"; s += " read again length: " + readAgainLength; return s; } } static final byte[] NULL_STRING = new byte[0]; static final int[] NULL_POINTER = new int[0]; static boolean decorator(byte[] source, byte[] destination) { return source.length == 0; } /* rb_econv_add_transcoder_at */ void addTranscoderAt(Transcoder transcoder, int i) { if (numTranscoders == elements.length) { EConvElement[] tmp = new EConvElement[elements.length * 2]; System.arraycopy(elements, 0, tmp, 0, i); System.arraycopy(elements, i, tmp, i + 1, elements.length - i); elements = tmp; } else { System.arraycopy(elements, i, elements, i + 1, elements.length - i - 1); } elements[i] = new EConvElement(transcoder.transcoding(0)); elements[i].allocate(4096); numTranscoders++; if (!decorator(transcoder.source, transcoder.destination)) { for (int j = numTranscoders - 1; i <= j; j--) { Transcoding tc = elements[j].transcoding; Transcoder tr = tc.transcoder; if (!decorator(tr.source, tr.destination)) { lastTranscoding = tc; break; } } } } /* trans_sweep */ private int transSweep(byte[] in, Ptr inPtr, int inStop, byte[] out, Ptr outPtr, int outStop, int flags, int start) { boolean try_ = true; Ptr ipp = null; Ptr opp = null; while (try_) { try_ = false; for (int i = start; i < numTranscoders; i++) { EConvElement te = elements[i]; final int is, os; final byte[] ibytes, obytes; EConvElement previousTE = null; boolean ippIsStart = false; boolean oppIsEnd = false; if (i == 0) { ipp = inPtr; is = inStop; ibytes = in; } else { previousTE = elements[i - 1]; ipp = new Ptr(previousTE.dataStart); ippIsStart = true; is = previousTE.dataEnd; ibytes = previousTE.bytes; } if (i == numTranscoders - 1) { opp = outPtr; os = outStop; obytes = out; } else { if (te.bufStart != te.dataStart) { int len = te.dataEnd - te.dataStart; int off = te.dataStart - te.bufStart; System.arraycopy(te.bytes, te.dataStart, te.bytes, te.bufStart, len); te.dataStart = te.bufStart; te.dataEnd -= off; } opp = new Ptr(te.dataEnd); oppIsEnd = true; os = te.bufEnd; obytes = te.bytes; } int f = flags; if (numFinished != i) f |= PARTIAL_INPUT; if (i == 0 && (flags & AFTER_OUTPUT) != 0) { start = 1; flags &= ~AFTER_OUTPUT; } if (i != 0) f &= ~AFTER_OUTPUT; int iold = ipp.p; int oold = opp.p; EConvResult res; te.lastResult = res = te.transcoding.convert(ibytes, ipp, is, obytes, opp, os, f); if (ippIsStart) previousTE.dataStart = ipp.p; if (oppIsEnd) te.dataEnd = opp.p; if (iold != ipp.p || oold != opp.p) try_ = true; switch (res) { case InvalidByteSequence: case IncompleteInput: case UndefinedConversion: case AfterOutput: return i; case DestinationBufferFull: case SourceBufferEmpty: break; case Finished: numFinished = i + 1; break; } } } return -1; } /* rb_trans_conv */ private EConvResult transConv(byte[] in, Ptr inPtr, int inStop, byte[] out, Ptr outPtr, int outStop, int flags, Ptr resultPositionPtr) { // null check if (elements[0].lastResult == EConvResult.AfterOutput) elements[0].lastResult = EConvResult.SourceBufferEmpty; for (int i = numTranscoders - 1; 0 <= i; i--) { switch (elements[i].lastResult) { case InvalidByteSequence: case IncompleteInput: case UndefinedConversion: case AfterOutput: case Finished: return transConvNeedReport(in, inPtr, inStop, out, outPtr, outStop, flags, resultPositionPtr, i + 1, i); case DestinationBufferFull: case SourceBufferEmpty: break; default: throw new InternalException("unexpected transcode last result"); } } /* /^[sd]+$/ is confirmed. but actually /^s*d*$/. */ if (elements[numTranscoders - 1].lastResult == EConvResult.DestinationBufferFull && (flags & AFTER_OUTPUT) != 0) { EConvResult res = transConv(NULL_STRING, Ptr.NULL, 0, out, outPtr, outStop, (flags & ~AFTER_OUTPUT) | PARTIAL_INPUT, resultPositionPtr); return res.isSourceBufferEmpty() ? EConvResult.AfterOutput : res; } return transConvNeedReport(in, inPtr, inStop, out, outPtr, outStop, flags, resultPositionPtr, 0, -1); } private EConvResult transConvNeedReport(byte[] in, Ptr inPtr, int inStop, byte[] out, Ptr outPtr, int outStop, int flags, Ptr resultPositionPtr, int sweepStart, int needReportIndex) { do { needReportIndex = transSweep(in, inPtr, inStop, out, outPtr, outStop, flags, sweepStart); sweepStart = needReportIndex + 1; } while (needReportIndex != -1 && needReportIndex != numTranscoders - 1); for (int i = numTranscoders - 1; i >= 0; i--) { if (elements[i].lastResult != EConvResult.SourceBufferEmpty) { EConvResult res = elements[i].lastResult; switch (res) { case InvalidByteSequence: case IncompleteInput: case UndefinedConversion: case AfterOutput: elements[i].lastResult = EConvResult.SourceBufferEmpty; } if (resultPositionPtr != null) resultPositionPtr.p = i; return res; } } if (resultPositionPtr != null) resultPositionPtr.p = -1; return EConvResult.SourceBufferEmpty; } /* rb_econv_convert0 */ private EConvResult convertInternal(byte[] in, Ptr inPtr, int inStop, byte[] out, Ptr outPtr, int outStop, int flags) { lastError.reset(); EConvResult res; int len; if (numTranscoders == 0) { if (inBuf.bytes != null && inBuf.dataStart != inBuf.dataEnd) { if (outStop - outPtr.p < inBuf.dataEnd - inBuf.dataStart) { len = outStop - outPtr.p; System.arraycopy(inBuf.bytes, inBuf.dataStart, out, outPtr.p, len); outPtr.p = outStop; inBuf.dataStart += len; return convertInternalResult(EConvResult.DestinationBufferFull, null); } len = inBuf.dataEnd - inBuf.dataStart; System.arraycopy(inBuf.bytes, inBuf.dataStart, out, outPtr.p, len); outPtr.p += len; inBuf.dataStart = inBuf.dataEnd = inBuf.bufStart; if ((flags & AFTER_OUTPUT) != 0) return convertInternalResult(EConvResult.AfterOutput, null); } if (outStop - outPtr.p < inStop - inPtr.p) { len = outStop - outPtr.p; } else { len = inStop - inPtr.p; } if (len > 0 && (flags & AFTER_OUTPUT) != 0) { out[outPtr.p++] = in[inPtr.p++]; return convertInternalResult(EConvResult.AfterOutput, null); } System.arraycopy(in, inPtr.p, out, outPtr.p, len); outPtr.p += len; inPtr.p += len; if (inPtr.p != inStop) { res = EConvResult.DestinationBufferFull; } else if ((flags & PARTIAL_INPUT) != 0) { res = EConvResult.SourceBufferEmpty; } else { res = EConvResult.Finished; } return convertInternalResult(res, null); } boolean hasOutput = false; EConvElement elem = elements[numTranscoders - 1]; if (elem.bytes != null) { int dataStart = elem.dataStart; int dataEnd = elem.dataEnd; byte[] data = elem.bytes; if (dataStart != dataEnd) { if (outStop - outPtr.p < dataEnd - dataStart) { len = outStop - outPtr.p; System.arraycopy(data, dataStart, out, outPtr.p, len); outPtr.p = outStop; elem.dataStart += len; return convertInternalResult(EConvResult.DestinationBufferFull, null); } len = dataEnd - dataStart; System.arraycopy(data, dataStart, out, outPtr.p, len); outPtr.p += len; elem.dataStart = elem.dataEnd = elem.bufStart; hasOutput = true; } } Ptr resultPosition = new Ptr(0); if (inBuf != null && inBuf.dataStart != inBuf.dataEnd) { Ptr inDataStartPtr = new Ptr(inBuf.dataStart); res = transConv(inBuf.bytes, inDataStartPtr, inBuf.dataEnd, out, outPtr, outStop, (flags & ~AFTER_OUTPUT) | PARTIAL_INPUT, resultPosition); inBuf.dataStart = inDataStartPtr.p; if (!res.isSourceBufferEmpty()) return convertInternalResult(res, resultPosition); } if (hasOutput && (flags & AFTER_OUTPUT) != 0 && inPtr.p != inStop) { inStop = inPtr.p; res = transConv(in, inPtr, inStop, out, outPtr, outStop, flags, resultPosition); if (res.isSourceBufferEmpty()) res = EConvResult.AfterOutput; } else if ((flags & AFTER_OUTPUT) != 0 || numTranscoders == 1) { res = transConv(in, inPtr, inStop, out, outPtr, outStop, flags, resultPosition); } else { flags |= AFTER_OUTPUT; do { res = transConv(in, inPtr, inStop, out, outPtr, outStop, flags, resultPosition); } while (res.isAfterOutput()); } return convertInternalResult(res, resultPosition); } private EConvResult convertInternalResult(EConvResult res, Ptr resultPosition) { lastError.result = res; switch (res) { case InvalidByteSequence: case IncompleteInput: case UndefinedConversion: Transcoding errorTranscoding = elements[resultPosition.p].transcoding; lastError.errorTranscoding = errorTranscoding; lastError.source = errorTranscoding.transcoder.source; lastError.destination = errorTranscoding.transcoder.destination; lastError.errorBytes = errorTranscoding.readBuf; lastError.errorBytesP = 0; lastError.errorBytesLength = errorTranscoding.recognizedLength; lastError.readAgainLength = errorTranscoding.readAgainLength; } return res; } /* rb_econv_convert */ public EConvResult convert(byte[] in, Ptr inPtr, int inStop, byte[] out, Ptr outPtr, int outStop, int flags) { started = true; if (in == null || inPtr == null) { in = NULL_STRING; inPtr = Ptr.NULL; inStop = 0; } if (out == null || outPtr == null) { out = NULL_STRING; outPtr = Ptr.NULL; outStop = 0; } resume: while (true) { EConvResult ret = convertInternal(in, inPtr, inStop, out, outPtr, outStop, flags); if (ret.isInvalidByteSequence() || ret.isIncompleteInput()) { switch (this.flags & INVALID_MASK) { case INVALID_REPLACE: if (outputReplacementCharacter() == 0) continue resume; } } if (ret.isUndefinedConversion()) { switch (this.flags & UNDEF_MASK) { case UNDEF_REPLACE: if (outputReplacementCharacter() == 0) continue resume; break; case UNDEF_HEX_CHARREF: if (outputHexCharref() == 0) continue resume; break; } } return ret; } } /* output_hex_charref */ private int outputHexCharref() { final byte[] utfBytes; final int utfP; int utfLen; if (caseInsensitiveEquals(lastError.source, "UTF-32BE".getBytes())) { utfBytes = lastError.errorBytes; utfP = lastError.errorBytesP; utfLen = lastError.errorBytesLength; } else { Ptr utfLenA = new Ptr(); // TODO: better calculation? byte[] utfBuf = new byte[lastError.errorBytesLength * UTF32BEEncoding.INSTANCE.maxLength()]; utfBytes = allocateConvertedString(lastError.source, "UTF-32BE".getBytes(), lastError.errorBytes, lastError.errorBytesP, lastError.errorBytesLength, utfBuf, utfLenA); if (utfBytes == null) return -1; utfP = 0; utfLen = utfLenA.p; } if (utfLen % 4 != 0) return -1; int p = utfP; while (4 <= utfLen) { int u = 0; // long ?? u += (utfBytes[p] & 0xff) << 24; u += (utfBytes[p + 1] & 0xff) << 16; u += (utfBytes[p + 2] & 0xff) << 8; u += (utfBytes[p + 3] & 0xff); byte[] charrefbuf = String.format("&#x%X;", u).getBytes(); // FIXME: use faster sprintf ?? if (insertOutput(charrefbuf, 0, charrefbuf.length, "US-ASCII".getBytes()) == -1) return -1; p += 4; utfLen -= 4; } return 0; } /* rb_econv_encoding_to_insert_output */ public byte[] encodingToInsertOutput() { Transcoding transcoding = lastTranscoding; if (transcoding == null) return NULL_STRING; Transcoder transcoder = transcoding.transcoder; return transcoder.compatibility.isEncoder() ? transcoder.source : transcoder.destination; } /* allocate_converted_string */ private static byte[] allocateConvertedString(byte[] source, byte[] destination, byte[] str, int strP, int strLen, byte[] callerDstBuf, Ptr dstLenPtr) { int dstBufSize; if (callerDstBuf != null) { dstBufSize = callerDstBuf.length; } else if (strLen == 0) { dstBufSize = 1; // ?? } else { dstBufSize = strLen; } EConv ec = TranscoderDB.open(source, destination, 0); if (ec == null) return null; byte[] dstStr; if (callerDstBuf != null) { dstStr = callerDstBuf; } else { dstStr = new byte[dstBufSize]; } int dstLen = 0; Ptr sp = new Ptr(strP); Ptr dp = new Ptr(dstLen); EConvResult res = ec.convert(str, sp, strP + strLen, dstStr, dp, dstBufSize, 0); dstLen = dp.p; while (res.isDestinationBufferFull()) { dstBufSize *= 2; byte[] tmp = new byte[dstBufSize]; System.arraycopy(dstStr, 0, tmp, 0, dstBufSize / 2); dstStr = tmp; dp.p = dstLen; // ?? res = ec.convert(str, sp, strP + strLen, dstStr, dp, dstBufSize, 0); dstLen = dp.p; } if (!res.isFinished()) return null; ec.close(); dstLenPtr.p = dstLen; return dstStr; } /* rb_econv_insert_output */ public int insertOutput(byte[] str, int strP, int strLen, byte[] strEncoding) { byte[] insertEncoding = encodingToInsertOutput(); byte[] insertBuf = null; started = true; if (strLen == 0) return 0; final byte[] insertStr; final int insertP; final int insertLen; if (caseInsensitiveEquals(insertEncoding, strEncoding)) { insertStr = str; insertP = 0; insertLen = strLen; } else { Ptr insertLenP = new Ptr(); insertBuf = new byte[4096]; // FIXME: wasteful insertStr = allocateConvertedString(strEncoding, insertEncoding, str, strP, strLen, insertBuf, insertLenP); insertLen = insertLenP.p; insertP = insertStr == str ? strP : 0; if (insertStr == null) return -1; } int need = insertLen; final int lastTranscodingIndex = numTranscoders - 1; final Transcoding transcoding; Buffer buf; if (numTranscoders == 0) { transcoding = null; buf = inBuf; } else if (elements[lastTranscodingIndex].transcoding.transcoder.compatibility.isEncoder()) { transcoding = elements[lastTranscodingIndex].transcoding; need += transcoding.readAgainLength; if (need < insertLen) return -1; if (lastTranscodingIndex == 0) { buf = inBuf; } else { buf = elements[lastTranscodingIndex - 1]; } } else { transcoding = elements[lastTranscodingIndex].transcoding; buf = elements[lastTranscodingIndex]; } if (buf == null) { buf = new Buffer(); buf.allocate(need); } else if (buf.bytes == null) { buf.allocate(need); } else if ((buf.bufEnd - buf.dataEnd) < need) { // try to compact buffer by moving data portion back to bufStart System.arraycopy(buf.bytes, buf.dataStart, buf.bytes, buf.bufStart, buf.dataEnd - buf.dataStart); buf.dataEnd = buf.bufStart + (buf.dataEnd - buf.dataStart); buf.dataStart = buf.bufStart; if ((buf.bufEnd - buf.dataEnd) < need) { // still not enough room; use a separate buffer int s = (buf.dataEnd - buf.bufStart) + need; if (s < need) return -1; Buffer buf2 = buf = new Buffer(); buf2.allocate(s); System.arraycopy(buf.bytes, buf.bufStart, buf2.bytes, 0, s); // ?? buf2.dataStart = 0; buf2.dataEnd = buf.dataEnd - buf.bufStart; } } System.arraycopy(insertStr, insertP, buf.bytes, buf.dataEnd, insertLen); buf.dataEnd += insertLen; if (transcoding != null && transcoding.transcoder.compatibility.isEncoder()) { System.arraycopy(transcoding.readBuf, transcoding.recognizedLength, buf.bytes, buf.dataEnd, transcoding.readAgainLength); buf.dataEnd += transcoding.readAgainLength; transcoding.readAgainLength = 0; } return 0; } /* rb_econv_close */ public void close() { for (int i = 0; i < numTranscoders; i++) { elements[i].transcoding.close(); } } /* rb_econv_putbackable */ public int putbackable() { return numTranscoders == 0 ? 0 : elements[0].transcoding.readAgainLength; } /* rb_econv_putback */ public void putback(byte[] bytes, int p, int n) { if (numTranscoders == 0 || n == 0) return; Transcoding transcoding = elements[0].transcoding; System.arraycopy(transcoding.readBuf, transcoding.recognizedLength + transcoding.readAgainLength - n, bytes, p, n); transcoding.readAgainLength -= n; } /* rb_econv_add_converter */ public boolean addConverter(byte[] source, byte[] destination, int n) { if (started) return false; TranscoderDB.Entry entry = TranscoderDB.getEntry(source, destination); if (entry == null) return false; Transcoder transcoder = entry.getTranscoder(); if (transcoder == null) return false; addTranscoderAt(transcoder, n); return true; } /* rb_econv_decorate_at */ boolean decorateAt(byte[] decorator, int n) { return addConverter(NULL_STRING, decorator, n); } /* rb_econv_decorate_at_first */ // NOTE: Unused in MRI proper; for C exts, presumably boolean decorateAtFirst(byte[] decorator) { if (numTranscoders == 0) return decorateAt(decorator, 0); Transcoder transcoder = elements[0].transcoding.transcoder; if (!decorator(transcoder.source, transcoder.destination) && transcoder.compatibility.isDecoder()) { return decorateAt(decorator, 1); } return decorateAt(decorator, 0); } /* rb_econv_decorate_at_last */ boolean decorateAtLast(byte[] decorator) { if (numTranscoders == 0) return decorateAt(decorator, 0); Transcoder transcoder = elements[numTranscoders - 1].transcoding.transcoder; if (!decorator(transcoder.source, transcoder.destination) && transcoder.compatibility.isEncoder()) { return decorateAt(decorator, numTranscoders - 1); } return decorateAt(decorator, numTranscoders); } /* rb_econv_binmode */ public void binmode() { Transcoder[] transcoders = new Transcoder[3]; int n = 0; if ((flags & UNIVERSAL_NEWLINE_DECORATOR) != 0) { TranscoderDB.Entry entry = TranscoderDB.getEntry(NULL_STRING, "universal_newline".getBytes()); if (entry.getTranscoder() != null) transcoders[n++] = entry.getTranscoder(); } if ((flags & CRLF_NEWLINE_DECORATOR) != 0) { TranscoderDB.Entry entry = TranscoderDB.getEntry(NULL_STRING, "crlf_newline".getBytes()); if (entry.getTranscoder() != null) transcoders[n++] = entry.getTranscoder(); } if ((flags & CR_NEWLINE_DECORATOR) != 0) { TranscoderDB.Entry entry = TranscoderDB.getEntry(NULL_STRING, "cr_newline".getBytes()); if (entry.getTranscoder() != null) transcoders[n++] = entry.getTranscoder(); } int nTrans = numTranscoders; int j = 0; for (int i = 0; i < nTrans; i++) { int k; for (k = 0; k < n; k++) { if (transcoders[k] == elements[i].transcoding.transcoder) break; } if (k == n) { elements[j] = elements[i]; j++; } else { elements[i].transcoding.close(); numTranscoders--; } } flags &= ~NEWLINE_DECORATOR_MASK; } /* econv_description, rb_econv_open_exc, make_econv_exception */ /* more_output_buffer */ /* make_replacement */ public int makeReplacement() { if (replacementString != null) return 0; byte[] insEnc = encodingToInsertOutput(); final byte[] replEnc; final int len; final byte[] replacement; if (insEnc.length != 0) { // Transcoding transcoding = lastTranscoding; // Transcoder transcoder = transcoding.transcoder; // Encoding enc = EncodingDB.getEncodings().get(transcoder.destination).getEncoding(); // get_replacement_character if (caseInsensitiveEquals(insEnc, "UTF-8".getBytes())) { len = 3; replEnc = "UTF-8".getBytes(); replacement = new byte[] { (byte) 0xEF, (byte) 0xBF, (byte) 0xBD }; } else { len = 1; replEnc = "US-ASCII".getBytes(); replacement = new byte[] { '?' }; } } else { len = 1; replEnc = NULL_STRING; replacement = new byte[] { '?' }; } replacementString = replacement; replacementLength = len; replacementEncoding = replEnc; return 0; } /* rb_econv_set_replacement */ public int setReplacement(byte[] str, int p, int len, byte[] encname) { byte[] encname2 = encodingToInsertOutput(); final byte[] str2; final int p2 = 0; final int len2; if (encname2.length == 0 || caseInsensitiveEquals(encname, encname2)) { str2 = new byte[len]; System.arraycopy(str, p, str2, 0, len); // ?? len2 = len; encname2 = encname; } else { Ptr len2p = new Ptr(); str2 = allocateConvertedString(encname, encname2, str, p, len, null, len2p); if (str2 == null) return -1; len2 = len2p.p; } replacementString = str2; replacementLength = len2; replacementEncoding = encname2; return 0; } /* output_replacement_character */ int outputReplacementCharacter() { if (makeReplacement() == -1) return -1; if (insertOutput(replacementString, 0, replacementLength, replacementEncoding) == -1) return -1; return 0; } public String toStringFull() { String s = "EConv " + new String(source) + " => " + new String(destination) + "\n"; s += " started: " + started + "\n"; s += " replacement string: " + (replacementString == null ? "null" : new String(replacementString, 0, replacementLength)) + "\n"; s += " replacement encoding: " + (replacementEncoding == null ? "null" : new String(replacementEncoding)) + "\n"; s += "\n"; for (int i = 0; i < numTranscoders; i++) { s += " element " + i + ": " + elements[i].toString() + "\n"; } s += "\n"; s += " lastTranscoding: " + lastTranscoding + "\n"; s += " last error: " + (lastError == null ? "null" : lastError.toString()); return s; } // econv_equal @Override public boolean equals(Object other) { if (!(other instanceof EConv)) return false; EConv ec1 = this; EConv ec2 = (EConv)other; int i; if (ec2 == null) return false; if (ec1.source != ec2.source && !Arrays.equals(ec1.source, ec2.source)) return false; if (ec1.destination != ec2.destination && !Arrays.equals(ec1.destination, ec2.destination)) return false; if (ec1.flags != ec2.flags) return false; if (ec1.replacementEncoding != ec2.replacementEncoding && !Arrays.equals(ec1.replacementEncoding, ec2.replacementEncoding)) return false; if (ec1.replacementLength != ec2.replacementLength) return false; if (ec1.replacementString != ec2.replacementString && !memcmp(ec1.replacementString, ec2.replacementString, ec2.replacementLength)) return false; if (ec1.numTranscoders != ec2.numTranscoders) return false; for (i = 0; i < ec1.numTranscoders; i++) { if (ec1.elements[i].transcoding.transcoder != ec2.elements[i].transcoding.transcoder) return false; } return true; } private static boolean memcmp(byte[] a, byte[] b, int len) { for (int i = 0; i < len; i++) { if (a[i] != b[i]) return false; } return true; } } jcodings-1.0.58/src/org/jcodings/transcode/EConvFlags.java000066400000000000000000000044541433325321700234110ustar00rootroot00000000000000/* * Permission is hereby granted, free of charge, to any person obtaining a copy of * this software and associated documentation files (the "Software"), to deal in * the Software without restriction, including without limitation the rights to * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies * of the Software, and to permit persons to whom the Software is furnished to do * so, subject to the following conditions: * * The above copyright notice and this permission notice shall be included in all * copies or substantial portions of the Software. * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE * SOFTWARE. */ package org.jcodings.transcode; public interface EConvFlags { final int ERROR_HANDLER_MASK = 0x000000ff; final int INVALID_MASK = 0x0000000f; final int INVALID_REPLACE = 0x00000002; final int UNDEF_MASK = 0x000000f0; final int UNDEF_REPLACE = 0x00000020; final int UNDEF_HEX_CHARREF = 0x00000030; final int DECORATOR_MASK = 0x0000ff00; final int NEWLINE_DECORATOR_MASK = 0x00003f00; final int NEWLINE_DECORATOR_READ_MASK = 0x00000f00; final int NEWLINE_DECORATOR_WRITE_MASK = 0x00003000; final int UNIVERSAL_NEWLINE_DECORATOR = 0x00000100; final int CRLF_NEWLINE_DECORATOR = 0x00001000; final int CR_NEWLINE_DECORATOR = 0x00002000; final int XML_TEXT_DECORATOR = 0x00004000; final int XML_ATTR_CONTENT_DECORATOR = 0x00008000; final int STATEFUL_DECORATOR_MASK = 0x00f00000; final int XML_ATTR_QUOTE_DECORATOR = 0x00100000; final int PARTIAL_INPUT = 0x00010000; final int AFTER_OUTPUT = 0x00020000; final int MAX_ECFLAGS_DECORATORS = 32; }jcodings-1.0.58/src/org/jcodings/transcode/EConvResult.java000066400000000000000000000047761433325321700236420ustar00rootroot00000000000000/* * Permission is hereby granted, free of charge, to any person obtaining a copy of * this software and associated documentation files (the "Software"), to deal in * the Software without restriction, including without limitation the rights to * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies * of the Software, and to permit persons to whom the Software is furnished to do * so, subject to the following conditions: * * The above copyright notice and this permission notice shall be included in all * copies or substantial portions of the Software. * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE * SOFTWARE. */ package org.jcodings.transcode; public enum EConvResult { InvalidByteSequence, UndefinedConversion, DestinationBufferFull, SourceBufferEmpty, Finished, AfterOutput, IncompleteInput; public boolean isInvalidByteSequence() { return this == InvalidByteSequence; } public boolean isUndefinedConversion() { return this == UndefinedConversion; } public boolean isDestinationBufferFull() { return this == DestinationBufferFull; } public boolean isSourceBufferEmpty() { return this == SourceBufferEmpty; } public boolean isFinished() { return this == Finished; } public boolean isAfterOutput() { return this == AfterOutput; } public boolean isIncompleteInput() { return this == IncompleteInput; } public String symbolicName() { return symbolicName; } private final String symbolicName; { String name = name(); StringBuilder snakeName = new StringBuilder(name.length() + 3); for (int i = 0; i < name.length(); i++) { char c = name.charAt(i); if (Character.isLowerCase(c)) { snakeName.append(c); continue; } else if (Character.isUpperCase(c)) { if (i > 0) snakeName.append('_'); snakeName.append(Character.toLowerCase(c)); } } this.symbolicName = snakeName.toString().intern(); } }jcodings-1.0.58/src/org/jcodings/transcode/GenericTranscoder.java000066400000000000000000000034641433325321700250230ustar00rootroot00000000000000/* * Permission is hereby granted, free of charge, to any person obtaining a copy of * this software and associated documentation files (the "Software"), to deal in * the Software without restriction, including without limitation the rights to * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies * of the Software, and to permit persons to whom the Software is furnished to do * so, subject to the following conditions: * * The above copyright notice and this permission notice shall be included in all * copies or substantial portions of the Software. * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE * SOFTWARE. */ package org.jcodings.transcode; final class GenericTranscoder extends Transcoder { protected GenericTranscoder(String source, String destination, int treeStart, String arrayKey, int inputUnitLength, int maxInput, int maxOutput, AsciiCompatibility compatibility, int stateSize) { super(source, destination, treeStart, arrayKey, inputUnitLength, maxInput, maxOutput, compatibility, stateSize); } protected GenericTranscoder(byte[] source, byte[] destination, int treeStart, String arrayKey, int inputUnitLength, int maxInput, int maxOutput, AsciiCompatibility compatibility, int stateSize) { super(source, destination, treeStart, arrayKey, inputUnitLength, maxInput, maxOutput, compatibility, stateSize); } } jcodings-1.0.58/src/org/jcodings/transcode/TranscodeFunctions.java000066400000000000000000001360431433325321700252350ustar00rootroot00000000000000package org.jcodings.transcode; import org.jcodings.transcode.specific.From_UTF8_MAC_Transcoder; import java.util.Arrays; import static java.lang.Byte.toUnsignedInt; import static java.lang.Integer.toUnsignedLong; /** * Created by headius on 3/4/14. */ public class TranscodeFunctions { public static final int BE = 1; public static final int LE = 2; public static int funSoToCESU8(byte[] statep, byte[] s, int sStart, int l, byte[] o, int oStart, int osize) { long scalar = ((toUnsignedInt(s[sStart+0]) & 0x07) << 18) | ((toUnsignedInt(s[sStart+1]) & 0x3F) << 12) | ((toUnsignedInt(s[sStart+2]) & 0x3F) << 6) | (toUnsignedInt(s[sStart+3]) & 0x3F); scalar -= 0x10000; o[oStart+0] = (byte)0xED; o[oStart+1] = (byte)(0xA0 | (scalar >> 16)); o[oStart+2] = (byte)(0x80 | ((scalar >> 10) & 0x3F)); o[oStart+3] = (byte)0xED; o[oStart+4] = (byte)(0xB0 | ((scalar >> 6) & 0x0F)); o[oStart+5] = (byte)(0x80 | (scalar & 0x3F)); return 6; } public static int funSoFromCESU8(byte[] statep, byte[] s, int sStart, int l, byte[] o, int oStart, int osize) { long scalar = (((toUnsignedInt(s[sStart+1]) & 0x0F) << 16) | ((toUnsignedInt(s[sStart+2]) & 0x3F) << 10) | ((toUnsignedInt(s[sStart+4]) & 0x0F) << 6) | (toUnsignedInt(s[sStart+5]) & 0x3F)) + 0x10000; o[oStart+0] = (byte)(0xF0 | (scalar >> 18)); o[oStart+1] = (byte)(0x80 | ((scalar >> 12) & 0x3F)); o[oStart+2] = (byte)(0x80 | ((scalar >> 6) & 0x3F)); o[oStart+3] = (byte)(0x80 | (scalar & 0x3F)); return 4; } public static int funSoToUTF16(byte[] statep, byte[] sBytes, int sStart, int l, byte[] o, int oStart, int osize) { int sp = 0; if (statep[sp] == 0) { o[oStart++] = (byte)0xFE; o[oStart++] = (byte)0xFF; statep[sp] = (byte)1; return 2 + funSoToUTF16BE(statep, sBytes, sStart, l, o, oStart, osize); } return funSoToUTF16BE(statep, sBytes, sStart, l, o, oStart, osize); } public static int funSoToUTF16BE(byte[] statep, byte[] s, int sStart, int l, byte[] o, int oStart, int osize) { int s0 = toUnsignedInt(s[sStart]); int s1, s2, s3; if ((s0 & 0x80) == 0) { o[oStart] = 0x00; o[oStart + 1] = (byte)s0; return 2; } else if ((s0 & 0xE0) == 0xC0) { s1 = toUnsignedInt(s[sStart+1]); o[oStart] = (byte)((s0 >> 2) & 0x07); o[oStart + 1] = (byte)(((s0 & 0x03) << 6) | (s1 & 0x3F)); return 2; } else if ((s0 & 0xF0) == 0xE0) { s1 = toUnsignedInt(s[sStart+1]); s2 = toUnsignedInt(s[sStart+2]); o[oStart] = (byte)((s0 << 4) | ((s1 >> 2) ^ 0x20)); o[oStart + 1] = (byte)((s1 << 6) | (s2 ^ 0x80)); return 2; } else { s1 = toUnsignedInt(s[sStart+1]); s2 = toUnsignedInt(s[sStart+2]); s3 = toUnsignedInt(s[sStart+3]); int w = (((s0 & 0x07) << 2) | ((s1 >> 4) & 0x03)) - 1; o[oStart] = (byte)(0xD8 | (w >> 2)); o[oStart + 1] = (byte)((w << 6) | ((s1 & 0x0F) << 2) | ((s2 >> 4) - 8)); o[oStart + 2] = (byte)(0xDC | ((s2 >> 2) & 0x03)); o[oStart + 3] = (byte)((s2 << 6) | (s3 & ~0x80)); return 4; } } public static int funSoToUTF16LE(byte[] statep, byte[] s, int sStart, int l, byte[] o, int oStart, int osize) { int s0 = toUnsignedInt(s[sStart]); int s1; if ((s0 & 0x80) == 0) { o[oStart + 1] = (byte)0x00; o[oStart] = (byte)s0; return 2; } else if ((s0 & 0xE0) == 0xC0) { s1 = toUnsignedInt(s[sStart+1]); o[oStart + 1] = (byte)((s0 >> 2) & 0x07); o[oStart] = (byte)(((s0 & 0x03) << 6) | (s1 & 0x3F)); return 2; } else if ((s0 & 0xF0) == 0xE0) { s1 = toUnsignedInt(s[sStart+1]); int s2 = toUnsignedInt(s[sStart+2]); o[oStart + 1] = (byte)((s0 << 4) | ((s1 >> 2) ^ 0x20)); o[oStart] = (byte)((s1 << 6) | (s2 ^ 0x80)); return 2; } else { s1 = toUnsignedInt(s[sStart+1]); int s2 = toUnsignedInt(s[sStart+2]); int s3 = toUnsignedInt(s[sStart+3]); int w = (((s0 & 0x07) << 2) | ((s1 >> 4) & 0x03)) - 1; o[oStart + 1] = (byte)(0xD8 | (w >> 2)); o[oStart] = (byte)((w << 6) | ((s1 & 0x0F) << 2) | ((s2 >> 4) - 8)); o[oStart + 3] = (byte)(0xDC | ((s2 >> 2) & 0x03)); o[oStart + 2] = (byte)((s2 << 6) | (s3 & ~0x80)); return 4; } } public static int funSoToUTF32(byte[] statep, byte[] s, int sStart, int l, byte[] o, int oStart, int osize) { int sp = 0; if (statep[sp] == 0) { o[oStart++] = 0x00; o[oStart++] = 0x00; o[oStart++] = (byte)0xFE; o[oStart++] = (byte)0xFF; statep[sp] = 1; return 4 + funSoToUTF32BE(statep, s, sStart, l, o, oStart, osize); } return funSoToUTF32BE(statep, s, sStart, l, o, oStart, osize); } public static int funSoToUTF32BE(byte[] statep, byte[] s, int sStart, int l, byte[] o, int oStart, int osize) { int s0 = toUnsignedInt(s[sStart]); int s1, s2, s3; o[oStart] = 0; if ((s0 & 0x80) == 0) { o[oStart + 1] = o[oStart + 2] = 0x00; o[oStart + 3] = (byte)s0; } else if ((s0 & 0xE0) == 0xC0) { s1 = toUnsignedInt(s[sStart+1]); o[oStart + 1] = 0x00; o[oStart + 2] = (byte)((s0 >> 2) & 0x07); o[oStart + 3] = (byte)(((s0 & 0x03) << 6) | (s1 & 0x3F)); } else if ((s0 & 0xF0) == 0xE0) { s1 = toUnsignedInt(s[sStart+1]); s2 = toUnsignedInt(s[sStart+2]); o[oStart + 1] = 0x00; o[oStart + 2] = (byte)((s0 << 4) | ((s1 >> 2) ^ 0x20)); o[oStart + 3] = (byte)((s1 << 6) | (s2 ^ 0x80)); } else { s1 = toUnsignedInt(s[sStart+1]); s2 = toUnsignedInt(s[sStart+2]); s3 = toUnsignedInt(s[sStart+3]); o[oStart + 1] = (byte)(((s0 & 0x07) << 2) | ((s1 >> 4) & 0x03)); o[oStart + 2] = (byte)(((s1 & 0x0F) << 4) | ((s2 >> 2) & 0x0F)); o[oStart + 3] = (byte)(((s2 & 0x03) << 6) | (s3 & 0x3F)); } return 4; } public static int funSoToUTF32LE(byte[] statep, byte[] s, int sStart, int l, byte[] o, int oStart, int osize) { o[oStart+3] = 0; int s0 = toUnsignedInt(s[sStart]); if ((s0 & 0x80) == 0) { o[oStart + 2] = o[oStart+1] = 0x00; o[oStart] = (byte)s0; } else if ((s[sStart] & 0xE0) == 0xC0) { int s1 = toUnsignedInt(s[sStart+1]); o[oStart + 2] = 0x00; o[oStart + 1] = (byte)((s0 >> 2) & 0x07); o[oStart] = (byte)(((s0 & 0x03) << 6) | (s1 & 0x3F)); } else if ((s[sStart] & 0xF0) == 0xE0) { int s1 = toUnsignedInt(s[sStart+1]); int s2 = toUnsignedInt(s[sStart+2]); o[oStart + 2] = 0x00; o[oStart + 1] = (byte)((s0 << 4) | ((s1 >> 2) ^ 0x20)); o[oStart] = (byte)((s1 << 6) | (s2 ^ 0x80)); } else { int s1 = toUnsignedInt(s[sStart+1]); int s2 = toUnsignedInt(s[sStart+2]); int s3 = toUnsignedInt(s[sStart+3]); o[oStart + 2] = (byte)(((s0 & 0x07) << 2) | ((s1 >> 4) & 0x03)); o[oStart + 1] = (byte)(((s1 & 0x0F) << 4) | ((s2 >> 2) & 0x0F)); o[oStart] = (byte)(((s2 & 0x03) << 6) | (s3 & 0x3F)); } return 4; } public static int funSiFromUTF32(byte[] statep, byte[] s, int sStart, int l) { int s0 = toUnsignedInt(s[sStart]); int s1 = toUnsignedInt(s[sStart+1]); int s2 = toUnsignedInt(s[sStart+2]); int s3; byte[] sp = statep; switch (sp[0]) { case 0: s3 = toUnsignedInt(s[sStart+3]); if (s0 == 0 && s1 == 0 && s2 == 0xFE && s3 == 0xFF) { sp[0] = BE; return TranscodingInstruction.ZERObt; } else if (s0 == 0xFF && s1 == 0xFE && s2 == 0 && s3 == 0) { sp[0] = LE; return TranscodingInstruction.ZERObt; } break; case BE: if (s0 == 0 && ((0 < s1 && s1 <= 0x10)) || (s1 == 0 && (s2 < 0xD8 || 0xDF < s2))) { return TranscodingInstruction.FUNso; } break; case LE: s3 = toUnsignedInt(s[sStart+3]); if (s3 == 0 && ((0 < s2 && s2 <= 0x10) || (s2 == 0 && (s1 < 0xD8 || 0xDF < s1)))) return TranscodingInstruction.FUNso; break; } return TranscodingInstruction.INVALID; } public static int funSoFromUTF32(byte[] statep, byte[] s, int sStart, int l, byte[] o, int oStart, int osize) { switch (statep[0]) { case BE: return funSoFromUTF32BE(statep, s, sStart, l, o, oStart, osize); case LE: return funSoFromUTF32LE(statep, s, sStart, l, o, oStart, osize); } return 0; } public static int funSoFromUTF32BE(byte[] statep, byte[] s, int sStart, int l, byte[] o, int oStart, int osize) { int s1 = toUnsignedInt(s[sStart+1]); int s2 = toUnsignedInt(s[sStart+2]); int s3 = toUnsignedInt(s[sStart+3]); if (s1 == 0) { if (s2 == 0 && s3 < 0x80) { o[oStart] = (byte)s3; return 1; } else if (s2 < 0x08) { o[oStart] = (byte)(0xC0 | (s2 << 2) | (s3 >> 6)); o[oStart + 1] = (byte)(0x80 | (s3 & 0x3F)); return 2; } else { o[oStart] = (byte)(0xE0 | (s2 >> 4)); o[oStart + 1] = (byte)(0x80 | ((s2 & 0x0F) << 2) | (s3 >> 6)); o[oStart + 2] = (byte)(0x80 | (s3 & 0x3F)); return 3; } } else { o[oStart] = (byte)(0xF0 | (s1 >> 2)); o[oStart + 1] = (byte)(0x80 | ((s1 & 0x03) << 4) | (s2 >> 4)); o[oStart + 2] = (byte)(0x80 | ((s2 & 0x0F) << 2) | (s3 >> 6)); o[oStart + 3] = (byte)(0x80 | (s3 & 0x3F)); return 4; } } public static int funSoFromUTF32LE(byte[] statep, byte[] s, int sStart, int l, byte[] o, int oStart, int osize) { int s0 = toUnsignedInt(s[sStart]); int s1 = toUnsignedInt(s[sStart+1]); int s2 = toUnsignedInt(s[sStart+2]); if (s2 == 0) { if (s1 == 0 && s0 < 0x80) { o[oStart] = (byte)s0; return 1; } else if (s1 < 0x08) { o[oStart] = (byte)(0xC0 | (s1 << 2) | (s0 >> 6)); o[oStart + 1] = (byte)(0x80 | (s0 & 0x3F)); return 2; } else { o[oStart] = (byte)(0xE0 | (s1 >> 4)); o[oStart + 1] = (byte)(0x80 | ((s1 & 0x0F) << 2) | (s0 >> 6)); o[oStart + 2] = (byte)(0x80 | (s0 & 0x3F)); return 3; } } else { o[oStart] = (byte)(0xF0 | (s2 >> 2)); o[oStart + 1] = (byte)(0x80 | ((s2 & 0x03) << 4) | (s1 >> 4)); o[oStart + 2] = (byte)(0x80 | ((s1 & 0x0F) << 2) | (s0 >> 6)); o[oStart + 3] = (byte)(0x80 | (s0 & 0x3F)); return 4; } } public static final int from_UTF_16BE_D8toDB_00toFF = Transcoding.WORDINDEX2INFO(39); public static final int from_UTF_16LE_00toFF_D8toDB = Transcoding.WORDINDEX2INFO(5); public static int funSiFromUTF16(byte[] statep, byte[] s, int sStart, int l) { int s0 = toUnsignedInt(s[sStart]); int s1; byte[] sp = statep; switch (sp[0]) { case 0: s1 = toUnsignedInt(s[sStart+1]); if (s0 == 0xFE && s1 == 0xFF) { sp[0] = BE; return TranscodingInstruction.ZERObt; } else if (s0 == 0xFF && s1 == 0xFE) { sp[0] = LE; return TranscodingInstruction.ZERObt; } break; case BE: if (s0 < 0xD8 || 0xDF < s0) { return TranscodingInstruction.FUNso; } else if (s0 <= 0xDB) { return from_UTF_16BE_D8toDB_00toFF; } break; case LE: s1 = toUnsignedInt(s[sStart+1]); if (s1 < 0xD8 || 0xDF < s1) { return TranscodingInstruction.FUNso; } else if (s1 <= 0xDB) { return from_UTF_16LE_00toFF_D8toDB; } break; } return TranscodingInstruction.INVALID; } public static int funSoFromUTF16(byte[] statep, byte[] s, int sStart, int l, byte[] o, int oStart, int osize) { switch (statep[0]) { case BE: return funSoFromUTF16BE(statep, s, sStart, l, o, oStart, osize); case LE: return funSoFromUTF16LE(statep, s, sStart, l, o, oStart, osize); } return 0; } public static int funSoFromUTF16BE(byte[] statep, byte[] s, int sStart, int l, byte[] o, int oStart, int osize) { int s0 = toUnsignedInt(s[sStart]); int s1 = toUnsignedInt(s[sStart+1]); int s2, s3; if (s0 == 0 && s1 < 0x80) { o[oStart] = (byte)s1; return 1; } else if (s0 < 0x08) { o[oStart] = (byte)(0xC0 | (s0 << 2) | (s1 >> 6)); o[oStart + 1] = (byte)(0x80 | (s1 & 0x3F)); return 2; } else if ((s0 & 0xF8) != 0xD8) { o[oStart] = (byte)(0xE0 | (s0 >> 4)); o[oStart + 1] = (byte)(0x80 | ((s0 & 0x0F) << 2) | (s1 >> 6)); o[oStart + 2] = (byte)(0x80 | (s1 & 0x3F)); return 3; } else { s2 = toUnsignedInt(s[sStart+2]); s3 = toUnsignedInt(s[sStart+3]); long u = (((s0 & 0x03) << 2) | (s1 >> 6)) + 1; o[oStart] = (byte)(0xF0 | (u >> 2)); o[oStart + 1] = (byte)(0x80 | ((u & 0x03) << 4) | (((s1 >> 2) & 0x0F))); o[oStart + 2] = (byte)(0x80 | ((s1 & 0x03) << 4) | ((s2 & 0x03) << 2) | (s3 >> 6)); o[oStart + 3] = (byte)(0x80 | (s3 & 0x3F)); return 4; } } public static int funSoFromUTF16LE(byte[] statep, byte[] s, int sStart, int l, byte[] o, int oStart, int osize) { int s0 = toUnsignedInt(s[sStart]); int s1 = toUnsignedInt(s[sStart+1]); if (s1 == 0 && s0 < 0x80) { o[oStart] = (byte)s0; return 1; } else if (s1 < 0x08) { o[oStart] = (byte)(0xC0 | (s1 << 2) | (s0 >> 6)); o[oStart + 1] = (byte)(0x80 | (s0 & 0x3F)); return 2; } else if ((s1 & 0xF8) != 0xD8) { o[oStart] = (byte)(0xE0 | (s1 >> 4)); o[oStart + 1] = (byte)(0x80 | ((s1 & 0x0F) << 2) | (s0 >> 6)); o[oStart + 2] = (byte)(0x80 | (s0 & 0x3F)); return 3; } else { int s2 = toUnsignedInt(s[sStart+2]); int s3 = toUnsignedInt(s[sStart+3]); long u = (((s1 & 0x03) << 2) | (s0 >> 6)) + 1; o[oStart] = (byte)(0xF0 | (u >> 2)); o[oStart + 1] = (byte)(0x80 | ((u & 0x03) << 4) | ((s0 >> 2) & 0x0F)); o[oStart + 2] = (byte)(0x80 | ((s0 & 0x03) << 4) | ((s3 & 0x03) << 2) | (s2 >> 6)); o[oStart + 3] = (byte)(0x80 | (s2 & 0x3F)); return 4; } } public static int funSoEucjp2Sjis(byte[] statep, byte[] s, int sStart, int _l, byte[] o, int oStart, int osize) { int s0 = toUnsignedInt(s[sStart]); int s1 = toUnsignedInt(s[sStart+1]); if (s0 == 0x8e) { o[oStart] = (byte)s1; return 1; } else { int h, m, l; m = s0 & 1; h = (s0 + m) >> 1; h += s0 < 0xdf ? 0x30 : 0x70; l = s1 - m * 94 - 3; if (0x7f <= l) { l++; } o[oStart] = (byte)h; o[oStart+1] = (byte)l; return 2; } } public static int funSoSjis2Eucjp(byte[] statep, byte[] s, int sStart, int _l, byte[] o, int oStart, int osize) { int s0 = toUnsignedInt(s[sStart]); if (_l == 1) { o[oStart] = (byte)0x8E; o[oStart+1] = (byte)s0; return 2; } else { int h, l; h = s0; l = Byte.toUnsignedInt(s[sStart+1]); if (0xe0 <= h) { h -= 64; } l += l < 0x80 ? 0x61 : 0x60; h = h * 2 - 0x61; if (0xfe < l) { l -= 94; h += 1; } o[oStart] = (byte)h; o[oStart+1] = (byte)l; return 2; } } public static int funSoFromGB18030(byte[] statep, byte[] s, int sStart, int l, byte[] o, int oStart, int osize) { int s0 = toUnsignedInt(s[sStart]); int s1 = toUnsignedInt(s[sStart+1]); int s2 = toUnsignedInt(s[sStart+2]); int s3 = toUnsignedInt(s[sStart+3]); long u = toUnsignedLong((s0 - 0x90) * 10 * 126 * 10 + (s1 - 0x30) * 126 * 10 + (s2 - 0x81) * 10 + (s3 - 0x30) + 0x10000); o[oStart] = (byte)(0xF0 | (u >>> 18)); o[oStart+1] = (byte)(0x80 | ((u >>> 12) & 0x3F)); o[oStart+2] = (byte)(0x80 | ((u >>> 6) & 0x3F)); o[oStart+3] = (byte)(0x80 | (u & 0x3F)); return 4; } public static int funSioFromGB18030(byte[] statep, byte[] s, int sStart, int l, int info, byte[] o, int oStart, int osize) { int s0 = toUnsignedInt(s[sStart]); int s1 = toUnsignedInt(s[sStart+1]); int diff = info >> 8; long u; /* Unicode Scalar Value */ if ((diff & 0x20000) != 0) { /* GB18030 4 bytes */ int s2 = toUnsignedInt(s[sStart+2]); int s3 = toUnsignedInt(s[sStart+3]); u = toUnsignedLong(((s0 * 10 + s1) * 126 + s2) * 10 + s3 - diff - 0x170000); } else { /* GB18030 2 bytes */ u = toUnsignedLong(s0 * 256 + s1 + 24055 - diff); } o[oStart] = (byte)(0xE0 | (u >>> 12)); o[oStart+1] = (byte)(0x80 | ((u >>> 6) & 0x3F)); o[oStart+2] = (byte)(0x80 | (u & 0x3F)); return 3; } public static int funSoToGB18030(byte[] statep, byte[] s, int sStart, int l, byte[] o, int oStart, int osize) { long s0 = toUnsignedInt(s[sStart]); long s1 = toUnsignedInt(s[sStart+1]); long s2 = toUnsignedInt(s[sStart+2]); long s3 = toUnsignedInt(s[sStart+3]); long u = ((s0 & 0x07) << 18) | ((s1 & 0x3F) << 12) | ((s2 & 0x3F) << 6) | (s3 & 0x3F); u -= 0x10000; o[oStart+3] = (byte)(0x30 + (u % 10)); u /= 10; o[oStart+2] = (byte)(0x81 + (u % 126)); u /= 126; o[oStart+1] = (byte)(0x30 + (u % 10)); o[oStart] = (byte)(0x90 + u / 10); return 4; } public static int funSioToGB18030(byte[] statep, byte[] s, int sStart, int l, int info, byte[] o, int oStart, int osize) { long s0 = toUnsignedInt(s[sStart]); long s1 = toUnsignedInt(s[sStart+1]); long s2 = toUnsignedInt(s[sStart+2]); long diff = info >>> 8; long u; /* Unicode Scalar Value */ u = ((s0 & 0x0F) << 12) | ((s1 & 0x3F) << 6) | (s2 & 0x3F); if ((diff & 0x20000) != 0) { /* GB18030 4 bytes */ u += (diff + 0x170000); u -= 1688980; u += 0x2; o[oStart+3] = (byte)(0x30 + (u % 10)); u /= 10; u += 0x32; o[oStart+2] = (byte)(0x81 + (u % 126)); u /= 126; u += 0x1; o[oStart+1] = (byte)(0x30 + (u % 10)); u /= 10; o[oStart] = (byte)(0x81 + u); return 4; } else { /* GB18030 2 bytes */ u += (diff - 24055); o[oStart+1] = (byte)(u % 256); o[oStart] = (byte)(u / 256); return 2; } } public static int iso2022jpInit(byte[] state) { state[0] = G0_ASCII; return 0; } public static final byte G0_ASCII = 0; public static final byte G0_JISX0208_1978 = 1; public static final byte G0_JISX0208_1983 = 2; public static final byte G0_JISX0201_KATAKANA = 3; public static final int EMACS_MULE_LEADING_CODE_JISX0208_1978 = 0220; public static final int EMACS_MULE_LEADING_CODE_JISX0208_1983 = 0222; public static final byte[] tbl0208 = { (byte)0x21, (byte)0x23, (byte)0x21, (byte)0x56, (byte)0x21, (byte)0x57, (byte)0x21, (byte)0x22, (byte)0x21, (byte)0x26, (byte)0x25, (byte)0x72, (byte)0x25, (byte)0x21, (byte)0x25, (byte)0x23, (byte)0x25, (byte)0x25, (byte)0x25, (byte)0x27, (byte)0x25, (byte)0x29, (byte)0x25, (byte)0x63, (byte)0x25, (byte)0x65, (byte)0x25, (byte)0x67, (byte)0x25, (byte)0x43, (byte)0x21, (byte)0x3C, (byte)0x25, (byte)0x22, (byte)0x25, (byte)0x24, (byte)0x25, (byte)0x26, (byte)0x25, (byte)0x28, (byte)0x25, (byte)0x2A, (byte)0x25, (byte)0x2B, (byte)0x25, (byte)0x2D, (byte)0x25, (byte)0x2F, (byte)0x25, (byte)0x31, (byte)0x25, (byte)0x33, (byte)0x25, (byte)0x35, (byte)0x25, (byte)0x37, (byte)0x25, (byte)0x39, (byte)0x25, (byte)0x3B, (byte)0x25, (byte)0x3D, (byte)0x25, (byte)0x3F, (byte)0x25, (byte)0x41, (byte)0x25, (byte)0x44, (byte)0x25, (byte)0x46, (byte)0x25, (byte)0x48, (byte)0x25, (byte)0x4A, (byte)0x25, (byte)0x4B, (byte)0x25, (byte)0x4C, (byte)0x25, (byte)0x4D, (byte)0x25, (byte)0x4E, (byte)0x25, (byte)0x4F, (byte)0x25, (byte)0x52, (byte)0x25, (byte)0x55, (byte)0x25, (byte)0x58, (byte)0x25, (byte)0x5B, (byte)0x25, (byte)0x5E, (byte)0x25, (byte)0x5F, (byte)0x25, (byte)0x60, (byte)0x25, (byte)0x61, (byte)0x25, (byte)0x62, (byte)0x25, (byte)0x64, (byte)0x25, (byte)0x66, (byte)0x25, (byte)0x68, (byte)0x25, (byte)0x69, (byte)0x25, (byte)0x6A, (byte)0x25, (byte)0x6B, (byte)0x25, (byte)0x6C, (byte)0x25, (byte)0x6D, (byte)0x25, (byte)0x6F, (byte)0x25, (byte)0x73, (byte)0x21, (byte)0x2B, (byte)0x21, (byte)0x2C}; public static int funSoCp50220Encoder(byte[] statep, byte[] s, int sStart, int l, byte[] o, int oStart, int oSize) { int s0; int s1; int output0 = oStart; byte[] sp = statep; if (sp[0] == G0_JISX0201_KATAKANA) { int c = sp[2] & 0x7F; int p = (c - 0x21) * 2; byte[] pBytes = tbl0208; if (sp[1] != G0_JISX0208_1983) { o[oStart++] = 0x1B; o[oStart++] = (byte)'$'; o[oStart++] = (byte)'B'; } sp[0] = G0_JISX0208_1983; o[oStart++] = pBytes[p++]; s0 = toUnsignedInt(s[sStart]); s1 = toUnsignedInt(s[sStart+1]); if (l == 2 && s0 == 0x8E) { if (s1 == 0xDE) { o[oStart++] = (byte)(pBytes[p] + 1); return oStart - output0; } else if (s1 == 0xDF && (0x4A <= c && c <= 0x4E)) { o[oStart++] = (byte)(pBytes[p] + 2); return oStart - output0; } } o[oStart++] = pBytes[p]; } s0 = toUnsignedInt(s[sStart]); if (l == 2 && s0 == 0x8E) { s1 = toUnsignedInt(s[sStart+1]); int p = (s1 - 0xA1) * 2; byte[] pBytes = tbl0208; if ((0xA1 <= s1 && s1 <= 0xB5) || (0xC5 <= s1 && s1 <= 0xC9) || (0xCF <= s1 && s1 <= 0xDF)) { if (sp[0] != G0_JISX0208_1983) { o[oStart++] = 0x1b; o[oStart++] = '$'; o[oStart++] = 'B'; sp[0] = G0_JISX0208_1983; } o[oStart++] = pBytes[p++]; o[oStart++] = pBytes[p]; return oStart - output0; } sp[2] = (byte)s1; sp[1] = sp[0]; sp[0] = G0_JISX0201_KATAKANA; return oStart - output0; } oStart += funSoCp5022xEncoder(statep, s, sStart, l, o, oStart, oSize); return oStart - output0; } public static int funSoCp5022xEncoder(byte[] statep, byte[] s, int sStart, int l, byte[] o, int oStart, int oSize) { int s0, s1; byte[] sp = statep; int output0 = oStart; int newstate; if (l == 1) { newstate = G0_ASCII; } else if (toUnsignedInt(s[sStart]) == 0x8E) { sStart++; l = 1; newstate = G0_JISX0201_KATAKANA; } else { newstate = G0_JISX0208_1983; } if (sp[0] != newstate) { if (newstate == G0_ASCII) { o[oStart++] = 0x1b; o[oStart++] = '('; o[oStart++] = 'B'; } else if (newstate == G0_JISX0201_KATAKANA) { o[oStart++] = 0x1b; o[oStart++] = '('; o[oStart++] = 'I'; } else { o[oStart++] = 0x1b; o[oStart++] = '$'; o[oStart++] = 'B'; } sp[0] = (byte)newstate; } s0 = toUnsignedInt(s[sStart]); if (l == 1) { o[oStart++] = (byte)(s0 & 0x7f); } else { s1 = toUnsignedInt(s[sStart+1]); o[oStart++] = (byte)(s0 & 0x7f); o[oStart++] = (byte)(s1 & 0x7f); } return oStart - output0; } public static int finishCp50220Encoder(byte[] statep, byte[] o, int oStart, int size) { byte[] sp = statep; int output0 = oStart; if (sp[0] == G0_ASCII) return 0; if (sp[0] == G0_JISX0201_KATAKANA) { int c = sp[2] & 0x7F; int p = (c - 0x21) * 2; byte[] pBytes = tbl0208; if (sp[1] != G0_JISX0208_1983) { o[oStart++] = 0x1b; o[oStart++] = '$'; o[oStart++] = 'B'; } sp[0] = G0_JISX0208_1983; o[oStart++] = pBytes[p++]; o[oStart++] = pBytes[p]; } o[oStart++] = 0x1b; o[oStart++] = '('; o[oStart++] = 'B'; sp[0] = G0_ASCII; return oStart - output0; } public static int iso2022jpEncoderResetSequenceSize(byte[] statep) { byte[] sp = statep; if (sp[0] != G0_ASCII) return 3; return 0; } public static final int iso2022jp_decoder_jisx0208_rest = Transcoding.WORDINDEX2INFO(16); public static int funSiIso50220jpDecoder(byte[] statep, byte[] s, int sStart, int l) { int s0 = toUnsignedInt(s[sStart]); byte[] sp = statep; if (sp[0] == G0_ASCII) return TranscodingInstruction.NOMAP; else if (0x21 <= s0 && s0 <= 0x7e) return iso2022jp_decoder_jisx0208_rest; else return TranscodingInstruction.INVALID; } public static int funSoIso2022jpDecoder(byte[] statep, byte[] s, int sStart, int l, byte[] o, int oStart, int oSize) { int s0 = toUnsignedInt(s[sStart]); int s1 = toUnsignedInt(s[sStart+1]); byte[] sp = statep; if (s0 == 0x1b) { if (s1 == '(') { switch (toUnsignedInt(s[sStart+l-1])) { case 'B': case 'J': sp[0] = G0_ASCII; break; } } else { switch (s[sStart+l-1]) { case '@': sp[0] = G0_JISX0208_1978; break; case 'B': sp[0] = G0_JISX0208_1983; break; } } return 0; } else { if (sp[0] == G0_JISX0208_1978) { o[oStart] = (byte)EMACS_MULE_LEADING_CODE_JISX0208_1978; } else { o[oStart] = (byte)EMACS_MULE_LEADING_CODE_JISX0208_1983; } o[oStart+1] = (byte)(s0 | 0x80); o[oStart+2] = (byte)(s1 | 0x80); return 3; } } public static int funSoStatelessIso2022jpToEucjp(byte[] statep, byte[] s, int sStart, int l, byte[] o, int oStart, int oSize) { o[oStart] = s[sStart+1]; o[oStart+1] = s[sStart+2]; return 2; } public static int funSoEucjpToStatelessIso2022jp(byte[] statep, byte[] s, int sStart, int l, byte[] o, int oStart, int oSize) { o[oStart] = (byte)EMACS_MULE_LEADING_CODE_JISX0208_1983; o[oStart+1] = s[sStart]; o[oStart+2] = s[sStart+1]; return 3; } public static int funSoIso2022jpEncoder(byte[] statep, byte[] s, int sStart, int l, byte[] o, int oStart, int oSize) { byte[] sp = statep; int output0 = oStart; int newstate; if (l == 1) newstate = G0_ASCII; else if (toUnsignedInt(s[sStart]) == EMACS_MULE_LEADING_CODE_JISX0208_1978) newstate = G0_JISX0208_1978; else newstate = G0_JISX0208_1983; if (sp[0] != newstate) { if (newstate == G0_ASCII) { o[oStart++] = 0x1b; o[oStart++] = '('; o[oStart++] = 'B'; } else if (newstate == G0_JISX0208_1978) { o[oStart++] = 0x1b; o[oStart++] = '$'; o[oStart++] = '@'; } else { o[oStart++] = 0x1b; o[oStart++] = '$'; o[oStart++] = 'B'; } sp[0] = (byte)newstate; } if (l == 1) { o[oStart++] = (byte)(s[sStart] & 0x7f); } else { o[oStart++] = (byte)(s[sStart+1] & 0x7f); o[oStart++] = (byte)(s[sStart+2] & 0x7f); } return oStart - output0; } public static int finishIso2022jpEncoder(byte[] statep, byte[] o, int oStart, int oSize) { byte[] sp = statep; int output0 = oStart; if (sp[0] == G0_ASCII) return 0; o[oStart++] = 0x1b; o[oStart++] = '('; o[oStart++] = 'B'; sp[0] = G0_ASCII; return oStart - output0; } public static int funSiCp50221Decoder(byte[] statep, byte[] s, int sStart, int l) { byte[] sp = statep; int c; int s0 = toUnsignedInt(s[sStart]); switch (sp[0]) { case G0_ASCII: if (0xA1 <= s0 && s0 <= 0xDF) return TranscodingInstruction.FUNso; return TranscodingInstruction.NOMAP; case G0_JISX0201_KATAKANA: c = s0 & 0x7F; if (0x21 <= c && c <= 0x5f) return TranscodingInstruction.FUNso; break; case G0_JISX0208_1978: if ((0x21 <= s0 && s0 <= 0x28) || (0x30 <= s0 && s0 <= 0x74)) return iso2022jp_decoder_jisx0208_rest; break; case G0_JISX0208_1983: if ((0x21 <= s0 && s0 <= 0x28) || s0 == 0x2D || (0x30 <= s0 && s0 <= 0x74) || (0x79 <= s0 && s0 <= 0x7C)) { /* 0x7F <= s0 && s0 <= 0x92) */ return iso2022jp_decoder_jisx0208_rest; } break; } return TranscodingInstruction.INVALID; } public static int funSoCp50221Decoder(byte[] statep, byte[] s, int sStart, int l, byte[] o, int oStart, int oSize) { int s0 = s[sStart]&0xFF; int s1; byte[] sp = statep; switch (s0) { case 0x1b: s1 = s[sStart+1]&0xFF; if (s1 == '(') { switch ((s[sStart+l-1]&0xFF)) { case 'B': case 'J': sp[0] = G0_ASCII; break; case 'I': sp[0] = G0_JISX0201_KATAKANA; break; } } else { switch (s[sStart+l-1]&0xFF) { case '@': sp[0] = G0_JISX0208_1978; break; case 'B': sp[0] = G0_JISX0208_1983; break; } } return 0; case 0x0E: sp[0] = G0_JISX0201_KATAKANA; return 0; case 0x0F: sp[0] = G0_ASCII; return 0; default: if (sp[0] == G0_JISX0201_KATAKANA || (0xA1 <= s0 && s0 <= 0xDF && sp[0] == G0_ASCII)) { o[oStart] = (byte)0x8E; o[oStart+1] = (byte)(s0 | 0x80); } /* else if (0x7F == s[0] && s[0] <= 0x88) { */ /* User Defined Characters */ /* o[n++] = s[0] | 0xE0; */ /* o[n++] = s[1] | 0x80; */ /* else if (0x89 <= s[0] && s[0] <= 0x92) { */ /* User Defined Characters 2 */ /* o[n++] = 0x8f; */ /* o[n++] = s[0] + 0x6C; */ /* o[n++] = s[1] | 0x80; */ /* } */ else { /* JIS X 0208 */ /* NEC Special Characters */ /* NEC-selected IBM extended Characters */ s1 = s[sStart+1]&0xFF; o[oStart] = (byte)(s0 | 0x80); o[oStart+1] = (byte)(s1 | 0x80); } return 2; } } public static int iso2022jpKddiInit(byte[] statep) { statep[0] = G0_ASCII; return 0; } public static final int iso2022jp_kddi_decoder_jisx0208_rest = Transcoding.WORDINDEX2INFO(16); public static int funSiIso2022jpKddiDecoder(byte[] statep, byte[] s, int sStart, int l) { int s0 = toUnsignedInt(s[sStart]); byte[] sp = statep; if (sp[0] == G0_ASCII) { return TranscodingInstruction.NOMAP; } else if (0x21 <= s0 && s0 <= 0x7e) { return iso2022jp_kddi_decoder_jisx0208_rest; } else { return TranscodingInstruction.INVALID; } } public static int funSoIso2022jpKddiDecoder(byte[] statep, byte[] s, int sStart, int l, byte[] o, int oStart, int oSize) { int s0 = toUnsignedInt(s[sStart]); int s1 = toUnsignedInt(s[sStart+1]); byte[] sp = statep; if (s0 == 0x1b) { if (s1 == '(') { switch (toUnsignedInt(s[sStart+l-1])) { case 'B': /* US-ASCII */ case 'J': /* JIS X 0201 Roman */ sp[0] = G0_ASCII; break; } } else { switch (toUnsignedInt(s[sStart+l-1])) { case '@': sp[0] = G0_JISX0208_1978; break; case 'B': sp[0] = G0_JISX0208_1983; break; } } return 0; } else { if (sp[0] == G0_JISX0208_1978) { o[oStart] = (byte)EMACS_MULE_LEADING_CODE_JISX0208_1978; } else { o[oStart] = (byte)EMACS_MULE_LEADING_CODE_JISX0208_1983; } o[oStart+1] = (byte)(s0 | 0x80); o[oStart+2] = (byte)(s1 | 0x80); return 3; } } public static int funSoIso2022jpKddiEncoder(byte[] statep, byte[] s, int sStart, int l, byte[] o, int oStart, int oSize) { int s0 = toUnsignedInt(s[sStart]); int s1, s2; byte[] sp = statep; int output0 = oStart; int newstate; if (l == 1) newstate = G0_ASCII; else if (s0 == EMACS_MULE_LEADING_CODE_JISX0208_1978) newstate = G0_JISX0208_1978; else newstate = G0_JISX0208_1983; if (sp[0] != newstate) { o[oStart++] = 0x1b; switch (newstate) { case G0_ASCII: o[oStart++] = '('; o[oStart++] = 'B'; break; case G0_JISX0208_1978: o[oStart++] = '$'; o[oStart++] = '@'; break; default: o[oStart++] = '$'; o[oStart++] = 'B'; break; } sp[0] = (byte)newstate; } if (l == 1) { o[oStart++] = (byte)(s0 & 0x7f); } else { s1 = toUnsignedInt(s[sStart+1]); s2 = toUnsignedInt(s[sStart+2]); o[oStart++] = (byte)(s1 & 0x7f); o[oStart++] = (byte)(s2 & 0x7f); } return oStart - output0; } public static int finishIso2022jpKddiEncoder(byte[] statep, byte[] o, int oStart, int oSize) { byte[] sp = statep; int output0 = oStart; if (sp[0] == G0_ASCII) return 0; o[oStart++] = 0x1b; o[oStart++] = '('; o[oStart++] = 'B'; sp[0] = G0_ASCII; return oStart - output0; } public static int iso2022jpKddiEncoderResetSequence_size(byte[] statep) { byte[] sp = statep; if (sp[0] != G0_ASCII) return 3; return 0; } public static int fromUtf8MacInit(byte[] state) { bufClear(state); return 0; } private static final int STATUS_BUF_SIZE = 16; private static final int TOTAL_BUF_SIZE = STATUS_BUF_SIZE + 4 * 2; // status buf plus two ints private static final int bufBytesize(byte[] p) { return (bufEnd(p) - bufBeg(p) + STATUS_BUF_SIZE) % STATUS_BUF_SIZE; } private static final byte bufAt(byte[] sp, int pos) { pos += bufBeg(sp); pos %= STATUS_BUF_SIZE; return sp[pos]; } private static void bufClear(byte[] state) { assert state.length >= 24 : "UTF8-MAC state not large enough"; Arrays.fill(state, (byte)0); } public static int funSoFromUtf8Mac(byte[] statep, byte[] s, int sStart, int l, byte[] o, int oStart, int oSize) { byte[] sp = statep; int n = 0; switch (l) { case 1: n = fromUtf8MacFinish(sp, o, oStart, oSize); break; case 4: n = fromUtf8MacFinish(sp, o, oStart, oSize); o[oStart+n++] = s[sStart++]; o[oStart+n++] = s[sStart++]; o[oStart+n++] = s[sStart++]; o[oStart+n++] = s[sStart++]; return n; } bufPush(sp, s, sStart, l); n += bufApply(sp, o, oStart); return n; } private static void bufPush(byte[] sp, byte[] p, int pStart, int l) { int pend = pStart + l; while (pStart < pend) { /* if (sp->beg == sp->end) */ sp[bufEndPostInc(sp)] = p[pStart++]; bufEnd(sp, bufEnd(sp) % STATUS_BUF_SIZE); } } private static final int from_utf8_mac_nfc2 = Transcoding.WORDINDEX2INFO(35578); private static int bufApply(byte[] sp, byte[] o, int oStart) { int n = 0; int next_info; byte[] buf = {0,0,0}; if (bufBytesize(sp) < 3 || (bufBytesize(sp) == 3 && bufAt(sp, 0) >= 0xE0)) { /* char length is less than 2 */ return 0; } next_info = getInfo(from_utf8_mac_nfc2, sp); switch (next_info & 0x1F) { case TranscodingInstruction.THREEbt: case TranscodingInstruction.TWObt: buf[n++] = Transcoding.getBT1(next_info); buf[n++] = Transcoding.getBT2(next_info); if (TranscodingInstruction.THREEbt == (next_info & 0x1F)) buf[n++] = Transcoding.getBT3(next_info); bufClear(sp); bufPush(sp, buf, 0, n); return 0; default: return bufOutputChar(sp, o, oStart); } } private static boolean bufEmpty(byte[] sp) { return bufBeg(sp) == bufEnd(sp); } private static byte bufShift(byte[] sp) { /* if (sp->beg == sp->end) */ int c = sp[bufBegPostInc(sp)]; bufBeg(sp, bufBeg(sp) % STATUS_BUF_SIZE); return (byte)c; } private static boolean utf8Trailbyte(byte c) { return (c & 0xC0) == 0x80; } private static int bufOutputChar(byte[] sp, byte[] o, int oStart) { int n = 0; while (!bufEmpty(sp)) { o[oStart+n++] = bufShift(sp); if (!utf8Trailbyte(sp[bufBeg(sp)])) break; } return n; } private static int getInfo(int nextInfo, byte[] sp) { int pos = 0; while (pos < bufBytesize(sp)) { int next_byte = toUnsignedInt(bufAt(sp, pos++)); if (next_byte < UTF8MAC_BL_MIN_BYTE(nextInfo) || UTF8MAC_BL_MAX_BYTE(nextInfo) < next_byte) nextInfo = TranscodingInstruction.INVALID; else { nextInfo = UTF8MAC_BL_ACTION(nextInfo, (byte)next_byte); } if ((nextInfo & 3) == 0) continue; break; } return nextInfo; } public static int UTF8MAC_BL_MIN_BYTE(int nextInfo) { return toUnsignedInt(From_UTF8_MAC_Transcoder.INSTANCE.byteArray[BL_BASE(nextInfo)]); } public static int UTF8MAC_BL_MAX_BYTE(int nextInfo) { return toUnsignedInt(From_UTF8_MAC_Transcoder.INSTANCE.byteArray[BL_BASE(nextInfo) + 1]); } public static int UTF8MAC_BL_OFFSET(int nextInfo, int b) { return toUnsignedInt(From_UTF8_MAC_Transcoder.INSTANCE.byteArray[BL_BASE(nextInfo) + 2 + b - UTF8MAC_BL_MIN_BYTE(nextInfo)]); } public static int UTF8MAC_BL_ACTION(int nextInfo, byte b) { return From_UTF8_MAC_Transcoder.INSTANCE.intArray[BL_INFO(nextInfo) + UTF8MAC_BL_OFFSET(nextInfo, toUnsignedInt(b))]; } private static int BL_BASE(int nextInfo) { return BYTE_ADDR(BYTE_LOOKUP_BASE(WORD_ADDR(nextInfo))); } private static int BL_INFO(int nextInfo) { return WORD_ADDR(BYTE_LOOKUP_INFO(WORD_ADDR(nextInfo))); } private static int BYTE_ADDR(int index) { return index; } private static int WORD_ADDR(int index) { return TranscodeTableSupport.INFO2WORDINDEX(index); } private static int BYTE_LOOKUP_BASE(int bl) { return From_UTF8_MAC_Transcoder.INSTANCE.intArray[bl]; } private static int BYTE_LOOKUP_INFO(int bl) { return From_UTF8_MAC_Transcoder.INSTANCE.intArray[bl + 1]; } private static int bufInt(byte[] statep, int base) { return (statep[base] << 24) | (statep[base+1] << 16) | (statep[base+2] << 8) | (statep[base+3]); } private static void bufInt(byte[] statep, int base, int val) { statep[base] = (byte) (val >>> 24); statep[base+1] = (byte) (val >>> 16); statep[base+2] = (byte) (val >>> 8); statep[base+3] = (byte) val; } private static int bufBeg(byte[] statep) { return bufInt(statep, 16); } private static int bufEnd(byte[] statep) { return bufInt(statep, 20); } private static void bufBeg(byte[] statep, int end) { bufInt(statep, 16, end); } private static void bufEnd(byte[] statep, int end) { bufInt(statep, 20, end); } private static int bufEndPostInc(byte[] statep) { int end = bufInt(statep, 20); bufInt(statep, 20, end + 1); return end; } private static int bufBegPostInc(byte[] statep) { int beg = bufInt(statep, 16); bufInt(statep, 16, beg + 1); return beg; } public static int fromUtf8MacFinish(byte[] statep, byte[] o, int oStart, int oSize) { return bufOutputAll(statep, o, oStart); } private static int bufOutputAll(byte[] sp, byte[] o, int oStart) { int n = 0; while (!bufEmpty(sp)) { o[oStart+n++] = bufShift(sp); } return n; } private static final int ESCAPE_END = 0; private static final int ESCAPE_NORMAL = 1; public static int escapeXmlAttrQuoteInit(byte[] statep) { statep[0] = ESCAPE_END; return 0; } public static int funSoEscapeXmlAttrQuote(byte[] statep, byte[] s, int sStart, int l, byte[] o, int oStart, int oSize) { byte[] sp = statep; int n = 0; if (sp[0] == ESCAPE_END) { sp[0] = ESCAPE_NORMAL; o[oStart+n++] = '"'; } o[oStart+n++] = s[sStart]; return n; } public static int escapeXmlAttrQuoteFinish(byte[] statep, byte[] o, int oStart, int oSize) { byte[] sp = statep; int n = 0; if (sp[0] == ESCAPE_END) { o[oStart+n++] = '"'; } o[oStart+n++] = '"'; sp[0] = ESCAPE_END; return n; } private static final int NEWLINE_NORMAL = 0; private static final int NEWLINE_JUST_AFTER_CR = 1; private static final int MET_LF = 0x01; private static final int MET_CRLF = 0x02; private static final int MET_CR = 0x04; private static byte NEWLINE_STATE(byte[] sp) { return sp[0]; } private static void NEWLINE_STATE(byte[] sp, int b) { sp[0] = (byte)b; } private static void NEWLINE_NEWLINES_MET(byte[] sp, int b) { sp[1] = (byte)b; } private static void NEWLINE_NEWLINES_MET_or_mask(byte[] sp, int b) { sp[1] |= (byte)b; } public static int universalNewlineInit(byte[] statep) { byte[] sp = statep; NEWLINE_STATE(sp, NEWLINE_NORMAL); NEWLINE_NEWLINES_MET(sp, 0); return 0; } public static int funSoUniversalNewline(byte[] statep, byte[] s, int sStart, int l, byte[] o, int oStart, int oSize) { int s0 = toUnsignedInt(s[sStart]); byte[] sp = statep; int len; if (s0 == '\n') { if (NEWLINE_STATE(sp) == NEWLINE_NORMAL) { NEWLINE_NEWLINES_MET_or_mask(sp, MET_LF); } else { /* JUST_AFTER_CR */ NEWLINE_NEWLINES_MET_or_mask(sp, MET_CRLF); } o[oStart] = '\n'; len = 1; NEWLINE_STATE(sp, NEWLINE_NORMAL); } else { len = 0; if (NEWLINE_STATE(sp) == NEWLINE_JUST_AFTER_CR) { o[oStart] = '\n'; len = 1; NEWLINE_NEWLINES_MET_or_mask(sp, MET_CR); } if (s0 == '\r') { NEWLINE_STATE(sp, NEWLINE_JUST_AFTER_CR); } else { o[oStart+len++] = (byte)s0; NEWLINE_STATE(sp, NEWLINE_NORMAL); } } return len; } public static int universalNewlineFinish(byte[] statep, byte[] o, int oStart, int oSize) { byte[] sp = statep; int len = 0; if (NEWLINE_STATE(sp) == NEWLINE_JUST_AFTER_CR) { o[oStart] = '\n'; len = 1; NEWLINE_NEWLINES_MET_or_mask(sp, MET_CR); } sp[0] = NEWLINE_NORMAL; return len; } } jcodings-1.0.58/src/org/jcodings/transcode/TranscodeTableSupport.java000066400000000000000000000057151433325321700257120ustar00rootroot00000000000000/* * Permission is hereby granted, free of charge, to any person obtaining a copy of * this software and associated documentation files (the "Software"), to deal in * the Software without restriction, including without limitation the rights to * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies * of the Software, and to permit persons to whom the Software is furnished to do * so, subject to the following conditions: * * The above copyright notice and this permission notice shall be included in all * copies or substantial portions of the Software. * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE * SOFTWARE. */ package org.jcodings.transcode; public class TranscodeTableSupport implements TranscodingInstruction { public static final int WORDINDEX_SHIFT_BITS = 2; public static int WORDINDEX2INFO(int widx) { return widx << WORDINDEX_SHIFT_BITS; } public static int INFO2WORDINDEX(int info) { return info >>> WORDINDEX_SHIFT_BITS; } public static int makeSTR1(int bi) { return (bi << 6) | STR1; } public static byte makeSTR1LEN(int len) { return (byte)(len - 4); } public static int o1(int b1) { return (b1 << 8) | ONEbt; } public static int o2(int b1, int b2) { return (b1 << 8) | (b2 << 16) | TWObt; } /* * 0xffffffff mask is dead code here, but no need to use longs since we can mask against 0xffffffffL in the clients * to simulate unsigned ints on jvm */ public static int o3(int b1, int b2, int b3) { return ((b1 << 8) | (b2 << 16) | (b3 << 24) | THREEbt) & 0xffffffff; } public static int o4(int b0, int b1, int b2, int b3) { return ((b1 << 8) | (b2 << 16) | (b3 << 24) | ((b0 & 0x07) << 5) | FOURbt) & 0xffffffff; } public static int g4(int b0, int b1, int b2, int b3) { return ((b0 << 8) | (b2 << 16) | ((b1 & 0xf) << 24) | ((b3 & 0x0f) << 28) | GB4bt) & 0xffffffff; } public static int funsio(int diff) { return (diff << 8) & FUNsio; } public static int getBT1(int a) { return a >>> 8; } public static int getBT2(int a) { return a >>> 16; } public static int getBT3(int a) { return a >>> 24; } public static int getBT0(int a) { return ((a >>> 5) & 0x07) | 0xf0; /* for UTF-8 only */ } public static int o2FUNii(int b1, int b2) { return (b1 << 8) | (b2 << 16) | FUNii; } }jcodings-1.0.58/src/org/jcodings/transcode/Transcoder.java000066400000000000000000000171031433325321700235210ustar00rootroot00000000000000/* * Permission is hereby granted, free of charge, to any person obtaining a copy of * this software and associated documentation files (the "Software"), to deal in * the Software without restriction, including without limitation the rights to * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies * of the Software, and to permit persons to whom the Software is furnished to do * so, subject to the following conditions: * * The above copyright notice and this permission notice shall be included in all * copies or substantial portions of the Software. * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE * SOFTWARE. */ package org.jcodings.transcode; import org.jcodings.exception.ErrorMessages; import org.jcodings.exception.InternalException; import org.jcodings.util.ArrayReader; import org.jcodings.util.BytesHash; import org.jcodings.util.ObjHash; public abstract class Transcoder implements TranscodingInstruction { protected Transcoder(byte[] source, byte[] destination, int treeStart, String arrayKey, int inputUnitLength, int maxInput, int maxOutput, AsciiCompatibility compatibility, int stateSize) { this.source = source; this.destination = destination; this.hashCode = BytesHash.hashCode(this.source, 0, this.source.length); this.treeStart = treeStart; byte[] bytes = byteArrayHash.get(arrayKey); if (bytes == null) byteArrayHash.put(arrayKey, bytes = ArrayReader.readByteArray("Transcoder_" + arrayKey + "_ByteArray")); this.byteArray = bytes; int[] ints = wordArrayHash.get(arrayKey); if (ints == null) wordArrayHash.put(arrayKey, ints = ArrayReader.readIntArray("Transcoder_" + arrayKey + "_WordArray")); this.intArray = ints; this.inputUnitLength = inputUnitLength; this.maxInput = maxInput; this.maxOutput = maxOutput; this.compatibility = compatibility; this.stateSize = stateSize; } protected Transcoder(String source, String destination, int treeStart, String arrayKey, int inputUnitLength, int maxInput, int maxOutput, AsciiCompatibility compatibility, int stateSize) { this(source.getBytes(), destination.getBytes(), treeStart, arrayKey, inputUnitLength, maxInput, maxOutput, compatibility, stateSize); } public byte[] getSource() { return source; } public byte[] getDestination() { return destination; } final byte[] source, destination; final int hashCode; final int treeStart; final byte[] byteArray; final int[] intArray; // static final int wordSize = 4; public final int inputUnitLength, maxInput, maxOutput; public final AsciiCompatibility compatibility; final int stateSize; public boolean hasStateInit() { return false; } public int stateInit(byte[] statep) { return 0; } public int stateFinish(byte[] stateFinish) { return 0; } public int infoToInfo(byte[] statep, int o) { throw new RuntimeException("unimplemented infoToInfo needed in " + this); } public int startToInfo(byte[] statep, byte[] s, int sStart, int l) { throw new RuntimeException("unimplemented startToInfo needed in " + this); } public int infoToOutput(byte[] statep, int nextInfo, byte[] p, int start, int size) { throw new RuntimeException("unimplemented intoToOutput needed in " + this); } public boolean hasFinish() { return false; } public int finish(byte[] statep, byte[] p, int start, int size) { return 0; } public int resetSize(byte[] statep) { return 0; } public int resetState(byte[] statep, byte[] p, int start, int size) { return 0; } public int startToOutput(byte[] statep, byte[] s, int sStart, int l, byte[] o, int oStart, int oSize) { throw new RuntimeException("unimplemented startToOutput needed in " + this); } public int startInfoToOutput(byte[] statep, byte[] s, int sStart, int l, int info, byte[] o, int oStart, int oSize) { throw new RuntimeException("unimplemented startInfoToOutput needed in " + this); } /* rb_transcoding_open_by_transcoder */ public final Transcoding transcoding(int flags) { Transcoding tc = new Transcoding(this, flags); if (hasStateInit()) { stateInit(tc.state); } return tc; } public static Transcoder load(String name) { String encClassName = name; Class encClass; try { encClass = Class.forName(encClassName); } catch (ClassNotFoundException cnfe) { throw new InternalException(ErrorMessages.ERR_TRANSCODER_CLASS_DEF_NOT_FOUND, encClassName); } try { return (Transcoder) encClass.getField("INSTANCE").get(encClass); } catch (Exception e) { throw new InternalException(ErrorMessages.ERR_TRANSCODER_LOAD_ERROR, encClassName); } } static final class GenericTranscoderEntry { final byte[] source, destination; final String arrayKey; final int treeStart, inputUnitLength, maxInput, maxOutput, stateSize; final AsciiCompatibility compatibility; GenericTranscoderEntry(String source, String destination, int treeStart, String arrayKey, int inputUnitLength, int maxInput, int maxOutput, AsciiCompatibility compatibility, int stateSize) { this.source = source.getBytes(); this.destination = destination.getBytes(); this.treeStart = treeStart; this.arrayKey = arrayKey; this.inputUnitLength = inputUnitLength; this.maxInput = maxInput; this.maxOutput = maxOutput; this.compatibility = compatibility; this.stateSize = stateSize; } Transcoder createTranscoder() { return new GenericTranscoder(source, destination, treeStart, arrayKey, inputUnitLength, maxInput, maxOutput, compatibility, stateSize); } } static final ObjHash byteArrayHash = new ObjHash(); static final ObjHash wordArrayHash = new ObjHash(); @Override public String toString() { return new String(source) + " => " + new String(destination); } public String toStringFull() { String s = "Transcoder (" + new String(source) + " => " + new String(destination) + ")\n"; s += " class: " + getClass().getSimpleName() + "\n"; s += " treeStart: " + treeStart + "\n"; s += " byteArray:" + byteArray.length + " ("; for (int i = 0; i < 20; i++) { s += (byteArray[i] & 0xff) + ", "; } s += "...)\n"; s += " wordArray:" + intArray.length + " ("; for (int i = 0; i < 20; i++) { s += (intArray[i] & 0xffffffffl) + ", "; } s += "...)\n"; s += " input unit length: " + inputUnitLength + "\n"; s += " max input: " + maxInput + "\n"; s += " max output: " + maxOutput + "\n"; s += " compatibility: " + compatibility + "\n"; s += " state size: " + stateSize + "\n"; return s; } }jcodings-1.0.58/src/org/jcodings/transcode/TranscoderDB.java000066400000000000000000000274421433325321700237360ustar00rootroot00000000000000/* * Permission is hereby granted, free of charge, to any person obtaining a copy of * this software and associated documentation files (the "Software"), to deal in * the Software without restriction, including without limitation the rights to * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies * of the Software, and to permit persons to whom the Software is furnished to do * so, subject to the following conditions: * * The above copyright notice and this permission notice shall be included in all * copies or substantial portions of the Software. * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE * SOFTWARE. */ package org.jcodings.transcode; import static org.jcodings.transcode.EConv.NULL_STRING; import static org.jcodings.util.CaseInsensitiveBytesHash.caseInsensitiveEquals; import java.util.Arrays; import org.jcodings.ObjPtr; import org.jcodings.exception.ErrorMessages; import org.jcodings.exception.TranscoderException; import org.jcodings.transcode.Transcoder.GenericTranscoderEntry; import org.jcodings.util.CaseInsensitiveBytesHash; import org.jcodings.util.Hash; public class TranscoderDB implements EConvFlags { public static final class Entry { private String transcoderClass; private final byte[] source, destination; private Transcoder transcoder; private Entry(byte[] source, byte[] destination) { this.source = source; this.destination = destination; } public byte[] getSource() { return source; } public byte[] getDestination() { return destination; } /* load_transcoder_entry */ public Transcoder getTranscoder() { if (transcoder == null) { if (transcoderClass != null) { transcoder = TranscoderList.getInstance(transcoderClass); } else { GenericTranscoderEntry[] list = TranscoderList.GENERIC_LIST; for (int i = 0; i < list.length; i++) { GenericTranscoderEntry entry = list[i]; if (Arrays.equals(source, entry.source) && Arrays.equals(destination, entry.destination)) { transcoder = entry.createTranscoder(); break; } } } } return transcoder; } } public static final CaseInsensitiveBytesHash> transcoders = new CaseInsensitiveBytesHash>(); /* make_transcoder_entry */ static Entry makeEntry(byte[] source, byte[] destination) { CaseInsensitiveBytesHash sHash = transcoders.get(source); if (sHash == null) { sHash = new CaseInsensitiveBytesHash(); transcoders.putDirect(source, sHash); } Entry entry = sHash.get(destination); if (entry == null) { entry = new Entry(source, destination); sHash.putDirect(destination, entry); } else { throw new TranscoderException(ErrorMessages.ERR_TRANSCODER_ALREADY_REGISTERED, new String(source + " to " + new String(destination))); } return entry; } /* get_transcoder_entry */ public static Entry getEntry(byte[] source, byte[] destination) { CaseInsensitiveBytesHash sHash = transcoders.get(source); return sHash == null ? null : sHash.get(destination); } /* rb_register_transcoder */ static void register(Transcoder transcoder) { Entry entry = makeEntry(transcoder.source, transcoder.destination); if (entry.transcoder != null) throw new TranscoderException(ErrorMessages.ERR_TRANSCODER_ALREADY_REGISTERED, new String(transcoder.source + " to " + new String(transcoder.destination))); entry.transcoder = transcoder; } /* declare_transcoder */ static void declare(String source, String destination, String transcoderClass) { Entry entry = makeEntry(source.getBytes(), destination.getBytes()); entry.transcoderClass = transcoderClass; } static final class SearchPathQueue { ObjPtr next = new ObjPtr(); byte[] encoding; } public interface SearchPathCallback { void call(byte[] source, byte[] destination, int depth); } /* transcode_search_path */ public static int searchPath(byte[] source, byte[] destination, SearchPathCallback callback) { if (caseInsensitiveEquals(source, destination)) return -1; ObjPtr bfsQueue = new ObjPtr(); SearchPathQueue queue = new SearchPathQueue(); queue.encoding = source; ObjPtr bfsLastQueue = queue.next; bfsQueue.p = queue; CaseInsensitiveBytesHash bfsVisited = new CaseInsensitiveBytesHash(); bfsVisited.put(source, NULL_STRING); while (bfsQueue.p != null) { queue = bfsQueue.p; bfsQueue.p = queue.next.p; if (bfsQueue.p == null) bfsLastQueue = bfsQueue; CaseInsensitiveBytesHash table2 = transcoders.get(queue.encoding); if (table2 == null) continue; Entry entry = table2.get(destination); if (entry != null) { bfsVisited.put(destination, queue.encoding); byte[] enc = destination; int depth, pathLength = 0; while (true) { byte[] tmp = bfsVisited.get(enc); if (tmp == NULL_STRING) break; pathLength++; enc = tmp; } depth = pathLength; enc = destination; while (true) { byte[] tmp = bfsVisited.get(enc); if (tmp == NULL_STRING) break; callback.call(tmp, enc, --depth); enc = tmp; } return pathLength; } else { byte[] bfsBaseEnc = queue.encoding; for (Hash.HashEntry o : (Iterable>)table2.entryIterator()) { CaseInsensitiveBytesHash.CaseInsensitiveBytesHashEntry e = (CaseInsensitiveBytesHash.CaseInsensitiveBytesHashEntry) o; byte[] dname = e.bytes; if (bfsVisited.get(dname) == null) { SearchPathQueue q = new SearchPathQueue(); q.encoding = dname; q.next.p = null; bfsLastQueue.p = q; bfsLastQueue = q.next; bfsVisited.putDirect(dname, bfsBaseEnc); } } bfsBaseEnc = null; } } // while return -1; } /* rb_econv_alloc */ public static EConv alloc(int n) { return new EConv(n); } /* rb_econv_open_by_transcoder_entries */ private static EConv openByTranscoderEntries(int n, Entry[] entries) { EConv econv = new EConv(n); for (int i = 0; i < n; i++) { Transcoder transcoder = entries[i].getTranscoder(); econv.addTranscoderAt(transcoder, econv.numTranscoders); } return econv; } /* rb_econv_open0 */ private static EConv open0(byte[] source, byte[] destination, int ecflags) { // final Encoding senc = EncodingDB.getEncodings().get(source).getEncoding(); // final Encoding denc = EncodingDB.getEncodings().get(destination).getEncoding(); final int numTrans; final Entry[] entries; if (source.length == 0 && destination.length == 0) { numTrans = 0; entries = null; } else { final ObjPtr lentries = new ObjPtr(); numTrans = searchPath(source, destination, new SearchPathCallback() { int additional = 0; public void call(byte[] source, byte[] destination, int depth) { if (lentries.p == null) lentries.p = new Entry[depth + 1 + additional]; lentries.p[depth] = getEntry(source, destination); } }); entries = lentries.p; if (numTrans < 0) { return null; } } EConv ec = openByTranscoderEntries(numTrans, entries); if (ec == null) return null; ec.flags = ecflags; ec.source = source; ec.destination = destination; return ec; } /* decorator_names */ public static int decoratorNames(int ecflags, byte[][] decorators) { switch (ecflags & NEWLINE_DECORATOR_MASK) { case UNIVERSAL_NEWLINE_DECORATOR: case CRLF_NEWLINE_DECORATOR: case CR_NEWLINE_DECORATOR: case 0: break; default: return -1; } if (((ecflags & XML_TEXT_DECORATOR) != 0) && ((ecflags & XML_ATTR_CONTENT_DECORATOR) != 0)) return -1; int numDecorators = 0; if ((ecflags & XML_TEXT_DECORATOR) != 0) decorators[numDecorators++] = "xml_text_escape".getBytes(); if ((ecflags & XML_ATTR_CONTENT_DECORATOR) != 0) decorators[numDecorators++] = "xml_attr_content_escape".getBytes(); if ((ecflags & XML_ATTR_QUOTE_DECORATOR) != 0) decorators[numDecorators++] = "xml_attr_quote".getBytes(); if ((ecflags & CRLF_NEWLINE_DECORATOR) != 0) decorators[numDecorators++] = "crlf_newline".getBytes(); if ((ecflags & CR_NEWLINE_DECORATOR) != 0) decorators[numDecorators++] = "cr_newline".getBytes(); if ((ecflags & UNIVERSAL_NEWLINE_DECORATOR) != 0) decorators[numDecorators++] = "universal_newline".getBytes(); return numDecorators; } public static EConv open(String source, String destination, int ecflags) { return open(source.getBytes(), destination.getBytes(), ecflags); } /* rb_econv_open */ public static EConv open(byte[] source, byte[] destination, int ecflags) { byte[][] decorators = new byte[MAX_ECFLAGS_DECORATORS][]; int numDecorators = decoratorNames(ecflags, decorators); if (numDecorators == -1) return null; EConv ec = open0(source, destination, ecflags & ERROR_HANDLER_MASK); if (ec == null) return null; for (int i = 0; i < numDecorators; i++) { if (!ec.decorateAtLast(decorators[i])) { ec.close(); return null; } } ec.flags |= ecflags & ~ERROR_HANDLER_MASK; return ec; } /* rb_econv_asciicompat_encoding */// ?? to transcoderdb ? static byte[] asciiCompatibleEncoding(byte[] asciiCompatName) { CaseInsensitiveBytesHash dTable = TranscoderDB.transcoders.get(asciiCompatName); if (dTable == null || dTable.size() != 1) return null; byte[] asciiCN = null; for (Entry e : dTable) { if (!EConv.decorator(e.source, e.destination)) { Transcoder transcoder = e.getTranscoder(); if (transcoder != null && transcoder.compatibility.isDecoder()) { asciiCN = transcoder.destination; break; } } } return asciiCN; } static { TranscoderList.load(); } } jcodings-1.0.58/src/org/jcodings/transcode/TranscoderList.java000066400000000000000000001152111433325321700243540ustar00rootroot00000000000000/* * Permission is hereby granted, free of charge, to any person obtaining a copy of * this software and associated documentation files (the "Software"), to deal in * the Software without restriction, including without limitation the rights to * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies * of the Software, and to permit persons to whom the Software is furnished to do * so, subject to the following conditions: * * The above copyright notice and this permission notice shall be included in all * copies or substantial portions of the Software. * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE * SOFTWARE. */ package org.jcodings.transcode; import org.jcodings.transcode.Transcoder.GenericTranscoderEntry; import org.jcodings.transcode.specific.*; final class TranscoderList { static void load() { TranscoderDB.declare("Big5", "UTF-8", null /*From_Big5*/); TranscoderDB.declare("UTF-8", "Big5", null /*To_Big5*/); TranscoderDB.declare("CP950", "UTF-8", null /*From_CP950*/); TranscoderDB.declare("UTF-8", "CP950", null /*To_CP950*/); TranscoderDB.declare("Big5-HKSCS", "UTF-8", null /*From_Big5_HKSCS*/); TranscoderDB.declare("UTF-8", "Big5-HKSCS", null /*To_Big5_HKSCS*/); TranscoderDB.declare("CP951", "UTF-8", null /*From_CP951*/); TranscoderDB.declare("UTF-8", "CP951", null /*To_CP951*/); TranscoderDB.declare("Big5-UAO", "UTF-8", null /*From_Big5_UAO*/); TranscoderDB.declare("UTF-8", "Big5-UAO", null /*To_Big5_UAO*/); TranscoderDB.declare("CESU-8", "UTF-8", "From_CESU_8"); TranscoderDB.declare("UTF-8", "CESU-8", "To_CESU_8"); TranscoderDB.declare("GB2312", "UTF-8", null /*From_GB2312*/); TranscoderDB.declare("GB12345", "UTF-8", null /*From_GB12345*/); TranscoderDB.declare("UTF-8", "GB2312", null /*To_GB2312*/); TranscoderDB.declare("UTF-8", "GB12345", null /*To_GB12345*/); TranscoderDB.declare("IBM037", "ISO-8859-1", null /*From_IBM037_to_ISO_8859_1*/); TranscoderDB.declare("ISO-8859-1", "IBM037", null /*From_ISO_8859_1_to_IBM037*/); TranscoderDB.declare("UTF8-DoCoMo", "UTF8-KDDI", null /*From_UTF8_DoCoMo_to_UTF8_KDDI*/); TranscoderDB.declare("UTF8-DoCoMo", "UTF8-SoftBank", null /*From_UTF8_DoCoMo_to_UTF8_SoftBank*/); TranscoderDB.declare("UTF8-DoCoMo", "UTF-8", null /*From_UTF8_DoCoMo*/); TranscoderDB.declare("UTF8-KDDI", "UTF8-DoCoMo", null /*From_UTF8_KDDI_to_UTF8_DoCoMo*/); TranscoderDB.declare("UTF8-KDDI", "UTF8-SoftBank", null /*From_UTF8_KDDI_to_UTF8_SoftBank*/); TranscoderDB.declare("UTF8-KDDI", "UTF-8", null /*From_UTF8_KDDI*/); TranscoderDB.declare("UTF8-SoftBank", "UTF8-DoCoMo", null /*From_UTF8_SoftBank_to_UTF8_DoCoMo*/); TranscoderDB.declare("UTF8-SoftBank", "UTF8-KDDI", null /*From_UTF8_SoftBank_to_UTF8_KDDI*/); TranscoderDB.declare("UTF8-SoftBank", "UTF-8", null /*From_UTF8_SoftBank*/); TranscoderDB.declare("UTF-8", "UTF8-DoCoMo", null /*To_UTF8_DoCoMo*/); TranscoderDB.declare("UTF-8", "UTF8-KDDI", null /*To_UTF8_KDDI*/); TranscoderDB.declare("UTF-8", "UTF8-SoftBank", null /*To_UTF8_SoftBank*/); TranscoderDB.declare("stateless-ISO-2022-JP-KDDI", "UTF8-KDDI", null /*From_stateless_ISO_2022_JP_KDDI_to_UTF8_KDDI*/); TranscoderDB.declare("UTF8-KDDI", "stateless-ISO-2022-JP-KDDI", null /*From_UTF8_KDDI_to_stateless_ISO_2022_JP_KDDI*/); TranscoderDB.declare("ISO-2022-JP-KDDI", "stateless-ISO-2022-JP-KDDI", "Iso2022jp_kddi_decoder"); TranscoderDB.declare("stateless-ISO-2022-JP-KDDI", "ISO-2022-JP-KDDI", "Iso2022jp_kddi_encoder"); TranscoderDB.declare("SJIS-DOCOMO", "UTF8-DOCOMO", null /*From_SJIS_DOCOMO_to_UTF8_DOCOMO*/); TranscoderDB.declare("UTF8-DOCOMO", "SJIS-DOCOMO", null /*From_UTF8_DOCOMO_to_SJIS_DOCOMO*/); TranscoderDB.declare("SJIS-KDDI", "UTF8-KDDI", null /*From_SJIS_KDDI_to_UTF8_KDDI*/); TranscoderDB.declare("UTF8-KDDI", "SJIS-KDDI", null /*From_UTF8_KDDI_to_SJIS_KDDI*/); TranscoderDB.declare("SJIS-SoftBank", "UTF8-SoftBank", null /*From_SJIS_SoftBank_to_UTF8_SoftBank*/); TranscoderDB.declare("UTF8-SoftBank", "SJIS-SoftBank", null /*From_UTF8_SoftBank_to_SJIS_SoftBank*/); TranscoderDB.declare("", "amp_escape", null /*From__to_amp_escape*/); TranscoderDB.declare("", "xml_text_escape", null /*From__to_xml_text_escape*/); TranscoderDB.declare("", "xml_attr_content_escape", null /*From__to_xml_attr_content_escape*/); TranscoderDB.declare("", "xml_attr_quote", "Escape_xml_attr_quote"); TranscoderDB.declare("GB18030", "UTF-8", "From_GB18030"); TranscoderDB.declare("UTF-8", "GB18030", "To_GB18030"); TranscoderDB.declare("GBK", "UTF-8", null /*From_GBK*/); TranscoderDB.declare("UTF-8", "GBK", null /*To_GBK*/); TranscoderDB.declare("ISO-2022-JP", "stateless-ISO-2022-JP", "Iso2022jp_decoder"); TranscoderDB.declare("stateless-ISO-2022-JP", "ISO-2022-JP", "Iso2022jp_encoder"); TranscoderDB.declare("stateless-ISO-2022-JP", "EUC-JP", "Stateless_iso2022jp_to_eucjp"); TranscoderDB.declare("EUC-JP", "stateless-ISO-2022-JP", "Eucjp_to_stateless_iso2022jp"); TranscoderDB.declare("CP50220", "cp51932", "Cp50220_decoder"); TranscoderDB.declare("CP50221", "cp51932", "Cp50221_decoder"); TranscoderDB.declare("CP51932", "CP50221", "Cp50221_encoder"); TranscoderDB.declare("CP51932", "CP50220", "Cp50220_encoder"); TranscoderDB.declare("EUC-JP", "Shift_JIS", "Eucjp2sjis"); TranscoderDB.declare("Shift_JIS", "EUC-JP", "Sjis2eucjp"); TranscoderDB.declare("EUC-JP", "UTF-8", null /*From_EUC_JP*/); TranscoderDB.declare("eucJP-ms", "UTF-8", null /*From_eucJP_ms*/); TranscoderDB.declare("CP51932", "UTF-8", null /*From_CP51932*/); TranscoderDB.declare("EUC-JIS-2004", "UTF-8", null /*From_EUC_JIS_2004*/); TranscoderDB.declare("UTF-8", "EUC-JP", null /*To_EUC_JP*/); TranscoderDB.declare("UTF-8", "eucJP-ms", null /*To_eucJP_ms*/); TranscoderDB.declare("UTF-8", "CP51932", null /*To_CP51932*/); TranscoderDB.declare("UTF-8", "EUC-JIS-2004", null /*To_EUC_JIS_2004*/); TranscoderDB.declare("Shift_JIS", "UTF-8", null /*From_Shift_JIS*/); TranscoderDB.declare("Windows-31J", "UTF-8", null /*From_Windows_31J*/); TranscoderDB.declare("UTF-8", "Shift_JIS", null /*To_Shift_JIS*/); TranscoderDB.declare("UTF-8", "Windows-31J", null /*To_Windows_31J*/); TranscoderDB.declare("UTF-8", "EUC-KR", null /*To_EUC_KR*/); TranscoderDB.declare("EUC-KR", "UTF-8", null /*From_EUC_KR*/); TranscoderDB.declare("UTF-8", "CP949", null /*To_CP949*/); TranscoderDB.declare("CP949", "UTF-8", null /*From_CP949*/); TranscoderDB.declare("", "universal_newline", "Universal_newline"); TranscoderDB.declare("", "crlf_newline", null /*Crlf_newline*/); TranscoderDB.declare("", "cr_newline", null /*Cr_newline*/); TranscoderDB.declare("US-ASCII", "UTF-8", null /*From_US_ASCII*/); TranscoderDB.declare("UTF-8", "US-ASCII", null /*To_US_ASCII*/); TranscoderDB.declare("ASCII-8BIT", "UTF-8", null /*From_ASCII_8BIT*/); TranscoderDB.declare("UTF-8", "ASCII-8BIT", null /*To_ASCII_8BIT*/); TranscoderDB.declare("ISO-8859-1", "UTF-8", null /*From_ISO_8859_1*/); TranscoderDB.declare("UTF-8", "ISO-8859-1", null /*To_ISO_8859_1*/); TranscoderDB.declare("ISO-8859-2", "UTF-8", null /*From_ISO_8859_2*/); TranscoderDB.declare("UTF-8", "ISO-8859-2", null /*To_ISO_8859_2*/); TranscoderDB.declare("ISO-8859-3", "UTF-8", null /*From_ISO_8859_3*/); TranscoderDB.declare("UTF-8", "ISO-8859-3", null /*To_ISO_8859_3*/); TranscoderDB.declare("ISO-8859-4", "UTF-8", null /*From_ISO_8859_4*/); TranscoderDB.declare("UTF-8", "ISO-8859-4", null /*To_ISO_8859_4*/); TranscoderDB.declare("ISO-8859-5", "UTF-8", null /*From_ISO_8859_5*/); TranscoderDB.declare("UTF-8", "ISO-8859-5", null /*To_ISO_8859_5*/); TranscoderDB.declare("ISO-8859-6", "UTF-8", null /*From_ISO_8859_6*/); TranscoderDB.declare("UTF-8", "ISO-8859-6", null /*To_ISO_8859_6*/); TranscoderDB.declare("ISO-8859-7", "UTF-8", null /*From_ISO_8859_7*/); TranscoderDB.declare("UTF-8", "ISO-8859-7", null /*To_ISO_8859_7*/); TranscoderDB.declare("ISO-8859-8", "UTF-8", null /*From_ISO_8859_8*/); TranscoderDB.declare("UTF-8", "ISO-8859-8", null /*To_ISO_8859_8*/); TranscoderDB.declare("ISO-8859-9", "UTF-8", null /*From_ISO_8859_9*/); TranscoderDB.declare("UTF-8", "ISO-8859-9", null /*To_ISO_8859_9*/); TranscoderDB.declare("ISO-8859-10", "UTF-8", null /*From_ISO_8859_10*/); TranscoderDB.declare("UTF-8", "ISO-8859-10", null /*To_ISO_8859_10*/); TranscoderDB.declare("ISO-8859-11", "UTF-8", null /*From_ISO_8859_11*/); TranscoderDB.declare("UTF-8", "ISO-8859-11", null /*To_ISO_8859_11*/); TranscoderDB.declare("ISO-8859-13", "UTF-8", null /*From_ISO_8859_13*/); TranscoderDB.declare("UTF-8", "ISO-8859-13", null /*To_ISO_8859_13*/); TranscoderDB.declare("ISO-8859-14", "UTF-8", null /*From_ISO_8859_14*/); TranscoderDB.declare("UTF-8", "ISO-8859-14", null /*To_ISO_8859_14*/); TranscoderDB.declare("ISO-8859-15", "UTF-8", null /*From_ISO_8859_15*/); TranscoderDB.declare("UTF-8", "ISO-8859-15", null /*To_ISO_8859_15*/); TranscoderDB.declare("ISO-8859-16", "UTF-8", null /*From_ISO_8859_16*/); TranscoderDB.declare("UTF-8", "ISO-8859-16", null /*To_ISO_8859_16*/); TranscoderDB.declare("WINDOWS-874", "UTF-8", null /*From_WINDOWS_874*/); TranscoderDB.declare("UTF-8", "WINDOWS-874", null /*To_WINDOWS_874*/); TranscoderDB.declare("WINDOWS-1250", "UTF-8", null /*From_WINDOWS_1250*/); TranscoderDB.declare("UTF-8", "WINDOWS-1250", null /*To_WINDOWS_1250*/); TranscoderDB.declare("WINDOWS-1251", "UTF-8", null /*From_WINDOWS_1251*/); TranscoderDB.declare("UTF-8", "WINDOWS-1251", null /*To_WINDOWS_1251*/); TranscoderDB.declare("WINDOWS-1252", "UTF-8", null /*From_WINDOWS_1252*/); TranscoderDB.declare("UTF-8", "WINDOWS-1252", null /*To_WINDOWS_1252*/); TranscoderDB.declare("WINDOWS-1253", "UTF-8", null /*From_WINDOWS_1253*/); TranscoderDB.declare("UTF-8", "WINDOWS-1253", null /*To_WINDOWS_1253*/); TranscoderDB.declare("WINDOWS-1254", "UTF-8", null /*From_WINDOWS_1254*/); TranscoderDB.declare("UTF-8", "WINDOWS-1254", null /*To_WINDOWS_1254*/); TranscoderDB.declare("WINDOWS-1255", "UTF-8", null /*From_WINDOWS_1255*/); TranscoderDB.declare("UTF-8", "WINDOWS-1255", null /*To_WINDOWS_1255*/); TranscoderDB.declare("WINDOWS-1256", "UTF-8", null /*From_WINDOWS_1256*/); TranscoderDB.declare("UTF-8", "WINDOWS-1256", null /*To_WINDOWS_1256*/); TranscoderDB.declare("WINDOWS-1257", "UTF-8", null /*From_WINDOWS_1257*/); TranscoderDB.declare("UTF-8", "WINDOWS-1257", null /*To_WINDOWS_1257*/); TranscoderDB.declare("IBM437", "UTF-8", null /*From_IBM437*/); TranscoderDB.declare("UTF-8", "IBM437", null /*To_IBM437*/); TranscoderDB.declare("IBM720", "UTF-8", null /*From_IBM720*/); TranscoderDB.declare("UTF-8", "IBM720", null /*To_IBM720*/); TranscoderDB.declare("IBM737", "UTF-8", null /*From_IBM737*/); TranscoderDB.declare("UTF-8", "IBM737", null /*To_IBM737*/); TranscoderDB.declare("IBM775", "UTF-8", null /*From_IBM775*/); TranscoderDB.declare("UTF-8", "IBM775", null /*To_IBM775*/); TranscoderDB.declare("IBM852", "UTF-8", null /*From_IBM852*/); TranscoderDB.declare("UTF-8", "IBM852", null /*To_IBM852*/); TranscoderDB.declare("IBM855", "UTF-8", null /*From_IBM855*/); TranscoderDB.declare("UTF-8", "IBM855", null /*To_IBM855*/); TranscoderDB.declare("IBM857", "UTF-8", null /*From_IBM857*/); TranscoderDB.declare("UTF-8", "IBM857", null /*To_IBM857*/); TranscoderDB.declare("IBM860", "UTF-8", null /*From_IBM860*/); TranscoderDB.declare("UTF-8", "IBM860", null /*To_IBM860*/); TranscoderDB.declare("IBM861", "UTF-8", null /*From_IBM861*/); TranscoderDB.declare("UTF-8", "IBM861", null /*To_IBM861*/); TranscoderDB.declare("IBM862", "UTF-8", null /*From_IBM862*/); TranscoderDB.declare("UTF-8", "IBM862", null /*To_IBM862*/); TranscoderDB.declare("IBM863", "UTF-8", null /*From_IBM863*/); TranscoderDB.declare("UTF-8", "IBM863", null /*To_IBM863*/); TranscoderDB.declare("IBM865", "UTF-8", null /*From_IBM865*/); TranscoderDB.declare("UTF-8", "IBM865", null /*To_IBM865*/); TranscoderDB.declare("IBM866", "UTF-8", null /*From_IBM866*/); TranscoderDB.declare("UTF-8", "IBM866", null /*To_IBM866*/); TranscoderDB.declare("IBM869", "UTF-8", null /*From_IBM869*/); TranscoderDB.declare("UTF-8", "IBM869", null /*To_IBM869*/); TranscoderDB.declare("MACCROATIAN", "UTF-8", null /*From_MACCROATIAN*/); TranscoderDB.declare("UTF-8", "MACCROATIAN", null /*To_MACCROATIAN*/); TranscoderDB.declare("MACCYRILLIC", "UTF-8", null /*From_MACCYRILLIC*/); TranscoderDB.declare("UTF-8", "MACCYRILLIC", null /*To_MACCYRILLIC*/); TranscoderDB.declare("MACGREEK", "UTF-8", null /*From_MACGREEK*/); TranscoderDB.declare("UTF-8", "MACGREEK", null /*To_MACGREEK*/); TranscoderDB.declare("MACICELAND", "UTF-8", null /*From_MACICELAND*/); TranscoderDB.declare("UTF-8", "MACICELAND", null /*To_MACICELAND*/); TranscoderDB.declare("MACROMAN", "UTF-8", null /*From_MACROMAN*/); TranscoderDB.declare("UTF-8", "MACROMAN", null /*To_MACROMAN*/); TranscoderDB.declare("MACROMANIA", "UTF-8", null /*From_MACROMANIA*/); TranscoderDB.declare("UTF-8", "MACROMANIA", null /*To_MACROMANIA*/); TranscoderDB.declare("MACTURKISH", "UTF-8", null /*From_MACTURKISH*/); TranscoderDB.declare("UTF-8", "MACTURKISH", null /*To_MACTURKISH*/); TranscoderDB.declare("MACUKRAINE", "UTF-8", null /*From_MACUKRAINE*/); TranscoderDB.declare("UTF-8", "MACUKRAINE", null /*To_MACUKRAINE*/); TranscoderDB.declare("KOI8-U", "UTF-8", null /*From_KOI8_U*/); TranscoderDB.declare("UTF-8", "KOI8-U", null /*To_KOI8_U*/); TranscoderDB.declare("KOI8-R", "UTF-8", null /*From_KOI8_R*/); TranscoderDB.declare("UTF-8", "KOI8-R", null /*To_KOI8_R*/); TranscoderDB.declare("TIS-620", "UTF-8", null /*From_TIS_620*/); TranscoderDB.declare("UTF-8", "TIS-620", null /*To_TIS_620*/); TranscoderDB.declare("CP850", "UTF-8", null /*From_CP850*/); TranscoderDB.declare("UTF-8", "CP850", null /*To_CP850*/); TranscoderDB.declare("CP852", "UTF-8", null /*From_CP852*/); TranscoderDB.declare("UTF-8", "CP852", null /*To_CP852*/); TranscoderDB.declare("CP855", "UTF-8", null /*From_CP855*/); TranscoderDB.declare("UTF-8", "CP855", null /*To_CP855*/); TranscoderDB.declare("UTF-8", "UTF8-MAC", null /*To_UTF8_MAC*/); TranscoderDB.declare("UTF8-MAC", "UTF-8", "From_UTF8_MAC"); TranscoderDB.declare("UTF-16BE", "UTF-8", "From_UTF_16BE"); TranscoderDB.declare("UTF-8", "UTF-16BE", "To_UTF_16BE"); TranscoderDB.declare("UTF-16LE", "UTF-8", "From_UTF_16LE"); TranscoderDB.declare("UTF-8", "UTF-16LE", "To_UTF_16LE"); TranscoderDB.declare("UTF-32BE", "UTF-8", "From_UTF_32BE"); TranscoderDB.declare("UTF-8", "UTF-32BE", "To_UTF_32BE"); TranscoderDB.declare("UTF-32LE", "UTF-8", "From_UTF_32LE"); TranscoderDB.declare("UTF-8", "UTF-32LE", "To_UTF_32LE"); TranscoderDB.declare("UTF-16", "UTF-8", "From_UTF_16"); TranscoderDB.declare("UTF-32", "UTF-8", "From_UTF_32"); TranscoderDB.declare("UTF-8", "UTF-16", "To_UTF_16"); TranscoderDB.declare("UTF-8", "UTF-32", "To_UTF_32"); }; static final GenericTranscoderEntry[] GENERIC_LIST = new GenericTranscoderEntry[] { new GenericTranscoderEntry("Big5", "UTF-8", 57100, "Big5", 1, 2, 1, AsciiCompatibility.CONVERTER, 0), new GenericTranscoderEntry("UTF-8", "Big5", 120168, "Big5", 1, 4, 2, AsciiCompatibility.CONVERTER, 0), new GenericTranscoderEntry("CP950", "UTF-8", 144368, "Big5", 1, 2, 1, AsciiCompatibility.CONVERTER, 0), new GenericTranscoderEntry("UTF-8", "CP950", 172296, "Big5", 1, 4, 2, AsciiCompatibility.CONVERTER, 0), new GenericTranscoderEntry("Big5-HKSCS", "UTF-8", 195416, "Big5", 1, 2, 1, AsciiCompatibility.CONVERTER, 0), new GenericTranscoderEntry("UTF-8", "Big5-HKSCS", 288228, "Big5", 1, 4, 2, AsciiCompatibility.CONVERTER, 0), new GenericTranscoderEntry("CP951", "UTF-8", 309868, "Big5", 1, 2, 1, AsciiCompatibility.CONVERTER, 0), new GenericTranscoderEntry("UTF-8", "CP951", 325724, "Big5", 1, 4, 2, AsciiCompatibility.CONVERTER, 0), new GenericTranscoderEntry("Big5-UAO", "UTF-8", 351812, "Big5", 1, 2, 1, AsciiCompatibility.CONVERTER, 0), new GenericTranscoderEntry("UTF-8", "Big5-UAO", 436940, "Big5", 1, 4, 2, AsciiCompatibility.CONVERTER, 0), new GenericTranscoderEntry("GB2312", "UTF-8", 31136, "Chinese", 1, 2, 1, AsciiCompatibility.CONVERTER, 0), new GenericTranscoderEntry("GB12345", "UTF-8", 59848, "Chinese", 1, 2, 1, AsciiCompatibility.CONVERTER, 0), new GenericTranscoderEntry("UTF-8", "GB2312", 96820, "Chinese", 1, 4, 2, AsciiCompatibility.CONVERTER, 0), new GenericTranscoderEntry("UTF-8", "GB12345", 130816, "Chinese", 1, 4, 2, AsciiCompatibility.CONVERTER, 0), new GenericTranscoderEntry("IBM037", "ISO-8859-1", 948, "Ebcdic", 1, 1, 1, AsciiCompatibility.DECODER, 0), new GenericTranscoderEntry("ISO-8859-1", "IBM037", 1904, "Ebcdic", 1, 1, 1, AsciiCompatibility.ENCODER, 0), new GenericTranscoderEntry("UTF8-DoCoMo", "UTF8-KDDI", 1176, "Emoji", 1, 4, 6, AsciiCompatibility.CONVERTER, 0), new GenericTranscoderEntry("UTF8-DoCoMo", "UTF8-SoftBank", 2148, "Emoji", 1, 4, 6, AsciiCompatibility.CONVERTER, 0), new GenericTranscoderEntry("UTF8-DoCoMo", "UTF-8", 2616, "Emoji", 1, 4, 4, AsciiCompatibility.CONVERTER, 0), new GenericTranscoderEntry("UTF8-KDDI", "UTF8-DoCoMo", 5684, "Emoji", 1, 4, 6, AsciiCompatibility.CONVERTER, 0), new GenericTranscoderEntry("UTF8-KDDI", "UTF8-SoftBank", 9996, "Emoji", 1, 4, 6, AsciiCompatibility.CONVERTER, 0), new GenericTranscoderEntry("UTF8-KDDI", "UTF-8", 11544, "Emoji", 1, 4, 8, AsciiCompatibility.CONVERTER, 0), new GenericTranscoderEntry("UTF8-SoftBank", "UTF8-DoCoMo", 12784, "Emoji", 1, 4, 6, AsciiCompatibility.CONVERTER, 0), new GenericTranscoderEntry("UTF8-SoftBank", "UTF8-KDDI", 14812, "Emoji", 1, 4, 3, AsciiCompatibility.CONVERTER, 0), new GenericTranscoderEntry("UTF8-SoftBank", "UTF-8", 15460, "Emoji", 1, 4, 8, AsciiCompatibility.CONVERTER, 0), new GenericTranscoderEntry("UTF-8", "UTF8-DoCoMo", 17620, "Emoji", 1, 4, 6, AsciiCompatibility.CONVERTER, 0), new GenericTranscoderEntry("UTF-8", "UTF8-KDDI", 21120, "Emoji", 1, 4, 6, AsciiCompatibility.CONVERTER, 0), new GenericTranscoderEntry("UTF-8", "UTF8-SoftBank", 24060, "Emoji", 1, 4, 6, AsciiCompatibility.CONVERTER, 0), new GenericTranscoderEntry("stateless-ISO-2022-JP-KDDI", "UTF8-KDDI", 33996, "EmojiIso2022Kddi", 1, 3, 1, AsciiCompatibility.CONVERTER, 0), new GenericTranscoderEntry("UTF8-KDDI", "stateless-ISO-2022-JP-KDDI", 76404, "EmojiIso2022Kddi", 1, 4, 3, AsciiCompatibility.CONVERTER, 0), new GenericTranscoderEntry("SJIS-DOCOMO", "UTF8-DOCOMO", 39616, "EmojiSjisDocomo", 1, 2, 1, AsciiCompatibility.CONVERTER, 0), new GenericTranscoderEntry("UTF8-DOCOMO", "SJIS-DOCOMO", 84704, "EmojiSjisDocomo", 1, 4, 2, AsciiCompatibility.CONVERTER, 0), new GenericTranscoderEntry("SJIS-KDDI", "UTF8-KDDI", 39616, "EmojiSjisKddi", 1, 2, 1, AsciiCompatibility.CONVERTER, 0), new GenericTranscoderEntry("UTF8-KDDI", "SJIS-KDDI", 88668, "EmojiSjisKddi", 1, 4, 2, AsciiCompatibility.CONVERTER, 0), new GenericTranscoderEntry("SJIS-SoftBank", "UTF8-SoftBank", 39616, "EmojiSjisSoftbank", 1, 2, 1, AsciiCompatibility.CONVERTER, 0), new GenericTranscoderEntry("UTF8-SoftBank", "SJIS-SoftBank", 84704, "EmojiSjisSoftbank", 1, 4, 2, AsciiCompatibility.CONVERTER, 0), new GenericTranscoderEntry("", "amp_escape", 8, "Escape", 1, 1, 5, AsciiCompatibility.CONVERTER, 0), new GenericTranscoderEntry("", "xml_text_escape", 32, "Escape", 1, 1, 5, AsciiCompatibility.CONVERTER, 0), new GenericTranscoderEntry("", "xml_attr_content_escape", 64, "Escape", 1, 1, 6, AsciiCompatibility.CONVERTER, 0), new GenericTranscoderEntry("GBK", "UTF-8", 89284, "Gbk", 1, 2, 1, AsciiCompatibility.CONVERTER, 0), new GenericTranscoderEntry("UTF-8", "GBK", 182912, "Gbk", 1, 4, 2, AsciiCompatibility.CONVERTER, 0), new GenericTranscoderEntry("EUC-JP", "UTF-8", 54488, "JapaneseEuc", 1, 3, 1, AsciiCompatibility.CONVERTER, 0), new GenericTranscoderEntry("eucJP-ms", "UTF-8", 64480, "JapaneseEuc", 1, 3, 1, AsciiCompatibility.CONVERTER, 0), new GenericTranscoderEntry("CP51932", "UTF-8", 66380, "JapaneseEuc", 1, 2, 1, AsciiCompatibility.CONVERTER, 0), new GenericTranscoderEntry("EUC-JIS-2004", "UTF-8", 86460, "JapaneseEuc", 1, 3, 1, AsciiCompatibility.CONVERTER, 0), new GenericTranscoderEntry("UTF-8", "EUC-JP", 145860, "JapaneseEuc", 1, 4, 3, AsciiCompatibility.CONVERTER, 0), new GenericTranscoderEntry("UTF-8", "eucJP-ms", 164832, "JapaneseEuc", 1, 4, 3, AsciiCompatibility.CONVERTER, 0), new GenericTranscoderEntry("UTF-8", "CP51932", 199520, "JapaneseEuc", 1, 4, 2, AsciiCompatibility.CONVERTER, 0), new GenericTranscoderEntry("UTF-8", "EUC-JIS-2004", 257272, "JapaneseEuc", 1, 4, 3, AsciiCompatibility.CONVERTER, 0), new GenericTranscoderEntry("Shift_JIS", "UTF-8", 28448, "JapaneseSjis", 1, 2, 1, AsciiCompatibility.CONVERTER, 0), new GenericTranscoderEntry("Windows-31J", "UTF-8", 40648, "JapaneseSjis", 1, 2, 1, AsciiCompatibility.CONVERTER, 0), new GenericTranscoderEntry("UTF-8", "Shift_JIS", 75704, "JapaneseSjis", 1, 4, 2, AsciiCompatibility.CONVERTER, 0), new GenericTranscoderEntry("UTF-8", "Windows-31J", 104500, "JapaneseSjis", 1, 4, 2, AsciiCompatibility.CONVERTER, 0), new GenericTranscoderEntry("UTF-8", "EUC-KR", 44112, "Korean", 1, 4, 2, AsciiCompatibility.CONVERTER, 0), new GenericTranscoderEntry("EUC-KR", "UTF-8", 78500, "Korean", 1, 2, 1, AsciiCompatibility.CONVERTER, 0), new GenericTranscoderEntry("UTF-8", "CP949", 126176, "Korean", 1, 4, 2, AsciiCompatibility.CONVERTER, 0), new GenericTranscoderEntry("CP949", "UTF-8", 196644, "Korean", 1, 2, 1, AsciiCompatibility.CONVERTER, 0), new GenericTranscoderEntry("", "crlf_newline", 20, "Newline", 1, 1, 2, AsciiCompatibility.CONVERTER, 0), new GenericTranscoderEntry("", "cr_newline", 36, "Newline", 1, 1, 1, AsciiCompatibility.CONVERTER, 0), new GenericTranscoderEntry("US-ASCII", "UTF-8", 8, "SingleByte", 1, 1, 1, AsciiCompatibility.CONVERTER, 0), new GenericTranscoderEntry("UTF-8", "US-ASCII", 132, "SingleByte", 1, 4, 1, AsciiCompatibility.CONVERTER, 0), new GenericTranscoderEntry("ASCII-8BIT", "UTF-8", 148, "SingleByte", 1, 1, 1, AsciiCompatibility.CONVERTER, 0), new GenericTranscoderEntry("UTF-8", "ASCII-8BIT", 132, "SingleByte", 1, 4, 1, AsciiCompatibility.CONVERTER, 0), new GenericTranscoderEntry("ISO-8859-1", "UTF-8", 672, "SingleByte", 1, 1, 1, AsciiCompatibility.CONVERTER, 0), new GenericTranscoderEntry("UTF-8", "ISO-8859-1", 1260, "SingleByte", 1, 4, 1, AsciiCompatibility.CONVERTER, 0), new GenericTranscoderEntry("ISO-8859-2", "UTF-8", 1784, "SingleByte", 1, 1, 1, AsciiCompatibility.CONVERTER, 0), new GenericTranscoderEntry("UTF-8", "ISO-8859-2", 2440, "SingleByte", 1, 4, 1, AsciiCompatibility.CONVERTER, 0), new GenericTranscoderEntry("ISO-8859-3", "UTF-8", 2940, "SingleByte", 1, 1, 1, AsciiCompatibility.CONVERTER, 0), new GenericTranscoderEntry("UTF-8", "ISO-8859-3", 3568, "SingleByte", 1, 4, 1, AsciiCompatibility.CONVERTER, 0), new GenericTranscoderEntry("ISO-8859-4", "UTF-8", 4092, "SingleByte", 1, 1, 1, AsciiCompatibility.CONVERTER, 0), new GenericTranscoderEntry("UTF-8", "ISO-8859-4", 4748, "SingleByte", 1, 4, 1, AsciiCompatibility.CONVERTER, 0), new GenericTranscoderEntry("ISO-8859-5", "UTF-8", 5272, "SingleByte", 1, 1, 1, AsciiCompatibility.CONVERTER, 0), new GenericTranscoderEntry("UTF-8", "ISO-8859-5", 5928, "SingleByte", 1, 4, 1, AsciiCompatibility.CONVERTER, 0), new GenericTranscoderEntry("ISO-8859-6", "UTF-8", 6276, "SingleByte", 1, 1, 1, AsciiCompatibility.CONVERTER, 0), new GenericTranscoderEntry("UTF-8", "ISO-8859-6", 6712, "SingleByte", 1, 4, 1, AsciiCompatibility.CONVERTER, 0), new GenericTranscoderEntry("ISO-8859-7", "UTF-8", 7228, "SingleByte", 1, 1, 1, AsciiCompatibility.CONVERTER, 0), new GenericTranscoderEntry("UTF-8", "ISO-8859-7", 7912, "SingleByte", 1, 4, 1, AsciiCompatibility.CONVERTER, 0), new GenericTranscoderEntry("ISO-8859-8", "UTF-8", 8296, "SingleByte", 1, 1, 1, AsciiCompatibility.CONVERTER, 0), new GenericTranscoderEntry("UTF-8", "ISO-8859-8", 8808, "SingleByte", 1, 4, 1, AsciiCompatibility.CONVERTER, 0), new GenericTranscoderEntry("ISO-8859-9", "UTF-8", 9332, "SingleByte", 1, 1, 1, AsciiCompatibility.CONVERTER, 0), new GenericTranscoderEntry("UTF-8", "ISO-8859-9", 9696, "SingleByte", 1, 4, 1, AsciiCompatibility.CONVERTER, 0), new GenericTranscoderEntry("ISO-8859-10", "UTF-8", 10220, "SingleByte", 1, 1, 1, AsciiCompatibility.CONVERTER, 0), new GenericTranscoderEntry("UTF-8", "ISO-8859-10", 10896, "SingleByte", 1, 4, 1, AsciiCompatibility.CONVERTER, 0), new GenericTranscoderEntry("ISO-8859-11", "UTF-8", 11392, "SingleByte", 1, 1, 1, AsciiCompatibility.CONVERTER, 0), new GenericTranscoderEntry("UTF-8", "ISO-8859-11", 11992, "SingleByte", 1, 4, 1, AsciiCompatibility.CONVERTER, 0), new GenericTranscoderEntry("ISO-8859-13", "UTF-8", 12516, "SingleByte", 1, 1, 1, AsciiCompatibility.CONVERTER, 0), new GenericTranscoderEntry("UTF-8", "ISO-8859-13", 13192, "SingleByte", 1, 4, 1, AsciiCompatibility.CONVERTER, 0), new GenericTranscoderEntry("ISO-8859-14", "UTF-8", 13716, "SingleByte", 1, 1, 1, AsciiCompatibility.CONVERTER, 0), new GenericTranscoderEntry("UTF-8", "ISO-8859-14", 14452, "SingleByte", 1, 4, 1, AsciiCompatibility.CONVERTER, 0), new GenericTranscoderEntry("ISO-8859-15", "UTF-8", 14976, "SingleByte", 1, 1, 1, AsciiCompatibility.CONVERTER, 0), new GenericTranscoderEntry("UTF-8", "ISO-8859-15", 15360, "SingleByte", 1, 4, 1, AsciiCompatibility.CONVERTER, 0), new GenericTranscoderEntry("ISO-8859-16", "UTF-8", 15884, "SingleByte", 1, 1, 1, AsciiCompatibility.CONVERTER, 0), new GenericTranscoderEntry("UTF-8", "ISO-8859-16", 16580, "SingleByte", 1, 4, 1, AsciiCompatibility.CONVERTER, 0), new GenericTranscoderEntry("WINDOWS-874", "UTF-8", 16984, "SingleByte", 1, 1, 1, AsciiCompatibility.CONVERTER, 0), new GenericTranscoderEntry("UTF-8", "WINDOWS-874", 17148, "SingleByte", 1, 4, 1, AsciiCompatibility.CONVERTER, 0), new GenericTranscoderEntry("WINDOWS-1250", "UTF-8", 17656, "SingleByte", 1, 1, 1, AsciiCompatibility.CONVERTER, 0), new GenericTranscoderEntry("UTF-8", "WINDOWS-1250", 18212, "SingleByte", 1, 4, 1, AsciiCompatibility.CONVERTER, 0), new GenericTranscoderEntry("WINDOWS-1251", "UTF-8", 18736, "SingleByte", 1, 1, 1, AsciiCompatibility.CONVERTER, 0), new GenericTranscoderEntry("UTF-8", "WINDOWS-1251", 19372, "SingleByte", 1, 4, 1, AsciiCompatibility.CONVERTER, 0), new GenericTranscoderEntry("WINDOWS-1252", "UTF-8", 19880, "SingleByte", 1, 1, 1, AsciiCompatibility.CONVERTER, 0), new GenericTranscoderEntry("UTF-8", "WINDOWS-1252", 20180, "SingleByte", 1, 4, 1, AsciiCompatibility.CONVERTER, 0), new GenericTranscoderEntry("WINDOWS-1253", "UTF-8", 20640, "SingleByte", 1, 1, 1, AsciiCompatibility.CONVERTER, 0), new GenericTranscoderEntry("UTF-8", "WINDOWS-1253", 21152, "SingleByte", 1, 4, 1, AsciiCompatibility.CONVERTER, 0), new GenericTranscoderEntry("WINDOWS-1254", "UTF-8", 21652, "SingleByte", 1, 1, 1, AsciiCompatibility.CONVERTER, 0), new GenericTranscoderEntry("UTF-8", "WINDOWS-1254", 21768, "SingleByte", 1, 4, 1, AsciiCompatibility.CONVERTER, 0), new GenericTranscoderEntry("WINDOWS-1255", "UTF-8", 22208, "SingleByte", 1, 1, 1, AsciiCompatibility.CONVERTER, 0), new GenericTranscoderEntry("UTF-8", "WINDOWS-1255", 22984, "SingleByte", 1, 4, 3, AsciiCompatibility.CONVERTER, 0), new GenericTranscoderEntry("WINDOWS-1256", "UTF-8", 23508, "SingleByte", 1, 1, 1, AsciiCompatibility.CONVERTER, 0), new GenericTranscoderEntry("UTF-8", "WINDOWS-1256", 24252, "SingleByte", 1, 4, 1, AsciiCompatibility.CONVERTER, 0), new GenericTranscoderEntry("WINDOWS-1257", "UTF-8", 24732, "SingleByte", 1, 1, 1, AsciiCompatibility.CONVERTER, 0), new GenericTranscoderEntry("UTF-8", "WINDOWS-1257", 24952, "SingleByte", 1, 4, 1, AsciiCompatibility.CONVERTER, 0), new GenericTranscoderEntry("IBM437", "UTF-8", 25476, "SingleByte", 1, 1, 1, AsciiCompatibility.CONVERTER, 0), new GenericTranscoderEntry("UTF-8", "IBM437", 26312, "SingleByte", 1, 4, 1, AsciiCompatibility.CONVERTER, 0), new GenericTranscoderEntry("IBM720", "UTF-8", 26808, "SingleByte", 1, 1, 1, AsciiCompatibility.CONVERTER, 0), new GenericTranscoderEntry("UTF-8", "IBM720", 27288, "SingleByte", 1, 4, 1, AsciiCompatibility.CONVERTER, 0), new GenericTranscoderEntry("IBM737", "UTF-8", 27812, "SingleByte", 1, 1, 1, AsciiCompatibility.CONVERTER, 0), new GenericTranscoderEntry("UTF-8", "IBM737", 28300, "SingleByte", 1, 4, 1, AsciiCompatibility.CONVERTER, 0), new GenericTranscoderEntry("IBM775", "UTF-8", 28824, "SingleByte", 1, 1, 1, AsciiCompatibility.CONVERTER, 0), new GenericTranscoderEntry("UTF-8", "IBM775", 29468, "SingleByte", 1, 4, 1, AsciiCompatibility.CONVERTER, 0), new GenericTranscoderEntry("IBM852", "UTF-8", 29992, "SingleByte", 1, 1, 1, AsciiCompatibility.CONVERTER, 0), new GenericTranscoderEntry("UTF-8", "IBM852", 30608, "SingleByte", 1, 4, 1, AsciiCompatibility.CONVERTER, 0), new GenericTranscoderEntry("IBM855", "UTF-8", 31132, "SingleByte", 1, 1, 1, AsciiCompatibility.CONVERTER, 0), new GenericTranscoderEntry("UTF-8", "IBM855", 31684, "SingleByte", 1, 4, 1, AsciiCompatibility.CONVERTER, 0), new GenericTranscoderEntry("IBM857", "UTF-8", 32200, "SingleByte", 1, 1, 1, AsciiCompatibility.CONVERTER, 0), new GenericTranscoderEntry("UTF-8", "IBM857", 32712, "SingleByte", 1, 4, 1, AsciiCompatibility.CONVERTER, 0), new GenericTranscoderEntry("IBM860", "UTF-8", 33236, "SingleByte", 1, 1, 1, AsciiCompatibility.CONVERTER, 0), new GenericTranscoderEntry("UTF-8", "IBM860", 33624, "SingleByte", 1, 4, 1, AsciiCompatibility.CONVERTER, 0), new GenericTranscoderEntry("IBM861", "UTF-8", 34148, "SingleByte", 1, 1, 1, AsciiCompatibility.CONVERTER, 0), new GenericTranscoderEntry("UTF-8", "IBM861", 34460, "SingleByte", 1, 4, 1, AsciiCompatibility.CONVERTER, 0), new GenericTranscoderEntry("IBM862", "UTF-8", 34984, "SingleByte", 1, 1, 1, AsciiCompatibility.CONVERTER, 0), new GenericTranscoderEntry("UTF-8", "IBM862", 35228, "SingleByte", 1, 4, 1, AsciiCompatibility.CONVERTER, 0), new GenericTranscoderEntry("IBM863", "UTF-8", 35752, "SingleByte", 1, 1, 1, AsciiCompatibility.CONVERTER, 0), new GenericTranscoderEntry("UTF-8", "IBM863", 36132, "SingleByte", 1, 4, 1, AsciiCompatibility.CONVERTER, 0), new GenericTranscoderEntry("IBM865", "UTF-8", 36656, "SingleByte", 1, 1, 1, AsciiCompatibility.CONVERTER, 0), new GenericTranscoderEntry("UTF-8", "IBM865", 36968, "SingleByte", 1, 4, 1, AsciiCompatibility.CONVERTER, 0), new GenericTranscoderEntry("IBM866", "UTF-8", 37492, "SingleByte", 1, 1, 1, AsciiCompatibility.CONVERTER, 0), new GenericTranscoderEntry("UTF-8", "IBM866", 37948, "SingleByte", 1, 4, 1, AsciiCompatibility.CONVERTER, 0), new GenericTranscoderEntry("IBM869", "UTF-8", 38440, "SingleByte", 1, 1, 1, AsciiCompatibility.CONVERTER, 0), new GenericTranscoderEntry("UTF-8", "IBM869", 38956, "SingleByte", 1, 4, 1, AsciiCompatibility.CONVERTER, 0), new GenericTranscoderEntry("MACCROATIAN", "UTF-8", 39480, "SingleByte", 1, 1, 1, AsciiCompatibility.CONVERTER, 0), new GenericTranscoderEntry("UTF-8", "MACCROATIAN", 40312, "SingleByte", 1, 4, 1, AsciiCompatibility.CONVERTER, 0), new GenericTranscoderEntry("MACCYRILLIC", "UTF-8", 40836, "SingleByte", 1, 1, 1, AsciiCompatibility.CONVERTER, 0), new GenericTranscoderEntry("UTF-8", "MACCYRILLIC", 41540, "SingleByte", 1, 4, 1, AsciiCompatibility.CONVERTER, 0), new GenericTranscoderEntry("MACGREEK", "UTF-8", 42064, "SingleByte", 1, 1, 1, AsciiCompatibility.CONVERTER, 0), new GenericTranscoderEntry("UTF-8", "MACGREEK", 42764, "SingleByte", 1, 4, 1, AsciiCompatibility.CONVERTER, 0), new GenericTranscoderEntry("MACICELAND", "UTF-8", 43288, "SingleByte", 1, 1, 1, AsciiCompatibility.CONVERTER, 0), new GenericTranscoderEntry("UTF-8", "MACICELAND", 44004, "SingleByte", 1, 4, 1, AsciiCompatibility.CONVERTER, 0), new GenericTranscoderEntry("MACROMAN", "UTF-8", 44528, "SingleByte", 1, 1, 1, AsciiCompatibility.CONVERTER, 0), new GenericTranscoderEntry("UTF-8", "MACROMAN", 45012, "SingleByte", 1, 4, 1, AsciiCompatibility.CONVERTER, 0), new GenericTranscoderEntry("MACROMANIA", "UTF-8", 45536, "SingleByte", 1, 1, 1, AsciiCompatibility.CONVERTER, 0), new GenericTranscoderEntry("UTF-8", "MACROMANIA", 45912, "SingleByte", 1, 4, 1, AsciiCompatibility.CONVERTER, 0), new GenericTranscoderEntry("MACTURKISH", "UTF-8", 46432, "SingleByte", 1, 1, 1, AsciiCompatibility.CONVERTER, 0), new GenericTranscoderEntry("UTF-8", "MACTURKISH", 46788, "SingleByte", 1, 4, 1, AsciiCompatibility.CONVERTER, 0), new GenericTranscoderEntry("MACUKRAINE", "UTF-8", 47312, "SingleByte", 1, 1, 1, AsciiCompatibility.CONVERTER, 0), new GenericTranscoderEntry("UTF-8", "MACUKRAINE", 47536, "SingleByte", 1, 4, 1, AsciiCompatibility.CONVERTER, 0), new GenericTranscoderEntry("KOI8-U", "UTF-8", 48060, "SingleByte", 1, 1, 1, AsciiCompatibility.CONVERTER, 0), new GenericTranscoderEntry("UTF-8", "KOI8-U", 48844, "SingleByte", 1, 4, 1, AsciiCompatibility.CONVERTER, 0), new GenericTranscoderEntry("KOI8-R", "UTF-8", 49368, "SingleByte", 1, 1, 1, AsciiCompatibility.CONVERTER, 0), new GenericTranscoderEntry("UTF-8", "KOI8-R", 49900, "SingleByte", 1, 4, 1, AsciiCompatibility.CONVERTER, 0), new GenericTranscoderEntry("TIS-620", "UTF-8", 50264, "SingleByte", 1, 1, 1, AsciiCompatibility.CONVERTER, 0), new GenericTranscoderEntry("UTF-8", "TIS-620", 50308, "SingleByte", 1, 4, 1, AsciiCompatibility.CONVERTER, 0), new GenericTranscoderEntry("CP850", "UTF-8", 50832, "SingleByte", 1, 1, 1, AsciiCompatibility.CONVERTER, 0), new GenericTranscoderEntry("UTF-8", "CP850", 51380, "SingleByte", 1, 4, 1, AsciiCompatibility.CONVERTER, 0), new GenericTranscoderEntry("CP852", "UTF-8", 29992, "SingleByte", 1, 1, 1, AsciiCompatibility.CONVERTER, 0), new GenericTranscoderEntry("UTF-8", "CP852", 30608, "SingleByte", 1, 4, 1, AsciiCompatibility.CONVERTER, 0), new GenericTranscoderEntry("CP855", "UTF-8", 31132, "SingleByte", 1, 1, 1, AsciiCompatibility.CONVERTER, 0), new GenericTranscoderEntry("UTF-8", "CP855", 31684, "SingleByte", 1, 4, 1, AsciiCompatibility.CONVERTER, 0), new GenericTranscoderEntry("UTF-8", "UTF8-MAC", 52420, "Utf8Mac", 1, 4, 9, AsciiCompatibility.CONVERTER, 0) }; public static Transcoder getInstance(String name) { switch (name) { case "From_CESU_8": return From_CESU_8_Transcoder.INSTANCE; case "To_CESU_8": return To_CESU_8_Transcoder.INSTANCE; case "Iso2022jp_kddi_decoder": return Iso2022jp_kddi_decoder_Transcoder.INSTANCE; case "Iso2022jp_kddi_encoder": return Iso2022jp_kddi_encoder_Transcoder.INSTANCE; case "Escape_xml_attr_quote": return Escape_xml_attr_quote_Transcoder.INSTANCE; case "From_GB18030": return From_GB18030_Transcoder.INSTANCE; case "To_GB18030": return To_GB18030_Transcoder.INSTANCE; case "Iso2022jp_decoder": return Iso2022jp_decoder_Transcoder.INSTANCE; case "Iso2022jp_encoder": return Iso2022jp_encoder_Transcoder.INSTANCE; case "Stateless_iso2022jp_to_eucjp": return Stateless_iso2022jp_to_eucjp_Transcoder.INSTANCE; case "Eucjp_to_stateless_iso2022jp": return Eucjp_to_stateless_iso2022jp_Transcoder.INSTANCE; case "Cp50220_decoder": return Cp50220_decoder_Transcoder.INSTANCE; case "Cp50221_decoder": return Cp50221_decoder_Transcoder.INSTANCE; case "Cp50221_encoder": return Cp50221_encoder_Transcoder.INSTANCE; case "Cp50220_encoder": return Cp50220_encoder_Transcoder.INSTANCE; case "Eucjp2sjis": return Eucjp2sjis_Transcoder.INSTANCE; case "Sjis2eucjp": return Sjis2eucjp_Transcoder.INSTANCE; case "Universal_newline": return Universal_newline_Transcoder.INSTANCE; case "From_UTF8_MAC": return From_UTF8_MAC_Transcoder.INSTANCE; case "From_UTF_16BE": return From_UTF_16BE_Transcoder.INSTANCE; case "To_UTF_16BE": return To_UTF_16BE_Transcoder.INSTANCE; case "From_UTF_16LE": return From_UTF_16LE_Transcoder.INSTANCE; case "To_UTF_16LE": return To_UTF_16LE_Transcoder.INSTANCE; case "From_UTF_32BE": return From_UTF_32BE_Transcoder.INSTANCE; case "To_UTF_32BE": return To_UTF_32BE_Transcoder.INSTANCE; case "From_UTF_32LE": return From_UTF_32LE_Transcoder.INSTANCE; case "To_UTF_32LE": return To_UTF_32LE_Transcoder.INSTANCE; case "From_UTF_16": return From_UTF_16_Transcoder.INSTANCE; case "From_UTF_32": return From_UTF_32_Transcoder.INSTANCE; case "To_UTF_16": return To_UTF_16_Transcoder.INSTANCE; case "To_UTF_32": return To_UTF_32_Transcoder.INSTANCE; default: return Transcoder.load(name); } } } jcodings-1.0.58/src/org/jcodings/transcode/Transcoding.java000066400000000000000000000763501433325321700237010ustar00rootroot00000000000000/* * Permission is hereby granted, free of charge, to any person obtaining a copy of * this software and associated documentation files (the "Software"), to deal in * the Software without restriction, including without limitation the rights to * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies * of the Software, and to permit persons to whom the Software is furnished to do * so, subject to the following conditions: * * The above copyright notice and this permission notice shall be included in all * copies or substantial portions of the Software. * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE * SOFTWARE. */ package org.jcodings.transcode; import org.jcodings.Ptr; import static java.lang.Byte.toUnsignedInt; public class Transcoding implements TranscodingInstruction { public Transcoding(Transcoder transcoder, int flags) { this.transcoder = transcoder; this.flags = flags; this.resumePosition = START; this.recognizedLength = 0; this.readAgainLength = 0; this.writeBuffLen = 0; this.writeBuffOff = 0; this.readBuf = new byte[transcoder.maxInput]; this.writeBuf = new byte[transcoder.maxOutput]; this.state = new byte[transcoder.stateSize]; transcoder.stateInit(state); } public final Transcoder transcoder; private int flags; private int resumePosition; private int nextTable; private int nextInfo; private byte nextByte; private int outputIndex; int recognizedLength, readAgainLength; final byte[] readBuf; private int writeBuffOff, writeBuffLen; private final byte[] writeBuf; final byte[] state; private EConvResult suspendResult; void close() { transcoder.stateFinish(state); } private int charStart; private byte[] charStartBytes; @Override public String toString() { return "Transcoding for transcoder " + transcoder.toString(); } /* transcode_char_start */ int charStart() { if (recognizedLength > inCharStart - inPos.p) { System.arraycopy(inBytes, inCharStart, readBuf, recognizedLength, inP - inCharStart); charStart = 0; charStartBytes = readBuf; } else { charStart = inCharStart - recognizedLength; charStartBytes = inBytes; } return recognizedLength + (inP - inCharStart); } /* rb_transcoding_convert */ EConvResult convert(byte[] in, Ptr inPtr, int inStop, byte[] out, Ptr outPtr, int outStop, int flags) { return transcodeRestartable(in, inPtr, inStop, out, outPtr, outStop, flags); } private EConvResult transcodeRestartable(byte[] in, Ptr inStart, int inStop, byte[] out, Ptr outStart, int outStop, int opt) { if (readAgainLength != 0) { byte[] readAgainBuf = new byte[readAgainLength]; Ptr readAgainPos = new Ptr(0); int readAgainStop = readAgainLength; System.arraycopy(readBuf, recognizedLength, readAgainBuf, readAgainPos.p, readAgainLength); readAgainLength = 0; System.arraycopy(readAgainBuf, 0, TRANSCODING_READBUF(this), recognizedLength, readAgainLength); readAgainLength = 0; EConvResult res = transcodeRestartable0(readAgainBuf, readAgainPos, out, outStart, readAgainStop, outStop, opt | EConv.PARTIAL_INPUT); if (!res.isSourceBufferEmpty()) { System.arraycopy(readAgainBuf, readAgainPos.p, readBuf, recognizedLength + readAgainLength, readAgainStop - readAgainPos.p); readAgainLength += readAgainStop - readAgainPos.p; } } return transcodeRestartable0(in, inStart, out, outStart, inStop, outStop, opt); } private int inCharStart; private byte[] inBytes; private int inP; private Ptr inPos; private static int STR1_LENGTH(byte[] bytes, int byteaddr) { return bytes[byteaddr] + 4; } private static int STR1_BYTEINDEX(int w) { return w >>> 6; } private EConvResult transcodeRestartable0(final byte[] in_bytes, Ptr in_pos, final byte[] out_bytes, Ptr out_pos, int in_stop, int out_stop, int opt) { Transcoder tr = transcoder; int unitlen = tr.inputUnitLength; int readagain_len = 0; int inchar_start = in_pos.p; int in_p = inchar_start; int out_p = out_pos.p; int[] char_len = null; byte[][] outByteParam = null; int ip = resumePosition; MACHINE: while (true) { switch (ip) { case START: inchar_start = in_p; recognizedLength = 0; nextTable = tr.treeStart; if (SUSPEND == SUSPEND_AFTER_OUTPUT(this, opt, in_bytes, in_p, inchar_start, in_pos, out_pos, out_p, readagain_len, RESUME_AFTER_OUTPUT)) return suspendResult; // fall through case RESUME_AFTER_OUTPUT: if (in_stop <= in_p) { if ((opt & EConvFlags.PARTIAL_INPUT) == 0) { ip = CLEANUP; continue; } SUSPEND(this, in_bytes, in_p, inchar_start, in_pos, out_pos, out_p, readagain_len, EConvResult.SourceBufferEmpty, START); return suspendResult; } // fall through case NEXTBYTE: nextByte = in_bytes[in_p++]; // fall through case FOLLOW_BYTE: // follow_byte: if (toUnsignedInt(nextByte) < BL_MIN_BYTE(this) || BL_MAX_BYTE(this) < toUnsignedInt(nextByte)) { nextInfo = INVALID; } else { nextInfo = BL_ACTION(this, nextByte); } // fall through case FOLLOW_INFO: // follow_info: switch (nextInfo & 0x1F) { case NOMAP: int p = inchar_start; writeBuffOff = 0; while (p < in_p) { writeBuf[writeBuffOff++] = in_bytes[p++]; } writeBuffLen = writeBuffOff; writeBuffOff = 0; ip = NOMAP_TRANSFER; continue; case 0x00: case 0x04: case 0x08: case 0x0C: case 0x10: case 0x14: case 0x18: case 0x1C: if (SUSPEND == SUSPEND_AFTER_OUTPUT(this, opt, in_bytes, in_p, inchar_start, in_pos, out_pos, out_p, readagain_len, SELECT_TABLE)) return suspendResult; ip = SELECT_TABLE; continue; case ZERObt: // drop input ip = START; continue; case ONEbt: ip = ONE_BYTE_1; continue; case TWObt: ip = TWO_BYTE_1; continue; case THREEbt: ip = FOUR_BYTE_1; continue; case FOURbt: ip = FOUR_BYTE_0; continue; case GB4bt: ip = GB_FOUR_BYTE_0; continue; case STR1: outputIndex = 0; ip = STRING; continue; case FUNii: nextInfo = tr.infoToInfo(state, nextInfo); ip = FOLLOW_INFO; continue; case FUNsi: { int char_start; char_len = PREPARE_CHAR_LEN(char_len); outByteParam = PREPARE_OUT_BYTES(outByteParam); char_start = transcode_char_start(in_bytes, in_pos.p, inchar_start, in_p, char_len, outByteParam); nextInfo = tr.startToInfo(state, outByteParam[0], char_start, char_len[0]); ip = FOLLOW_INFO; continue; } case FUNio: ip = CALL_FUN_IO; continue; case FUNso: ip = RESUME_CALL_FUN_SO; continue; case FUNsio: if (SUSPEND == SUSPEND_OBUF(this, out_stop, in_bytes, in_p, inchar_start, in_pos, out_pos, out_p, readagain_len, RESUME_CALL_FUN_SIO)) return suspendResult; ip = CALL_FUN_SIO; continue; case INVALID: if (recognizedLength + (in_p - inchar_start) <= unitlen) { if (recognizedLength + (in_p - inchar_start) < unitlen) { if (SUSPEND == SUSPEND_AFTER_OUTPUT(this, opt, in_bytes, in_p, inchar_start, in_pos, out_pos, out_p, readagain_len, READ_MORE)) return suspendResult; } ip = READ_MORE; continue; } else { int invalid_len; int discard_len; invalid_len = recognizedLength + (in_p - inchar_start); discard_len = ((invalid_len - 1) / unitlen) * unitlen; readagain_len = invalid_len - discard_len; ip = REPORT_INVALID; continue; } case UNDEF: ip = REPORT_UNDEF; continue; default: throw new RuntimeException("unknown transcoding instruction"); } // read more for character case READ_MORE: while ((opt & EConvFlags.PARTIAL_INPUT) != 0 && recognizedLength + (in_stop - inchar_start) < unitlen) { in_p = in_stop; SUSPEND(this, in_bytes, in_p, inchar_start, in_pos, out_pos, out_p, readagain_len, EConvResult.SourceBufferEmpty, READ_MORE); return suspendResult; } if (recognizedLength + (in_stop - inchar_start) <= unitlen) { in_p = in_stop; } else { in_p = inchar_start + (unitlen - recognizedLength); } ip = REPORT_INVALID; continue; // func_sio logic case RESUME_CALL_FUN_SIO: // continue loop from SUSPEND_OBUF while (out_stop - out_p < 1) { SUSPEND(this, in_bytes, in_p, inchar_start, in_pos, out_pos, out_p, readagain_len, EConvResult.DestinationBufferFull, RESUME_CALL_FUN_SIO); return suspendResult; } // fall through case CALL_FUN_SIO: { int char_start; char_len = PREPARE_CHAR_LEN(char_len); outByteParam = PREPARE_OUT_BYTES(outByteParam); if (tr.maxOutput <= out_stop - out_p) { char_start = transcode_char_start(in_bytes, in_pos.p, inchar_start, in_p, char_len, outByteParam); out_p += tr.startInfoToOutput(state, outByteParam[0], char_start, char_len[0], nextInfo, out_bytes, out_p, out_stop - out_p); ip = START; continue; } else { char_start = transcode_char_start(in_bytes, in_pos.p, inchar_start, in_p, char_len, outByteParam); writeBuffLen = tr.startInfoToOutput(state, outByteParam[0], char_start, char_len[0], nextInfo, writeBuf, 0, writeBuf.length); writeBuffOff = 0; ip = TRANSFER_WRITEBUF; continue; } } // func_so logic case RESUME_CALL_FUN_SO: if (SUSPEND == SUSPEND_OBUF(this, out_stop, in_bytes, in_p, inchar_start, in_pos, out_pos, out_p, readagain_len, RESUME_CALL_FUN_SO)) return suspendResult; // fall through case CALL_FUN_SO: { int char_start; char_len = PREPARE_CHAR_LEN(char_len); outByteParam = PREPARE_OUT_BYTES(outByteParam); if (tr.maxOutput <= out_stop - out_p) { char_start = transcode_char_start(in_bytes, in_pos.p, inchar_start, in_p, char_len, outByteParam); out_p += tr.startToOutput(state, outByteParam[0], char_start, char_len[0], out_bytes, out_p, out_stop - out_p); ip = START; continue; } else { char_start = transcode_char_start(in_bytes, in_pos.p, inchar_start, in_p, char_len, outByteParam); writeBuffLen = tr.startToOutput(state, outByteParam[0], char_start, char_len[0], writeBuf, 0, writeBuf.length); writeBuffOff = 0; ip = TRANSFER_WRITEBUF; continue; } } // func_io logic case CALL_FUN_IO: if (tr.maxOutput <= out_stop - out_p) { out_p += tr.infoToOutput(state, nextInfo, out_bytes, out_p, out_stop - out_p); ip = START; continue; } else { writeBuffLen = tr.infoToOutput(state, nextInfo, writeBuf, 0, writeBuf.length); writeBuffOff = 0; ip = TRANSFER_WRITEBUF; continue; } // write buffer transfer logic case RESUME_TRANSFER_WRITEBUF: // continue loop from SUSPEND_OBUF if (SUSPEND == SUSPEND_OBUF(this, out_stop, in_bytes, in_p, inchar_start, in_pos, out_pos, out_p, readagain_len, RESUME_TRANSFER_WRITEBUF)) return suspendResult; out_bytes[out_p++] = writeBuf[writeBuffOff++]; // fall through case TRANSFER_WRITEBUF: while (writeBuffOff < writeBuffLen) { if (SUSPEND == SUSPEND_OBUF(this, out_stop, in_bytes, in_p, inchar_start, in_pos, out_pos, out_p, readagain_len, RESUME_TRANSFER_WRITEBUF)) return suspendResult; out_bytes[out_p++] = writeBuf[writeBuffOff++]; } ip = START; continue; // bytes from info logic case ONE_BYTE_1: // byte 1 if (SUSPEND == SUSPEND_OBUF(this, out_stop, in_bytes, in_p, inchar_start, in_pos, out_pos, out_p, readagain_len, ONE_BYTE_1)) return suspendResult; out_bytes[out_p++] = getBT1(nextInfo); ip = START; continue; case TWO_BYTE_1: // bytes 1, 2 if (SUSPEND == SUSPEND_OBUF(this, out_stop, in_bytes, in_p, inchar_start, in_pos, out_pos, out_p, readagain_len, TWO_BYTE_1)) return suspendResult; out_bytes[out_p++] = getBT1(nextInfo); // fall through case TWO_BYTE_2: // byte 2 if (SUSPEND == SUSPEND_OBUF(this, out_stop, in_bytes, in_p, inchar_start, in_pos, out_pos, out_p, readagain_len, TWO_BYTE_2)) return suspendResult; out_bytes[out_p++] = getBT2(nextInfo); ip = START; // continue continue; case FOUR_BYTE_0: // bytes 0, 1, 2, 3 if (SUSPEND == SUSPEND_OBUF(this, out_stop, in_bytes, in_p, inchar_start, in_pos, out_pos, out_p, readagain_len, FOUR_BYTE_0)) return suspendResult; out_bytes[out_p++] = getBT0(nextInfo); // fall through case FOUR_BYTE_1: // bytes 1, 2, 3 if (SUSPEND == SUSPEND_OBUF(this, out_stop, in_bytes, in_p, inchar_start, in_pos, out_pos, out_p, readagain_len, FOUR_BYTE_1)) return suspendResult; out_bytes[out_p++] = getBT1(nextInfo); // fall through case FOUR_BYTE_2: // bytes 2, 3 if (SUSPEND == SUSPEND_OBUF(this, out_stop, in_bytes, in_p, inchar_start, in_pos, out_pos, out_p, readagain_len, FOUR_BYTE_2)) return suspendResult; out_bytes[out_p++] = getBT2(nextInfo); // fall through case FOUR_BYTE_3: // byte 3 if (SUSPEND == SUSPEND_OBUF(this, out_stop, in_bytes, in_p, inchar_start, in_pos, out_pos, out_p, readagain_len, FOUR_BYTE_3)) return suspendResult; out_bytes[out_p++] = getBT3(nextInfo); ip = START; continue; case GB_FOUR_BYTE_0: // GB4 bytes 0, 1, 2, 3 if (SUSPEND == SUSPEND_OBUF(this, out_stop, in_bytes, in_p, inchar_start, in_pos, out_pos, out_p, readagain_len, GB_FOUR_BYTE_0)) return suspendResult; out_bytes[out_p++] = getGB4bt0(nextInfo); // fall through case GB_FOUR_BYTE_1: // GB4 bytes 1, 2, 3 if (SUSPEND == SUSPEND_OBUF(this, out_stop, in_bytes, in_p, inchar_start, in_pos, out_pos, out_p, readagain_len, GB_FOUR_BYTE_1)) return suspendResult; out_bytes[out_p++] = getGB4bt1(nextInfo); // fall through case GB_FOUR_BYTE_2: // GB4 bytes 2, 3 if (SUSPEND == SUSPEND_OBUF(this, out_stop, in_bytes, in_p, inchar_start, in_pos, out_pos, out_p, readagain_len, GB_FOUR_BYTE_2)) return suspendResult; out_bytes[out_p++] = getGB4bt2(nextInfo); // fall through case GB_FOUR_BYTE_3: // GB4 bytes 3 out_bytes[out_p++] = getGB4bt3(nextInfo); ip = START; continue; // for string table mappings, like xml escaping case RESUME_STRING: if (SUSPEND == SUSPEND_OBUF(this, out_stop, in_bytes, in_p, inchar_start, in_pos, out_pos, out_p, readagain_len, RESUME_STRING)) return suspendResult; out_bytes[out_p++] = transcoder.byteArray[BYTE_ADDR(STR1_BYTEINDEX(nextInfo)) + 1 + outputIndex]; outputIndex++; // fall through case STRING: while (outputIndex < STR1_LENGTH(transcoder.byteArray, BYTE_ADDR(STR1_BYTEINDEX(nextInfo)))) { if (SUSPEND == SUSPEND_OBUF(this, out_stop, in_bytes, in_p, inchar_start, in_pos, out_pos, out_p, readagain_len, RESUME_STRING)) return suspendResult; out_bytes[out_p++] = transcoder.byteArray[BYTE_ADDR(STR1_BYTEINDEX(nextInfo)) + 1 + outputIndex]; outputIndex++; } ip = START; continue; case RESUME_NOMAP: if (SUSPEND == SUSPEND_OBUF(this, out_stop, in_bytes, in_p, inchar_start, in_pos, out_pos, out_p, readagain_len, RESUME_NOMAP)) return suspendResult; out_bytes[out_p++] = writeBuf[writeBuffOff++]; // fall through case NOMAP_TRANSFER: while (writeBuffOff < writeBuffLen) { if (SUSPEND == SUSPEND_OBUF(this, out_stop, in_bytes, in_p, inchar_start, in_pos, out_pos, out_p, readagain_len, RESUME_NOMAP)) return suspendResult; out_bytes[out_p++] = writeBuf[writeBuffOff++]; } ip = START; continue; // table selection case SELECT_TABLE: while (in_p >= in_stop) { if ((opt & EConvFlags.PARTIAL_INPUT) == 0) { ip = REPORT_INCOMPLETE; // incomplete continue MACHINE; } SUSPEND(this, in_bytes, in_p, inchar_start, in_pos, out_pos, out_p, readagain_len, EConvResult.SourceBufferEmpty, SELECT_TABLE); return suspendResult; } nextByte = in_bytes[in_p++]; nextTable = nextInfo; ip = FOLLOW_BYTE; continue; // error reporting case REPORT_INVALID: // invalid: SUSPEND(this, in_bytes, in_p, inchar_start, in_pos, out_pos, out_p, readagain_len, EConvResult.InvalidByteSequence, START); return suspendResult; case REPORT_INCOMPLETE: // incomplete: SUSPEND(this, in_bytes, in_p, inchar_start, in_pos, out_pos, out_p, readagain_len, EConvResult.IncompleteInput, START); return suspendResult; case REPORT_UNDEF: // undef: SUSPEND(this, in_bytes, in_p, inchar_start, in_pos, out_pos, out_p, readagain_len, EConvResult.UndefinedConversion, START); return suspendResult; // tidying up case RESUME_FINISH_WRITEBUF: if (SUSPEND == SUSPEND_OBUF(this, out_stop, in_bytes, in_p, inchar_start, in_pos, out_pos, out_p, readagain_len, RESUME_FINISH_WRITEBUF)) return suspendResult; out_bytes[out_p++] = writeBuf[writeBuffOff++]; while (writeBuffOff <= writeBuffLen) { if (SUSPEND == SUSPEND_OBUF(this, out_stop, in_bytes, in_p, inchar_start, in_pos, out_pos, out_p, readagain_len, RESUME_FINISH_WRITEBUF)) return suspendResult; out_bytes[out_p++] = writeBuf[writeBuffOff++]; } ip = FINISHED; continue; case FINISH_FUNC: if (tr.maxOutput <= out_stop - out_p) { out_p += tr.finish(state, out_bytes, out_p, out_stop - out_p); } else { writeBuffLen = tr.finish(state, writeBuf, 0, writeBuf.length); writeBuffOff = 0; while (writeBuffOff < writeBuffLen) { if (SUSPEND == SUSPEND_OBUF(this, out_stop, in_bytes, in_p, inchar_start, in_pos, out_pos, out_p, readagain_len, RESUME_FINISH_WRITEBUF)) return suspendResult; out_bytes[out_p++] = writeBuf[writeBuffOff++]; } } ip = FINISHED; continue; case CLEANUP: if (tr.hasFinish()) { if (SUSPEND == SUSPEND_OBUF(this, out_stop, in_bytes, in_p, inchar_start, in_pos, out_pos, out_p, readagain_len, CLEANUP)) return suspendResult; ip = FINISH_FUNC; continue; } // fall through case FINISHED: SUSPEND(this, in_bytes, in_p, inchar_start, in_pos, out_pos, out_p, readagain_len, EConvResult.Finished, FINISHED); return suspendResult; } } } private int[] PREPARE_CHAR_LEN(int[] char_len) { if (char_len == null) { char_len = new int[]{0}; } else { char_len[0] = 0; } return char_len; } private byte[][] PREPARE_OUT_BYTES(byte[][] outBytes) { if (outBytes == null) { outBytes = new byte[1][]; } else { outBytes[0] = null; } return outBytes; } private int transcode_char_start(byte[] in_bytes, int in_start, int inchar_start, int in_p, int[] char_len_ptr, byte[][] retBytes) { int ptr; byte[] bytes; if (inchar_start - in_start < recognizedLength) { System.arraycopy(in_bytes, inchar_start, TRANSCODING_READBUF(this), recognizedLength, in_p - inchar_start); ptr = 0; bytes = TRANSCODING_READBUF(this); } else { ptr = inchar_start - recognizedLength; bytes = in_bytes; } char_len_ptr[0] = recognizedLength + (in_p - inchar_start); retBytes[0] = bytes; return ptr; } private static int SUSPEND(Transcoding tc, byte[] in_bytes, int in_p, int inchar_start, Ptr in_pos, Ptr out_pos, int out_p, int readagain_len, EConvResult ret, int ip) { prepareToSuspend(tc, in_bytes, in_p, inchar_start, in_pos, out_pos, out_p, readagain_len, ip); tc.suspendResult = ret; return SUSPEND; } private static void prepareToSuspend(Transcoding tc, byte[] in_bytes, int in_p, int inchar_start, Ptr in_pos, Ptr out_pos, int out_p, int readagain_len, int ip) { tc.resumePosition = ip; int recognizedLength = tc.recognizedLength; if (in_p - inchar_start > 0) System.arraycopy(in_bytes, inchar_start, tc.readBuf, recognizedLength, in_p - inchar_start); in_pos.p = in_p; out_pos.p = out_p; recognizedLength += in_p - inchar_start; if (readagain_len != 0) { recognizedLength -= readagain_len; tc.readAgainLength = readagain_len; } tc.recognizedLength = recognizedLength; } private static int SUSPEND_OBUF(Transcoding tc, int out_stop, byte[] in_bytes, int in_p, int inchar_start, Ptr in_pos, Ptr out_pos, int out_p, int readagain_len, int ip) { while (out_stop - out_p < 1) { return SUSPEND(tc, in_bytes, in_p, inchar_start, in_pos, out_pos, out_p, readagain_len, EConvResult.DestinationBufferFull, ip); } return ip; } private static int SUSPEND_AFTER_OUTPUT(Transcoding tc, int opt, byte[] in_bytes, int in_p_offset, int inchar_start_offset, Ptr in_pos, Ptr out_pos, int out_p_offset, int readagain_len, int ip) { if (checkAfterOutput(opt, out_pos, out_p_offset)) { return SUSPEND(tc, in_bytes, in_p_offset, inchar_start_offset, in_pos, out_pos, out_p_offset, readagain_len, EConvResult.AfterOutput, ip); } return ip; } private static boolean checkAfterOutput(int opt, Ptr out_pos, int out_p_offset) { return (opt & EConvFlags.AFTER_OUTPUT) != 0 && out_pos.p != out_p_offset; } private static final int SUSPEND = 0; private static final int START = 1; private static final int RESUME_AFTER_OUTPUT = 2; private static final int NEXTBYTE = 3; private static final int FOLLOW_BYTE = 4; private static final int FOLLOW_INFO = 5; private static final int NOMAP_TRANSFER = 35; private static final int READ_MORE = 6; private static final int CALL_FUN_SIO = 8; private static final int RESUME_CALL_FUN_SIO = 44; private static final int CALL_FUN_SO = 9; private static final int RESUME_CALL_FUN_SO = 43; private static final int CALL_FUN_IO = 10; private static final int TRANSFER_WRITEBUF = 11; private static final int RESUME_TRANSFER_WRITEBUF = 12; private static final int ONE_BYTE_1 = 13; private static final int TWO_BYTE_1 = 14; private static final int TWO_BYTE_2 = 15; private static final int FOUR_BYTE_1 = 16; private static final int FOUR_BYTE_2 = 17; private static final int FOUR_BYTE_3 = 18; private static final int FOUR_BYTE_0 = 19; private static final int GB_FOUR_BYTE_0 = 20; private static final int GB_FOUR_BYTE_1 = 21; private static final int GB_FOUR_BYTE_2 = 22; private static final int GB_FOUR_BYTE_3 = 23; private static final int STRING = 24; private static final int RESUME_STRING = 25; private static final int RESUME_NOMAP = 26; private static final int SELECT_TABLE = 27; private static final int REPORT_INVALID = 28; private static final int REPORT_INCOMPLETE = 29; private static final int REPORT_UNDEF = 30; private static final int FINISH_FUNC = 31; private static final int RESUME_FINISH_WRITEBUF = 32; private static final int FINISHED = 33; private static final int CLEANUP = 34; private static byte[] TRANSCODING_READBUF(Transcoding tc) { return tc.readBuf; } private static final int WORDINDEX_SHIFT_BITS = 2; public static int WORDINDEX2INFO(int widx) { return widx << WORDINDEX_SHIFT_BITS; } private static int INFO2WORDINDEX(int info) { return info >>> WORDINDEX_SHIFT_BITS; } private static int BYTE_ADDR(int index) { return index; } private static int WORD_ADDR(int index) { return INFO2WORDINDEX(index); } private static int BL_BASE(Transcoding tc) { return BYTE_ADDR(BYTE_LOOKUP_BASE(tc, WORD_ADDR(tc.nextTable))); } private static int BL_INFO(Transcoding tc) { return WORD_ADDR(BYTE_LOOKUP_INFO(tc, WORD_ADDR(tc.nextTable))); } private static int BYTE_LOOKUP_BASE(Transcoding tc, int bl) { return tc.transcoder.intArray[bl]; } private static int BYTE_LOOKUP_INFO(Transcoding tc, int bl) { return tc.transcoder.intArray[bl + 1]; } public static int BL_MIN_BYTE(Transcoding tc) { return toUnsignedInt(tc.transcoder.byteArray[BL_BASE(tc)]); } public static int BL_MAX_BYTE(Transcoding tc) { return toUnsignedInt(tc.transcoder.byteArray[BL_BASE(tc) + 1]); } public static int BL_OFFSET(Transcoding tc, int b) { return toUnsignedInt(tc.transcoder.byteArray[BL_BASE(tc) + 2 + b - BL_MIN_BYTE(tc)]); } public static int BL_ACTION(Transcoding tc, byte b) { return tc.transcoder.intArray[BL_INFO(tc) + BL_OFFSET(tc, toUnsignedInt(b))]; } public static byte getGB4bt0(int a) { return (byte)(a >>> 8); } public static byte getGB4bt1(int a) { return (byte)(((a >>> 24) & 0xf) | 0x30); } public static byte getGB4bt2(int a) { return (byte)(a >>> 16); } public static byte getGB4bt3(int a) { return (byte)(((a >>> 28) & 0x0f) | 0x30); } public static byte getBT1(int a) { return (byte)(a >>> 8); } public static byte getBT2(int a) { return (byte)(a >>> 16); } public static byte getBT3(int a) { return (byte)(a >>> 24); } public static byte getBT0(int a) { return (byte)(((a >>> 5) & 0x0F) | 0x30); } }jcodings-1.0.58/src/org/jcodings/transcode/TranscodingInstruction.java000066400000000000000000000045661433325321700261430ustar00rootroot00000000000000/* * Permission is hereby granted, free of charge, to any person obtaining a copy of * this software and associated documentation files (the "Software"), to deal in * the Software without restriction, including without limitation the rights to * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies * of the Software, and to permit persons to whom the Software is furnished to do * so, subject to the following conditions: * * The above copyright notice and this permission notice shall be included in all * copies or substantial portions of the Software. * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE * SOFTWARE. */ package org.jcodings.transcode; interface TranscodingInstruction { final int NOMAP = 0x01; /* direct map */ final int ONEbt = 0x02; /* one byte payload */ final int TWObt = 0x03; /* two bytes payload */ final int THREEbt = 0x05; /* three bytes payload */ final int FOURbt = 0x06; /* four bytes payload, UTF-8 only, macros start at getBT0 */ final int INVALID = 0x07; /* invalid byte sequence */ final int UNDEF = 0x09; /* legal but undefined */ final int ZERObt = 0x0A; /* zero bytes of payload, i.e. remove */ final int FUNii = 0x0B; /* function from info to info */ final int FUNsi = 0x0D; /* function from start to info */ final int FUNio = 0x0E; /* function from info to output */ final int FUNso = 0x0F; /* function from start to output */ final int STR1 = 0x11; /* string 4 <= len <= 259 bytes: 1byte length + content */ final int GB4bt = 0x12; /* GB18030 four bytes payload */ final int FUNsio = 0x13; /* function from start and info to output */ final int LAST = 0x1C; final int NOMAP_RESUME_1 = LAST + 1; final int ZeroXResume_1 = LAST + 2; final int ZeroXResume_2 = LAST + 3; }jcodings-1.0.58/src/org/jcodings/transcode/specific/000077500000000000000000000000001433325321700223355ustar00rootroot00000000000000jcodings-1.0.58/src/org/jcodings/transcode/specific/Cp50220_decoder_Transcoder.java000066400000000000000000000041761433325321700300140ustar00rootroot00000000000000/* * Permission is hereby granted, free of charge, to any person obtaining a copy of * this software and associated documentation files (the "Software"), to deal in * the Software without restriction, including without limitation the rights to * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies * of the Software, and to permit persons to whom the Software is furnished to do * so, subject to the following conditions: * * The above copyright notice and this permission notice shall be included in all * copies or substantial portions of the Software. * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE * SOFTWARE. */ package org.jcodings.transcode.specific; import org.jcodings.transcode.AsciiCompatibility; import org.jcodings.transcode.TranscodeFunctions; import org.jcodings.transcode.Transcoder; public class Cp50220_decoder_Transcoder extends Transcoder { protected Cp50220_decoder_Transcoder () { super("CP50220", "cp51932", 244, "Iso2022", 1, 3, 3, AsciiCompatibility.DECODER, 1); } public static final Transcoder INSTANCE = new Cp50220_decoder_Transcoder(); @Override public int stateInit(byte[] statep) { return TranscodeFunctions.iso2022jpInit(statep); } @Override public int stateFinish(byte[] state) { return TranscodeFunctions.iso2022jpInit(state); } public int startToInfo(byte[] statep, byte[] s, int sStart, int l) { return TranscodeFunctions.funSiCp50221Decoder(statep, s, sStart, l); } @Override public int startToOutput(byte[] statep, byte[] s, int sStart, int l, byte[] o, int oStart, int oSize) { return TranscodeFunctions.funSoCp50221Decoder(statep, s, sStart, l, o, oStart, oSize); } } jcodings-1.0.58/src/org/jcodings/transcode/specific/Cp50220_encoder_Transcoder.java000066400000000000000000000050221433325321700300150ustar00rootroot00000000000000/* * Permission is hereby granted, free of charge, to any person obtaining a copy of * this software and associated documentation files (the "Software"), to deal in * the Software without restriction, including without limitation the rights to * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies * of the Software, and to permit persons to whom the Software is furnished to do * so, subject to the following conditions: * * The above copyright notice and this permission notice shall be included in all * copies or substantial portions of the Software. * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE * SOFTWARE. */ package org.jcodings.transcode.specific; import org.jcodings.transcode.AsciiCompatibility; import org.jcodings.transcode.TranscodeFunctions; import org.jcodings.transcode.Transcoder; public class Cp50220_encoder_Transcoder extends Transcoder { protected Cp50220_encoder_Transcoder () { super("CP51932", "CP50220", 268, "Iso2022", 1, 3, 5, AsciiCompatibility.ENCODER, 3); } public static final Transcoder INSTANCE = new Cp50220_encoder_Transcoder(); @Override public int stateInit(byte[] statep) { return TranscodeFunctions.iso2022jpInit(statep); } @Override public int stateFinish(byte[] state) { return TranscodeFunctions.iso2022jpInit(state); } @Override public int startToOutput(byte[] statep, byte[] s, int sStart, int l, byte[] o, int oStart, int oSize) { return TranscodeFunctions.funSoCp50220Encoder(statep, s, sStart, l, o, oStart, oSize); } @Override public boolean hasFinish() { return true; } @Override public int finish(byte[] statep, byte[] p, int start, int size) { return TranscodeFunctions.finishCp50220Encoder(statep, p, start, size); } @Override public int resetSize(byte[] statep) { return TranscodeFunctions.iso2022jpEncoderResetSequenceSize(statep); } @Override public int resetState(byte[] statep, byte[] p, int start, int size) { return TranscodeFunctions.finishCp50220Encoder(statep, p, start, size); } } jcodings-1.0.58/src/org/jcodings/transcode/specific/Cp50221_decoder_Transcoder.java000066400000000000000000000041761433325321700300150ustar00rootroot00000000000000/* * Permission is hereby granted, free of charge, to any person obtaining a copy of * this software and associated documentation files (the "Software"), to deal in * the Software without restriction, including without limitation the rights to * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies * of the Software, and to permit persons to whom the Software is furnished to do * so, subject to the following conditions: * * The above copyright notice and this permission notice shall be included in all * copies or substantial portions of the Software. * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE * SOFTWARE. */ package org.jcodings.transcode.specific; import org.jcodings.transcode.AsciiCompatibility; import org.jcodings.transcode.TranscodeFunctions; import org.jcodings.transcode.Transcoder; public class Cp50221_decoder_Transcoder extends Transcoder { protected Cp50221_decoder_Transcoder () { super("CP50221", "cp51932", 244, "Iso2022", 1, 3, 3, AsciiCompatibility.DECODER, 1); } public static final Transcoder INSTANCE = new Cp50221_decoder_Transcoder(); @Override public int stateInit(byte[] statep) { return TranscodeFunctions.iso2022jpInit(statep); } @Override public int stateFinish(byte[] state) { return TranscodeFunctions.iso2022jpInit(state); } public int startToInfo(byte[] statep, byte[] s, int sStart, int l) { return TranscodeFunctions.funSiCp50221Decoder(statep, s, sStart, l); } @Override public int startToOutput(byte[] statep, byte[] s, int sStart, int l, byte[] o, int oStart, int oSize) { return TranscodeFunctions.funSoCp50221Decoder(statep, s, sStart, l, o, oStart, oSize); } } jcodings-1.0.58/src/org/jcodings/transcode/specific/Cp50221_encoder_Transcoder.java000066400000000000000000000050261433325321700300220ustar00rootroot00000000000000/* * Permission is hereby granted, free of charge, to any person obtaining a copy of * this software and associated documentation files (the "Software"), to deal in * the Software without restriction, including without limitation the rights to * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies * of the Software, and to permit persons to whom the Software is furnished to do * so, subject to the following conditions: * * The above copyright notice and this permission notice shall be included in all * copies or substantial portions of the Software. * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE * SOFTWARE. */ package org.jcodings.transcode.specific; import org.jcodings.transcode.AsciiCompatibility; import org.jcodings.transcode.TranscodeFunctions; import org.jcodings.transcode.Transcoder; public class Cp50221_encoder_Transcoder extends Transcoder { protected Cp50221_encoder_Transcoder () { super("CP51932", "CP50221", 268, "Iso2022", 1, 3, 5, AsciiCompatibility.ENCODER, 1); } public static final Transcoder INSTANCE = new Cp50221_encoder_Transcoder(); @Override public int stateInit(byte[] statep) { return TranscodeFunctions.iso2022jpInit(statep); } @Override public int stateFinish(byte[] state) { return TranscodeFunctions.iso2022jpInit(state); } @Override public int startToOutput(byte[] statep, byte[] s, int sStart, int l, byte[] o, int oStart, int oSize) { return TranscodeFunctions.funSoCp5022xEncoder(statep, s, sStart, l, o, oStart, oSize); } @Override public boolean hasFinish() { return true; } @Override public int finish(byte[] statep, byte[] p, int start, int size) { return TranscodeFunctions.finishIso2022jpEncoder(statep, p, start, size); } @Override public int resetSize(byte[] statep) { return TranscodeFunctions.iso2022jpEncoderResetSequenceSize(statep); } @Override public int resetState(byte[] statep, byte[] p, int start, int size) { return TranscodeFunctions.finishIso2022jpEncoder(statep, p, start, size); } } jcodings-1.0.58/src/org/jcodings/transcode/specific/Escape_xml_attr_quote_Transcoder.java000066400000000000000000000044011433325321700317120ustar00rootroot00000000000000/* * Permission is hereby granted, free of charge, to any person obtaining a copy of * this software and associated documentation files (the "Software"), to deal in * the Software without restriction, including without limitation the rights to * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies * of the Software, and to permit persons to whom the Software is furnished to do * so, subject to the following conditions: * * The above copyright notice and this permission notice shall be included in all * copies or substantial portions of the Software. * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE * SOFTWARE. */ package org.jcodings.transcode.specific; import org.jcodings.transcode.AsciiCompatibility; import org.jcodings.transcode.TranscodeFunctions; import org.jcodings.transcode.Transcoder; public class Escape_xml_attr_quote_Transcoder extends Transcoder { protected Escape_xml_attr_quote_Transcoder () { super("", "xml_attr_quote", 76, "Escape", 1, 1, 7, AsciiCompatibility.ENCODER, 1); } public static final Transcoder INSTANCE = new Escape_xml_attr_quote_Transcoder(); @Override public int stateInit(byte[] statep) { return TranscodeFunctions.escapeXmlAttrQuoteInit(statep); } @Override public int stateFinish(byte[] state) { return TranscodeFunctions.escapeXmlAttrQuoteInit(state); } @Override public int startToOutput(byte[] statep, byte[] s, int sStart, int l, byte[] o, int oStart, int oSize) { return TranscodeFunctions.funSoEscapeXmlAttrQuote(statep, s, sStart, l, o, oStart, oSize); } @Override public boolean hasFinish() { return true; } @Override public int finish(byte[] statep, byte[] p, int start, int size) { return TranscodeFunctions.escapeXmlAttrQuoteFinish(statep, p, start, size); } } jcodings-1.0.58/src/org/jcodings/transcode/specific/Eucjp2sjis_Transcoder.java000066400000000000000000000033411433325321700274060ustar00rootroot00000000000000/* * Permission is hereby granted, free of charge, to any person obtaining a copy of * this software and associated documentation files (the "Software"), to deal in * the Software without restriction, including without limitation the rights to * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies * of the Software, and to permit persons to whom the Software is furnished to do * so, subject to the following conditions: * * The above copyright notice and this permission notice shall be included in all * copies or substantial portions of the Software. * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE * SOFTWARE. */ package org.jcodings.transcode.specific; import org.jcodings.transcode.AsciiCompatibility; import org.jcodings.transcode.TranscodeFunctions; import org.jcodings.transcode.Transcoder; public class Eucjp2sjis_Transcoder extends Transcoder { protected Eucjp2sjis_Transcoder () { super("EUC-JP", "Shift_JIS", 88, "Japanese", 1, 3, 2, AsciiCompatibility.CONVERTER, 0); } public static final Transcoder INSTANCE = new Eucjp2sjis_Transcoder(); @Override public int startToOutput(byte[] statep, byte[] s, int sStart, int l, byte[] o, int oStart, int oSize) { return TranscodeFunctions.funSoEucjp2Sjis(statep, s, sStart, l, o, oStart, oSize); } } jcodings-1.0.58/src/org/jcodings/transcode/specific/Eucjp_to_stateless_iso2022jp_Transcoder.java000066400000000000000000000034621433325321700327420ustar00rootroot00000000000000/* * Permission is hereby granted, free of charge, to any person obtaining a copy of * this software and associated documentation files (the "Software"), to deal in * the Software without restriction, including without limitation the rights to * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies * of the Software, and to permit persons to whom the Software is furnished to do * so, subject to the following conditions: * * The above copyright notice and this permission notice shall be included in all * copies or substantial portions of the Software. * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE * SOFTWARE. */ package org.jcodings.transcode.specific; import org.jcodings.transcode.AsciiCompatibility; import org.jcodings.transcode.TranscodeFunctions; import org.jcodings.transcode.Transcoder; public class Eucjp_to_stateless_iso2022jp_Transcoder extends Transcoder { protected Eucjp_to_stateless_iso2022jp_Transcoder () { super("EUC-JP", "stateless-ISO-2022-JP", 192, "Iso2022", 1, 3, 3, AsciiCompatibility.CONVERTER, 0); } public static final Transcoder INSTANCE = new Eucjp_to_stateless_iso2022jp_Transcoder(); @Override public int startToOutput(byte[] statep, byte[] s, int sStart, int l, byte[] o, int oStart, int oSize) { return TranscodeFunctions.funSoEucjpToStatelessIso2022jp(statep, s, sStart, l, o, oStart, oSize); } } jcodings-1.0.58/src/org/jcodings/transcode/specific/From_CESU_8_Transcoder.java000066400000000000000000000033331433325321700273370ustar00rootroot00000000000000/* * Permission is hereby granted, free of charge, to any person obtaining a copy of * this software and associated documentation files (the "Software"), to deal in * the Software without restriction, including without limitation the rights to * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies * of the Software, and to permit persons to whom the Software is furnished to do * so, subject to the following conditions: * * The above copyright notice and this permission notice shall be included in all * copies or substantial portions of the Software. * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE * SOFTWARE. */ package org.jcodings.transcode.specific; import org.jcodings.transcode.AsciiCompatibility; import org.jcodings.transcode.TranscodeFunctions; import org.jcodings.transcode.Transcoder; public class From_CESU_8_Transcoder extends Transcoder { protected From_CESU_8_Transcoder () { super("CESU-8", "UTF-8", 148, "Cesu8", 1, 6, 4, AsciiCompatibility.DECODER, 0); } public static final Transcoder INSTANCE = new From_CESU_8_Transcoder(); @Override public int startToOutput(byte[] statep, byte[] s, int sStart, int l, byte[] o, int oStart, int oSize) { return TranscodeFunctions.funSoFromCESU8(statep, s, sStart, l, o, oStart, oSize); } } jcodings-1.0.58/src/org/jcodings/transcode/specific/From_GB18030_Transcoder.java000066400000000000000000000037311433325321700272370ustar00rootroot00000000000000/* * Permission is hereby granted, free of charge, to any person obtaining a copy of * this software and associated documentation files (the "Software"), to deal in * the Software without restriction, including without limitation the rights to * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies * of the Software, and to permit persons to whom the Software is furnished to do * so, subject to the following conditions: * * The above copyright notice and this permission notice shall be included in all * copies or substantial portions of the Software. * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE * SOFTWARE. */ package org.jcodings.transcode.specific; import org.jcodings.transcode.AsciiCompatibility; import org.jcodings.transcode.TranscodeFunctions; import org.jcodings.transcode.Transcoder; public class From_GB18030_Transcoder extends Transcoder { protected From_GB18030_Transcoder () { super("GB18030", "UTF-8", 57668, "Gb18030", 1, 4, 4, AsciiCompatibility.CONVERTER, 0); } public static final Transcoder INSTANCE = new From_GB18030_Transcoder(); @Override public int startToOutput(byte[] statep, byte[] s, int sStart, int l, byte[] o, int oStart, int oSize) { return TranscodeFunctions.funSoFromGB18030(statep, s, sStart, l, o, oStart, oSize); } @Override public int startInfoToOutput(byte[] statep, byte[] s, int sStart, int l, int info, byte[] o, int oStart, int oSize) { return TranscodeFunctions.funSioFromGB18030(statep, s, sStart, l, info, o, oStart, oSize); } } jcodings-1.0.58/src/org/jcodings/transcode/specific/From_UTF8_MAC_Transcoder.java000066400000000000000000000043221433325321700275560ustar00rootroot00000000000000/* * Permission is hereby granted, free of charge, to any person obtaining a copy of * this software and associated documentation files (the "Software"), to deal in * the Software without restriction, including without limitation the rights to * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies * of the Software, and to permit persons to whom the Software is furnished to do * so, subject to the following conditions: * * The above copyright notice and this permission notice shall be included in all * copies or substantial portions of the Software. * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE * SOFTWARE. */ package org.jcodings.transcode.specific; import org.jcodings.transcode.AsciiCompatibility; import org.jcodings.transcode.TranscodeFunctions; import org.jcodings.transcode.Transcoder; public class From_UTF8_MAC_Transcoder extends Transcoder { protected From_UTF8_MAC_Transcoder () { super("UTF8-MAC", "UTF-8", 52544, "Utf8Mac", 1, 4, 10, AsciiCompatibility.ENCODER, 24); } public static final Transcoder INSTANCE = new From_UTF8_MAC_Transcoder(); @Override public int stateInit(byte[] statep) { return TranscodeFunctions.fromUtf8MacInit(statep); } @Override public int stateFinish(byte[] state) { return TranscodeFunctions.fromUtf8MacInit(state); } @Override public int startToOutput(byte[] statep, byte[] s, int sStart, int l, byte[] o, int oStart, int oSize) { return TranscodeFunctions.funSoFromUtf8Mac(statep, s, sStart, l, o, oStart, oSize); } @Override public boolean hasFinish() { return true; } @Override public int finish(byte[] statep, byte[] p, int start, int size) { return TranscodeFunctions.fromUtf8MacFinish(statep, p, start, size); } } jcodings-1.0.58/src/org/jcodings/transcode/specific/From_UTF_16BE_Transcoder.java000066400000000000000000000033471433325321700275310ustar00rootroot00000000000000/* * Permission is hereby granted, free of charge, to any person obtaining a copy of * this software and associated documentation files (the "Software"), to deal in * the Software without restriction, including without limitation the rights to * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies * of the Software, and to permit persons to whom the Software is furnished to do * so, subject to the following conditions: * * The above copyright notice and this permission notice shall be included in all * copies or substantial portions of the Software. * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE * SOFTWARE. */ package org.jcodings.transcode.specific; import org.jcodings.transcode.AsciiCompatibility; import org.jcodings.transcode.TranscodeFunctions; import org.jcodings.transcode.Transcoder; public class From_UTF_16BE_Transcoder extends Transcoder { protected From_UTF_16BE_Transcoder () { super("UTF-16BE", "UTF-8", 188, "Utf1632", 2, 4, 4, AsciiCompatibility.DECODER, 0); } public static final Transcoder INSTANCE = new From_UTF_16BE_Transcoder(); @Override public int startToOutput(byte[] statep, byte[] s, int sStart, int l, byte[] o, int oStart, int oSize) { return TranscodeFunctions.funSoFromUTF16BE(statep, s, sStart, l, o, oStart, oSize); } } jcodings-1.0.58/src/org/jcodings/transcode/specific/From_UTF_16LE_Transcoder.java000066400000000000000000000033461433325321700275420ustar00rootroot00000000000000/* * Permission is hereby granted, free of charge, to any person obtaining a copy of * this software and associated documentation files (the "Software"), to deal in * the Software without restriction, including without limitation the rights to * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies * of the Software, and to permit persons to whom the Software is furnished to do * so, subject to the following conditions: * * The above copyright notice and this permission notice shall be included in all * copies or substantial portions of the Software. * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE * SOFTWARE. */ package org.jcodings.transcode.specific; import org.jcodings.transcode.AsciiCompatibility; import org.jcodings.transcode.TranscodeFunctions; import org.jcodings.transcode.Transcoder; public class From_UTF_16LE_Transcoder extends Transcoder { protected From_UTF_16LE_Transcoder () { super("UTF-16LE", "UTF-8", 52, "Utf1632", 2, 4, 4, AsciiCompatibility.DECODER, 0); } public static final Transcoder INSTANCE = new From_UTF_16LE_Transcoder(); @Override public int startToOutput(byte[] statep, byte[] s, int sStart, int l, byte[] o, int oStart, int oSize) { return TranscodeFunctions.funSoFromUTF16LE(statep, s, sStart, l, o, oStart, oSize); } } jcodings-1.0.58/src/org/jcodings/transcode/specific/From_UTF_16_Transcoder.java000066400000000000000000000040711433325321700273150ustar00rootroot00000000000000/* * Permission is hereby granted, free of charge, to any person obtaining a copy of * this software and associated documentation files (the "Software"), to deal in * the Software without restriction, including without limitation the rights to * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies * of the Software, and to permit persons to whom the Software is furnished to do * so, subject to the following conditions: * * The above copyright notice and this permission notice shall be included in all * copies or substantial portions of the Software. * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE * SOFTWARE. */ package org.jcodings.transcode.specific; import org.jcodings.transcode.AsciiCompatibility; import org.jcodings.transcode.TranscodeFunctions; import org.jcodings.transcode.Transcoder; public class From_UTF_16_Transcoder extends Transcoder { protected From_UTF_16_Transcoder () { super("UTF-16", "UTF-8", 276, "Utf1632", 2, 4, 4, AsciiCompatibility.DECODER, 1); } public static final Transcoder INSTANCE = new From_UTF_16_Transcoder(); @Override public boolean hasStateInit() { return true; } @Override public int stateInit(byte[] statep) { statep[0] = 0; return 0; } @Override public int startToInfo(byte[] statep, byte[] s, int sStart, int l) { return TranscodeFunctions.funSiFromUTF16(statep, s, sStart, l); } @Override public int startToOutput(byte[] statep, byte[] s, int sStart, int l, byte[] o, int oStart, int oSize) { return TranscodeFunctions.funSoFromUTF16(statep, s, sStart, l, o, oStart, oSize); } } jcodings-1.0.58/src/org/jcodings/transcode/specific/From_UTF_32BE_Transcoder.java000066400000000000000000000033471433325321700275270ustar00rootroot00000000000000/* * Permission is hereby granted, free of charge, to any person obtaining a copy of * this software and associated documentation files (the "Software"), to deal in * the Software without restriction, including without limitation the rights to * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies * of the Software, and to permit persons to whom the Software is furnished to do * so, subject to the following conditions: * * The above copyright notice and this permission notice shall be included in all * copies or substantial portions of the Software. * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE * SOFTWARE. */ package org.jcodings.transcode.specific; import org.jcodings.transcode.AsciiCompatibility; import org.jcodings.transcode.TranscodeFunctions; import org.jcodings.transcode.Transcoder; public class From_UTF_32BE_Transcoder extends Transcoder { protected From_UTF_32BE_Transcoder () { super("UTF-32BE", "UTF-8", 252, "Utf1632", 4, 4, 4, AsciiCompatibility.DECODER, 0); } public static final Transcoder INSTANCE = new From_UTF_32BE_Transcoder(); @Override public int startToOutput(byte[] statep, byte[] s, int sStart, int l, byte[] o, int oStart, int oSize) { return TranscodeFunctions.funSoFromUTF32BE(statep, s, sStart, l, o, oStart, oSize); } } jcodings-1.0.58/src/org/jcodings/transcode/specific/From_UTF_32LE_Transcoder.java000066400000000000000000000033471433325321700275410ustar00rootroot00000000000000/* * Permission is hereby granted, free of charge, to any person obtaining a copy of * this software and associated documentation files (the "Software"), to deal in * the Software without restriction, including without limitation the rights to * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies * of the Software, and to permit persons to whom the Software is furnished to do * so, subject to the following conditions: * * The above copyright notice and this permission notice shall be included in all * copies or substantial portions of the Software. * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE * SOFTWARE. */ package org.jcodings.transcode.specific; import org.jcodings.transcode.AsciiCompatibility; import org.jcodings.transcode.TranscodeFunctions; import org.jcodings.transcode.Transcoder; public class From_UTF_32LE_Transcoder extends Transcoder { protected From_UTF_32LE_Transcoder () { super("UTF-32LE", "UTF-8", 128, "Utf1632", 4, 4, 4, AsciiCompatibility.DECODER, 0); } public static final Transcoder INSTANCE = new From_UTF_32LE_Transcoder(); @Override public int startToOutput(byte[] statep, byte[] s, int sStart, int l, byte[] o, int oStart, int oSize) { return TranscodeFunctions.funSoFromUTF32LE(statep, s, sStart, l, o, oStart, oSize); } } jcodings-1.0.58/src/org/jcodings/transcode/specific/From_UTF_32_Transcoder.java000066400000000000000000000040711433325321700273130ustar00rootroot00000000000000/* * Permission is hereby granted, free of charge, to any person obtaining a copy of * this software and associated documentation files (the "Software"), to deal in * the Software without restriction, including without limitation the rights to * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies * of the Software, and to permit persons to whom the Software is furnished to do * so, subject to the following conditions: * * The above copyright notice and this permission notice shall be included in all * copies or substantial portions of the Software. * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE * SOFTWARE. */ package org.jcodings.transcode.specific; import org.jcodings.transcode.AsciiCompatibility; import org.jcodings.transcode.TranscodeFunctions; import org.jcodings.transcode.Transcoder; public class From_UTF_32_Transcoder extends Transcoder { protected From_UTF_32_Transcoder () { super("UTF-32", "UTF-8", 300, "Utf1632", 4, 4, 4, AsciiCompatibility.DECODER, 1); } public static final Transcoder INSTANCE = new From_UTF_32_Transcoder(); @Override public boolean hasStateInit() { return true; } @Override public int stateInit(byte[] statep) { statep[0] = 0; return 0; } @Override public int startToInfo(byte[] statep, byte[] s, int sStart, int l) { return TranscodeFunctions.funSiFromUTF32(statep, s, sStart, l); } @Override public int startToOutput(byte[] statep, byte[] s, int sStart, int l, byte[] o, int oStart, int oSize) { return TranscodeFunctions.funSoFromUTF32(statep, s, sStart, l, o, oStart, oSize); } } jcodings-1.0.58/src/org/jcodings/transcode/specific/Iso2022jp_decoder_Transcoder.java000066400000000000000000000042321433325321700304440ustar00rootroot00000000000000/* * Permission is hereby granted, free of charge, to any person obtaining a copy of * this software and associated documentation files (the "Software"), to deal in * the Software without restriction, including without limitation the rights to * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies * of the Software, and to permit persons to whom the Software is furnished to do * so, subject to the following conditions: * * The above copyright notice and this permission notice shall be included in all * copies or substantial portions of the Software. * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE * SOFTWARE. */ package org.jcodings.transcode.specific; import org.jcodings.transcode.AsciiCompatibility; import org.jcodings.transcode.TranscodeFunctions; import org.jcodings.transcode.Transcoder; public class Iso2022jp_decoder_Transcoder extends Transcoder { protected Iso2022jp_decoder_Transcoder () { super("ISO-2022-JP", "stateless-ISO-2022-JP", 56, "Iso2022", 1, 3, 3, AsciiCompatibility.DECODER, 1); } public static final Transcoder INSTANCE = new Iso2022jp_decoder_Transcoder(); @Override public int stateInit(byte[] statep) { return TranscodeFunctions.iso2022jpInit(statep); } @Override public int stateFinish(byte[] state) { return TranscodeFunctions.iso2022jpInit(state); } public int startToInfo(byte[] statep, byte[] s, int sStart, int l) { return TranscodeFunctions.funSiIso50220jpDecoder(statep, s, sStart, l); } @Override public int startToOutput(byte[] statep, byte[] s, int sStart, int l, byte[] o, int oStart, int oSize) { return TranscodeFunctions.funSoIso2022jpDecoder(statep, s, sStart, l, o, oStart, oSize); } } jcodings-1.0.58/src/org/jcodings/transcode/specific/Iso2022jp_encoder_Transcoder.java000066400000000000000000000050601433325321700304560ustar00rootroot00000000000000/* * Permission is hereby granted, free of charge, to any person obtaining a copy of * this software and associated documentation files (the "Software"), to deal in * the Software without restriction, including without limitation the rights to * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies * of the Software, and to permit persons to whom the Software is furnished to do * so, subject to the following conditions: * * The above copyright notice and this permission notice shall be included in all * copies or substantial portions of the Software. * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE * SOFTWARE. */ package org.jcodings.transcode.specific; import org.jcodings.transcode.AsciiCompatibility; import org.jcodings.transcode.TranscodeFunctions; import org.jcodings.transcode.Transcoder; public class Iso2022jp_encoder_Transcoder extends Transcoder { protected Iso2022jp_encoder_Transcoder () { super("stateless-ISO-2022-JP", "ISO-2022-JP", 108, "Iso2022", 1, 3, 5, AsciiCompatibility.ENCODER, 1); } public static final Transcoder INSTANCE = new Iso2022jp_encoder_Transcoder(); @Override public int stateInit(byte[] statep) { return TranscodeFunctions.iso2022jpInit(statep); } @Override public int stateFinish(byte[] state) { return TranscodeFunctions.iso2022jpInit(state); } @Override public int startToOutput(byte[] statep, byte[] s, int sStart, int l, byte[] o, int oStart, int oSize) { return TranscodeFunctions.funSoIso2022jpEncoder(statep, s, sStart, l, o, oStart, oSize); } @Override public boolean hasFinish() { return true; } @Override public int finish(byte[] statep, byte[] p, int start, int size) { return TranscodeFunctions.finishIso2022jpEncoder(statep, p, start, size); } @Override public int resetSize(byte[] statep) { return TranscodeFunctions.iso2022jpEncoderResetSequenceSize(statep); } @Override public int resetState(byte[] statep, byte[] p, int start, int size) { return TranscodeFunctions.finishIso2022jpEncoder(statep, p, start, size); } } jcodings-1.0.58/src/org/jcodings/transcode/specific/Iso2022jp_kddi_decoder_Transcoder.java000066400000000000000000000043131433325321700314370ustar00rootroot00000000000000/* * Permission is hereby granted, free of charge, to any person obtaining a copy of * this software and associated documentation files (the "Software"), to deal in * the Software without restriction, including without limitation the rights to * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies * of the Software, and to permit persons to whom the Software is furnished to do * so, subject to the following conditions: * * The above copyright notice and this permission notice shall be included in all * copies or substantial portions of the Software. * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE * SOFTWARE. */ package org.jcodings.transcode.specific; import org.jcodings.transcode.AsciiCompatibility; import org.jcodings.transcode.TranscodeFunctions; import org.jcodings.transcode.Transcoder; public class Iso2022jp_kddi_decoder_Transcoder extends Transcoder { protected Iso2022jp_kddi_decoder_Transcoder () { super("ISO-2022-JP-KDDI", "stateless-ISO-2022-JP-KDDI", 56, "EmojiIso2022Kddi", 1, 3, 3, AsciiCompatibility.DECODER, 1); } public static final Transcoder INSTANCE = new Iso2022jp_kddi_decoder_Transcoder(); @Override public int stateInit(byte[] statep) { return TranscodeFunctions.iso2022jpKddiInit(statep); } @Override public int stateFinish(byte[] state) { return TranscodeFunctions.iso2022jpKddiInit(state); } public int startToInfo(byte[] statep, byte[] s, int sStart, int l) { return TranscodeFunctions.funSiIso2022jpKddiDecoder(statep, s, sStart, l); } @Override public int startToOutput(byte[] statep, byte[] s, int sStart, int l, byte[] o, int oStart, int oSize) { return TranscodeFunctions.funSoIso2022jpKddiDecoder(statep, s, sStart, l, o, oStart, oSize); } } jcodings-1.0.58/src/org/jcodings/transcode/specific/Iso2022jp_kddi_encoder_Transcoder.java000066400000000000000000000051531433325321700314540ustar00rootroot00000000000000/* * Permission is hereby granted, free of charge, to any person obtaining a copy of * this software and associated documentation files (the "Software"), to deal in * the Software without restriction, including without limitation the rights to * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies * of the Software, and to permit persons to whom the Software is furnished to do * so, subject to the following conditions: * * The above copyright notice and this permission notice shall be included in all * copies or substantial portions of the Software. * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE * SOFTWARE. */ package org.jcodings.transcode.specific; import org.jcodings.transcode.AsciiCompatibility; import org.jcodings.transcode.TranscodeFunctions; import org.jcodings.transcode.Transcoder; public class Iso2022jp_kddi_encoder_Transcoder extends Transcoder { protected Iso2022jp_kddi_encoder_Transcoder () { super("stateless-ISO-2022-JP-KDDI", "ISO-2022-JP-KDDI", 108, "EmojiIso2022Kddi", 1, 3, 5, AsciiCompatibility.ENCODER, 1); } public static final Transcoder INSTANCE = new Iso2022jp_kddi_encoder_Transcoder(); @Override public int stateInit(byte[] statep) { return TranscodeFunctions.iso2022jpKddiInit(statep); } @Override public int stateFinish(byte[] state) { return TranscodeFunctions.iso2022jpKddiInit(state); } @Override public int startToOutput(byte[] statep, byte[] s, int sStart, int l, byte[] o, int oStart, int oSize) { return TranscodeFunctions.funSoIso2022jpKddiEncoder(statep, s, sStart, l, o, oStart, oSize); } @Override public boolean hasFinish() { return true; } @Override public int finish(byte[] statep, byte[] p, int start, int size) { return TranscodeFunctions.finishIso2022jpKddiEncoder(statep, p, start, size); } @Override public int resetSize(byte[] statep) { return TranscodeFunctions.iso2022jpKddiEncoderResetSequence_size(statep); } @Override public int resetState(byte[] statep, byte[] p, int start, int size) { return TranscodeFunctions.finishIso2022jpKddiEncoder(statep, p, start, size); } } jcodings-1.0.58/src/org/jcodings/transcode/specific/Sjis2eucjp_Transcoder.java000066400000000000000000000033421433325321700274070ustar00rootroot00000000000000/* * Permission is hereby granted, free of charge, to any person obtaining a copy of * this software and associated documentation files (the "Software"), to deal in * the Software without restriction, including without limitation the rights to * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies * of the Software, and to permit persons to whom the Software is furnished to do * so, subject to the following conditions: * * The above copyright notice and this permission notice shall be included in all * copies or substantial portions of the Software. * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE * SOFTWARE. */ package org.jcodings.transcode.specific; import org.jcodings.transcode.AsciiCompatibility; import org.jcodings.transcode.TranscodeFunctions; import org.jcodings.transcode.Transcoder; public class Sjis2eucjp_Transcoder extends Transcoder { protected Sjis2eucjp_Transcoder () { super("Shift_JIS", "EUC-JP", 132, "Japanese", 1, 2, 2, AsciiCompatibility.CONVERTER, 0); } public static final Transcoder INSTANCE = new Sjis2eucjp_Transcoder(); @Override public int startToOutput(byte[] statep, byte[] s, int sStart, int l, byte[] o, int oStart, int oSize) { return TranscodeFunctions.funSoSjis2Eucjp(statep, s, sStart, l, o, oStart, oSize); } } jcodings-1.0.58/src/org/jcodings/transcode/specific/Stateless_iso2022jp_to_eucjp_Transcoder.java000066400000000000000000000034621433325321700327420ustar00rootroot00000000000000/* * Permission is hereby granted, free of charge, to any person obtaining a copy of * this software and associated documentation files (the "Software"), to deal in * the Software without restriction, including without limitation the rights to * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies * of the Software, and to permit persons to whom the Software is furnished to do * so, subject to the following conditions: * * The above copyright notice and this permission notice shall be included in all * copies or substantial portions of the Software. * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE * SOFTWARE. */ package org.jcodings.transcode.specific; import org.jcodings.transcode.AsciiCompatibility; import org.jcodings.transcode.TranscodeFunctions; import org.jcodings.transcode.Transcoder; public class Stateless_iso2022jp_to_eucjp_Transcoder extends Transcoder { protected Stateless_iso2022jp_to_eucjp_Transcoder () { super("stateless-ISO-2022-JP", "EUC-JP", 128, "Iso2022", 1, 3, 2, AsciiCompatibility.CONVERTER, 0); } public static final Transcoder INSTANCE = new Stateless_iso2022jp_to_eucjp_Transcoder(); @Override public int startToOutput(byte[] statep, byte[] s, int sStart, int l, byte[] o, int oStart, int oSize) { return TranscodeFunctions.funSoStatelessIso2022jpToEucjp(statep, s, sStart, l, o, oStart, oSize); } } jcodings-1.0.58/src/org/jcodings/transcode/specific/To_CESU_8_Transcoder.java000066400000000000000000000033231433325321700270150ustar00rootroot00000000000000/* * Permission is hereby granted, free of charge, to any person obtaining a copy of * this software and associated documentation files (the "Software"), to deal in * the Software without restriction, including without limitation the rights to * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies * of the Software, and to permit persons to whom the Software is furnished to do * so, subject to the following conditions: * * The above copyright notice and this permission notice shall be included in all * copies or substantial portions of the Software. * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE * SOFTWARE. */ package org.jcodings.transcode.specific; import org.jcodings.transcode.AsciiCompatibility; import org.jcodings.transcode.TranscodeFunctions; import org.jcodings.transcode.Transcoder; public class To_CESU_8_Transcoder extends Transcoder { protected To_CESU_8_Transcoder () { super("UTF-8", "CESU-8", 240, "Cesu8", 1, 4, 6, AsciiCompatibility.ENCODER, 0); } public static final Transcoder INSTANCE = new To_CESU_8_Transcoder(); @Override public int startToOutput(byte[] statep, byte[] s, int sStart, int l, byte[] o, int oStart, int oSize) { return TranscodeFunctions.funSoToCESU8(statep, s, sStart, l, o, oStart, oSize); } } jcodings-1.0.58/src/org/jcodings/transcode/specific/To_GB18030_Transcoder.java000066400000000000000000000037201433325321700267140ustar00rootroot00000000000000/* * Permission is hereby granted, free of charge, to any person obtaining a copy of * this software and associated documentation files (the "Software"), to deal in * the Software without restriction, including without limitation the rights to * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies * of the Software, and to permit persons to whom the Software is furnished to do * so, subject to the following conditions: * * The above copyright notice and this permission notice shall be included in all * copies or substantial portions of the Software. * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE * SOFTWARE. */ package org.jcodings.transcode.specific; import org.jcodings.transcode.AsciiCompatibility; import org.jcodings.transcode.TranscodeFunctions; import org.jcodings.transcode.Transcoder; public class To_GB18030_Transcoder extends Transcoder { protected To_GB18030_Transcoder () { super("UTF-8", "GB18030", 115576, "Gb18030", 1, 4, 4, AsciiCompatibility.CONVERTER, 0); } public static final Transcoder INSTANCE = new To_GB18030_Transcoder(); @Override public int startToOutput(byte[] statep, byte[] s, int sStart, int l, byte[] o, int oStart, int oSize) { return TranscodeFunctions.funSoToGB18030(statep, s, sStart, l, o, oStart, oSize); } @Override public int startInfoToOutput(byte[] statep, byte[] s, int sStart, int l, int info, byte[] o, int oStart, int oSize) { return TranscodeFunctions.funSioToGB18030(statep, s, sStart, l, info, o, oStart, oSize); } } jcodings-1.0.58/src/org/jcodings/transcode/specific/To_UTF_16BE_Transcoder.java000066400000000000000000000033371433325321700272070ustar00rootroot00000000000000/* * Permission is hereby granted, free of charge, to any person obtaining a copy of * this software and associated documentation files (the "Software"), to deal in * the Software without restriction, including without limitation the rights to * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies * of the Software, and to permit persons to whom the Software is furnished to do * so, subject to the following conditions: * * The above copyright notice and this permission notice shall be included in all * copies or substantial portions of the Software. * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE * SOFTWARE. */ package org.jcodings.transcode.specific; import org.jcodings.transcode.AsciiCompatibility; import org.jcodings.transcode.TranscodeFunctions; import org.jcodings.transcode.Transcoder; public class To_UTF_16BE_Transcoder extends Transcoder { protected To_UTF_16BE_Transcoder () { super("UTF-8", "UTF-16BE", 416, "Utf1632", 1, 4, 4, AsciiCompatibility.ENCODER, 0); } public static final Transcoder INSTANCE = new To_UTF_16BE_Transcoder(); @Override public int startToOutput(byte[] statep, byte[] s, int sStart, int l, byte[] o, int oStart, int oSize) { return TranscodeFunctions.funSoToUTF16BE(statep, s, sStart, l, o, oStart, oSize); } } jcodings-1.0.58/src/org/jcodings/transcode/specific/To_UTF_16LE_Transcoder.java000066400000000000000000000033371433325321700272210ustar00rootroot00000000000000/* * Permission is hereby granted, free of charge, to any person obtaining a copy of * this software and associated documentation files (the "Software"), to deal in * the Software without restriction, including without limitation the rights to * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies * of the Software, and to permit persons to whom the Software is furnished to do * so, subject to the following conditions: * * The above copyright notice and this permission notice shall be included in all * copies or substantial portions of the Software. * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE * SOFTWARE. */ package org.jcodings.transcode.specific; import org.jcodings.transcode.AsciiCompatibility; import org.jcodings.transcode.TranscodeFunctions; import org.jcodings.transcode.Transcoder; public class To_UTF_16LE_Transcoder extends Transcoder { protected To_UTF_16LE_Transcoder () { super("UTF-8", "UTF-16LE", 416, "Utf1632", 1, 4, 4, AsciiCompatibility.ENCODER, 0); } public static final Transcoder INSTANCE = new To_UTF_16LE_Transcoder(); @Override public int startToOutput(byte[] statep, byte[] s, int sStart, int l, byte[] o, int oStart, int oSize) { return TranscodeFunctions.funSoToUTF16LE(statep, s, sStart, l, o, oStart, oSize); } } jcodings-1.0.58/src/org/jcodings/transcode/specific/To_UTF_16_Transcoder.java000066400000000000000000000036131433325321700267750ustar00rootroot00000000000000/* * Permission is hereby granted, free of charge, to any person obtaining a copy of * this software and associated documentation files (the "Software"), to deal in * the Software without restriction, including without limitation the rights to * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies * of the Software, and to permit persons to whom the Software is furnished to do * so, subject to the following conditions: * * The above copyright notice and this permission notice shall be included in all * copies or substantial portions of the Software. * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE * SOFTWARE. */ package org.jcodings.transcode.specific; import org.jcodings.transcode.AsciiCompatibility; import org.jcodings.transcode.TranscodeFunctions; import org.jcodings.transcode.Transcoder; public class To_UTF_16_Transcoder extends Transcoder { protected To_UTF_16_Transcoder () { super("UTF-8", "UTF-16", 416, "Utf1632", 1, 4, 4, AsciiCompatibility.ENCODER, 1); } public static final Transcoder INSTANCE = new To_UTF_16_Transcoder(); @Override public boolean hasStateInit() { return true; } @Override public int stateInit(byte[] statep) { statep[0] = 0; return 0; } @Override public int startToOutput(byte[] statep, byte[] s, int sStart, int l, byte[] o, int oStart, int oSize) { return TranscodeFunctions.funSoToUTF16(statep, s, sStart, l, o, oStart, oSize); } } jcodings-1.0.58/src/org/jcodings/transcode/specific/To_UTF_32BE_Transcoder.java000066400000000000000000000033371433325321700272050ustar00rootroot00000000000000/* * Permission is hereby granted, free of charge, to any person obtaining a copy of * this software and associated documentation files (the "Software"), to deal in * the Software without restriction, including without limitation the rights to * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies * of the Software, and to permit persons to whom the Software is furnished to do * so, subject to the following conditions: * * The above copyright notice and this permission notice shall be included in all * copies or substantial portions of the Software. * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE * SOFTWARE. */ package org.jcodings.transcode.specific; import org.jcodings.transcode.AsciiCompatibility; import org.jcodings.transcode.TranscodeFunctions; import org.jcodings.transcode.Transcoder; public class To_UTF_32BE_Transcoder extends Transcoder { protected To_UTF_32BE_Transcoder () { super("UTF-8", "UTF-32BE", 416, "Utf1632", 1, 4, 4, AsciiCompatibility.ENCODER, 0); } public static final Transcoder INSTANCE = new To_UTF_32BE_Transcoder(); @Override public int startToOutput(byte[] statep, byte[] s, int sStart, int l, byte[] o, int oStart, int oSize) { return TranscodeFunctions.funSoToUTF32BE(statep, s, sStart, l, o, oStart, oSize); } } jcodings-1.0.58/src/org/jcodings/transcode/specific/To_UTF_32LE_Transcoder.java000066400000000000000000000033371433325321700272170ustar00rootroot00000000000000/* * Permission is hereby granted, free of charge, to any person obtaining a copy of * this software and associated documentation files (the "Software"), to deal in * the Software without restriction, including without limitation the rights to * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies * of the Software, and to permit persons to whom the Software is furnished to do * so, subject to the following conditions: * * The above copyright notice and this permission notice shall be included in all * copies or substantial portions of the Software. * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE * SOFTWARE. */ package org.jcodings.transcode.specific; import org.jcodings.transcode.AsciiCompatibility; import org.jcodings.transcode.TranscodeFunctions; import org.jcodings.transcode.Transcoder; public class To_UTF_32LE_Transcoder extends Transcoder { protected To_UTF_32LE_Transcoder () { super("UTF-8", "UTF-32LE", 416, "Utf1632", 1, 4, 4, AsciiCompatibility.ENCODER, 0); } public static final Transcoder INSTANCE = new To_UTF_32LE_Transcoder(); @Override public int startToOutput(byte[] statep, byte[] s, int sStart, int l, byte[] o, int oStart, int oSize) { return TranscodeFunctions.funSoToUTF32LE(statep, s, sStart, l, o, oStart, oSize); } } jcodings-1.0.58/src/org/jcodings/transcode/specific/To_UTF_32_Transcoder.java000066400000000000000000000036131433325321700267730ustar00rootroot00000000000000/* * Permission is hereby granted, free of charge, to any person obtaining a copy of * this software and associated documentation files (the "Software"), to deal in * the Software without restriction, including without limitation the rights to * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies * of the Software, and to permit persons to whom the Software is furnished to do * so, subject to the following conditions: * * The above copyright notice and this permission notice shall be included in all * copies or substantial portions of the Software. * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE * SOFTWARE. */ package org.jcodings.transcode.specific; import org.jcodings.transcode.AsciiCompatibility; import org.jcodings.transcode.TranscodeFunctions; import org.jcodings.transcode.Transcoder; public class To_UTF_32_Transcoder extends Transcoder { protected To_UTF_32_Transcoder () { super("UTF-8", "UTF-32", 416, "Utf1632", 1, 4, 4, AsciiCompatibility.ENCODER, 1); } public static final Transcoder INSTANCE = new To_UTF_32_Transcoder(); @Override public boolean hasStateInit() { return true; } @Override public int stateInit(byte[] statep) { statep[0] = 0; return 0; } @Override public int startToOutput(byte[] statep, byte[] s, int sStart, int l, byte[] o, int oStart, int oSize) { return TranscodeFunctions.funSoToUTF32(statep, s, sStart, l, o, oStart, oSize); } } jcodings-1.0.58/src/org/jcodings/transcode/specific/Universal_newline_Transcoder.java000066400000000000000000000052521433325321700310610ustar00rootroot00000000000000/* * Permission is hereby granted, free of charge, to any person obtaining a copy of * this software and associated documentation files (the "Software"), to deal in * the Software without restriction, including without limitation the rights to * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies * of the Software, and to permit persons to whom the Software is furnished to do * so, subject to the following conditions: * * The above copyright notice and this permission notice shall be included in all * copies or substantial portions of the Software. * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE * SOFTWARE. */ package org.jcodings.transcode.specific; import org.jcodings.transcode.AsciiCompatibility; import org.jcodings.transcode.TranscodeFunctions; import org.jcodings.transcode.Transcoder; import org.jcodings.transcode.Transcoding; public class Universal_newline_Transcoder extends Transcoder { protected Universal_newline_Transcoder() { super("", "universal_newline", 4, "Newline", 1, 1, 2, AsciiCompatibility.CONVERTER, 2); } private static final int universal_newline = Transcoding.WORDINDEX2INFO(1); public static final Transcoder INSTANCE = new Universal_newline_Transcoder(); @Override public int stateInit(byte[] statep) { return TranscodeFunctions.universalNewlineInit(statep); } @Override public int stateFinish(byte[] state) { return TranscodeFunctions.universalNewlineInit(state); } @Override public int startToOutput(byte[] statep, byte[] s, int sStart, int l, byte[] o, int oStart, int oSize) { return TranscodeFunctions.funSoUniversalNewline(statep, s, sStart, l, o, oStart, oSize); } @Override public boolean hasFinish() { return true; } @Override public int finish(byte[] statep, byte[] p, int start, int size) { return TranscodeFunctions.universalNewlineFinish(statep, p, start, size); } @Override public int resetSize(byte[] statep) { return TranscodeFunctions.iso2022jpEncoderResetSequenceSize(statep); } @Override public int resetState(byte[] statep, byte[] p, int start, int size) { return TranscodeFunctions.finishIso2022jpEncoder(statep, p, start, size); } } jcodings-1.0.58/src/org/jcodings/unicode/000077500000000000000000000000001433325321700202145ustar00rootroot00000000000000jcodings-1.0.58/src/org/jcodings/unicode/FixedWidthUnicodeEncoding.java000066400000000000000000000057221433325321700261020ustar00rootroot00000000000000/* * Permission is hereby granted, free of charge, to any person obtaining a copy of * this software and associated documentation files (the "Software"), to deal in * the Software without restriction, including without limitation the rights to * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies * of the Software, and to permit persons to whom the Software is furnished to do * so, subject to the following conditions: * * The above copyright notice and this permission notice shall be included in all * copies or substantial portions of the Software. * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE * SOFTWARE. */ package org.jcodings.unicode; import org.jcodings.IntHolder; import org.jcodings.util.Macros; public abstract class FixedWidthUnicodeEncoding extends UnicodeEncoding { protected final int shift; protected FixedWidthUnicodeEncoding(String name, int width) { super(name, width, width, null); shift = log2(width); } @Override public final int length(byte c) { return minLength; } @Override public int length(byte[] bytes, int p, int e) { if (e < p) { return Macros.CONSTRUCT_MBCLEN_INVALID(); } else if (e-p < 4) { return Macros.CONSTRUCT_MBCLEN_NEEDMORE(4-e-p); } else { int c = mbcToCode(bytes, p, e); if (!Macros.UNICODE_VALID_CODEPOINT_P(c)) { return Macros.CONSTRUCT_MBCLEN_INVALID(); } return Macros.CONSTRUCT_MBCLEN_CHARFOUND(4); } } @Override public final int strLength(byte[]bytes, int p, int end) { return (end - p) >>> shift; } @Override public final int strCodeAt(byte[]bytes, int p, int end, int index) { return mbcToCode(bytes, p + (index << shift), end); } @Override public final int codeToMbcLength(int code) { return minLength; } /** onigenc_utf16_32_get_ctype_code_range */ @Override public final int[]ctypeCodeRange(int ctype, IntHolder sbOut) { sbOut.value = 0x00; return super.ctypeCodeRange(ctype); } @Override public final int leftAdjustCharHead(byte[]bytes, int p, int s, int end) { if (s <= p) return s; return s - ((s - p) % maxLength); } @Override public final boolean isReverseMatchAllowed(byte[]bytes, int p, int end) { return false; } private static int log2(int n){ int log = 0; while ((n >>>= 1) != 0) log++; return log; } } jcodings-1.0.58/src/org/jcodings/unicode/UnicodeCodeRange.java000066400000000000000000001307131433325321700242220ustar00rootroot00000000000000/* * Permission is hereby granted, free of charge, to any person obtaining a copy of * this software and associated documentation files (the "Software"), to deal in * the Software without restriction, including without limitation the rights to * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies * of the Software, and to permit persons to whom the Software is furnished to do * so, subject to the following conditions: * * The above copyright notice and this permission notice shall be included in all * copies or substantial portions of the Software. * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE * SOFTWARE. */ package org.jcodings.unicode; import org.jcodings.util.ArrayReader; import org.jcodings.CodeRange; public enum UnicodeCodeRange { NEWLINE("newline", "CR_NEWLINE"), ALPHA("alpha", "CR_Alpha"), BLANK("blank", "CR_Blank"), CNTRL("cntrl", "CR_Cntrl"), DIGIT("digit", "CR_Digit"), GRAPH("graph", "CR_Graph"), LOWER("lower", "CR_Lower"), PRINT("print", "CR_Print"), XPOSIXPUNCT("xposixpunct", "CR_XPosixPunct"), SPACE("space", "CR_Space"), UPPER("upper", "CR_Upper"), XDIGIT("xdigit", "CR_XDigit"), WORD("word", "CR_Word"), ALNUM("alnum", "CR_Alnum"), ASCII("ascii", "CR_ASCII"), PUNCT("punct", "CR_Punct"), ANY("any", "CR_Any"), ASSIGNED("assigned", "CR_Assigned"), C("c", "CR_C"), OTHER("other", "CR_C"), CC("cc", "CR_Cntrl"), CONTROL("control", "CR_Cntrl"), CF("cf", "CR_Cf"), FORMAT("format", "CR_Cf"), CN("cn", "CR_Cn"), UNASSIGNED("unassigned", "CR_Cn"), CO("co", "CR_Co"), PRIVATEUSE("privateuse", "CR_Co"), CS("cs", "CR_Cs"), SURROGATE("surrogate", "CR_Cs"), L("l", "CR_L"), LETTER("letter", "CR_L"), LC("lc", "CR_LC"), CASEDLETTER("casedletter", "CR_LC"), LL("ll", "CR_Ll"), LOWERCASELETTER("lowercaseletter", "CR_Ll"), LM("lm", "CR_Lm"), MODIFIERLETTER("modifierletter", "CR_Lm"), LO("lo", "CR_Lo"), OTHERLETTER("otherletter", "CR_Lo"), LT("lt", "CR_Lt"), TITLECASELETTER("titlecaseletter", "CR_Lt"), LU("lu", "CR_Lu"), UPPERCASELETTER("uppercaseletter", "CR_Lu"), M("m", "CR_M"), MARK("mark", "CR_M"), COMBININGMARK("combiningmark", "CR_M"), MC("mc", "CR_Mc"), SPACINGMARK("spacingmark", "CR_Mc"), ME("me", "CR_Me"), ENCLOSINGMARK("enclosingmark", "CR_Me"), MN("mn", "CR_Mn"), NONSPACINGMARK("nonspacingmark", "CR_Mn"), N("n", "CR_N"), NUMBER("number", "CR_N"), ND("nd", "CR_Digit"), DECIMALNUMBER("decimalnumber", "CR_Digit"), NL("nl", "CR_Nl"), LETTERNUMBER("letternumber", "CR_Nl"), NO("no", "CR_No"), OTHERNUMBER("othernumber", "CR_No"), P("p", "CR_Punct"), PUNCTUATION("punctuation", "CR_Punct"), PC("pc", "CR_Pc"), CONNECTORPUNCTUATION("connectorpunctuation", "CR_Pc"), PD("pd", "CR_Pd"), DASHPUNCTUATION("dashpunctuation", "CR_Pd"), PE("pe", "CR_Pe"), CLOSEPUNCTUATION("closepunctuation", "CR_Pe"), PF("pf", "CR_Pf"), FINALPUNCTUATION("finalpunctuation", "CR_Pf"), PI("pi", "CR_Pi"), INITIALPUNCTUATION("initialpunctuation", "CR_Pi"), PO("po", "CR_Po"), OTHERPUNCTUATION("otherpunctuation", "CR_Po"), PS("ps", "CR_Ps"), OPENPUNCTUATION("openpunctuation", "CR_Ps"), S("s", "CR_S"), SYMBOL("symbol", "CR_S"), SC("sc", "CR_Sc"), CURRENCYSYMBOL("currencysymbol", "CR_Sc"), SK("sk", "CR_Sk"), MODIFIERSYMBOL("modifiersymbol", "CR_Sk"), SM("sm", "CR_Sm"), MATHSYMBOL("mathsymbol", "CR_Sm"), SO("so", "CR_So"), OTHERSYMBOL("othersymbol", "CR_So"), Z("z", "CR_Z"), SEPARATOR("separator", "CR_Z"), ZL("zl", "CR_Zl"), LINESEPARATOR("lineseparator", "CR_Zl"), ZP("zp", "CR_Zp"), PARAGRAPHSEPARATOR("paragraphseparator", "CR_Zp"), ZS("zs", "CR_Zs"), SPACESEPARATOR("spaceseparator", "CR_Zs"), MATH("math", "CR_Math"), ALPHABETIC("alphabetic", "CR_Alpha"), LOWERCASE("lowercase", "CR_Lower"), UPPERCASE("uppercase", "CR_Upper"), CASED("cased", "CR_Cased"), CASEIGNORABLE("caseignorable", "CR_Case_Ignorable"), CI("ci", "CR_Case_Ignorable"), CHANGESWHENLOWERCASED("changeswhenlowercased", "CR_Changes_When_Lowercased"), CWL("cwl", "CR_Changes_When_Lowercased"), CHANGESWHENUPPERCASED("changeswhenuppercased", "CR_Changes_When_Uppercased"), CWU("cwu", "CR_Changes_When_Uppercased"), CHANGESWHENTITLECASED("changeswhentitlecased", "CR_Changes_When_Titlecased"), CWT("cwt", "CR_Changes_When_Titlecased"), CHANGESWHENCASEFOLDED("changeswhencasefolded", "CR_Changes_When_Casefolded"), CWCF("cwcf", "CR_Changes_When_Casefolded"), CHANGESWHENCASEMAPPED("changeswhencasemapped", "CR_Changes_When_Casemapped"), CWCM("cwcm", "CR_Changes_When_Casemapped"), IDSTART("idstart", "CR_ID_Start"), IDS("ids", "CR_ID_Start"), IDCONTINUE("idcontinue", "CR_ID_Continue"), IDC("idc", "CR_ID_Continue"), XIDSTART("xidstart", "CR_XID_Start"), XIDS("xids", "CR_XID_Start"), XIDCONTINUE("xidcontinue", "CR_XID_Continue"), XIDC("xidc", "CR_XID_Continue"), DEFAULTIGNORABLECODEPOINT("defaultignorablecodepoint", "CR_Default_Ignorable_Code_Point"), DI("di", "CR_Default_Ignorable_Code_Point"), GRAPHEMEEXTEND("graphemeextend", "CR_Grapheme_Extend"), GREXT("grext", "CR_Grapheme_Extend"), GRAPHEMEBASE("graphemebase", "CR_Grapheme_Base"), GRBASE("grbase", "CR_Grapheme_Base"), GRAPHEMELINK("graphemelink", "CR_Grapheme_Link"), GRLINK("grlink", "CR_Grapheme_Link"), COMMON("common", "CR_Common"), ZYYY("zyyy", "CR_Common"), LATIN("latin", "CR_Latin"), LATN("latn", "CR_Latin"), GREEK("greek", "CR_Greek"), GREK("grek", "CR_Greek"), CYRILLIC("cyrillic", "CR_Cyrillic"), CYRL("cyrl", "CR_Cyrillic"), ARMENIAN("armenian", "CR_Armenian"), ARMN("armn", "CR_Armenian"), HEBREW("hebrew", "CR_Hebrew"), HEBR("hebr", "CR_Hebrew"), ARABIC("arabic", "CR_Arabic"), ARAB("arab", "CR_Arabic"), SYRIAC("syriac", "CR_Syriac"), SYRC("syrc", "CR_Syriac"), THAANA("thaana", "CR_Thaana"), THAA("thaa", "CR_Thaana"), DEVANAGARI("devanagari", "CR_Devanagari"), DEVA("deva", "CR_Devanagari"), BENGALI("bengali", "CR_Bengali"), BENG("beng", "CR_Bengali"), GURMUKHI("gurmukhi", "CR_Gurmukhi"), GURU("guru", "CR_Gurmukhi"), GUJARATI("gujarati", "CR_Gujarati"), GUJR("gujr", "CR_Gujarati"), ORIYA("oriya", "CR_Oriya"), ORYA("orya", "CR_Oriya"), TAMIL("tamil", "CR_Tamil"), TAML("taml", "CR_Tamil"), TELUGU("telugu", "CR_Telugu"), TELU("telu", "CR_Telugu"), KANNADA("kannada", "CR_Kannada"), KNDA("knda", "CR_Kannada"), MALAYALAM("malayalam", "CR_Malayalam"), MLYM("mlym", "CR_Malayalam"), SINHALA("sinhala", "CR_Sinhala"), SINH("sinh", "CR_Sinhala"), THAI("thai", "CR_Thai"), LAO("lao", "CR_Lao"), LAOO("laoo", "CR_Lao"), TIBETAN("tibetan", "CR_Tibetan"), TIBT("tibt", "CR_Tibetan"), MYANMAR("myanmar", "CR_Myanmar"), MYMR("mymr", "CR_Myanmar"), GEORGIAN("georgian", "CR_Georgian"), GEOR("geor", "CR_Georgian"), HANGUL("hangul", "CR_Hangul"), HANG("hang", "CR_Hangul"), ETHIOPIC("ethiopic", "CR_Ethiopic"), ETHI("ethi", "CR_Ethiopic"), CHEROKEE("cherokee", "CR_Cherokee"), CHER("cher", "CR_Cherokee"), CANADIANABORIGINAL("canadianaboriginal", "CR_Canadian_Aboriginal"), CANS("cans", "CR_Canadian_Aboriginal"), OGHAM("ogham", "CR_Ogham"), OGAM("ogam", "CR_Ogham"), RUNIC("runic", "CR_Runic"), RUNR("runr", "CR_Runic"), KHMER("khmer", "CR_Khmer"), KHMR("khmr", "CR_Khmer"), MONGOLIAN("mongolian", "CR_Mongolian"), MONG("mong", "CR_Mongolian"), HIRAGANA("hiragana", "CR_Hiragana"), HIRA("hira", "CR_Hiragana"), KATAKANA("katakana", "CR_Katakana"), KANA("kana", "CR_Katakana"), BOPOMOFO("bopomofo", "CR_Bopomofo"), BOPO("bopo", "CR_Bopomofo"), HAN("han", "CR_Han"), HANI("hani", "CR_Han"), YI("yi", "CR_Yi"), YIII("yiii", "CR_Yi"), OLDITALIC("olditalic", "CR_Old_Italic"), ITAL("ital", "CR_Old_Italic"), GOTHIC("gothic", "CR_Gothic"), GOTH("goth", "CR_Gothic"), INDESERET("indeseret", "CR_Deseret"), INHERITED("inherited", "CR_Inherited"), QAAI("qaai", "CR_Inherited"), ZINH("zinh", "CR_Inherited"), TAGALOG("tagalog", "CR_Tagalog"), TGLG("tglg", "CR_Tagalog"), HANUNOO("hanunoo", "CR_Hanunoo"), HANO("hano", "CR_Hanunoo"), BUHID("buhid", "CR_Buhid"), BUHD("buhd", "CR_Buhid"), TAGBANWA("tagbanwa", "CR_Tagbanwa"), TAGB("tagb", "CR_Tagbanwa"), LIMBU("limbu", "CR_Limbu"), LIMB("limb", "CR_Limbu"), TAILE("taile", "CR_Tai_Le"), TALE("tale", "CR_Tai_Le"), LINEARB("linearb", "CR_Linear_B"), LINB("linb", "CR_Linear_B"), UGARITIC("ugaritic", "CR_Ugaritic"), UGAR("ugar", "CR_Ugaritic"), INSHAVIAN("inshavian", "CR_Shavian"), OSMANYA("osmanya", "CR_Osmanya"), OSMA("osma", "CR_Osmanya"), CYPRIOT("cypriot", "CR_Cypriot"), CPRT("cprt", "CR_Cypriot"), INBRAILLEPATTERNS("inbraillepatterns", "CR_Braille"), BUGINESE("buginese", "CR_Buginese"), BUGI("bugi", "CR_Buginese"), COPTIC("coptic", "CR_Coptic"), QAAC("qaac", "CR_Coptic"), COPT("copt", "CR_Coptic"), NEWTAILUE("newtailue", "CR_New_Tai_Lue"), TALU("talu", "CR_New_Tai_Lue"), GLAGOLITIC("glagolitic", "CR_Glagolitic"), GLAG("glag", "CR_Glagolitic"), TIFINAGH("tifinagh", "CR_Tifinagh"), TFNG("tfng", "CR_Tifinagh"), SYLOTINAGRI("sylotinagri", "CR_Syloti_Nagri"), SYLO("sylo", "CR_Syloti_Nagri"), OLDPERSIAN("oldpersian", "CR_Old_Persian"), XPEO("xpeo", "CR_Old_Persian"), KHAROSHTHI("kharoshthi", "CR_Kharoshthi"), KHAR("khar", "CR_Kharoshthi"), BALINESE("balinese", "CR_Balinese"), BALI("bali", "CR_Balinese"), CUNEIFORM("cuneiform", "CR_Cuneiform"), XSUX("xsux", "CR_Cuneiform"), PHOENICIAN("phoenician", "CR_Phoenician"), PHNX("phnx", "CR_Phoenician"), PHAGSPA("phagspa", "CR_Phags_Pa"), PHAG("phag", "CR_Phags_Pa"), NKO("nko", "CR_Nko"), NKOO("nkoo", "CR_Nko"), SUNDANESE("sundanese", "CR_Sundanese"), SUND("sund", "CR_Sundanese"), LEPCHA("lepcha", "CR_Lepcha"), LEPC("lepc", "CR_Lepcha"), INOLCHIKI("inolchiki", "CR_Ol_Chiki"), VAI("vai", "CR_Vai"), VAII("vaii", "CR_Vai"), SAURASHTRA("saurashtra", "CR_Saurashtra"), SAUR("saur", "CR_Saurashtra"), KAYAHLI("kayahli", "CR_Kayah_Li"), KALI("kali", "CR_Kayah_Li"), REJANG("rejang", "CR_Rejang"), RJNG("rjng", "CR_Rejang"), LYCIAN("lycian", "CR_Lycian"), LYCI("lyci", "CR_Lycian"), CARIAN("carian", "CR_Carian"), CARI("cari", "CR_Carian"), LYDIAN("lydian", "CR_Lydian"), LYDI("lydi", "CR_Lydian"), CHAM("cham", "CR_Cham"), TAITHAM("taitham", "CR_Tai_Tham"), LANA("lana", "CR_Tai_Tham"), TAIVIET("taiviet", "CR_Tai_Viet"), TAVT("tavt", "CR_Tai_Viet"), AVESTAN("avestan", "CR_Avestan"), AVST("avst", "CR_Avestan"), EGYPTIANHIEROGLYPHS("egyptianhieroglyphs", "CR_Egyptian_Hieroglyphs"), EGYP("egyp", "CR_Egyptian_Hieroglyphs"), SAMARITAN("samaritan", "CR_Samaritan"), SAMR("samr", "CR_Samaritan"), LISU("lisu", "CR_Lisu"), BAMUM("bamum", "CR_Bamum"), BAMU("bamu", "CR_Bamum"), JAVANESE("javanese", "CR_Javanese"), JAVA("java", "CR_Javanese"), MEETEIMAYEK("meeteimayek", "CR_Meetei_Mayek"), MTEI("mtei", "CR_Meetei_Mayek"), IMPERIALARAMAIC("imperialaramaic", "CR_Imperial_Aramaic"), ARMI("armi", "CR_Imperial_Aramaic"), INOLDSOUTHARABIAN("inoldsoutharabian", "CR_Old_South_Arabian"), INSCRIPTIONALPARTHIAN("inscriptionalparthian", "CR_Inscriptional_Parthian"), PRTI("prti", "CR_Inscriptional_Parthian"), INSCRIPTIONALPAHLAVI("inscriptionalpahlavi", "CR_Inscriptional_Pahlavi"), PHLI("phli", "CR_Inscriptional_Pahlavi"), OLDTURKIC("oldturkic", "CR_Old_Turkic"), ORKH("orkh", "CR_Old_Turkic"), KAITHI("kaithi", "CR_Kaithi"), KTHI("kthi", "CR_Kaithi"), BATAK("batak", "CR_Batak"), BATK("batk", "CR_Batak"), BRAHMI("brahmi", "CR_Brahmi"), BRAH("brah", "CR_Brahmi"), MANDAIC("mandaic", "CR_Mandaic"), MAND("mand", "CR_Mandaic"), CHAKMA("chakma", "CR_Chakma"), CAKM("cakm", "CR_Chakma"), MEROITICCURSIVE("meroiticcursive", "CR_Meroitic_Cursive"), MERC("merc", "CR_Meroitic_Cursive"), INMEROITICHIEROGLYPHS("inmeroitichieroglyphs", "CR_Meroitic_Hieroglyphs"), MIAO("miao", "CR_Miao"), PLRD("plrd", "CR_Miao"), INSHARADA("insharada", "CR_Sharada"), SORASOMPENG("sorasompeng", "CR_Sora_Sompeng"), SORA("sora", "CR_Sora_Sompeng"), TAKRI("takri", "CR_Takri"), TAKR("takr", "CR_Takri"), CAUCASIANALBANIAN("caucasianalbanian", "CR_Caucasian_Albanian"), AGHB("aghb", "CR_Caucasian_Albanian"), BASSAVAH("bassavah", "CR_Bassa_Vah"), BASS("bass", "CR_Bassa_Vah"), DUPLOYAN("duployan", "CR_Duployan"), DUPL("dupl", "CR_Duployan"), ELBASAN("elbasan", "CR_Elbasan"), ELBA("elba", "CR_Elbasan"), GRANTHA("grantha", "CR_Grantha"), GRAN("gran", "CR_Grantha"), PAHAWHHMONG("pahawhhmong", "CR_Pahawh_Hmong"), HMNG("hmng", "CR_Pahawh_Hmong"), KHOJKI("khojki", "CR_Khojki"), KHOJ("khoj", "CR_Khojki"), LINEARA("lineara", "CR_Linear_A"), LINA("lina", "CR_Linear_A"), MAHAJANI("mahajani", "CR_Mahajani"), MAHJ("mahj", "CR_Mahajani"), MANICHAEAN("manichaean", "CR_Manichaean"), MANI("mani", "CR_Manichaean"), MENDEKIKAKUI("mendekikakui", "CR_Mende_Kikakui"), MEND("mend", "CR_Mende_Kikakui"), MODI("modi", "CR_Modi"), MRO("mro", "CR_Mro"), MROO("mroo", "CR_Mro"), INOLDNORTHARABIAN("inoldnortharabian", "CR_Old_North_Arabian"), NABATAEAN("nabataean", "CR_Nabataean"), NBAT("nbat", "CR_Nabataean"), INPALMYRENE("inpalmyrene", "CR_Palmyrene"), PAUCINHAU("paucinhau", "CR_Pau_Cin_Hau"), PAUC("pauc", "CR_Pau_Cin_Hau"), OLDPERMIC("oldpermic", "CR_Old_Permic"), PERM("perm", "CR_Old_Permic"), PSALTERPAHLAVI("psalterpahlavi", "CR_Psalter_Pahlavi"), PHLP("phlp", "CR_Psalter_Pahlavi"), SIDDHAM("siddham", "CR_Siddham"), SIDD("sidd", "CR_Siddham"), KHUDAWADI("khudawadi", "CR_Khudawadi"), SIND("sind", "CR_Khudawadi"), TIRHUTA("tirhuta", "CR_Tirhuta"), TIRH("tirh", "CR_Tirhuta"), WARANGCITI("warangciti", "CR_Warang_Citi"), WARA("wara", "CR_Warang_Citi"), AHOM("ahom", "CR_Ahom"), ANATOLIANHIEROGLYPHS("anatolianhieroglyphs", "CR_Anatolian_Hieroglyphs"), HLUW("hluw", "CR_Anatolian_Hieroglyphs"), HATRAN("hatran", "CR_Hatran"), HATR("hatr", "CR_Hatran"), MULTANI("multani", "CR_Multani"), MULT("mult", "CR_Multani"), OLDHUNGARIAN("oldhungarian", "CR_Old_Hungarian"), HUNG("hung", "CR_Old_Hungarian"), SIGNWRITING("signwriting", "CR_SignWriting"), SGNW("sgnw", "CR_SignWriting"), ADLAM("adlam", "CR_Adlam"), ADLM("adlm", "CR_Adlam"), BHAIKSUKI("bhaiksuki", "CR_Bhaiksuki"), BHKS("bhks", "CR_Bhaiksuki"), MARCHEN("marchen", "CR_Marchen"), MARC("marc", "CR_Marchen"), NEWA("newa", "CR_Newa"), OSAGE("osage", "CR_Osage"), OSGE("osge", "CR_Osage"), TANGUT("tangut", "CR_Tangut"), TANG("tang", "CR_Tangut"), MASARAMGONDI("masaramgondi", "CR_Masaram_Gondi"), GONM("gonm", "CR_Masaram_Gondi"), NUSHU("nushu", "CR_Nushu"), NSHU("nshu", "CR_Nushu"), SOYOMBO("soyombo", "CR_Soyombo"), SOYO("soyo", "CR_Soyombo"), ZANABAZARSQUARE("zanabazarsquare", "CR_Zanabazar_Square"), ZANB("zanb", "CR_Zanabazar_Square"), DOGRA("dogra", "CR_Dogra"), DOGR("dogr", "CR_Dogra"), GUNJALAGONDI("gunjalagondi", "CR_Gunjala_Gondi"), GONG("gong", "CR_Gunjala_Gondi"), MAKASAR("makasar", "CR_Makasar"), MAKA("maka", "CR_Makasar"), MEDEFAIDRIN("medefaidrin", "CR_Medefaidrin"), MEDF("medf", "CR_Medefaidrin"), HANIFIROHINGYA("hanifirohingya", "CR_Hanifi_Rohingya"), ROHG("rohg", "CR_Hanifi_Rohingya"), SOGDIAN("sogdian", "CR_Sogdian"), SOGD("sogd", "CR_Sogdian"), OLDSOGDIAN("oldsogdian", "CR_Old_Sogdian"), SOGO("sogo", "CR_Old_Sogdian"), ELYMAIC("elymaic", "CR_Elymaic"), ELYM("elym", "CR_Elymaic"), NANDINAGARI("nandinagari", "CR_Nandinagari"), NAND("nand", "CR_Nandinagari"), NYIAKENGPUACHUEHMONG("nyiakengpuachuehmong", "CR_Nyiakeng_Puachue_Hmong"), HMNP("hmnp", "CR_Nyiakeng_Puachue_Hmong"), WANCHO("wancho", "CR_Wancho"), WCHO("wcho", "CR_Wancho"), CHORASMIAN("chorasmian", "CR_Chorasmian"), CHRS("chrs", "CR_Chorasmian"), DIVESAKURU("divesakuru", "CR_Dives_Akuru"), DIAK("diak", "CR_Dives_Akuru"), KHITANSMALLSCRIPT("khitansmallscript", "CR_Khitan_Small_Script"), KITS("kits", "CR_Khitan_Small_Script"), YEZIDI("yezidi", "CR_Yezidi"), YEZI("yezi", "CR_Yezidi"), WHITESPACE("whitespace", "CR_Space"), WSPACE("wspace", "CR_Space"), BIDICONTROL("bidicontrol", "CR_Bidi_Control"), BIDIC("bidic", "CR_Bidi_Control"), JOINCONTROL("joincontrol", "CR_Join_Control"), JOINC("joinc", "CR_Join_Control"), DASH("dash", "CR_Dash"), HYPHEN("hyphen", "CR_Hyphen"), QUOTATIONMARK("quotationmark", "CR_Quotation_Mark"), QMARK("qmark", "CR_Quotation_Mark"), TERMINALPUNCTUATION("terminalpunctuation", "CR_Terminal_Punctuation"), TERM("term", "CR_Terminal_Punctuation"), OTHERMATH("othermath", "CR_Other_Math"), OMATH("omath", "CR_Other_Math"), HEXDIGIT("hexdigit", "CR_Hex_Digit"), HEX("hex", "CR_Hex_Digit"), ASCIIHEXDIGIT("asciihexdigit", "CR_XDigit"), AHEX("ahex", "CR_XDigit"), OTHERALPHABETIC("otheralphabetic", "CR_Other_Alphabetic"), OALPHA("oalpha", "CR_Other_Alphabetic"), IDEOGRAPHIC("ideographic", "CR_Ideographic"), IDEO("ideo", "CR_Ideographic"), DIACRITIC("diacritic", "CR_Diacritic"), DIA("dia", "CR_Diacritic"), EXTENDER("extender", "CR_Extender"), EXT("ext", "CR_Extender"), OTHERLOWERCASE("otherlowercase", "CR_Other_Lowercase"), OLOWER("olower", "CR_Other_Lowercase"), OTHERUPPERCASE("otheruppercase", "CR_Other_Uppercase"), OUPPER("oupper", "CR_Other_Uppercase"), NONCHARACTERCODEPOINT("noncharactercodepoint", "CR_Noncharacter_Code_Point"), NCHAR("nchar", "CR_Noncharacter_Code_Point"), OTHERGRAPHEMEEXTEND("othergraphemeextend", "CR_Other_Grapheme_Extend"), OGREXT("ogrext", "CR_Other_Grapheme_Extend"), IDSBINARYOPERATOR("idsbinaryoperator", "CR_IDS_Binary_Operator"), IDSB("idsb", "CR_IDS_Binary_Operator"), IDSTRINARYOPERATOR("idstrinaryoperator", "CR_IDS_Trinary_Operator"), IDST("idst", "CR_IDS_Trinary_Operator"), RADICAL("radical", "CR_Radical"), UNIFIEDIDEOGRAPH("unifiedideograph", "CR_Unified_Ideograph"), UIDEO("uideo", "CR_Unified_Ideograph"), OTHERDEFAULTIGNORABLECODEPOINT("otherdefaultignorablecodepoint", "CR_Other_Default_Ignorable_Code_Point"), ODI("odi", "CR_Other_Default_Ignorable_Code_Point"), DEPRECATED("deprecated", "CR_Deprecated"), DEP("dep", "CR_Deprecated"), SOFTDOTTED("softdotted", "CR_Soft_Dotted"), SD("sd", "CR_Soft_Dotted"), LOGICALORDEREXCEPTION("logicalorderexception", "CR_Logical_Order_Exception"), LOE("loe", "CR_Logical_Order_Exception"), OTHERIDSTART("otheridstart", "CR_Other_ID_Start"), OIDS("oids", "CR_Other_ID_Start"), OTHERIDCONTINUE("otheridcontinue", "CR_Other_ID_Continue"), OIDC("oidc", "CR_Other_ID_Continue"), SENTENCETERMINAL("sentenceterminal", "CR_Sentence_Terminal"), STERM("sterm", "CR_Sentence_Terminal"), VARIATIONSELECTOR("variationselector", "CR_Variation_Selector"), VS("vs", "CR_Variation_Selector"), PATTERNWHITESPACE("patternwhitespace", "CR_Pattern_White_Space"), PATWS("patws", "CR_Pattern_White_Space"), PATTERNSYNTAX("patternsyntax", "CR_Pattern_Syntax"), PATSYN("patsyn", "CR_Pattern_Syntax"), PREPENDEDCONCATENATIONMARK("prependedconcatenationmark", "CR_Prepended_Concatenation_Mark"), PCM("pcm", "CR_Prepended_Concatenation_Mark"), GRAPHEMECLUSTERBREAK_REGIONALINDICATOR("graphemeclusterbreak=regionalindicator", "CR_Regional_Indicator"), EMOJI("emoji", "CR_Emoji"), EMOJIPRESENTATION("emojipresentation", "CR_Emoji_Presentation"), EPRES("epres", "CR_Emoji_Presentation"), EMOJIMODIFIER("emojimodifier", "CR_Emoji_Modifier"), EMOD("emod", "CR_Emoji_Modifier"), EMOJIMODIFIERBASE("emojimodifierbase", "CR_Emoji_Modifier_Base"), EBASE("ebase", "CR_Emoji_Modifier_Base"), EMOJICOMPONENT("emojicomponent", "CR_Emoji_Component"), ECOMP("ecomp", "CR_Emoji_Component"), EXTENDEDPICTOGRAPHIC("extendedpictographic", "CR_Extended_Pictographic"), EXTPICT("extpict", "CR_Extended_Pictographic"), UNKNOWN("unknown", "CR_Unknown"), ZZZZ("zzzz", "CR_Unknown"), AGE_1_1("age=1.1", "CR_Age_1_1"), AGE_2_0("age=2.0", "CR_Age_2_0"), AGE_2_1("age=2.1", "CR_Age_2_1"), AGE_3_0("age=3.0", "CR_Age_3_0"), AGE_3_1("age=3.1", "CR_Age_3_1"), AGE_3_2("age=3.2", "CR_Age_3_2"), AGE_4_0("age=4.0", "CR_Age_4_0"), AGE_4_1("age=4.1", "CR_Age_4_1"), AGE_5_0("age=5.0", "CR_Age_5_0"), AGE_5_1("age=5.1", "CR_Age_5_1"), AGE_5_2("age=5.2", "CR_Age_5_2"), AGE_6_0("age=6.0", "CR_Age_6_0"), AGE_6_1("age=6.1", "CR_Age_6_1"), AGE_6_2("age=6.2", "CR_Age_6_2"), AGE_6_3("age=6.3", "CR_Age_6_3"), AGE_7_0("age=7.0", "CR_Age_7_0"), AGE_8_0("age=8.0", "CR_Age_8_0"), AGE_9_0("age=9.0", "CR_Age_9_0"), AGE_10_0("age=10.0", "CR_Age_10_0"), AGE_11_0("age=11.0", "CR_Age_11_0"), AGE_12_0("age=12.0", "CR_Age_12_0"), AGE_12_1("age=12.1", "CR_Age_12_1"), AGE_13_0("age=13.0", "CR_Age_13_0"), GRAPHEMECLUSTERBREAK_PREPEND("graphemeclusterbreak=prepend", "CR_Grapheme_Cluster_Break_Prepend"), GRAPHEMECLUSTERBREAK_CR("graphemeclusterbreak=cr", "CR_Grapheme_Cluster_Break_CR"), GRAPHEMECLUSTERBREAK_LF("graphemeclusterbreak=lf", "CR_NEWLINE"), GRAPHEMECLUSTERBREAK_CONTROL("graphemeclusterbreak=control", "CR_Grapheme_Cluster_Break_Control"), GRAPHEMECLUSTERBREAK_EXTEND("graphemeclusterbreak=extend", "CR_Grapheme_Cluster_Break_Extend"), REGIONALINDICATOR("regionalindicator", "CR_Regional_Indicator"), RI("ri", "CR_Regional_Indicator"), GRAPHEMECLUSTERBREAK_SPACINGMARK("graphemeclusterbreak=spacingmark", "CR_Grapheme_Cluster_Break_SpacingMark"), GRAPHEMECLUSTERBREAK_L("graphemeclusterbreak=l", "CR_Grapheme_Cluster_Break_L"), GRAPHEMECLUSTERBREAK_V("graphemeclusterbreak=v", "CR_Grapheme_Cluster_Break_V"), GRAPHEMECLUSTERBREAK_T("graphemeclusterbreak=t", "CR_Grapheme_Cluster_Break_T"), GRAPHEMECLUSTERBREAK_LV("graphemeclusterbreak=lv", "CR_Grapheme_Cluster_Break_LV"), GRAPHEMECLUSTERBREAK_LVT("graphemeclusterbreak=lvt", "CR_Grapheme_Cluster_Break_LVT"), GRAPHEMECLUSTERBREAK_ZWJ("graphemeclusterbreak=zwj", "CR_Grapheme_Cluster_Break_ZWJ"), INBASICLATIN("inbasiclatin", "CR_ASCII"), INLATIN1SUPPLEMENT("inlatin1supplement", "CR_In_Latin_1_Supplement"), INLATINEXTENDEDA("inlatinextendeda", "CR_In_Latin_Extended_A"), INLATINEXTENDEDB("inlatinextendedb", "CR_In_Latin_Extended_B"), INIPAEXTENSIONS("inipaextensions", "CR_In_IPA_Extensions"), INSPACINGMODIFIERLETTERS("inspacingmodifierletters", "CR_In_Spacing_Modifier_Letters"), INCOMBININGDIACRITICALMARKS("incombiningdiacriticalmarks", "CR_In_Combining_Diacritical_Marks"), INGREEKANDCOPTIC("ingreekandcoptic", "CR_In_Greek_and_Coptic"), INCYRILLIC("incyrillic", "CR_In_Cyrillic"), INCYRILLICSUPPLEMENT("incyrillicsupplement", "CR_In_Cyrillic_Supplement"), INARMENIAN("inarmenian", "CR_In_Armenian"), INHEBREW("inhebrew", "CR_In_Hebrew"), INARABIC("inarabic", "CR_In_Arabic"), INSYRIAC("insyriac", "CR_In_Syriac"), INARABICSUPPLEMENT("inarabicsupplement", "CR_In_Arabic_Supplement"), INTHAANA("inthaana", "CR_In_Thaana"), INNKO("innko", "CR_In_NKo"), INSAMARITAN("insamaritan", "CR_In_Samaritan"), INMANDAIC("inmandaic", "CR_In_Mandaic"), INSYRIACSUPPLEMENT("insyriacsupplement", "CR_In_Syriac_Supplement"), INARABICEXTENDEDA("inarabicextendeda", "CR_In_Arabic_Extended_A"), INDEVANAGARI("indevanagari", "CR_In_Devanagari"), INBENGALI("inbengali", "CR_In_Bengali"), INGURMUKHI("ingurmukhi", "CR_In_Gurmukhi"), INGUJARATI("ingujarati", "CR_In_Gujarati"), INORIYA("inoriya", "CR_In_Oriya"), INTAMIL("intamil", "CR_In_Tamil"), INTELUGU("intelugu", "CR_In_Telugu"), INKANNADA("inkannada", "CR_In_Kannada"), INMALAYALAM("inmalayalam", "CR_In_Malayalam"), INSINHALA("insinhala", "CR_In_Sinhala"), INTHAI("inthai", "CR_In_Thai"), INLAO("inlao", "CR_In_Lao"), INTIBETAN("intibetan", "CR_In_Tibetan"), INMYANMAR("inmyanmar", "CR_In_Myanmar"), INGEORGIAN("ingeorgian", "CR_In_Georgian"), INHANGULJAMO("inhanguljamo", "CR_In_Hangul_Jamo"), INETHIOPIC("inethiopic", "CR_In_Ethiopic"), INETHIOPICSUPPLEMENT("inethiopicsupplement", "CR_In_Ethiopic_Supplement"), INCHEROKEE("incherokee", "CR_In_Cherokee"), INUNIFIEDCANADIANABORIGINALSYLLABICS("inunifiedcanadianaboriginalsyllabics", "CR_In_Unified_Canadian_Aboriginal_Syllabics"), INOGHAM("inogham", "CR_In_Ogham"), INRUNIC("inrunic", "CR_In_Runic"), INTAGALOG("intagalog", "CR_In_Tagalog"), INHANUNOO("inhanunoo", "CR_In_Hanunoo"), INBUHID("inbuhid", "CR_In_Buhid"), INTAGBANWA("intagbanwa", "CR_In_Tagbanwa"), INKHMER("inkhmer", "CR_In_Khmer"), INMONGOLIAN("inmongolian", "CR_In_Mongolian"), INUNIFIEDCANADIANABORIGINALSYLLABICSEXTENDED("inunifiedcanadianaboriginalsyllabicsextended", "CR_In_Unified_Canadian_Aboriginal_Syllabics_Extended"), INLIMBU("inlimbu", "CR_In_Limbu"), INTAILE("intaile", "CR_In_Tai_Le"), INNEWTAILUE("innewtailue", "CR_In_New_Tai_Lue"), INKHMERSYMBOLS("inkhmersymbols", "CR_In_Khmer_Symbols"), INBUGINESE("inbuginese", "CR_In_Buginese"), INTAITHAM("intaitham", "CR_In_Tai_Tham"), INCOMBININGDIACRITICALMARKSEXTENDED("incombiningdiacriticalmarksextended", "CR_In_Combining_Diacritical_Marks_Extended"), INBALINESE("inbalinese", "CR_In_Balinese"), INSUNDANESE("insundanese", "CR_In_Sundanese"), INBATAK("inbatak", "CR_In_Batak"), INLEPCHA("inlepcha", "CR_In_Lepcha"), OLCHIKI("olchiki", "CR_Ol_Chiki"), OLCK("olck", "CR_Ol_Chiki"), INCYRILLICEXTENDEDC("incyrillicextendedc", "CR_In_Cyrillic_Extended_C"), INGEORGIANEXTENDED("ingeorgianextended", "CR_In_Georgian_Extended"), INSUNDANESESUPPLEMENT("insundanesesupplement", "CR_In_Sundanese_Supplement"), INVEDICEXTENSIONS("invedicextensions", "CR_In_Vedic_Extensions"), INPHONETICEXTENSIONS("inphoneticextensions", "CR_In_Phonetic_Extensions"), INPHONETICEXTENSIONSSUPPLEMENT("inphoneticextensionssupplement", "CR_In_Phonetic_Extensions_Supplement"), INCOMBININGDIACRITICALMARKSSUPPLEMENT("incombiningdiacriticalmarkssupplement", "CR_In_Combining_Diacritical_Marks_Supplement"), INLATINEXTENDEDADDITIONAL("inlatinextendedadditional", "CR_In_Latin_Extended_Additional"), INGREEKEXTENDED("ingreekextended", "CR_In_Greek_Extended"), INGENERALPUNCTUATION("ingeneralpunctuation", "CR_In_General_Punctuation"), INSUPERSCRIPTSANDSUBSCRIPTS("insuperscriptsandsubscripts", "CR_In_Superscripts_and_Subscripts"), INCURRENCYSYMBOLS("incurrencysymbols", "CR_In_Currency_Symbols"), INCOMBININGDIACRITICALMARKSFORSYMBOLS("incombiningdiacriticalmarksforsymbols", "CR_In_Combining_Diacritical_Marks_for_Symbols"), INLETTERLIKESYMBOLS("inletterlikesymbols", "CR_In_Letterlike_Symbols"), INNUMBERFORMS("innumberforms", "CR_In_Number_Forms"), INARROWS("inarrows", "CR_In_Arrows"), INMATHEMATICALOPERATORS("inmathematicaloperators", "CR_In_Mathematical_Operators"), INMISCELLANEOUSTECHNICAL("inmiscellaneoustechnical", "CR_In_Miscellaneous_Technical"), INCONTROLPICTURES("incontrolpictures", "CR_In_Control_Pictures"), INOPTICALCHARACTERRECOGNITION("inopticalcharacterrecognition", "CR_In_Optical_Character_Recognition"), INENCLOSEDALPHANUMERICS("inenclosedalphanumerics", "CR_In_Enclosed_Alphanumerics"), INBOXDRAWING("inboxdrawing", "CR_In_Box_Drawing"), INBLOCKELEMENTS("inblockelements", "CR_In_Block_Elements"), INGEOMETRICSHAPES("ingeometricshapes", "CR_In_Geometric_Shapes"), INMISCELLANEOUSSYMBOLS("inmiscellaneoussymbols", "CR_In_Miscellaneous_Symbols"), INDINGBATS("indingbats", "CR_In_Dingbats"), INMISCELLANEOUSMATHEMATICALSYMBOLSA("inmiscellaneousmathematicalsymbolsa", "CR_In_Miscellaneous_Mathematical_Symbols_A"), INSUPPLEMENTALARROWSA("insupplementalarrowsa", "CR_In_Supplemental_Arrows_A"), BRAILLE("braille", "CR_Braille"), BRAI("brai", "CR_Braille"), INSUPPLEMENTALARROWSB("insupplementalarrowsb", "CR_In_Supplemental_Arrows_B"), INMISCELLANEOUSMATHEMATICALSYMBOLSB("inmiscellaneousmathematicalsymbolsb", "CR_In_Miscellaneous_Mathematical_Symbols_B"), INSUPPLEMENTALMATHEMATICALOPERATORS("insupplementalmathematicaloperators", "CR_In_Supplemental_Mathematical_Operators"), INMISCELLANEOUSSYMBOLSANDARROWS("inmiscellaneoussymbolsandarrows", "CR_In_Miscellaneous_Symbols_and_Arrows"), INGLAGOLITIC("inglagolitic", "CR_In_Glagolitic"), INLATINEXTENDEDC("inlatinextendedc", "CR_In_Latin_Extended_C"), INCOPTIC("incoptic", "CR_In_Coptic"), INGEORGIANSUPPLEMENT("ingeorgiansupplement", "CR_In_Georgian_Supplement"), INTIFINAGH("intifinagh", "CR_In_Tifinagh"), INETHIOPICEXTENDED("inethiopicextended", "CR_In_Ethiopic_Extended"), INCYRILLICEXTENDEDA("incyrillicextendeda", "CR_In_Cyrillic_Extended_A"), INSUPPLEMENTALPUNCTUATION("insupplementalpunctuation", "CR_In_Supplemental_Punctuation"), INCJKRADICALSSUPPLEMENT("incjkradicalssupplement", "CR_In_CJK_Radicals_Supplement"), INKANGXIRADICALS("inkangxiradicals", "CR_In_Kangxi_Radicals"), INIDEOGRAPHICDESCRIPTIONCHARACTERS("inideographicdescriptioncharacters", "CR_In_Ideographic_Description_Characters"), INCJKSYMBOLSANDPUNCTUATION("incjksymbolsandpunctuation", "CR_In_CJK_Symbols_and_Punctuation"), INHIRAGANA("inhiragana", "CR_In_Hiragana"), INKATAKANA("inkatakana", "CR_In_Katakana"), INBOPOMOFO("inbopomofo", "CR_In_Bopomofo"), INHANGULCOMPATIBILITYJAMO("inhangulcompatibilityjamo", "CR_In_Hangul_Compatibility_Jamo"), INKANBUN("inkanbun", "CR_In_Kanbun"), INBOPOMOFOEXTENDED("inbopomofoextended", "CR_In_Bopomofo_Extended"), INCJKSTROKES("incjkstrokes", "CR_In_CJK_Strokes"), INKATAKANAPHONETICEXTENSIONS("inkatakanaphoneticextensions", "CR_In_Katakana_Phonetic_Extensions"), INENCLOSEDCJKLETTERSANDMONTHS("inenclosedcjklettersandmonths", "CR_In_Enclosed_CJK_Letters_and_Months"), INCJKCOMPATIBILITY("incjkcompatibility", "CR_In_CJK_Compatibility"), INCJKUNIFIEDIDEOGRAPHSEXTENSIONA("incjkunifiedideographsextensiona", "CR_In_CJK_Unified_Ideographs_Extension_A"), INYIJINGHEXAGRAMSYMBOLS("inyijinghexagramsymbols", "CR_In_Yijing_Hexagram_Symbols"), INCJKUNIFIEDIDEOGRAPHS("incjkunifiedideographs", "CR_In_CJK_Unified_Ideographs"), INYISYLLABLES("inyisyllables", "CR_In_Yi_Syllables"), INYIRADICALS("inyiradicals", "CR_In_Yi_Radicals"), INLISU("inlisu", "CR_In_Lisu"), INVAI("invai", "CR_In_Vai"), INCYRILLICEXTENDEDB("incyrillicextendedb", "CR_In_Cyrillic_Extended_B"), INBAMUM("inbamum", "CR_In_Bamum"), INMODIFIERTONELETTERS("inmodifiertoneletters", "CR_In_Modifier_Tone_Letters"), INLATINEXTENDEDD("inlatinextendedd", "CR_In_Latin_Extended_D"), INSYLOTINAGRI("insylotinagri", "CR_In_Syloti_Nagri"), INCOMMONINDICNUMBERFORMS("incommonindicnumberforms", "CR_In_Common_Indic_Number_Forms"), INPHAGSPA("inphagspa", "CR_In_Phags_pa"), INSAURASHTRA("insaurashtra", "CR_In_Saurashtra"), INDEVANAGARIEXTENDED("indevanagariextended", "CR_In_Devanagari_Extended"), INKAYAHLI("inkayahli", "CR_In_Kayah_Li"), INREJANG("inrejang", "CR_In_Rejang"), INHANGULJAMOEXTENDEDA("inhanguljamoextendeda", "CR_In_Hangul_Jamo_Extended_A"), INJAVANESE("injavanese", "CR_In_Javanese"), INMYANMAREXTENDEDB("inmyanmarextendedb", "CR_In_Myanmar_Extended_B"), INCHAM("incham", "CR_In_Cham"), INMYANMAREXTENDEDA("inmyanmarextendeda", "CR_In_Myanmar_Extended_A"), INTAIVIET("intaiviet", "CR_In_Tai_Viet"), INMEETEIMAYEKEXTENSIONS("inmeeteimayekextensions", "CR_In_Meetei_Mayek_Extensions"), INETHIOPICEXTENDEDA("inethiopicextendeda", "CR_In_Ethiopic_Extended_A"), INLATINEXTENDEDE("inlatinextendede", "CR_In_Latin_Extended_E"), INCHEROKEESUPPLEMENT("incherokeesupplement", "CR_In_Cherokee_Supplement"), INMEETEIMAYEK("inmeeteimayek", "CR_In_Meetei_Mayek"), INHANGULSYLLABLES("inhangulsyllables", "CR_In_Hangul_Syllables"), INHANGULJAMOEXTENDEDB("inhanguljamoextendedb", "CR_In_Hangul_Jamo_Extended_B"), INHIGHSURROGATES("inhighsurrogates", "CR_In_High_Surrogates"), INHIGHPRIVATEUSESURROGATES("inhighprivateusesurrogates", "CR_In_High_Private_Use_Surrogates"), INLOWSURROGATES("inlowsurrogates", "CR_In_Low_Surrogates"), INPRIVATEUSEAREA("inprivateusearea", "CR_In_Private_Use_Area"), INCJKCOMPATIBILITYIDEOGRAPHS("incjkcompatibilityideographs", "CR_In_CJK_Compatibility_Ideographs"), INALPHABETICPRESENTATIONFORMS("inalphabeticpresentationforms", "CR_In_Alphabetic_Presentation_Forms"), INARABICPRESENTATIONFORMSA("inarabicpresentationformsa", "CR_In_Arabic_Presentation_Forms_A"), INVARIATIONSELECTORS("invariationselectors", "CR_In_Variation_Selectors"), INVERTICALFORMS("inverticalforms", "CR_In_Vertical_Forms"), INCOMBININGHALFMARKS("incombininghalfmarks", "CR_In_Combining_Half_Marks"), INCJKCOMPATIBILITYFORMS("incjkcompatibilityforms", "CR_In_CJK_Compatibility_Forms"), INSMALLFORMVARIANTS("insmallformvariants", "CR_In_Small_Form_Variants"), INARABICPRESENTATIONFORMSB("inarabicpresentationformsb", "CR_In_Arabic_Presentation_Forms_B"), INHALFWIDTHANDFULLWIDTHFORMS("inhalfwidthandfullwidthforms", "CR_In_Halfwidth_and_Fullwidth_Forms"), INSPECIALS("inspecials", "CR_In_Specials"), INLINEARBSYLLABARY("inlinearbsyllabary", "CR_In_Linear_B_Syllabary"), INLINEARBIDEOGRAMS("inlinearbideograms", "CR_In_Linear_B_Ideograms"), INAEGEANNUMBERS("inaegeannumbers", "CR_In_Aegean_Numbers"), INANCIENTGREEKNUMBERS("inancientgreeknumbers", "CR_In_Ancient_Greek_Numbers"), INANCIENTSYMBOLS("inancientsymbols", "CR_In_Ancient_Symbols"), INPHAISTOSDISC("inphaistosdisc", "CR_In_Phaistos_Disc"), INLYCIAN("inlycian", "CR_In_Lycian"), INCARIAN("incarian", "CR_In_Carian"), INCOPTICEPACTNUMBERS("incopticepactnumbers", "CR_In_Coptic_Epact_Numbers"), INOLDITALIC("inolditalic", "CR_In_Old_Italic"), INGOTHIC("ingothic", "CR_In_Gothic"), INOLDPERMIC("inoldpermic", "CR_In_Old_Permic"), INUGARITIC("inugaritic", "CR_In_Ugaritic"), INOLDPERSIAN("inoldpersian", "CR_In_Old_Persian"), DESERET("deseret", "CR_Deseret"), DSRT("dsrt", "CR_Deseret"), SHAVIAN("shavian", "CR_Shavian"), SHAW("shaw", "CR_Shavian"), INOSMANYA("inosmanya", "CR_In_Osmanya"), INOSAGE("inosage", "CR_In_Osage"), INELBASAN("inelbasan", "CR_In_Elbasan"), INCAUCASIANALBANIAN("incaucasianalbanian", "CR_In_Caucasian_Albanian"), INLINEARA("inlineara", "CR_In_Linear_A"), INCYPRIOTSYLLABARY("incypriotsyllabary", "CR_In_Cypriot_Syllabary"), INIMPERIALARAMAIC("inimperialaramaic", "CR_In_Imperial_Aramaic"), PALMYRENE("palmyrene", "CR_Palmyrene"), PALM("palm", "CR_Palmyrene"), INNABATAEAN("innabataean", "CR_In_Nabataean"), INHATRAN("inhatran", "CR_In_Hatran"), INPHOENICIAN("inphoenician", "CR_In_Phoenician"), INLYDIAN("inlydian", "CR_In_Lydian"), MEROITICHIEROGLYPHS("meroitichieroglyphs", "CR_Meroitic_Hieroglyphs"), MERO("mero", "CR_Meroitic_Hieroglyphs"), INMEROITICCURSIVE("inmeroiticcursive", "CR_In_Meroitic_Cursive"), INKHAROSHTHI("inkharoshthi", "CR_In_Kharoshthi"), OLDSOUTHARABIAN("oldsoutharabian", "CR_Old_South_Arabian"), SARB("sarb", "CR_Old_South_Arabian"), OLDNORTHARABIAN("oldnortharabian", "CR_Old_North_Arabian"), NARB("narb", "CR_Old_North_Arabian"), INMANICHAEAN("inmanichaean", "CR_In_Manichaean"), INAVESTAN("inavestan", "CR_In_Avestan"), ININSCRIPTIONALPARTHIAN("ininscriptionalparthian", "CR_In_Inscriptional_Parthian"), ININSCRIPTIONALPAHLAVI("ininscriptionalpahlavi", "CR_In_Inscriptional_Pahlavi"), INPSALTERPAHLAVI("inpsalterpahlavi", "CR_In_Psalter_Pahlavi"), INOLDTURKIC("inoldturkic", "CR_In_Old_Turkic"), INOLDHUNGARIAN("inoldhungarian", "CR_In_Old_Hungarian"), INHANIFIROHINGYA("inhanifirohingya", "CR_In_Hanifi_Rohingya"), INRUMINUMERALSYMBOLS("inruminumeralsymbols", "CR_In_Rumi_Numeral_Symbols"), INYEZIDI("inyezidi", "CR_In_Yezidi"), INOLDSOGDIAN("inoldsogdian", "CR_In_Old_Sogdian"), INSOGDIAN("insogdian", "CR_In_Sogdian"), INCHORASMIAN("inchorasmian", "CR_In_Chorasmian"), INELYMAIC("inelymaic", "CR_In_Elymaic"), INBRAHMI("inbrahmi", "CR_In_Brahmi"), INKAITHI("inkaithi", "CR_In_Kaithi"), INSORASOMPENG("insorasompeng", "CR_In_Sora_Sompeng"), INCHAKMA("inchakma", "CR_In_Chakma"), INMAHAJANI("inmahajani", "CR_In_Mahajani"), SHARADA("sharada", "CR_Sharada"), SHRD("shrd", "CR_Sharada"), INSINHALAARCHAICNUMBERS("insinhalaarchaicnumbers", "CR_In_Sinhala_Archaic_Numbers"), INKHOJKI("inkhojki", "CR_In_Khojki"), INMULTANI("inmultani", "CR_In_Multani"), INKHUDAWADI("inkhudawadi", "CR_In_Khudawadi"), INGRANTHA("ingrantha", "CR_In_Grantha"), INNEWA("innewa", "CR_In_Newa"), INTIRHUTA("intirhuta", "CR_In_Tirhuta"), INSIDDHAM("insiddham", "CR_In_Siddham"), INMODI("inmodi", "CR_In_Modi"), INMONGOLIANSUPPLEMENT("inmongoliansupplement", "CR_In_Mongolian_Supplement"), INTAKRI("intakri", "CR_In_Takri"), INAHOM("inahom", "CR_In_Ahom"), INDOGRA("indogra", "CR_In_Dogra"), INWARANGCITI("inwarangciti", "CR_In_Warang_Citi"), INDIVESAKURU("indivesakuru", "CR_In_Dives_Akuru"), INNANDINAGARI("innandinagari", "CR_In_Nandinagari"), INZANABAZARSQUARE("inzanabazarsquare", "CR_In_Zanabazar_Square"), INSOYOMBO("insoyombo", "CR_In_Soyombo"), INPAUCINHAU("inpaucinhau", "CR_In_Pau_Cin_Hau"), INBHAIKSUKI("inbhaiksuki", "CR_In_Bhaiksuki"), INMARCHEN("inmarchen", "CR_In_Marchen"), INMASARAMGONDI("inmasaramgondi", "CR_In_Masaram_Gondi"), INGUNJALAGONDI("ingunjalagondi", "CR_In_Gunjala_Gondi"), INMAKASAR("inmakasar", "CR_In_Makasar"), INLISUSUPPLEMENT("inlisusupplement", "CR_In_Lisu_Supplement"), INTAMILSUPPLEMENT("intamilsupplement", "CR_In_Tamil_Supplement"), INCUNEIFORM("incuneiform", "CR_In_Cuneiform"), INCUNEIFORMNUMBERSANDPUNCTUATION("incuneiformnumbersandpunctuation", "CR_In_Cuneiform_Numbers_and_Punctuation"), INEARLYDYNASTICCUNEIFORM("inearlydynasticcuneiform", "CR_In_Early_Dynastic_Cuneiform"), INEGYPTIANHIEROGLYPHS("inegyptianhieroglyphs", "CR_In_Egyptian_Hieroglyphs"), INEGYPTIANHIEROGLYPHFORMATCONTROLS("inegyptianhieroglyphformatcontrols", "CR_In_Egyptian_Hieroglyph_Format_Controls"), INANATOLIANHIEROGLYPHS("inanatolianhieroglyphs", "CR_In_Anatolian_Hieroglyphs"), INBAMUMSUPPLEMENT("inbamumsupplement", "CR_In_Bamum_Supplement"), INMRO("inmro", "CR_In_Mro"), INBASSAVAH("inbassavah", "CR_In_Bassa_Vah"), INPAHAWHHMONG("inpahawhhmong", "CR_In_Pahawh_Hmong"), INMEDEFAIDRIN("inmedefaidrin", "CR_In_Medefaidrin"), INMIAO("inmiao", "CR_In_Miao"), INIDEOGRAPHICSYMBOLSANDPUNCTUATION("inideographicsymbolsandpunctuation", "CR_In_Ideographic_Symbols_and_Punctuation"), INTANGUT("intangut", "CR_In_Tangut"), INTANGUTCOMPONENTS("intangutcomponents", "CR_In_Tangut_Components"), INKHITANSMALLSCRIPT("inkhitansmallscript", "CR_In_Khitan_Small_Script"), INTANGUTSUPPLEMENT("intangutsupplement", "CR_In_Tangut_Supplement"), INKANASUPPLEMENT("inkanasupplement", "CR_In_Kana_Supplement"), INKANAEXTENDEDA("inkanaextendeda", "CR_In_Kana_Extended_A"), INSMALLKANAEXTENSION("insmallkanaextension", "CR_In_Small_Kana_Extension"), INNUSHU("innushu", "CR_In_Nushu"), INDUPLOYAN("induployan", "CR_In_Duployan"), INSHORTHANDFORMATCONTROLS("inshorthandformatcontrols", "CR_In_Shorthand_Format_Controls"), INBYZANTINEMUSICALSYMBOLS("inbyzantinemusicalsymbols", "CR_In_Byzantine_Musical_Symbols"), INMUSICALSYMBOLS("inmusicalsymbols", "CR_In_Musical_Symbols"), INANCIENTGREEKMUSICALNOTATION("inancientgreekmusicalnotation", "CR_In_Ancient_Greek_Musical_Notation"), INMAYANNUMERALS("inmayannumerals", "CR_In_Mayan_Numerals"), INTAIXUANJINGSYMBOLS("intaixuanjingsymbols", "CR_In_Tai_Xuan_Jing_Symbols"), INCOUNTINGRODNUMERALS("incountingrodnumerals", "CR_In_Counting_Rod_Numerals"), INMATHEMATICALALPHANUMERICSYMBOLS("inmathematicalalphanumericsymbols", "CR_In_Mathematical_Alphanumeric_Symbols"), INSUTTONSIGNWRITING("insuttonsignwriting", "CR_In_Sutton_SignWriting"), INGLAGOLITICSUPPLEMENT("inglagoliticsupplement", "CR_In_Glagolitic_Supplement"), INNYIAKENGPUACHUEHMONG("innyiakengpuachuehmong", "CR_In_Nyiakeng_Puachue_Hmong"), INWANCHO("inwancho", "CR_In_Wancho"), INMENDEKIKAKUI("inmendekikakui", "CR_In_Mende_Kikakui"), INADLAM("inadlam", "CR_In_Adlam"), ININDICSIYAQNUMBERS("inindicsiyaqnumbers", "CR_In_Indic_Siyaq_Numbers"), INOTTOMANSIYAQNUMBERS("inottomansiyaqnumbers", "CR_In_Ottoman_Siyaq_Numbers"), INARABICMATHEMATICALALPHABETICSYMBOLS("inarabicmathematicalalphabeticsymbols", "CR_In_Arabic_Mathematical_Alphabetic_Symbols"), INMAHJONGTILES("inmahjongtiles", "CR_In_Mahjong_Tiles"), INDOMINOTILES("indominotiles", "CR_In_Domino_Tiles"), INPLAYINGCARDS("inplayingcards", "CR_In_Playing_Cards"), INENCLOSEDALPHANUMERICSUPPLEMENT("inenclosedalphanumericsupplement", "CR_In_Enclosed_Alphanumeric_Supplement"), INENCLOSEDIDEOGRAPHICSUPPLEMENT("inenclosedideographicsupplement", "CR_In_Enclosed_Ideographic_Supplement"), INMISCELLANEOUSSYMBOLSANDPICTOGRAPHS("inmiscellaneoussymbolsandpictographs", "CR_In_Miscellaneous_Symbols_and_Pictographs"), INEMOTICONS("inemoticons", "CR_In_Emoticons"), INORNAMENTALDINGBATS("inornamentaldingbats", "CR_In_Ornamental_Dingbats"), INTRANSPORTANDMAPSYMBOLS("intransportandmapsymbols", "CR_In_Transport_and_Map_Symbols"), INALCHEMICALSYMBOLS("inalchemicalsymbols", "CR_In_Alchemical_Symbols"), INGEOMETRICSHAPESEXTENDED("ingeometricshapesextended", "CR_In_Geometric_Shapes_Extended"), INSUPPLEMENTALARROWSC("insupplementalarrowsc", "CR_In_Supplemental_Arrows_C"), INSUPPLEMENTALSYMBOLSANDPICTOGRAPHS("insupplementalsymbolsandpictographs", "CR_In_Supplemental_Symbols_and_Pictographs"), INCHESSSYMBOLS("inchesssymbols", "CR_In_Chess_Symbols"), INSYMBOLSANDPICTOGRAPHSEXTENDEDA("insymbolsandpictographsextendeda", "CR_In_Symbols_and_Pictographs_Extended_A"), INSYMBOLSFORLEGACYCOMPUTING("insymbolsforlegacycomputing", "CR_In_Symbols_for_Legacy_Computing"), INCJKUNIFIEDIDEOGRAPHSEXTENSIONB("incjkunifiedideographsextensionb", "CR_In_CJK_Unified_Ideographs_Extension_B"), INCJKUNIFIEDIDEOGRAPHSEXTENSIONC("incjkunifiedideographsextensionc", "CR_In_CJK_Unified_Ideographs_Extension_C"), INCJKUNIFIEDIDEOGRAPHSEXTENSIOND("incjkunifiedideographsextensiond", "CR_In_CJK_Unified_Ideographs_Extension_D"), INCJKUNIFIEDIDEOGRAPHSEXTENSIONE("incjkunifiedideographsextensione", "CR_In_CJK_Unified_Ideographs_Extension_E"), INCJKUNIFIEDIDEOGRAPHSEXTENSIONF("incjkunifiedideographsextensionf", "CR_In_CJK_Unified_Ideographs_Extension_F"), INCJKCOMPATIBILITYIDEOGRAPHSSUPPLEMENT("incjkcompatibilityideographssupplement", "CR_In_CJK_Compatibility_Ideographs_Supplement"), INCJKUNIFIEDIDEOGRAPHSEXTENSIONG("incjkunifiedideographsextensiong", "CR_In_CJK_Unified_Ideographs_Extension_G"), INTAGS("intags", "CR_In_Tags"), INVARIATIONSELECTORSSUPPLEMENT("invariationselectorssupplement", "CR_In_Variation_Selectors_Supplement"), INSUPPLEMENTARYPRIVATEUSEAREAA("insupplementaryprivateuseareaa", "CR_In_Supplementary_Private_Use_Area_A"), INSUPPLEMENTARYPRIVATEUSEAREAB("insupplementaryprivateuseareab", "CR_In_Supplementary_Private_Use_Area_B"), INNOBLOCK("innoblock", "CR_In_No_Block"); private final String table; final byte[]name; private int[]range; private UnicodeCodeRange(String name, String table) { this.table = table; this.name = name.getBytes(); } int[]getRange() { if (range == null) range = ArrayReader.readIntArray(table); return range; } public boolean contains(int code) { return CodeRange.isInCodeRange(range, code); } public int getCType() { return ordinal(); } static final UnicodeCodeRange[]CodeRangeTable = UnicodeCodeRange.values(); static final int MAX_WORD_LENGTH = 44; } jcodings-1.0.58/src/org/jcodings/unicode/UnicodeEncoding.java000066400000000000000000000752221433325321700241240ustar00rootroot00000000000000/* * Permission is hereby granted, free of charge, to any person obtaining a copy of * this software and associated documentation files (the "Software"), to deal in * the Software without restriction, including without limitation the rights to * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies * of the Software, and to permit persons to whom the Software is furnished to do * so, subject to the following conditions: * * The above copyright notice and this permission notice shall be included in all * copies or substantial portions of the Software. * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE * SOFTWARE. */ package org.jcodings.unicode; import java.io.DataInputStream; import java.io.IOException; import org.jcodings.ApplyAllCaseFoldFunction; import org.jcodings.CaseFoldCodeItem; import org.jcodings.CodeRange; import org.jcodings.Config; import org.jcodings.IntHolder; import org.jcodings.MultiByteEncoding; import org.jcodings.constants.CharacterType; import org.jcodings.exception.CharacterPropertyException; import org.jcodings.exception.EncodingError; import org.jcodings.exception.ErrorMessages; import org.jcodings.util.ArrayReader; import org.jcodings.util.CaseInsensitiveBytesHash; import org.jcodings.util.IntArrayHash; import org.jcodings.util.IntHash; public abstract class UnicodeEncoding extends MultiByteEncoding { private static final int PROPERTY_NAME_MAX_SIZE = UnicodeCodeRange.MAX_WORD_LENGTH + 1; static final int I_WITH_DOT_ABOVE = 0x0130; static final int DOTLESS_i = 0x0131; static final int DOT_ABOVE = 0x0307; protected UnicodeEncoding(String name, int minLength, int maxLength, int[]EncLen, int[][]Trans) { // ASCII type tables for all Unicode encodings super(name, minLength, maxLength, EncLen, Trans, UNICODE_ISO_8859_1_CTypeTable); isUnicode = true; } protected UnicodeEncoding(String name, int minLength, int maxLength, int[]EncLen) { this(name, minLength, maxLength, EncLen, null); } @Override public String getCharsetName() { return new String(getName()); } // onigenc_unicode_is_code_ctype @Override public boolean isCodeCType(int code, int ctype) { if (Config.USE_UNICODE_PROPERTIES) { if (ctype <= CharacterType.MAX_STD_CTYPE && code < 256) return isCodeCTypeInternal(code, ctype); } else { if (code < 256) return isCodeCTypeInternal(code, ctype); } if (ctype > UnicodeCodeRange.CodeRangeTable.length) throw new InternalError(ErrorMessages.ERR_TYPE_BUG); return CodeRange.isInCodeRange(UnicodeCodeRange.CodeRangeTable[ctype].getRange(), code); } public static boolean isInCodeRange(UnicodeCodeRange range, int code) { return CodeRange.isInCodeRange(range.getRange(), code); } // onigenc_unicode_ctype_code_range protected final int[]ctypeCodeRange(int ctype) { if (ctype >= UnicodeCodeRange.CodeRangeTable.length) throw new InternalError(ErrorMessages.ERR_TYPE_BUG); return UnicodeCodeRange.CodeRangeTable[ctype].getRange(); } // onigenc_unicode_property_name_to_ctype @Override public int propertyNameToCType(byte[]name, int p, int end) { byte[]buf = new byte[PROPERTY_NAME_MAX_SIZE]; int len = 0; for(int p_ = p; p_ < end; p_+= length(name, p_, end)) { int code = mbcToCode(name, p_, end); if (code == ' ' || code == '-' || code == '_') continue; if (code >= 0x80) throw new CharacterPropertyException(EncodingError.ERR_INVALID_CHAR_PROPERTY_NAME, name, p, end); buf[len++] = (byte)code; if (len >= PROPERTY_NAME_MAX_SIZE) throw new CharacterPropertyException(EncodingError.ERR_INVALID_CHAR_PROPERTY_NAME, name, p, end); } Integer ctype = CTypeName.Values.get(buf, 0, len); if (ctype == null) throw new CharacterPropertyException(EncodingError.ERR_INVALID_CHAR_PROPERTY_NAME, name, p, end); return ctype; } // onigenc_unicode_mbc_case_fold @Override public int mbcCaseFold(int flag, byte[]bytes, IntHolder pp, int end, byte[]fold) { int p = pp.value; int foldP = 0; int code = mbcToCode(bytes, p, end); int len = length(bytes, p, end); pp.value += len; if (Config.USE_UNICODE_CASE_FOLD_TURKISH_AZERI) { if ((flag & Config.CASE_FOLD_TURKISH_AZERI) != 0) { if (code == 'I') { return codeToMbc(DOTLESS_i, fold, foldP); } else if (code == I_WITH_DOT_ABOVE) { return codeToMbc('i', fold, foldP); } } } CodeList to = CaseFold.Values.get(code); if (to != null) { if (to.codes.length == 1) { return codeToMbc(to.codes[0], fold, foldP); } else { int rlen = 0; for (int i=0; i= 'a' && code <= 'z') { if ((flags & Config.CASE_UPCASE) != 0) { flags |= Config.CASE_MODIFIED; if ((flags & Config.CASE_FOLD_TURKISH_AZERI) != 0 && code == 'i') code = I_WITH_DOT_ABOVE; else code += 'A' - 'a'; } } else if (code >= 'A' && code <= 'Z') { if ((flags & (Config.CASE_DOWNCASE | Config.CASE_FOLD)) != 0) { flags |= Config.CASE_MODIFIED; if ((flags & Config.CASE_FOLD_TURKISH_AZERI) != 0 && code == 'I') code = DOTLESS_i; else code += 'a' - 'A'; } } } else if ((flags & Config.CASE_ASCII_ONLY) == 0 && code >= 0x00B5) { CodeList folded; if (code == I_WITH_DOT_ABOVE) { if ((flags & (Config.CASE_DOWNCASE | Config.CASE_FOLD)) != 0) { flags |= Config.CASE_MODIFIED; code = 'i'; if ((flags & Config.CASE_FOLD_TURKISH_AZERI) == 0) { toP += codeToMbc(code, to, toP); code = DOT_ABOVE; } } } else if (code == DOTLESS_i) { if ((flags & Config.CASE_UPCASE) != 0) { flags |= Config.CASE_MODIFIED; code = 'I'; } } else if ((folded = CaseFold.Values.get(code)) != null) { /* data about character found in CaseFold_Table */ if ((flags & Config.CASE_TITLECASE) != 0 && code >= 0x1C90 && code <= 0x1CBF) { /* Georgian MTAVRULI */ flags |= Config.CASE_MODIFIED; code += 0x10D0 - 0x1C90; } else if ((flags & Config.CASE_TITLECASE) != 0 && (folded.flags & Config.CASE_IS_TITLECASE) != 0) { /* Titlecase needed, but already Titlecase */ /* already Titlecase, no changes needed */ } else if ((flags & folded.flags) != 0) { final int[]codes; final int start; final int finish; boolean specialCopy = false; flags |= Config.CASE_MODIFIED; if ((flags & folded.flags & Config.CASE_SPECIALS) != 0) { codes = CaseMappingSpecials.Values; int specialStart = (folded.flags & Config.SpecialIndexMask) >>> Config.SpecialIndexShift; if ((folded.flags & Config.CASE_IS_TITLECASE) != 0) { if ((flags & (Config.CASE_UPCASE | Config.CASE_DOWNCASE)) == (Config.CASE_UPCASE | Config.CASE_DOWNCASE)) specialCopy = true; else specialStart += extractLength(codes[specialStart]); } if (!specialCopy && (folded.flags & Config.CASE_TITLECASE) != 0) { if ((flags & Config.CASE_TITLECASE) != 0) specialCopy = true; else specialStart += extractLength(codes[specialStart]); } if (!specialCopy && (folded.flags & Config.CASE_DOWN_SPECIAL) != 0) { if ((flags & Config.CASE_DOWN_SPECIAL) == 0) specialStart += extractLength(codes[specialStart]); } start = specialStart; finish = start + extractLength(codes[specialStart]); code = extractCode(codes[specialStart]); } else { codes = folded.codes; start = 0; finish = folded.codes.length; code = codes[0]; } for (int i = start + 1; i < finish; i++) { toP += codeToMbc(code, to, toP); code = codes[i]; } } } else if ((folded = CaseUnfold11.Values.get(code)) != null) { /* data about character found in CaseUnfold_11_Table */ if ((flags & Config.CASE_TITLECASE) != 0 && (folded.flags & Config.CASE_IS_TITLECASE) != 0) { /* Titlecase needed, but already Titlecase */ /* already Titlecase, no changes needed */ } else if ((flags & folded.flags) != 0) { /* needs and data availability match */ flags |= Config.CASE_MODIFIED; code = folded.codes[(flags & folded.flags & Config.CASE_TITLECASE) != 0 ? 1 : 0]; } } } toP += codeToMbc(code, to, toP); if ((flags & Config.CASE_TITLECASE) != 0) { flags ^= (Config.CASE_UPCASE | Config.CASE_DOWNCASE | Config.CASE_TITLECASE | Config.CASE_UP_SPECIAL | Config.CASE_DOWN_SPECIAL); } } // while flagP.value = flags; return toP - toStart; } static final short UNICODE_ISO_8859_1_CTypeTable[] = { 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x420c, 0x4209, 0x4208, 0x4208, 0x4208, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4284, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x78b0, 0x78b0, 0x78b0, 0x78b0, 0x78b0, 0x78b0, 0x78b0, 0x78b0, 0x78b0, 0x78b0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x7ca2, 0x7ca2, 0x7ca2, 0x7ca2, 0x7ca2, 0x7ca2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x51a0, 0x41a0, 0x78e2, 0x78e2, 0x78e2, 0x78e2, 0x78e2, 0x78e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x4008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0288, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0284, 0x01a0, 0x00a0, 0x00a0, 0x00a0, 0x00a0, 0x00a0, 0x00a0, 0x00a0, 0x00a0, 0x30e2, 0x01a0, 0x00a0, 0x00a8, 0x00a0, 0x00a0, 0x00a0, 0x00a0, 0x10a0, 0x10a0, 0x00a0, 0x30e2, 0x00a0, 0x01a0, 0x00a0, 0x10a0, 0x30e2, 0x01a0, 0x10a0, 0x10a0, 0x10a0, 0x01a0, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x00a0, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x00a0, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2 }; static class CTypeName { private static final CaseInsensitiveBytesHash Values = initializeCTypeNameTable(); private static CaseInsensitiveBytesHash initializeCTypeNameTable() { CaseInsensitiveBytesHash table = new CaseInsensitiveBytesHash(); for (int i = 0; i < UnicodeCodeRange.CodeRangeTable.length; i++) { table.putDirect(UnicodeCodeRange.CodeRangeTable[i].name, i); } return table; } } private static class CodeList { CodeList(DataInputStream dis) throws IOException { int packed = dis.readInt(); flags = packed & ~Config.CodePointMask; int length = packed & Config.CodePointMask; codes = new int[length]; for (int j = 0; j < length; j++) { codes[j] = dis.readInt(); } } final int[]codes; final int flags; } private static class CaseFold { static IntHash read(String table) { try { DataInputStream dis = ArrayReader.openStream(table); int size = dis.readInt(); IntHash hash = new IntHash(size); for (int i = 0; i < size; i++) { hash.putDirect(dis.readInt(), new CodeList(dis)); } dis.close(); return hash; } catch (IOException iot) { throw new RuntimeException(iot); } } static final IntHashValues = read("CaseFold"); } private static class CaseUnfold11 { private static final int From[]; private static final CodeList To[]; private static final int Locale_From[]; private static final CodeList Locale_To[]; static Object[] read(String table) { try { DataInputStream dis = ArrayReader.openStream(table); int size = dis.readInt(); int[]from = new int[size]; CodeList[]to = new CodeList[size]; for (int i = 0; i < size; i++) { from[i] = dis.readInt(); to[i] = new CodeList(dis); } dis.close(); return new Object[] {from, to}; } catch (IOException iot) { throw new RuntimeException(iot); } } static { Object[]unfold; unfold = read("CaseUnfold_11"); From = (int[])unfold[0]; To = (CodeList[])unfold[1]; unfold = read("CaseUnfold_11_Locale"); Locale_From = (int[])unfold[0]; Locale_To = (CodeList[])unfold[1]; } static IntHash initializeUnfold1Hash() { IntHash hash = new IntHash(From.length + Locale_From.length); for (int i = 0; i < From.length; i++) { hash.putDirect(From[i], To[i]); } for (int i = 0; i < Locale_From.length; i++) { hash.putDirect(Locale_From[i], Locale_To[i]); } return hash; } static final IntHash Values = initializeUnfold1Hash(); } private static Object[] readFoldN(int fromSize, String table) { try { DataInputStream dis = ArrayReader.openStream(table); int size = dis.readInt(); int[][]from = new int[size][]; CodeList[]to = new CodeList[size]; for (int i = 0; i < size; i++) { from[i] = new int[fromSize]; for (int j = 0; j < fromSize; j++) { from[i][j] = dis.readInt(); } to[i] = new CodeList(dis); } dis.close(); return new Object[] {from, to}; } catch (IOException iot) { throw new RuntimeException(iot); } } private static class CaseUnfold12 { private static final int From[][]; private static final CodeList To[]; private static final int Locale_From[][]; private static final CodeList Locale_To[]; static { Object[]unfold; unfold = readFoldN(2, "CaseUnfold_12"); From = (int[][])unfold[0]; To = (CodeList[])unfold[1]; unfold = readFoldN(2, "CaseUnfold_12_Locale"); Locale_From = (int[][])unfold[0]; Locale_To = (CodeList[])unfold[1]; } private static IntArrayHash initializeUnfold2Hash() { IntArrayHash unfold2 = new IntArrayHash(From.length + Locale_From.length); for (int i = 0; i < From.length; i++) { unfold2.putDirect(From[i], To[i]); } for (int i = 0; i < Locale_From.length; i++) { unfold2.putDirect(Locale_From[i], Locale_To[i]); } return unfold2; } static final IntArrayHash Values = initializeUnfold2Hash(); } private static class CaseUnfold13 { private static final int From[][]; private static final CodeList To[]; static { Object[]unfold; unfold = readFoldN(3, "CaseUnfold_13"); From = (int[][])unfold[0]; To = (CodeList[])unfold[1]; } private static IntArrayHash initializeUnfold3Hash() { IntArrayHash unfold3 = new IntArrayHash(From.length); for (int i = 0; i < From.length; i++) { unfold3.putDirect(From[i], To[i]); } return unfold3; } static final IntArrayHash Values = initializeUnfold3Hash(); } private static int extractLength(int packed) { return packed >>> Config.SpecialsLengthOffset; } private static int extractCode(int packed) { return packed & ((1 << Config.SpecialsLengthOffset) - 1); } private static class CaseMappingSpecials { static final int[] Values = ArrayReader.readIntArray("CaseMappingSpecials"); } } jcodings-1.0.58/src/org/jcodings/util/000077500000000000000000000000001433325321700175435ustar00rootroot00000000000000jcodings-1.0.58/src/org/jcodings/util/ArrayReader.java000066400000000000000000000072121433325321700226110ustar00rootroot00000000000000/* * Permission is hereby granted, free of charge, to any person obtaining a copy of * this software and associated documentation files (the "Software"), to deal in * the Software without restriction, including without limitation the rights to * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies * of the Software, and to permit persons to whom the Software is furnished to do * so, subject to the following conditions: * * The above copyright notice and this permission notice shall be included in all * copies or substantial portions of the Software. * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE * SOFTWARE. */ package org.jcodings.util; import java.io.BufferedInputStream; import java.io.DataInputStream; import java.io.IOException; import java.io.InputStream; import org.jcodings.exception.InternalException; public class ArrayReader { public static DataInputStream openStream(String name) { String entry = "/tables/" + name + ".bin"; InputStream is = ArrayReader.class.getResourceAsStream(entry); if (is == null) throw new InternalException("entry: " + entry + " not found"); return new DataInputStream(new BufferedInputStream(is)); } public static byte[] readByteArray(String name) { DataInputStream dis = openStream(name); try { int size = dis.readInt(); byte[] bytes = new byte[size]; for (int i = 0; i < size; i++) { bytes[i] = dis.readByte(); } checkAvailable(dis, name); dis.close(); return bytes; } catch (IOException ioe) { decorate(ioe, name); return null; } } public static int[] readIntArray(String name) { DataInputStream dis = openStream(name); try { int size = dis.readInt(); int[] ints = new int[size]; for (int i = 0; i < size; i++) { ints[i] = dis.readInt(); } checkAvailable(dis, name); dis.close(); return ints; } catch (IOException ioe) { decorate(ioe, name); return null; } } public static int[][] readNestedIntArray(String name) { DataInputStream dis = openStream(name); try { int size = dis.readInt(); int[][] ints = new int[size][]; for (int i = 0; i < size; i++) { int iSize = dis.readInt(); int[] iints = new int[iSize]; ints[i] = iints; for (int k = 0; k < iSize; k++) { iints[k] = dis.readInt(); } } checkAvailable(dis, name); dis.close(); return ints; } catch (IOException ioe) { decorate(ioe, name); return null; } } static void checkAvailable(DataInputStream dis, String name) throws IOException { if (dis.available() != 0) throw new InternalException("length mismatch for table: " + name + " (" + dis.available() + " left)"); } static void decorate(IOException ioe, String name) { throw new InternalException("problem reading table: " + name + ": " + ioe); } } jcodings-1.0.58/src/org/jcodings/util/BytesHash.java000066400000000000000000000115641433325321700223070ustar00rootroot00000000000000/* * Permission is hereby granted, free of charge, to any person obtaining a copy of * this software and associated documentation files (the "Software"), to deal in * the Software without restriction, including without limitation the rights to * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies * of the Software, and to permit persons to whom the Software is furnished to do * so, subject to the following conditions: * * The above copyright notice and this permission notice shall be included in all * copies or substantial portions of the Software. * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE * SOFTWARE. */ package org.jcodings.util; public final class BytesHash extends Hash{ public BytesHash() { super(); } public BytesHash(int size) { super(size); } protected void init() { head = new BytesHashEntry(); } public final static class BytesHashEntry extends HashEntry { public final byte[]bytes; public final int p; public final int end; public BytesHashEntry(int hash, HashEntry next, V value, byte[]bytes, int p, int end, HashEntry head) { super(hash, next, value, head); this.bytes = bytes; this.p = p; this.end = end; } public BytesHashEntry() { super(); bytes = null; p = end = 0; } public boolean equals(byte[]bytes, int p, int end) { if (this.end - this.p != end - p) return false; if (this.bytes == bytes) return true; int q = this.p; while (q < this.end) if (this.bytes[q++] != bytes[p++]) return false; return true; } } public static int hashCode(byte[]bytes, int p, int end) { int key = 0; while (p < end) key = ((key << 16) + (key << 6) - key) + (int)(bytes[p++]); // & 0xff ? we have to match jruby string hash key = key + (key >> 5); return key; } public V put(byte[]bytes, V value) { return put(bytes, 0, bytes.length, value); } public V put(byte[]bytes, int p, int end, V value) { checkResize(); int hash = hashValue(hashCode(bytes, p, end)); int i = bucketIndex(hash, table.length); for (BytesHashEntry entry = (BytesHashEntry)table[i]; entry != null; entry = (BytesHashEntry)entry.next) { if (entry.hash == hash && entry.equals(bytes, p, end)) { entry.value = value; return value; } } table[i] = new BytesHashEntry(hash, table[i], value, bytes, p, end, head); size++; return null; } public void putDirect(byte[]bytes, V value) { putDirect(bytes, 0, bytes.length, value); } public void putDirect(byte[]bytes, int p, int end, V value) { checkResize(); final int hash = hashValue(hashCode(bytes, p, end)); final int i = bucketIndex(hash, table.length); table[i] = new BytesHashEntry(hash, table[i], value, bytes, p, end, head); size++; } public V get(byte[]bytes) { return get(bytes, 0, bytes.length); } public V get(byte[]bytes, int p, int end) { int hash = hashValue(hashCode(bytes, p, end)); for (BytesHashEntry entry = (BytesHashEntry)table[bucketIndex(hash, table.length)]; entry != null; entry = (BytesHashEntry)entry.next) { if (entry.hash == hash && entry.equals(bytes, p, end)) return entry.value; } return null; } public V delete(byte[]bytes) { return delete(bytes, 0, bytes.length); } public V delete(byte[]bytes, int p, int end) { int hash = hashValue(hashCode(bytes, p, end)); int i = bucketIndex(hash, table.length); BytesHashEntry entry = (BytesHashEntry)table[i]; if (entry == null) return null; if (entry.hash == hash && entry.equals(bytes, p, end)) { table[i] = entry.next; size--; entry.remove(); return entry.value; } for (; entry.next != null; entry = (BytesHashEntry)entry.next) { HashEntry tmp = entry.next; if (tmp.hash == hash && entry.equals(bytes, p, end)) { entry.next = entry.next.next; size--; tmp.remove(); return tmp.value; } } return null; } } jcodings-1.0.58/src/org/jcodings/util/CaseInsensitiveBytesHash.java000066400000000000000000000144051433325321700253210ustar00rootroot00000000000000/* * Permission is hereby granted, free of charge, to any person obtaining a copy of * this software and associated documentation files (the "Software"), to deal in * the Software without restriction, including without limitation the rights to * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies * of the Software, and to permit persons to whom the Software is furnished to do * so, subject to the following conditions: * * The above copyright notice and this permission notice shall be included in all * copies or substantial portions of the Software. * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE * SOFTWARE. */ package org.jcodings.util; import static org.jcodings.ascii.AsciiTables.ToLowerCaseTable; public final class CaseInsensitiveBytesHash extends Hash{ public CaseInsensitiveBytesHash() { super(); } public CaseInsensitiveBytesHash(int size) { super(size); } protected void init() { head = new CaseInsensitiveBytesHashEntry(); } public final static class CaseInsensitiveBytesHashEntry extends HashEntry { public final byte[]bytes; public final int p; public final int end; public CaseInsensitiveBytesHashEntry(int hash, HashEntry next, V value, byte[]bytes, int p, int end, HashEntry head) { super(hash, next, value, head); this.bytes = bytes; this.p = p; this.end = end; } public CaseInsensitiveBytesHashEntry() { super(); bytes = null; p = end = 0; } public boolean equals(byte[]bytes, int p, int end) { return caseInsensitiveEquals(this.bytes, this.p, this.end, bytes, p, end); } } public static int hashCode(byte[]bytes, int p, int end) { int key = 0; while (p < end) key = ((key << 16) + (key << 6) - key) + (int)(ToLowerCaseTable[bytes[p++] & 0xff]); // & 0xff ? we have to match jruby string hash key = key + (key >> 5); return key; } public V put(byte[]bytes, V value) { return put(bytes, 0, bytes.length, value); } public V put(byte[]bytes, int p, int end, V value) { checkResize(); int hash = hashValue(hashCode(bytes, p, end)); int i = bucketIndex(hash, table.length); for (CaseInsensitiveBytesHashEntry entry = (CaseInsensitiveBytesHashEntry)table[i]; entry != null; entry = (CaseInsensitiveBytesHashEntry)entry.next) { if (entry.hash == hash && entry.equals(bytes, p, end)) { entry.value = value; return value; } } table[i] = new CaseInsensitiveBytesHashEntry(hash, table[i], value, bytes, p, end, head); size++; return null; } public void putDirect(byte[]bytes, V value) { putDirect(bytes, 0, bytes.length, value); } public void putDirect(byte[]bytes, int p, int end, V value) { checkResize(); final int hash = hashValue(hashCode(bytes, p, end)); final int i = bucketIndex(hash, table.length); table[i] = new CaseInsensitiveBytesHashEntry(hash, table[i], value, bytes, p, end, head); size++; } public V get(byte[]bytes) { return get(bytes, 0, bytes.length); } public V get(byte[]bytes, int p, int end) { int hash = hashValue(hashCode(bytes, p, end)); for (CaseInsensitiveBytesHashEntry entry = (CaseInsensitiveBytesHashEntry)table[bucketIndex(hash, table.length)]; entry != null; entry = (CaseInsensitiveBytesHashEntry)entry.next) { if (entry.hash == hash && entry.equals(bytes, p, end)) return entry.value; } return null; } public V delete(byte[]bytes) { return delete(bytes, 0, bytes.length); } public V delete(byte[]bytes, int p, int end) { int hash = hashValue(hashCode(bytes, p, end)); int i = bucketIndex(hash, table.length); CaseInsensitiveBytesHashEntry entry = (CaseInsensitiveBytesHashEntry)table[i]; if (entry == null) return null; if (entry.hash == hash && entry.equals(bytes, p, end)) { table[i] = entry.next; size--; entry.remove(); return entry.value; } for (; entry.next != null; entry = (CaseInsensitiveBytesHashEntry)entry.next) { HashEntry tmp = entry.next; if (tmp.hash == hash && entry.equals(bytes, p, end)) { entry.next = entry.next.next; size--; tmp.remove(); return tmp.value; } } return null; } @Override public CaseInsensitiveBytesHashEntryIterator entryIterator() { return new CaseInsensitiveBytesHashEntryIterator(); } public class CaseInsensitiveBytesHashEntryIterator extends HashEntryIterator { @Override public CaseInsensitiveBytesHashEntry next() { return (CaseInsensitiveBytesHashEntry)super.next(); } // @Override // public Iterator iterator() { // return (CaseInsensitiveBytesHashEntryIterator)this; // } // @Override // public Iterator> iterator() { // return this; // } } public static boolean caseInsensitiveEquals(byte[]bytes, int p, int end, byte[]oBytes, int oP, int oEnd) { if (oEnd - oP != end - p) return false; if (oBytes == bytes) return true; int q = oP; while (q < oEnd) if (ToLowerCaseTable[oBytes[q++] & 0xff] != ToLowerCaseTable[bytes[p++] & 0xff]) return false; return true; } public static boolean caseInsensitiveEquals(byte[]bytes, byte[] oBytes) { return caseInsensitiveEquals(bytes, 0, bytes.length, oBytes, 0, oBytes.length); } } jcodings-1.0.58/src/org/jcodings/util/Hash.java000066400000000000000000000132161433325321700212740ustar00rootroot00000000000000/* * Permission is hereby granted, free of charge, to any person obtaining a copy of * this software and associated documentation files (the "Software"), to deal in * the Software without restriction, including without limitation the rights to * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies * of the Software, and to permit persons to whom the Software is furnished to do * so, subject to the following conditions: * * The above copyright notice and this permission notice shall be included in all * copies or substantial portions of the Software. * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE * SOFTWARE. */ package org.jcodings.util; import java.util.Iterator; import org.jcodings.exception.InternalException; public abstract class Hash implements Iterable { protected HashEntry[]table; protected int size; private static final int PRIMES[] = { 8 + 3, 16 + 3, 32 + 5, 64 + 3, 128 + 3, 256 + 27, 512 + 9, 1024 + 9, 2048 + 5, 4096 + 3, 8192 + 27, 16384 + 43, 32768 + 3, 65536 + 45, 131072 + 29, 262144 + 3, 524288 + 21, 1048576 + 7, 2097152 + 17, 4194304 + 15, 8388608 + 9, 16777216 + 43, 33554432 + 35, 67108864 + 15, 134217728 + 29, 268435456 + 3, 536870912 + 11, 1073741824 + 85, 0 }; private static final int INITIAL_CAPACITY = PRIMES[0]; private static final int MAXIMUM_CAPACITY = 1 << 30; public Hash() { table = new HashEntry[INITIAL_CAPACITY]; init(); } protected HashEntry head; protected abstract void init(); public Hash(int size) { for (int i=0, n=MIN_CAPA; i size) { table = new HashEntry[PRIMES[i]]; init(); return; } } throw new InternalException("run out of polynomials"); } public final int size() { return size; } public static class HashEntry { final int hash; protected HashEntry next, before, after; public V value; HashEntry(int hash, HashEntry next, V value, HashEntry head) { this.hash = hash; this.next = next; this.value = value; after = head; before = head.before; before.after = this; after.before = this; } void remove() { before.after = after; after.before = before; } HashEntry() { hash = 0; before = after = this; } public int getHash() { return hash; } } private static final int MIN_CAPA = 8; // private static final int DENSITY = 5; protected final void checkResize() { if (size == table.length) { // size / table.length > DENSITY int forSize = table.length + 1; // size + 1; for (int i=0, newCapacity = MIN_CAPA; i < PRIMES.length; i++, newCapacity <<= 1) { if (newCapacity > forSize) { resize(PRIMES[i]); return; } } return; } } protected final void resize(int newCapacity) { final HashEntry[] oldTable = table; final HashEntry[] newTable = new HashEntry[newCapacity]; for (int j = 0; j < oldTable.length; j++) { HashEntry entry = oldTable[j]; oldTable[j] = null; while (entry != null) { HashEntry next = entry.next; int i = bucketIndex(entry.hash, newCapacity); entry.next = newTable[i]; newTable[i] = entry; entry = next; } } table = newTable; } protected static int bucketIndex(final int h, final int length) { return (h % length); } private static final int HASH_SIGN_BIT_MASK = ~(1 << 31); protected static int hashValue(int h) { return h & HASH_SIGN_BIT_MASK; } public Iterator iterator() { return new HashIterator(); } public class HashIterator implements Iterator { HashEntry next; public HashIterator() { next = head.after; } public boolean hasNext() { return next != head; } public V next() { HashEntry e = next; next = e.after; return e.value; } public void remove() { throw new InternalException("not supported operation exception"); } } public HashEntryIterator entryIterator() { return new HashEntryIterator(); } public class HashEntryIterator implements Iterator>, Iterable> { HashEntry next; public HashEntryIterator() { next = head.after; } public Iterator> iterator() { return this; } public boolean hasNext() { return next != head; } public HashEntry next() { HashEntry e = next; next = e.after; return e; } public void remove() { throw new InternalException("not supported operation exception"); } } } jcodings-1.0.58/src/org/jcodings/util/IntArrayHash.java000066400000000000000000000112631433325321700227460ustar00rootroot00000000000000/* * Permission is hereby granted, free of charge, to any person obtaining a copy of * this software and associated documentation files (the "Software"), to deal in * the Software without restriction, including without limitation the rights to * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies * of the Software, and to permit persons to whom the Software is furnished to do * so, subject to the following conditions: * * The above copyright notice and this permission notice shall be included in all * copies or substantial portions of the Software. * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE * SOFTWARE. */ package org.jcodings.util; public final class IntArrayHash extends Hash{ public IntArrayHash() { super(); } public IntArrayHash(int size) { super(size); } protected void init() { head = new IntArrayHashEntry(); } public final static class IntArrayHashEntry extends HashEntry { public final int[]key; public IntArrayHashEntry(int hash, HashEntry next, V value, int[]key, HashEntry head) { super(hash, next, value, head); this.key = key; } public IntArrayHashEntry() { super(); key = null; } public boolean equals(int[]key) { if (this.key == key) return true; if (this.key.length != key.length) return false; switch(key.length) { case 1: return this.key[0] == key[0]; case 2: return this.key[0] == key[0] && this.key[1] == key[1]; case 3: return this.key[0] == key[0] && this.key[1] == key[1] && this.key[2] == key[2]; case 4: return this.key[0] == key[0] && this.key[1] == key[1] && this.key[2] == key[2] && this.key[3] == key[3]; default: for (int i=0; i entry = (IntArrayHashEntry)table[i]; entry != null; entry = (IntArrayHashEntry)entry.next) { if (entry.hash == hash && entry.equals(key)) { entry.value = value; return value; } } table[i] = new IntArrayHashEntry(hash, table[i], value, key, head); size++; return null; } public void putDirect(int[]key, V value) { checkResize(); final int hash = hashValue(hashCode(key)); final int i = bucketIndex(hash, table.length); table[i] = new IntArrayHashEntry(hash, table[i], value, key, head); size++; } public V get(int ... key) { int hash = hashValue(hashCode(key)); for (IntArrayHashEntry entry = (IntArrayHashEntry)table[bucketIndex(hash, table.length)]; entry != null; entry = (IntArrayHashEntry)entry.next) { if (entry.hash == hash && entry.equals(key)) return entry.value; } return null; } public V delete(int ... key) { int hash = hashValue(hashCode(key)); int i = bucketIndex(hash, table.length); IntArrayHashEntry entry = (IntArrayHashEntry)table[i]; if (entry == null) return null; if (entry.hash == hash && entry.equals(key)) { table[i] = entry.next; size--; entry.remove(); return entry.value; } for (; entry.next != null; entry = (IntArrayHashEntry)entry.next) { HashEntry tmp = entry.next; if (tmp.hash == hash && entry.equals(key)) { entry.next = entry.next.next; size--; tmp.remove(); return tmp.value; } } return null; } } jcodings-1.0.58/src/org/jcodings/util/IntHash.java000066400000000000000000000065301433325321700217500ustar00rootroot00000000000000/* * Permission is hereby granted, free of charge, to any person obtaining a copy of * this software and associated documentation files (the "Software"), to deal in * the Software without restriction, including without limitation the rights to * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies * of the Software, and to permit persons to whom the Software is furnished to do * so, subject to the following conditions: * * The above copyright notice and this permission notice shall be included in all * copies or substantial portions of the Software. * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE * SOFTWARE. */ package org.jcodings.util; public class IntHash extends Hash { public IntHash() { super(); } public IntHash(int size) { super(size); } protected void init() { head = new IntHashEntry(); } public static final class IntHashEntry extends HashEntry { public IntHashEntry(int hash, HashEntry next, V value, HashEntry head) { super(hash, next, value, head); } public IntHashEntry() { super(); } } public V put(int key, V value) { checkResize(); int hash = hashValue(key); int i = bucketIndex(hash, table.length); for (IntHashEntry entry = (IntHashEntry)table[i]; entry != null; entry = (IntHashEntry)entry.next) { if (entry.hash == hash) { entry.value = value; return value; } } table[i] = new IntHashEntry(hash, table[i], value, head); size++; return null; } public void putDirect(int key, V value) { checkResize(); final int hash = hashValue(key); final int i = bucketIndex(hash, table.length); table[i] = new IntHashEntry(hash, table[i], value, head); size++; } public V get(int key) { int hash = hashValue(key); for (IntHashEntry entry = (IntHashEntry)table[bucketIndex(hash, table.length)]; entry != null; entry = (IntHashEntry)entry.next) { if (entry.hash == hash) return entry.value; } return null; } public V delete(int key) { int hash = hashValue(key); int i = bucketIndex(hash, table.length); IntHashEntry entry = (IntHashEntry)table[i]; if (entry == null) return null; if (entry.hash == hash) { table[i] = entry.next; size--; entry.remove(); return entry.value; } for (; entry.next != null; entry = (IntHashEntry)entry.next) { HashEntry tmp = entry.next; if (tmp.hash == hash && entry.equals(key)) { entry.next = entry.next.next; size--; tmp.remove(); return tmp.value; } } return null; } } jcodings-1.0.58/src/org/jcodings/util/Macros.java000066400000000000000000000035771433325321700216460ustar00rootroot00000000000000package org.jcodings.util; /** * ONIGENC macros from Ruby */ public class Macros { public static final int MBCLEN_INVALID = -1; // CONSTRUCT_MBCLEN_INVALID, ONIGENC_CONSTRUCT_MBCLEN_INVALID public static int CONSTRUCT_MBCLEN_INVALID() { return MBCLEN_INVALID; } // MBCLEN_NEEDMORE_P, ONIGENC_MBCLEN_NEEDMORE_P public static boolean MBCLEN_NEEDMORE_P(int r) { return r < -1; } // CONSTRUCT_MBCLEN_NEEDMORE, CONSTRUCT_ONIGENC_MBCLEN_NEEDMORE public static int CONSTRUCT_MBCLEN_NEEDMORE(int n) { return -1 - n; } // MBCLEN_NEEDMORE_LEN, ONIGENC_MBCLEN_NEEDMORE_LEN public static int MBCLEN_NEEDMORE_LEN(int r) { return -1 - r; } // MBCLEN_INVALID_P, ONIGENC_MBCLEN_INVALID_P public static boolean MBCLEN_INVALID_P(int r) { return r == MBCLEN_INVALID; } // MBCLEN_CHARFOUND_LEN, ONIGENC_MBCLEN_CHARFOUND_LEN public static int MBCLEN_CHARFOUND_LEN(int r) { return r; } // MBCLEN_CHARFOUND_P, ONIGENC_MBCLEN_CHARFOUND_P public static boolean MBCLEN_CHARFOUND_P(int r) { return 0 < r; } // CONSTRUCT_MBCLEN_CHARFOUND, ONIGENC_CONSTRUCT_MBCLEN_CHARFOUND public static int CONSTRUCT_MBCLEN_CHARFOUND(int n) { return n; } // UNICODE_VALID_CODEPOINT_P public static boolean UNICODE_VALID_CODEPOINT_P(int c) { return (Integer.compareUnsigned(c, 0x10ffff) <= 0) && !((c) < 0x10000 && UTF16_IS_SURROGATE((c) >> 8)); } // UTF16_IS_SURROGATE_FIRST public static boolean UTF16_IS_SURROGATE_FIRST(int c) { return ((c) & 0xfc) == 0xd8; } // UTF16_IS_SURROGATE_SECOND public static boolean UTF16_IS_SURROGATE_SECOND(int c) { return ((c) & 0xfc) == 0xdc; } // UTF16_IS_SURROGATE public static boolean UTF16_IS_SURROGATE(int c) { return ((c) & 0xf8) == 0xd8; } } jcodings-1.0.58/src/org/jcodings/util/ObjHash.java000066400000000000000000000073721433325321700217350ustar00rootroot00000000000000/* * Permission is hereby granted, free of charge, to any person obtaining a copy of * this software and associated documentation files (the "Software"), to deal in * the Software without restriction, including without limitation the rights to * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies * of the Software, and to permit persons to whom the Software is furnished to do * so, subject to the following conditions: * * The above copyright notice and this permission notice shall be included in all * copies or substantial portions of the Software. * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE * SOFTWARE. */ package org.jcodings.util; public final class ObjHash extends Hash { protected void init() { head = new ObjHashEntry(); } public final static class ObjHashEntry extends HashEntry { public final K key; public ObjHashEntry(int hash, HashEntry next, V value, K key, HashEntry head) { super(hash, next, value, head); this.key = key; } public ObjHashEntry() { super(); key = null; } public boolean equals(Object key) { if (this.key == key) return true; return this.key.equals(key); } } public V put(K key, V value) { checkResize(); int hash = hashValue(key.hashCode()); int i = bucketIndex(hash, table.length); K k; for (ObjHashEntry entry = (ObjHashEntry)table[i]; entry != null; entry = (ObjHashEntry)entry.next) { if (entry.hash == hash && ((k = entry.key) == key || key.equals(k))) { entry.value = value; return value; } } table[i] = new ObjHashEntry(hash, table[i], value, key, head); size++; return null; } public void putDirect(K key, V value) { checkResize(); final int hash = hashValue(key.hashCode()); final int i = bucketIndex(hash, table.length); table[i] = new ObjHashEntry(hash, table[i], value, key, head); size++; } public V get(K key) { int hash = hashValue(key.hashCode()); K k; for (ObjHashEntry entry = (ObjHashEntry)table[bucketIndex(hash, table.length)]; entry != null; entry = (ObjHashEntry)entry.next) { if (entry.hash == hash && ((k = entry.key) == key || key.equals(k))) return entry.value; } return null; } public V delete(K key) { int hash = hashValue(key.hashCode()); int i = bucketIndex(hash, table.length); ObjHashEntry entry = (ObjHashEntry)table[i]; if (entry == null) return null; K k; if (entry.hash == hash && ((k = entry.key) == key || key.equals(k))) { table[i] = entry.next; size--; entry.remove(); return entry.value; } for (; entry.next != null; entry = (ObjHashEntry)entry.next) { HashEntry tmp = entry.next; if (tmp.hash == hash && ((k = entry.key) == key || key.equals(k))) { entry.next = entry.next.next; size--; tmp.remove(); return tmp.value; } } return null; } } jcodings-1.0.58/test/000077500000000000000000000000001433325321700143675ustar00rootroot00000000000000jcodings-1.0.58/test/org/000077500000000000000000000000001433325321700151565ustar00rootroot00000000000000jcodings-1.0.58/test/org/jcodings/000077500000000000000000000000001433325321700167565ustar00rootroot00000000000000jcodings-1.0.58/test/org/jcodings/specific/000077500000000000000000000000001433325321700205435ustar00rootroot00000000000000jcodings-1.0.58/test/org/jcodings/specific/TestASCIIEncoding.java000066400000000000000000000035371433325321700245550ustar00rootroot00000000000000/* * Permission is hereby granted, free of charge, to any person obtaining a copy of * this software and associated documentation files (the "Software"), to deal in * the Software without restriction, including without limitation the rights to * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies * of the Software, and to permit persons to whom the Software is furnished to do * so, subject to the following conditions: * * The above copyright notice and this permission notice shall be included in all * copies or substantial portions of the Software. * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE * SOFTWARE. */ package org.jcodings.specific; import org.jcodings.exception.EncodingError; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertArrayEquals; import org.junit.Test; public class TestASCIIEncoding { @Test public void testValidCodeToMbcLength() { assertEquals(1, ASCIIEncoding.INSTANCE.codeToMbcLength(0xff)); } @Test public void testValidCodeToMbc() { byte[] buffer = new byte[1]; assertEquals(1, ASCIIEncoding.INSTANCE.codeToMbc(0xff, buffer, 0)); assertArrayEquals(new byte[]{ -1 }, buffer); } @Test public void testInvalidCodeToMbc() { byte[] buffer = new byte[1]; assertEquals(EncodingError.ERR_TOO_BIG_WIDE_CHAR_VALUE.getCode(), ASCIIEncoding.INSTANCE.codeToMbc(0x100, buffer, 0)); } } jcodings-1.0.58/test/org/jcodings/specific/TestBig5.java000077500000000000000000000013551433325321700230430ustar00rootroot00000000000000package org.jcodings.specific; import static org.junit.Assert.assertEquals; import static org.junit.Assume.assumeTrue; import java.nio.charset.Charset; import org.jcodings.specific.BIG5Encoding; import org.junit.Test; public class TestBig5 { @Test public void testGetCharset() { Charset Big5 = Charset.forName("Big5"); assumeTrue(Big5 != null); assertEquals("Big5Encoding.charset should be 'Big5'", Big5, BIG5Encoding.INSTANCE.getCharset()); } @Test public void testGetCharsetName() { assertEquals("Big5Encoding.charsetName should be 'Big5'", "Big5".toUpperCase(), BIG5Encoding.INSTANCE.getCharsetName().toUpperCase()); } } jcodings-1.0.58/test/org/jcodings/specific/TestCESU8.java000066400000000000000000000033471433325321700231040ustar00rootroot00000000000000package org.jcodings.specific; import static junit.framework.Assert.assertEquals; import static junit.framework.Assert.assertTrue; import org.jcodings.Encoding; import org.jcodings.constants.CharacterType; import java.nio.charset.StandardCharsets; import org.junit.Test; public class TestCESU8 { final Encoding enc = CESU8Encoding.INSTANCE; @Test public void testUnicodeLength6byteChar() throws Exception { byte[]bytes = "\u00ed\u00a0\u0080\u00ed\u00b0\u0080".getBytes("ISO-8859-1"); assertEquals(1, enc.strLength(bytes, 0, bytes.length)); } @Test public void testUnicodeLength() throws Exception { byte[]bytes = "test\u00C5\u0099".getBytes(); assertEquals(6, enc.strLength(bytes, 0, bytes.length)); } @Test public void testUnicodeLengthLong() throws Exception { byte[]bytes = ("\u00C5\u0099\u00C5\u00A1\u00C4\u009B\u00C5\u0099\u00C5\u00A1\u00C4\u009B\u00C5\u0099\u00C3\u00A9\u00C4" + "\u009B\u00C3\u00BD\u00C5\u0099\u00C5\u00A1\u00C4\u009B\u00C3\u00A9\u00C4\u009B\u00C3\u00A9\u00C5\u00BE\u00C4\u009B\u00C5\u00A1" + "\u00C3\u00A9\u00C5\u00BE\u00C4\u009B\u00C5\u00BE\u00C3\u00A9\u00C4\u009B\u00C5\u00A1").getBytes("ISO-8859-1"); assertEquals(26, enc.strLength(bytes, 0, bytes.length)); } @Test public void testCodeToMbcLength() throws Exception { assertEquals(enc.codeToMbcLength(0x01), 1); assertEquals(enc.codeToMbcLength(0x1F608), 6); } @Test public void testMbcToCode() throws Exception { assertEquals('Ø', enc.mbcToCode("mØØse".getBytes("UTF-8"), 1, 3)); } @Test public void testEncodingLoad() throws Exception { assertEquals(CESU8Encoding.INSTANCE, Encoding.load("CESU8")); } } jcodings-1.0.58/test/org/jcodings/specific/TestCaseMap.java000066400000000000000000000127251433325321700235660ustar00rootroot00000000000000package org.jcodings.specific; import static junit.framework.Assert.assertTrue; import java.util.Arrays; import java.util.List; import org.jcodings.Config; import org.jcodings.Encoding; import org.jcodings.EncodingDB; import org.jcodings.IntHolder; import org.jcodings.util.CaseInsensitiveBytesHash; import org.junit.Test; public class TestCaseMap { String caseMap(Encoding enc, String transcode, String fromS, int flags) throws Exception { int CASE_MAPPING_ADDITIONAL_LENGTH = 20; byte[]from = fromS.getBytes(transcode); IntHolder fromP = new IntHolder(); fromP.value = 0; byte[]to = new byte[from.length + CASE_MAPPING_ADDITIONAL_LENGTH]; IntHolder flagP = new IntHolder(); flagP.value = flags; int len = enc.caseMap(flagP, from, fromP, from.length, to, 0, to.length); return new String(to, 0, len, transcode); } String caseMap(Encoding enc, String fromS, int flags) throws Exception { return caseMap(enc, enc.toString(), fromS, flags); } @Test public void testASCIICaseMap() throws Exception { CaseInsensitiveBytesHash list = EncodingDB.getEncodings(); String transcodeFrom = "iso-8859-1"; for (EncodingDB.Entry entry: list) { Encoding enc = entry.getEncoding(); if (enc.isAsciiCompatible()) { assertTrue(caseMap(enc, transcodeFrom, "abcdefghijklmnopqrstuvwxyz", Config.CASE_UPCASE).equals("ABCDEFGHIJKLMNOPQRSTUVWXYZ")); assertTrue(caseMap(enc, transcodeFrom, "ABCDEFGHIJKLMNOPQRSTUVWXYZ", Config.CASE_UPCASE).equals("ABCDEFGHIJKLMNOPQRSTUVWXYZ")); assertTrue(caseMap(enc, transcodeFrom, "ABCDEFGHIJKLMNOPQRSTUVWXYZ", Config.CASE_DOWNCASE).equals("abcdefghijklmnopqrstuvwxyz")); assertTrue(caseMap(enc, transcodeFrom, "abcdefghijklmnopqrstuvwxyz", Config.CASE_DOWNCASE).equals("abcdefghijklmnopqrstuvwxyz")); assertTrue(caseMap(enc, transcodeFrom, "xFoO", Config.CASE_UPCASE).equals("XFOO")); assertTrue(caseMap(enc, transcodeFrom, "abc", Config.CASE_UPCASE | Config.CASE_DOWNCASE).equals("ABC")); assertTrue(caseMap(enc, transcodeFrom, "Abc", Config.CASE_UPCASE | Config.CASE_DOWNCASE).equals("aBC")); assertTrue(caseMap(enc, transcodeFrom, "aBC", Config.CASE_UPCASE | Config.CASE_DOWNCASE).equals("Abc")); assertTrue(caseMap(enc, transcodeFrom, "abc", Config.CASE_UPCASE | Config.CASE_TITLECASE).equals("Abc")); } } } @Test public void testUnicodeCaseMap() throws Exception { Encoding enc = UTF8Encoding.INSTANCE; assertTrue(caseMap(enc, "äöü", Config.CASE_UPCASE).equals("ÄÖÜ")); assertTrue(caseMap(enc, "ÄÖÜ", Config.CASE_UPCASE).equals("ÄÖÜ")); assertTrue(caseMap(enc, "ÄÖÜ", Config.CASE_DOWNCASE).equals("äöü")); assertTrue(caseMap(enc, "äöü", Config.CASE_DOWNCASE).equals("äöü")); assertTrue(caseMap(enc, "aÄbÖcÜ", Config.CASE_DOWNCASE).equals("aäböcü")); assertTrue(caseMap(enc, "aäböcü", Config.CASE_UPCASE).equals("AÄBÖCÜ")); assertTrue(caseMap(enc, "aäböcü", Config.CASE_UPCASE | Config.CASE_ASCII_ONLY).equals("AäBöCü")); assertTrue(caseMap(enc, "AÄBÖCÜ", Config.CASE_DOWNCASE | Config.CASE_ASCII_ONLY).equals("aÄbÖcÜ")); assertTrue(caseMap(enc, "äöü", Config.CASE_UPCASE | Config.CASE_DOWNCASE).equals("ÄÖÜ")); assertTrue(caseMap(enc, "Äöü", Config.CASE_UPCASE | Config.CASE_DOWNCASE).equals("äÖÜ")); assertTrue(caseMap(enc, "äÖÜ", Config.CASE_UPCASE | Config.CASE_DOWNCASE).equals("Äöü")); assertTrue(caseMap(enc, "äöü", Config.CASE_UPCASE | Config.CASE_TITLECASE).equals("Äöü")); assertTrue(caseMap(enc, "İ", Config.CASE_DOWNCASE).equals("i̇")); // i\u0307 assertTrue(caseMap(enc, "İ", Config.CASE_DOWNCASE | Config.CASE_FOLD_TURKISH_AZERI).equals("i")); } @Test public void testISOCaseMap() throws Exception { List list = Arrays.asList(ISO8859_1Encoding.INSTANCE, ISO8859_2Encoding.INSTANCE, ISO8859_3Encoding.INSTANCE); for (Encoding enc: list) { assertTrue(caseMap(enc, "ß", Config.CASE_UPCASE).equals("SS")); assertTrue(caseMap(enc, "ß", Config.CASE_DOWNCASE).equals("ß")); } } @Test public void testGeorgian() throws Exception { Encoding enc = UTF8Encoding.INSTANCE; assertTrue(caseMap(enc, "\u1C90\u1C91\u1C92", Config.CASE_UPCASE | Config.CASE_TITLECASE).equals("\u10D0\u10D1\u10D2")); assertTrue(caseMap(enc, "\u1C90\u1C91\u10D2", Config.CASE_UPCASE | Config.CASE_TITLECASE).equals("\u10D0\u10D1\u10D2")); assertTrue(caseMap(enc, "\u1C90\u10D1\u1C92", Config.CASE_UPCASE | Config.CASE_TITLECASE).equals("\u10D0\u10D1\u10D2")); assertTrue(caseMap(enc, "\u1C90\u10D1\u10D2", Config.CASE_UPCASE | Config.CASE_TITLECASE).equals("\u10D0\u10D1\u10D2")); assertTrue(caseMap(enc, "\u10D0\u1C91\u1C92", Config.CASE_UPCASE | Config.CASE_TITLECASE).equals("\u10D0\u10D1\u10D2")); assertTrue(caseMap(enc, "\u10D0\u1C91\u10D2", Config.CASE_UPCASE | Config.CASE_TITLECASE).equals("\u10D0\u10D1\u10D2")); assertTrue(caseMap(enc, "\u10D0\u10D1\u1C92", Config.CASE_UPCASE | Config.CASE_TITLECASE).equals("\u10D0\u10D1\u10D2")); assertTrue(caseMap(enc, "\u10D0\u10D1\u10D2", Config.CASE_UPCASE | Config.CASE_TITLECASE).equals("\u10D0\u10D1\u10D2")); } } jcodings-1.0.58/test/org/jcodings/specific/TestEConv.java000066400000000000000000000077721433325321700232750ustar00rootroot00000000000000package org.jcodings.specific; import java.nio.charset.Charset; import java.util.Arrays; import org.jcodings.Ptr; import org.jcodings.transcode.EConv; import org.jcodings.transcode.EConvFlags; import org.jcodings.transcode.EConvResult; import org.jcodings.transcode.TranscoderDB; import org.junit.Assert; import org.junit.Test; /** * Created by headius on 2/25/14. */ public class TestEConv { @Test public void testUTF8toUTF16() throws Exception { EConv econv = TranscoderDB.open("UTF-8", "UTF-16", 0); byte[] src = "foo".getBytes("UTF-8"); byte[] dest = new byte["foo".getBytes("UTF-16").length]; econv.convert(src, new Ptr(0), 3, dest, new Ptr(0), dest.length, 0); Assert.assertArrayEquals("foo".getBytes("UTF-16"), dest); } @Test public void testUniversalNewline() throws Exception { EConv econv = TranscoderDB.open("".getBytes(), "".getBytes(), EConvFlags.UNIVERSAL_NEWLINE_DECORATOR); byte[] src = "foo\r\nbar".getBytes(); byte[] dest = new byte[7]; econv.convert(src, new Ptr(0), 8, dest, new Ptr(0), dest.length, 0); Assert.assertArrayEquals("foo\nbar".getBytes(), dest); } @Test public void testCrlfNewline() throws Exception { EConv econv = TranscoderDB.open("".getBytes(), "".getBytes(), EConvFlags.CRLF_NEWLINE_DECORATOR); byte[] src = "foo\nbar".getBytes(); byte[] dest = new byte[8]; econv.convert(src, new Ptr(0), 7, dest, new Ptr(0), dest.length, 0); Assert.assertArrayEquals("foo\r\nbar".getBytes(), dest); } @Test public void testCrNewline() throws Exception { EConv econv = TranscoderDB.open("".getBytes(), "".getBytes(), EConvFlags.CR_NEWLINE_DECORATOR); byte[] src = "foo\nbar".getBytes(); byte[] dest = new byte[7]; econv.convert(src, new Ptr(0), 7, dest, new Ptr(0), dest.length, 0); Assert.assertArrayEquals("foo\rbar".getBytes(), dest); } @Test public void testXMLWithCharref() throws Exception { EConv econv = TranscoderDB.open("utf-8".getBytes(), "euc-jp".getBytes(), EConvFlags.XML_ATTR_CONTENT_DECORATOR | EConvFlags.XML_ATTR_QUOTE_DECORATOR | EConvFlags.UNDEF_HEX_CHARREF); byte[] src = "<\u2665>&\"\u2661\"".getBytes(UTF8); byte[] dest = new byte[50]; Ptr destP = new Ptr(0); econv.convert(src, new Ptr(0), src.length, dest, destP, dest.length, 0); Assert.assertArrayEquals("\"<♥>&"♡"\"".getBytes(), Arrays.copyOf(dest, destP.p)); } @Test public void testXMLText() throws Exception { // EConv econv = TranscoderDB.open("utf-8".getBytes(), "iso-2022-jp".getBytes(), EConvFlags.XML_TEXT_DECORATOR); // // byte[] expected = "&う♥&\"'".getBytes(ISO2022_JP); // // byte[] src = "&\u3046\u2665&\"'".getBytes(UTF8); // byte[] dest = new byte[50]; // Ptr destP = new Ptr(0); // // econv.convert(src, new Ptr(0), src.length, dest, destP, dest.length, 0); // //// Assert.assertArrayEquals(expected, Arrays.copyOf(dest, destP.p)); // Assert.assertEquals(new String(expected, ISO2022_JP), new String(Arrays.copyOf(dest, destP.p), ISO2022_JP)); } @Test public void testEmptyStrings() throws Exception { EConv econv = TranscoderDB.open("UTF-8".getBytes(), "UTF-16".getBytes(), 0); byte[] notEmpty = new byte["foo".getBytes("UTF-16").length]; EConvResult result = econv.convert(null, null, 0, notEmpty, new Ptr(0), notEmpty.length, 0); Assert.assertEquals(EConvResult.Finished, result); } private static final Charset UTF8; private static final Charset ISO2022_JP; static { Charset utf8 = null; Charset iso2022_jp = null; try { utf8 = Charset.forName("UTF-8"); iso2022_jp = Charset.forName("ISO-2022-JP"); } catch (Exception e) { throw new RuntimeException(e); } UTF8 = utf8; ISO2022_JP = iso2022_jp; } } jcodings-1.0.58/test/org/jcodings/specific/TestEConvResult.java000066400000000000000000000007451433325321700244650ustar00rootroot00000000000000package org.jcodings.specific; import junit.framework.Assert; import org.jcodings.transcode.EConvResult; import org.junit.Test; public class TestEConvResult { @Test public void testSymbolicName() { Assert.assertEquals("finished", EConvResult.Finished.symbolicName()); Assert.assertEquals("after_output", EConvResult.AfterOutput.symbolicName()); Assert.assertEquals("destination_buffer_full", EConvResult.DestinationBufferFull.symbolicName()); } } jcodings-1.0.58/test/org/jcodings/specific/TestEUCJP.java000077500000000000000000000024461433325321700231250ustar00rootroot00000000000000package org.jcodings.specific; import static org.junit.Assert.assertArrayEquals; import static org.junit.Assert.assertEquals; import static org.junit.Assume.assumeTrue; import java.nio.charset.Charset; import org.jcodings.IntHolder; import org.junit.Test; public class TestEUCJP { @Test public void testGetCharset() { Charset EUCJP = Charset.forName("EUC-JP"); assumeTrue(EUCJP != null); assertEquals("EUCJPEncoding.charset should be 'EUC-JP'", EUCJP, EUCJPEncoding.INSTANCE.getCharset()); } @Test public void testGetCharsetName() { assertEquals("EUCJPEncoding.charsetName should be 'EUC-JP'", "EUC-JP", EUCJPEncoding.INSTANCE.getCharsetName()); } @Test public void testCaseFold() { EUCJPEncoding enc = EUCJPEncoding.INSTANCE; byte [] lowerSrc = new byte[]{(byte)0xA3, (byte)0xE1}; byte [] upperSrc = new byte[]{(byte)0xA3, (byte)0xC1}; byte [] lower = new byte[2]; IntHolder pp = new IntHolder(); pp.value = 0; enc.mbcCaseFold(0, lowerSrc, pp, 2, lower); assertArrayEquals(lowerSrc, lower); pp.value = 0; enc.mbcCaseFold(0, upperSrc, pp, 2, lower); assertArrayEquals(lowerSrc, lower); } } jcodings-1.0.58/test/org/jcodings/specific/TestEmacsMule.java000066400000000000000000000010051433325321700241150ustar00rootroot00000000000000package org.jcodings.specific; import static org.junit.Assert.assertEquals; import org.jcodings.specific.EmacsMuleEncoding; import org.junit.Test; public class TestEmacsMule { @Test public void testRightAdjustCharHeadAscii() { byte[] str = new byte[]{(byte)'a', (byte)'b', (byte)'c', (byte)',', (byte)'d', (byte)'e', (byte)'f'}; int t = EmacsMuleEncoding.INSTANCE.rightAdjustCharHead(str, 0, 3, 7); assertEquals("rightAdjustCharHead did not adjust properly", 3, t); } } jcodings-1.0.58/test/org/jcodings/specific/TestGBK.java000077500000000000000000000032631433325321700226600ustar00rootroot00000000000000package org.jcodings.specific; import static org.junit.Assert.assertEquals; import static org.junit.Assume.assumeTrue; import java.nio.charset.Charset; import org.jcodings.Encoding; import org.jcodings.EncodingDB; import org.jcodings.EncodingDB.Entry; import org.jcodings.specific.GBKEncoding; import org.jcodings.util.CaseInsensitiveBytesHash; import org.junit.Before; import org.junit.Test; public class TestGBK { private CaseInsensitiveBytesHash encodings; @Before public void setUp() throws Exception { encodings = EncodingDB.getEncodings(); } @Test public void testGBK() { String charset_name = Charset.defaultCharset().displayName(); assumeTrue(charset_name.equals("GBK")); Encoding from_jcodings = encodings.get(charset_name.getBytes()).getEncoding(); assertEquals("the encoding got from jcodings should also be GBK, same as input", charset_name, from_jcodings.toString()); } @Test public void testGBKEncoding() { assertEquals("GBKEncoding.INSTANCE should be of type GBKEncoding", GBKEncoding.class.getCanonicalName(), GBKEncoding.INSTANCE.getClass().getCanonicalName()); } @Test public void testGetCharset() { Charset GBK = Charset.forName("GBK"); assumeTrue(GBK != null); assertEquals("GBKEncoding.charset should be 'GBK'", GBK, GBKEncoding.INSTANCE.getCharset()); } @Test public void testGetCharsetName() { assertEquals("GBKEncoding.charsetName should be 'GBK'", "GBK", GBKEncoding.INSTANCE.getCharsetName()); } } jcodings-1.0.58/test/org/jcodings/specific/TestSJIS.java000066400000000000000000000013131433325321700230140ustar00rootroot00000000000000package org.jcodings.specific; import static org.junit.Assert.assertArrayEquals; import org.jcodings.IntHolder; import org.junit.Test; public class TestSJIS { @Test public void testCaseFold() { SJISEncoding enc = SJISEncoding.INSTANCE; byte [] lowerSrc = new byte[]{(byte)0x82, (byte)0x81}; byte [] upperSrc = new byte[]{(byte)0x82, (byte)0x60}; byte [] lower = new byte[2]; IntHolder pp = new IntHolder(); pp.value = 0; enc.mbcCaseFold(0, lowerSrc, pp, 2, lower); assertArrayEquals(lowerSrc, lower); pp.value = 0; enc.mbcCaseFold(0, upperSrc, pp, 2, lower); assertArrayEquals(lowerSrc, lower); } }jcodings-1.0.58/test/org/jcodings/specific/TestUSASCIIEncoding.java000066400000000000000000000037631433325321700250260ustar00rootroot00000000000000/* * Permission is hereby granted, free of charge, to any person obtaining a copy of * this software and associated documentation files (the "Software"), to deal in * the Software without restriction, including without limitation the rights to * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies * of the Software, and to permit persons to whom the Software is furnished to do * so, subject to the following conditions: * * The above copyright notice and this permission notice shall be included in all * copies or substantial portions of the Software. * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE * SOFTWARE. */ package org.jcodings.specific; import org.jcodings.exception.EncodingError; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertArrayEquals; import org.junit.Test; public class TestUSASCIIEncoding { /** * codeToMbcLength always returns 1, even when codepoint is invalid, * as Config.VANILLA == false. */ @Test public void testValidCodeToMbcLength() { assertEquals(1, ASCIIEncoding.INSTANCE.codeToMbcLength(0xff)); } @Test public void testValidCodeToMbc() { byte[] buffer = new byte[1]; assertEquals(1, USASCIIEncoding.INSTANCE.codeToMbc(0x7f, buffer, 0)); assertArrayEquals(new byte[]{0x7f}, buffer); } @Test public void testInvalidCodeToMbc() { byte[] buffer = new byte[1]; assertEquals(EncodingError.ERR_TOO_BIG_WIDE_CHAR_VALUE.getCode(), USASCIIEncoding.INSTANCE.codeToMbc(0xff + 1, buffer, 0)); } } jcodings-1.0.58/test/org/jcodings/specific/TestUnicode.java000066400000000000000000000036251433325321700236420ustar00rootroot00000000000000package org.jcodings.specific; import static junit.framework.Assert.assertEquals; import static junit.framework.Assert.assertTrue; import org.jcodings.Encoding; import org.jcodings.constants.CharacterType; import org.junit.Test; public class TestUnicode { final Encoding enc = UTF8Encoding.INSTANCE; @Test public void testUnicodeLength() throws Exception { byte[] utf8Bytes = "mØØse".getBytes("UTF-8"); assertEquals(7, utf8Bytes.length); assertEquals(5, enc.strLength(utf8Bytes, 0, 7)); assertEquals(2, enc.length(utf8Bytes[1])); assertEquals('Ø', enc.mbcToCode(utf8Bytes, 1, 3)); } @Test public void testUnicodeProperties() throws Exception { Encoding enc = UTF16BEEncoding.INSTANCE; byte[]str = "\000B\000\000".getBytes("iso-8859-1"); int code = enc.mbcToCode(str, 0, str.length); byte[]prop = "\000u\000p\000p\000e\000r".getBytes("iso-8859-1"); int ctype = enc.propertyNameToCType(prop, 0, prop.length); assertTrue(enc.isCodeCType(code, ctype)); Encoding utf8 = UTF8Encoding.INSTANCE; byte[]ascii = "ascii".getBytes(); int a_ctype = utf8.propertyNameToCType(ascii, 0, ascii.length); assertEquals(a_ctype, CharacterType.ASCII); } @Test public void testCodeToMbcLength() throws Exception { assertEquals(enc.codeToMbcLength(0x01), 1); assertEquals(enc.codeToMbcLength(0x7f), 1); assertEquals(enc.codeToMbcLength(0x101), 2); assertEquals(enc.codeToMbcLength(0x1020), 3); assertEquals(enc.codeToMbcLength(0x1F608), 4); assertEquals(enc.codeToMbcLength(0xfffffffe), 1); // USE_INVALID_CODE_SCHEME assertEquals(enc.codeToMbcLength(0xffffffff), 1); // USE_INVALID_CODE_SCHEME } @Test public void testEncodingLoad() throws Exception { assertEquals(UTF8Encoding.INSTANCE, Encoding.load("UTF8")); } }