/ Hex Artifact Content
Login

Artifact 0113d3acf13429e6dc38e0647d1bc71211c31a4d:


0000: 2f 2a 0a 2a 2a 20 32 30 31 32 20 4d 61 79 20 32  /*.** 2012 May 2
0010: 35 0a 2a 2a 0a 2a 2a 20 54 68 65 20 61 75 74 68  5.**.** The auth
0020: 6f 72 20 64 69 73 63 6c 61 69 6d 73 20 63 6f 70  or disclaims cop
0030: 79 72 69 67 68 74 20 74 6f 20 74 68 69 73 20 73  yright to this s
0040: 6f 75 72 63 65 20 63 6f 64 65 2e 20 20 49 6e 20  ource code.  In 
0050: 70 6c 61 63 65 20 6f 66 0a 2a 2a 20 61 20 6c 65  place of.** a le
0060: 67 61 6c 20 6e 6f 74 69 63 65 2c 20 68 65 72 65  gal notice, here
0070: 20 69 73 20 61 20 62 6c 65 73 73 69 6e 67 3a 0a   is a blessing:.
0080: 2a 2a 0a 2a 2a 20 20 20 20 4d 61 79 20 79 6f 75  **.**    May you
0090: 20 64 6f 20 67 6f 6f 64 20 61 6e 64 20 6e 6f 74   do good and not
00a0: 20 65 76 69 6c 2e 0a 2a 2a 20 20 20 20 4d 61 79   evil..**    May
00b0: 20 79 6f 75 20 66 69 6e 64 20 66 6f 72 67 69 76   you find forgiv
00c0: 65 6e 65 73 73 20 66 6f 72 20 79 6f 75 72 73 65  eness for yourse
00d0: 6c 66 20 61 6e 64 20 66 6f 72 67 69 76 65 20 6f  lf and forgive o
00e0: 74 68 65 72 73 2e 0a 2a 2a 20 20 20 20 4d 61 79  thers..**    May
00f0: 20 79 6f 75 20 73 68 61 72 65 20 66 72 65 65 6c   you share freel
0100: 79 2c 20 6e 65 76 65 72 20 74 61 6b 69 6e 67 20  y, never taking 
0110: 6d 6f 72 65 20 74 68 61 6e 20 79 6f 75 20 67 69  more than you gi
0120: 76 65 2e 0a 2a 2a 0a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ve..**.*********
0130: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ****************
0140: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ****************
0150: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ****************
0160: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ****************
0170: 2a 2a 2a 2a 2a 0a 2a 2f 0a 0a 2f 2a 0a 2a 2a 20  *****.*/../*.** 
0180: 44 4f 20 4e 4f 54 20 45 44 49 54 20 54 48 49 53  DO NOT EDIT THIS
0190: 20 4d 41 43 48 49 4e 45 20 47 45 4e 45 52 41 54   MACHINE GENERAT
01a0: 45 44 20 46 49 4c 45 2e 0a 2a 2f 0a 0a 23 69 66  ED FILE..*/..#if
01b0: 20 64 65 66 69 6e 65 64 28 53 51 4c 49 54 45 5f   defined(SQLITE_
01c0: 45 4e 41 42 4c 45 5f 46 54 53 34 5f 55 4e 49 43  ENABLE_FTS4_UNIC
01d0: 4f 44 45 36 31 29 0a 23 69 66 20 64 65 66 69 6e  ODE61).#if defin
01e0: 65 64 28 53 51 4c 49 54 45 5f 45 4e 41 42 4c 45  ed(SQLITE_ENABLE
01f0: 5f 46 54 53 33 29 20 7c 7c 20 64 65 66 69 6e 65  _FTS3) || define
0200: 64 28 53 51 4c 49 54 45 5f 45 4e 41 42 4c 45 5f  d(SQLITE_ENABLE_
0210: 46 54 53 34 29 0a 0a 23 69 6e 63 6c 75 64 65 20  FTS4)..#include 
0220: 3c 61 73 73 65 72 74 2e 68 3e 0a 0a 2f 2a 0a 2a  <assert.h>../*.*
0230: 2a 20 52 65 74 75 72 6e 20 74 72 75 65 20 69 66  * Return true if
0240: 20 74 68 65 20 61 72 67 75 6d 65 6e 74 20 63 6f   the argument co
0250: 72 72 65 73 70 6f 6e 64 73 20 74 6f 20 61 20 75  rresponds to a u
0260: 6e 69 63 6f 64 65 20 63 6f 64 65 70 6f 69 6e 74  nicode codepoint
0270: 0a 2a 2a 20 63 6c 61 73 73 69 66 69 65 64 20 61  .** classified a
0280: 73 20 65 69 74 68 65 72 20 61 20 6c 65 74 74 65  s either a lette
0290: 72 20 6f 72 20 61 20 6e 75 6d 62 65 72 2e 20 4f  r or a number. O
02a0: 74 68 65 72 77 69 73 65 20 66 61 6c 73 65 2e 0a  therwise false..
02b0: 2a 2a 0a 2a 2a 20 54 68 65 20 72 65 73 75 6c 74  **.** The result
02c0: 73 20 61 72 65 20 75 6e 64 65 66 69 6e 65 64 20  s are undefined 
02d0: 69 66 20 74 68 65 20 76 61 6c 75 65 20 70 61 73  if the value pas
02e0: 73 65 64 20 74 6f 20 74 68 69 73 20 66 75 6e 63  sed to this func
02f0: 74 69 6f 6e 0a 2a 2a 20 69 73 20 6c 65 73 73 20  tion.** is less 
0300: 74 68 61 6e 20 7a 65 72 6f 2e 0a 2a 2f 0a 69 6e  than zero..*/.in
0310: 74 20 73 71 6c 69 74 65 33 46 74 73 55 6e 69 63  t sqlite3FtsUnic
0320: 6f 64 65 49 73 61 6c 6e 75 6d 28 69 6e 74 20 63  odeIsalnum(int c
0330: 29 7b 0a 20 20 2f 2a 20 45 61 63 68 20 75 6e 73  ){.  /* Each uns
0340: 69 67 6e 65 64 20 69 6e 74 65 67 65 72 20 69 6e  igned integer in
0350: 20 74 68 65 20 66 6f 6c 6c 6f 77 69 6e 67 20 61   the following a
0360: 72 72 61 79 20 63 6f 72 72 65 73 70 6f 6e 64 73  rray corresponds
0370: 20 74 6f 20 61 20 63 6f 6e 74 69 67 75 6f 75 73   to a contiguous
0380: 0a 20 20 2a 2a 20 72 61 6e 67 65 20 6f 66 20 75  .  ** range of u
0390: 6e 69 63 6f 64 65 20 63 6f 64 65 70 6f 69 6e 74  nicode codepoint
03a0: 73 20 74 68 61 74 20 61 72 65 20 6e 6f 74 20 65  s that are not e
03b0: 69 74 68 65 72 20 6c 65 74 74 65 72 73 20 6f 72  ither letters or
03c0: 20 6e 75 6d 62 65 72 73 20 28 69 2e 65 2e 0a 20   numbers (i.e.. 
03d0: 20 2a 2a 20 63 6f 64 65 70 6f 69 6e 74 73 20 66   ** codepoints f
03e0: 6f 72 20 77 68 69 63 68 20 74 68 69 73 20 66 75  or which this fu
03f0: 6e 63 74 69 6f 6e 20 73 68 6f 75 6c 64 20 72 65  nction should re
0400: 74 75 72 6e 20 30 29 2e 0a 20 20 2a 2a 0a 20 20  turn 0)..  **.  
0410: 2a 2a 20 54 68 65 20 6d 6f 73 74 20 73 69 67 6e  ** The most sign
0420: 69 66 69 63 61 6e 74 20 32 32 20 62 69 74 73 20  ificant 22 bits 
0430: 69 6e 20 65 61 63 68 20 33 32 2d 62 69 74 20 76  in each 32-bit v
0440: 61 6c 75 65 20 63 6f 6e 74 61 69 6e 20 74 68 65  alue contain the
0450: 20 66 69 72 73 74 20 0a 20 20 2a 2a 20 63 6f 64   first .  ** cod
0460: 65 70 6f 69 6e 74 20 69 6e 20 74 68 65 20 72 61  epoint in the ra
0470: 6e 67 65 2e 20 54 68 65 20 6c 65 61 73 74 20 73  nge. The least s
0480: 69 67 6e 69 66 69 63 61 6e 74 20 31 30 20 62 69  ignificant 10 bi
0490: 74 73 20 61 72 65 20 75 73 65 64 20 74 6f 20 73  ts are used to s
04a0: 74 6f 72 65 0a 20 20 2a 2a 20 74 68 65 20 73 69  tore.  ** the si
04b0: 7a 65 20 6f 66 20 74 68 65 20 72 61 6e 67 65 20  ze of the range 
04c0: 28 61 6c 77 61 79 73 20 61 74 20 6c 65 61 73 74  (always at least
04d0: 20 31 29 2e 20 49 6e 20 6f 74 68 65 72 20 77 6f   1). In other wo
04e0: 72 64 73 2c 20 74 68 65 20 76 61 6c 75 65 20 0a  rds, the value .
04f0: 20 20 2a 2a 20 28 28 43 3c 3c 32 32 29 20 2b 20    ** ((C<<22) + 
0500: 4e 29 20 72 65 70 72 65 73 65 6e 74 73 20 61 20  N) represents a 
0510: 72 61 6e 67 65 20 6f 66 20 4e 20 63 6f 64 65 70  range of N codep
0520: 6f 69 6e 74 73 20 73 74 61 72 74 69 6e 67 20 77  oints starting w
0530: 69 74 68 20 63 6f 64 65 70 6f 69 6e 74 20 0a 20  ith codepoint . 
0540: 20 2a 2a 20 43 2e 20 49 74 20 69 73 20 6e 6f 74   ** C. It is not
0550: 20 70 6f 73 73 69 62 6c 65 20 74 6f 20 72 65 70   possible to rep
0560: 72 65 73 65 6e 74 20 61 20 72 61 6e 67 65 20 6c  resent a range l
0570: 61 72 67 65 72 20 74 68 61 6e 20 31 30 32 33 20  arger than 1023 
0580: 63 6f 64 65 70 6f 69 6e 74 73 20 0a 20 20 2a 2a  codepoints .  **
0590: 20 75 73 69 6e 67 20 74 68 69 73 20 66 6f 72 6d   using this form
05a0: 61 74 2e 0a 20 20 2a 2f 0a 20 20 63 6f 6e 73 74  at..  */.  const
05b0: 20 73 74 61 74 69 63 20 75 6e 73 69 67 6e 65 64   static unsigned
05c0: 20 69 6e 74 20 61 45 6e 74 72 79 5b 5d 20 3d 20   int aEntry[] = 
05d0: 7b 0a 20 20 20 20 30 78 30 30 30 30 30 30 33 30  {.    0x00000030
05e0: 2c 20 30 78 30 30 30 30 45 38 30 37 2c 20 30 78  , 0x0000E807, 0x
05f0: 30 30 30 31 36 43 30 36 2c 20 30 78 30 30 30 31  00016C06, 0x0001
0600: 45 43 32 46 2c 20 30 78 30 30 30 32 41 43 30 37  EC2F, 0x0002AC07
0610: 2c 0a 20 20 20 20 30 78 30 30 30 32 44 30 30 31  ,.    0x0002D001
0620: 2c 20 30 78 30 30 30 32 44 38 30 33 2c 20 30 78  , 0x0002D803, 0x
0630: 30 30 30 32 45 43 30 31 2c 20 30 78 30 30 30 32  0002EC01, 0x0002
0640: 46 43 30 31 2c 20 30 78 30 30 30 33 35 43 30 31  FC01, 0x00035C01
0650: 2c 0a 20 20 20 20 30 78 30 30 30 33 44 43 30 31  ,.    0x0003DC01
0660: 2c 20 30 78 30 30 30 42 30 38 30 34 2c 20 30 78  , 0x000B0804, 0x
0670: 30 30 30 42 34 38 30 45 2c 20 30 78 30 30 30 42  000B480E, 0x000B
0680: 39 34 30 37 2c 20 30 78 30 30 30 42 42 34 30 31  9407, 0x000BB401
0690: 2c 0a 20 20 20 20 30 78 30 30 30 42 42 43 38 31  ,.    0x000BBC81
06a0: 2c 20 30 78 30 30 30 44 44 34 30 31 2c 20 30 78  , 0x000DD401, 0x
06b0: 30 30 30 44 46 38 30 31 2c 20 30 78 30 30 30 45  000DF801, 0x000E
06c0: 31 30 30 32 2c 20 30 78 30 30 30 45 31 43 30 31  1002, 0x000E1C01
06d0: 2c 0a 20 20 20 20 30 78 30 30 30 46 44 38 30 31  ,.    0x000FD801
06e0: 2c 20 30 78 30 30 31 32 30 38 30 38 2c 20 30 78  , 0x00120808, 0x
06f0: 30 30 31 35 36 38 30 36 2c 20 30 78 30 30 31 36  00156806, 0x0016
0700: 32 34 30 32 2c 20 30 78 30 30 31 36 33 43 30 31  2402, 0x00163C01
0710: 2c 0a 20 20 20 20 30 78 30 30 31 36 34 34 33 37  ,.    0x00164437
0720: 2c 20 30 78 30 30 31 37 43 43 30 32 2c 20 30 78  , 0x0017CC02, 0x
0730: 30 30 31 38 30 30 30 35 2c 20 30 78 30 30 31 38  00180005, 0x0018
0740: 31 38 31 36 2c 20 30 78 30 30 31 38 37 38 30 32  1816, 0x00187802
0750: 2c 0a 20 20 20 20 30 78 30 30 31 39 32 43 31 35  ,.    0x00192C15
0760: 2c 20 30 78 30 30 31 39 41 38 30 34 2c 20 30 78  , 0x0019A804, 0x
0770: 30 30 31 39 43 30 30 31 2c 20 30 78 30 30 31 42  0019C001, 0x001B
0780: 35 30 30 31 2c 20 30 78 30 30 31 42 35 38 30 46  5001, 0x001B580F
0790: 2c 0a 20 20 20 20 30 78 30 30 31 42 39 43 30 37  ,.    0x001B9C07
07a0: 2c 20 30 78 30 30 31 42 46 34 30 32 2c 20 30 78  , 0x001BF402, 0x
07b0: 30 30 31 43 30 30 30 45 2c 20 30 78 30 30 31 43  001C000E, 0x001C
07c0: 33 43 30 31 2c 20 30 78 30 30 31 43 34 34 30 31  3C01, 0x001C4401
07d0: 2c 0a 20 20 20 20 30 78 30 30 31 43 43 30 31 42  ,.    0x001CC01B
07e0: 2c 20 30 78 30 30 31 45 39 38 30 42 2c 20 30 78  , 0x001E980B, 0x
07f0: 30 30 31 46 41 43 30 39 2c 20 30 78 30 30 31 46  001FAC09, 0x001F
0800: 44 38 30 34 2c 20 30 78 30 30 32 30 35 38 30 34  D804, 0x00205804
0810: 2c 0a 20 20 20 20 30 78 30 30 32 30 36 43 30 39  ,.    0x00206C09
0820: 2c 20 30 78 30 30 32 30 39 34 30 33 2c 20 30 78  , 0x00209403, 0x
0830: 30 30 32 30 41 34 30 35 2c 20 30 78 30 30 32 30  0020A405, 0x0020
0840: 43 30 30 46 2c 20 30 78 30 30 32 31 36 34 30 33  C00F, 0x00216403
0850: 2c 0a 20 20 20 20 30 78 30 30 32 31 37 38 30 31  ,.    0x00217801
0860: 2c 20 30 78 30 30 32 33 39 30 31 42 2c 20 30 78  , 0x0023901B, 0x
0870: 30 30 32 34 30 30 30 34 2c 20 30 78 30 30 32 34  00240004, 0x0024
0880: 45 38 30 33 2c 20 30 78 30 30 32 34 46 38 31 32  E803, 0x0024F812
0890: 2c 0a 20 20 20 20 30 78 30 30 32 35 34 34 30 37  ,.    0x00254407
08a0: 2c 20 30 78 30 30 32 35 38 38 30 34 2c 20 30 78  , 0x00258804, 0x
08b0: 30 30 32 35 43 30 30 31 2c 20 30 78 30 30 32 36  0025C001, 0x0026
08c0: 30 34 30 33 2c 20 30 78 30 30 32 36 46 30 30 31  0403, 0x0026F001
08d0: 2c 0a 20 20 20 20 30 78 30 30 32 36 46 38 30 37  ,.    0x0026F807
08e0: 2c 20 30 78 30 30 32 37 31 43 30 32 2c 20 30 78  , 0x00271C02, 0x
08f0: 30 30 32 37 32 43 30 33 2c 20 30 78 30 30 32 37  00272C03, 0x0027
0900: 35 43 30 31 2c 20 30 78 30 30 32 37 38 38 30 32  5C01, 0x00278802
0910: 2c 0a 20 20 20 20 30 78 30 30 32 37 43 38 30 32  ,.    0x0027C802
0920: 2c 20 30 78 30 30 32 37 45 38 30 32 2c 20 30 78  , 0x0027E802, 0x
0930: 30 30 32 38 30 34 30 33 2c 20 30 78 30 30 32 38  00280403, 0x0028
0940: 46 30 30 31 2c 20 30 78 30 30 32 38 46 38 30 35  F001, 0x0028F805
0950: 2c 0a 20 20 20 20 30 78 30 30 32 39 31 43 30 32  ,.    0x00291C02
0960: 2c 20 30 78 30 30 32 39 32 43 30 33 2c 20 30 78  , 0x00292C03, 0x
0970: 30 30 32 39 34 34 30 31 2c 20 30 78 30 30 32 39  00294401, 0x0029
0980: 43 30 30 32 2c 20 30 78 30 30 32 39 44 34 30 31  C002, 0x0029D401
0990: 2c 0a 20 20 20 20 30 78 30 30 32 41 30 34 30 33  ,.    0x002A0403
09a0: 2c 20 30 78 30 30 32 41 46 30 30 31 2c 20 30 78  , 0x002AF001, 0x
09b0: 30 30 32 41 46 38 30 38 2c 20 30 78 30 30 32 42  002AF808, 0x002B
09c0: 31 43 30 33 2c 20 30 78 30 30 32 42 32 43 30 33  1C03, 0x002B2C03
09d0: 2c 0a 20 20 20 20 30 78 30 30 32 42 38 38 30 32  ,.    0x002B8802
09e0: 2c 20 30 78 30 30 32 42 43 30 30 32 2c 20 30 78  , 0x002BC002, 0x
09f0: 30 30 32 43 30 34 30 33 2c 20 30 78 30 30 32 43  002C0403, 0x002C
0a00: 46 30 30 31 2c 20 30 78 30 30 32 43 46 38 30 37  F001, 0x002CF807
0a10: 2c 0a 20 20 20 20 30 78 30 30 32 44 31 43 30 32  ,.    0x002D1C02
0a20: 2c 20 30 78 30 30 32 44 32 43 30 33 2c 20 30 78  , 0x002D2C03, 0x
0a30: 30 30 32 44 35 38 30 32 2c 20 30 78 30 30 32 44  002D5802, 0x002D
0a40: 38 38 30 32 2c 20 30 78 30 30 32 44 43 30 30 31  8802, 0x002DC001
0a50: 2c 0a 20 20 20 20 30 78 30 30 32 45 30 38 30 31  ,.    0x002E0801
0a60: 2c 20 30 78 30 30 32 45 46 38 30 35 2c 20 30 78  , 0x002EF805, 0x
0a70: 30 30 32 46 31 38 30 33 2c 20 30 78 30 30 32 46  002F1803, 0x002F
0a80: 32 38 30 34 2c 20 30 78 30 30 32 46 35 43 30 31  2804, 0x002F5C01
0a90: 2c 0a 20 20 20 20 30 78 30 30 32 46 43 43 30 38  ,.    0x002FCC08
0aa0: 2c 20 30 78 30 30 33 30 30 34 30 33 2c 20 30 78  , 0x00300403, 0x
0ab0: 30 30 33 30 46 38 30 37 2c 20 30 78 30 30 33 31  0030F807, 0x0031
0ac0: 31 38 30 33 2c 20 30 78 30 30 33 31 32 38 30 34  1803, 0x00312804
0ad0: 2c 0a 20 20 20 20 30 78 30 30 33 31 35 34 30 32  ,.    0x00315402
0ae0: 2c 20 30 78 30 30 33 31 38 38 30 32 2c 20 30 78  , 0x00318802, 0x
0af0: 30 30 33 31 46 43 30 31 2c 20 30 78 30 30 33 32  0031FC01, 0x0032
0b00: 30 38 30 32 2c 20 30 78 30 30 33 32 46 30 30 31  0802, 0x0032F001
0b10: 2c 0a 20 20 20 20 30 78 30 30 33 32 46 38 30 37  ,.    0x0032F807
0b20: 2c 20 30 78 30 30 33 33 31 38 30 33 2c 20 30 78  , 0x00331803, 0x
0b30: 30 30 33 33 32 38 30 34 2c 20 30 78 30 30 33 33  00332804, 0x0033
0b40: 35 34 30 32 2c 20 30 78 30 30 33 33 38 38 30 32  5402, 0x00338802
0b50: 2c 0a 20 20 20 20 30 78 30 30 33 34 30 38 30 32  ,.    0x00340802
0b60: 2c 20 30 78 30 30 33 34 46 38 30 37 2c 20 30 78  , 0x0034F807, 0x
0b70: 30 30 33 35 31 38 30 33 2c 20 30 78 30 30 33 35  00351803, 0x0035
0b80: 32 38 30 34 2c 20 30 78 30 30 33 35 35 43 30 31  2804, 0x00355C01
0b90: 2c 0a 20 20 20 20 30 78 30 30 33 35 38 38 30 32  ,.    0x00358802
0ba0: 2c 20 30 78 30 30 33 35 45 34 30 31 2c 20 30 78  , 0x0035E401, 0x
0bb0: 30 30 33 36 30 38 30 32 2c 20 30 78 30 30 33 37  00360802, 0x0037
0bc0: 32 38 30 31 2c 20 30 78 30 30 33 37 33 43 30 36  2801, 0x00373C06
0bd0: 2c 0a 20 20 20 20 30 78 30 30 33 37 35 38 30 31  ,.    0x00375801
0be0: 2c 20 30 78 30 30 33 37 36 30 30 38 2c 20 30 78  , 0x00376008, 0x
0bf0: 30 30 33 37 43 38 30 33 2c 20 30 78 30 30 33 38  0037C803, 0x0038
0c00: 43 34 30 31 2c 20 30 78 30 30 33 38 44 30 30 37  C401, 0x0038D007
0c10: 2c 0a 20 20 20 20 30 78 30 30 33 38 46 43 30 31  ,.    0x0038FC01
0c20: 2c 20 30 78 30 30 33 39 31 43 30 39 2c 20 30 78  , 0x00391C09, 0x
0c30: 30 30 33 39 36 38 30 32 2c 20 30 78 30 30 33 41  00396802, 0x003A
0c40: 43 34 30 31 2c 20 30 78 30 30 33 41 44 30 30 36  C401, 0x003AD006
0c50: 2c 0a 20 20 20 20 30 78 30 30 33 41 45 43 30 32  ,.    0x003AEC02
0c60: 2c 20 30 78 30 30 33 42 32 30 30 36 2c 20 30 78  , 0x003B2006, 0x
0c70: 30 30 33 43 30 34 31 46 2c 20 30 78 30 30 33 43  003C041F, 0x003C
0c80: 44 30 30 43 2c 20 30 78 30 30 33 44 43 34 31 37  D00C, 0x003DC417
0c90: 2c 0a 20 20 20 20 30 78 30 30 33 45 33 34 30 42  ,.    0x003E340B
0ca0: 2c 20 30 78 30 30 33 45 36 34 32 34 2c 20 30 78  , 0x003E6424, 0x
0cb0: 30 30 33 45 46 38 30 46 2c 20 30 78 30 30 33 46  003EF80F, 0x003F
0cc0: 33 38 30 44 2c 20 30 78 30 30 34 30 41 43 31 34  380D, 0x0040AC14
0cd0: 2c 0a 20 20 20 20 30 78 30 30 34 31 32 38 30 36  ,.    0x00412806
0ce0: 2c 20 30 78 30 30 34 31 35 38 30 34 2c 20 30 78  , 0x00415804, 0x
0cf0: 30 30 34 31 37 38 30 33 2c 20 30 78 30 30 34 31  00417803, 0x0041
0d00: 38 38 30 33 2c 20 30 78 30 30 34 31 39 43 30 37  8803, 0x00419C07
0d10: 2c 0a 20 20 20 20 30 78 30 30 34 31 43 34 30 34  ,.    0x0041C404
0d20: 2c 20 30 78 30 30 34 32 30 38 30 43 2c 20 30 78  , 0x0042080C, 0x
0d30: 30 30 34 32 33 43 30 31 2c 20 30 78 30 30 34 32  00423C01, 0x0042
0d40: 36 38 30 36 2c 20 30 78 30 30 34 33 45 43 30 31  6806, 0x0043EC01
0d50: 2c 0a 20 20 20 20 30 78 30 30 34 44 37 34 30 43  ,.    0x004D740C
0d60: 2c 20 30 78 30 30 34 45 34 30 30 41 2c 20 30 78  , 0x004E400A, 0x
0d70: 30 30 35 30 30 30 30 31 2c 20 30 78 30 30 35 39  00500001, 0x0059
0d80: 42 34 30 32 2c 20 30 78 30 30 35 41 30 30 30 31  B402, 0x005A0001
0d90: 2c 0a 20 20 20 20 30 78 30 30 35 41 36 43 30 32  ,.    0x005A6C02
0da0: 2c 20 30 78 30 30 35 42 41 43 30 33 2c 20 30 78  , 0x005BAC03, 0x
0db0: 30 30 35 43 34 38 30 33 2c 20 30 78 30 30 35 43  005C4803, 0x005C
0dc0: 43 38 30 35 2c 20 30 78 30 30 35 44 34 38 30 32  C805, 0x005D4802
0dd0: 2c 0a 20 20 20 20 30 78 30 30 35 44 43 38 30 32  ,.    0x005DC802
0de0: 2c 20 30 78 30 30 35 45 44 30 32 33 2c 20 30 78  , 0x005ED023, 0x
0df0: 30 30 35 46 36 30 30 34 2c 20 30 78 30 30 35 46  005F6004, 0x005F
0e00: 37 34 30 31 2c 20 30 78 30 30 36 30 30 30 30 46  7401, 0x0060000F
0e10: 2c 0a 20 20 20 20 30 78 30 30 36 32 41 34 30 31  ,.    0x0062A401
0e20: 2c 20 30 78 30 30 36 34 38 30 30 43 2c 20 30 78  , 0x0064800C, 0x
0e30: 30 30 36 34 43 30 30 43 2c 20 30 78 30 30 36 35  0064C00C, 0x0065
0e40: 30 30 30 31 2c 20 30 78 30 30 36 35 31 30 30 32  0001, 0x00651002
0e50: 2c 0a 20 20 20 20 30 78 30 30 36 36 43 30 31 31  ,.    0x0066C011
0e60: 2c 20 30 78 30 30 36 37 32 30 30 32 2c 20 30 78  , 0x00672002, 0x
0e70: 30 30 36 37 37 38 32 32 2c 20 30 78 30 30 36 38  00677822, 0x0068
0e80: 35 43 30 35 2c 20 30 78 30 30 36 38 37 38 30 32  5C05, 0x00687802
0e90: 2c 0a 20 20 20 20 30 78 30 30 36 39 35 34 30 41  ,.    0x0069540A
0ea0: 2c 20 30 78 30 30 36 39 38 30 31 44 2c 20 30 78  , 0x0069801D, 0x
0eb0: 30 30 36 39 46 43 30 31 2c 20 30 78 30 30 36 41  0069FC01, 0x006A
0ec0: 38 30 30 37 2c 20 30 78 30 30 36 41 41 30 30 36  8007, 0x006AA006
0ed0: 2c 0a 20 20 20 20 30 78 30 30 36 43 30 30 30 35  ,.    0x006C0005
0ee0: 2c 20 30 78 30 30 36 43 44 30 31 31 2c 20 30 78  , 0x006CD011, 0x
0ef0: 30 30 36 44 36 38 32 33 2c 20 30 78 30 30 36 45  006D6823, 0x006E
0f00: 30 30 30 33 2c 20 30 78 30 30 36 45 38 34 30 44  0003, 0x006E840D
0f10: 2c 0a 20 20 20 20 30 78 30 30 36 46 39 38 30 45  ,.    0x006F980E
0f20: 2c 20 30 78 30 30 36 46 46 30 30 34 2c 20 30 78  , 0x006FF004, 0x
0f30: 30 30 37 30 39 30 31 34 2c 20 30 78 30 30 37 30  00709014, 0x0070
0f40: 45 43 30 35 2c 20 30 78 30 30 37 31 46 38 30 32  EC05, 0x0071F802
0f50: 2c 0a 20 20 20 20 30 78 30 30 37 33 30 30 30 38  ,.    0x00730008
0f60: 2c 20 30 78 30 30 37 33 34 30 31 39 2c 20 30 78  , 0x00734019, 0x
0f70: 30 30 37 33 42 34 30 31 2c 20 30 78 30 30 37 33  0073B401, 0x0073
0f80: 43 38 30 33 2c 20 30 78 30 30 37 37 30 30 32 37  C803, 0x00770027
0f90: 2c 0a 20 20 20 20 30 78 30 30 37 37 46 30 30 34  ,.    0x0077F004
0fa0: 2c 20 30 78 30 30 37 45 46 34 30 31 2c 20 30 78  , 0x007EF401, 0x
0fb0: 30 30 37 45 46 43 30 33 2c 20 30 78 30 30 37 46  007EFC03, 0x007F
0fc0: 33 34 30 33 2c 20 30 78 30 30 37 46 37 34 30 33  3403, 0x007F7403
0fd0: 2c 0a 20 20 20 20 30 78 30 30 37 46 42 34 30 33  ,.    0x007FB403
0fe0: 2c 20 30 78 30 30 37 46 46 34 30 32 2c 20 30 78  , 0x007FF402, 0x
0ff0: 30 30 38 30 30 30 36 35 2c 20 30 78 30 30 38 31  00800065, 0x0081
1000: 41 38 30 36 2c 20 30 78 30 30 38 31 45 38 30 35  A806, 0x0081E805
1010: 2c 0a 20 20 20 20 30 78 30 30 38 32 32 38 30 35  ,.    0x00822805
1020: 2c 20 30 78 30 30 38 32 38 30 31 41 2c 20 30 78  , 0x0082801A, 0x
1030: 30 30 38 33 34 30 32 31 2c 20 30 78 30 30 38 34  00834021, 0x0084
1040: 30 30 30 32 2c 20 30 78 30 30 38 34 30 43 30 34  0002, 0x00840C04
1050: 2c 0a 20 20 20 20 30 78 30 30 38 34 32 30 30 32  ,.    0x00842002
1060: 2c 20 30 78 30 30 38 34 35 30 30 31 2c 20 30 78  , 0x00845001, 0x
1070: 30 30 38 34 35 38 30 33 2c 20 30 78 30 30 38 34  00845803, 0x0084
1080: 37 38 30 36 2c 20 30 78 30 30 38 34 39 34 30 31  7806, 0x00849401
1090: 2c 0a 20 20 20 20 30 78 30 30 38 34 39 43 30 31  ,.    0x00849C01
10a0: 2c 20 30 78 30 30 38 34 41 34 30 31 2c 20 30 78  , 0x0084A401, 0x
10b0: 30 30 38 34 42 38 30 31 2c 20 30 78 30 30 38 34  0084B801, 0x0084
10c0: 45 38 30 32 2c 20 30 78 30 30 38 35 30 30 30 35  E802, 0x00850005
10d0: 2c 0a 20 20 20 20 30 78 30 30 38 35 32 38 30 34  ,.    0x00852804
10e0: 2c 20 30 78 30 30 38 35 33 43 30 31 2c 20 30 78  , 0x00853C01, 0x
10f0: 30 30 38 36 34 32 36 34 2c 20 30 78 30 30 39 30  00864264, 0x0090
1100: 30 30 32 37 2c 20 30 78 30 30 39 31 30 30 30 42  0027, 0x0091000B
1110: 2c 0a 20 20 20 20 30 78 30 30 39 32 37 30 34 45  ,.    0x0092704E
1120: 2c 20 30 78 30 30 39 34 30 32 30 30 2c 20 30 78  , 0x00940200, 0x
1130: 30 30 39 43 30 34 37 35 2c 20 30 78 30 30 39 45  009C0475, 0x009E
1140: 35 33 42 39 2c 20 30 78 30 30 41 44 34 30 30 41  53B9, 0x00AD400A
1150: 2c 0a 20 20 20 20 30 78 30 30 42 33 39 34 30 36  ,.    0x00B39406
1160: 2c 20 30 78 30 30 42 33 42 43 30 33 2c 20 30 78  , 0x00B3BC03, 0x
1170: 30 30 42 33 45 34 30 34 2c 20 30 78 30 30 42 33  00B3E404, 0x00B3
1180: 46 38 30 32 2c 20 30 78 30 30 42 35 43 30 30 31  F802, 0x00B5C001
1190: 2c 0a 20 20 20 20 30 78 30 30 42 35 46 43 30 31  ,.    0x00B5FC01
11a0: 2c 20 30 78 30 30 42 37 38 30 34 46 2c 20 30 78  , 0x00B7804F, 0x
11b0: 30 30 42 38 43 30 30 43 2c 20 30 78 30 30 42 41  00B8C00C, 0x00BA
11c0: 30 30 31 41 2c 20 30 78 30 30 42 41 36 43 35 39  001A, 0x00BA6C59
11d0: 2c 0a 20 20 20 20 30 78 30 30 42 43 30 30 44 36  ,.    0x00BC00D6
11e0: 2c 20 30 78 30 30 42 46 43 30 30 43 2c 20 30 78  , 0x00BFC00C, 0x
11f0: 30 30 43 30 30 30 30 35 2c 20 30 78 30 30 43 30  00C00005, 0x00C0
1200: 32 30 31 39 2c 20 30 78 30 30 43 30 41 38 30 37  2019, 0x00C0A807
1210: 2c 0a 20 20 20 20 30 78 30 30 43 30 44 38 30 32  ,.    0x00C0D802
1220: 2c 20 30 78 30 30 43 30 46 34 30 33 2c 20 30 78  , 0x00C0F403, 0x
1230: 30 30 43 32 36 34 30 34 2c 20 30 78 30 30 43 32  00C26404, 0x00C2
1240: 38 30 30 31 2c 20 30 78 30 30 43 33 45 43 30 31  8001, 0x00C3EC01
1250: 2c 0a 20 20 20 20 30 78 30 30 43 36 34 30 30 32  ,.    0x00C64002
1260: 2c 20 30 78 30 30 43 36 35 38 30 41 2c 20 30 78  , 0x00C6580A, 0x
1270: 30 30 43 37 30 30 32 34 2c 20 30 78 30 30 43 38  00C70024, 0x00C8
1280: 30 30 31 46 2c 20 30 78 30 30 43 38 41 38 31 45  001F, 0x00C8A81E
1290: 2c 0a 20 20 20 20 30 78 30 30 43 39 34 30 30 31  ,.    0x00C94001
12a0: 2c 20 30 78 30 30 43 39 38 30 32 30 2c 20 30 78  , 0x00C98020, 0x
12b0: 30 30 43 41 32 38 32 37 2c 20 30 78 30 30 43 42  00CA2827, 0x00CB
12c0: 30 30 33 46 2c 20 30 78 30 30 43 43 30 31 30 30  003F, 0x00CC0100
12d0: 2c 0a 20 20 20 20 30 78 30 31 33 37 30 30 34 30  ,.    0x01370040
12e0: 2c 20 30 78 30 32 39 32 34 30 33 37 2c 20 30 78  , 0x02924037, 0x
12f0: 30 32 39 33 46 38 30 32 2c 20 30 78 30 32 39 38  0293F802, 0x0298
1300: 33 34 30 33 2c 20 30 78 30 32 39 39 42 43 31 30  3403, 0x0299BC10
1310: 2c 0a 20 20 20 20 30 78 30 32 39 41 37 43 30 31  ,.    0x029A7C01
1320: 2c 20 30 78 30 32 39 42 43 30 30 38 2c 20 30 78  , 0x029BC008, 0x
1330: 30 32 39 43 30 30 31 37 2c 20 30 78 30 32 39 43  029C0017, 0x029C
1340: 38 30 30 32 2c 20 30 78 30 32 39 45 32 34 30 32  8002, 0x029E2402
1350: 2c 0a 20 20 20 20 30 78 30 32 41 30 30 38 30 31  ,.    0x02A00801
1360: 2c 20 30 78 30 32 41 30 31 38 30 31 2c 20 30 78  , 0x02A01801, 0x
1370: 30 32 41 30 32 43 30 31 2c 20 30 78 30 32 41 30  02A02C01, 0x02A0
1380: 38 43 30 39 2c 20 30 78 30 32 41 30 44 38 30 34  8C09, 0x02A0D804
1390: 2c 0a 20 20 20 20 30 78 30 32 41 31 44 30 30 34  ,.    0x02A1D004
13a0: 2c 20 30 78 30 32 41 32 30 30 30 32 2c 20 30 78  , 0x02A20002, 0x
13b0: 30 32 41 32 44 30 31 31 2c 20 30 78 30 32 41 33  02A2D011, 0x02A3
13c0: 33 38 30 32 2c 20 30 78 30 32 41 33 38 30 31 32  3802, 0x02A38012
13d0: 2c 0a 20 20 20 20 30 78 30 32 41 33 45 30 30 33  ,.    0x02A3E003
13e0: 2c 20 30 78 30 32 41 34 39 38 30 41 2c 20 30 78  , 0x02A4980A, 0x
13f0: 30 32 41 35 31 43 30 44 2c 20 30 78 30 32 41 35  02A51C0D, 0x02A5
1400: 37 43 30 31 2c 20 30 78 30 32 41 36 30 30 30 34  7C01, 0x02A60004
1410: 2c 0a 20 20 20 20 30 78 30 32 41 36 43 43 31 42  ,.    0x02A6CC1B
1420: 2c 20 30 78 30 32 41 37 37 38 30 32 2c 20 30 78  , 0x02A77802, 0x
1430: 30 32 41 38 41 34 30 45 2c 20 30 78 30 32 41 39  02A8A40E, 0x02A9
1440: 30 43 30 31 2c 20 30 78 30 32 41 39 33 30 30 32  0C01, 0x02A93002
1450: 2c 0a 20 20 20 20 30 78 30 32 41 39 37 30 30 34  ,.    0x02A97004
1460: 2c 20 30 78 30 32 41 39 44 43 30 33 2c 20 30 78  , 0x02A9DC03, 0x
1470: 30 32 41 39 45 43 30 31 2c 20 30 78 30 32 41 41  02A9EC01, 0x02AA
1480: 43 30 30 31 2c 20 30 78 30 32 41 41 43 38 30 33  C001, 0x02AAC803
1490: 2c 0a 20 20 20 20 30 78 30 32 41 41 44 43 30 32  ,.    0x02AADC02
14a0: 2c 20 30 78 30 32 41 41 46 38 30 32 2c 20 30 78  , 0x02AAF802, 0x
14b0: 30 32 41 42 30 34 30 31 2c 20 30 78 30 32 41 42  02AB0401, 0x02AB
14c0: 37 38 30 32 2c 20 30 78 30 32 41 42 41 43 30 37  7802, 0x02ABAC07
14d0: 2c 0a 20 20 20 20 30 78 30 32 41 42 44 34 30 32  ,.    0x02ABD402
14e0: 2c 20 30 78 30 32 41 46 38 43 30 42 2c 20 30 78  , 0x02AF8C0B, 0x
14f0: 30 33 36 30 30 30 30 31 2c 20 30 78 30 33 36 44  03600001, 0x036D
1500: 46 43 30 32 2c 20 30 78 30 33 36 46 46 43 30 32  FC02, 0x036FFC02
1510: 2c 0a 20 20 20 20 30 78 30 33 37 46 46 43 30 31  ,.    0x037FFC01
1520: 2c 20 30 78 30 33 45 43 37 38 30 31 2c 20 30 78  , 0x03EC7801, 0x
1530: 30 33 45 43 41 34 30 31 2c 20 30 78 30 33 45 45  03ECA401, 0x03EE
1540: 43 38 31 30 2c 20 30 78 30 33 46 34 46 38 30 32  C810, 0x03F4F802
1550: 2c 0a 20 20 20 20 30 78 30 33 46 37 46 30 30 32  ,.    0x03F7F002
1560: 2c 20 30 78 30 33 46 38 30 30 31 41 2c 20 30 78  , 0x03F8001A, 0x
1570: 30 33 46 38 38 30 30 37 2c 20 30 78 30 33 46 38  03F88007, 0x03F8
1580: 43 30 32 33 2c 20 30 78 30 33 46 39 35 30 31 33  C023, 0x03F95013
1590: 2c 0a 20 20 20 20 30 78 30 33 46 39 41 30 30 34  ,.    0x03F9A004
15a0: 2c 20 30 78 30 33 46 42 46 43 30 31 2c 20 30 78  , 0x03FBFC01, 0x
15b0: 30 33 46 43 30 34 30 46 2c 20 30 78 30 33 46 43  03FC040F, 0x03FC
15c0: 36 38 30 37 2c 20 30 78 30 33 46 43 45 43 30 36  6807, 0x03FCEC06
15d0: 2c 0a 20 20 20 20 30 78 30 33 46 44 36 43 30 42  ,.    0x03FD6C0B
15e0: 2c 20 30 78 30 33 46 46 38 30 30 37 2c 20 30 78  , 0x03FF8007, 0x
15f0: 30 33 46 46 41 30 30 37 2c 20 30 78 30 33 46 46  03FFA007, 0x03FF
1600: 45 34 30 35 2c 20 30 78 30 34 30 34 30 30 30 33  E405, 0x04040003
1610: 2c 0a 20 20 20 20 30 78 30 34 30 34 44 43 30 39  ,.    0x0404DC09
1620: 2c 20 30 78 30 34 30 35 45 34 31 31 2c 20 30 78  , 0x0405E411, 0x
1630: 30 34 30 36 34 30 30 43 2c 20 30 78 30 34 30 37  0406400C, 0x0407
1640: 34 30 32 45 2c 20 30 78 30 34 30 45 37 43 30 31  402E, 0x040E7C01
1650: 2c 0a 20 20 20 20 30 78 30 34 30 46 34 30 30 31  ,.    0x040F4001
1660: 2c 20 30 78 30 34 32 31 35 43 30 31 2c 20 30 78  , 0x04215C01, 0x
1670: 30 34 32 34 37 43 30 31 2c 20 30 78 30 34 32 34  04247C01, 0x0424
1680: 46 43 30 31 2c 20 30 78 30 34 32 38 30 34 30 33  FC01, 0x04280403
1690: 2c 0a 20 20 20 20 30 78 30 34 32 38 31 34 30 32  ,.    0x04281402
16a0: 2c 20 30 78 30 34 32 38 33 30 30 34 2c 20 30 78  , 0x04283004, 0x
16b0: 30 34 32 38 45 30 30 33 2c 20 30 78 30 34 32 38  0428E003, 0x0428
16c0: 46 43 30 31 2c 20 30 78 30 34 32 39 34 30 30 39  FC01, 0x04294009
16d0: 2c 0a 20 20 20 20 30 78 30 34 32 39 46 43 30 31  ,.    0x0429FC01
16e0: 2c 20 30 78 30 34 32 43 45 34 30 37 2c 20 30 78  , 0x042CE407, 0x
16f0: 30 34 34 30 30 30 30 33 2c 20 30 78 30 34 34 30  04400003, 0x0440
1700: 45 30 31 36 2c 20 30 78 30 34 34 32 30 30 30 33  E016, 0x04420003
1710: 2c 0a 20 20 20 20 30 78 30 34 34 32 43 30 31 32  ,.    0x0442C012
1720: 2c 20 30 78 30 34 34 34 30 30 30 33 2c 20 30 78  , 0x04440003, 0x
1730: 30 34 34 34 39 43 30 45 2c 20 30 78 30 34 34 35  04449C0E, 0x0445
1740: 30 30 30 34 2c 20 30 78 30 34 34 36 30 30 30 33  0004, 0x04460003
1750: 2c 0a 20 20 20 20 30 78 30 34 34 36 43 43 30 45  ,.    0x0446CC0E
1760: 2c 20 30 78 30 34 34 37 31 34 30 34 2c 20 30 78  , 0x04471404, 0x
1770: 30 34 35 41 41 43 30 44 2c 20 30 78 30 34 39 31  045AAC0D, 0x0491
1780: 43 30 30 34 2c 20 30 78 30 35 42 44 34 34 32 45  C004, 0x05BD442E
1790: 2c 0a 20 20 20 20 30 78 30 35 42 45 33 43 30 34  ,.    0x05BE3C04
17a0: 2c 20 30 78 30 37 34 30 30 30 46 36 2c 20 30 78  , 0x074000F6, 0x
17b0: 30 37 34 34 30 30 32 37 2c 20 30 78 30 37 34 34  07440027, 0x0744
17c0: 41 34 42 35 2c 20 30 78 30 37 34 38 30 30 34 36  A4B5, 0x07480046
17d0: 2c 0a 20 20 20 20 30 78 30 37 34 43 30 30 35 37  ,.    0x074C0057
17e0: 2c 20 30 78 30 37 35 42 30 34 30 31 2c 20 30 78  , 0x075B0401, 0x
17f0: 30 37 35 42 36 43 30 31 2c 20 30 78 30 37 35 42  075B6C01, 0x075B
1800: 45 43 30 31 2c 20 30 78 30 37 35 43 35 34 30 31  EC01, 0x075C5401
1810: 2c 0a 20 20 20 20 30 78 30 37 35 43 44 34 30 31  ,.    0x075CD401
1820: 2c 20 30 78 30 37 35 44 33 43 30 31 2c 20 30 78  , 0x075D3C01, 0x
1830: 30 37 35 44 42 43 30 31 2c 20 30 78 30 37 35 45  075DBC01, 0x075E
1840: 32 34 30 31 2c 20 30 78 30 37 35 45 41 34 30 31  2401, 0x075EA401
1850: 2c 0a 20 20 20 20 30 78 30 37 35 46 30 43 30 31  ,.    0x075F0C01
1860: 2c 20 30 78 30 37 42 42 43 30 30 32 2c 20 30 78  , 0x07BBC002, 0x
1870: 30 37 43 30 30 30 32 43 2c 20 30 78 30 37 43 30  07C0002C, 0x07C0
1880: 43 30 36 34 2c 20 30 78 30 37 43 32 38 30 30 46  C064, 0x07C2800F
1890: 2c 0a 20 20 20 20 30 78 30 37 43 32 43 34 30 45  ,.    0x07C2C40E
18a0: 2c 20 30 78 30 37 43 33 30 34 30 46 2c 20 30 78  , 0x07C3040F, 0x
18b0: 30 37 43 33 34 34 30 46 2c 20 30 78 30 37 43 34  07C3440F, 0x07C4
18c0: 34 30 31 46 2c 20 30 78 30 37 43 34 43 30 33 43  401F, 0x07C4C03C
18d0: 2c 0a 20 20 20 20 30 78 30 37 43 35 43 30 32 42  ,.    0x07C5C02B
18e0: 2c 20 30 78 30 37 43 37 39 38 31 44 2c 20 30 78  , 0x07C7981D, 0x
18f0: 30 37 43 38 34 30 32 42 2c 20 30 78 30 37 43 39  07C8402B, 0x07C9
1900: 30 30 30 39 2c 20 30 78 30 37 43 39 34 30 30 32  0009, 0x07C94002
1910: 2c 0a 20 20 20 20 30 78 30 37 43 43 30 30 32 31  ,.    0x07CC0021
1920: 2c 20 30 78 30 37 43 43 43 30 30 36 2c 20 30 78  , 0x07CCC006, 0x
1930: 30 37 43 43 44 43 34 36 2c 20 30 78 30 37 43 45  07CCDC46, 0x07CE
1940: 30 30 31 34 2c 20 30 78 30 37 43 45 38 30 32 35  0014, 0x07CE8025
1950: 2c 0a 20 20 20 20 30 78 30 37 43 46 31 38 30 35  ,.    0x07CF1805
1960: 2c 20 30 78 30 37 43 46 38 30 31 31 2c 20 30 78  , 0x07CF8011, 0x
1970: 30 37 44 30 30 30 33 46 2c 20 30 78 30 37 44 31  07D0003F, 0x07D1
1980: 30 30 30 31 2c 20 30 78 30 37 44 31 30 38 42 36  0001, 0x07D108B6
1990: 2c 0a 20 20 20 20 30 78 30 37 44 33 45 34 30 34  ,.    0x07D3E404
19a0: 2c 20 30 78 30 37 44 34 30 30 33 45 2c 20 30 78  , 0x07D4003E, 0x
19b0: 30 37 44 35 30 30 30 34 2c 20 30 78 30 37 44 35  07D50004, 0x07D5
19c0: 34 30 31 38 2c 20 30 78 30 37 44 37 45 43 34 36  4018, 0x07D7EC46
19d0: 2c 0a 20 20 20 20 30 78 30 37 44 39 31 34 30 42  ,.    0x07D9140B
19e0: 2c 20 30 78 30 37 44 41 30 30 34 36 2c 20 30 78  , 0x07DA0046, 0x
19f0: 30 37 44 43 30 30 37 34 2c 20 30 78 33 38 30 30  07DC0074, 0x3800
1a00: 30 34 30 31 2c 20 30 78 33 38 30 30 38 30 36 30  0401, 0x38008060
1a10: 2c 0a 20 20 20 20 30 78 33 38 30 34 30 30 46 30  ,.    0x380400F0
1a20: 2c 0a 20 20 7d 3b 0a 20 20 73 74 61 74 69 63 20  ,.  };.  static 
1a30: 63 6f 6e 73 74 20 75 6e 73 69 67 6e 65 64 20 69  const unsigned i
1a40: 6e 74 20 61 41 73 63 69 69 5b 34 5d 20 3d 20 7b  nt aAscii[4] = {
1a50: 0a 20 20 20 20 30 78 46 46 46 46 46 46 46 46 2c  .    0xFFFFFFFF,
1a60: 20 30 78 46 43 30 30 46 46 46 46 2c 20 30 78 46   0xFC00FFFF, 0xF
1a70: 38 30 30 30 30 30 31 2c 20 30 78 46 38 30 30 30  8000001, 0xF8000
1a80: 30 30 31 2c 0a 20 20 7d 3b 0a 0a 20 20 69 66 28  001,.  };..  if(
1a90: 20 63 3c 31 32 38 20 29 7b 0a 20 20 20 20 72 65   c<128 ){.    re
1aa0: 74 75 72 6e 20 28 20 28 61 41 73 63 69 69 5b 63  turn ( (aAscii[c
1ab0: 20 3e 3e 20 35 5d 20 26 20 28 31 20 3c 3c 20 28   >> 5] & (1 << (
1ac0: 63 20 26 20 30 78 30 30 31 46 29 29 29 3d 3d 30  c & 0x001F)))==0
1ad0: 20 29 3b 0a 20 20 7d 65 6c 73 65 20 69 66 28 20   );.  }else if( 
1ae0: 63 3c 28 31 3c 3c 32 32 29 20 29 7b 0a 20 20 20  c<(1<<22) ){.   
1af0: 20 75 6e 73 69 67 6e 65 64 20 69 6e 74 20 6b 65   unsigned int ke
1b00: 79 20 3d 20 28 28 28 75 6e 73 69 67 6e 65 64 20  y = (((unsigned 
1b10: 69 6e 74 29 63 29 3c 3c 31 30 29 20 7c 20 30 78  int)c)<<10) | 0x
1b20: 30 30 30 30 30 33 46 46 3b 0a 20 20 20 20 69 6e  000003FF;.    in
1b30: 74 20 69 52 65 73 3b 0a 20 20 20 20 69 6e 74 20  t iRes;.    int 
1b40: 69 48 69 20 3d 20 73 69 7a 65 6f 66 28 61 45 6e  iHi = sizeof(aEn
1b50: 74 72 79 29 2f 73 69 7a 65 6f 66 28 61 45 6e 74  try)/sizeof(aEnt
1b60: 72 79 5b 30 5d 29 20 2d 20 31 3b 0a 20 20 20 20  ry[0]) - 1;.    
1b70: 69 6e 74 20 69 4c 6f 20 3d 20 30 3b 0a 20 20 20  int iLo = 0;.   
1b80: 20 77 68 69 6c 65 28 20 69 48 69 3e 3d 69 4c 6f   while( iHi>=iLo
1b90: 20 29 7b 0a 20 20 20 20 20 20 69 6e 74 20 69 54   ){.      int iT
1ba0: 65 73 74 20 3d 20 28 69 48 69 20 2b 20 69 4c 6f  est = (iHi + iLo
1bb0: 29 20 2f 20 32 3b 0a 20 20 20 20 20 20 69 66 28  ) / 2;.      if(
1bc0: 20 6b 65 79 20 3e 3d 20 61 45 6e 74 72 79 5b 69   key >= aEntry[i
1bd0: 54 65 73 74 5d 20 29 7b 0a 20 20 20 20 20 20 20  Test] ){.       
1be0: 20 69 52 65 73 20 3d 20 69 54 65 73 74 3b 0a 20   iRes = iTest;. 
1bf0: 20 20 20 20 20 20 20 69 4c 6f 20 3d 20 69 54 65         iLo = iTe
1c00: 73 74 2b 31 3b 0a 20 20 20 20 20 20 7d 65 6c 73  st+1;.      }els
1c10: 65 7b 0a 20 20 20 20 20 20 20 20 69 48 69 20 3d  e{.        iHi =
1c20: 20 69 54 65 73 74 2d 31 3b 0a 20 20 20 20 20 20   iTest-1;.      
1c30: 7d 0a 20 20 20 20 7d 0a 20 20 20 20 61 73 73 65  }.    }.    asse
1c40: 72 74 28 20 61 45 6e 74 72 79 5b 30 5d 3c 6b 65  rt( aEntry[0]<ke
1c50: 79 20 29 3b 0a 20 20 20 20 61 73 73 65 72 74 28  y );.    assert(
1c60: 20 6b 65 79 3e 3d 61 45 6e 74 72 79 5b 69 52 65   key>=aEntry[iRe
1c70: 73 5d 20 29 3b 0a 20 20 20 20 72 65 74 75 72 6e  s] );.    return
1c80: 20 28 28 28 75 6e 73 69 67 6e 65 64 20 69 6e 74   (((unsigned int
1c90: 29 63 29 20 3e 3d 20 28 28 61 45 6e 74 72 79 5b  )c) >= ((aEntry[
1ca0: 69 52 65 73 5d 3e 3e 31 30 29 20 2b 20 28 61 45  iRes]>>10) + (aE
1cb0: 6e 74 72 79 5b 69 52 65 73 5d 26 30 78 33 46 46  ntry[iRes]&0x3FF
1cc0: 29 29 29 3b 0a 20 20 7d 0a 20 20 72 65 74 75 72  )));.  }.  retur
1cd0: 6e 20 31 3b 0a 7d 0a 0a 0a 2f 2a 0a 2a 2a 20 49  n 1;.}.../*.** I
1ce0: 66 20 74 68 65 20 61 72 67 75 6d 65 6e 74 20 69  f the argument i
1cf0: 73 20 61 20 63 6f 64 65 70 6f 69 6e 74 20 63 6f  s a codepoint co
1d00: 72 72 65 73 70 6f 6e 64 69 6e 67 20 74 6f 20 61  rresponding to a
1d10: 20 6c 6f 77 65 72 63 61 73 65 20 6c 65 74 74 65   lowercase lette
1d20: 72 0a 2a 2a 20 69 6e 20 74 68 65 20 41 53 43 49  r.** in the ASCI
1d30: 49 20 72 61 6e 67 65 20 77 69 74 68 20 61 20 64  I range with a d
1d40: 69 61 63 72 69 74 69 63 20 61 64 64 65 64 2c 20  iacritic added, 
1d50: 72 65 74 75 72 6e 20 74 68 65 20 63 6f 64 65 70  return the codep
1d60: 6f 69 6e 74 0a 2a 2a 20 6f 66 20 74 68 65 20 41  oint.** of the A
1d70: 53 43 49 49 20 6c 65 74 74 65 72 20 6f 6e 6c 79  SCII letter only
1d80: 2e 20 46 6f 72 20 65 78 61 6d 70 6c 65 2c 20 69  . For example, i
1d90: 66 20 70 61 73 73 65 64 20 32 33 35 20 2d 20 22  f passed 235 - "
1da0: 4c 41 54 49 4e 0a 2a 2a 20 53 4d 41 4c 4c 20 4c  LATIN.** SMALL L
1db0: 45 54 54 45 52 20 45 20 57 49 54 48 20 44 49 41  ETTER E WITH DIA
1dc0: 45 52 45 53 49 53 22 20 2d 20 72 65 74 75 72 6e  ERESIS" - return
1dd0: 20 36 35 20 28 22 4c 41 54 49 4e 20 53 4d 41 4c   65 ("LATIN SMAL
1de0: 4c 20 4c 45 54 54 45 52 0a 2a 2a 20 45 22 29 2e  L LETTER.** E").
1df0: 20 54 68 65 20 72 65 73 75 6c 73 20 6f 66 20 70   The resuls of p
1e00: 61 73 73 69 6e 67 20 61 20 63 6f 64 65 70 6f 69  assing a codepoi
1e10: 6e 74 20 74 68 61 74 20 63 6f 72 72 65 73 70 6f  nt that correspo
1e20: 6e 64 73 20 74 6f 20 61 6e 0a 2a 2a 20 75 70 70  nds to an.** upp
1e30: 65 72 63 61 73 65 20 6c 65 74 74 65 72 20 61 72  ercase letter ar
1e40: 65 20 75 6e 64 65 66 69 6e 65 64 2e 0a 2a 2f 0a  e undefined..*/.
1e50: 73 74 61 74 69 63 20 69 6e 74 20 72 65 6d 6f 76  static int remov
1e60: 65 5f 64 69 61 63 72 69 74 69 63 28 69 6e 74 20  e_diacritic(int 
1e70: 63 29 7b 0a 20 20 75 6e 73 69 67 6e 65 64 20 73  c){.  unsigned s
1e80: 68 6f 72 74 20 61 44 69 61 5b 5d 20 3d 20 7b 0a  hort aDia[] = {.
1e90: 20 20 20 20 20 20 20 20 30 2c 20 20 31 37 39 37          0,  1797
1ea0: 2c 20 20 31 38 34 38 2c 20 20 31 38 35 39 2c 20  ,  1848,  1859, 
1eb0: 20 31 38 39 31 2c 20 20 31 39 32 38 2c 20 20 31   1891,  1928,  1
1ec0: 39 34 30 2c 20 20 31 39 39 35 2c 20 0a 20 20 20  940,  1995, .   
1ed0: 20 20 32 30 32 34 2c 20 20 32 30 34 30 2c 20 20    2024,  2040,  
1ee0: 32 30 36 30 2c 20 20 32 31 31 30 2c 20 20 32 31  2060,  2110,  21
1ef0: 36 38 2c 20 20 32 32 30 36 2c 20 20 32 32 36 34  68,  2206,  2264
1f00: 2c 20 20 32 32 38 36 2c 20 0a 20 20 20 20 20 32  ,  2286, .     2
1f10: 33 34 34 2c 20 20 32 33 38 33 2c 20 20 32 34 37  344,  2383,  247
1f20: 32 2c 20 20 32 34 38 38 2c 20 20 32 35 31 36 2c  2,  2488,  2516,
1f30: 20 20 32 35 39 36 2c 20 20 32 36 36 38 2c 20 20    2596,  2668,  
1f40: 32 37 33 32 2c 20 0a 20 20 20 20 20 32 37 38 32  2732, .     2782
1f50: 2c 20 20 32 38 34 32 2c 20 20 32 38 39 34 2c 20  ,  2842,  2894, 
1f60: 20 32 39 35 34 2c 20 20 32 39 38 34 2c 20 20 33   2954,  2984,  3
1f70: 30 30 30 2c 20 20 33 30 32 38 2c 20 20 33 33 33  000,  3028,  333
1f80: 36 2c 20 0a 20 20 20 20 20 33 34 35 36 2c 20 20  6, .     3456,  
1f90: 33 36 39 36 2c 20 20 33 37 31 32 2c 20 20 33 37  3696,  3712,  37
1fa0: 32 38 2c 20 20 33 37 34 34 2c 20 20 33 38 39 36  28,  3744,  3896
1fb0: 2c 20 20 33 39 31 32 2c 20 20 33 39 32 38 2c 20  ,  3912,  3928, 
1fc0: 0a 20 20 20 20 20 33 39 36 38 2c 20 20 34 30 30  .     3968,  400
1fd0: 38 2c 20 20 34 30 34 30 2c 20 20 34 31 30 36 2c  8,  4040,  4106,
1fe0: 20 20 34 31 33 38 2c 20 20 34 31 37 30 2c 20 20    4138,  4170,  
1ff0: 34 32 30 32 2c 20 20 34 32 33 34 2c 20 0a 20 20  4202,  4234, .  
2000: 20 20 20 34 32 36 36 2c 20 20 34 32 39 36 2c 20     4266,  4296, 
2010: 20 34 33 31 32 2c 20 20 34 33 34 34 2c 20 20 34   4312,  4344,  4
2020: 34 30 38 2c 20 20 34 34 32 34 2c 20 20 34 34 37  408,  4424,  447
2030: 32 2c 20 20 34 35 30 34 2c 20 0a 20 20 20 20 20  2,  4504, .     
2040: 36 31 34 38 2c 20 20 36 31 39 38 2c 20 20 36 32  6148,  6198,  62
2050: 36 34 2c 20 20 36 32 38 30 2c 20 20 36 33 36 30  64,  6280,  6360
2060: 2c 20 20 36 34 32 39 2c 20 20 36 35 30 35 2c 20  ,  6429,  6505, 
2070: 20 36 35 32 39 2c 20 0a 20 20 20 20 36 31 34 34   6529, .    6144
2080: 38 2c 20 36 31 34 36 38 2c 20 36 31 35 33 34 2c  8, 61468, 61534,
2090: 20 36 31 35 39 32 2c 20 36 31 36 34 32 2c 20 36   61592, 61642, 6
20a0: 31 36 38 38 2c 20 36 31 37 30 34 2c 20 36 31 37  1688, 61704, 617
20b0: 32 36 2c 20 0a 20 20 20 20 36 31 37 38 34 2c 20  26, .    61784, 
20c0: 36 31 38 30 30 2c 20 36 31 38 33 36 2c 20 36 31  61800, 61836, 61
20d0: 38 38 30 2c 20 36 31 39 31 34 2c 20 36 31 39 34  880, 61914, 6194
20e0: 38 2c 20 36 31 39 39 38 2c 20 36 32 31 32 32 2c  8, 61998, 62122,
20f0: 20 0a 20 20 20 20 36 32 31 35 34 2c 20 36 32 32   .    62154, 622
2100: 30 30 2c 20 36 32 32 31 38 2c 20 36 32 33 30 32  00, 62218, 62302
2110: 2c 20 36 32 33 36 34 2c 20 36 32 34 34 32 2c 20  , 62364, 62442, 
2120: 36 32 34 37 38 2c 20 36 32 35 33 36 2c 20 0a 20  62478, 62536, . 
2130: 20 20 20 36 32 35 35 34 2c 20 36 32 35 38 34 2c     62554, 62584,
2140: 20 36 32 36 30 34 2c 20 36 32 36 34 30 2c 20 36   62604, 62640, 6
2150: 32 36 34 38 2c 20 36 32 36 35 36 2c 20 36 32 36  2648, 62656, 626
2160: 36 34 2c 20 36 32 37 33 30 2c 20 0a 20 20 20 20  64, 62730, .    
2170: 36 32 39 32 34 2c 20 36 33 30 35 30 2c 20 36 33  62924, 63050, 63
2180: 30 38 32 2c 20 36 33 32 37 34 2c 20 36 33 33 39  082, 63274, 6339
2190: 30 2c 20 0a 20 20 7d 3b 0a 20 20 63 68 61 72 20  0, .  };.  char 
21a0: 61 43 68 61 72 5b 5d 20 3d 20 7b 0a 20 20 20 20  aChar[] = {.    
21b0: 27 5c 30 27 2c 20 27 61 27 2c 20 20 27 63 27 2c  '\0', 'a',  'c',
21c0: 20 20 27 65 27 2c 20 20 27 69 27 2c 20 20 27 6e    'e',  'i',  'n
21d0: 27 2c 20 20 27 6f 27 2c 20 20 27 75 27 2c 20 20  ',  'o',  'u',  
21e0: 27 79 27 2c 20 20 27 79 27 2c 20 20 27 61 27 2c  'y',  'y',  'a',
21f0: 20 20 27 63 27 2c 20 20 0a 20 20 20 20 27 64 27    'c',  .    'd'
2200: 2c 20 20 27 65 27 2c 20 20 27 65 27 2c 20 20 27  ,  'e',  'e',  '
2210: 67 27 2c 20 20 27 68 27 2c 20 20 27 69 27 2c 20  g',  'h',  'i', 
2220: 20 27 6a 27 2c 20 20 27 6b 27 2c 20 20 27 6c 27   'j',  'k',  'l'
2230: 2c 20 20 27 6e 27 2c 20 20 27 6f 27 2c 20 20 27  ,  'n',  'o',  '
2240: 72 27 2c 20 20 0a 20 20 20 20 27 73 27 2c 20 20  r',  .    's',  
2250: 27 74 27 2c 20 20 27 75 27 2c 20 20 27 75 27 2c  't',  'u',  'u',
2260: 20 20 27 77 27 2c 20 20 27 79 27 2c 20 20 27 7a    'w',  'y',  'z
2270: 27 2c 20 20 27 6f 27 2c 20 20 27 75 27 2c 20 20  ',  'o',  'u',  
2280: 27 61 27 2c 20 20 27 69 27 2c 20 20 27 6f 27 2c  'a',  'i',  'o',
2290: 20 20 0a 20 20 20 20 27 75 27 2c 20 20 27 67 27    .    'u',  'g'
22a0: 2c 20 20 27 6b 27 2c 20 20 27 6f 27 2c 20 20 27  ,  'k',  'o',  '
22b0: 6a 27 2c 20 20 27 67 27 2c 20 20 27 6e 27 2c 20  j',  'g',  'n', 
22c0: 20 27 61 27 2c 20 20 27 65 27 2c 20 20 27 69 27   'a',  'e',  'i'
22d0: 2c 20 20 27 6f 27 2c 20 20 27 72 27 2c 20 20 0a  ,  'o',  'r',  .
22e0: 20 20 20 20 27 75 27 2c 20 20 27 73 27 2c 20 20      'u',  's',  
22f0: 27 74 27 2c 20 20 27 68 27 2c 20 20 27 61 27 2c  't',  'h',  'a',
2300: 20 20 27 65 27 2c 20 20 27 6f 27 2c 20 20 27 79    'e',  'o',  'y
2310: 27 2c 20 20 27 5c 30 27 2c 20 27 5c 30 27 2c 20  ',  '\0', '\0', 
2320: 27 5c 30 27 2c 20 27 5c 30 27 2c 20 0a 20 20 20  '\0', '\0', .   
2330: 20 27 5c 30 27 2c 20 27 5c 30 27 2c 20 27 5c 30   '\0', '\0', '\0
2340: 27 2c 20 27 5c 30 27 2c 20 27 61 27 2c 20 20 27  ', '\0', 'a',  '
2350: 62 27 2c 20 20 27 64 27 2c 20 20 27 64 27 2c 20  b',  'd',  'd', 
2360: 20 27 65 27 2c 20 20 27 66 27 2c 20 20 27 67 27   'e',  'f',  'g'
2370: 2c 20 20 27 68 27 2c 20 20 0a 20 20 20 20 27 68  ,  'h',  .    'h
2380: 27 2c 20 20 27 69 27 2c 20 20 27 6b 27 2c 20 20  ',  'i',  'k',  
2390: 27 6c 27 2c 20 20 27 6c 27 2c 20 20 27 6d 27 2c  'l',  'l',  'm',
23a0: 20 20 27 6e 27 2c 20 20 27 70 27 2c 20 20 27 72    'n',  'p',  'r
23b0: 27 2c 20 20 27 72 27 2c 20 20 27 73 27 2c 20 20  ',  'r',  's',  
23c0: 27 74 27 2c 20 20 0a 20 20 20 20 27 75 27 2c 20  't',  .    'u', 
23d0: 20 27 76 27 2c 20 20 27 77 27 2c 20 20 27 77 27   'v',  'w',  'w'
23e0: 2c 20 20 27 78 27 2c 20 20 27 79 27 2c 20 20 27  ,  'x',  'y',  '
23f0: 7a 27 2c 20 20 27 68 27 2c 20 20 27 74 27 2c 20  z',  'h',  't', 
2400: 20 27 77 27 2c 20 20 27 79 27 2c 20 20 27 61 27   'w',  'y',  'a'
2410: 2c 20 20 0a 20 20 20 20 27 65 27 2c 20 20 27 69  ,  .    'e',  'i
2420: 27 2c 20 20 27 6f 27 2c 20 20 27 75 27 2c 20 20  ',  'o',  'u',  
2430: 27 79 27 2c 20 20 0a 20 20 7d 3b 0a 0a 20 20 75  'y',  .  };..  u
2440: 6e 73 69 67 6e 65 64 20 69 6e 74 20 6b 65 79 20  nsigned int key 
2450: 3d 20 28 28 28 75 6e 73 69 67 6e 65 64 20 69 6e  = (((unsigned in
2460: 74 29 63 29 3c 3c 33 29 20 7c 20 30 78 30 30 30  t)c)<<3) | 0x000
2470: 30 30 30 30 37 3b 0a 20 20 69 6e 74 20 69 52 65  00007;.  int iRe
2480: 73 20 3d 20 30 3b 0a 20 20 69 6e 74 20 69 48 69  s = 0;.  int iHi
2490: 20 3d 20 73 69 7a 65 6f 66 28 61 44 69 61 29 2f   = sizeof(aDia)/
24a0: 73 69 7a 65 6f 66 28 61 44 69 61 5b 30 5d 29 20  sizeof(aDia[0]) 
24b0: 2d 20 31 3b 0a 20 20 69 6e 74 20 69 4c 6f 20 3d  - 1;.  int iLo =
24c0: 20 30 3b 0a 20 20 77 68 69 6c 65 28 20 69 48 69   0;.  while( iHi
24d0: 3e 3d 69 4c 6f 20 29 7b 0a 20 20 20 20 69 6e 74  >=iLo ){.    int
24e0: 20 69 54 65 73 74 20 3d 20 28 69 48 69 20 2b 20   iTest = (iHi + 
24f0: 69 4c 6f 29 20 2f 20 32 3b 0a 20 20 20 20 69 66  iLo) / 2;.    if
2500: 28 20 6b 65 79 20 3e 3d 20 61 44 69 61 5b 69 54  ( key >= aDia[iT
2510: 65 73 74 5d 20 29 7b 0a 20 20 20 20 20 20 69 52  est] ){.      iR
2520: 65 73 20 3d 20 69 54 65 73 74 3b 0a 20 20 20 20  es = iTest;.    
2530: 20 20 69 4c 6f 20 3d 20 69 54 65 73 74 2b 31 3b    iLo = iTest+1;
2540: 0a 20 20 20 20 7d 65 6c 73 65 7b 0a 20 20 20 20  .    }else{.    
2550: 20 20 69 48 69 20 3d 20 69 54 65 73 74 2d 31 3b    iHi = iTest-1;
2560: 0a 20 20 20 20 7d 0a 20 20 7d 0a 20 20 61 73 73  .    }.  }.  ass
2570: 65 72 74 28 20 6b 65 79 3e 3d 61 44 69 61 5b 69  ert( key>=aDia[i
2580: 52 65 73 5d 20 29 3b 0a 20 20 72 65 74 75 72 6e  Res] );.  return
2590: 20 28 28 63 20 3e 20 28 61 44 69 61 5b 69 52 65   ((c > (aDia[iRe
25a0: 73 5d 3e 3e 33 29 20 2b 20 28 61 44 69 61 5b 69  s]>>3) + (aDia[i
25b0: 52 65 73 5d 26 30 78 30 37 29 29 20 3f 20 63 20  Res]&0x07)) ? c 
25c0: 3a 20 28 69 6e 74 29 61 43 68 61 72 5b 69 52 65  : (int)aChar[iRe
25d0: 73 5d 29 3b 0a 7d 3b 0a 0a 0a 2f 2a 0a 2a 2a 20  s]);.};.../*.** 
25e0: 52 65 74 75 72 6e 20 74 72 75 65 20 69 66 20 74  Return true if t
25f0: 68 65 20 61 72 67 75 6d 65 6e 74 20 69 6e 74 65  he argument inte
2600: 72 70 72 65 74 65 64 20 61 73 20 61 20 75 6e 69  rpreted as a uni
2610: 63 6f 64 65 20 63 6f 64 65 70 6f 69 6e 74 0a 2a  code codepoint.*
2620: 2a 20 69 73 20 61 20 64 69 61 63 72 69 74 69 63  * is a diacritic
2630: 61 6c 20 6d 6f 64 69 66 69 65 72 20 63 68 61 72  al modifier char
2640: 61 63 74 65 72 2e 0a 2a 2f 0a 69 6e 74 20 73 71  acter..*/.int sq
2650: 6c 69 74 65 33 46 74 73 55 6e 69 63 6f 64 65 49  lite3FtsUnicodeI
2660: 73 64 69 61 63 72 69 74 69 63 28 69 6e 74 20 63  sdiacritic(int c
2670: 29 7b 0a 20 20 75 6e 73 69 67 6e 65 64 20 69 6e  ){.  unsigned in
2680: 74 20 6d 61 73 6b 30 20 3d 20 30 78 30 38 30 32  t mask0 = 0x0802
2690: 39 46 44 46 3b 0a 20 20 75 6e 73 69 67 6e 65 64  9FDF;.  unsigned
26a0: 20 69 6e 74 20 6d 61 73 6b 31 20 3d 20 30 78 30   int mask1 = 0x0
26b0: 30 30 33 36 31 46 38 3b 0a 20 20 69 66 28 20 63  00361F8;.  if( c
26c0: 3c 37 36 38 20 7c 7c 20 63 3e 38 31 37 20 29 20  <768 || c>817 ) 
26d0: 72 65 74 75 72 6e 20 30 3b 0a 20 20 72 65 74 75  return 0;.  retu
26e0: 72 6e 20 28 63 20 3c 20 37 36 38 2b 33 32 29 20  rn (c < 768+32) 
26f0: 3f 0a 20 20 20 20 20 20 28 6d 61 73 6b 30 20 26  ?.      (mask0 &
2700: 20 28 31 20 3c 3c 20 28 63 2d 37 36 38 29 29 29   (1 << (c-768)))
2710: 20 3a 0a 20 20 20 20 20 20 28 6d 61 73 6b 31 20   :.      (mask1 
2720: 26 20 28 31 20 3c 3c 20 28 63 2d 37 36 38 2d 33  & (1 << (c-768-3
2730: 32 29 29 29 3b 0a 7d 0a 0a 0a 2f 2a 0a 2a 2a 20  2)));.}.../*.** 
2740: 49 6e 74 65 72 70 72 65 74 20 74 68 65 20 61 72  Interpret the ar
2750: 67 75 6d 65 6e 74 20 61 73 20 61 20 75 6e 69 63  gument as a unic
2760: 6f 64 65 20 63 6f 64 65 70 6f 69 6e 74 2e 20 49  ode codepoint. I
2770: 66 20 74 68 65 20 63 6f 64 65 70 6f 69 6e 74 0a  f the codepoint.
2780: 2a 2a 20 69 73 20 61 6e 20 75 70 70 65 72 20 63  ** is an upper c
2790: 61 73 65 20 63 68 61 72 61 63 74 65 72 20 74 68  ase character th
27a0: 61 74 20 68 61 73 20 61 20 6c 6f 77 65 72 20 63  at has a lower c
27b0: 61 73 65 20 65 71 75 69 76 61 6c 65 6e 74 2c 0a  ase equivalent,.
27c0: 2a 2a 20 72 65 74 75 72 6e 20 74 68 65 20 63 6f  ** return the co
27d0: 64 65 70 6f 69 6e 74 20 63 6f 72 72 65 73 70 6f  depoint correspo
27e0: 6e 64 69 6e 67 20 74 6f 20 74 68 65 20 6c 6f 77  nding to the low
27f0: 65 72 20 63 61 73 65 20 76 65 72 73 69 6f 6e 2e  er case version.
2800: 0a 2a 2a 20 4f 74 68 65 72 77 69 73 65 2c 20 72  .** Otherwise, r
2810: 65 74 75 72 6e 20 61 20 63 6f 70 79 20 6f 66 20  eturn a copy of 
2820: 74 68 65 20 61 72 67 75 6d 65 6e 74 2e 0a 2a 2a  the argument..**
2830: 0a 2a 2a 20 54 68 65 20 72 65 73 75 6c 74 73 20  .** The results 
2840: 61 72 65 20 75 6e 64 65 66 69 6e 65 64 20 69 66  are undefined if
2850: 20 74 68 65 20 76 61 6c 75 65 20 70 61 73 73 65   the value passe
2860: 64 20 74 6f 20 74 68 69 73 20 66 75 6e 63 74 69  d to this functi
2870: 6f 6e 0a 2a 2a 20 69 73 20 6c 65 73 73 20 74 68  on.** is less th
2880: 61 6e 20 7a 65 72 6f 2e 0a 2a 2f 0a 69 6e 74 20  an zero..*/.int 
2890: 73 71 6c 69 74 65 33 46 74 73 55 6e 69 63 6f 64  sqlite3FtsUnicod
28a0: 65 46 6f 6c 64 28 69 6e 74 20 63 2c 20 69 6e 74  eFold(int c, int
28b0: 20 62 52 65 6d 6f 76 65 44 69 61 63 72 69 74 69   bRemoveDiacriti
28c0: 63 29 7b 0a 20 20 2f 2a 20 45 61 63 68 20 65 6e  c){.  /* Each en
28d0: 74 72 79 20 69 6e 20 74 68 65 20 66 6f 6c 6c 6f  try in the follo
28e0: 77 69 6e 67 20 61 72 72 61 79 20 64 65 66 69 6e  wing array defin
28f0: 65 73 20 61 20 72 75 6c 65 20 66 6f 72 20 66 6f  es a rule for fo
2900: 6c 64 69 6e 67 20 61 20 72 61 6e 67 65 0a 20 20  lding a range.  
2910: 2a 2a 20 6f 66 20 63 6f 64 65 70 6f 69 6e 74 73  ** of codepoints
2920: 20 74 6f 20 6c 6f 77 65 72 20 63 61 73 65 2e 20   to lower case. 
2930: 54 68 65 20 72 75 6c 65 20 61 70 70 6c 69 65 73  The rule applies
2940: 20 74 6f 20 61 20 72 61 6e 67 65 20 6f 66 20 6e   to a range of n
2950: 52 61 6e 67 65 0a 20 20 2a 2a 20 63 6f 64 65 70  Range.  ** codep
2960: 6f 69 6e 74 73 20 73 74 61 72 74 69 6e 67 20 61  oints starting a
2970: 74 20 63 6f 64 65 70 6f 69 6e 74 20 69 43 6f 64  t codepoint iCod
2980: 65 2e 0a 20 20 2a 2a 0a 20 20 2a 2a 20 49 66 20  e..  **.  ** If 
2990: 74 68 65 20 6c 65 61 73 74 20 73 69 67 6e 69 66  the least signif
29a0: 69 63 61 6e 74 20 62 69 74 20 69 6e 20 66 6c 61  icant bit in fla
29b0: 67 73 20 69 73 20 63 6c 65 61 72 2c 20 74 68 65  gs is clear, the
29c0: 6e 20 74 68 65 20 72 75 6c 65 20 61 70 70 6c 69  n the rule appli
29d0: 65 73 0a 20 20 2a 2a 20 74 6f 20 61 6c 6c 20 6e  es.  ** to all n
29e0: 52 61 6e 67 65 20 63 6f 64 65 70 6f 69 6e 74 73  Range codepoints
29f0: 20 28 69 2e 65 2e 20 61 6c 6c 20 6e 52 61 6e 67   (i.e. all nRang
2a00: 65 20 63 6f 64 65 70 6f 69 6e 74 73 20 61 72 65  e codepoints are
2a10: 20 75 70 70 65 72 20 63 61 73 65 20 61 6e 64 0a   upper case and.
2a20: 20 20 2a 2a 20 6e 65 65 64 20 74 6f 20 62 65 20    ** need to be 
2a30: 66 6f 6c 64 65 64 29 2e 20 4f 72 2c 20 69 66 20  folded). Or, if 
2a40: 69 74 20 69 73 20 73 65 74 2c 20 74 68 65 6e 20  it is set, then 
2a50: 74 68 65 20 72 75 6c 65 20 6f 6e 6c 79 20 61 70  the rule only ap
2a60: 70 6c 69 65 73 20 74 6f 0a 20 20 2a 2a 20 65 76  plies to.  ** ev
2a70: 65 72 79 20 73 65 63 6f 6e 64 20 63 6f 64 65 70  ery second codep
2a80: 6f 69 6e 74 20 69 6e 20 74 68 65 20 72 61 6e 67  oint in the rang
2a90: 65 2c 20 73 74 61 72 74 69 6e 67 20 77 69 74 68  e, starting with
2aa0: 20 63 6f 64 65 70 6f 69 6e 74 20 43 2e 0a 20 20   codepoint C..  
2ab0: 2a 2a 0a 20 20 2a 2a 20 54 68 65 20 37 20 6d 6f  **.  ** The 7 mo
2ac0: 73 74 20 73 69 67 6e 69 66 69 63 61 6e 74 20 62  st significant b
2ad0: 69 74 73 20 69 6e 20 66 6c 61 67 73 20 61 72 65  its in flags are
2ae0: 20 61 6e 20 69 6e 64 65 78 20 69 6e 74 6f 20 74   an index into t
2af0: 68 65 20 61 69 4f 66 66 5b 5d 0a 20 20 2a 2a 20  he aiOff[].  ** 
2b00: 61 72 72 61 79 2e 20 49 66 20 61 20 73 70 65 63  array. If a spec
2b10: 69 66 69 63 20 63 6f 64 65 70 6f 69 6e 74 20 43  ific codepoint C
2b20: 20 64 6f 65 73 20 72 65 71 75 69 72 65 20 66 6f   does require fo
2b30: 6c 64 69 6e 67 2c 20 74 68 65 6e 20 69 74 73 20  lding, then its 
2b40: 6c 6f 77 65 72 0a 20 20 2a 2a 20 63 61 73 65 20  lower.  ** case 
2b50: 65 71 75 69 76 61 6c 65 6e 74 20 69 73 20 28 28  equivalent is ((
2b60: 43 20 2b 20 61 69 4f 66 66 5b 66 6c 61 67 73 3e  C + aiOff[flags>
2b70: 3e 31 5d 29 20 26 20 30 78 46 46 46 46 29 2e 0a  >1]) & 0xFFFF)..
2b80: 20 20 2a 2a 0a 20 20 2a 2a 20 54 68 65 20 63 6f    **.  ** The co
2b90: 6e 74 65 6e 74 73 20 6f 66 20 74 68 69 73 20 61  ntents of this a
2ba0: 72 72 61 79 20 61 72 65 20 67 65 6e 65 72 61 74  rray are generat
2bb0: 65 64 20 62 79 20 70 61 72 73 69 6e 67 20 74 68  ed by parsing th
2bc0: 65 20 43 61 73 65 46 6f 6c 64 69 6e 67 2e 74 78  e CaseFolding.tx
2bd0: 74 0a 20 20 2a 2a 20 66 69 6c 65 20 64 69 73 74  t.  ** file dist
2be0: 72 69 62 75 74 65 64 20 61 73 20 70 61 72 74 20  ributed as part 
2bf0: 6f 66 20 74 68 65 20 22 55 6e 69 63 6f 64 65 20  of the "Unicode 
2c00: 43 68 61 72 61 63 74 65 72 20 44 61 74 61 62 61  Character Databa
2c10: 73 65 22 2e 20 53 65 65 0a 20 20 2a 2a 20 68 74  se". See.  ** ht
2c20: 74 70 3a 2f 2f 77 77 77 2e 75 6e 69 63 6f 64 65  tp://www.unicode
2c30: 2e 6f 72 67 20 66 6f 72 20 64 65 74 61 69 6c 73  .org for details
2c40: 2e 0a 20 20 2a 2f 0a 20 20 73 74 61 74 69 63 20  ..  */.  static 
2c50: 63 6f 6e 73 74 20 73 74 72 75 63 74 20 54 61 62  const struct Tab
2c60: 6c 65 45 6e 74 72 79 20 7b 0a 20 20 20 20 75 6e  leEntry {.    un
2c70: 73 69 67 6e 65 64 20 73 68 6f 72 74 20 69 43 6f  signed short iCo
2c80: 64 65 3b 0a 20 20 20 20 75 6e 73 69 67 6e 65 64  de;.    unsigned
2c90: 20 63 68 61 72 20 66 6c 61 67 73 3b 0a 20 20 20   char flags;.   
2ca0: 20 75 6e 73 69 67 6e 65 64 20 63 68 61 72 20 6e   unsigned char n
2cb0: 52 61 6e 67 65 3b 0a 20 20 7d 20 61 45 6e 74 72  Range;.  } aEntr
2cc0: 79 5b 5d 20 3d 20 7b 0a 20 20 20 20 7b 36 35 2c  y[] = {.    {65,
2cd0: 20 31 34 2c 20 32 36 7d 2c 20 20 20 20 20 20 20   14, 26},       
2ce0: 20 20 20 7b 31 38 31 2c 20 36 34 2c 20 31 7d 2c     {181, 64, 1},
2cf0: 20 20 20 20 20 20 20 20 20 20 7b 31 39 32 2c 20            {192, 
2d00: 31 34 2c 20 32 33 7d 2c 0a 20 20 20 20 7b 32 31  14, 23},.    {21
2d10: 36 2c 20 31 34 2c 20 37 7d 2c 20 20 20 20 20 20  6, 14, 7},      
2d20: 20 20 20 20 7b 32 35 36 2c 20 31 2c 20 34 38 7d      {256, 1, 48}
2d30: 2c 20 20 20 20 20 20 20 20 20 20 7b 33 30 36 2c  ,          {306,
2d40: 20 31 2c 20 36 7d 2c 0a 20 20 20 20 7b 33 31 33   1, 6},.    {313
2d50: 2c 20 31 2c 20 31 36 7d 2c 20 20 20 20 20 20 20  , 1, 16},       
2d60: 20 20 20 7b 33 33 30 2c 20 31 2c 20 34 36 7d 2c     {330, 1, 46},
2d70: 20 20 20 20 20 20 20 20 20 20 7b 33 37 36 2c 20            {376, 
2d80: 31 31 36 2c 20 31 7d 2c 0a 20 20 20 20 7b 33 37  116, 1},.    {37
2d90: 37 2c 20 31 2c 20 36 7d 2c 20 20 20 20 20 20 20  7, 1, 6},       
2da0: 20 20 20 20 7b 33 38 33 2c 20 31 30 34 2c 20 31      {383, 104, 1
2db0: 7d 2c 20 20 20 20 20 20 20 20 20 7b 33 38 35 2c  },         {385,
2dc0: 20 35 30 2c 20 31 7d 2c 0a 20 20 20 20 7b 33 38   50, 1},.    {38
2dd0: 36 2c 20 31 2c 20 34 7d 2c 20 20 20 20 20 20 20  6, 1, 4},       
2de0: 20 20 20 20 7b 33 39 30 2c 20 34 34 2c 20 31 7d      {390, 44, 1}
2df0: 2c 20 20 20 20 20 20 20 20 20 20 7b 33 39 31 2c  ,          {391,
2e00: 20 30 2c 20 31 7d 2c 0a 20 20 20 20 7b 33 39 33   0, 1},.    {393
2e10: 2c 20 34 32 2c 20 32 7d 2c 20 20 20 20 20 20 20  , 42, 2},       
2e20: 20 20 20 7b 33 39 35 2c 20 30 2c 20 31 7d 2c 20     {395, 0, 1}, 
2e30: 20 20 20 20 20 20 20 20 20 20 7b 33 39 38 2c 20            {398, 
2e40: 33 32 2c 20 31 7d 2c 0a 20 20 20 20 7b 33 39 39  32, 1},.    {399
2e50: 2c 20 33 38 2c 20 31 7d 2c 20 20 20 20 20 20 20  , 38, 1},       
2e60: 20 20 20 7b 34 30 30 2c 20 34 30 2c 20 31 7d 2c     {400, 40, 1},
2e70: 20 20 20 20 20 20 20 20 20 20 7b 34 30 31 2c 20            {401, 
2e80: 30 2c 20 31 7d 2c 0a 20 20 20 20 7b 34 30 33 2c  0, 1},.    {403,
2e90: 20 34 32 2c 20 31 7d 2c 20 20 20 20 20 20 20 20   42, 1},        
2ea0: 20 20 7b 34 30 34 2c 20 34 36 2c 20 31 7d 2c 20    {404, 46, 1}, 
2eb0: 20 20 20 20 20 20 20 20 20 7b 34 30 36 2c 20 35           {406, 5
2ec0: 32 2c 20 31 7d 2c 0a 20 20 20 20 7b 34 30 37 2c  2, 1},.    {407,
2ed0: 20 34 38 2c 20 31 7d 2c 20 20 20 20 20 20 20 20   48, 1},        
2ee0: 20 20 7b 34 30 38 2c 20 30 2c 20 31 7d 2c 20 20    {408, 0, 1},  
2ef0: 20 20 20 20 20 20 20 20 20 7b 34 31 32 2c 20 35           {412, 5
2f00: 32 2c 20 31 7d 2c 0a 20 20 20 20 7b 34 31 33 2c  2, 1},.    {413,
2f10: 20 35 34 2c 20 31 7d 2c 20 20 20 20 20 20 20 20   54, 1},        
2f20: 20 20 7b 34 31 35 2c 20 35 36 2c 20 31 7d 2c 20    {415, 56, 1}, 
2f30: 20 20 20 20 20 20 20 20 20 7b 34 31 36 2c 20 31           {416, 1
2f40: 2c 20 36 7d 2c 0a 20 20 20 20 7b 34 32 32 2c 20  , 6},.    {422, 
2f50: 36 30 2c 20 31 7d 2c 20 20 20 20 20 20 20 20 20  60, 1},         
2f60: 20 7b 34 32 33 2c 20 30 2c 20 31 7d 2c 20 20 20   {423, 0, 1},   
2f70: 20 20 20 20 20 20 20 20 7b 34 32 35 2c 20 36 30          {425, 60
2f80: 2c 20 31 7d 2c 0a 20 20 20 20 7b 34 32 38 2c 20  , 1},.    {428, 
2f90: 30 2c 20 31 7d 2c 20 20 20 20 20 20 20 20 20 20  0, 1},          
2fa0: 20 7b 34 33 30 2c 20 36 30 2c 20 31 7d 2c 20 20   {430, 60, 1},  
2fb0: 20 20 20 20 20 20 20 20 7b 34 33 31 2c 20 30 2c          {431, 0,
2fc0: 20 31 7d 2c 0a 20 20 20 20 7b 34 33 33 2c 20 35   1},.    {433, 5
2fd0: 38 2c 20 32 7d 2c 20 20 20 20 20 20 20 20 20 20  8, 2},          
2fe0: 7b 34 33 35 2c 20 31 2c 20 34 7d 2c 20 20 20 20  {435, 1, 4},    
2ff0: 20 20 20 20 20 20 20 7b 34 33 39 2c 20 36 32 2c         {439, 62,
3000: 20 31 7d 2c 0a 20 20 20 20 7b 34 34 30 2c 20 30   1},.    {440, 0
3010: 2c 20 31 7d 2c 20 20 20 20 20 20 20 20 20 20 20  , 1},           
3020: 7b 34 34 34 2c 20 30 2c 20 31 7d 2c 20 20 20 20  {444, 0, 1},    
3030: 20 20 20 20 20 20 20 7b 34 35 32 2c 20 32 2c 20         {452, 2, 
3040: 31 7d 2c 0a 20 20 20 20 7b 34 35 33 2c 20 30 2c  1},.    {453, 0,
3050: 20 31 7d 2c 20 20 20 20 20 20 20 20 20 20 20 7b   1},           {
3060: 34 35 35 2c 20 32 2c 20 31 7d 2c 20 20 20 20 20  455, 2, 1},     
3070: 20 20 20 20 20 20 7b 34 35 36 2c 20 30 2c 20 31        {456, 0, 1
3080: 7d 2c 0a 20 20 20 20 7b 34 35 38 2c 20 32 2c 20  },.    {458, 2, 
3090: 31 7d 2c 20 20 20 20 20 20 20 20 20 20 20 7b 34  1},           {4
30a0: 35 39 2c 20 31 2c 20 31 38 7d 2c 20 20 20 20 20  59, 1, 18},     
30b0: 20 20 20 20 20 7b 34 37 38 2c 20 31 2c 20 31 38       {478, 1, 18
30c0: 7d 2c 0a 20 20 20 20 7b 34 39 37 2c 20 32 2c 20  },.    {497, 2, 
30d0: 31 7d 2c 20 20 20 20 20 20 20 20 20 20 20 7b 34  1},           {4
30e0: 39 38 2c 20 31 2c 20 34 7d 2c 20 20 20 20 20 20  98, 1, 4},      
30f0: 20 20 20 20 20 7b 35 30 32 2c 20 31 32 32 2c 20       {502, 122, 
3100: 31 7d 2c 0a 20 20 20 20 7b 35 30 33 2c 20 31 33  1},.    {503, 13
3110: 34 2c 20 31 7d 2c 20 20 20 20 20 20 20 20 20 7b  4, 1},         {
3120: 35 30 34 2c 20 31 2c 20 34 30 7d 2c 20 20 20 20  504, 1, 40},    
3130: 20 20 20 20 20 20 7b 35 34 34 2c 20 31 31 30 2c        {544, 110,
3140: 20 31 7d 2c 0a 20 20 20 20 7b 35 34 36 2c 20 31   1},.    {546, 1
3150: 2c 20 31 38 7d 2c 20 20 20 20 20 20 20 20 20 20  , 18},          
3160: 7b 35 37 30 2c 20 37 30 2c 20 31 7d 2c 20 20 20  {570, 70, 1},   
3170: 20 20 20 20 20 20 20 7b 35 37 31 2c 20 30 2c 20         {571, 0, 
3180: 31 7d 2c 0a 20 20 20 20 7b 35 37 33 2c 20 31 30  1},.    {573, 10
3190: 38 2c 20 31 7d 2c 20 20 20 20 20 20 20 20 20 7b  8, 1},         {
31a0: 35 37 34 2c 20 36 38 2c 20 31 7d 2c 20 20 20 20  574, 68, 1},    
31b0: 20 20 20 20 20 20 7b 35 37 37 2c 20 30 2c 20 31        {577, 0, 1
31c0: 7d 2c 0a 20 20 20 20 7b 35 37 39 2c 20 31 30 36  },.    {579, 106
31d0: 2c 20 31 7d 2c 20 20 20 20 20 20 20 20 20 7b 35  , 1},         {5
31e0: 38 30 2c 20 32 38 2c 20 31 7d 2c 20 20 20 20 20  80, 28, 1},     
31f0: 20 20 20 20 20 7b 35 38 31 2c 20 33 30 2c 20 31       {581, 30, 1
3200: 7d 2c 0a 20 20 20 20 7b 35 38 32 2c 20 31 2c 20  },.    {582, 1, 
3210: 31 30 7d 2c 20 20 20 20 20 20 20 20 20 20 7b 38  10},          {8
3220: 33 37 2c 20 33 36 2c 20 31 7d 2c 20 20 20 20 20  37, 36, 1},     
3230: 20 20 20 20 20 7b 38 38 30 2c 20 31 2c 20 34 7d       {880, 1, 4}
3240: 2c 0a 20 20 20 20 7b 38 38 36 2c 20 30 2c 20 31  ,.    {886, 0, 1
3250: 7d 2c 20 20 20 20 20 20 20 20 20 20 20 7b 39 30  },           {90
3260: 32 2c 20 31 38 2c 20 31 7d 2c 20 20 20 20 20 20  2, 18, 1},      
3270: 20 20 20 20 7b 39 30 34 2c 20 31 36 2c 20 33 7d      {904, 16, 3}
3280: 2c 0a 20 20 20 20 7b 39 30 38 2c 20 32 36 2c 20  ,.    {908, 26, 
3290: 31 7d 2c 20 20 20 20 20 20 20 20 20 20 7b 39 31  1},          {91
32a0: 30 2c 20 32 34 2c 20 32 7d 2c 20 20 20 20 20 20  0, 24, 2},      
32b0: 20 20 20 20 7b 39 31 33 2c 20 31 34 2c 20 31 37      {913, 14, 17
32c0: 7d 2c 0a 20 20 20 20 7b 39 33 31 2c 20 31 34 2c  },.    {931, 14,
32d0: 20 39 7d 2c 20 20 20 20 20 20 20 20 20 20 7b 39   9},          {9
32e0: 36 32 2c 20 30 2c 20 31 7d 2c 20 20 20 20 20 20  62, 0, 1},      
32f0: 20 20 20 20 20 7b 39 37 35 2c 20 34 2c 20 31 7d       {975, 4, 1}
3300: 2c 0a 20 20 20 20 7b 39 37 36 2c 20 31 34 30 2c  ,.    {976, 140,
3310: 20 31 7d 2c 20 20 20 20 20 20 20 20 20 7b 39 37   1},         {97
3320: 37 2c 20 31 34 32 2c 20 31 7d 2c 20 20 20 20 20  7, 142, 1},     
3330: 20 20 20 20 7b 39 38 31 2c 20 31 34 36 2c 20 31      {981, 146, 1
3340: 7d 2c 0a 20 20 20 20 7b 39 38 32 2c 20 31 34 34  },.    {982, 144
3350: 2c 20 31 7d 2c 20 20 20 20 20 20 20 20 20 7b 39  , 1},         {9
3360: 38 34 2c 20 31 2c 20 32 34 7d 2c 20 20 20 20 20  84, 1, 24},     
3370: 20 20 20 20 20 7b 31 30 30 38 2c 20 31 33 36 2c       {1008, 136,
3380: 20 31 7d 2c 0a 20 20 20 20 7b 31 30 30 39 2c 20   1},.    {1009, 
3390: 31 33 38 2c 20 31 7d 2c 20 20 20 20 20 20 20 20  138, 1},        
33a0: 7b 31 30 31 32 2c 20 31 33 30 2c 20 31 7d 2c 20  {1012, 130, 1}, 
33b0: 20 20 20 20 20 20 20 7b 31 30 31 33 2c 20 31 32         {1013, 12
33c0: 38 2c 20 31 7d 2c 0a 20 20 20 20 7b 31 30 31 35  8, 1},.    {1015
33d0: 2c 20 30 2c 20 31 7d 2c 20 20 20 20 20 20 20 20  , 0, 1},        
33e0: 20 20 7b 31 30 31 37 2c 20 31 35 32 2c 20 31 7d    {1017, 152, 1}
33f0: 2c 20 20 20 20 20 20 20 20 7b 31 30 31 38 2c 20  ,        {1018, 
3400: 30 2c 20 31 7d 2c 0a 20 20 20 20 7b 31 30 32 31  0, 1},.    {1021
3410: 2c 20 31 31 30 2c 20 33 7d 2c 20 20 20 20 20 20  , 110, 3},      
3420: 20 20 7b 31 30 32 34 2c 20 33 34 2c 20 31 36 7d    {1024, 34, 16}
3430: 2c 20 20 20 20 20 20 20 20 7b 31 30 34 30 2c 20  ,        {1040, 
3440: 31 34 2c 20 33 32 7d 2c 0a 20 20 20 20 7b 31 31  14, 32},.    {11
3450: 32 30 2c 20 31 2c 20 33 34 7d 2c 20 20 20 20 20  20, 1, 34},     
3460: 20 20 20 20 7b 31 31 36 32 2c 20 31 2c 20 35 34      {1162, 1, 54
3470: 7d 2c 20 20 20 20 20 20 20 20 20 7b 31 32 31 36  },         {1216
3480: 2c 20 36 2c 20 31 7d 2c 0a 20 20 20 20 7b 31 32  , 6, 1},.    {12
3490: 31 37 2c 20 31 2c 20 31 34 7d 2c 20 20 20 20 20  17, 1, 14},     
34a0: 20 20 20 20 7b 31 32 33 32 2c 20 31 2c 20 38 38      {1232, 1, 88
34b0: 7d 2c 20 20 20 20 20 20 20 20 20 7b 31 33 32 39  },         {1329
34c0: 2c 20 32 32 2c 20 33 38 7d 2c 0a 20 20 20 20 7b  , 22, 38},.    {
34d0: 34 32 35 36 2c 20 36 36 2c 20 33 38 7d 2c 20 20  4256, 66, 38},  
34e0: 20 20 20 20 20 20 7b 34 32 39 35 2c 20 36 36 2c        {4295, 66,
34f0: 20 31 7d 2c 20 20 20 20 20 20 20 20 20 7b 34 33   1},         {43
3500: 30 31 2c 20 36 36 2c 20 31 7d 2c 0a 20 20 20 20  01, 66, 1},.    
3510: 7b 37 36 38 30 2c 20 31 2c 20 31 35 30 7d 2c 20  {7680, 1, 150}, 
3520: 20 20 20 20 20 20 20 7b 37 38 33 35 2c 20 31 33         {7835, 13
3530: 32 2c 20 31 7d 2c 20 20 20 20 20 20 20 20 7b 37  2, 1},        {7
3540: 38 33 38 2c 20 39 36 2c 20 31 7d 2c 0a 20 20 20  838, 96, 1},.   
3550: 20 7b 37 38 34 30 2c 20 31 2c 20 39 36 7d 2c 20   {7840, 1, 96}, 
3560: 20 20 20 20 20 20 20 20 7b 37 39 34 34 2c 20 31          {7944, 1
3570: 35 30 2c 20 38 7d 2c 20 20 20 20 20 20 20 20 7b  50, 8},        {
3580: 37 39 36 30 2c 20 31 35 30 2c 20 36 7d 2c 0a 20  7960, 150, 6},. 
3590: 20 20 20 7b 37 39 37 36 2c 20 31 35 30 2c 20 38     {7976, 150, 8
35a0: 7d 2c 20 20 20 20 20 20 20 20 7b 37 39 39 32 2c  },        {7992,
35b0: 20 31 35 30 2c 20 38 7d 2c 20 20 20 20 20 20 20   150, 8},       
35c0: 20 7b 38 30 30 38 2c 20 31 35 30 2c 20 36 7d 2c   {8008, 150, 6},
35d0: 0a 20 20 20 20 7b 38 30 32 35 2c 20 31 35 31 2c  .    {8025, 151,
35e0: 20 38 7d 2c 20 20 20 20 20 20 20 20 7b 38 30 34   8},        {804
35f0: 30 2c 20 31 35 30 2c 20 38 7d 2c 20 20 20 20 20  0, 150, 8},     
3600: 20 20 20 7b 38 30 37 32 2c 20 31 35 30 2c 20 38     {8072, 150, 8
3610: 7d 2c 0a 20 20 20 20 7b 38 30 38 38 2c 20 31 35  },.    {8088, 15
3620: 30 2c 20 38 7d 2c 20 20 20 20 20 20 20 20 7b 38  0, 8},        {8
3630: 31 30 34 2c 20 31 35 30 2c 20 38 7d 2c 20 20 20  104, 150, 8},   
3640: 20 20 20 20 20 7b 38 31 32 30 2c 20 31 35 30 2c       {8120, 150,
3650: 20 32 7d 2c 0a 20 20 20 20 7b 38 31 32 32 2c 20   2},.    {8122, 
3660: 31 32 36 2c 20 32 7d 2c 20 20 20 20 20 20 20 20  126, 2},        
3670: 7b 38 31 32 34 2c 20 31 34 38 2c 20 31 7d 2c 20  {8124, 148, 1}, 
3680: 20 20 20 20 20 20 20 7b 38 31 32 36 2c 20 31 30         {8126, 10
3690: 30 2c 20 31 7d 2c 0a 20 20 20 20 7b 38 31 33 36  0, 1},.    {8136
36a0: 2c 20 31 32 34 2c 20 34 7d 2c 20 20 20 20 20 20  , 124, 4},      
36b0: 20 20 7b 38 31 34 30 2c 20 31 34 38 2c 20 31 7d    {8140, 148, 1}
36c0: 2c 20 20 20 20 20 20 20 20 7b 38 31 35 32 2c 20  ,        {8152, 
36d0: 31 35 30 2c 20 32 7d 2c 0a 20 20 20 20 7b 38 31  150, 2},.    {81
36e0: 35 34 2c 20 31 32 30 2c 20 32 7d 2c 20 20 20 20  54, 120, 2},    
36f0: 20 20 20 20 7b 38 31 36 38 2c 20 31 35 30 2c 20      {8168, 150, 
3700: 32 7d 2c 20 20 20 20 20 20 20 20 7b 38 31 37 30  2},        {8170
3710: 2c 20 31 31 38 2c 20 32 7d 2c 0a 20 20 20 20 7b  , 118, 2},.    {
3720: 38 31 37 32 2c 20 31 35 32 2c 20 31 7d 2c 20 20  8172, 152, 1},  
3730: 20 20 20 20 20 20 7b 38 31 38 34 2c 20 31 31 32        {8184, 112
3740: 2c 20 32 7d 2c 20 20 20 20 20 20 20 20 7b 38 31  , 2},        {81
3750: 38 36 2c 20 31 31 34 2c 20 32 7d 2c 0a 20 20 20  86, 114, 2},.   
3760: 20 7b 38 31 38 38 2c 20 31 34 38 2c 20 31 7d 2c   {8188, 148, 1},
3770: 20 20 20 20 20 20 20 20 7b 38 34 38 36 2c 20 39          {8486, 9
3780: 38 2c 20 31 7d 2c 20 20 20 20 20 20 20 20 20 7b  8, 1},         {
3790: 38 34 39 30 2c 20 39 32 2c 20 31 7d 2c 0a 20 20  8490, 92, 1},.  
37a0: 20 20 7b 38 34 39 31 2c 20 39 34 2c 20 31 7d 2c    {8491, 94, 1},
37b0: 20 20 20 20 20 20 20 20 20 7b 38 34 39 38 2c 20           {8498, 
37c0: 31 32 2c 20 31 7d 2c 20 20 20 20 20 20 20 20 20  12, 1},         
37d0: 7b 38 35 34 34 2c 20 38 2c 20 31 36 7d 2c 0a 20  {8544, 8, 16},. 
37e0: 20 20 20 7b 38 35 37 39 2c 20 30 2c 20 31 7d 2c     {8579, 0, 1},
37f0: 20 20 20 20 20 20 20 20 20 20 7b 39 33 39 38 2c            {9398,
3800: 20 31 30 2c 20 32 36 7d 2c 20 20 20 20 20 20 20   10, 26},       
3810: 20 7b 31 31 32 36 34 2c 20 32 32 2c 20 34 37 7d   {11264, 22, 47}
3820: 2c 0a 20 20 20 20 7b 31 31 33 36 30 2c 20 30 2c  ,.    {11360, 0,
3830: 20 31 7d 2c 20 20 20 20 20 20 20 20 20 7b 31 31   1},         {11
3840: 33 36 32 2c 20 38 38 2c 20 31 7d 2c 20 20 20 20  362, 88, 1},    
3850: 20 20 20 20 7b 31 31 33 36 33 2c 20 31 30 32 2c      {11363, 102,
3860: 20 31 7d 2c 0a 20 20 20 20 7b 31 31 33 36 34 2c   1},.    {11364,
3870: 20 39 30 2c 20 31 7d 2c 20 20 20 20 20 20 20 20   90, 1},        
3880: 7b 31 31 33 36 37 2c 20 31 2c 20 36 7d 2c 20 20  {11367, 1, 6},  
3890: 20 20 20 20 20 20 20 7b 31 31 33 37 33 2c 20 38         {11373, 8
38a0: 34 2c 20 31 7d 2c 0a 20 20 20 20 7b 31 31 33 37  4, 1},.    {1137
38b0: 34 2c 20 38 36 2c 20 31 7d 2c 20 20 20 20 20 20  4, 86, 1},      
38c0: 20 20 7b 31 31 33 37 35 2c 20 38 30 2c 20 31 7d    {11375, 80, 1}
38d0: 2c 20 20 20 20 20 20 20 20 7b 31 31 33 37 36 2c  ,        {11376,
38e0: 20 38 32 2c 20 31 7d 2c 0a 20 20 20 20 7b 31 31   82, 1},.    {11
38f0: 33 37 38 2c 20 30 2c 20 31 7d 2c 20 20 20 20 20  378, 0, 1},     
3900: 20 20 20 20 7b 31 31 33 38 31 2c 20 30 2c 20 31      {11381, 0, 1
3910: 7d 2c 20 20 20 20 20 20 20 20 20 7b 31 31 33 39  },         {1139
3920: 30 2c 20 37 38 2c 20 32 7d 2c 0a 20 20 20 20 7b  0, 78, 2},.    {
3930: 31 31 33 39 32 2c 20 31 2c 20 31 30 30 7d 2c 20  11392, 1, 100}, 
3940: 20 20 20 20 20 20 7b 31 31 34 39 39 2c 20 31 2c        {11499, 1,
3950: 20 34 7d 2c 20 20 20 20 20 20 20 20 20 7b 31 31   4},         {11
3960: 35 30 36 2c 20 30 2c 20 31 7d 2c 0a 20 20 20 20  506, 0, 1},.    
3970: 7b 34 32 35 36 30 2c 20 31 2c 20 34 36 7d 2c 20  {42560, 1, 46}, 
3980: 20 20 20 20 20 20 20 7b 34 32 36 32 34 2c 20 31         {42624, 1
3990: 2c 20 32 34 7d 2c 20 20 20 20 20 20 20 20 7b 34  , 24},        {4
39a0: 32 37 38 36 2c 20 31 2c 20 31 34 7d 2c 0a 20 20  2786, 1, 14},.  
39b0: 20 20 7b 34 32 38 30 32 2c 20 31 2c 20 36 32 7d    {42802, 1, 62}
39c0: 2c 20 20 20 20 20 20 20 20 7b 34 32 38 37 33 2c  ,        {42873,
39d0: 20 31 2c 20 34 7d 2c 20 20 20 20 20 20 20 20 20   1, 4},         
39e0: 7b 34 32 38 37 37 2c 20 37 36 2c 20 31 7d 2c 0a  {42877, 76, 1},.
39f0: 20 20 20 20 7b 34 32 38 37 38 2c 20 31 2c 20 31      {42878, 1, 1
3a00: 30 7d 2c 20 20 20 20 20 20 20 20 7b 34 32 38 39  0},        {4289
3a10: 31 2c 20 30 2c 20 31 7d 2c 20 20 20 20 20 20 20  1, 0, 1},       
3a20: 20 20 7b 34 32 38 39 33 2c 20 37 34 2c 20 31 7d    {42893, 74, 1}
3a30: 2c 0a 20 20 20 20 7b 34 32 38 39 36 2c 20 31 2c  ,.    {42896, 1,
3a40: 20 34 7d 2c 20 20 20 20 20 20 20 20 20 7b 34 32   4},         {42
3a50: 39 31 32 2c 20 31 2c 20 31 30 7d 2c 20 20 20 20  912, 1, 10},    
3a60: 20 20 20 20 7b 34 32 39 32 32 2c 20 37 32 2c 20      {42922, 72, 
3a70: 31 7d 2c 0a 20 20 20 20 7b 36 35 33 31 33 2c 20  1},.    {65313, 
3a80: 31 34 2c 20 32 36 7d 2c 20 20 20 20 20 20 20 0a  14, 26},       .
3a90: 20 20 7d 3b 0a 20 20 73 74 61 74 69 63 20 63 6f    };.  static co
3aa0: 6e 73 74 20 75 6e 73 69 67 6e 65 64 20 73 68 6f  nst unsigned sho
3ab0: 72 74 20 61 69 4f 66 66 5b 5d 20 3d 20 7b 0a 20  rt aiOff[] = {. 
3ac0: 20 20 31 2c 20 20 20 20 20 32 2c 20 20 20 20 20    1,     2,     
3ad0: 38 2c 20 20 20 20 20 31 35 2c 20 20 20 20 31 36  8,     15,    16
3ae0: 2c 20 20 20 20 32 36 2c 20 20 20 20 32 38 2c 20  ,    26,    28, 
3af0: 20 20 20 33 32 2c 20 20 20 20 0a 20 20 20 33 37     32,    .   37
3b00: 2c 20 20 20 20 33 38 2c 20 20 20 20 34 30 2c 20  ,    38,    40, 
3b10: 20 20 20 34 38 2c 20 20 20 20 36 33 2c 20 20 20     48,    63,   
3b20: 20 36 34 2c 20 20 20 20 36 39 2c 20 20 20 20 37   64,    69,    7
3b30: 31 2c 20 20 20 20 0a 20 20 20 37 39 2c 20 20 20  1,    .   79,   
3b40: 20 38 30 2c 20 20 20 20 31 31 36 2c 20 20 20 32   80,    116,   2
3b50: 30 32 2c 20 20 20 32 30 33 2c 20 20 20 32 30 35  02,   203,   205
3b60: 2c 20 20 20 32 30 36 2c 20 20 20 32 30 37 2c 20  ,   206,   207, 
3b70: 20 20 0a 20 20 20 32 30 39 2c 20 20 20 32 31 30    .   209,   210
3b80: 2c 20 20 20 32 31 31 2c 20 20 20 32 31 33 2c 20  ,   211,   213, 
3b90: 20 20 32 31 34 2c 20 20 20 32 31 37 2c 20 20 20    214,   217,   
3ba0: 32 31 38 2c 20 20 20 32 31 39 2c 20 20 20 0a 20  218,   219,   . 
3bb0: 20 20 37 37 35 2c 20 20 20 37 32 36 34 2c 20 20    775,   7264,  
3bc0: 31 30 37 39 32 2c 20 31 30 37 39 35 2c 20 32 33  10792, 10795, 23
3bd0: 32 32 38 2c 20 32 33 32 35 36 2c 20 33 30 32 30  228, 23256, 3020
3be0: 34 2c 20 35 34 37 32 31 2c 20 0a 20 20 20 35 34  4, 54721, .   54
3bf0: 37 35 33 2c 20 35 34 37 35 34 2c 20 35 34 37 35  753, 54754, 5475
3c00: 36 2c 20 35 34 37 38 37 2c 20 35 34 37 39 33 2c  6, 54787, 54793,
3c10: 20 35 34 38 30 39 2c 20 35 37 31 35 33 2c 20 35   54809, 57153, 5
3c20: 37 32 37 34 2c 20 0a 20 20 20 35 37 39 32 31 2c  7274, .   57921,
3c30: 20 35 38 30 31 39 2c 20 35 38 33 36 33 2c 20 36   58019, 58363, 6
3c40: 31 37 32 32 2c 20 36 35 32 36 38 2c 20 36 35 33  1722, 65268, 653
3c50: 34 31 2c 20 36 35 33 37 33 2c 20 36 35 34 30 36  41, 65373, 65406
3c60: 2c 20 0a 20 20 20 36 35 34 30 38 2c 20 36 35 34  , .   65408, 654
3c70: 31 30 2c 20 36 35 34 31 35 2c 20 36 35 34 32 34  10, 65415, 65424
3c80: 2c 20 36 35 34 33 36 2c 20 36 35 34 33 39 2c 20  , 65436, 65439, 
3c90: 36 35 34 35 30 2c 20 36 35 34 36 32 2c 20 0a 20  65450, 65462, . 
3ca0: 20 20 36 35 34 37 32 2c 20 36 35 34 37 36 2c 20    65472, 65476, 
3cb0: 36 35 34 37 38 2c 20 36 35 34 38 30 2c 20 36 35  65478, 65480, 65
3cc0: 34 38 32 2c 20 36 35 34 38 38 2c 20 36 35 35 30  482, 65488, 6550
3cd0: 36 2c 20 36 35 35 31 31 2c 20 0a 20 20 20 36 35  6, 65511, .   65
3ce0: 35 31 34 2c 20 36 35 35 32 31 2c 20 36 35 35 32  514, 65521, 6552
3cf0: 37 2c 20 36 35 35 32 38 2c 20 36 35 35 32 39 2c  7, 65528, 65529,
3d00: 20 0a 20 20 7d 3b 0a 0a 20 20 69 6e 74 20 72 65   .  };..  int re
3d10: 74 20 3d 20 63 3b 0a 0a 20 20 61 73 73 65 72 74  t = c;..  assert
3d20: 28 20 63 3e 3d 30 20 29 3b 0a 20 20 61 73 73 65  ( c>=0 );.  asse
3d30: 72 74 28 20 73 69 7a 65 6f 66 28 75 6e 73 69 67  rt( sizeof(unsig
3d40: 6e 65 64 20 73 68 6f 72 74 29 3d 3d 32 20 26 26  ned short)==2 &&
3d50: 20 73 69 7a 65 6f 66 28 75 6e 73 69 67 6e 65 64   sizeof(unsigned
3d60: 20 63 68 61 72 29 3d 3d 31 20 29 3b 0a 0a 20 20   char)==1 );..  
3d70: 69 66 28 20 63 3c 31 32 38 20 29 7b 0a 20 20 20  if( c<128 ){.   
3d80: 20 69 66 28 20 63 3e 3d 27 41 27 20 26 26 20 63   if( c>='A' && c
3d90: 3c 3d 27 5a 27 20 29 20 72 65 74 20 3d 20 63 20  <='Z' ) ret = c 
3da0: 2b 20 28 27 61 27 20 2d 20 27 41 27 29 3b 0a 20  + ('a' - 'A');. 
3db0: 20 7d 65 6c 73 65 20 69 66 28 20 63 3c 36 35 35   }else if( c<655
3dc0: 33 36 20 29 7b 0a 20 20 20 20 69 6e 74 20 69 48  36 ){.    int iH
3dd0: 69 20 3d 20 73 69 7a 65 6f 66 28 61 45 6e 74 72  i = sizeof(aEntr
3de0: 79 29 2f 73 69 7a 65 6f 66 28 61 45 6e 74 72 79  y)/sizeof(aEntry
3df0: 5b 30 5d 29 20 2d 20 31 3b 0a 20 20 20 20 69 6e  [0]) - 1;.    in
3e00: 74 20 69 4c 6f 20 3d 20 30 3b 0a 20 20 20 20 69  t iLo = 0;.    i
3e10: 6e 74 20 69 52 65 73 20 3d 20 2d 31 3b 0a 0a 20  nt iRes = -1;.. 
3e20: 20 20 20 77 68 69 6c 65 28 20 69 48 69 3e 3d 69     while( iHi>=i
3e30: 4c 6f 20 29 7b 0a 20 20 20 20 20 20 69 6e 74 20  Lo ){.      int 
3e40: 69 54 65 73 74 20 3d 20 28 69 48 69 20 2b 20 69  iTest = (iHi + i
3e50: 4c 6f 29 20 2f 20 32 3b 0a 20 20 20 20 20 20 69  Lo) / 2;.      i
3e60: 6e 74 20 63 6d 70 20 3d 20 28 63 20 2d 20 61 45  nt cmp = (c - aE
3e70: 6e 74 72 79 5b 69 54 65 73 74 5d 2e 69 43 6f 64  ntry[iTest].iCod
3e80: 65 29 3b 0a 20 20 20 20 20 20 69 66 28 20 63 6d  e);.      if( cm
3e90: 70 3e 3d 30 20 29 7b 0a 20 20 20 20 20 20 20 20  p>=0 ){.        
3ea0: 69 52 65 73 20 3d 20 69 54 65 73 74 3b 0a 20 20  iRes = iTest;.  
3eb0: 20 20 20 20 20 20 69 4c 6f 20 3d 20 69 54 65 73        iLo = iTes
3ec0: 74 2b 31 3b 0a 20 20 20 20 20 20 7d 65 6c 73 65  t+1;.      }else
3ed0: 7b 0a 20 20 20 20 20 20 20 20 69 48 69 20 3d 20  {.        iHi = 
3ee0: 69 54 65 73 74 2d 31 3b 0a 20 20 20 20 20 20 7d  iTest-1;.      }
3ef0: 0a 20 20 20 20 7d 0a 20 20 20 20 61 73 73 65 72  .    }.    asser
3f00: 74 28 20 69 52 65 73 3c 30 20 7c 7c 20 63 3e 3d  t( iRes<0 || c>=
3f10: 61 45 6e 74 72 79 5b 69 52 65 73 5d 2e 69 43 6f  aEntry[iRes].iCo
3f20: 64 65 20 29 3b 0a 0a 20 20 20 20 69 66 28 20 69  de );..    if( i
3f30: 52 65 73 3e 3d 30 20 29 7b 0a 20 20 20 20 20 20  Res>=0 ){.      
3f40: 63 6f 6e 73 74 20 73 74 72 75 63 74 20 54 61 62  const struct Tab
3f50: 6c 65 45 6e 74 72 79 20 2a 70 20 3d 20 26 61 45  leEntry *p = &aE
3f60: 6e 74 72 79 5b 69 52 65 73 5d 3b 0a 20 20 20 20  ntry[iRes];.    
3f70: 20 20 69 66 28 20 63 3c 28 70 2d 3e 69 43 6f 64    if( c<(p->iCod
3f80: 65 20 2b 20 70 2d 3e 6e 52 61 6e 67 65 29 20 26  e + p->nRange) &
3f90: 26 20 30 3d 3d 28 30 78 30 31 20 26 20 70 2d 3e  & 0==(0x01 & p->
3fa0: 66 6c 61 67 73 20 26 20 28 70 2d 3e 69 43 6f 64  flags & (p->iCod
3fb0: 65 20 5e 20 63 29 29 20 29 7b 0a 20 20 20 20 20  e ^ c)) ){.     
3fc0: 20 20 20 72 65 74 20 3d 20 28 63 20 2b 20 28 61     ret = (c + (a
3fd0: 69 4f 66 66 5b 70 2d 3e 66 6c 61 67 73 3e 3e 31  iOff[p->flags>>1
3fe0: 5d 29 29 20 26 20 30 78 30 30 30 30 46 46 46 46  ])) & 0x0000FFFF
3ff0: 3b 0a 20 20 20 20 20 20 20 20 61 73 73 65 72 74  ;.        assert
4000: 28 20 72 65 74 3e 30 20 29 3b 0a 20 20 20 20 20  ( ret>0 );.     
4010: 20 7d 0a 20 20 20 20 7d 0a 0a 20 20 20 20 69 66   }.    }..    if
4020: 28 20 62 52 65 6d 6f 76 65 44 69 61 63 72 69 74  ( bRemoveDiacrit
4030: 69 63 20 29 20 72 65 74 20 3d 20 72 65 6d 6f 76  ic ) ret = remov
4040: 65 5f 64 69 61 63 72 69 74 69 63 28 72 65 74 29  e_diacritic(ret)
4050: 3b 0a 20 20 7d 0a 20 20 0a 20 20 65 6c 73 65 20  ;.  }.  .  else 
4060: 69 66 28 20 63 3e 3d 36 36 35 36 30 20 26 26 20  if( c>=66560 && 
4070: 63 3c 36 36 36 30 30 20 29 7b 0a 20 20 20 20 72  c<66600 ){.    r
4080: 65 74 20 3d 20 63 20 2b 20 34 30 3b 0a 20 20 7d  et = c + 40;.  }
4090: 0a 0a 20 20 72 65 74 75 72 6e 20 72 65 74 3b 0a  ..  return ret;.
40a0: 7d 0a 23 65 6e 64 69 66 20 2f 2a 20 64 65 66 69  }.#endif /* defi
40b0: 6e 65 64 28 53 51 4c 49 54 45 5f 45 4e 41 42 4c  ned(SQLITE_ENABL
40c0: 45 5f 46 54 53 33 29 20 7c 7c 20 64 65 66 69 6e  E_FTS3) || defin
40d0: 65 64 28 53 51 4c 49 54 45 5f 45 4e 41 42 4c 45  ed(SQLITE_ENABLE
40e0: 5f 46 54 53 34 29 20 2a 2f 0a 23 65 6e 64 69 66  _FTS4) */.#endif
40f0: 20 2f 2a 20 21 64 65 66 69 6e 65 64 28 53 51 4c   /* !defined(SQL
4100: 49 54 45 5f 45 4e 41 42 4c 45 5f 46 54 53 34 5f  ITE_ENABLE_FTS4_
4110: 55 4e 49 43 4f 44 45 36 31 29 20 2a 2f 0a        UNICODE61) */.