"Fossies" - the Fresh Open Source Software Archive

Member "xorriso-1.5.4/libisofs/hfsplus_decompose_ts_test.c" (30 Jan 2021, 72442 Bytes) of package /linux/misc/xorriso-1.5.4.pl02.tar.gz:


As a special service "Fossies" has tried to format the requested source page into HTML format using (guessed) C and C++ source code syntax highlighting (style: standard) with prefixed line numbers and code folding option. Alternatively you can here view or download the uninterpreted source code file. For more information about "hfsplus_decompose_ts_test.c" see the Fossies "Dox" file reference documentation.

    1 /*
    2 cc -g -o demo/decompose libisofs/hfsplus_decompose_ts_test.c
    3 */
    4 #include <stdint.h>
    5 #include <string.h>
    6 #include <stdio.h>
    7 
    8 
    9 #ifdef HAVE_CONFIG_H
   10 #include "../config.h"
   11 #endif
   12 
   13 #include "hfsplus.h"
   14 
   15 /*
   16   Cased on tn1150 (HFS+ format specification)
   17 */
   18 
   19 
   20 static const uint16_t page00[256][HFSPLUS_MAX_DECOMPOSE_LEN + 1] = {
   21   [0xc0] = { 0x0041, 0x0300, 0x0000 },
   22   [0xc1] = { 0x0041, 0x0301, 0x0000 },
   23   [0xc2] = { 0x0041, 0x0302, 0x0000 },
   24   [0xc3] = { 0x0041, 0x0303, 0x0000 },
   25   [0xc4] = { 0x0041, 0x0308, 0x0000 },
   26   [0xc5] = { 0x0041, 0x030A, 0x0000 },
   27   [0xc7] = { 0x0043, 0x0327, 0x0000 },
   28   [0xc8] = { 0x0045, 0x0300, 0x0000 },
   29   [0xc9] = { 0x0045, 0x0301, 0x0000 },
   30   [0xca] = { 0x0045, 0x0302, 0x0000 },
   31   [0xcb] = { 0x0045, 0x0308, 0x0000 },
   32   [0xcc] = { 0x0049, 0x0300, 0x0000 },
   33   [0xcd] = { 0x0049, 0x0301, 0x0000 },
   34   [0xce] = { 0x0049, 0x0302, 0x0000 },
   35   [0xcf] = { 0x0049, 0x0308, 0x0000 },
   36   [0xd1] = { 0x004E, 0x0303, 0x0000 },
   37   [0xd2] = { 0x004F, 0x0300, 0x0000 },
   38   [0xd3] = { 0x004F, 0x0301, 0x0000 },
   39   [0xd4] = { 0x004F, 0x0302, 0x0000 },
   40   [0xd5] = { 0x004F, 0x0303, 0x0000 },
   41   [0xd6] = { 0x004F, 0x0308, 0x0000 },
   42   [0xd9] = { 0x0055, 0x0300, 0x0000 },
   43   [0xda] = { 0x0055, 0x0301, 0x0000 },
   44   [0xdb] = { 0x0055, 0x0302, 0x0000 },
   45   [0xdc] = { 0x0055, 0x0308, 0x0000 },
   46   [0xdd] = { 0x0059, 0x0301, 0x0000 },
   47   [0xe0] = { 0x0061, 0x0300, 0x0000 },
   48   [0xe1] = { 0x0061, 0x0301, 0x0000 },
   49   [0xe2] = { 0x0061, 0x0302, 0x0000 },
   50   [0xe3] = { 0x0061, 0x0303, 0x0000 },
   51   [0xe4] = { 0x0061, 0x0308, 0x0000 },
   52   [0xe5] = { 0x0061, 0x030A, 0x0000 },
   53   [0xe7] = { 0x0063, 0x0327, 0x0000 },
   54   [0xe8] = { 0x0065, 0x0300, 0x0000 },
   55   [0xe9] = { 0x0065, 0x0301, 0x0000 },
   56   [0xea] = { 0x0065, 0x0302, 0x0000 },
   57   [0xeb] = { 0x0065, 0x0308, 0x0000 },
   58   [0xec] = { 0x0069, 0x0300, 0x0000 },
   59   [0xed] = { 0x0069, 0x0301, 0x0000 },
   60   [0xee] = { 0x0069, 0x0302, 0x0000 },
   61   [0xef] = { 0x0069, 0x0308, 0x0000 },
   62   [0xf1] = { 0x006E, 0x0303, 0x0000 },
   63   [0xf2] = { 0x006F, 0x0300, 0x0000 },
   64   [0xf3] = { 0x006F, 0x0301, 0x0000 },
   65   [0xf4] = { 0x006F, 0x0302, 0x0000 },
   66   [0xf5] = { 0x006F, 0x0303, 0x0000 },
   67   [0xf6] = { 0x006F, 0x0308, 0x0000 },
   68   [0xf9] = { 0x0075, 0x0300, 0x0000 },
   69   [0xfa] = { 0x0075, 0x0301, 0x0000 },
   70   [0xfb] = { 0x0075, 0x0302, 0x0000 },
   71   [0xfc] = { 0x0075, 0x0308, 0x0000 },
   72   [0xfd] = { 0x0079, 0x0301, 0x0000 },
   73   [0xff] = { 0x0079, 0x0308, 0x0000 },
   74 };
   75 
   76 static const uint16_t page01[256][HFSPLUS_MAX_DECOMPOSE_LEN + 1] = {
   77   [0x00] = { 0x0041, 0x0304, 0x0000 },
   78   [0x01] = { 0x0061, 0x0304, 0x0000 },
   79   [0x02] = { 0x0041, 0x0306, 0x0000 },
   80   [0x03] = { 0x0061, 0x0306, 0x0000 },
   81   [0x04] = { 0x0041, 0x0328, 0x0000 },
   82   [0x05] = { 0x0061, 0x0328, 0x0000 },
   83   [0x06] = { 0x0043, 0x0301, 0x0000 },
   84   [0x07] = { 0x0063, 0x0301, 0x0000 },
   85   [0x08] = { 0x0043, 0x0302, 0x0000 },
   86   [0x09] = { 0x0063, 0x0302, 0x0000 },
   87   [0x0a] = { 0x0043, 0x0307, 0x0000 },
   88   [0x0b] = { 0x0063, 0x0307, 0x0000 },
   89   [0x0c] = { 0x0043, 0x030C, 0x0000 },
   90   [0x0d] = { 0x0063, 0x030C, 0x0000 },
   91   [0x0e] = { 0x0044, 0x030C, 0x0000 },
   92   [0x0f] = { 0x0064, 0x030C, 0x0000 },
   93   [0x12] = { 0x0045, 0x0304, 0x0000 },
   94   [0x13] = { 0x0065, 0x0304, 0x0000 },
   95   [0x14] = { 0x0045, 0x0306, 0x0000 },
   96   [0x15] = { 0x0065, 0x0306, 0x0000 },
   97   [0x16] = { 0x0045, 0x0307, 0x0000 },
   98   [0x17] = { 0x0065, 0x0307, 0x0000 },
   99   [0x18] = { 0x0045, 0x0328, 0x0000 },
  100   [0x19] = { 0x0065, 0x0328, 0x0000 },
  101   [0x1a] = { 0x0045, 0x030C, 0x0000 },
  102   [0x1b] = { 0x0065, 0x030C, 0x0000 },
  103   [0x1c] = { 0x0047, 0x0302, 0x0000 },
  104   [0x1d] = { 0x0067, 0x0302, 0x0000 },
  105   [0x1e] = { 0x0047, 0x0306, 0x0000 },
  106   [0x1f] = { 0x0067, 0x0306, 0x0000 },
  107   [0x20] = { 0x0047, 0x0307, 0x0000 },
  108   [0x21] = { 0x0067, 0x0307, 0x0000 },
  109   [0x22] = { 0x0047, 0x0327, 0x0000 },
  110   [0x23] = { 0x0067, 0x0327, 0x0000 },
  111   [0x24] = { 0x0048, 0x0302, 0x0000 },
  112   [0x25] = { 0x0068, 0x0302, 0x0000 },
  113   [0x28] = { 0x0049, 0x0303, 0x0000 },
  114   [0x29] = { 0x0069, 0x0303, 0x0000 },
  115   [0x2a] = { 0x0049, 0x0304, 0x0000 },
  116   [0x2b] = { 0x0069, 0x0304, 0x0000 },
  117   [0x2c] = { 0x0049, 0x0306, 0x0000 },
  118   [0x2d] = { 0x0069, 0x0306, 0x0000 },
  119   [0x2e] = { 0x0049, 0x0328, 0x0000 },
  120   [0x2f] = { 0x0069, 0x0328, 0x0000 },
  121   [0x30] = { 0x0049, 0x0307, 0x0000 },
  122   [0x34] = { 0x004A, 0x0302, 0x0000 },
  123   [0x35] = { 0x006A, 0x0302, 0x0000 },
  124   [0x36] = { 0x004B, 0x0327, 0x0000 },
  125   [0x37] = { 0x006B, 0x0327, 0x0000 },
  126   [0x39] = { 0x004C, 0x0301, 0x0000 },
  127   [0x3a] = { 0x006C, 0x0301, 0x0000 },
  128   [0x3b] = { 0x004C, 0x0327, 0x0000 },
  129   [0x3c] = { 0x006C, 0x0327, 0x0000 },
  130   [0x3d] = { 0x004C, 0x030C, 0x0000 },
  131   [0x3e] = { 0x006C, 0x030C, 0x0000 },
  132   [0x43] = { 0x004E, 0x0301, 0x0000 },
  133   [0x44] = { 0x006E, 0x0301, 0x0000 },
  134   [0x45] = { 0x004E, 0x0327, 0x0000 },
  135   [0x46] = { 0x006E, 0x0327, 0x0000 },
  136   [0x47] = { 0x004E, 0x030C, 0x0000 },
  137   [0x48] = { 0x006E, 0x030C, 0x0000 },
  138   [0x4c] = { 0x004F, 0x0304, 0x0000 },
  139   [0x4d] = { 0x006F, 0x0304, 0x0000 },
  140   [0x4e] = { 0x004F, 0x0306, 0x0000 },
  141   [0x4f] = { 0x006F, 0x0306, 0x0000 },
  142   [0x50] = { 0x004F, 0x030B, 0x0000 },
  143   [0x51] = { 0x006F, 0x030B, 0x0000 },
  144   [0x54] = { 0x0052, 0x0301, 0x0000 },
  145   [0x55] = { 0x0072, 0x0301, 0x0000 },
  146   [0x56] = { 0x0052, 0x0327, 0x0000 },
  147   [0x57] = { 0x0072, 0x0327, 0x0000 },
  148   [0x58] = { 0x0052, 0x030C, 0x0000 },
  149   [0x59] = { 0x0072, 0x030C, 0x0000 },
  150   [0x5a] = { 0x0053, 0x0301, 0x0000 },
  151   [0x5b] = { 0x0073, 0x0301, 0x0000 },
  152   [0x5c] = { 0x0053, 0x0302, 0x0000 },
  153   [0x5d] = { 0x0073, 0x0302, 0x0000 },
  154   [0x5e] = { 0x0053, 0x0327, 0x0000 },
  155   [0x5f] = { 0x0073, 0x0327, 0x0000 },
  156   [0x60] = { 0x0053, 0x030C, 0x0000 },
  157   [0x61] = { 0x0073, 0x030C, 0x0000 },
  158   [0x62] = { 0x0054, 0x0327, 0x0000 },
  159   [0x63] = { 0x0074, 0x0327, 0x0000 },
  160   [0x64] = { 0x0054, 0x030C, 0x0000 },
  161   [0x65] = { 0x0074, 0x030C, 0x0000 },
  162   [0x68] = { 0x0055, 0x0303, 0x0000 },
  163   [0x69] = { 0x0075, 0x0303, 0x0000 },
  164   [0x6a] = { 0x0055, 0x0304, 0x0000 },
  165   [0x6b] = { 0x0075, 0x0304, 0x0000 },
  166   [0x6c] = { 0x0055, 0x0306, 0x0000 },
  167   [0x6d] = { 0x0075, 0x0306, 0x0000 },
  168   [0x6e] = { 0x0055, 0x030A, 0x0000 },
  169   [0x6f] = { 0x0075, 0x030A, 0x0000 },
  170   [0x70] = { 0x0055, 0x030B, 0x0000 },
  171   [0x71] = { 0x0075, 0x030B, 0x0000 },
  172   [0x72] = { 0x0055, 0x0328, 0x0000 },
  173   [0x73] = { 0x0075, 0x0328, 0x0000 },
  174   [0x74] = { 0x0057, 0x0302, 0x0000 },
  175   [0x75] = { 0x0077, 0x0302, 0x0000 },
  176   [0x76] = { 0x0059, 0x0302, 0x0000 },
  177   [0x77] = { 0x0079, 0x0302, 0x0000 },
  178   [0x78] = { 0x0059, 0x0308, 0x0000 },
  179   [0x79] = { 0x005A, 0x0301, 0x0000 },
  180   [0x7a] = { 0x007A, 0x0301, 0x0000 },
  181   [0x7b] = { 0x005A, 0x0307, 0x0000 },
  182   [0x7c] = { 0x007A, 0x0307, 0x0000 },
  183   [0x7d] = { 0x005A, 0x030C, 0x0000 },
  184   [0x7e] = { 0x007A, 0x030C, 0x0000 },
  185   [0xa0] = { 0x004F, 0x031B, 0x0000 },
  186   [0xa1] = { 0x006F, 0x031B, 0x0000 },
  187   [0xaf] = { 0x0055, 0x031B, 0x0000 },
  188   [0xb0] = { 0x0075, 0x031B, 0x0000 },
  189   [0xcd] = { 0x0041, 0x030C, 0x0000 },
  190   [0xce] = { 0x0061, 0x030C, 0x0000 },
  191   [0xcf] = { 0x0049, 0x030C, 0x0000 },
  192   [0xd0] = { 0x0069, 0x030C, 0x0000 },
  193   [0xd1] = { 0x004F, 0x030C, 0x0000 },
  194   [0xd2] = { 0x006F, 0x030C, 0x0000 },
  195   [0xd3] = { 0x0055, 0x030C, 0x0000 },
  196   [0xd4] = { 0x0075, 0x030C, 0x0000 },
  197   [0xd5] = { 0x0055, 0x0308, 0x0304, 0x0000 },
  198   [0xd6] = { 0x0075, 0x0308, 0x0304, 0x0000 },
  199   [0xd7] = { 0x0055, 0x0308, 0x0301, 0x0000 },
  200   [0xd8] = { 0x0075, 0x0308, 0x0301, 0x0000 },
  201   [0xd9] = { 0x0055, 0x0308, 0x030C, 0x0000 },
  202   [0xda] = { 0x0075, 0x0308, 0x030C, 0x0000 },
  203   [0xdb] = { 0x0055, 0x0308, 0x0300, 0x0000 },
  204   [0xdc] = { 0x0075, 0x0308, 0x0300, 0x0000 },
  205   [0xde] = { 0x0041, 0x0308, 0x0304, 0x0000 },
  206   [0xdf] = { 0x0061, 0x0308, 0x0304, 0x0000 },
  207   [0xe0] = { 0x0041, 0x0307, 0x0304, 0x0000 },
  208   [0xe1] = { 0x0061, 0x0307, 0x0304, 0x0000 },
  209   [0xe2] = { 0x00C6, 0x0304, 0x0000 },
  210   [0xe3] = { 0x00E6, 0x0304, 0x0000 },
  211   [0xe6] = { 0x0047, 0x030C, 0x0000 },
  212   [0xe7] = { 0x0067, 0x030C, 0x0000 },
  213   [0xe8] = { 0x004B, 0x030C, 0x0000 },
  214   [0xe9] = { 0x006B, 0x030C, 0x0000 },
  215   [0xea] = { 0x004F, 0x0328, 0x0000 },
  216   [0xeb] = { 0x006F, 0x0328, 0x0000 },
  217   [0xec] = { 0x004F, 0x0328, 0x0304, 0x0000 },
  218   [0xed] = { 0x006F, 0x0328, 0x0304, 0x0000 },
  219   [0xee] = { 0x01B7, 0x030C, 0x0000 },
  220   [0xef] = { 0x0292, 0x030C, 0x0000 },
  221   [0xf0] = { 0x006A, 0x030C, 0x0000 },
  222   [0xf4] = { 0x0047, 0x0301, 0x0000 },
  223   [0xf5] = { 0x0067, 0x0301, 0x0000 },
  224   [0xfa] = { 0x0041, 0x030A, 0x0301, 0x0000 },
  225   [0xfb] = { 0x0061, 0x030A, 0x0301, 0x0000 },
  226   [0xfc] = { 0x00C6, 0x0301, 0x0000 },
  227   [0xfd] = { 0x00E6, 0x0301, 0x0000 },
  228   [0xfe] = { 0x00D8, 0x0301, 0x0000 },
  229   [0xff] = { 0x00F8, 0x0301, 0x0000 },
  230 };
  231 
  232 static const uint16_t page02[256][HFSPLUS_MAX_DECOMPOSE_LEN + 1] = {
  233   [0x00] = { 0x0041, 0x030F, 0x0000 },
  234   [0x01] = { 0x0061, 0x030F, 0x0000 },
  235   [0x02] = { 0x0041, 0x0311, 0x0000 },
  236   [0x03] = { 0x0061, 0x0311, 0x0000 },
  237   [0x04] = { 0x0045, 0x030F, 0x0000 },
  238   [0x05] = { 0x0065, 0x030F, 0x0000 },
  239   [0x06] = { 0x0045, 0x0311, 0x0000 },
  240   [0x07] = { 0x0065, 0x0311, 0x0000 },
  241   [0x08] = { 0x0049, 0x030F, 0x0000 },
  242   [0x09] = { 0x0069, 0x030F, 0x0000 },
  243   [0x0a] = { 0x0049, 0x0311, 0x0000 },
  244   [0x0b] = { 0x0069, 0x0311, 0x0000 },
  245   [0x0c] = { 0x004F, 0x030F, 0x0000 },
  246   [0x0d] = { 0x006F, 0x030F, 0x0000 },
  247   [0x0e] = { 0x004F, 0x0311, 0x0000 },
  248   [0x0f] = { 0x006F, 0x0311, 0x0000 },
  249   [0x10] = { 0x0052, 0x030F, 0x0000 },
  250   [0x11] = { 0x0072, 0x030F, 0x0000 },
  251   [0x12] = { 0x0052, 0x0311, 0x0000 },
  252   [0x13] = { 0x0072, 0x0311, 0x0000 },
  253   [0x14] = { 0x0055, 0x030F, 0x0000 },
  254   [0x15] = { 0x0075, 0x030F, 0x0000 },
  255   [0x16] = { 0x0055, 0x0311, 0x0000 },
  256   [0x17] = { 0x0075, 0x0311, 0x0000 },
  257 };
  258 
  259 static const uint16_t page03[256][HFSPLUS_MAX_DECOMPOSE_LEN + 1] = {
  260   [0x10] = { 0x0306, 0x0307, 0x0000 },
  261   [0x40] = { 0x0300, 0x0000 },
  262   [0x41] = { 0x0301, 0x0000 },
  263   [0x43] = { 0x0313, 0x0000 },
  264   [0x44] = { 0x0308, 0x030D, 0x0000 },
  265   [0x74] = { 0x02B9, 0x0000 },
  266   [0x7e] = { 0x003B, 0x0000 },
  267   [0x85] = { 0x00A8, 0x030D, 0x0000 },
  268   [0x86] = { 0x0391, 0x030D, 0x0000 },
  269   [0x87] = { 0x00B7, 0x0000 },
  270   [0x88] = { 0x0395, 0x030D, 0x0000 },
  271   [0x89] = { 0x0397, 0x030D, 0x0000 },
  272   [0x8a] = { 0x0399, 0x030D, 0x0000 },
  273   [0x8c] = { 0x039F, 0x030D, 0x0000 },
  274   [0x8e] = { 0x03A5, 0x030D, 0x0000 },
  275   [0x8f] = { 0x03A9, 0x030D, 0x0000 },
  276   [0x90] = { 0x03B9, 0x0308, 0x030D, 0x0000 },
  277   [0xaa] = { 0x0399, 0x0308, 0x0000 },
  278   [0xab] = { 0x03A5, 0x0308, 0x0000 },
  279   [0xac] = { 0x03B1, 0x030D, 0x0000 },
  280   [0xad] = { 0x03B5, 0x030D, 0x0000 },
  281   [0xae] = { 0x03B7, 0x030D, 0x0000 },
  282   [0xaf] = { 0x03B9, 0x030D, 0x0000 },
  283   [0xb0] = { 0x03C5, 0x0308, 0x030D, 0x0000 },
  284   [0xca] = { 0x03B9, 0x0308, 0x0000 },
  285   [0xcb] = { 0x03C5, 0x0308, 0x0000 },
  286   [0xcc] = { 0x03BF, 0x030D, 0x0000 },
  287   [0xcd] = { 0x03C5, 0x030D, 0x0000 },
  288   [0xce] = { 0x03C9, 0x030D, 0x0000 },
  289   [0xd3] = { 0x03D2, 0x030D, 0x0000 },
  290   [0xd4] = { 0x03D2, 0x0308, 0x0000 },
  291 };
  292 
  293 static const uint16_t page04[256][HFSPLUS_MAX_DECOMPOSE_LEN + 1] = {
  294   [0x01] = { 0x0415, 0x0308, 0x0000 },
  295   [0x03] = { 0x0413, 0x0301, 0x0000 },
  296   [0x07] = { 0x0406, 0x0308, 0x0000 },
  297   [0x0c] = { 0x041A, 0x0301, 0x0000 },
  298   [0x0e] = { 0x0423, 0x0306, 0x0000 },
  299   [0x19] = { 0x0418, 0x0306, 0x0000 },
  300   [0x39] = { 0x0438, 0x0306, 0x0000 },
  301   [0x51] = { 0x0435, 0x0308, 0x0000 },
  302   [0x53] = { 0x0433, 0x0301, 0x0000 },
  303   [0x57] = { 0x0456, 0x0308, 0x0000 },
  304   [0x5c] = { 0x043A, 0x0301, 0x0000 },
  305   [0x5e] = { 0x0443, 0x0306, 0x0000 },
  306   [0x76] = { 0x0474, 0x030F, 0x0000 },
  307   [0x77] = { 0x0475, 0x030F, 0x0000 },
  308   [0xc1] = { 0x0416, 0x0306, 0x0000 },
  309   [0xc2] = { 0x0436, 0x0306, 0x0000 },
  310   [0xd0] = { 0x0410, 0x0306, 0x0000 },
  311   [0xd1] = { 0x0430, 0x0306, 0x0000 },
  312   [0xd2] = { 0x0410, 0x0308, 0x0000 },
  313   [0xd3] = { 0x0430, 0x0308, 0x0000 },
  314   [0xd4] = { 0x00C6, 0x0000 },
  315   [0xd5] = { 0x00E6, 0x0000 },
  316   [0xd6] = { 0x0415, 0x0306, 0x0000 },
  317   [0xd7] = { 0x0435, 0x0306, 0x0000 },
  318   [0xd8] = { 0x018F, 0x0000 },
  319   [0xd9] = { 0x0259, 0x0000 },
  320   [0xda] = { 0x018F, 0x0308, 0x0000 },
  321   [0xdb] = { 0x0259, 0x0308, 0x0000 },
  322   [0xdc] = { 0x0416, 0x0308, 0x0000 },
  323   [0xdd] = { 0x0436, 0x0308, 0x0000 },
  324   [0xde] = { 0x0417, 0x0308, 0x0000 },
  325   [0xdf] = { 0x0437, 0x0308, 0x0000 },
  326   [0xe0] = { 0x01B7, 0x0000 },
  327   [0xe1] = { 0x0292, 0x0000 },
  328   [0xe2] = { 0x0418, 0x0304, 0x0000 },
  329   [0xe3] = { 0x0438, 0x0304, 0x0000 },
  330   [0xe4] = { 0x0418, 0x0308, 0x0000 },
  331   [0xe5] = { 0x0438, 0x0308, 0x0000 },
  332   [0xe6] = { 0x041E, 0x0308, 0x0000 },
  333   [0xe7] = { 0x043E, 0x0308, 0x0000 },
  334   [0xe8] = { 0x019F, 0x0000 },
  335   [0xe9] = { 0x0275, 0x0000 },
  336   [0xea] = { 0x019F, 0x0308, 0x0000 },
  337   [0xeb] = { 0x0275, 0x0308, 0x0000 },
  338   [0xee] = { 0x0423, 0x0304, 0x0000 },
  339   [0xef] = { 0x0443, 0x0304, 0x0000 },
  340   [0xf0] = { 0x0423, 0x0308, 0x0000 },
  341   [0xf1] = { 0x0443, 0x0308, 0x0000 },
  342   [0xf2] = { 0x0423, 0x030B, 0x0000 },
  343   [0xf3] = { 0x0443, 0x030B, 0x0000 },
  344   [0xf4] = { 0x0427, 0x0308, 0x0000 },
  345   [0xf5] = { 0x0447, 0x0308, 0x0000 },
  346   [0xf8] = { 0x042B, 0x0308, 0x0000 },
  347   [0xf9] = { 0x044B, 0x0308, 0x0000 },
  348 };
  349 
  350 static const uint16_t page09[256][HFSPLUS_MAX_DECOMPOSE_LEN + 1] = {
  351   [0x29] = { 0x0928, 0x093C, 0x0000 },
  352   [0x31] = { 0x0930, 0x093C, 0x0000 },
  353   [0x34] = { 0x0933, 0x093C, 0x0000 },
  354   [0x58] = { 0x0915, 0x093C, 0x0000 },
  355   [0x59] = { 0x0916, 0x093C, 0x0000 },
  356   [0x5a] = { 0x0917, 0x093C, 0x0000 },
  357   [0x5b] = { 0x091C, 0x093C, 0x0000 },
  358   [0x5c] = { 0x0921, 0x093C, 0x0000 },
  359   [0x5d] = { 0x0922, 0x093C, 0x0000 },
  360   [0x5e] = { 0x092B, 0x093C, 0x0000 },
  361   [0x5f] = { 0x092F, 0x093C, 0x0000 },
  362   [0xb0] = { 0x09AC, 0x09BC, 0x0000 },
  363   [0xcb] = { 0x09C7, 0x09BE, 0x0000 },
  364   [0xcc] = { 0x09C7, 0x09D7, 0x0000 },
  365   [0xdc] = { 0x09A1, 0x09BC, 0x0000 },
  366   [0xdd] = { 0x09A2, 0x09BC, 0x0000 },
  367   [0xdf] = { 0x09AF, 0x09BC, 0x0000 },
  368 };
  369 
  370 static const uint16_t page0a[256][HFSPLUS_MAX_DECOMPOSE_LEN + 1] = {
  371   [0x59] = { 0x0A16, 0x0A3C, 0x0000 },
  372   [0x5a] = { 0x0A17, 0x0A3C, 0x0000 },
  373   [0x5b] = { 0x0A1C, 0x0A3C, 0x0000 },
  374   [0x5c] = { 0x0A21, 0x0A3C, 0x0000 },
  375   [0x5e] = { 0x0A2B, 0x0A3C, 0x0000 },
  376 };
  377 
  378 static const uint16_t page0b[256][HFSPLUS_MAX_DECOMPOSE_LEN + 1] = {
  379   [0x48] = { 0x0B47, 0x0B56, 0x0000 },
  380   [0x4b] = { 0x0B47, 0x0B3E, 0x0000 },
  381   [0x4c] = { 0x0B47, 0x0B57, 0x0000 },
  382   [0x5c] = { 0x0B21, 0x0B3C, 0x0000 },
  383   [0x5d] = { 0x0B22, 0x0B3C, 0x0000 },
  384   [0x5f] = { 0x0B2F, 0x0B3C, 0x0000 },
  385   [0x94] = { 0x0B92, 0x0BD7, 0x0000 },
  386   [0xca] = { 0x0BC6, 0x0BBE, 0x0000 },
  387   [0xcb] = { 0x0BC7, 0x0BBE, 0x0000 },
  388   [0xcc] = { 0x0BC6, 0x0BD7, 0x0000 },
  389 };
  390 
  391 static const uint16_t page0c[256][HFSPLUS_MAX_DECOMPOSE_LEN + 1] = {
  392   [0x48] = { 0x0C46, 0x0C56, 0x0000 },
  393   [0xc0] = { 0x0CBF, 0x0CD5, 0x0000 },
  394   [0xc7] = { 0x0CC6, 0x0CD5, 0x0000 },
  395   [0xc8] = { 0x0CC6, 0x0CD6, 0x0000 },
  396   [0xca] = { 0x0CC6, 0x0CC2, 0x0000 },
  397   [0xcb] = { 0x0CC6, 0x0CC2, 0x0CD5, 0x0000 },
  398 };
  399 
  400 static const uint16_t page0d[256][HFSPLUS_MAX_DECOMPOSE_LEN + 1] = {
  401   [0x4a] = { 0x0D46, 0x0D3E, 0x0000 },
  402   [0x4b] = { 0x0D47, 0x0D3E, 0x0000 },
  403   [0x4c] = { 0x0D46, 0x0D57, 0x0000 },
  404 };
  405 
  406 static const uint16_t page0e[256][HFSPLUS_MAX_DECOMPOSE_LEN + 1] = {
  407   [0x33] = { 0x0E4D, 0x0E32, 0x0000 },
  408   [0xb3] = { 0x0ECD, 0x0EB2, 0x0000 },
  409 };
  410 
  411 static const uint16_t page0f[256][HFSPLUS_MAX_DECOMPOSE_LEN + 1] = {
  412   [0x43] = { 0x0F42, 0x0FB7, 0x0000 },
  413   [0x4d] = { 0x0F4C, 0x0FB7, 0x0000 },
  414   [0x52] = { 0x0F51, 0x0FB7, 0x0000 },
  415   [0x57] = { 0x0F56, 0x0FB7, 0x0000 },
  416   [0x5c] = { 0x0F5B, 0x0FB7, 0x0000 },
  417   [0x69] = { 0x0F40, 0x0FB5, 0x0000 },
  418   [0x73] = { 0x0F72, 0x0F71, 0x0000 },
  419   [0x75] = { 0x0F74, 0x0F71, 0x0000 },
  420   [0x76] = { 0x0FB2, 0x0F80, 0x0000 },
  421   [0x77] = { 0x0FB2, 0x0F80, 0x0F71, 0x0000 },
  422   [0x78] = { 0x0FB3, 0x0F80, 0x0000 },
  423   [0x79] = { 0x0FB3, 0x0F80, 0x0F71, 0x0000 },
  424   [0x81] = { 0x0F80, 0x0F71, 0x0000 },
  425   [0x93] = { 0x0F92, 0x0FB7, 0x0000 },
  426   [0x9d] = { 0x0F9C, 0x0FB7, 0x0000 },
  427   [0xa2] = { 0x0FA1, 0x0FB7, 0x0000 },
  428   [0xa7] = { 0x0FA6, 0x0FB7, 0x0000 },
  429   [0xac] = { 0x0FAB, 0x0FB7, 0x0000 },
  430   [0xb9] = { 0x0F90, 0x0FB5, 0x0000 },
  431 };
  432 
  433 static const uint16_t page1e[256][HFSPLUS_MAX_DECOMPOSE_LEN + 1] = {
  434   [0x00] = { 0x0041, 0x0325, 0x0000 },
  435   [0x01] = { 0x0061, 0x0325, 0x0000 },
  436   [0x02] = { 0x0042, 0x0307, 0x0000 },
  437   [0x03] = { 0x0062, 0x0307, 0x0000 },
  438   [0x04] = { 0x0042, 0x0323, 0x0000 },
  439   [0x05] = { 0x0062, 0x0323, 0x0000 },
  440   [0x06] = { 0x0042, 0x0331, 0x0000 },
  441   [0x07] = { 0x0062, 0x0331, 0x0000 },
  442   [0x08] = { 0x0043, 0x0327, 0x0301, 0x0000 },
  443   [0x09] = { 0x0063, 0x0327, 0x0301, 0x0000 },
  444   [0x0a] = { 0x0044, 0x0307, 0x0000 },
  445   [0x0b] = { 0x0064, 0x0307, 0x0000 },
  446   [0x0c] = { 0x0044, 0x0323, 0x0000 },
  447   [0x0d] = { 0x0064, 0x0323, 0x0000 },
  448   [0x0e] = { 0x0044, 0x0331, 0x0000 },
  449   [0x0f] = { 0x0064, 0x0331, 0x0000 },
  450   [0x10] = { 0x0044, 0x0327, 0x0000 },
  451   [0x11] = { 0x0064, 0x0327, 0x0000 },
  452   [0x12] = { 0x0044, 0x032D, 0x0000 },
  453   [0x13] = { 0x0064, 0x032D, 0x0000 },
  454   [0x14] = { 0x0045, 0x0304, 0x0300, 0x0000 },
  455   [0x15] = { 0x0065, 0x0304, 0x0300, 0x0000 },
  456   [0x16] = { 0x0045, 0x0304, 0x0301, 0x0000 },
  457   [0x17] = { 0x0065, 0x0304, 0x0301, 0x0000 },
  458   [0x18] = { 0x0045, 0x032D, 0x0000 },
  459   [0x19] = { 0x0065, 0x032D, 0x0000 },
  460   [0x1a] = { 0x0045, 0x0330, 0x0000 },
  461   [0x1b] = { 0x0065, 0x0330, 0x0000 },
  462   [0x1c] = { 0x0045, 0x0327, 0x0306, 0x0000 },
  463   [0x1d] = { 0x0065, 0x0327, 0x0306, 0x0000 },
  464   [0x1e] = { 0x0046, 0x0307, 0x0000 },
  465   [0x1f] = { 0x0066, 0x0307, 0x0000 },
  466   [0x20] = { 0x0047, 0x0304, 0x0000 },
  467   [0x21] = { 0x0067, 0x0304, 0x0000 },
  468   [0x22] = { 0x0048, 0x0307, 0x0000 },
  469   [0x23] = { 0x0068, 0x0307, 0x0000 },
  470   [0x24] = { 0x0048, 0x0323, 0x0000 },
  471   [0x25] = { 0x0068, 0x0323, 0x0000 },
  472   [0x26] = { 0x0048, 0x0308, 0x0000 },
  473   [0x27] = { 0x0068, 0x0308, 0x0000 },
  474   [0x28] = { 0x0048, 0x0327, 0x0000 },
  475   [0x29] = { 0x0068, 0x0327, 0x0000 },
  476   [0x2a] = { 0x0048, 0x032E, 0x0000 },
  477   [0x2b] = { 0x0068, 0x032E, 0x0000 },
  478   [0x2c] = { 0x0049, 0x0330, 0x0000 },
  479   [0x2d] = { 0x0069, 0x0330, 0x0000 },
  480   [0x2e] = { 0x0049, 0x0308, 0x0301, 0x0000 },
  481   [0x2f] = { 0x0069, 0x0308, 0x0301, 0x0000 },
  482   [0x30] = { 0x004B, 0x0301, 0x0000 },
  483   [0x31] = { 0x006B, 0x0301, 0x0000 },
  484   [0x32] = { 0x004B, 0x0323, 0x0000 },
  485   [0x33] = { 0x006B, 0x0323, 0x0000 },
  486   [0x34] = { 0x004B, 0x0331, 0x0000 },
  487   [0x35] = { 0x006B, 0x0331, 0x0000 },
  488   [0x36] = { 0x004C, 0x0323, 0x0000 },
  489   [0x37] = { 0x006C, 0x0323, 0x0000 },
  490   [0x38] = { 0x004C, 0x0323, 0x0304, 0x0000 },
  491   [0x39] = { 0x006C, 0x0323, 0x0304, 0x0000 },
  492   [0x3a] = { 0x004C, 0x0331, 0x0000 },
  493   [0x3b] = { 0x006C, 0x0331, 0x0000 },
  494   [0x3c] = { 0x004C, 0x032D, 0x0000 },
  495   [0x3d] = { 0x006C, 0x032D, 0x0000 },
  496   [0x3e] = { 0x004D, 0x0301, 0x0000 },
  497   [0x3f] = { 0x006D, 0x0301, 0x0000 },
  498   [0x40] = { 0x004D, 0x0307, 0x0000 },
  499   [0x41] = { 0x006D, 0x0307, 0x0000 },
  500   [0x42] = { 0x004D, 0x0323, 0x0000 },
  501   [0x43] = { 0x006D, 0x0323, 0x0000 },
  502   [0x44] = { 0x004E, 0x0307, 0x0000 },
  503   [0x45] = { 0x006E, 0x0307, 0x0000 },
  504   [0x46] = { 0x004E, 0x0323, 0x0000 },
  505   [0x47] = { 0x006E, 0x0323, 0x0000 },
  506   [0x48] = { 0x004E, 0x0331, 0x0000 },
  507   [0x49] = { 0x006E, 0x0331, 0x0000 },
  508   [0x4a] = { 0x004E, 0x032D, 0x0000 },
  509   [0x4b] = { 0x006E, 0x032D, 0x0000 },
  510   [0x4c] = { 0x004F, 0x0303, 0x0301, 0x0000 },
  511   [0x4d] = { 0x006F, 0x0303, 0x0301, 0x0000 },
  512   [0x4e] = { 0x004F, 0x0303, 0x0308, 0x0000 },
  513   [0x4f] = { 0x006F, 0x0303, 0x0308, 0x0000 },
  514   [0x50] = { 0x004F, 0x0304, 0x0300, 0x0000 },
  515   [0x51] = { 0x006F, 0x0304, 0x0300, 0x0000 },
  516   [0x52] = { 0x004F, 0x0304, 0x0301, 0x0000 },
  517   [0x53] = { 0x006F, 0x0304, 0x0301, 0x0000 },
  518   [0x54] = { 0x0050, 0x0301, 0x0000 },
  519   [0x55] = { 0x0070, 0x0301, 0x0000 },
  520   [0x56] = { 0x0050, 0x0307, 0x0000 },
  521   [0x57] = { 0x0070, 0x0307, 0x0000 },
  522   [0x58] = { 0x0052, 0x0307, 0x0000 },
  523   [0x59] = { 0x0072, 0x0307, 0x0000 },
  524   [0x5a] = { 0x0052, 0x0323, 0x0000 },
  525   [0x5b] = { 0x0072, 0x0323, 0x0000 },
  526   [0x5c] = { 0x0052, 0x0323, 0x0304, 0x0000 },
  527   [0x5d] = { 0x0072, 0x0323, 0x0304, 0x0000 },
  528   [0x5e] = { 0x0052, 0x0331, 0x0000 },
  529   [0x5f] = { 0x0072, 0x0331, 0x0000 },
  530   [0x60] = { 0x0053, 0x0307, 0x0000 },
  531   [0x61] = { 0x0073, 0x0307, 0x0000 },
  532   [0x62] = { 0x0053, 0x0323, 0x0000 },
  533   [0x63] = { 0x0073, 0x0323, 0x0000 },
  534   [0x64] = { 0x0053, 0x0301, 0x0307, 0x0000 },
  535   [0x65] = { 0x0073, 0x0301, 0x0307, 0x0000 },
  536   [0x66] = { 0x0053, 0x030C, 0x0307, 0x0000 },
  537   [0x67] = { 0x0073, 0x030C, 0x0307, 0x0000 },
  538   [0x68] = { 0x0053, 0x0323, 0x0307, 0x0000 },
  539   [0x69] = { 0x0073, 0x0323, 0x0307, 0x0000 },
  540   [0x6a] = { 0x0054, 0x0307, 0x0000 },
  541   [0x6b] = { 0x0074, 0x0307, 0x0000 },
  542   [0x6c] = { 0x0054, 0x0323, 0x0000 },
  543   [0x6d] = { 0x0074, 0x0323, 0x0000 },
  544   [0x6e] = { 0x0054, 0x0331, 0x0000 },
  545   [0x6f] = { 0x0074, 0x0331, 0x0000 },
  546   [0x70] = { 0x0054, 0x032D, 0x0000 },
  547   [0x71] = { 0x0074, 0x032D, 0x0000 },
  548   [0x72] = { 0x0055, 0x0324, 0x0000 },
  549   [0x73] = { 0x0075, 0x0324, 0x0000 },
  550   [0x74] = { 0x0055, 0x0330, 0x0000 },
  551   [0x75] = { 0x0075, 0x0330, 0x0000 },
  552   [0x76] = { 0x0055, 0x032D, 0x0000 },
  553   [0x77] = { 0x0075, 0x032D, 0x0000 },
  554   [0x78] = { 0x0055, 0x0303, 0x0301, 0x0000 },
  555   [0x79] = { 0x0075, 0x0303, 0x0301, 0x0000 },
  556   [0x7a] = { 0x0055, 0x0304, 0x0308, 0x0000 },
  557   [0x7b] = { 0x0075, 0x0304, 0x0308, 0x0000 },
  558   [0x7c] = { 0x0056, 0x0303, 0x0000 },
  559   [0x7d] = { 0x0076, 0x0303, 0x0000 },
  560   [0x7e] = { 0x0056, 0x0323, 0x0000 },
  561   [0x7f] = { 0x0076, 0x0323, 0x0000 },
  562   [0x80] = { 0x0057, 0x0300, 0x0000 },
  563   [0x81] = { 0x0077, 0x0300, 0x0000 },
  564   [0x82] = { 0x0057, 0x0301, 0x0000 },
  565   [0x83] = { 0x0077, 0x0301, 0x0000 },
  566   [0x84] = { 0x0057, 0x0308, 0x0000 },
  567   [0x85] = { 0x0077, 0x0308, 0x0000 },
  568   [0x86] = { 0x0057, 0x0307, 0x0000 },
  569   [0x87] = { 0x0077, 0x0307, 0x0000 },
  570   [0x88] = { 0x0057, 0x0323, 0x0000 },
  571   [0x89] = { 0x0077, 0x0323, 0x0000 },
  572   [0x8a] = { 0x0058, 0x0307, 0x0000 },
  573   [0x8b] = { 0x0078, 0x0307, 0x0000 },
  574   [0x8c] = { 0x0058, 0x0308, 0x0000 },
  575   [0x8d] = { 0x0078, 0x0308, 0x0000 },
  576   [0x8e] = { 0x0059, 0x0307, 0x0000 },
  577   [0x8f] = { 0x0079, 0x0307, 0x0000 },
  578   [0x90] = { 0x005A, 0x0302, 0x0000 },
  579   [0x91] = { 0x007A, 0x0302, 0x0000 },
  580   [0x92] = { 0x005A, 0x0323, 0x0000 },
  581   [0x93] = { 0x007A, 0x0323, 0x0000 },
  582   [0x94] = { 0x005A, 0x0331, 0x0000 },
  583   [0x95] = { 0x007A, 0x0331, 0x0000 },
  584   [0x96] = { 0x0068, 0x0331, 0x0000 },
  585   [0x97] = { 0x0074, 0x0308, 0x0000 },
  586   [0x98] = { 0x0077, 0x030A, 0x0000 },
  587   [0x99] = { 0x0079, 0x030A, 0x0000 },
  588   [0x9b] = { 0x017F, 0x0307, 0x0000 },
  589   [0xa0] = { 0x0041, 0x0323, 0x0000 },
  590   [0xa1] = { 0x0061, 0x0323, 0x0000 },
  591   [0xa2] = { 0x0041, 0x0309, 0x0000 },
  592   [0xa3] = { 0x0061, 0x0309, 0x0000 },
  593   [0xa4] = { 0x0041, 0x0302, 0x0301, 0x0000 },
  594   [0xa5] = { 0x0061, 0x0302, 0x0301, 0x0000 },
  595   [0xa6] = { 0x0041, 0x0302, 0x0300, 0x0000 },
  596   [0xa7] = { 0x0061, 0x0302, 0x0300, 0x0000 },
  597   [0xa8] = { 0x0041, 0x0302, 0x0309, 0x0000 },
  598   [0xa9] = { 0x0061, 0x0302, 0x0309, 0x0000 },
  599   [0xaa] = { 0x0041, 0x0302, 0x0303, 0x0000 },
  600   [0xab] = { 0x0061, 0x0302, 0x0303, 0x0000 },
  601   [0xac] = { 0x0041, 0x0323, 0x0302, 0x0000 },
  602   [0xad] = { 0x0061, 0x0323, 0x0302, 0x0000 },
  603   [0xae] = { 0x0041, 0x0306, 0x0301, 0x0000 },
  604   [0xaf] = { 0x0061, 0x0306, 0x0301, 0x0000 },
  605   [0xb0] = { 0x0041, 0x0306, 0x0300, 0x0000 },
  606   [0xb1] = { 0x0061, 0x0306, 0x0300, 0x0000 },
  607   [0xb2] = { 0x0041, 0x0306, 0x0309, 0x0000 },
  608   [0xb3] = { 0x0061, 0x0306, 0x0309, 0x0000 },
  609   [0xb4] = { 0x0041, 0x0306, 0x0303, 0x0000 },
  610   [0xb5] = { 0x0061, 0x0306, 0x0303, 0x0000 },
  611   [0xb6] = { 0x0041, 0x0323, 0x0306, 0x0000 },
  612   [0xb7] = { 0x0061, 0x0323, 0x0306, 0x0000 },
  613   [0xb8] = { 0x0045, 0x0323, 0x0000 },
  614   [0xb9] = { 0x0065, 0x0323, 0x0000 },
  615   [0xba] = { 0x0045, 0x0309, 0x0000 },
  616   [0xbb] = { 0x0065, 0x0309, 0x0000 },
  617   [0xbc] = { 0x0045, 0x0303, 0x0000 },
  618   [0xbd] = { 0x0065, 0x0303, 0x0000 },
  619   [0xbe] = { 0x0045, 0x0302, 0x0301, 0x0000 },
  620   [0xbf] = { 0x0065, 0x0302, 0x0301, 0x0000 },
  621   [0xc0] = { 0x0045, 0x0302, 0x0300, 0x0000 },
  622   [0xc1] = { 0x0065, 0x0302, 0x0300, 0x0000 },
  623   [0xc2] = { 0x0045, 0x0302, 0x0309, 0x0000 },
  624   [0xc3] = { 0x0065, 0x0302, 0x0309, 0x0000 },
  625   [0xc4] = { 0x0045, 0x0302, 0x0303, 0x0000 },
  626   [0xc5] = { 0x0065, 0x0302, 0x0303, 0x0000 },
  627   [0xc6] = { 0x0045, 0x0323, 0x0302, 0x0000 },
  628   [0xc7] = { 0x0065, 0x0323, 0x0302, 0x0000 },
  629   [0xc8] = { 0x0049, 0x0309, 0x0000 },
  630   [0xc9] = { 0x0069, 0x0309, 0x0000 },
  631   [0xca] = { 0x0049, 0x0323, 0x0000 },
  632   [0xcb] = { 0x0069, 0x0323, 0x0000 },
  633   [0xcc] = { 0x004F, 0x0323, 0x0000 },
  634   [0xcd] = { 0x006F, 0x0323, 0x0000 },
  635   [0xce] = { 0x004F, 0x0309, 0x0000 },
  636   [0xcf] = { 0x006F, 0x0309, 0x0000 },
  637   [0xd0] = { 0x004F, 0x0302, 0x0301, 0x0000 },
  638   [0xd1] = { 0x006F, 0x0302, 0x0301, 0x0000 },
  639   [0xd2] = { 0x004F, 0x0302, 0x0300, 0x0000 },
  640   [0xd3] = { 0x006F, 0x0302, 0x0300, 0x0000 },
  641   [0xd4] = { 0x004F, 0x0302, 0x0309, 0x0000 },
  642   [0xd5] = { 0x006F, 0x0302, 0x0309, 0x0000 },
  643   [0xd6] = { 0x004F, 0x0302, 0x0303, 0x0000 },
  644   [0xd7] = { 0x006F, 0x0302, 0x0303, 0x0000 },
  645   [0xd8] = { 0x004F, 0x0323, 0x0302, 0x0000 },
  646   [0xd9] = { 0x006F, 0x0323, 0x0302, 0x0000 },
  647   [0xda] = { 0x004F, 0x031B, 0x0301, 0x0000 },
  648   [0xdb] = { 0x006F, 0x031B, 0x0301, 0x0000 },
  649   [0xdc] = { 0x004F, 0x031B, 0x0300, 0x0000 },
  650   [0xdd] = { 0x006F, 0x031B, 0x0300, 0x0000 },
  651   [0xde] = { 0x004F, 0x031B, 0x0309, 0x0000 },
  652   [0xdf] = { 0x006F, 0x031B, 0x0309, 0x0000 },
  653   [0xe0] = { 0x004F, 0x031B, 0x0303, 0x0000 },
  654   [0xe1] = { 0x006F, 0x031B, 0x0303, 0x0000 },
  655   [0xe2] = { 0x004F, 0x031B, 0x0323, 0x0000 },
  656   [0xe3] = { 0x006F, 0x031B, 0x0323, 0x0000 },
  657   [0xe4] = { 0x0055, 0x0323, 0x0000 },
  658   [0xe5] = { 0x0075, 0x0323, 0x0000 },
  659   [0xe6] = { 0x0055, 0x0309, 0x0000 },
  660   [0xe7] = { 0x0075, 0x0309, 0x0000 },
  661   [0xe8] = { 0x0055, 0x031B, 0x0301, 0x0000 },
  662   [0xe9] = { 0x0075, 0x031B, 0x0301, 0x0000 },
  663   [0xea] = { 0x0055, 0x031B, 0x0300, 0x0000 },
  664   [0xeb] = { 0x0075, 0x031B, 0x0300, 0x0000 },
  665   [0xec] = { 0x0055, 0x031B, 0x0309, 0x0000 },
  666   [0xed] = { 0x0075, 0x031B, 0x0309, 0x0000 },
  667   [0xee] = { 0x0055, 0x031B, 0x0303, 0x0000 },
  668   [0xef] = { 0x0075, 0x031B, 0x0303, 0x0000 },
  669   [0xf0] = { 0x0055, 0x031B, 0x0323, 0x0000 },
  670   [0xf1] = { 0x0075, 0x031B, 0x0323, 0x0000 },
  671   [0xf2] = { 0x0059, 0x0300, 0x0000 },
  672   [0xf3] = { 0x0079, 0x0300, 0x0000 },
  673   [0xf4] = { 0x0059, 0x0323, 0x0000 },
  674   [0xf5] = { 0x0079, 0x0323, 0x0000 },
  675   [0xf6] = { 0x0059, 0x0309, 0x0000 },
  676   [0xf7] = { 0x0079, 0x0309, 0x0000 },
  677   [0xf8] = { 0x0059, 0x0303, 0x0000 },
  678   [0xf9] = { 0x0079, 0x0303, 0x0000 },
  679 };
  680 
  681 static const uint16_t page1f[256][HFSPLUS_MAX_DECOMPOSE_LEN + 1] = {
  682   [0x00] = { 0x03B1, 0x0313, 0x0000 },
  683   [0x01] = { 0x03B1, 0x0314, 0x0000 },
  684   [0x02] = { 0x03B1, 0x0313, 0x0300, 0x0000 },
  685   [0x03] = { 0x03B1, 0x0314, 0x0300, 0x0000 },
  686   [0x04] = { 0x03B1, 0x0313, 0x0301, 0x0000 },
  687   [0x05] = { 0x03B1, 0x0314, 0x0301, 0x0000 },
  688   [0x06] = { 0x03B1, 0x0313, 0x0342, 0x0000 },
  689   [0x07] = { 0x03B1, 0x0314, 0x0342, 0x0000 },
  690   [0x08] = { 0x0391, 0x0313, 0x0000 },
  691   [0x09] = { 0x0391, 0x0314, 0x0000 },
  692   [0x0a] = { 0x0391, 0x0313, 0x0300, 0x0000 },
  693   [0x0b] = { 0x0391, 0x0314, 0x0300, 0x0000 },
  694   [0x0c] = { 0x0391, 0x0313, 0x0301, 0x0000 },
  695   [0x0d] = { 0x0391, 0x0314, 0x0301, 0x0000 },
  696   [0x0e] = { 0x0391, 0x0313, 0x0342, 0x0000 },
  697   [0x0f] = { 0x0391, 0x0314, 0x0342, 0x0000 },
  698   [0x10] = { 0x03B5, 0x0313, 0x0000 },
  699   [0x11] = { 0x03B5, 0x0314, 0x0000 },
  700   [0x12] = { 0x03B5, 0x0313, 0x0300, 0x0000 },
  701   [0x13] = { 0x03B5, 0x0314, 0x0300, 0x0000 },
  702   [0x14] = { 0x03B5, 0x0313, 0x0301, 0x0000 },
  703   [0x15] = { 0x03B5, 0x0314, 0x0301, 0x0000 },
  704   [0x18] = { 0x0395, 0x0313, 0x0000 },
  705   [0x19] = { 0x0395, 0x0314, 0x0000 },
  706   [0x1a] = { 0x0395, 0x0313, 0x0300, 0x0000 },
  707   [0x1b] = { 0x0395, 0x0314, 0x0300, 0x0000 },
  708   [0x1c] = { 0x0395, 0x0313, 0x0301, 0x0000 },
  709   [0x1d] = { 0x0395, 0x0314, 0x0301, 0x0000 },
  710   [0x20] = { 0x03B7, 0x0313, 0x0000 },
  711   [0x21] = { 0x03B7, 0x0314, 0x0000 },
  712   [0x22] = { 0x03B7, 0x0313, 0x0300, 0x0000 },
  713   [0x23] = { 0x03B7, 0x0314, 0x0300, 0x0000 },
  714   [0x24] = { 0x03B7, 0x0313, 0x0301, 0x0000 },
  715   [0x25] = { 0x03B7, 0x0314, 0x0301, 0x0000 },
  716   [0x26] = { 0x03B7, 0x0313, 0x0342, 0x0000 },
  717   [0x27] = { 0x03B7, 0x0314, 0x0342, 0x0000 },
  718   [0x28] = { 0x0397, 0x0313, 0x0000 },
  719   [0x29] = { 0x0397, 0x0314, 0x0000 },
  720   [0x2a] = { 0x0397, 0x0313, 0x0300, 0x0000 },
  721   [0x2b] = { 0x0397, 0x0314, 0x0300, 0x0000 },
  722   [0x2c] = { 0x0397, 0x0313, 0x0301, 0x0000 },
  723   [0x2d] = { 0x0397, 0x0314, 0x0301, 0x0000 },
  724   [0x2e] = { 0x0397, 0x0313, 0x0342, 0x0000 },
  725   [0x2f] = { 0x0397, 0x0314, 0x0342, 0x0000 },
  726   [0x30] = { 0x03B9, 0x0313, 0x0000 },
  727   [0x31] = { 0x03B9, 0x0314, 0x0000 },
  728   [0x32] = { 0x03B9, 0x0313, 0x0300, 0x0000 },
  729   [0x33] = { 0x03B9, 0x0314, 0x0300, 0x0000 },
  730   [0x34] = { 0x03B9, 0x0313, 0x0301, 0x0000 },
  731   [0x35] = { 0x03B9, 0x0314, 0x0301, 0x0000 },
  732   [0x36] = { 0x03B9, 0x0313, 0x0342, 0x0000 },
  733   [0x37] = { 0x03B9, 0x0314, 0x0342, 0x0000 },
  734   [0x38] = { 0x0399, 0x0313, 0x0000 },
  735   [0x39] = { 0x0399, 0x0314, 0x0000 },
  736   [0x3a] = { 0x0399, 0x0313, 0x0300, 0x0000 },
  737   [0x3b] = { 0x0399, 0x0314, 0x0300, 0x0000 },
  738   [0x3c] = { 0x0399, 0x0313, 0x0301, 0x0000 },
  739   [0x3d] = { 0x0399, 0x0314, 0x0301, 0x0000 },
  740   [0x3e] = { 0x0399, 0x0313, 0x0342, 0x0000 },
  741   [0x3f] = { 0x0399, 0x0314, 0x0342, 0x0000 },
  742   [0x40] = { 0x03BF, 0x0313, 0x0000 },
  743   [0x41] = { 0x03BF, 0x0314, 0x0000 },
  744   [0x42] = { 0x03BF, 0x0313, 0x0300, 0x0000 },
  745   [0x43] = { 0x03BF, 0x0314, 0x0300, 0x0000 },
  746   [0x44] = { 0x03BF, 0x0313, 0x0301, 0x0000 },
  747   [0x45] = { 0x03BF, 0x0314, 0x0301, 0x0000 },
  748   [0x48] = { 0x039F, 0x0313, 0x0000 },
  749   [0x49] = { 0x039F, 0x0314, 0x0000 },
  750   [0x4a] = { 0x039F, 0x0313, 0x0300, 0x0000 },
  751   [0x4b] = { 0x039F, 0x0314, 0x0300, 0x0000 },
  752   [0x4c] = { 0x039F, 0x0313, 0x0301, 0x0000 },
  753   [0x4d] = { 0x039F, 0x0314, 0x0301, 0x0000 },
  754   [0x50] = { 0x03C5, 0x0313, 0x0000 },
  755   [0x51] = { 0x03C5, 0x0314, 0x0000 },
  756   [0x52] = { 0x03C5, 0x0313, 0x0300, 0x0000 },
  757   [0x53] = { 0x03C5, 0x0314, 0x0300, 0x0000 },
  758   [0x54] = { 0x03C5, 0x0313, 0x0301, 0x0000 },
  759   [0x55] = { 0x03C5, 0x0314, 0x0301, 0x0000 },
  760   [0x56] = { 0x03C5, 0x0313, 0x0342, 0x0000 },
  761   [0x57] = { 0x03C5, 0x0314, 0x0342, 0x0000 },
  762   [0x59] = { 0x03A5, 0x0314, 0x0000 },
  763   [0x5b] = { 0x03A5, 0x0314, 0x0300, 0x0000 },
  764   [0x5d] = { 0x03A5, 0x0314, 0x0301, 0x0000 },
  765   [0x5f] = { 0x03A5, 0x0314, 0x0342, 0x0000 },
  766   [0x60] = { 0x03C9, 0x0313, 0x0000 },
  767   [0x61] = { 0x03C9, 0x0314, 0x0000 },
  768   [0x62] = { 0x03C9, 0x0313, 0x0300, 0x0000 },
  769   [0x63] = { 0x03C9, 0x0314, 0x0300, 0x0000 },
  770   [0x64] = { 0x03C9, 0x0313, 0x0301, 0x0000 },
  771   [0x65] = { 0x03C9, 0x0314, 0x0301, 0x0000 },
  772   [0x66] = { 0x03C9, 0x0313, 0x0342, 0x0000 },
  773   [0x67] = { 0x03C9, 0x0314, 0x0342, 0x0000 },
  774   [0x68] = { 0x03A9, 0x0313, 0x0000 },
  775   [0x69] = { 0x03A9, 0x0314, 0x0000 },
  776   [0x6a] = { 0x03A9, 0x0313, 0x0300, 0x0000 },
  777   [0x6b] = { 0x03A9, 0x0314, 0x0300, 0x0000 },
  778   [0x6c] = { 0x03A9, 0x0313, 0x0301, 0x0000 },
  779   [0x6d] = { 0x03A9, 0x0314, 0x0301, 0x0000 },
  780   [0x6e] = { 0x03A9, 0x0313, 0x0342, 0x0000 },
  781   [0x6f] = { 0x03A9, 0x0314, 0x0342, 0x0000 },
  782   [0x70] = { 0x03B1, 0x0300, 0x0000 },
  783   [0x71] = { 0x03B1, 0x0301, 0x0000 },
  784   [0x72] = { 0x03B5, 0x0300, 0x0000 },
  785   [0x73] = { 0x03B5, 0x0301, 0x0000 },
  786   [0x74] = { 0x03B7, 0x0300, 0x0000 },
  787   [0x75] = { 0x03B7, 0x0301, 0x0000 },
  788   [0x76] = { 0x03B9, 0x0300, 0x0000 },
  789   [0x77] = { 0x03B9, 0x0301, 0x0000 },
  790   [0x78] = { 0x03BF, 0x0300, 0x0000 },
  791   [0x79] = { 0x03BF, 0x0301, 0x0000 },
  792   [0x7a] = { 0x03C5, 0x0300, 0x0000 },
  793   [0x7b] = { 0x03C5, 0x0301, 0x0000 },
  794   [0x7c] = { 0x03C9, 0x0300, 0x0000 },
  795   [0x7d] = { 0x03C9, 0x0301, 0x0000 },
  796   [0x80] = { 0x03B1, 0x0345, 0x0313, 0x0000 },
  797   [0x81] = { 0x03B1, 0x0345, 0x0314, 0x0000 },
  798   [0x82] = { 0x03B1, 0x0345, 0x0313, 0x0300, 0x0000 },
  799   [0x83] = { 0x03B1, 0x0345, 0x0314, 0x0300, 0x0000 },
  800   [0x84] = { 0x03B1, 0x0345, 0x0313, 0x0301, 0x0000 },
  801   [0x85] = { 0x03B1, 0x0345, 0x0314, 0x0301, 0x0000 },
  802   [0x86] = { 0x03B1, 0x0345, 0x0313, 0x0342, 0x0000 },
  803   [0x87] = { 0x03B1, 0x0345, 0x0314, 0x0342, 0x0000 },
  804   [0x88] = { 0x0391, 0x0345, 0x0313, 0x0000 },
  805   [0x89] = { 0x0391, 0x0345, 0x0314, 0x0000 },
  806   [0x8a] = { 0x0391, 0x0345, 0x0313, 0x0300, 0x0000 },
  807   [0x8b] = { 0x0391, 0x0345, 0x0314, 0x0300, 0x0000 },
  808   [0x8c] = { 0x0391, 0x0345, 0x0313, 0x0301, 0x0000 },
  809   [0x8d] = { 0x0391, 0x0345, 0x0314, 0x0301, 0x0000 },
  810   [0x8e] = { 0x0391, 0x0345, 0x0313, 0x0342, 0x0000 },
  811   [0x8f] = { 0x0391, 0x0345, 0x0314, 0x0342, 0x0000 },
  812   [0x90] = { 0x03B7, 0x0345, 0x0313, 0x0000 },
  813   [0x91] = { 0x03B7, 0x0345, 0x0314, 0x0000 },
  814   [0x92] = { 0x03B7, 0x0345, 0x0313, 0x0300, 0x0000 },
  815   [0x93] = { 0x03B7, 0x0345, 0x0314, 0x0300, 0x0000 },
  816   [0x94] = { 0x03B7, 0x0345, 0x0313, 0x0301, 0x0000 },
  817   [0x95] = { 0x03B7, 0x0345, 0x0314, 0x0301, 0x0000 },
  818   [0x96] = { 0x03B7, 0x0345, 0x0313, 0x0342, 0x0000 },
  819   [0x97] = { 0x03B7, 0x0345, 0x0314, 0x0342, 0x0000 },
  820   [0x98] = { 0x0397, 0x0345, 0x0313, 0x0000 },
  821   [0x99] = { 0x0397, 0x0345, 0x0314, 0x0000 },
  822   [0x9a] = { 0x0397, 0x0345, 0x0313, 0x0300, 0x0000 },
  823   [0x9b] = { 0x0397, 0x0345, 0x0314, 0x0300, 0x0000 },
  824   [0x9c] = { 0x0397, 0x0345, 0x0313, 0x0301, 0x0000 },
  825   [0x9d] = { 0x0397, 0x0345, 0x0314, 0x0301, 0x0000 },
  826   [0x9e] = { 0x0397, 0x0345, 0x0313, 0x0342, 0x0000 },
  827   [0x9f] = { 0x0397, 0x0345, 0x0314, 0x0342, 0x0000 },
  828   [0xa0] = { 0x03C9, 0x0345, 0x0313, 0x0000 },
  829   [0xa1] = { 0x03C9, 0x0345, 0x0314, 0x0000 },
  830   [0xa2] = { 0x03C9, 0x0345, 0x0313, 0x0300, 0x0000 },
  831   [0xa3] = { 0x03C9, 0x0345, 0x0314, 0x0300, 0x0000 },
  832   [0xa4] = { 0x03C9, 0x0345, 0x0313, 0x0301, 0x0000 },
  833   [0xa5] = { 0x03C9, 0x0345, 0x0314, 0x0301, 0x0000 },
  834   [0xa6] = { 0x03C9, 0x0345, 0x0313, 0x0342, 0x0000 },
  835   [0xa7] = { 0x03C9, 0x0345, 0x0314, 0x0342, 0x0000 },
  836   [0xa8] = { 0x03A9, 0x0345, 0x0313, 0x0000 },
  837   [0xa9] = { 0x03A9, 0x0345, 0x0314, 0x0000 },
  838   [0xaa] = { 0x03A9, 0x0345, 0x0313, 0x0300, 0x0000 },
  839   [0xab] = { 0x03A9, 0x0345, 0x0314, 0x0300, 0x0000 },
  840   [0xac] = { 0x03A9, 0x0345, 0x0313, 0x0301, 0x0000 },
  841   [0xad] = { 0x03A9, 0x0345, 0x0314, 0x0301, 0x0000 },
  842   [0xae] = { 0x03A9, 0x0345, 0x0313, 0x0342, 0x0000 },
  843   [0xaf] = { 0x03A9, 0x0345, 0x0314, 0x0342, 0x0000 },
  844   [0xb0] = { 0x03B1, 0x0306, 0x0000 },
  845   [0xb1] = { 0x03B1, 0x0304, 0x0000 },
  846   [0xb2] = { 0x03B1, 0x0345, 0x0300, 0x0000 },
  847   [0xb3] = { 0x03B1, 0x0345, 0x0000 },
  848   [0xb4] = { 0x03B1, 0x0345, 0x0301, 0x0000 },
  849   [0xb6] = { 0x03B1, 0x0342, 0x0000 },
  850   [0xb7] = { 0x03B1, 0x0345, 0x0342, 0x0000 },
  851   [0xb8] = { 0x0391, 0x0306, 0x0000 },
  852   [0xb9] = { 0x0391, 0x0304, 0x0000 },
  853   [0xba] = { 0x0391, 0x0300, 0x0000 },
  854   [0xbb] = { 0x0391, 0x0301, 0x0000 },
  855   [0xbc] = { 0x0391, 0x0345, 0x0000 },
  856   [0xbe] = { 0x03B9, 0x0000 },
  857   [0xc1] = { 0x00A8, 0x0342, 0x0000 },
  858   [0xc2] = { 0x03B7, 0x0345, 0x0300, 0x0000 },
  859   [0xc3] = { 0x03B7, 0x0345, 0x0000 },
  860   [0xc4] = { 0x03B7, 0x0345, 0x0301, 0x0000 },
  861   [0xc6] = { 0x03B7, 0x0342, 0x0000 },
  862   [0xc7] = { 0x03B7, 0x0345, 0x0342, 0x0000 },
  863   [0xc8] = { 0x0395, 0x0300, 0x0000 },
  864   [0xc9] = { 0x0395, 0x0301, 0x0000 },
  865   [0xca] = { 0x0397, 0x0300, 0x0000 },
  866   [0xcb] = { 0x0397, 0x0301, 0x0000 },
  867   [0xcc] = { 0x0397, 0x0345, 0x0000 },
  868   [0xcd] = { 0x1FBF, 0x0300, 0x0000 },
  869   [0xce] = { 0x1FBF, 0x0301, 0x0000 },
  870   [0xcf] = { 0x1FBF, 0x0342, 0x0000 },
  871   [0xd0] = { 0x03B9, 0x0306, 0x0000 },
  872   [0xd1] = { 0x03B9, 0x0304, 0x0000 },
  873   [0xd2] = { 0x03B9, 0x0308, 0x0300, 0x0000 },
  874   [0xd3] = { 0x03B9, 0x0308, 0x0301, 0x0000 },
  875   [0xd6] = { 0x03B9, 0x0342, 0x0000 },
  876   [0xd7] = { 0x03B9, 0x0308, 0x0342, 0x0000 },
  877   [0xd8] = { 0x0399, 0x0306, 0x0000 },
  878   [0xd9] = { 0x0399, 0x0304, 0x0000 },
  879   [0xda] = { 0x0399, 0x0300, 0x0000 },
  880   [0xdb] = { 0x0399, 0x0301, 0x0000 },
  881   [0xdd] = { 0x1FFE, 0x0300, 0x0000 },
  882   [0xde] = { 0x1FFE, 0x0301, 0x0000 },
  883   [0xdf] = { 0x1FFE, 0x0342, 0x0000 },
  884   [0xe0] = { 0x03C5, 0x0306, 0x0000 },
  885   [0xe1] = { 0x03C5, 0x0304, 0x0000 },
  886   [0xe2] = { 0x03C5, 0x0308, 0x0300, 0x0000 },
  887   [0xe3] = { 0x03C5, 0x0308, 0x0301, 0x0000 },
  888   [0xe4] = { 0x03C1, 0x0313, 0x0000 },
  889   [0xe5] = { 0x03C1, 0x0314, 0x0000 },
  890   [0xe6] = { 0x03C5, 0x0342, 0x0000 },
  891   [0xe7] = { 0x03C5, 0x0308, 0x0342, 0x0000 },
  892   [0xe8] = { 0x03A5, 0x0306, 0x0000 },
  893   [0xe9] = { 0x03A5, 0x0304, 0x0000 },
  894   [0xea] = { 0x03A5, 0x0300, 0x0000 },
  895   [0xeb] = { 0x03A5, 0x0301, 0x0000 },
  896   [0xec] = { 0x03A1, 0x0314, 0x0000 },
  897   [0xed] = { 0x00A8, 0x0300, 0x0000 },
  898   [0xee] = { 0x00A8, 0x0301, 0x0000 },
  899   [0xef] = { 0x0060, 0x0000 },
  900   [0xf2] = { 0x03C9, 0x0345, 0x0300, 0x0000 },
  901   [0xf3] = { 0x03C9, 0x0345, 0x0000 },
  902   [0xf4] = { 0x03BF, 0x0345, 0x0301, 0x0000 },
  903   [0xf6] = { 0x03C9, 0x0342, 0x0000 },
  904   [0xf7] = { 0x03C9, 0x0345, 0x0342, 0x0000 },
  905   [0xf8] = { 0x039F, 0x0300, 0x0000 },
  906   [0xf9] = { 0x039F, 0x0301, 0x0000 },
  907   [0xfa] = { 0x03A9, 0x0300, 0x0000 },
  908   [0xfb] = { 0x03A9, 0x0301, 0x0000 },
  909   [0xfc] = { 0x03A9, 0x0345, 0x0000 },
  910   [0xfd] = { 0x00B4, 0x0000 },
  911 };
  912 
  913 static const uint16_t page30[256][HFSPLUS_MAX_DECOMPOSE_LEN + 1] = {
  914   [0x4c] = { 0x304B, 0x3099, 0x0000 },
  915   [0x4e] = { 0x304D, 0x3099, 0x0000 },
  916   [0x50] = { 0x304F, 0x3099, 0x0000 },
  917   [0x52] = { 0x3051, 0x3099, 0x0000 },
  918   [0x54] = { 0x3053, 0x3099, 0x0000 },
  919   [0x56] = { 0x3055, 0x3099, 0x0000 },
  920   [0x58] = { 0x3057, 0x3099, 0x0000 },
  921   [0x5a] = { 0x3059, 0x3099, 0x0000 },
  922   [0x5c] = { 0x305B, 0x3099, 0x0000 },
  923   [0x5e] = { 0x305D, 0x3099, 0x0000 },
  924   [0x60] = { 0x305F, 0x3099, 0x0000 },
  925   [0x62] = { 0x3061, 0x3099, 0x0000 },
  926   [0x65] = { 0x3064, 0x3099, 0x0000 },
  927   [0x67] = { 0x3066, 0x3099, 0x0000 },
  928   [0x69] = { 0x3068, 0x3099, 0x0000 },
  929   [0x70] = { 0x306F, 0x3099, 0x0000 },
  930   [0x71] = { 0x306F, 0x309A, 0x0000 },
  931   [0x73] = { 0x3072, 0x3099, 0x0000 },
  932   [0x74] = { 0x3072, 0x309A, 0x0000 },
  933   [0x76] = { 0x3075, 0x3099, 0x0000 },
  934   [0x77] = { 0x3075, 0x309A, 0x0000 },
  935   [0x79] = { 0x3078, 0x3099, 0x0000 },
  936   [0x7a] = { 0x3078, 0x309A, 0x0000 },
  937   [0x7c] = { 0x307B, 0x3099, 0x0000 },
  938   [0x7d] = { 0x307B, 0x309A, 0x0000 },
  939   [0x94] = { 0x3046, 0x3099, 0x0000 },
  940   [0x9e] = { 0x309D, 0x3099, 0x0000 },
  941   [0xac] = { 0x30AB, 0x3099, 0x0000 },
  942   [0xae] = { 0x30AD, 0x3099, 0x0000 },
  943   [0xb0] = { 0x30AF, 0x3099, 0x0000 },
  944   [0xb2] = { 0x30B1, 0x3099, 0x0000 },
  945   [0xb4] = { 0x30B3, 0x3099, 0x0000 },
  946   [0xb6] = { 0x30B5, 0x3099, 0x0000 },
  947   [0xb8] = { 0x30B7, 0x3099, 0x0000 },
  948   [0xba] = { 0x30B9, 0x3099, 0x0000 },
  949   [0xbc] = { 0x30BB, 0x3099, 0x0000 },
  950   [0xbe] = { 0x30BD, 0x3099, 0x0000 },
  951   [0xc0] = { 0x30BF, 0x3099, 0x0000 },
  952   [0xc2] = { 0x30C1, 0x3099, 0x0000 },
  953   [0xc5] = { 0x30C4, 0x3099, 0x0000 },
  954   [0xc7] = { 0x30C6, 0x3099, 0x0000 },
  955   [0xc9] = { 0x30C8, 0x3099, 0x0000 },
  956   [0xd0] = { 0x30CF, 0x3099, 0x0000 },
  957   [0xd1] = { 0x30CF, 0x309A, 0x0000 },
  958   [0xd3] = { 0x30D2, 0x3099, 0x0000 },
  959   [0xd4] = { 0x30D2, 0x309A, 0x0000 },
  960   [0xd6] = { 0x30D5, 0x3099, 0x0000 },
  961   [0xd7] = { 0x30D5, 0x309A, 0x0000 },
  962   [0xd9] = { 0x30D8, 0x3099, 0x0000 },
  963   [0xda] = { 0x30D8, 0x309A, 0x0000 },
  964   [0xdc] = { 0x30DB, 0x3099, 0x0000 },
  965   [0xdd] = { 0x30DB, 0x309A, 0x0000 },
  966   [0xf4] = { 0x30A6, 0x3099, 0x0000 },
  967   [0xf7] = { 0x30EF, 0x3099, 0x0000 },
  968   [0xf8] = { 0x30F0, 0x3099, 0x0000 },
  969   [0xf9] = { 0x30F1, 0x3099, 0x0000 },
  970   [0xfa] = { 0x30F2, 0x3099, 0x0000 },
  971   [0xfe] = { 0x30FD, 0x3099, 0x0000 },
  972 };
  973 
  974 static const uint16_t pagefb[256][HFSPLUS_MAX_DECOMPOSE_LEN + 1] = {
  975   [0x1f] = { 0x05F2, 0x05B7, 0x0000 },
  976   [0x2a] = { 0x05E9, 0x05C1, 0x0000 },
  977   [0x2b] = { 0x05E9, 0x05C2, 0x0000 },
  978   [0x2c] = { 0x05E9, 0x05BC, 0x05C1, 0x0000 },
  979   [0x2d] = { 0x05E9, 0x05BC, 0x05C2, 0x0000 },
  980   [0x2e] = { 0x05D0, 0x05B7, 0x0000 },
  981   [0x2f] = { 0x05D0, 0x05B8, 0x0000 },
  982   [0x30] = { 0x05D0, 0x05BC, 0x0000 },
  983   [0x31] = { 0x05D1, 0x05BC, 0x0000 },
  984   [0x32] = { 0x05D2, 0x05BC, 0x0000 },
  985   [0x33] = { 0x05D3, 0x05BC, 0x0000 },
  986   [0x34] = { 0x05D4, 0x05BC, 0x0000 },
  987   [0x35] = { 0x05D5, 0x05BC, 0x0000 },
  988   [0x36] = { 0x05D6, 0x05BC, 0x0000 },
  989   [0x38] = { 0x05D8, 0x05BC, 0x0000 },
  990   [0x39] = { 0x05D9, 0x05BC, 0x0000 },
  991   [0x3a] = { 0x05DA, 0x05BC, 0x0000 },
  992   [0x3b] = { 0x05DB, 0x05BC, 0x0000 },
  993   [0x3c] = { 0x05DC, 0x05BC, 0x0000 },
  994   [0x3e] = { 0x05DE, 0x05BC, 0x0000 },
  995   [0x40] = { 0x05E0, 0x05BC, 0x0000 },
  996   [0x41] = { 0x05E1, 0x05BC, 0x0000 },
  997   [0x43] = { 0x05E3, 0x05BC, 0x0000 },
  998   [0x44] = { 0x05E4, 0x05BC, 0x0000 },
  999   [0x46] = { 0x05E6, 0x05BC, 0x0000 },
 1000   [0x47] = { 0x05E7, 0x05BC, 0x0000 },
 1001   [0x48] = { 0x05E8, 0x05BC, 0x0000 },
 1002   [0x49] = { 0x05E9, 0x05BC, 0x0000 },
 1003   [0x4a] = { 0x05EA, 0x05BC, 0x0000 },
 1004   [0x4b] = { 0x05D5, 0x05B9, 0x0000 },
 1005   [0x4c] = { 0x05D1, 0x05BF, 0x0000 },
 1006   [0x4d] = { 0x05DB, 0x05BF, 0x0000 },
 1007   [0x4e] = { 0x05E4, 0x05BF, 0x0000 },
 1008 };
 1009 
 1010 const uint16_t (*hfsplus_decompose_pages_old[256])[HFSPLUS_MAX_DECOMPOSE_LEN + 1] = {
 1011   [0x00] = page00,
 1012   [0x01] = page01,
 1013   [0x02] = page02,
 1014   [0x03] = page03,
 1015   [0x04] = page04,
 1016   [0x09] = page09,
 1017   [0x0a] = page0a,
 1018   [0x0b] = page0b,
 1019   [0x0c] = page0c,
 1020   [0x0d] = page0d,
 1021   [0x0e] = page0e,
 1022   [0x0f] = page0f,
 1023   [0x1e] = page1e,
 1024   [0x1f] = page1f,
 1025   [0x30] = page30,
 1026   [0xfb] = pagefb,
 1027 };
 1028 
 1029 /* ====================================== ts ============================= */
 1030 
 1031 /* This encodes a matrix of page and character, with a number of
 1032    HFSPLUS_MAX_DECOMPOSE_LEN + 1 elements of 16 bit each.
 1033    Initially the matrix ist filled with zeros.
 1034    1: The first element is the page number.
 1035       If it is equal or lower than the previous one, then the matrix is done.
 1036    2: The next element is the character number
 1037       If it is  equal or lower than the previous one, the page is done. Goto 1.
 1038    3: The next elements are matrix elements.
 1039       If element 0 is encountered, then the character is done. Goto 2.
 1040 */
 1041 
 1042 static const uint16_t decompose_page_data[] = {
 1043 
 1044   /* page00 */
 1045   0x00,
 1046   0xc0, 0x0041, 0x0300, 0,
 1047   0xc1, 0x0041, 0x0301, 0,
 1048   0xc2, 0x0041, 0x0302, 0,
 1049   0xc3, 0x0041, 0x0303, 0,
 1050   0xc4, 0x0041, 0x0308, 0,
 1051   0xc5, 0x0041, 0x030A, 0,
 1052   0xc7, 0x0043, 0x0327, 0,
 1053   0xc8, 0x0045, 0x0300, 0,
 1054   0xc9, 0x0045, 0x0301, 0,
 1055   0xca, 0x0045, 0x0302, 0,
 1056   0xcb, 0x0045, 0x0308, 0,
 1057   0xcc, 0x0049, 0x0300, 0,
 1058   0xcd, 0x0049, 0x0301, 0,
 1059   0xce, 0x0049, 0x0302, 0,
 1060   0xcf, 0x0049, 0x0308, 0,
 1061   0xd1, 0x004E, 0x0303, 0,
 1062   0xd2, 0x004F, 0x0300, 0,
 1063   0xd3, 0x004F, 0x0301, 0,
 1064   0xd4, 0x004F, 0x0302, 0,
 1065   0xd5, 0x004F, 0x0303, 0,
 1066   0xd6, 0x004F, 0x0308, 0,
 1067   0xd9, 0x0055, 0x0300, 0,
 1068   0xda, 0x0055, 0x0301, 0,
 1069   0xdb, 0x0055, 0x0302, 0,
 1070   0xdc, 0x0055, 0x0308, 0,
 1071   0xdd, 0x0059, 0x0301, 0,
 1072   0xe0, 0x0061, 0x0300, 0,
 1073   0xe1, 0x0061, 0x0301, 0,
 1074   0xe2, 0x0061, 0x0302, 0,
 1075   0xe3, 0x0061, 0x0303, 0,
 1076   0xe4, 0x0061, 0x0308, 0,
 1077   0xe5, 0x0061, 0x030A, 0,
 1078   0xe7, 0x0063, 0x0327, 0,
 1079   0xe8, 0x0065, 0x0300, 0,
 1080   0xe9, 0x0065, 0x0301, 0,
 1081   0xea, 0x0065, 0x0302, 0,
 1082   0xeb, 0x0065, 0x0308, 0,
 1083   0xec, 0x0069, 0x0300, 0,
 1084   0xed, 0x0069, 0x0301, 0,
 1085   0xee, 0x0069, 0x0302, 0,
 1086   0xef, 0x0069, 0x0308, 0,
 1087   0xf1, 0x006E, 0x0303, 0,
 1088   0xf2, 0x006F, 0x0300, 0,
 1089   0xf3, 0x006F, 0x0301, 0,
 1090   0xf4, 0x006F, 0x0302, 0,
 1091   0xf5, 0x006F, 0x0303, 0,
 1092   0xf6, 0x006F, 0x0308, 0,
 1093   0xf9, 0x0075, 0x0300, 0,
 1094   0xfa, 0x0075, 0x0301, 0,
 1095   0xfb, 0x0075, 0x0302, 0,
 1096   0xfc, 0x0075, 0x0308, 0,
 1097   0xfd, 0x0079, 0x0301, 0,
 1098   0xff, 0x0079, 0x0308, 0,
 1099   0x00,
 1100 
 1101   /* page01 */
 1102   0x01,
 1103   0x00, 0x0041, 0x0304, 0,
 1104   0x01, 0x0061, 0x0304, 0,
 1105   0x02, 0x0041, 0x0306, 0,
 1106   0x03, 0x0061, 0x0306, 0,
 1107   0x04, 0x0041, 0x0328, 0,
 1108   0x05, 0x0061, 0x0328, 0,
 1109   0x06, 0x0043, 0x0301, 0,
 1110   0x07, 0x0063, 0x0301, 0,
 1111   0x08, 0x0043, 0x0302, 0,
 1112   0x09, 0x0063, 0x0302, 0,
 1113   0x0a, 0x0043, 0x0307, 0,
 1114   0x0b, 0x0063, 0x0307, 0,
 1115   0x0c, 0x0043, 0x030C, 0,
 1116   0x0d, 0x0063, 0x030C, 0,
 1117   0x0e, 0x0044, 0x030C, 0,
 1118   0x0f, 0x0064, 0x030C, 0,
 1119   0x12, 0x0045, 0x0304, 0,
 1120   0x13, 0x0065, 0x0304, 0,
 1121   0x14, 0x0045, 0x0306, 0,
 1122   0x15, 0x0065, 0x0306, 0,
 1123   0x16, 0x0045, 0x0307, 0,
 1124   0x17, 0x0065, 0x0307, 0,
 1125   0x18, 0x0045, 0x0328, 0,
 1126   0x19, 0x0065, 0x0328, 0,
 1127   0x1a, 0x0045, 0x030C, 0,
 1128   0x1b, 0x0065, 0x030C, 0,
 1129   0x1c, 0x0047, 0x0302, 0,
 1130   0x1d, 0x0067, 0x0302, 0,
 1131   0x1e, 0x0047, 0x0306, 0,
 1132   0x1f, 0x0067, 0x0306, 0,
 1133   0x20, 0x0047, 0x0307, 0,
 1134   0x21, 0x0067, 0x0307, 0,
 1135   0x22, 0x0047, 0x0327, 0,
 1136   0x23, 0x0067, 0x0327, 0,
 1137   0x24, 0x0048, 0x0302, 0,
 1138   0x25, 0x0068, 0x0302, 0,
 1139   0x28, 0x0049, 0x0303, 0,
 1140   0x29, 0x0069, 0x0303, 0,
 1141   0x2a, 0x0049, 0x0304, 0,
 1142   0x2b, 0x0069, 0x0304, 0,
 1143   0x2c, 0x0049, 0x0306, 0,
 1144   0x2d, 0x0069, 0x0306, 0,
 1145   0x2e, 0x0049, 0x0328, 0,
 1146   0x2f, 0x0069, 0x0328, 0,
 1147   0x30, 0x0049, 0x0307, 0,
 1148   0x34, 0x004A, 0x0302, 0,
 1149   0x35, 0x006A, 0x0302, 0,
 1150   0x36, 0x004B, 0x0327, 0,
 1151   0x37, 0x006B, 0x0327, 0,
 1152   0x39, 0x004C, 0x0301, 0,
 1153   0x3a, 0x006C, 0x0301, 0,
 1154   0x3b, 0x004C, 0x0327, 0,
 1155   0x3c, 0x006C, 0x0327, 0,
 1156   0x3d, 0x004C, 0x030C, 0,
 1157   0x3e, 0x006C, 0x030C, 0,
 1158   0x43, 0x004E, 0x0301, 0,
 1159   0x44, 0x006E, 0x0301, 0,
 1160   0x45, 0x004E, 0x0327, 0,
 1161   0x46, 0x006E, 0x0327, 0,
 1162   0x47, 0x004E, 0x030C, 0,
 1163   0x48, 0x006E, 0x030C, 0,
 1164   0x4c, 0x004F, 0x0304, 0,
 1165   0x4d, 0x006F, 0x0304, 0,
 1166   0x4e, 0x004F, 0x0306, 0,
 1167   0x4f, 0x006F, 0x0306, 0,
 1168   0x50, 0x004F, 0x030B, 0,
 1169   0x51, 0x006F, 0x030B, 0,
 1170   0x54, 0x0052, 0x0301, 0,
 1171   0x55, 0x0072, 0x0301, 0,
 1172   0x56, 0x0052, 0x0327, 0,
 1173   0x57, 0x0072, 0x0327, 0,
 1174   0x58, 0x0052, 0x030C, 0,
 1175   0x59, 0x0072, 0x030C, 0,
 1176   0x5a, 0x0053, 0x0301, 0,
 1177   0x5b, 0x0073, 0x0301, 0,
 1178   0x5c, 0x0053, 0x0302, 0,
 1179   0x5d, 0x0073, 0x0302, 0,
 1180   0x5e, 0x0053, 0x0327, 0,
 1181   0x5f, 0x0073, 0x0327, 0,
 1182   0x60, 0x0053, 0x030C, 0,
 1183   0x61, 0x0073, 0x030C, 0,
 1184   0x62, 0x0054, 0x0327, 0,
 1185   0x63, 0x0074, 0x0327, 0,
 1186   0x64, 0x0054, 0x030C, 0,
 1187   0x65, 0x0074, 0x030C, 0,
 1188   0x68, 0x0055, 0x0303, 0,
 1189   0x69, 0x0075, 0x0303, 0,
 1190   0x6a, 0x0055, 0x0304, 0,
 1191   0x6b, 0x0075, 0x0304, 0,
 1192   0x6c, 0x0055, 0x0306, 0,
 1193   0x6d, 0x0075, 0x0306, 0,
 1194   0x6e, 0x0055, 0x030A, 0,
 1195   0x6f, 0x0075, 0x030A, 0,
 1196   0x70, 0x0055, 0x030B, 0,
 1197   0x71, 0x0075, 0x030B, 0,
 1198   0x72, 0x0055, 0x0328, 0,
 1199   0x73, 0x0075, 0x0328, 0,
 1200   0x74, 0x0057, 0x0302, 0,
 1201   0x75, 0x0077, 0x0302, 0,
 1202   0x76, 0x0059, 0x0302, 0,
 1203   0x77, 0x0079, 0x0302, 0,
 1204   0x78, 0x0059, 0x0308, 0,
 1205   0x79, 0x005A, 0x0301, 0,
 1206   0x7a, 0x007A, 0x0301, 0,
 1207   0x7b, 0x005A, 0x0307, 0,
 1208   0x7c, 0x007A, 0x0307, 0,
 1209   0x7d, 0x005A, 0x030C, 0,
 1210   0x7e, 0x007A, 0x030C, 0,
 1211   0xa0, 0x004F, 0x031B, 0,
 1212   0xa1, 0x006F, 0x031B, 0,
 1213   0xaf, 0x0055, 0x031B, 0,
 1214   0xb0, 0x0075, 0x031B, 0,
 1215   0xcd, 0x0041, 0x030C, 0,
 1216   0xce, 0x0061, 0x030C, 0,
 1217   0xcf, 0x0049, 0x030C, 0,
 1218   0xd0, 0x0069, 0x030C, 0,
 1219   0xd1, 0x004F, 0x030C, 0,
 1220   0xd2, 0x006F, 0x030C, 0,
 1221   0xd3, 0x0055, 0x030C, 0,
 1222   0xd4, 0x0075, 0x030C, 0,
 1223   0xd5, 0x0055, 0x0308, 0x0304, 0,
 1224   0xd6, 0x0075, 0x0308, 0x0304, 0,
 1225   0xd7, 0x0055, 0x0308, 0x0301, 0,
 1226   0xd8, 0x0075, 0x0308, 0x0301, 0,
 1227   0xd9, 0x0055, 0x0308, 0x030C, 0,
 1228   0xda, 0x0075, 0x0308, 0x030C, 0,
 1229   0xdb, 0x0055, 0x0308, 0x0300, 0,
 1230   0xdc, 0x0075, 0x0308, 0x0300, 0,
 1231   0xde, 0x0041, 0x0308, 0x0304, 0,
 1232   0xdf, 0x0061, 0x0308, 0x0304, 0,
 1233   0xe0, 0x0041, 0x0307, 0x0304, 0,
 1234   0xe1, 0x0061, 0x0307, 0x0304, 0,
 1235   0xe2, 0x00C6, 0x0304, 0,
 1236   0xe3, 0x00E6, 0x0304, 0,
 1237   0xe6, 0x0047, 0x030C, 0,
 1238   0xe7, 0x0067, 0x030C, 0,
 1239   0xe8, 0x004B, 0x030C, 0,
 1240   0xe9, 0x006B, 0x030C, 0,
 1241   0xea, 0x004F, 0x0328, 0,
 1242   0xeb, 0x006F, 0x0328, 0,
 1243   0xec, 0x004F, 0x0328, 0x0304, 0,
 1244   0xed, 0x006F, 0x0328, 0x0304, 0,
 1245   0xee, 0x01B7, 0x030C, 0,
 1246   0xef, 0x0292, 0x030C, 0,
 1247   0xf0, 0x006A, 0x030C, 0,
 1248   0xf4, 0x0047, 0x0301, 0,
 1249   0xf5, 0x0067, 0x0301, 0,
 1250   0xfa, 0x0041, 0x030A, 0x0301, 0,
 1251   0xfb, 0x0061, 0x030A, 0x0301, 0,
 1252   0xfc, 0x00C6, 0x0301, 0,
 1253   0xfd, 0x00E6, 0x0301, 0,
 1254   0xfe, 0x00D8, 0x0301, 0,
 1255   0xff, 0x00F8, 0x0301, 0,
 1256   0x00,
 1257 
 1258   /* page02 */
 1259   0x02,
 1260   0x00, 0x0041, 0x030F, 0,
 1261   0x01, 0x0061, 0x030F, 0,
 1262   0x02, 0x0041, 0x0311, 0,
 1263   0x03, 0x0061, 0x0311, 0,
 1264   0x04, 0x0045, 0x030F, 0,
 1265   0x05, 0x0065, 0x030F, 0,
 1266   0x06, 0x0045, 0x0311, 0,
 1267   0x07, 0x0065, 0x0311, 0,
 1268   0x08, 0x0049, 0x030F, 0,
 1269   0x09, 0x0069, 0x030F, 0,
 1270   0x0a, 0x0049, 0x0311, 0,
 1271   0x0b, 0x0069, 0x0311, 0,
 1272   0x0c, 0x004F, 0x030F, 0,
 1273   0x0d, 0x006F, 0x030F, 0,
 1274   0x0e, 0x004F, 0x0311, 0,
 1275   0x0f, 0x006F, 0x0311, 0,
 1276   0x10, 0x0052, 0x030F, 0,
 1277   0x11, 0x0072, 0x030F, 0,
 1278   0x12, 0x0052, 0x0311, 0,
 1279   0x13, 0x0072, 0x0311, 0,
 1280   0x14, 0x0055, 0x030F, 0,
 1281   0x15, 0x0075, 0x030F, 0,
 1282   0x16, 0x0055, 0x0311, 0,
 1283   0x17, 0x0075, 0x0311, 0,
 1284   0x00,
 1285 
 1286   /* page03 */
 1287   0x03,
 1288   0x10, 0x0306, 0x0307, 0,
 1289   0x40, 0x0300, 0,
 1290   0x41, 0x0301, 0,
 1291   0x43, 0x0313, 0,
 1292   0x44, 0x0308, 0x030D, 0,
 1293   0x74, 0x02B9, 0,
 1294   0x7e, 0x003B, 0,
 1295   0x85, 0x00A8, 0x030D, 0,
 1296   0x86, 0x0391, 0x030D, 0,
 1297   0x87, 0x00B7, 0,
 1298   0x88, 0x0395, 0x030D, 0,
 1299   0x89, 0x0397, 0x030D, 0,
 1300   0x8a, 0x0399, 0x030D, 0,
 1301   0x8c, 0x039F, 0x030D, 0,
 1302   0x8e, 0x03A5, 0x030D, 0,
 1303   0x8f, 0x03A9, 0x030D, 0,
 1304   0x90, 0x03B9, 0x0308, 0x030D, 0,
 1305   0xaa, 0x0399, 0x0308, 0,
 1306   0xab, 0x03A5, 0x0308, 0,
 1307   0xac, 0x03B1, 0x030D, 0,
 1308   0xad, 0x03B5, 0x030D, 0,
 1309   0xae, 0x03B7, 0x030D, 0,
 1310   0xaf, 0x03B9, 0x030D, 0,
 1311   0xb0, 0x03C5, 0x0308, 0x030D, 0,
 1312   0xca, 0x03B9, 0x0308, 0,
 1313   0xcb, 0x03C5, 0x0308, 0,
 1314   0xcc, 0x03BF, 0x030D, 0,
 1315   0xcd, 0x03C5, 0x030D, 0,
 1316   0xce, 0x03C9, 0x030D, 0,
 1317   0xd3, 0x03D2, 0x030D, 0,
 1318   0xd4, 0x03D2, 0x0308, 0,
 1319   0x00,
 1320 
 1321   /* page04 */
 1322   0x04,
 1323   0x01, 0x0415, 0x0308, 0,
 1324   0x03, 0x0413, 0x0301, 0,
 1325   0x07, 0x0406, 0x0308, 0,
 1326   0x0c, 0x041A, 0x0301, 0,
 1327   0x0e, 0x0423, 0x0306, 0,
 1328   0x19, 0x0418, 0x0306, 0,
 1329   0x39, 0x0438, 0x0306, 0,
 1330   0x51, 0x0435, 0x0308, 0,
 1331   0x53, 0x0433, 0x0301, 0,
 1332   0x57, 0x0456, 0x0308, 0,
 1333   0x5c, 0x043A, 0x0301, 0,
 1334   0x5e, 0x0443, 0x0306, 0,
 1335   0x76, 0x0474, 0x030F, 0,
 1336   0x77, 0x0475, 0x030F, 0,
 1337   0xc1, 0x0416, 0x0306, 0,
 1338   0xc2, 0x0436, 0x0306, 0,
 1339   0xd0, 0x0410, 0x0306, 0,
 1340   0xd1, 0x0430, 0x0306, 0,
 1341   0xd2, 0x0410, 0x0308, 0,
 1342   0xd3, 0x0430, 0x0308, 0,
 1343   0xd4, 0x00C6, 0,
 1344   0xd5, 0x00E6, 0,
 1345   0xd6, 0x0415, 0x0306, 0,
 1346   0xd7, 0x0435, 0x0306, 0,
 1347   0xd8, 0x018F, 0,
 1348   0xd9, 0x0259, 0,
 1349   0xda, 0x018F, 0x0308, 0,
 1350   0xdb, 0x0259, 0x0308, 0,
 1351   0xdc, 0x0416, 0x0308, 0,
 1352   0xdd, 0x0436, 0x0308, 0,
 1353   0xde, 0x0417, 0x0308, 0,
 1354   0xdf, 0x0437, 0x0308, 0,
 1355   0xe0, 0x01B7, 0,
 1356   0xe1, 0x0292, 0,
 1357   0xe2, 0x0418, 0x0304, 0,
 1358   0xe3, 0x0438, 0x0304, 0,
 1359   0xe4, 0x0418, 0x0308, 0,
 1360   0xe5, 0x0438, 0x0308, 0,
 1361   0xe6, 0x041E, 0x0308, 0,
 1362   0xe7, 0x043E, 0x0308, 0,
 1363   0xe8, 0x019F, 0,
 1364   0xe9, 0x0275, 0,
 1365   0xea, 0x019F, 0x0308, 0,
 1366   0xeb, 0x0275, 0x0308, 0,
 1367   0xee, 0x0423, 0x0304, 0,
 1368   0xef, 0x0443, 0x0304, 0,
 1369   0xf0, 0x0423, 0x0308, 0,
 1370   0xf1, 0x0443, 0x0308, 0,
 1371   0xf2, 0x0423, 0x030B, 0,
 1372   0xf3, 0x0443, 0x030B, 0,
 1373   0xf4, 0x0427, 0x0308, 0,
 1374   0xf5, 0x0447, 0x0308, 0,
 1375   0xf8, 0x042B, 0x0308, 0,
 1376   0xf9, 0x044B, 0x0308, 0,
 1377   0x00,
 1378 
 1379   /* page09 */
 1380   0x09,
 1381   0x29, 0x0928, 0x093C, 0,
 1382   0x31, 0x0930, 0x093C, 0,
 1383   0x34, 0x0933, 0x093C, 0,
 1384   0x58, 0x0915, 0x093C, 0,
 1385   0x59, 0x0916, 0x093C, 0,
 1386   0x5a, 0x0917, 0x093C, 0,
 1387   0x5b, 0x091C, 0x093C, 0,
 1388   0x5c, 0x0921, 0x093C, 0,
 1389   0x5d, 0x0922, 0x093C, 0,
 1390   0x5e, 0x092B, 0x093C, 0,
 1391   0x5f, 0x092F, 0x093C, 0,
 1392   0xb0, 0x09AC, 0x09BC, 0,
 1393   0xcb, 0x09C7, 0x09BE, 0,
 1394   0xcc, 0x09C7, 0x09D7, 0,
 1395   0xdc, 0x09A1, 0x09BC, 0,
 1396   0xdd, 0x09A2, 0x09BC, 0,
 1397   0xdf, 0x09AF, 0x09BC, 0,
 1398   0x00,
 1399 
 1400   /* page0a */
 1401   0x0a,
 1402   0x59, 0x0A16, 0x0A3C, 0,
 1403   0x5a, 0x0A17, 0x0A3C, 0,
 1404   0x5b, 0x0A1C, 0x0A3C, 0,
 1405   0x5c, 0x0A21, 0x0A3C, 0,
 1406   0x5e, 0x0A2B, 0x0A3C, 0,
 1407   0x00,
 1408 
 1409   /* page0b */
 1410   0x0b,
 1411   0x48, 0x0B47, 0x0B56, 0,
 1412   0x4b, 0x0B47, 0x0B3E, 0,
 1413   0x4c, 0x0B47, 0x0B57, 0,
 1414   0x5c, 0x0B21, 0x0B3C, 0,
 1415   0x5d, 0x0B22, 0x0B3C, 0,
 1416   0x5f, 0x0B2F, 0x0B3C, 0,
 1417   0x94, 0x0B92, 0x0BD7, 0,
 1418   0xca, 0x0BC6, 0x0BBE, 0,
 1419   0xcb, 0x0BC7, 0x0BBE, 0,
 1420   0xcc, 0x0BC6, 0x0BD7, 0,
 1421   0x00,
 1422 
 1423   /* page0c */
 1424   0x0c,
 1425   0x48, 0x0C46, 0x0C56, 0,
 1426   0xc0, 0x0CBF, 0x0CD5, 0,
 1427   0xc7, 0x0CC6, 0x0CD5, 0,
 1428   0xc8, 0x0CC6, 0x0CD6, 0,
 1429   0xca, 0x0CC6, 0x0CC2, 0,
 1430   0xcb, 0x0CC6, 0x0CC2, 0x0CD5, 0,
 1431   0x00,
 1432 
 1433   /* page0d */
 1434   0x0d,
 1435   0x4a, 0x0D46, 0x0D3E, 0,
 1436   0x4b, 0x0D47, 0x0D3E, 0,
 1437   0x4c, 0x0D46, 0x0D57, 0,
 1438   0x00,
 1439 
 1440   /* page0e */
 1441   0x0e,
 1442   0x33, 0x0E4D, 0x0E32, 0,
 1443   0xb3, 0x0ECD, 0x0EB2, 0,
 1444   0x00,
 1445 
 1446   /* page0f */
 1447   0x0f,
 1448   0x43, 0x0F42, 0x0FB7, 0,
 1449   0x4d, 0x0F4C, 0x0FB7, 0,
 1450   0x52, 0x0F51, 0x0FB7, 0,
 1451   0x57, 0x0F56, 0x0FB7, 0,
 1452   0x5c, 0x0F5B, 0x0FB7, 0,
 1453   0x69, 0x0F40, 0x0FB5, 0,
 1454   0x73, 0x0F72, 0x0F71, 0,
 1455   0x75, 0x0F74, 0x0F71, 0,
 1456   0x76, 0x0FB2, 0x0F80, 0,
 1457   0x77, 0x0FB2, 0x0F80, 0x0F71, 0,
 1458   0x78, 0x0FB3, 0x0F80, 0,
 1459   0x79, 0x0FB3, 0x0F80, 0x0F71, 0,
 1460   0x81, 0x0F80, 0x0F71, 0,
 1461   0x93, 0x0F92, 0x0FB7, 0,
 1462   0x9d, 0x0F9C, 0x0FB7, 0,
 1463   0xa2, 0x0FA1, 0x0FB7, 0,
 1464   0xa7, 0x0FA6, 0x0FB7, 0,
 1465   0xac, 0x0FAB, 0x0FB7, 0,
 1466   0xb9, 0x0F90, 0x0FB5, 0,
 1467   0x00,
 1468 
 1469   /* page1e */
 1470   0x1e,
 1471   0x00, 0x0041, 0x0325, 0,
 1472   0x01, 0x0061, 0x0325, 0,
 1473   0x02, 0x0042, 0x0307, 0,
 1474   0x03, 0x0062, 0x0307, 0,
 1475   0x04, 0x0042, 0x0323, 0,
 1476   0x05, 0x0062, 0x0323, 0,
 1477   0x06, 0x0042, 0x0331, 0,
 1478   0x07, 0x0062, 0x0331, 0,
 1479   0x08, 0x0043, 0x0327, 0x0301, 0,
 1480   0x09, 0x0063, 0x0327, 0x0301, 0,
 1481   0x0a, 0x0044, 0x0307, 0,
 1482   0x0b, 0x0064, 0x0307, 0,
 1483   0x0c, 0x0044, 0x0323, 0,
 1484   0x0d, 0x0064, 0x0323, 0,
 1485   0x0e, 0x0044, 0x0331, 0,
 1486   0x0f, 0x0064, 0x0331, 0,
 1487   0x10, 0x0044, 0x0327, 0,
 1488   0x11, 0x0064, 0x0327, 0,
 1489   0x12, 0x0044, 0x032D, 0,
 1490   0x13, 0x0064, 0x032D, 0,
 1491   0x14, 0x0045, 0x0304, 0x0300, 0,
 1492   0x15, 0x0065, 0x0304, 0x0300, 0,
 1493   0x16, 0x0045, 0x0304, 0x0301, 0,
 1494   0x17, 0x0065, 0x0304, 0x0301, 0,
 1495   0x18, 0x0045, 0x032D, 0,
 1496   0x19, 0x0065, 0x032D, 0,
 1497   0x1a, 0x0045, 0x0330, 0,
 1498   0x1b, 0x0065, 0x0330, 0,
 1499   0x1c, 0x0045, 0x0327, 0x0306, 0,
 1500   0x1d, 0x0065, 0x0327, 0x0306, 0,
 1501   0x1e, 0x0046, 0x0307, 0,
 1502   0x1f, 0x0066, 0x0307, 0,
 1503   0x20, 0x0047, 0x0304, 0,
 1504   0x21, 0x0067, 0x0304, 0,
 1505   0x22, 0x0048, 0x0307, 0,
 1506   0x23, 0x0068, 0x0307, 0,
 1507   0x24, 0x0048, 0x0323, 0,
 1508   0x25, 0x0068, 0x0323, 0,
 1509   0x26, 0x0048, 0x0308, 0,
 1510   0x27, 0x0068, 0x0308, 0,
 1511   0x28, 0x0048, 0x0327, 0,
 1512   0x29, 0x0068, 0x0327, 0,
 1513   0x2a, 0x0048, 0x032E, 0,
 1514   0x2b, 0x0068, 0x032E, 0,
 1515   0x2c, 0x0049, 0x0330, 0,
 1516   0x2d, 0x0069, 0x0330, 0,
 1517   0x2e, 0x0049, 0x0308, 0x0301, 0,
 1518   0x2f, 0x0069, 0x0308, 0x0301, 0,
 1519   0x30, 0x004B, 0x0301, 0,
 1520   0x31, 0x006B, 0x0301, 0,
 1521   0x32, 0x004B, 0x0323, 0,
 1522   0x33, 0x006B, 0x0323, 0,
 1523   0x34, 0x004B, 0x0331, 0,
 1524   0x35, 0x006B, 0x0331, 0,
 1525   0x36, 0x004C, 0x0323, 0,
 1526   0x37, 0x006C, 0x0323, 0,
 1527   0x38, 0x004C, 0x0323, 0x0304, 0,
 1528   0x39, 0x006C, 0x0323, 0x0304, 0,
 1529   0x3a, 0x004C, 0x0331, 0,
 1530   0x3b, 0x006C, 0x0331, 0,
 1531   0x3c, 0x004C, 0x032D, 0,
 1532   0x3d, 0x006C, 0x032D, 0,
 1533   0x3e, 0x004D, 0x0301, 0,
 1534   0x3f, 0x006D, 0x0301, 0,
 1535   0x40, 0x004D, 0x0307, 0,
 1536   0x41, 0x006D, 0x0307, 0,
 1537   0x42, 0x004D, 0x0323, 0,
 1538   0x43, 0x006D, 0x0323, 0,
 1539   0x44, 0x004E, 0x0307, 0,
 1540   0x45, 0x006E, 0x0307, 0,
 1541   0x46, 0x004E, 0x0323, 0,
 1542   0x47, 0x006E, 0x0323, 0,
 1543   0x48, 0x004E, 0x0331, 0,
 1544   0x49, 0x006E, 0x0331, 0,
 1545   0x4a, 0x004E, 0x032D, 0,
 1546   0x4b, 0x006E, 0x032D, 0,
 1547   0x4c, 0x004F, 0x0303, 0x0301, 0,
 1548   0x4d, 0x006F, 0x0303, 0x0301, 0,
 1549   0x4e, 0x004F, 0x0303, 0x0308, 0,
 1550   0x4f, 0x006F, 0x0303, 0x0308, 0,
 1551   0x50, 0x004F, 0x0304, 0x0300, 0,
 1552   0x51, 0x006F, 0x0304, 0x0300, 0,
 1553   0x52, 0x004F, 0x0304, 0x0301, 0,
 1554   0x53, 0x006F, 0x0304, 0x0301, 0,
 1555   0x54, 0x0050, 0x0301, 0,
 1556   0x55, 0x0070, 0x0301, 0,
 1557   0x56, 0x0050, 0x0307, 0,
 1558   0x57, 0x0070, 0x0307, 0,
 1559   0x58, 0x0052, 0x0307, 0,
 1560   0x59, 0x0072, 0x0307, 0,
 1561   0x5a, 0x0052, 0x0323, 0,
 1562   0x5b, 0x0072, 0x0323, 0,
 1563   0x5c, 0x0052, 0x0323, 0x0304, 0,
 1564   0x5d, 0x0072, 0x0323, 0x0304, 0,
 1565   0x5e, 0x0052, 0x0331, 0,
 1566   0x5f, 0x0072, 0x0331, 0,
 1567   0x60, 0x0053, 0x0307, 0,
 1568   0x61, 0x0073, 0x0307, 0,
 1569   0x62, 0x0053, 0x0323, 0,
 1570   0x63, 0x0073, 0x0323, 0,
 1571   0x64, 0x0053, 0x0301, 0x0307, 0,
 1572   0x65, 0x0073, 0x0301, 0x0307, 0,
 1573   0x66, 0x0053, 0x030C, 0x0307, 0,
 1574   0x67, 0x0073, 0x030C, 0x0307, 0,
 1575   0x68, 0x0053, 0x0323, 0x0307, 0,
 1576   0x69, 0x0073, 0x0323, 0x0307, 0,
 1577   0x6a, 0x0054, 0x0307, 0,
 1578   0x6b, 0x0074, 0x0307, 0,
 1579   0x6c, 0x0054, 0x0323, 0,
 1580   0x6d, 0x0074, 0x0323, 0,
 1581   0x6e, 0x0054, 0x0331, 0,
 1582   0x6f, 0x0074, 0x0331, 0,
 1583   0x70, 0x0054, 0x032D, 0,
 1584   0x71, 0x0074, 0x032D, 0,
 1585   0x72, 0x0055, 0x0324, 0,
 1586   0x73, 0x0075, 0x0324, 0,
 1587   0x74, 0x0055, 0x0330, 0,
 1588   0x75, 0x0075, 0x0330, 0,
 1589   0x76, 0x0055, 0x032D, 0,
 1590   0x77, 0x0075, 0x032D, 0,
 1591   0x78, 0x0055, 0x0303, 0x0301, 0,
 1592   0x79, 0x0075, 0x0303, 0x0301, 0,
 1593   0x7a, 0x0055, 0x0304, 0x0308, 0,
 1594   0x7b, 0x0075, 0x0304, 0x0308, 0,
 1595   0x7c, 0x0056, 0x0303, 0,
 1596   0x7d, 0x0076, 0x0303, 0,
 1597   0x7e, 0x0056, 0x0323, 0,
 1598   0x7f, 0x0076, 0x0323, 0,
 1599   0x80, 0x0057, 0x0300, 0,
 1600   0x81, 0x0077, 0x0300, 0,
 1601   0x82, 0x0057, 0x0301, 0,
 1602   0x83, 0x0077, 0x0301, 0,
 1603   0x84, 0x0057, 0x0308, 0,
 1604   0x85, 0x0077, 0x0308, 0,
 1605   0x86, 0x0057, 0x0307, 0,
 1606   0x87, 0x0077, 0x0307, 0,
 1607   0x88, 0x0057, 0x0323, 0,
 1608   0x89, 0x0077, 0x0323, 0,
 1609   0x8a, 0x0058, 0x0307, 0,
 1610   0x8b, 0x0078, 0x0307, 0,
 1611   0x8c, 0x0058, 0x0308, 0,
 1612   0x8d, 0x0078, 0x0308, 0,
 1613   0x8e, 0x0059, 0x0307, 0,
 1614   0x8f, 0x0079, 0x0307, 0,
 1615   0x90, 0x005A, 0x0302, 0,
 1616   0x91, 0x007A, 0x0302, 0,
 1617   0x92, 0x005A, 0x0323, 0,
 1618   0x93, 0x007A, 0x0323, 0,
 1619   0x94, 0x005A, 0x0331, 0,
 1620   0x95, 0x007A, 0x0331, 0,
 1621   0x96, 0x0068, 0x0331, 0,
 1622   0x97, 0x0074, 0x0308, 0,
 1623   0x98, 0x0077, 0x030A, 0,
 1624   0x99, 0x0079, 0x030A, 0,
 1625   0x9b, 0x017F, 0x0307, 0,
 1626   0xa0, 0x0041, 0x0323, 0,
 1627   0xa1, 0x0061, 0x0323, 0,
 1628   0xa2, 0x0041, 0x0309, 0,
 1629   0xa3, 0x0061, 0x0309, 0,
 1630   0xa4, 0x0041, 0x0302, 0x0301, 0,
 1631   0xa5, 0x0061, 0x0302, 0x0301, 0,
 1632   0xa6, 0x0041, 0x0302, 0x0300, 0,
 1633   0xa7, 0x0061, 0x0302, 0x0300, 0,
 1634   0xa8, 0x0041, 0x0302, 0x0309, 0,
 1635   0xa9, 0x0061, 0x0302, 0x0309, 0,
 1636   0xaa, 0x0041, 0x0302, 0x0303, 0,
 1637   0xab, 0x0061, 0x0302, 0x0303, 0,
 1638   0xac, 0x0041, 0x0323, 0x0302, 0,
 1639   0xad, 0x0061, 0x0323, 0x0302, 0,
 1640   0xae, 0x0041, 0x0306, 0x0301, 0,
 1641   0xaf, 0x0061, 0x0306, 0x0301, 0,
 1642   0xb0, 0x0041, 0x0306, 0x0300, 0,
 1643   0xb1, 0x0061, 0x0306, 0x0300, 0,
 1644   0xb2, 0x0041, 0x0306, 0x0309, 0,
 1645   0xb3, 0x0061, 0x0306, 0x0309, 0,
 1646   0xb4, 0x0041, 0x0306, 0x0303, 0,
 1647   0xb5, 0x0061, 0x0306, 0x0303, 0,
 1648   0xb6, 0x0041, 0x0323, 0x0306, 0,
 1649   0xb7, 0x0061, 0x0323, 0x0306, 0,
 1650   0xb8, 0x0045, 0x0323, 0,
 1651   0xb9, 0x0065, 0x0323, 0,
 1652   0xba, 0x0045, 0x0309, 0,
 1653   0xbb, 0x0065, 0x0309, 0,
 1654   0xbc, 0x0045, 0x0303, 0,
 1655   0xbd, 0x0065, 0x0303, 0,
 1656   0xbe, 0x0045, 0x0302, 0x0301, 0,
 1657   0xbf, 0x0065, 0x0302, 0x0301, 0,
 1658   0xc0, 0x0045, 0x0302, 0x0300, 0,
 1659   0xc1, 0x0065, 0x0302, 0x0300, 0,
 1660   0xc2, 0x0045, 0x0302, 0x0309, 0,
 1661   0xc3, 0x0065, 0x0302, 0x0309, 0,
 1662   0xc4, 0x0045, 0x0302, 0x0303, 0,
 1663   0xc5, 0x0065, 0x0302, 0x0303, 0,
 1664   0xc6, 0x0045, 0x0323, 0x0302, 0,
 1665   0xc7, 0x0065, 0x0323, 0x0302, 0,
 1666   0xc8, 0x0049, 0x0309, 0,
 1667   0xc9, 0x0069, 0x0309, 0,
 1668   0xca, 0x0049, 0x0323, 0,
 1669   0xcb, 0x0069, 0x0323, 0,
 1670   0xcc, 0x004F, 0x0323, 0,
 1671   0xcd, 0x006F, 0x0323, 0,
 1672   0xce, 0x004F, 0x0309, 0,
 1673   0xcf, 0x006F, 0x0309, 0,
 1674   0xd0, 0x004F, 0x0302, 0x0301, 0,
 1675   0xd1, 0x006F, 0x0302, 0x0301, 0,
 1676   0xd2, 0x004F, 0x0302, 0x0300, 0,
 1677   0xd3, 0x006F, 0x0302, 0x0300, 0,
 1678   0xd4, 0x004F, 0x0302, 0x0309, 0,
 1679   0xd5, 0x006F, 0x0302, 0x0309, 0,
 1680   0xd6, 0x004F, 0x0302, 0x0303, 0,
 1681   0xd7, 0x006F, 0x0302, 0x0303, 0,
 1682   0xd8, 0x004F, 0x0323, 0x0302, 0,
 1683   0xd9, 0x006F, 0x0323, 0x0302, 0,
 1684   0xda, 0x004F, 0x031B, 0x0301, 0,
 1685   0xdb, 0x006F, 0x031B, 0x0301, 0,
 1686   0xdc, 0x004F, 0x031B, 0x0300, 0,
 1687   0xdd, 0x006F, 0x031B, 0x0300, 0,
 1688   0xde, 0x004F, 0x031B, 0x0309, 0,
 1689   0xdf, 0x006F, 0x031B, 0x0309, 0,
 1690   0xe0, 0x004F, 0x031B, 0x0303, 0,
 1691   0xe1, 0x006F, 0x031B, 0x0303, 0,
 1692   0xe2, 0x004F, 0x031B, 0x0323, 0,
 1693   0xe3, 0x006F, 0x031B, 0x0323, 0,
 1694   0xe4, 0x0055, 0x0323, 0,
 1695   0xe5, 0x0075, 0x0323, 0,
 1696   0xe6, 0x0055, 0x0309, 0,
 1697   0xe7, 0x0075, 0x0309, 0,
 1698   0xe8, 0x0055, 0x031B, 0x0301, 0,
 1699   0xe9, 0x0075, 0x031B, 0x0301, 0,
 1700   0xea, 0x0055, 0x031B, 0x0300, 0,
 1701   0xeb, 0x0075, 0x031B, 0x0300, 0,
 1702   0xec, 0x0055, 0x031B, 0x0309, 0,
 1703   0xed, 0x0075, 0x031B, 0x0309, 0,
 1704   0xee, 0x0055, 0x031B, 0x0303, 0,
 1705   0xef, 0x0075, 0x031B, 0x0303, 0,
 1706   0xf0, 0x0055, 0x031B, 0x0323, 0,
 1707   0xf1, 0x0075, 0x031B, 0x0323, 0,
 1708   0xf2, 0x0059, 0x0300, 0,
 1709   0xf3, 0x0079, 0x0300, 0,
 1710   0xf4, 0x0059, 0x0323, 0,
 1711   0xf5, 0x0079, 0x0323, 0,
 1712   0xf6, 0x0059, 0x0309, 0,
 1713   0xf7, 0x0079, 0x0309, 0,
 1714   0xf8, 0x0059, 0x0303, 0,
 1715   0xf9, 0x0079, 0x0303, 0,
 1716   0x00,
 1717 
 1718   /* page1f */
 1719   0x1f,
 1720   0x00, 0x03B1, 0x0313, 0,
 1721   0x01, 0x03B1, 0x0314, 0,
 1722   0x02, 0x03B1, 0x0313, 0x0300, 0,
 1723   0x03, 0x03B1, 0x0314, 0x0300, 0,
 1724   0x04, 0x03B1, 0x0313, 0x0301, 0,
 1725   0x05, 0x03B1, 0x0314, 0x0301, 0,
 1726   0x06, 0x03B1, 0x0313, 0x0342, 0,
 1727   0x07, 0x03B1, 0x0314, 0x0342, 0,
 1728   0x08, 0x0391, 0x0313, 0,
 1729   0x09, 0x0391, 0x0314, 0,
 1730   0x0a, 0x0391, 0x0313, 0x0300, 0,
 1731   0x0b, 0x0391, 0x0314, 0x0300, 0,
 1732   0x0c, 0x0391, 0x0313, 0x0301, 0,
 1733   0x0d, 0x0391, 0x0314, 0x0301, 0,
 1734   0x0e, 0x0391, 0x0313, 0x0342, 0,
 1735   0x0f, 0x0391, 0x0314, 0x0342, 0,
 1736   0x10, 0x03B5, 0x0313, 0,
 1737   0x11, 0x03B5, 0x0314, 0,
 1738   0x12, 0x03B5, 0x0313, 0x0300, 0,
 1739   0x13, 0x03B5, 0x0314, 0x0300, 0,
 1740   0x14, 0x03B5, 0x0313, 0x0301, 0,
 1741   0x15, 0x03B5, 0x0314, 0x0301, 0,
 1742   0x18, 0x0395, 0x0313, 0,
 1743   0x19, 0x0395, 0x0314, 0,
 1744   0x1a, 0x0395, 0x0313, 0x0300, 0,
 1745   0x1b, 0x0395, 0x0314, 0x0300, 0,
 1746   0x1c, 0x0395, 0x0313, 0x0301, 0,
 1747   0x1d, 0x0395, 0x0314, 0x0301, 0,
 1748   0x20, 0x03B7, 0x0313, 0,
 1749   0x21, 0x03B7, 0x0314, 0,
 1750   0x22, 0x03B7, 0x0313, 0x0300, 0,
 1751   0x23, 0x03B7, 0x0314, 0x0300, 0,
 1752   0x24, 0x03B7, 0x0313, 0x0301, 0,
 1753   0x25, 0x03B7, 0x0314, 0x0301, 0,
 1754   0x26, 0x03B7, 0x0313, 0x0342, 0,
 1755   0x27, 0x03B7, 0x0314, 0x0342, 0,
 1756   0x28, 0x0397, 0x0313, 0,
 1757   0x29, 0x0397, 0x0314, 0,
 1758   0x2a, 0x0397, 0x0313, 0x0300, 0,
 1759   0x2b, 0x0397, 0x0314, 0x0300, 0,
 1760   0x2c, 0x0397, 0x0313, 0x0301, 0,
 1761   0x2d, 0x0397, 0x0314, 0x0301, 0,
 1762   0x2e, 0x0397, 0x0313, 0x0342, 0,
 1763   0x2f, 0x0397, 0x0314, 0x0342, 0,
 1764   0x30, 0x03B9, 0x0313, 0,
 1765   0x31, 0x03B9, 0x0314, 0,
 1766   0x32, 0x03B9, 0x0313, 0x0300, 0,
 1767   0x33, 0x03B9, 0x0314, 0x0300, 0,
 1768   0x34, 0x03B9, 0x0313, 0x0301, 0,
 1769   0x35, 0x03B9, 0x0314, 0x0301, 0,
 1770   0x36, 0x03B9, 0x0313, 0x0342, 0,
 1771   0x37, 0x03B9, 0x0314, 0x0342, 0,
 1772   0x38, 0x0399, 0x0313, 0,
 1773   0x39, 0x0399, 0x0314, 0,
 1774   0x3a, 0x0399, 0x0313, 0x0300, 0,
 1775   0x3b, 0x0399, 0x0314, 0x0300, 0,
 1776   0x3c, 0x0399, 0x0313, 0x0301, 0,
 1777   0x3d, 0x0399, 0x0314, 0x0301, 0,
 1778   0x3e, 0x0399, 0x0313, 0x0342, 0,
 1779   0x3f, 0x0399, 0x0314, 0x0342, 0,
 1780   0x40, 0x03BF, 0x0313, 0,
 1781   0x41, 0x03BF, 0x0314, 0,
 1782   0x42, 0x03BF, 0x0313, 0x0300, 0,
 1783   0x43, 0x03BF, 0x0314, 0x0300, 0,
 1784   0x44, 0x03BF, 0x0313, 0x0301, 0,
 1785   0x45, 0x03BF, 0x0314, 0x0301, 0,
 1786   0x48, 0x039F, 0x0313, 0,
 1787   0x49, 0x039F, 0x0314, 0,
 1788   0x4a, 0x039F, 0x0313, 0x0300, 0,
 1789   0x4b, 0x039F, 0x0314, 0x0300, 0,
 1790   0x4c, 0x039F, 0x0313, 0x0301, 0,
 1791   0x4d, 0x039F, 0x0314, 0x0301, 0,
 1792   0x50, 0x03C5, 0x0313, 0,
 1793   0x51, 0x03C5, 0x0314, 0,
 1794   0x52, 0x03C5, 0x0313, 0x0300, 0,
 1795   0x53, 0x03C5, 0x0314, 0x0300, 0,
 1796   0x54, 0x03C5, 0x0313, 0x0301, 0,
 1797   0x55, 0x03C5, 0x0314, 0x0301, 0,
 1798   0x56, 0x03C5, 0x0313, 0x0342, 0,
 1799   0x57, 0x03C5, 0x0314, 0x0342, 0,
 1800   0x59, 0x03A5, 0x0314, 0,
 1801   0x5b, 0x03A5, 0x0314, 0x0300, 0,
 1802   0x5d, 0x03A5, 0x0314, 0x0301, 0,
 1803   0x5f, 0x03A5, 0x0314, 0x0342, 0,
 1804   0x60, 0x03C9, 0x0313, 0,
 1805   0x61, 0x03C9, 0x0314, 0,
 1806   0x62, 0x03C9, 0x0313, 0x0300, 0,
 1807   0x63, 0x03C9, 0x0314, 0x0300, 0,
 1808   0x64, 0x03C9, 0x0313, 0x0301, 0,
 1809   0x65, 0x03C9, 0x0314, 0x0301, 0,
 1810   0x66, 0x03C9, 0x0313, 0x0342, 0,
 1811   0x67, 0x03C9, 0x0314, 0x0342, 0,
 1812   0x68, 0x03A9, 0x0313, 0,
 1813   0x69, 0x03A9, 0x0314, 0,
 1814   0x6a, 0x03A9, 0x0313, 0x0300, 0,
 1815   0x6b, 0x03A9, 0x0314, 0x0300, 0,
 1816   0x6c, 0x03A9, 0x0313, 0x0301, 0,
 1817   0x6d, 0x03A9, 0x0314, 0x0301, 0,
 1818   0x6e, 0x03A9, 0x0313, 0x0342, 0,
 1819   0x6f, 0x03A9, 0x0314, 0x0342, 0,
 1820   0x70, 0x03B1, 0x0300, 0,
 1821   0x71, 0x03B1, 0x0301, 0,
 1822   0x72, 0x03B5, 0x0300, 0,
 1823   0x73, 0x03B5, 0x0301, 0,
 1824   0x74, 0x03B7, 0x0300, 0,
 1825   0x75, 0x03B7, 0x0301, 0,
 1826   0x76, 0x03B9, 0x0300, 0,
 1827   0x77, 0x03B9, 0x0301, 0,
 1828   0x78, 0x03BF, 0x0300, 0,
 1829   0x79, 0x03BF, 0x0301, 0,
 1830   0x7a, 0x03C5, 0x0300, 0,
 1831   0x7b, 0x03C5, 0x0301, 0,
 1832   0x7c, 0x03C9, 0x0300, 0,
 1833   0x7d, 0x03C9, 0x0301, 0,
 1834   0x80, 0x03B1, 0x0345, 0x0313, 0,
 1835   0x81, 0x03B1, 0x0345, 0x0314, 0,
 1836   0x82, 0x03B1, 0x0345, 0x0313, 0x0300, 0,
 1837   0x83, 0x03B1, 0x0345, 0x0314, 0x0300, 0,
 1838   0x84, 0x03B1, 0x0345, 0x0313, 0x0301, 0,
 1839   0x85, 0x03B1, 0x0345, 0x0314, 0x0301, 0,
 1840   0x86, 0x03B1, 0x0345, 0x0313, 0x0342, 0,
 1841   0x87, 0x03B1, 0x0345, 0x0314, 0x0342, 0,
 1842   0x88, 0x0391, 0x0345, 0x0313, 0,
 1843   0x89, 0x0391, 0x0345, 0x0314, 0,
 1844   0x8a, 0x0391, 0x0345, 0x0313, 0x0300, 0,
 1845   0x8b, 0x0391, 0x0345, 0x0314, 0x0300, 0,
 1846   0x8c, 0x0391, 0x0345, 0x0313, 0x0301, 0,
 1847   0x8d, 0x0391, 0x0345, 0x0314, 0x0301, 0,
 1848   0x8e, 0x0391, 0x0345, 0x0313, 0x0342, 0,
 1849   0x8f, 0x0391, 0x0345, 0x0314, 0x0342, 0,
 1850   0x90, 0x03B7, 0x0345, 0x0313, 0,
 1851   0x91, 0x03B7, 0x0345, 0x0314, 0,
 1852   0x92, 0x03B7, 0x0345, 0x0313, 0x0300, 0,
 1853   0x93, 0x03B7, 0x0345, 0x0314, 0x0300, 0,
 1854   0x94, 0x03B7, 0x0345, 0x0313, 0x0301, 0,
 1855   0x95, 0x03B7, 0x0345, 0x0314, 0x0301, 0,
 1856   0x96, 0x03B7, 0x0345, 0x0313, 0x0342, 0,
 1857   0x97, 0x03B7, 0x0345, 0x0314, 0x0342, 0,
 1858   0x98, 0x0397, 0x0345, 0x0313, 0,
 1859   0x99, 0x0397, 0x0345, 0x0314, 0,
 1860   0x9a, 0x0397, 0x0345, 0x0313, 0x0300, 0,
 1861   0x9b, 0x0397, 0x0345, 0x0314, 0x0300, 0,
 1862   0x9c, 0x0397, 0x0345, 0x0313, 0x0301, 0,
 1863   0x9d, 0x0397, 0x0345, 0x0314, 0x0301, 0,
 1864   0x9e, 0x0397, 0x0345, 0x0313, 0x0342, 0,
 1865   0x9f, 0x0397, 0x0345, 0x0314, 0x0342, 0,
 1866   0xa0, 0x03C9, 0x0345, 0x0313, 0,
 1867   0xa1, 0x03C9, 0x0345, 0x0314, 0,
 1868   0xa2, 0x03C9, 0x0345, 0x0313, 0x0300, 0,
 1869   0xa3, 0x03C9, 0x0345, 0x0314, 0x0300, 0,
 1870   0xa4, 0x03C9, 0x0345, 0x0313, 0x0301, 0,
 1871   0xa5, 0x03C9, 0x0345, 0x0314, 0x0301, 0,
 1872   0xa6, 0x03C9, 0x0345, 0x0313, 0x0342, 0,
 1873   0xa7, 0x03C9, 0x0345, 0x0314, 0x0342, 0,
 1874   0xa8, 0x03A9, 0x0345, 0x0313, 0,
 1875   0xa9, 0x03A9, 0x0345, 0x0314, 0,
 1876   0xaa, 0x03A9, 0x0345, 0x0313, 0x0300, 0,
 1877   0xab, 0x03A9, 0x0345, 0x0314, 0x0300, 0,
 1878   0xac, 0x03A9, 0x0345, 0x0313, 0x0301, 0,
 1879   0xad, 0x03A9, 0x0345, 0x0314, 0x0301, 0,
 1880   0xae, 0x03A9, 0x0345, 0x0313, 0x0342, 0,
 1881   0xaf, 0x03A9, 0x0345, 0x0314, 0x0342, 0,
 1882   0xb0, 0x03B1, 0x0306, 0,
 1883   0xb1, 0x03B1, 0x0304, 0,
 1884   0xb2, 0x03B1, 0x0345, 0x0300, 0,
 1885   0xb3, 0x03B1, 0x0345, 0,
 1886   0xb4, 0x03B1, 0x0345, 0x0301, 0,
 1887   0xb6, 0x03B1, 0x0342, 0,
 1888   0xb7, 0x03B1, 0x0345, 0x0342, 0,
 1889   0xb8, 0x0391, 0x0306, 0,
 1890   0xb9, 0x0391, 0x0304, 0,
 1891   0xba, 0x0391, 0x0300, 0,
 1892   0xbb, 0x0391, 0x0301, 0,
 1893   0xbc, 0x0391, 0x0345, 0,
 1894   0xbe, 0x03B9, 0,
 1895   0xc1, 0x00A8, 0x0342, 0,
 1896   0xc2, 0x03B7, 0x0345, 0x0300, 0,
 1897   0xc3, 0x03B7, 0x0345, 0,
 1898   0xc4, 0x03B7, 0x0345, 0x0301, 0,
 1899   0xc6, 0x03B7, 0x0342, 0,
 1900   0xc7, 0x03B7, 0x0345, 0x0342, 0,
 1901   0xc8, 0x0395, 0x0300, 0,
 1902   0xc9, 0x0395, 0x0301, 0,
 1903   0xca, 0x0397, 0x0300, 0,
 1904   0xcb, 0x0397, 0x0301, 0,
 1905   0xcc, 0x0397, 0x0345, 0,
 1906   0xcd, 0x1FBF, 0x0300, 0,
 1907   0xce, 0x1FBF, 0x0301, 0,
 1908   0xcf, 0x1FBF, 0x0342, 0,
 1909   0xd0, 0x03B9, 0x0306, 0,
 1910   0xd1, 0x03B9, 0x0304, 0,
 1911   0xd2, 0x03B9, 0x0308, 0x0300, 0,
 1912   0xd3, 0x03B9, 0x0308, 0x0301, 0,
 1913   0xd6, 0x03B9, 0x0342, 0,
 1914   0xd7, 0x03B9, 0x0308, 0x0342, 0,
 1915   0xd8, 0x0399, 0x0306, 0,
 1916   0xd9, 0x0399, 0x0304, 0,
 1917   0xda, 0x0399, 0x0300, 0,
 1918   0xdb, 0x0399, 0x0301, 0,
 1919   0xdd, 0x1FFE, 0x0300, 0,
 1920   0xde, 0x1FFE, 0x0301, 0,
 1921   0xdf, 0x1FFE, 0x0342, 0,
 1922   0xe0, 0x03C5, 0x0306, 0,
 1923   0xe1, 0x03C5, 0x0304, 0,
 1924   0xe2, 0x03C5, 0x0308, 0x0300, 0,
 1925   0xe3, 0x03C5, 0x0308, 0x0301, 0,
 1926   0xe4, 0x03C1, 0x0313, 0,
 1927   0xe5, 0x03C1, 0x0314, 0,
 1928   0xe6, 0x03C5, 0x0342, 0,
 1929   0xe7, 0x03C5, 0x0308, 0x0342, 0,
 1930   0xe8, 0x03A5, 0x0306, 0,
 1931   0xe9, 0x03A5, 0x0304, 0,
 1932   0xea, 0x03A5, 0x0300, 0,
 1933   0xeb, 0x03A5, 0x0301, 0,
 1934   0xec, 0x03A1, 0x0314, 0,
 1935   0xed, 0x00A8, 0x0300, 0,
 1936   0xee, 0x00A8, 0x0301, 0,
 1937   0xef, 0x0060, 0,
 1938   0xf2, 0x03C9, 0x0345, 0x0300, 0,
 1939   0xf3, 0x03C9, 0x0345, 0,
 1940   0xf4, 0x03BF, 0x0345, 0x0301, 0,
 1941   0xf6, 0x03C9, 0x0342, 0,
 1942   0xf7, 0x03C9, 0x0345, 0x0342, 0,
 1943   0xf8, 0x039F, 0x0300, 0,
 1944   0xf9, 0x039F, 0x0301, 0,
 1945   0xfa, 0x03A9, 0x0300, 0,
 1946   0xfb, 0x03A9, 0x0301, 0,
 1947   0xfc, 0x03A9, 0x0345, 0,
 1948   0xfd, 0x00B4, 0,
 1949   0x00,
 1950 
 1951   /* page30 */
 1952   0x30,
 1953   0x4c, 0x304B, 0x3099, 0,
 1954   0x4e, 0x304D, 0x3099, 0,
 1955   0x50, 0x304F, 0x3099, 0,
 1956   0x52, 0x3051, 0x3099, 0,
 1957   0x54, 0x3053, 0x3099, 0,
 1958   0x56, 0x3055, 0x3099, 0,
 1959   0x58, 0x3057, 0x3099, 0,
 1960   0x5a, 0x3059, 0x3099, 0,
 1961   0x5c, 0x305B, 0x3099, 0,
 1962   0x5e, 0x305D, 0x3099, 0,
 1963   0x60, 0x305F, 0x3099, 0,
 1964   0x62, 0x3061, 0x3099, 0,
 1965   0x65, 0x3064, 0x3099, 0,
 1966   0x67, 0x3066, 0x3099, 0,
 1967   0x69, 0x3068, 0x3099, 0,
 1968   0x70, 0x306F, 0x3099, 0,
 1969   0x71, 0x306F, 0x309A, 0,
 1970   0x73, 0x3072, 0x3099, 0,
 1971   0x74, 0x3072, 0x309A, 0,
 1972   0x76, 0x3075, 0x3099, 0,
 1973   0x77, 0x3075, 0x309A, 0,
 1974   0x79, 0x3078, 0x3099, 0,
 1975   0x7a, 0x3078, 0x309A, 0,
 1976   0x7c, 0x307B, 0x3099, 0,
 1977   0x7d, 0x307B, 0x309A, 0,
 1978   0x94, 0x3046, 0x3099, 0,
 1979   0x9e, 0x309D, 0x3099, 0,
 1980   0xac, 0x30AB, 0x3099, 0,
 1981   0xae, 0x30AD, 0x3099, 0,
 1982   0xb0, 0x30AF, 0x3099, 0,
 1983   0xb2, 0x30B1, 0x3099, 0,
 1984   0xb4, 0x30B3, 0x3099, 0,
 1985   0xb6, 0x30B5, 0x3099, 0,
 1986   0xb8, 0x30B7, 0x3099, 0,
 1987   0xba, 0x30B9, 0x3099, 0,
 1988   0xbc, 0x30BB, 0x3099, 0,
 1989   0xbe, 0x30BD, 0x3099, 0,
 1990   0xc0, 0x30BF, 0x3099, 0,
 1991   0xc2, 0x30C1, 0x3099, 0,
 1992   0xc5, 0x30C4, 0x3099, 0,
 1993   0xc7, 0x30C6, 0x3099, 0,
 1994   0xc9, 0x30C8, 0x3099, 0,
 1995   0xd0, 0x30CF, 0x3099, 0,
 1996   0xd1, 0x30CF, 0x309A, 0,
 1997   0xd3, 0x30D2, 0x3099, 0,
 1998   0xd4, 0x30D2, 0x309A, 0,
 1999   0xd6, 0x30D5, 0x3099, 0,
 2000   0xd7, 0x30D5, 0x309A, 0,
 2001   0xd9, 0x30D8, 0x3099, 0,
 2002   0xda, 0x30D8, 0x309A, 0,
 2003   0xdc, 0x30DB, 0x3099, 0,
 2004   0xdd, 0x30DB, 0x309A, 0,
 2005   0xf4, 0x30A6, 0x3099, 0,
 2006   0xf7, 0x30EF, 0x3099, 0,
 2007   0xf8, 0x30F0, 0x3099, 0,
 2008   0xf9, 0x30F1, 0x3099, 0,
 2009   0xfa, 0x30F2, 0x3099, 0,
 2010   0xfe, 0x30FD, 0x3099, 0,
 2011   0x00,
 2012 
 2013   /* pagefb */
 2014   0xfb,
 2015   0x1f, 0x05F2, 0x05B7, 0,
 2016   0x2a, 0x05E9, 0x05C1, 0,
 2017   0x2b, 0x05E9, 0x05C2, 0,
 2018   0x2c, 0x05E9, 0x05BC, 0x05C1, 0,
 2019   0x2d, 0x05E9, 0x05BC, 0x05C2, 0,
 2020   0x2e, 0x05D0, 0x05B7, 0,
 2021   0x2f, 0x05D0, 0x05B8, 0,
 2022   0x30, 0x05D0, 0x05BC, 0,
 2023   0x31, 0x05D1, 0x05BC, 0,
 2024   0x32, 0x05D2, 0x05BC, 0,
 2025   0x33, 0x05D3, 0x05BC, 0,
 2026   0x34, 0x05D4, 0x05BC, 0,
 2027   0x35, 0x05D5, 0x05BC, 0,
 2028   0x36, 0x05D6, 0x05BC, 0,
 2029   0x38, 0x05D8, 0x05BC, 0,
 2030   0x39, 0x05D9, 0x05BC, 0,
 2031   0x3a, 0x05DA, 0x05BC, 0,
 2032   0x3b, 0x05DB, 0x05BC, 0,
 2033   0x3c, 0x05DC, 0x05BC, 0,
 2034   0x3e, 0x05DE, 0x05BC, 0,
 2035   0x40, 0x05E0, 0x05BC, 0,
 2036   0x41, 0x05E1, 0x05BC, 0,
 2037   0x43, 0x05E3, 0x05BC, 0,
 2038   0x44, 0x05E4, 0x05BC, 0,
 2039   0x46, 0x05E6, 0x05BC, 0,
 2040   0x47, 0x05E7, 0x05BC, 0,
 2041   0x48, 0x05E8, 0x05BC, 0,
 2042   0x49, 0x05E9, 0x05BC, 0,
 2043   0x4a, 0x05EA, 0x05BC, 0,
 2044   0x4b, 0x05D5, 0x05B9, 0,
 2045   0x4c, 0x05D1, 0x05BF, 0,
 2046   0x4d, 0x05DB, 0x05BF, 0,
 2047   0x4e, 0x05E4, 0x05BF, 0,
 2048   0x00,
 2049 
 2050   /* end of list */
 2051   0x00
 2052 };
 2053 
 2054 #define HFSPLUS_DECOMPOSE_PAGE_SIZE (256 * (HFSPLUS_MAX_DECOMPOSE_LEN + 1))
 2055 
 2056 static uint16_t decompose_pages[16 * 256][HFSPLUS_MAX_DECOMPOSE_LEN + 1];
 2057 
 2058 uint16_t (*hfsplus_decompose_pages[256])[HFSPLUS_MAX_DECOMPOSE_LEN + 1];
 2059 
 2060 
 2061 void make_hfsplus_decompose_pages()
 2062 {
 2063     int page_idx = -1, char_idx, i;
 2064     uint16_t *rpt, *page_pt, *value_pt;
 2065     int page_count = 0;
 2066    
 2067    
 2068     memset(decompose_pages, 0, 16 * HFSPLUS_DECOMPOSE_PAGE_SIZE);
 2069     for (i = 0; i < 256; i++)
 2070         hfsplus_decompose_pages[i] = NULL; 
 2071    
 2072     rpt = (uint16_t *) decompose_page_data;
 2073     page_pt = (uint16_t *) decompose_pages;
 2074     while (1) {
 2075         if (*rpt <= page_idx)
 2076     break;
 2077    
 2078         /* <<< only for development */
 2079         page_count++;
 2080         if (page_count > 16) {
 2081             fprintf(stderr, "FATAL: More than 16 pages encountered\n");
 2082             exit(1);
 2083         }
 2084    
 2085         page_idx = *(rpt++);
 2086         char_idx = -1;
 2087         while (1) {
 2088             if(*rpt <= char_idx)
 2089         break;
 2090             char_idx = *(rpt++);
 2091             value_pt = page_pt + char_idx * (HFSPLUS_MAX_DECOMPOSE_LEN + 1);
 2092             while (1) {
 2093                 if(*rpt == 0)
 2094             break;
 2095                 *(value_pt++) = *(rpt++);
 2096             }
 2097             rpt++;
 2098         }
 2099         rpt++;
 2100         hfsplus_decompose_pages[page_idx] =
 2101                                       decompose_pages + (page_count - 1) * 256;
 2102         page_pt += HFSPLUS_DECOMPOSE_PAGE_SIZE;
 2103     }
 2104 
 2105     /* <<< only for development */
 2106     rpt++;
 2107     printf("Items read: %d\n", (int) (rpt - decompose_page_data));
 2108     if (page_count != 16) {
 2109         fprintf(stderr, "FATAL: Less than 16 pages encountered: %d\n",
 2110                 page_count);
 2111         exit(1);
 2112     }
 2113 }
 2114 
 2115 
 2116 static int compare_decompose_pages()
 2117 {
 2118     int i, j, k;
 2119 
 2120     for (i = 0; i < 256; i++) {
 2121         if (hfsplus_decompose_pages_old[i] == NULL) {
 2122             if (hfsplus_decompose_pages[i] == NULL)
 2123     continue;
 2124             fprintf(stderr, "DIFF : i= %d , ts != NULL\n", i);
 2125             return 0;
 2126         } else if (hfsplus_decompose_pages[i] == NULL) {
 2127             fprintf(stderr, "DIFF : i= %d , ts == NULL\n", i);
 2128             return 0;
 2129         }
 2130 
 2131         for (j = 0; j < 256; j++)
 2132             for (k = 0; k < HFSPLUS_MAX_DECOMPOSE_LEN + 1; k++)
 2133                  if (hfsplus_decompose_pages_old[i][j][k] !=
 2134                      hfsplus_decompose_pages[i][j][k]) {
 2135                      fprintf(stderr,
 2136                              "DIFF : i= %d , j= %d , k= %d : %4.4x !+ %4.4x\n",
 2137                              i, j, k, hfsplus_decompose_pages[i][j][k],
 2138                              hfsplus_decompose_pages[i][j][k]);
 2139                      return 0;
 2140                  }
 2141     }
 2142     return 1;
 2143 }
 2144 
 2145 
 2146 main()
 2147 {
 2148 
 2149  make_hfsplus_decompose_pages();
 2150 
 2151  /* <<< intentional deviations */
 2152  /* hfsplus_decompose_pages[1][4][0] = 0xffff; */
 2153  /* hfsplus_decompose_pages_old[3] = NULL; */
 2154 
 2155  compare_decompose_pages();
 2156 
 2157  exit(0);
 2158 }
 2159