diff --git a/Basement/Block/Base.hs b/Basement/Block/Base.hs
--- a/Basement/Block/Base.hs
+++ b/Basement/Block/Base.hs
@@ -8,10 +8,12 @@
     , unsafeNew
     , unsafeThaw
     , unsafeFreeze
+    , unsafeShrink
     , unsafeCopyElements
     , unsafeCopyElementsRO
     , unsafeCopyBytes
     , unsafeCopyBytesRO
+    , unsafeCopyBytesPtr
     , unsafeRead
     , unsafeWrite
     , unsafeIndex
@@ -30,6 +32,7 @@
     , withMutablePtr
     , withMutablePtrHint
     , mutableWithPtr
+    , unsafeRecast
     ) where
 
 import           GHC.Prim
@@ -228,30 +231,27 @@
     !la = lengthBytes a
     !lb = lengthBytes b
 
-concat :: [Block ty] -> Block ty
-concat [] = empty
-concat l  =
-    case filterAndSum 0 [] l of
-        (_,[])            -> empty
-        (_,[x])           -> x
-        (totalLen,chunks) -> runST $ do
-            r <- unsafeNew Unpinned totalLen
-            doCopy r 0 chunks
-            unsafeFreeze r
+concat :: forall ty . [Block ty] -> Block ty
+concat original = runST $ do
+    r <- unsafeNew Unpinned total
+    goCopy r zero original
+    unsafeFreeze r
   where
-    -- TODO would go faster not to reverse but pack from the end instead
-    filterAndSum !totalLen acc []     = (totalLen, Data.List.reverse acc)
-    filterAndSum !totalLen acc (x:xs)
-        | len == 0  = filterAndSum totalLen acc xs
-        | otherwise = filterAndSum (len+totalLen) (x:acc) xs
-      where len = lengthBytes x
+    !total = size 0 original
+    -- size
+    size !sz []     = sz
+    size !sz (x:xs) = size (lengthBytes x + sz) xs
 
-    doCopy _ _ []     = return ()
-    doCopy r i (x:xs) = do
-        unsafeCopyBytesRO r i x 0 lx
-        doCopy r (i `offsetPlusE` lx) xs
-      where !lx = lengthBytes x
+    zero = Offset 0
 
+    goCopy r = loop
+      where
+        loop _  []      = pure ()
+        loop !i (x:xs) = do
+            unsafeCopyBytesRO r i x zero lx
+            loop (i `offsetPlusE` lx) xs
+          where !lx = lengthBytes x
+
 -- | Freeze a mutable block into a block.
 --
 -- If the mutable block is still use after freeze,
@@ -263,6 +263,11 @@
         (# s2, ba #) -> (# s2, Block ba #)
 {-# INLINE unsafeFreeze #-}
 
+unsafeShrink :: PrimMonad prim => MutableBlock ty (PrimState prim) -> CountOf ty -> prim (MutableBlock ty (PrimState prim))
+unsafeShrink (MutableBlock mba) (CountOf (I# nsz)) = primitive $ \s ->
+    case compatShrinkMutableByteArray# mba nsz s of
+        (# s, mba' #) -> (# s, MutableBlock mba' #)
+
 -- | Thaw an immutable block.
 --
 -- If the immutable block is modified, then the original immutable block will
@@ -348,6 +353,17 @@
     primitive $ \st -> (# copyByteArray# srcBa s dstMba d n st, () #)
 {-# INLINE unsafeCopyBytesRO #-}
 
+-- | Copy a number of bytes from a Ptr to a MutableBlock with specific byte offsets
+unsafeCopyBytesPtr :: forall prim ty . PrimMonad prim
+                   => MutableBlock ty (PrimState prim) -- ^ destination mutable block
+                   -> Offset Word8                     -- ^ offset at destination
+                   -> Ptr ty                           -- ^ source block
+                   -> CountOf Word8                    -- ^ number of bytes to copy
+                   -> prim ()
+unsafeCopyBytesPtr (MutableBlock dstMba) (Offset (I# d)) (Ptr srcBa) (CountOf (I# n)) =
+    primitive $ \st -> (# copyAddrToByteArray# srcBa dstMba d n st, () #)
+{-# INLINE unsafeCopyBytesPtr #-}
+
 -- | read from a cell in a mutable block without bounds checking.
 --
 -- Reading from invalid memory can return unpredictable and invalid values.
@@ -390,6 +406,11 @@
 touch :: PrimMonad prim => Block ty -> prim ()
 touch (Block ba) =
     unsafePrimFromIO $ primitive $ \s -> case touch# ba s of { s2 -> (# s2, () #) }
+
+unsafeRecast :: (PrimType t1, PrimType t2)
+             => MutableBlock t1 st
+             -> MutableBlock t2 st
+unsafeRecast (MutableBlock mba) = MutableBlock mba
 
 -- | Use the 'Ptr' to a mutable block in a safer construct
 --
diff --git a/Basement/Block/Builder.hs b/Basement/Block/Builder.hs
new file mode 100644
--- /dev/null
+++ b/Basement/Block/Builder.hs
@@ -0,0 +1,151 @@
+-- |
+-- Module      : Basement.Block.Builder
+-- License     : BSD-style
+-- Maintainer  : Foundation
+--
+-- Block builder
+
+{-# LANGUAGE Rank2Types #-}
+
+module Basement.Block.Builder
+    ( Builder
+    , run
+
+    -- * Emit functions
+    , emit
+    , emitPrim
+    , emitString
+    , emitUTF8Char
+
+    -- * unsafe
+    , unsafeRunString
+    ) where
+
+import qualified Basement.Alg.Native.UTF8      as PrimBA
+import           Basement.UTF8.Helper          (charToBytes)
+import           Basement.Numerical.Conversion (charToInt)
+import           Basement.Block.Base (Block(..), MutableBlock(..))
+import qualified Basement.Block.Base as B
+import           Basement.Cast
+import           Basement.Compat.Base
+import           Basement.Compat.Semigroup
+import           Basement.Monad
+import           Basement.FinalPtr (FinalPtr, withFinalPtr)
+import           Basement.Numerical.Additive
+import           Basement.String                (String(..))
+import qualified Basement.String as S
+import           Basement.Types.OffsetSize
+import           Basement.PrimType (PrimType(..), primMbaWrite)
+import           Basement.UArray.Base (UArray(..))
+import qualified Basement.UArray.Base as A
+
+import           GHC.ST
+import           Data.Proxy
+
+newtype Action = Action
+    { runAction_ :: forall prim . PrimMonad prim
+                 => MutableBlock Word8 (PrimState prim)
+                 -> Offset Word8
+                 -> prim (Offset Word8)
+    }
+
+data Builder = Builder {-# UNPACK #-} !(CountOf Word8)
+                                      !Action
+
+instance Semigroup Builder where
+    (<>) = append
+    {-# INLINABLE (<>) #-}
+instance Monoid Builder where
+    mempty = empty
+    {-# INLINE mempty #-}
+    mappend = append
+    {-# INLINABLE mappend #-}
+    mconcat = concat
+    {-# INLINABLE mconcat #-}
+
+-- | create an empty builder
+--
+-- this does nothing, build nothing, take no space (in the resulted block)
+empty :: Builder
+empty = Builder 0 (Action $ \_ !off -> pure off)
+{-# INLINE empty #-}
+
+-- | concatenate the 2 given bulider
+append :: Builder -> Builder -> Builder
+append (Builder size1 (Action action1)) (Builder size2 (Action action2)) =
+    Builder size action
+  where
+    action = Action $ \arr off -> do
+      off' <- action1 arr off
+      action2 arr off'
+    size = size1 + size2
+{-# INLINABLE append #-}
+
+-- | concatenate the list of builder
+concat :: [Builder] -> Builder
+concat = loop 0 (Action $ \_ !off -> pure off)
+  where
+    loop !sz acc          []                              = Builder sz acc
+    loop !sz (Action acc) (Builder !s (Action action):xs) =
+       loop (sz + s) (Action $ \arr off -> acc arr off >>= action arr) xs
+{-# INLINABLE concat #-}
+
+-- | run the given builder and return the generated block
+run :: PrimMonad prim => Builder -> prim (Block Word8)
+run (Builder sz action) = do
+    mb <- B.new sz
+    off <- runAction_ action mb 0
+    B.unsafeShrink mb (offsetAsSize off) >>= B.unsafeFreeze
+
+-- | run the given builder and return a UTF8String
+--
+-- this action is unsafe as there is no guarantee upon the validity of the
+-- content of the built block.
+unsafeRunString :: PrimMonad prim => Builder -> prim String
+unsafeRunString b = do
+    str <- run b
+    pure $ String $ A.UArray 0 (B.length str) (A.UArrayBA str)
+
+-- | add a Block in the builder
+emit :: Block a -> Builder
+emit b = Builder size $ Action $ \arr off ->
+    B.unsafeCopyBytesRO arr off b' 0 size *> pure (off + sizeAsOffset size)
+  where
+    b' :: Block Word8
+    b' = cast b
+    size :: CountOf Word8
+    size = B.length b'
+
+emitPrim :: (PrimType ty, ty ~ Word8) => ty -> Builder
+emitPrim a = Builder size $ Action $ \(MutableBlock arr) off ->
+    primMbaWrite arr off a *> pure (off + sizeAsOffset size)
+  where
+    size = getSize Proxy a
+    getSize :: PrimType ty => Proxy ty -> ty -> CountOf Word8
+    getSize p _ = primSizeInBytes p
+
+-- | add a string in the builder
+emitString :: String -> Builder
+emitString (String str) = Builder size $ Action $ \arr off ->
+    A.onBackendPrim (onBA arr off) (onAddr arr off) str *> pure (off + sizeAsOffset size)
+  where
+    size = A.length str
+    onBA :: PrimMonad prim
+         => MutableBlock Word8 (PrimState prim)
+         -> Offset Word8
+         -> Block Word8
+         -> prim ()
+    onBA   arr off ba   = B.unsafeCopyBytesRO arr off ba 0 size
+    onAddr :: PrimMonad prim
+           => MutableBlock Word8 (PrimState prim)
+           -> Offset Word8
+           -> FinalPtr Word8
+           -> prim ()
+    onAddr arr off fptr = withFinalPtr fptr $ \ptr -> B.unsafeCopyBytesPtr arr off ptr size
+
+-- | emit a UTF8 char in the builder
+--
+-- this function may be replaced by `emit :: Encoding -> Char -> Builder`
+emitUTF8Char :: Char -> Builder
+emitUTF8Char c = Builder (charToBytes $ charToInt c) $ Action $ \(MutableBlock arr) off ->
+    PrimBA.write arr off c
diff --git a/Basement/Block/Mutable.hs b/Basement/Block/Mutable.hs
--- a/Basement/Block/Mutable.hs
+++ b/Basement/Block/Mutable.hs
@@ -58,6 +58,7 @@
     , unsafeCopyElementsRO
     , unsafeCopyBytes
     , unsafeCopyBytesRO
+    , unsafeCopyBytesPtr
     -- * Foreign
     , copyFromPtr
     , copyToPtr
diff --git a/Basement/Cast.hs b/Basement/Cast.hs
new file mode 100644
--- /dev/null
+++ b/Basement/Cast.hs
@@ -0,0 +1,125 @@
+{-# LANGUAGE ConstraintKinds       #-}
+{-# LANGUAGE CPP                   #-}
+{-# LANGUAGE FlexibleInstances     #-}
+{-# LANGUAGE DefaultSignatures     #-}
+{-# LANGUAGE MagicHash             #-}
+{-# LANGUAGE MultiParamTypeClasses #-}
+-- |
+-- Module      : Basement.Cast
+-- License     : BSD-style
+-- Maintainer  : Haskell Foundation
+--
+module Basement.Cast
+    ( Cast(..)
+    ) where
+
+#include "MachDeps.h"
+
+import qualified Basement.Block.Base as Block
+import           Basement.Compat.Base
+import           Basement.Compat.Natural
+import           Basement.Numerical.Number
+import           Basement.Numerical.Conversion
+import           Basement.PrimType
+
+import           Data.Proxy (Proxy(..))
+
+import           GHC.Int
+import           GHC.Prim
+import           GHC.Types
+import           GHC.ST
+import           GHC.Word
+
+-- | `Cast` an object of type a to b.
+--
+-- Do not add instance of this class if the source type is not of the same
+-- size of the destination type. Also keep in mind this is casting a value
+-- of a given type into a destination type. The value won't be changed to
+-- fit the destination represention.
+--
+-- If you wish to convert a value of a given type into another type, look at
+-- `From` and `TryFrom`.
+--
+-- @
+-- cast (-10 :: Int) :: Word === 18446744073709551606
+-- @
+--
+class Cast source destination where
+    cast :: source -> destination
+
+    default cast :: ( PrimType source
+                    , PrimType destination
+                    , PrimSize source ~ PrimSize destination
+                    )
+                 => source -> destination
+    cast a = runST $ do
+        mba <- Block.new 1
+        Block.unsafeWrite mba 0 a
+        Block.unsafeRead (Block.unsafeRecast mba) 0
+
+instance Cast Int8  Word8 where
+    cast (I8# i) = W8# (narrow8Word# (int2Word# i))
+instance Cast Int16 Word16 where
+    cast (I16# i) = W16# (narrow16Word# (int2Word# i))
+instance Cast Int32 Word32 where
+    cast (I32# i) = W32# (narrow32Word# (int2Word# i))
+instance Cast Int64 Word64 where
+    cast = int64ToWord64
+instance Cast Int   Word where
+    cast (I# i) = W# (int2Word# i)
+
+instance Cast Word8  Int8 where
+    cast (W8# i) = I8# (narrow8Int# (word2Int# i))
+instance Cast Word16 Int16 where
+    cast (W16# i) = I16# (narrow16Int# (word2Int# i))
+instance Cast Word32 Int32 where
+    cast (W32# i) = I32# (narrow32Int# (word2Int# i))
+instance Cast Word64 Int64 where
+    cast = word64ToInt64
+instance Cast Word   Int where
+    cast (W# w) = I# (word2Int# w)
+
+#if WORD_SIZE_IN_BITS == 64
+instance Cast Word   Word64 where
+    cast (W# w) = W64# w
+instance Cast Word64 Word where
+    cast (W64# w) = W# w
+
+instance Cast Word   Int64 where
+    cast (W# w) = I64# (word2Int# w)
+instance Cast Int64  Word where
+    cast (I64# i) = W# (int2Word# i)
+
+instance Cast Int    Int64 where
+    cast (I# i) = I64# i
+instance Cast Int64  Int where
+    cast (I64# i) = I# i
+
+instance Cast Int    Word64 where
+    cast (I# i) = W64# (int2Word# i)
+instance Cast Word64 Int where
+    cast (W64# w) = I# (word2Int# w)
+#else
+instance Cast Word   Word32 where
+    cast (W# w) = W32# w
+instance Cast Word32 Word where
+    cast (W32# w) = W# w
+
+instance Cast Word   Int32 where
+    cast (W# w) = I32# (word2Int# w)
+instance Cast Int32  Word where
+    cast (I32# i) = W# (int2Word# i)
+
+instance Cast Int    Int32 where
+    cast (I# i) = I32# i
+instance Cast Int32  Int where
+    cast (I32# i) = I# i
+
+instance Cast Int    Word32 where
+    cast (I# i) = W32# (int2Word# i)
+instance Cast Word32 Int where
+    cast (W32# w) = I# (word2Int# w)
+#endif
+
+instance Cast (Block.Block a) (Block.Block Word8) where
+    cast (Block.Block ba) = Block.Block ba
diff --git a/Basement/Compat/AMP.hs b/Basement/Compat/AMP.hs
new file mode 100644
--- /dev/null
+++ b/Basement/Compat/AMP.hs
@@ -0,0 +1,14 @@
+{-# LANGUAGE CPP             #-}
+{-# LANGUAGE ConstraintKinds #-}
+-- a compat module for ghc < 7.10 to handle the AMP change smoothly
+module Basement.Compat.AMP
+    ( AMPMonad
+    ) where
+
+import Basement.Compat.Base
+
+#if MIN_VERSION_base(4,8,0)
+type AMPMonad m = Monad m
+#else
+type AMPMonad m = (Functor m, Applicative m, Monad m)
+#endif
diff --git a/Basement/From.hs b/Basement/From.hs
--- a/Basement/From.hs
+++ b/Basement/From.hs
@@ -41,6 +41,7 @@
 import           Basement.Numerical.Conversion
 import qualified Basement.Block as Block
 import qualified Basement.BoxedArray as BoxArray
+import           Basement.Cast (cast)
 import qualified Basement.UArray as UArray
 import qualified Basement.String as String
 import qualified Basement.Types.AsciiString as AsciiString
@@ -94,12 +95,6 @@
 instance From a a where
     from = id
 
--- Simple numerical instances
-instance From Int Word where
-    from (I# i) = W# (int2Word# i)
-instance From Word Int where
-    from (W# w) = I# (word2Int# w)
-
 instance IsNatural n => From n Natural where
     from = toNatural
 instance IsIntegral n => From n Integer where
@@ -160,6 +155,12 @@
     from (W16# i) = Word256 0 0 0 (wordToWord64 $ W# i)
 instance From Word16 Word where
     from (W16# i) = W# i
+instance From Word16 Int32 where
+    from (W16# w) = I32# (word2Int# w)
+instance From Word16 Int64 where
+    from (W16# w) = intToInt64 (I# (word2Int# w))
+instance From Word16 Int where
+    from (W16# w) = I# (word2Int# w)
 
 instance From Word32 Word64 where
     from (W32# i) = wordToWord64 (W# i)
@@ -169,6 +170,10 @@
     from (W32# i) = Word256 0 0 0 (wordToWord64 $ W# i)
 instance From Word32 Word where
     from (W32# i) = W# i
+instance From Word32 Int64 where
+    from (W32# w) = intToInt64 (I# (word2Int# w))
+instance From Word32 Int where
+    from (W32# w) = I# (word2Int# w)
 
 instance From Word64 Word128 where
     from w = Word128 0 w
@@ -187,7 +192,21 @@
 instance From (CountOf ty) Int where
     from (CountOf n) = n
 instance From (CountOf ty) Word where
-    from (CountOf n) = from n
+    -- here it is ok to cast the underlying `Int` held by `CountOf` to a `Word`
+    -- as the `Int` should never hold a negative value.
+    from (CountOf n) = cast n
+instance From Word (Offset ty) where
+    from w = Offset (cast w)
+instance TryFrom Int (Offset ty) where
+    tryFrom i
+        | i < 0     = Nothing
+        | otherwise = Just (Offset i)
+instance TryFrom Int (CountOf ty) where
+    tryFrom i
+        | i < 0     = Nothing
+        | otherwise = Just (CountOf i)
+instance From Word (CountOf ty) where
+    from w = CountOf (cast w)
 
 instance From (Either a b) (These a b) where
     from (Left a) = This a
diff --git a/Basement/IntegralConv.hs b/Basement/IntegralConv.hs
--- a/Basement/IntegralConv.hs
+++ b/Basement/IntegralConv.hs
@@ -7,7 +7,6 @@
 module Basement.IntegralConv
     ( IntegralDownsize(..)
     , IntegralUpsize(..)
-    , IntegralCast(..)
     , intToInt64
     , int64ToInt
     , wordToWord64
@@ -44,13 +43,6 @@
 class IntegralUpsize a b where
     integralUpsize      :: a -> b
 
--- | Cast an integral value to another value
--- that have the same representional size
-class IntegralCast a b where
-    integralCast :: a -> b
-    default integralCast :: a ~ b => a -> b
-    integralCast = id
-
 integralDownsizeBounded :: forall a b . (Ord a, Bounded b, IntegralDownsize a b, IntegralUpsize b a)
                         => (a -> b)
                         -> a
@@ -219,30 +211,3 @@
 instance IntegralDownsize Natural Word64 where
     integralDownsize = fromIntegral
     integralDownsizeCheck = integralDownsizeBounded integralDownsize
-
-instance IntegralCast Word Int where
-    integralCast (W# w) = I# (word2Int# w)
-instance IntegralCast Int Word where
-    integralCast (I# i) = W# (int2Word# i)
-instance IntegralCast Word64 Int64 where
-    integralCast = word64ToInt64
-instance IntegralCast Int64 Word64 where
-    integralCast = int64ToWord64
-
-instance IntegralCast Int8 Word8 where
-    integralCast (I8# i) = W8# (narrow8Word# (int2Word# i))
-
-instance IntegralCast Int16 Word16 where
-    integralCast (I16# i) = W16# (narrow16Word# (int2Word# i))
-
-instance IntegralCast Int32 Word32 where
-    integralCast (I32# i) = W32# (narrow32Word# (int2Word# i))
-
-instance IntegralCast Word8 Int8 where
-    integralCast (W8# i) = I8# (narrow8Int# (word2Int# i))
-
-instance IntegralCast Word16 Int16 where
-    integralCast (W16# i) = I16# (narrow16Int# (word2Int# i))
-
-instance IntegralCast Word32 Int32 where
-    integralCast (W32# i) = I32# (narrow32Int# (word2Int# i))
diff --git a/Basement/Monad.hs b/Basement/Monad.hs
--- a/Basement/Monad.hs
+++ b/Basement/Monad.hs
@@ -16,6 +16,7 @@
 {-# LANGUAGE MagicHash #-}
 {-# LANGUAGE UnboxedTuples #-}
 {-# LANGUAGE ExistentialQuantification #-}
+{-# LANGUAGE ConstraintKinds #-}
 module Basement.Monad
     ( PrimMonad(..)
     , MonadFailure(..)
@@ -34,6 +35,7 @@
 import           GHC.IO
 import           GHC.Prim
 import           Basement.Compat.Base (Exception, (.), ($), Applicative)
+import           Basement.Compat.AMP
 
 -- | Primitive monad that can handle mutation.
 --
@@ -120,7 +122,7 @@
 -- | Monad that can represent failure
 --
 -- Similar to MonadFail but with a parametrized Failure linked to the Monad
-class Prelude.Monad m => MonadFailure m where
+class AMPMonad m => MonadFailure m where
     -- | The associated type with the MonadFailure, representing what
     -- failure can be encoded in this monad
     type Failure m
diff --git a/Basement/Numerical/Conversion.hs b/Basement/Numerical/Conversion.hs
--- a/Basement/Numerical/Conversion.hs
+++ b/Basement/Numerical/Conversion.hs
@@ -3,6 +3,7 @@
 module Basement.Numerical.Conversion
     ( intToInt64
     , int64ToInt
+    , intToWord
     , wordToWord64
     , word64ToWord
     , Word32x2(..)
@@ -91,6 +92,9 @@
 
 wordToInt :: Word -> Int
 wordToInt (W# word) = I# (word2Int# word)
+
+intToWord :: Int -> Word
+intToWord (I# i) = W# (int2Word# i)
 
 charToInt :: Char -> Int
 charToInt (C# x) = I# (ord# x)
diff --git a/Basement/PrimType.hs b/Basement/PrimType.hs
--- a/Basement/PrimType.hs
+++ b/Basement/PrimType.hs
@@ -4,6 +4,7 @@
 -- Stability   : experimental
 -- Portability : portable
 --
+{-# LANGUAGE DataKinds #-}
 {-# LANGUAGE MagicHash #-}
 {-# LANGUAGE UnboxedTuples #-}
 {-# LANGUAGE FlexibleInstances #-}
@@ -49,6 +50,7 @@
 import           Basement.Types.Word128 (Word128(..))
 import           Basement.Types.Word256 (Word256(..))
 import           Basement.Monad
+import           Basement.Nat
 import qualified Prelude (quot)
 
 #if WORD_SIZE_IN_BITS < 64
@@ -160,6 +162,9 @@
 --
 -- Types need to be a instance of storable and have fixed sized.
 class Eq ty => PrimType ty where
+    -- | type level size of the given `ty`
+    type PrimSize ty :: Nat
+
     -- | get the size in bytes of a ty element
     primSizeInBytes :: Proxy ty -> CountOf Word8
 
@@ -227,6 +232,11 @@
 {-# SPECIALIZE [3] primBaUIndex :: ByteArray# -> Offset Word8 -> Word8 #-}
 
 instance PrimType Int where
+#if WORD_SIZE_IN_BITS == 64
+    type PrimSize Int = 8
+#else
+    type PrimSize Int = 4
+#endif
     primSizeInBytes _ = sizeInt
     {-# INLINE primSizeInBytes #-}
     primShiftToBytes _ = shiftInt
@@ -245,6 +255,11 @@
     {-# INLINE primAddrWrite #-}
 
 instance PrimType Word where
+#if WORD_SIZE_IN_BITS == 64
+    type PrimSize Word = 8
+#else
+    type PrimSize Word = 4
+#endif
     primSizeInBytes _ = sizeWord
     {-# INLINE primSizeInBytes #-}
     primShiftToBytes _ = shiftWord
@@ -263,6 +278,7 @@
     {-# INLINE primAddrWrite #-}
 
 instance PrimType Word8 where
+    type PrimSize Word8 = 1
     primSizeInBytes _ = CountOf 1
     {-# INLINE primSizeInBytes #-}
     primShiftToBytes _ = 0
@@ -281,6 +297,7 @@
     {-# INLINE primAddrWrite #-}
 
 instance PrimType Word16 where
+    type PrimSize Word16 = 2
     primSizeInBytes _ = CountOf 2
     {-# INLINE primSizeInBytes #-}
     primShiftToBytes _ = 1
@@ -298,6 +315,7 @@
     primAddrWrite addr (Offset (I# n)) (W16# w) = primitive $ \s1 -> (# writeWord16OffAddr# addr n w s1, () #)
     {-# INLINE primAddrWrite #-}
 instance PrimType Word32 where
+    type PrimSize Word32 = 4
     primSizeInBytes _ = CountOf 4
     {-# INLINE primSizeInBytes #-}
     primShiftToBytes _ = 2
@@ -315,6 +333,7 @@
     primAddrWrite addr (Offset (I# n)) (W32# w) = primitive $ \s1 -> (# writeWord32OffAddr# addr n w s1, () #)
     {-# INLINE primAddrWrite #-}
 instance PrimType Word64 where
+    type PrimSize Word64 = 8
     primSizeInBytes _ = CountOf 8
     {-# INLINE primSizeInBytes #-}
     primShiftToBytes _ = 3
@@ -332,6 +351,7 @@
     primAddrWrite addr (Offset (I# n)) (W64# w) = primitive $ \s1 -> (# writeWord64OffAddr# addr n w s1, () #)
     {-# INLINE primAddrWrite #-}
 instance PrimType Word128 where
+    type PrimSize Word128 = 16
     primSizeInBytes _ = CountOf 16
     {-# INLINE primSizeInBytes #-}
     primShiftToBytes _ = 4
@@ -364,6 +384,7 @@
       where (# n1, n2 #) = offset128_64 n
     {-# INLINE primAddrWrite #-}
 instance PrimType Word256 where
+    type PrimSize Word256 = 32
     primSizeInBytes _ = CountOf 32
     {-# INLINE primSizeInBytes #-}
     primShiftToBytes _ = 5
@@ -406,6 +427,7 @@
       where (# n1, n2, n3, n4 #) = offset256_64 n
     {-# INLINE primAddrWrite #-}
 instance PrimType Int8 where
+    type PrimSize Int8 = 1
     primSizeInBytes _ = CountOf 1
     {-# INLINE primSizeInBytes #-}
     primShiftToBytes _ = 0
@@ -423,6 +445,7 @@
     primAddrWrite addr (Offset (I# n)) (I8# w) = primitive $ \s1 -> (# writeInt8OffAddr# addr n w s1, () #)
     {-# INLINE primAddrWrite #-}
 instance PrimType Int16 where
+    type PrimSize Int16 = 2
     primSizeInBytes _ = CountOf 2
     {-# INLINE primSizeInBytes #-}
     primShiftToBytes _ = 1
@@ -440,6 +463,7 @@
     primAddrWrite addr (Offset (I# n)) (I16# w) = primitive $ \s1 -> (# writeInt16OffAddr# addr n w s1, () #)
     {-# INLINE primAddrWrite #-}
 instance PrimType Int32 where
+    type PrimSize Int32 = 4
     primSizeInBytes _ = CountOf 4
     {-# INLINE primSizeInBytes #-}
     primShiftToBytes _ = 2
@@ -457,6 +481,7 @@
     primAddrWrite addr (Offset (I# n)) (I32# w) = primitive $ \s1 -> (# writeInt32OffAddr# addr n w s1, () #)
     {-# INLINE primAddrWrite #-}
 instance PrimType Int64 where
+    type PrimSize Int64 = 8
     primSizeInBytes _ = CountOf 8
     {-# INLINE primSizeInBytes #-}
     primShiftToBytes _ = 3
@@ -475,6 +500,7 @@
     {-# INLINE primAddrWrite #-}
 
 instance PrimType Float where
+    type PrimSize Float = 4
     primSizeInBytes _ = CountOf 4
     {-# INLINE primSizeInBytes #-}
     primShiftToBytes _ = 2
@@ -492,6 +518,7 @@
     primAddrWrite addr (Offset (I# n)) (F# w) = primitive $ \s1 -> (# writeFloatOffAddr# addr n w s1, () #)
     {-# INLINE primAddrWrite #-}
 instance PrimType Double where
+    type PrimSize Double = 8
     primSizeInBytes _ = CountOf 8
     {-# INLINE primSizeInBytes #-}
     primShiftToBytes _ = 3
@@ -510,6 +537,7 @@
     {-# INLINE primAddrWrite #-}
 
 instance PrimType Char where
+    type PrimSize Char = 4
     primSizeInBytes _ = CountOf 4
     {-# INLINE primSizeInBytes #-}
     primShiftToBytes _ = 2
@@ -528,6 +556,7 @@
     {-# INLINE primAddrWrite #-}
 
 instance PrimType CChar where
+    type PrimSize CChar = 1
     primSizeInBytes _ = CountOf 1
     {-# INLINE primSizeInBytes #-}
     primShiftToBytes _ = 0
@@ -545,6 +574,7 @@
     primAddrWrite addr (Offset n) (CChar int8) = primAddrWrite addr (Offset n) int8
     {-# INLINE primAddrWrite #-}
 instance PrimType CUChar where
+    type PrimSize CUChar = 1
     primSizeInBytes _ = CountOf 1
     {-# INLINE primSizeInBytes #-}
     primShiftToBytes _ = 0
@@ -563,6 +593,7 @@
     {-# INLINE primAddrWrite #-}
 
 instance PrimType Char7 where
+    type PrimSize Char7 = 1
     primSizeInBytes _ = CountOf 1
     {-# INLINE primSizeInBytes #-}
     primShiftToBytes _ = 0
@@ -581,6 +612,7 @@
     {-# INLINE primAddrWrite #-}
 
 instance PrimType a => PrimType (LE a) where
+    type PrimSize (LE a) = PrimSize a
     primSizeInBytes _ = primSizeInBytes (Proxy :: Proxy a)
     {-# INLINE primSizeInBytes #-}
     primShiftToBytes _ = primShiftToBytes (Proxy :: Proxy a)
@@ -598,6 +630,7 @@
     primAddrWrite addr (Offset a) (LE w) = primAddrWrite addr (Offset a) w
     {-# INLINE primAddrWrite #-}
 instance PrimType a => PrimType (BE a) where
+    type PrimSize (BE a) = PrimSize a
     primSizeInBytes _ = primSizeInBytes (Proxy :: Proxy a)
     {-# INLINE primSizeInBytes #-}
     primShiftToBytes _ = primShiftToBytes (Proxy :: Proxy a)
diff --git a/Basement/String.hs b/Basement/String.hs
--- a/Basement/String.hs
+++ b/Basement/String.hs
@@ -109,12 +109,14 @@
 import           Basement.Numerical.Subtractive
 import           Basement.Numerical.Multiplicative
 import           Basement.Numerical.Number
+import           Basement.Cast
 import           Basement.Monad
 import           Basement.PrimType
 import           Basement.FinalPtr
 import           Basement.IntegralConv
 import           Basement.Floating
 import           Basement.MutableBuilder
+import           Basement.String.CaseMapping (upperMapping, lowerMapping)
 import           Basement.UTF8.Table
 import           Basement.UTF8.Helper
 import           Basement.UTF8.Base
@@ -611,7 +613,7 @@
 replicate :: CountOf Char -> Char -> String
 replicate (CountOf n) c = runST (new nbBytes >>= fill)
   where
-    nbBytes   = scale (integralCast n :: Word) sz
+    nbBytes   = scale (cast n :: Word) sz
     sz = charToBytes (fromEnum c)
     fill :: PrimMonad prim => MutableString (PrimState prim) -> prim String
     fill ms = loop (Offset 0)
@@ -1135,7 +1137,7 @@
         case mExponant of
             Just exponent
                 | exponent < -10000 || exponent > 10000 -> Nothing
-                | otherwise                             -> Just $ modF isNegative integral % (10 Prelude.^ (integralCast floatingDigits - exponent))
+                | otherwise                             -> Just $ modF isNegative integral % (10 Prelude.^ (cast floatingDigits - exponent))
             Nothing                                     -> Just $ modF isNegative integral % (10 Prelude.^ floatingDigits)
   where
     modF True  = negate . integralUpsize
@@ -1192,9 +1194,9 @@
         consumeFloat isNegative integral startOfs =
             case decimalDigitsBA integral ba eofs startOfs of
                 (# acc, True, endOfs #) | endOfs > startOfs -> let (CountOf !diff) = endOfs - startOfs
-                                                                in f isNegative acc (integralCast diff) Nothing
+                                                                in f isNegative acc (cast diff) Nothing
                 (# acc, False, endOfs #) | endOfs > startOfs -> let (CountOf !diff) = endOfs - startOfs
-                                                                in consumeExponant isNegative acc (integralCast diff) endOfs
+                                                                in consumeExponant isNegative acc (cast diff) endOfs
                 _                                           -> Nothing
 
         consumeExponant !isNegative !integral !floatingDigits !startOfs
@@ -1232,9 +1234,9 @@
         consumeFloat isNegative integral startOfs =
             case decimalDigitsPtr integral ptr eofs startOfs of
                 (# acc, True, endOfs #) | endOfs > startOfs -> let (CountOf !diff) = endOfs - startOfs
-                                                                in f isNegative acc (integralCast diff) Nothing
+                                                                in f isNegative acc (cast diff) Nothing
                 (# acc, False, endOfs #) | endOfs > startOfs -> let (CountOf !diff) = endOfs - startOfs
-                                                                in consumeExponant isNegative acc (integralCast diff) endOfs
+                                                                in consumeExponant isNegative acc (cast diff) endOfs
                 _                                           -> Nothing
 
         consumeExponant !isNegative !integral !floatingDigits !startOfs
@@ -1317,15 +1319,68 @@
 {-# SPECIALIZE decimalDigitsPtr :: Int -> Addr# -> Offset Word8 -> Offset Word8 -> (# Int, Bool, Offset Word8 #) #-}
 {-# SPECIALIZE decimalDigitsPtr :: Word -> Addr# -> Offset Word8 -> Offset Word8 -> (# Word, Bool, Offset Word8 #) #-}
 
+-- | A unicode string size may vary during a case conversion operation.
+--   This function calculates the new buffer size for a case conversion.
+--   Returns Nothing if no case conversion is needed.
+caseConvertNBuff :: (Char -> CM) -> String -> Maybe (CountOf Word8)
+caseConvertNBuff op s@(String ba) = runST $ Vec.unsafeIndexer ba go
+  where
+    !sz = size s
+    !end = azero `offsetPlusE` sz
+    go :: (Offset Word8 -> Word8) -> ST st (Maybe (CountOf Word8))
+    go getIdx = loop (Offset 0) 0 False
+      where
+        !nextI = nextWithIndexer getIdx
+        eSize !e = if e == '\0' 
+                      then 0
+                      else charToBytes (fromEnum e)
+        loop !idx ns changed 
+            | idx == end = if changed
+                             then return $ Just ns
+                             else return Nothing
+            | otherwise = do
+                let !(c, idx') = nextI idx
+                    !cm@(CM c1 c2 c3) = op c 
+                    !cSize = if c2 == '\0' -- if c2 is empty, c3 will be empty as well.
+                              then charToBytes (fromEnum c1) 
+                              else eSize c1 + eSize c2 + eSize c3
+                    !nchanged = changed || c1 /= c || c2 /= '\0'
+                loop idx' (ns + cSize) nchanged
+
+-- | Convert a 'String' 'Char' by 'Char' using a case mapping function. 
+caseConvert :: (Char -> CM) -> String -> String
+caseConvert op s@(String ba) 
+  = case nBuff of
+      Nothing -> s
+      Just nLen -> runST $ unsafeCopyFrom s nLen go
+  where
+    !nBuff = caseConvertNBuff op s
+    go :: String -> Offset Char -> Offset8 -> MutableString s -> Offset8 -> ST s (Offset8, Offset8)
+    go src' srcI srcIdx dst dstIdx = do
+      let !(CM c1 c2 c3) = op c 
+      dstIdx <- write dst dstIdx c1
+      nextDstIdx <- 
+        if c2 == '\0' -- We don't want to check C3 if C2 is empty.
+          then return dstIdx
+          else do
+            dstIdx  <- writeValidChar c2 dstIdx
+            writeValidChar c3 dstIdx
+      return (nextSrcIdx, nextDstIdx)
+          where
+            !(Step c nextSrcIdx) = next src' srcIdx
+            writeValidChar cc wIdx =
+                if cc == '\0'
+                    then return wIdx 
+                else do
+                    write dst wIdx cc
+
 -- | Convert a 'String' to the upper-case equivalent.
---   Does not properly support multicharacter Unicode conversions.
 upper :: String -> String
-upper = charMap toUpper
+upper = caseConvert upperMapping
 
 -- | Convert a 'String' to the upper-case equivalent.
---   Does not properly support multicharacter Unicode conversions.
 lower :: String -> String
-lower = charMap toLower
+lower = caseConvert lowerMapping
 
 -- | Check whether the first string is a prefix of the second string.
 isPrefixOf :: String -> String -> Bool
diff --git a/Basement/String/Builder.hs b/Basement/String/Builder.hs
new file mode 100644
--- /dev/null
+++ b/Basement/String/Builder.hs
@@ -0,0 +1,51 @@
+-- |
+-- Module      : Basement.String.Builder
+-- License     : BSD-style
+-- Maintainer  : Foundation
+--
+-- String builder
+
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+
+module Basement.String.Builder
+    ( Builder
+    , run
+    , runUnsafe
+
+    -- * Emit functions
+    , emit
+    , emitChar
+    ) where
+
+
+import qualified Basement.Block.Base as Block (length)
+import qualified Basement.Block.Builder as Block
+import           Basement.Compat.Base
+import           Basement.Compat.Semigroup
+import           Basement.Monad
+import           Basement.String (String, ValidationFailure, Encoding (UTF8), fromBytes)
+import           Basement.UArray.Base (UArray)
+import qualified Basement.UArray.Base as A
+
+newtype Builder = Builder Block.Builder
+  deriving (Semigroup, Monoid)
+
+run :: PrimMonad prim => Builder -> prim (String, Maybe ValidationFailure, UArray Word8)
+run (Builder builder) = do
+    block <- Block.run builder
+    let array = A.UArray 0 (Block.length block) (A.UArrayBA block)
+    pure $ fromBytes UTF8 array
+
+-- | run the given builder and return the generated String
+--
+-- prefer `run`
+runUnsafe :: PrimMonad prim => Builder -> prim String
+runUnsafe (Builder builder) = Block.unsafeRunString builder
+
+-- | add a string in the builder
+emit :: String -> Builder
+emit = Builder . Block.emitString
+
+-- | emit a UTF8 char in the builder
+emitChar :: Char -> Builder
+emitChar = Builder . Block.emitUTF8Char
diff --git a/Basement/String/CaseMapping.hs b/Basement/String/CaseMapping.hs
new file mode 100644
--- /dev/null
+++ b/Basement/String/CaseMapping.hs
@@ -0,0 +1,3240 @@
+{-# LANGUAGE Rank2Types #-}
+-- AUTOMATICALLY GENERATED - DO NOT EDIT
+-- Generated by scripts/caseMapping/generateCaseMapping.sh
+-- CaseFolding-10.0.0.txt
+-- Date: 2017-04-14, 05:40:18 GMT
+-- SpecialCasing-10.0.0.txt
+-- Date: 2017-04-14, 05:40:43 GMT
+
+module Basement.String.CaseMapping where
+
+import Data.Char
+import Basement.UTF8.Types
+
+upperMapping :: Char -> CM
+{-# NOINLINE upperMapping #-}
+-- LATIN SMALL LETTER SHARP S
+upperMapping '\x00DF' = CM '\x0053' '\x0053' '\0'
+-- LATIN SMALL LIGATURE FF
+upperMapping '\xFB00' = CM '\x0046' '\x0046' '\0'
+-- LATIN SMALL LIGATURE FI
+upperMapping '\xFB01' = CM '\x0046' '\x0049' '\0'
+-- LATIN SMALL LIGATURE FL
+upperMapping '\xFB02' = CM '\x0046' '\x004C' '\0'
+-- LATIN SMALL LIGATURE FFI
+upperMapping '\xFB03' = CM '\x0046' '\x0046' '\x0049'
+-- LATIN SMALL LIGATURE FFL
+upperMapping '\xFB04' = CM '\x0046' '\x0046' '\x004C'
+-- LATIN SMALL LIGATURE LONG S T
+upperMapping '\xFB05' = CM '\x0053' '\x0054' '\0'
+-- LATIN SMALL LIGATURE ST
+upperMapping '\xFB06' = CM '\x0053' '\x0054' '\0'
+-- ARMENIAN SMALL LIGATURE ECH YIWN
+upperMapping '\x0587' = CM '\x0535' '\x0552' '\0'
+-- ARMENIAN SMALL LIGATURE MEN NOW
+upperMapping '\xFB13' = CM '\x0544' '\x0546' '\0'
+-- ARMENIAN SMALL LIGATURE MEN ECH
+upperMapping '\xFB14' = CM '\x0544' '\x0535' '\0'
+-- ARMENIAN SMALL LIGATURE MEN INI
+upperMapping '\xFB15' = CM '\x0544' '\x053B' '\0'
+-- ARMENIAN SMALL LIGATURE VEW NOW
+upperMapping '\xFB16' = CM '\x054E' '\x0546' '\0'
+-- ARMENIAN SMALL LIGATURE MEN XEH
+upperMapping '\xFB17' = CM '\x0544' '\x053D' '\0'
+-- LATIN SMALL LETTER N PRECEDED BY APOSTROPHE
+upperMapping '\x0149' = CM '\x02BC' '\x004E' '\0'
+-- GREEK SMALL LETTER IOTA WITH DIALYTIKA AND TONOS
+upperMapping '\x0390' = CM '\x0399' '\x0308' '\x0301'
+-- GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND TONOS
+upperMapping '\x03B0' = CM '\x03A5' '\x0308' '\x0301'
+-- LATIN SMALL LETTER J WITH CARON
+upperMapping '\x01F0' = CM '\x004A' '\x030C' '\0'
+-- LATIN SMALL LETTER H WITH LINE BELOW
+upperMapping '\x1E96' = CM '\x0048' '\x0331' '\0'
+-- LATIN SMALL LETTER T WITH DIAERESIS
+upperMapping '\x1E97' = CM '\x0054' '\x0308' '\0'
+-- LATIN SMALL LETTER W WITH RING ABOVE
+upperMapping '\x1E98' = CM '\x0057' '\x030A' '\0'
+-- LATIN SMALL LETTER Y WITH RING ABOVE
+upperMapping '\x1E99' = CM '\x0059' '\x030A' '\0'
+-- LATIN SMALL LETTER A WITH RIGHT HALF RING
+upperMapping '\x1E9A' = CM '\x0041' '\x02BE' '\0'
+-- GREEK SMALL LETTER UPSILON WITH PSILI
+upperMapping '\x1F50' = CM '\x03A5' '\x0313' '\0'
+-- GREEK SMALL LETTER UPSILON WITH PSILI AND VARIA
+upperMapping '\x1F52' = CM '\x03A5' '\x0313' '\x0300'
+-- GREEK SMALL LETTER UPSILON WITH PSILI AND OXIA
+upperMapping '\x1F54' = CM '\x03A5' '\x0313' '\x0301'
+-- GREEK SMALL LETTER UPSILON WITH PSILI AND PERISPOMENI
+upperMapping '\x1F56' = CM '\x03A5' '\x0313' '\x0342'
+-- GREEK SMALL LETTER ALPHA WITH PERISPOMENI
+upperMapping '\x1FB6' = CM '\x0391' '\x0342' '\0'
+-- GREEK SMALL LETTER ETA WITH PERISPOMENI
+upperMapping '\x1FC6' = CM '\x0397' '\x0342' '\0'
+-- GREEK SMALL LETTER IOTA WITH DIALYTIKA AND VARIA
+upperMapping '\x1FD2' = CM '\x0399' '\x0308' '\x0300'
+-- GREEK SMALL LETTER IOTA WITH DIALYTIKA AND OXIA
+upperMapping '\x1FD3' = CM '\x0399' '\x0308' '\x0301'
+-- GREEK SMALL LETTER IOTA WITH PERISPOMENI
+upperMapping '\x1FD6' = CM '\x0399' '\x0342' '\0'
+-- GREEK SMALL LETTER IOTA WITH DIALYTIKA AND PERISPOMENI
+upperMapping '\x1FD7' = CM '\x0399' '\x0308' '\x0342'
+-- GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND VARIA
+upperMapping '\x1FE2' = CM '\x03A5' '\x0308' '\x0300'
+-- GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND OXIA
+upperMapping '\x1FE3' = CM '\x03A5' '\x0308' '\x0301'
+-- GREEK SMALL LETTER RHO WITH PSILI
+upperMapping '\x1FE4' = CM '\x03A1' '\x0313' '\0'
+-- GREEK SMALL LETTER UPSILON WITH PERISPOMENI
+upperMapping '\x1FE6' = CM '\x03A5' '\x0342' '\0'
+-- GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND PERISPOMENI
+upperMapping '\x1FE7' = CM '\x03A5' '\x0308' '\x0342'
+-- GREEK SMALL LETTER OMEGA WITH PERISPOMENI
+upperMapping '\x1FF6' = CM '\x03A9' '\x0342' '\0'
+-- GREEK SMALL LETTER ALPHA WITH PSILI AND YPOGEGRAMMENI
+upperMapping '\x1F80' = CM '\x1F08' '\x0399' '\0'
+-- GREEK SMALL LETTER ALPHA WITH DASIA AND YPOGEGRAMMENI
+upperMapping '\x1F81' = CM '\x1F09' '\x0399' '\0'
+-- GREEK SMALL LETTER ALPHA WITH PSILI AND VARIA AND YPOGEGRAMMENI
+upperMapping '\x1F82' = CM '\x1F0A' '\x0399' '\0'
+-- GREEK SMALL LETTER ALPHA WITH DASIA AND VARIA AND YPOGEGRAMMENI
+upperMapping '\x1F83' = CM '\x1F0B' '\x0399' '\0'
+-- GREEK SMALL LETTER ALPHA WITH PSILI AND OXIA AND YPOGEGRAMMENI
+upperMapping '\x1F84' = CM '\x1F0C' '\x0399' '\0'
+-- GREEK SMALL LETTER ALPHA WITH DASIA AND OXIA AND YPOGEGRAMMENI
+upperMapping '\x1F85' = CM '\x1F0D' '\x0399' '\0'
+-- GREEK SMALL LETTER ALPHA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI
+upperMapping '\x1F86' = CM '\x1F0E' '\x0399' '\0'
+-- GREEK SMALL LETTER ALPHA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI
+upperMapping '\x1F87' = CM '\x1F0F' '\x0399' '\0'
+-- GREEK CAPITAL LETTER ALPHA WITH PSILI AND PROSGEGRAMMENI
+upperMapping '\x1F88' = CM '\x1F08' '\x0399' '\0'
+-- GREEK CAPITAL LETTER ALPHA WITH DASIA AND PROSGEGRAMMENI
+upperMapping '\x1F89' = CM '\x1F09' '\x0399' '\0'
+-- GREEK CAPITAL LETTER ALPHA WITH PSILI AND VARIA AND PROSGEGRAMMENI
+upperMapping '\x1F8A' = CM '\x1F0A' '\x0399' '\0'
+-- GREEK CAPITAL LETTER ALPHA WITH DASIA AND VARIA AND PROSGEGRAMMENI
+upperMapping '\x1F8B' = CM '\x1F0B' '\x0399' '\0'
+-- GREEK CAPITAL LETTER ALPHA WITH PSILI AND OXIA AND PROSGEGRAMMENI
+upperMapping '\x1F8C' = CM '\x1F0C' '\x0399' '\0'
+-- GREEK CAPITAL LETTER ALPHA WITH DASIA AND OXIA AND PROSGEGRAMMENI
+upperMapping '\x1F8D' = CM '\x1F0D' '\x0399' '\0'
+-- GREEK CAPITAL LETTER ALPHA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI
+upperMapping '\x1F8E' = CM '\x1F0E' '\x0399' '\0'
+-- GREEK CAPITAL LETTER ALPHA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI
+upperMapping '\x1F8F' = CM '\x1F0F' '\x0399' '\0'
+-- GREEK SMALL LETTER ETA WITH PSILI AND YPOGEGRAMMENI
+upperMapping '\x1F90' = CM '\x1F28' '\x0399' '\0'
+-- GREEK SMALL LETTER ETA WITH DASIA AND YPOGEGRAMMENI
+upperMapping '\x1F91' = CM '\x1F29' '\x0399' '\0'
+-- GREEK SMALL LETTER ETA WITH PSILI AND VARIA AND YPOGEGRAMMENI
+upperMapping '\x1F92' = CM '\x1F2A' '\x0399' '\0'
+-- GREEK SMALL LETTER ETA WITH DASIA AND VARIA AND YPOGEGRAMMENI
+upperMapping '\x1F93' = CM '\x1F2B' '\x0399' '\0'
+-- GREEK SMALL LETTER ETA WITH PSILI AND OXIA AND YPOGEGRAMMENI
+upperMapping '\x1F94' = CM '\x1F2C' '\x0399' '\0'
+-- GREEK SMALL LETTER ETA WITH DASIA AND OXIA AND YPOGEGRAMMENI
+upperMapping '\x1F95' = CM '\x1F2D' '\x0399' '\0'
+-- GREEK SMALL LETTER ETA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI
+upperMapping '\x1F96' = CM '\x1F2E' '\x0399' '\0'
+-- GREEK SMALL LETTER ETA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI
+upperMapping '\x1F97' = CM '\x1F2F' '\x0399' '\0'
+-- GREEK CAPITAL LETTER ETA WITH PSILI AND PROSGEGRAMMENI
+upperMapping '\x1F98' = CM '\x1F28' '\x0399' '\0'
+-- GREEK CAPITAL LETTER ETA WITH DASIA AND PROSGEGRAMMENI
+upperMapping '\x1F99' = CM '\x1F29' '\x0399' '\0'
+-- GREEK CAPITAL LETTER ETA WITH PSILI AND VARIA AND PROSGEGRAMMENI
+upperMapping '\x1F9A' = CM '\x1F2A' '\x0399' '\0'
+-- GREEK CAPITAL LETTER ETA WITH DASIA AND VARIA AND PROSGEGRAMMENI
+upperMapping '\x1F9B' = CM '\x1F2B' '\x0399' '\0'
+-- GREEK CAPITAL LETTER ETA WITH PSILI AND OXIA AND PROSGEGRAMMENI
+upperMapping '\x1F9C' = CM '\x1F2C' '\x0399' '\0'
+-- GREEK CAPITAL LETTER ETA WITH DASIA AND OXIA AND PROSGEGRAMMENI
+upperMapping '\x1F9D' = CM '\x1F2D' '\x0399' '\0'
+-- GREEK CAPITAL LETTER ETA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI
+upperMapping '\x1F9E' = CM '\x1F2E' '\x0399' '\0'
+-- GREEK CAPITAL LETTER ETA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI
+upperMapping '\x1F9F' = CM '\x1F2F' '\x0399' '\0'
+-- GREEK SMALL LETTER OMEGA WITH PSILI AND YPOGEGRAMMENI
+upperMapping '\x1FA0' = CM '\x1F68' '\x0399' '\0'
+-- GREEK SMALL LETTER OMEGA WITH DASIA AND YPOGEGRAMMENI
+upperMapping '\x1FA1' = CM '\x1F69' '\x0399' '\0'
+-- GREEK SMALL LETTER OMEGA WITH PSILI AND VARIA AND YPOGEGRAMMENI
+upperMapping '\x1FA2' = CM '\x1F6A' '\x0399' '\0'
+-- GREEK SMALL LETTER OMEGA WITH DASIA AND VARIA AND YPOGEGRAMMENI
+upperMapping '\x1FA3' = CM '\x1F6B' '\x0399' '\0'
+-- GREEK SMALL LETTER OMEGA WITH PSILI AND OXIA AND YPOGEGRAMMENI
+upperMapping '\x1FA4' = CM '\x1F6C' '\x0399' '\0'
+-- GREEK SMALL LETTER OMEGA WITH DASIA AND OXIA AND YPOGEGRAMMENI
+upperMapping '\x1FA5' = CM '\x1F6D' '\x0399' '\0'
+-- GREEK SMALL LETTER OMEGA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI
+upperMapping '\x1FA6' = CM '\x1F6E' '\x0399' '\0'
+-- GREEK SMALL LETTER OMEGA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI
+upperMapping '\x1FA7' = CM '\x1F6F' '\x0399' '\0'
+-- GREEK CAPITAL LETTER OMEGA WITH PSILI AND PROSGEGRAMMENI
+upperMapping '\x1FA8' = CM '\x1F68' '\x0399' '\0'
+-- GREEK CAPITAL LETTER OMEGA WITH DASIA AND PROSGEGRAMMENI
+upperMapping '\x1FA9' = CM '\x1F69' '\x0399' '\0'
+-- GREEK CAPITAL LETTER OMEGA WITH PSILI AND VARIA AND PROSGEGRAMMENI
+upperMapping '\x1FAA' = CM '\x1F6A' '\x0399' '\0'
+-- GREEK CAPITAL LETTER OMEGA WITH DASIA AND VARIA AND PROSGEGRAMMENI
+upperMapping '\x1FAB' = CM '\x1F6B' '\x0399' '\0'
+-- GREEK CAPITAL LETTER OMEGA WITH PSILI AND OXIA AND PROSGEGRAMMENI
+upperMapping '\x1FAC' = CM '\x1F6C' '\x0399' '\0'
+-- GREEK CAPITAL LETTER OMEGA WITH DASIA AND OXIA AND PROSGEGRAMMENI
+upperMapping '\x1FAD' = CM '\x1F6D' '\x0399' '\0'
+-- GREEK CAPITAL LETTER OMEGA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI
+upperMapping '\x1FAE' = CM '\x1F6E' '\x0399' '\0'
+-- GREEK CAPITAL LETTER OMEGA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI
+upperMapping '\x1FAF' = CM '\x1F6F' '\x0399' '\0'
+-- GREEK SMALL LETTER ALPHA WITH YPOGEGRAMMENI
+upperMapping '\x1FB3' = CM '\x0391' '\x0399' '\0'
+-- GREEK CAPITAL LETTER ALPHA WITH PROSGEGRAMMENI
+upperMapping '\x1FBC' = CM '\x0391' '\x0399' '\0'
+-- GREEK SMALL LETTER ETA WITH YPOGEGRAMMENI
+upperMapping '\x1FC3' = CM '\x0397' '\x0399' '\0'
+-- GREEK CAPITAL LETTER ETA WITH PROSGEGRAMMENI
+upperMapping '\x1FCC' = CM '\x0397' '\x0399' '\0'
+-- GREEK SMALL LETTER OMEGA WITH YPOGEGRAMMENI
+upperMapping '\x1FF3' = CM '\x03A9' '\x0399' '\0'
+-- GREEK CAPITAL LETTER OMEGA WITH PROSGEGRAMMENI
+upperMapping '\x1FFC' = CM '\x03A9' '\x0399' '\0'
+-- GREEK SMALL LETTER ALPHA WITH VARIA AND YPOGEGRAMMENI
+upperMapping '\x1FB2' = CM '\x1FBA' '\x0399' '\0'
+-- GREEK SMALL LETTER ALPHA WITH OXIA AND YPOGEGRAMMENI
+upperMapping '\x1FB4' = CM '\x0386' '\x0399' '\0'
+-- GREEK SMALL LETTER ETA WITH VARIA AND YPOGEGRAMMENI
+upperMapping '\x1FC2' = CM '\x1FCA' '\x0399' '\0'
+-- GREEK SMALL LETTER ETA WITH OXIA AND YPOGEGRAMMENI
+upperMapping '\x1FC4' = CM '\x0389' '\x0399' '\0'
+-- GREEK SMALL LETTER OMEGA WITH VARIA AND YPOGEGRAMMENI
+upperMapping '\x1FF2' = CM '\x1FFA' '\x0399' '\0'
+-- GREEK SMALL LETTER OMEGA WITH OXIA AND YPOGEGRAMMENI
+upperMapping '\x1FF4' = CM '\x038F' '\x0399' '\0'
+-- GREEK SMALL LETTER ALPHA WITH PERISPOMENI AND YPOGEGRAMMENI
+upperMapping '\x1FB7' = CM '\x0391' '\x0342' '\x0399'
+-- GREEK SMALL LETTER ETA WITH PERISPOMENI AND YPOGEGRAMMENI
+upperMapping '\x1FC7' = CM '\x0397' '\x0342' '\x0399'
+-- GREEK SMALL LETTER OMEGA WITH PERISPOMENI AND YPOGEGRAMMENI
+upperMapping '\x1FF7' = CM '\x03A9' '\x0342' '\x0399'
+upperMapping c = CM (toUpper c) '\0' '\0'
+
+lowerMapping :: Char -> CM
+{-# NOINLINE lowerMapping #-}
+-- LATIN CAPITAL LETTER I WITH DOT ABOVE
+lowerMapping '\x0130' = CM '\x0069' '\x0307' '\0'
+-- GREEK CAPITAL LETTER ALPHA WITH PSILI AND PROSGEGRAMMENI
+lowerMapping '\x1F88' = CM '\x1F80' '\0' '\0'
+-- GREEK CAPITAL LETTER ALPHA WITH DASIA AND PROSGEGRAMMENI
+lowerMapping '\x1F89' = CM '\x1F81' '\0' '\0'
+-- GREEK CAPITAL LETTER ALPHA WITH PSILI AND VARIA AND PROSGEGRAMMENI
+lowerMapping '\x1F8A' = CM '\x1F82' '\0' '\0'
+-- GREEK CAPITAL LETTER ALPHA WITH DASIA AND VARIA AND PROSGEGRAMMENI
+lowerMapping '\x1F8B' = CM '\x1F83' '\0' '\0'
+-- GREEK CAPITAL LETTER ALPHA WITH PSILI AND OXIA AND PROSGEGRAMMENI
+lowerMapping '\x1F8C' = CM '\x1F84' '\0' '\0'
+-- GREEK CAPITAL LETTER ALPHA WITH DASIA AND OXIA AND PROSGEGRAMMENI
+lowerMapping '\x1F8D' = CM '\x1F85' '\0' '\0'
+-- GREEK CAPITAL LETTER ALPHA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI
+lowerMapping '\x1F8E' = CM '\x1F86' '\0' '\0'
+-- GREEK CAPITAL LETTER ALPHA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI
+lowerMapping '\x1F8F' = CM '\x1F87' '\0' '\0'
+-- GREEK CAPITAL LETTER ETA WITH PSILI AND PROSGEGRAMMENI
+lowerMapping '\x1F98' = CM '\x1F90' '\0' '\0'
+-- GREEK CAPITAL LETTER ETA WITH DASIA AND PROSGEGRAMMENI
+lowerMapping '\x1F99' = CM '\x1F91' '\0' '\0'
+-- GREEK CAPITAL LETTER ETA WITH PSILI AND VARIA AND PROSGEGRAMMENI
+lowerMapping '\x1F9A' = CM '\x1F92' '\0' '\0'
+-- GREEK CAPITAL LETTER ETA WITH DASIA AND VARIA AND PROSGEGRAMMENI
+lowerMapping '\x1F9B' = CM '\x1F93' '\0' '\0'
+-- GREEK CAPITAL LETTER ETA WITH PSILI AND OXIA AND PROSGEGRAMMENI
+lowerMapping '\x1F9C' = CM '\x1F94' '\0' '\0'
+-- GREEK CAPITAL LETTER ETA WITH DASIA AND OXIA AND PROSGEGRAMMENI
+lowerMapping '\x1F9D' = CM '\x1F95' '\0' '\0'
+-- GREEK CAPITAL LETTER ETA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI
+lowerMapping '\x1F9E' = CM '\x1F96' '\0' '\0'
+-- GREEK CAPITAL LETTER ETA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI
+lowerMapping '\x1F9F' = CM '\x1F97' '\0' '\0'
+-- GREEK CAPITAL LETTER OMEGA WITH PSILI AND PROSGEGRAMMENI
+lowerMapping '\x1FA8' = CM '\x1FA0' '\0' '\0'
+-- GREEK CAPITAL LETTER OMEGA WITH DASIA AND PROSGEGRAMMENI
+lowerMapping '\x1FA9' = CM '\x1FA1' '\0' '\0'
+-- GREEK CAPITAL LETTER OMEGA WITH PSILI AND VARIA AND PROSGEGRAMMENI
+lowerMapping '\x1FAA' = CM '\x1FA2' '\0' '\0'
+-- GREEK CAPITAL LETTER OMEGA WITH DASIA AND VARIA AND PROSGEGRAMMENI
+lowerMapping '\x1FAB' = CM '\x1FA3' '\0' '\0'
+-- GREEK CAPITAL LETTER OMEGA WITH PSILI AND OXIA AND PROSGEGRAMMENI
+lowerMapping '\x1FAC' = CM '\x1FA4' '\0' '\0'
+-- GREEK CAPITAL LETTER OMEGA WITH DASIA AND OXIA AND PROSGEGRAMMENI
+lowerMapping '\x1FAD' = CM '\x1FA5' '\0' '\0'
+-- GREEK CAPITAL LETTER OMEGA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI
+lowerMapping '\x1FAE' = CM '\x1FA6' '\0' '\0'
+-- GREEK CAPITAL LETTER OMEGA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI
+lowerMapping '\x1FAF' = CM '\x1FA7' '\0' '\0'
+-- GREEK CAPITAL LETTER ALPHA WITH PROSGEGRAMMENI
+lowerMapping '\x1FBC' = CM '\x1FB3' '\0' '\0'
+-- GREEK CAPITAL LETTER ETA WITH PROSGEGRAMMENI
+lowerMapping '\x1FCC' = CM '\x1FC3' '\0' '\0'
+-- GREEK CAPITAL LETTER OMEGA WITH PROSGEGRAMMENI
+lowerMapping '\x1FFC' = CM '\x1FF3' '\0' '\0'
+lowerMapping c = CM (toLower c) '\0' '\0'
+
+titleMapping :: Char -> CM
+{-# NOINLINE titleMapping #-}
+-- LATIN SMALL LETTER SHARP S
+titleMapping '\x00DF' = CM '\x0053' '\x0073' '\0'
+-- LATIN SMALL LIGATURE FF
+titleMapping '\xFB00' = CM '\x0046' '\x0066' '\0'
+-- LATIN SMALL LIGATURE FI
+titleMapping '\xFB01' = CM '\x0046' '\x0069' '\0'
+-- LATIN SMALL LIGATURE FL
+titleMapping '\xFB02' = CM '\x0046' '\x006C' '\0'
+-- LATIN SMALL LIGATURE FFI
+titleMapping '\xFB03' = CM '\x0046' '\x0066' '\x0069'
+-- LATIN SMALL LIGATURE FFL
+titleMapping '\xFB04' = CM '\x0046' '\x0066' '\x006C'
+-- LATIN SMALL LIGATURE LONG S T
+titleMapping '\xFB05' = CM '\x0053' '\x0074' '\0'
+-- LATIN SMALL LIGATURE ST
+titleMapping '\xFB06' = CM '\x0053' '\x0074' '\0'
+-- ARMENIAN SMALL LIGATURE ECH YIWN
+titleMapping '\x0587' = CM '\x0535' '\x0582' '\0'
+-- ARMENIAN SMALL LIGATURE MEN NOW
+titleMapping '\xFB13' = CM '\x0544' '\x0576' '\0'
+-- ARMENIAN SMALL LIGATURE MEN ECH
+titleMapping '\xFB14' = CM '\x0544' '\x0565' '\0'
+-- ARMENIAN SMALL LIGATURE MEN INI
+titleMapping '\xFB15' = CM '\x0544' '\x056B' '\0'
+-- ARMENIAN SMALL LIGATURE VEW NOW
+titleMapping '\xFB16' = CM '\x054E' '\x0576' '\0'
+-- ARMENIAN SMALL LIGATURE MEN XEH
+titleMapping '\xFB17' = CM '\x0544' '\x056D' '\0'
+-- LATIN SMALL LETTER N PRECEDED BY APOSTROPHE
+titleMapping '\x0149' = CM '\x02BC' '\x004E' '\0'
+-- GREEK SMALL LETTER IOTA WITH DIALYTIKA AND TONOS
+titleMapping '\x0390' = CM '\x0399' '\x0308' '\x0301'
+-- GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND TONOS
+titleMapping '\x03B0' = CM '\x03A5' '\x0308' '\x0301'
+-- LATIN SMALL LETTER J WITH CARON
+titleMapping '\x01F0' = CM '\x004A' '\x030C' '\0'
+-- LATIN SMALL LETTER H WITH LINE BELOW
+titleMapping '\x1E96' = CM '\x0048' '\x0331' '\0'
+-- LATIN SMALL LETTER T WITH DIAERESIS
+titleMapping '\x1E97' = CM '\x0054' '\x0308' '\0'
+-- LATIN SMALL LETTER W WITH RING ABOVE
+titleMapping '\x1E98' = CM '\x0057' '\x030A' '\0'
+-- LATIN SMALL LETTER Y WITH RING ABOVE
+titleMapping '\x1E99' = CM '\x0059' '\x030A' '\0'
+-- LATIN SMALL LETTER A WITH RIGHT HALF RING
+titleMapping '\x1E9A' = CM '\x0041' '\x02BE' '\0'
+-- GREEK SMALL LETTER UPSILON WITH PSILI
+titleMapping '\x1F50' = CM '\x03A5' '\x0313' '\0'
+-- GREEK SMALL LETTER UPSILON WITH PSILI AND VARIA
+titleMapping '\x1F52' = CM '\x03A5' '\x0313' '\x0300'
+-- GREEK SMALL LETTER UPSILON WITH PSILI AND OXIA
+titleMapping '\x1F54' = CM '\x03A5' '\x0313' '\x0301'
+-- GREEK SMALL LETTER UPSILON WITH PSILI AND PERISPOMENI
+titleMapping '\x1F56' = CM '\x03A5' '\x0313' '\x0342'
+-- GREEK SMALL LETTER ALPHA WITH PERISPOMENI
+titleMapping '\x1FB6' = CM '\x0391' '\x0342' '\0'
+-- GREEK SMALL LETTER ETA WITH PERISPOMENI
+titleMapping '\x1FC6' = CM '\x0397' '\x0342' '\0'
+-- GREEK SMALL LETTER IOTA WITH DIALYTIKA AND VARIA
+titleMapping '\x1FD2' = CM '\x0399' '\x0308' '\x0300'
+-- GREEK SMALL LETTER IOTA WITH DIALYTIKA AND OXIA
+titleMapping '\x1FD3' = CM '\x0399' '\x0308' '\x0301'
+-- GREEK SMALL LETTER IOTA WITH PERISPOMENI
+titleMapping '\x1FD6' = CM '\x0399' '\x0342' '\0'
+-- GREEK SMALL LETTER IOTA WITH DIALYTIKA AND PERISPOMENI
+titleMapping '\x1FD7' = CM '\x0399' '\x0308' '\x0342'
+-- GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND VARIA
+titleMapping '\x1FE2' = CM '\x03A5' '\x0308' '\x0300'
+-- GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND OXIA
+titleMapping '\x1FE3' = CM '\x03A5' '\x0308' '\x0301'
+-- GREEK SMALL LETTER RHO WITH PSILI
+titleMapping '\x1FE4' = CM '\x03A1' '\x0313' '\0'
+-- GREEK SMALL LETTER UPSILON WITH PERISPOMENI
+titleMapping '\x1FE6' = CM '\x03A5' '\x0342' '\0'
+-- GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND PERISPOMENI
+titleMapping '\x1FE7' = CM '\x03A5' '\x0308' '\x0342'
+-- GREEK SMALL LETTER OMEGA WITH PERISPOMENI
+titleMapping '\x1FF6' = CM '\x03A9' '\x0342' '\0'
+-- GREEK SMALL LETTER ALPHA WITH PSILI AND YPOGEGRAMMENI
+titleMapping '\x1F80' = CM '\x1F88' '\0' '\0'
+-- GREEK SMALL LETTER ALPHA WITH DASIA AND YPOGEGRAMMENI
+titleMapping '\x1F81' = CM '\x1F89' '\0' '\0'
+-- GREEK SMALL LETTER ALPHA WITH PSILI AND VARIA AND YPOGEGRAMMENI
+titleMapping '\x1F82' = CM '\x1F8A' '\0' '\0'
+-- GREEK SMALL LETTER ALPHA WITH DASIA AND VARIA AND YPOGEGRAMMENI
+titleMapping '\x1F83' = CM '\x1F8B' '\0' '\0'
+-- GREEK SMALL LETTER ALPHA WITH PSILI AND OXIA AND YPOGEGRAMMENI
+titleMapping '\x1F84' = CM '\x1F8C' '\0' '\0'
+-- GREEK SMALL LETTER ALPHA WITH DASIA AND OXIA AND YPOGEGRAMMENI
+titleMapping '\x1F85' = CM '\x1F8D' '\0' '\0'
+-- GREEK SMALL LETTER ALPHA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI
+titleMapping '\x1F86' = CM '\x1F8E' '\0' '\0'
+-- GREEK SMALL LETTER ALPHA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI
+titleMapping '\x1F87' = CM '\x1F8F' '\0' '\0'
+-- GREEK SMALL LETTER ETA WITH PSILI AND YPOGEGRAMMENI
+titleMapping '\x1F90' = CM '\x1F98' '\0' '\0'
+-- GREEK SMALL LETTER ETA WITH DASIA AND YPOGEGRAMMENI
+titleMapping '\x1F91' = CM '\x1F99' '\0' '\0'
+-- GREEK SMALL LETTER ETA WITH PSILI AND VARIA AND YPOGEGRAMMENI
+titleMapping '\x1F92' = CM '\x1F9A' '\0' '\0'
+-- GREEK SMALL LETTER ETA WITH DASIA AND VARIA AND YPOGEGRAMMENI
+titleMapping '\x1F93' = CM '\x1F9B' '\0' '\0'
+-- GREEK SMALL LETTER ETA WITH PSILI AND OXIA AND YPOGEGRAMMENI
+titleMapping '\x1F94' = CM '\x1F9C' '\0' '\0'
+-- GREEK SMALL LETTER ETA WITH DASIA AND OXIA AND YPOGEGRAMMENI
+titleMapping '\x1F95' = CM '\x1F9D' '\0' '\0'
+-- GREEK SMALL LETTER ETA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI
+titleMapping '\x1F96' = CM '\x1F9E' '\0' '\0'
+-- GREEK SMALL LETTER ETA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI
+titleMapping '\x1F97' = CM '\x1F9F' '\0' '\0'
+-- GREEK SMALL LETTER OMEGA WITH PSILI AND YPOGEGRAMMENI
+titleMapping '\x1FA0' = CM '\x1FA8' '\0' '\0'
+-- GREEK SMALL LETTER OMEGA WITH DASIA AND YPOGEGRAMMENI
+titleMapping '\x1FA1' = CM '\x1FA9' '\0' '\0'
+-- GREEK SMALL LETTER OMEGA WITH PSILI AND VARIA AND YPOGEGRAMMENI
+titleMapping '\x1FA2' = CM '\x1FAA' '\0' '\0'
+-- GREEK SMALL LETTER OMEGA WITH DASIA AND VARIA AND YPOGEGRAMMENI
+titleMapping '\x1FA3' = CM '\x1FAB' '\0' '\0'
+-- GREEK SMALL LETTER OMEGA WITH PSILI AND OXIA AND YPOGEGRAMMENI
+titleMapping '\x1FA4' = CM '\x1FAC' '\0' '\0'
+-- GREEK SMALL LETTER OMEGA WITH DASIA AND OXIA AND YPOGEGRAMMENI
+titleMapping '\x1FA5' = CM '\x1FAD' '\0' '\0'
+-- GREEK SMALL LETTER OMEGA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI
+titleMapping '\x1FA6' = CM '\x1FAE' '\0' '\0'
+-- GREEK SMALL LETTER OMEGA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI
+titleMapping '\x1FA7' = CM '\x1FAF' '\0' '\0'
+-- GREEK SMALL LETTER ALPHA WITH YPOGEGRAMMENI
+titleMapping '\x1FB3' = CM '\x1FBC' '\0' '\0'
+-- GREEK SMALL LETTER ETA WITH YPOGEGRAMMENI
+titleMapping '\x1FC3' = CM '\x1FCC' '\0' '\0'
+-- GREEK SMALL LETTER OMEGA WITH YPOGEGRAMMENI
+titleMapping '\x1FF3' = CM '\x1FFC' '\0' '\0'
+-- GREEK SMALL LETTER ALPHA WITH VARIA AND YPOGEGRAMMENI
+titleMapping '\x1FB2' = CM '\x1FBA' '\x0345' '\0'
+-- GREEK SMALL LETTER ALPHA WITH OXIA AND YPOGEGRAMMENI
+titleMapping '\x1FB4' = CM '\x0386' '\x0345' '\0'
+-- GREEK SMALL LETTER ETA WITH VARIA AND YPOGEGRAMMENI
+titleMapping '\x1FC2' = CM '\x1FCA' '\x0345' '\0'
+-- GREEK SMALL LETTER ETA WITH OXIA AND YPOGEGRAMMENI
+titleMapping '\x1FC4' = CM '\x0389' '\x0345' '\0'
+-- GREEK SMALL LETTER OMEGA WITH VARIA AND YPOGEGRAMMENI
+titleMapping '\x1FF2' = CM '\x1FFA' '\x0345' '\0'
+-- GREEK SMALL LETTER OMEGA WITH OXIA AND YPOGEGRAMMENI
+titleMapping '\x1FF4' = CM '\x038F' '\x0345' '\0'
+-- GREEK SMALL LETTER ALPHA WITH PERISPOMENI AND YPOGEGRAMMENI
+titleMapping '\x1FB7' = CM '\x0391' '\x0342' '\x0345'
+-- GREEK SMALL LETTER ETA WITH PERISPOMENI AND YPOGEGRAMMENI
+titleMapping '\x1FC7' = CM '\x0397' '\x0342' '\x0345'
+-- GREEK SMALL LETTER OMEGA WITH PERISPOMENI AND YPOGEGRAMMENI
+titleMapping '\x1FF7' = CM '\x03A9' '\x0342' '\x0345'
+titleMapping c = CM (toTitle c) '\0' '\0'
+
+foldMapping :: Char -> CM
+{-# NOINLINE foldMapping #-}
+-- LATIN CAPITAL LETTER A
+foldMapping '\x0041' = CM '\x0061' '\0' '\0'
+-- LATIN CAPITAL LETTER B
+foldMapping '\x0042' = CM '\x0062' '\0' '\0'
+-- LATIN CAPITAL LETTER C
+foldMapping '\x0043' = CM '\x0063' '\0' '\0'
+-- LATIN CAPITAL LETTER D
+foldMapping '\x0044' = CM '\x0064' '\0' '\0'
+-- LATIN CAPITAL LETTER E
+foldMapping '\x0045' = CM '\x0065' '\0' '\0'
+-- LATIN CAPITAL LETTER F
+foldMapping '\x0046' = CM '\x0066' '\0' '\0'
+-- LATIN CAPITAL LETTER G
+foldMapping '\x0047' = CM '\x0067' '\0' '\0'
+-- LATIN CAPITAL LETTER H
+foldMapping '\x0048' = CM '\x0068' '\0' '\0'
+-- LATIN CAPITAL LETTER I
+foldMapping '\x0049' = CM '\x0069' '\0' '\0'
+-- LATIN CAPITAL LETTER J
+foldMapping '\x004A' = CM '\x006A' '\0' '\0'
+-- LATIN CAPITAL LETTER K
+foldMapping '\x004B' = CM '\x006B' '\0' '\0'
+-- LATIN CAPITAL LETTER L
+foldMapping '\x004C' = CM '\x006C' '\0' '\0'
+-- LATIN CAPITAL LETTER M
+foldMapping '\x004D' = CM '\x006D' '\0' '\0'
+-- LATIN CAPITAL LETTER N
+foldMapping '\x004E' = CM '\x006E' '\0' '\0'
+-- LATIN CAPITAL LETTER O
+foldMapping '\x004F' = CM '\x006F' '\0' '\0'
+-- LATIN CAPITAL LETTER P
+foldMapping '\x0050' = CM '\x0070' '\0' '\0'
+-- LATIN CAPITAL LETTER Q
+foldMapping '\x0051' = CM '\x0071' '\0' '\0'
+-- LATIN CAPITAL LETTER R
+foldMapping '\x0052' = CM '\x0072' '\0' '\0'
+-- LATIN CAPITAL LETTER S
+foldMapping '\x0053' = CM '\x0073' '\0' '\0'
+-- LATIN CAPITAL LETTER T
+foldMapping '\x0054' = CM '\x0074' '\0' '\0'
+-- LATIN CAPITAL LETTER U
+foldMapping '\x0055' = CM '\x0075' '\0' '\0'
+-- LATIN CAPITAL LETTER V
+foldMapping '\x0056' = CM '\x0076' '\0' '\0'
+-- LATIN CAPITAL LETTER W
+foldMapping '\x0057' = CM '\x0077' '\0' '\0'
+-- LATIN CAPITAL LETTER X
+foldMapping '\x0058' = CM '\x0078' '\0' '\0'
+-- LATIN CAPITAL LETTER Y
+foldMapping '\x0059' = CM '\x0079' '\0' '\0'
+-- LATIN CAPITAL LETTER Z
+foldMapping '\x005A' = CM '\x007A' '\0' '\0'
+-- MICRO SIGN
+foldMapping '\x00B5' = CM '\x03BC' '\0' '\0'
+-- LATIN CAPITAL LETTER A WITH GRAVE
+foldMapping '\x00C0' = CM '\x00E0' '\0' '\0'
+-- LATIN CAPITAL LETTER A WITH ACUTE
+foldMapping '\x00C1' = CM '\x00E1' '\0' '\0'
+-- LATIN CAPITAL LETTER A WITH CIRCUMFLEX
+foldMapping '\x00C2' = CM '\x00E2' '\0' '\0'
+-- LATIN CAPITAL LETTER A WITH TILDE
+foldMapping '\x00C3' = CM '\x00E3' '\0' '\0'
+-- LATIN CAPITAL LETTER A WITH DIAERESIS
+foldMapping '\x00C4' = CM '\x00E4' '\0' '\0'
+-- LATIN CAPITAL LETTER A WITH RING ABOVE
+foldMapping '\x00C5' = CM '\x00E5' '\0' '\0'
+-- LATIN CAPITAL LETTER AE
+foldMapping '\x00C6' = CM '\x00E6' '\0' '\0'
+-- LATIN CAPITAL LETTER C WITH CEDILLA
+foldMapping '\x00C7' = CM '\x00E7' '\0' '\0'
+-- LATIN CAPITAL LETTER E WITH GRAVE
+foldMapping '\x00C8' = CM '\x00E8' '\0' '\0'
+-- LATIN CAPITAL LETTER E WITH ACUTE
+foldMapping '\x00C9' = CM '\x00E9' '\0' '\0'
+-- LATIN CAPITAL LETTER E WITH CIRCUMFLEX
+foldMapping '\x00CA' = CM '\x00EA' '\0' '\0'
+-- LATIN CAPITAL LETTER E WITH DIAERESIS
+foldMapping '\x00CB' = CM '\x00EB' '\0' '\0'
+-- LATIN CAPITAL LETTER I WITH GRAVE
+foldMapping '\x00CC' = CM '\x00EC' '\0' '\0'
+-- LATIN CAPITAL LETTER I WITH ACUTE
+foldMapping '\x00CD' = CM '\x00ED' '\0' '\0'
+-- LATIN CAPITAL LETTER I WITH CIRCUMFLEX
+foldMapping '\x00CE' = CM '\x00EE' '\0' '\0'
+-- LATIN CAPITAL LETTER I WITH DIAERESIS
+foldMapping '\x00CF' = CM '\x00EF' '\0' '\0'
+-- LATIN CAPITAL LETTER ETH
+foldMapping '\x00D0' = CM '\x00F0' '\0' '\0'
+-- LATIN CAPITAL LETTER N WITH TILDE
+foldMapping '\x00D1' = CM '\x00F1' '\0' '\0'
+-- LATIN CAPITAL LETTER O WITH GRAVE
+foldMapping '\x00D2' = CM '\x00F2' '\0' '\0'
+-- LATIN CAPITAL LETTER O WITH ACUTE
+foldMapping '\x00D3' = CM '\x00F3' '\0' '\0'
+-- LATIN CAPITAL LETTER O WITH CIRCUMFLEX
+foldMapping '\x00D4' = CM '\x00F4' '\0' '\0'
+-- LATIN CAPITAL LETTER O WITH TILDE
+foldMapping '\x00D5' = CM '\x00F5' '\0' '\0'
+-- LATIN CAPITAL LETTER O WITH DIAERESIS
+foldMapping '\x00D6' = CM '\x00F6' '\0' '\0'
+-- LATIN CAPITAL LETTER O WITH STROKE
+foldMapping '\x00D8' = CM '\x00F8' '\0' '\0'
+-- LATIN CAPITAL LETTER U WITH GRAVE
+foldMapping '\x00D9' = CM '\x00F9' '\0' '\0'
+-- LATIN CAPITAL LETTER U WITH ACUTE
+foldMapping '\x00DA' = CM '\x00FA' '\0' '\0'
+-- LATIN CAPITAL LETTER U WITH CIRCUMFLEX
+foldMapping '\x00DB' = CM '\x00FB' '\0' '\0'
+-- LATIN CAPITAL LETTER U WITH DIAERESIS
+foldMapping '\x00DC' = CM '\x00FC' '\0' '\0'
+-- LATIN CAPITAL LETTER Y WITH ACUTE
+foldMapping '\x00DD' = CM '\x00FD' '\0' '\0'
+-- LATIN CAPITAL LETTER THORN
+foldMapping '\x00DE' = CM '\x00FE' '\0' '\0'
+-- LATIN SMALL LETTER SHARP S
+foldMapping '\x00DF' = CM '\x0073' '\x0073' '\0'
+-- LATIN CAPITAL LETTER A WITH MACRON
+foldMapping '\x0100' = CM '\x0101' '\0' '\0'
+-- LATIN CAPITAL LETTER A WITH BREVE
+foldMapping '\x0102' = CM '\x0103' '\0' '\0'
+-- LATIN CAPITAL LETTER A WITH OGONEK
+foldMapping '\x0104' = CM '\x0105' '\0' '\0'
+-- LATIN CAPITAL LETTER C WITH ACUTE
+foldMapping '\x0106' = CM '\x0107' '\0' '\0'
+-- LATIN CAPITAL LETTER C WITH CIRCUMFLEX
+foldMapping '\x0108' = CM '\x0109' '\0' '\0'
+-- LATIN CAPITAL LETTER C WITH DOT ABOVE
+foldMapping '\x010A' = CM '\x010B' '\0' '\0'
+-- LATIN CAPITAL LETTER C WITH CARON
+foldMapping '\x010C' = CM '\x010D' '\0' '\0'
+-- LATIN CAPITAL LETTER D WITH CARON
+foldMapping '\x010E' = CM '\x010F' '\0' '\0'
+-- LATIN CAPITAL LETTER D WITH STROKE
+foldMapping '\x0110' = CM '\x0111' '\0' '\0'
+-- LATIN CAPITAL LETTER E WITH MACRON
+foldMapping '\x0112' = CM '\x0113' '\0' '\0'
+-- LATIN CAPITAL LETTER E WITH BREVE
+foldMapping '\x0114' = CM '\x0115' '\0' '\0'
+-- LATIN CAPITAL LETTER E WITH DOT ABOVE
+foldMapping '\x0116' = CM '\x0117' '\0' '\0'
+-- LATIN CAPITAL LETTER E WITH OGONEK
+foldMapping '\x0118' = CM '\x0119' '\0' '\0'
+-- LATIN CAPITAL LETTER E WITH CARON
+foldMapping '\x011A' = CM '\x011B' '\0' '\0'
+-- LATIN CAPITAL LETTER G WITH CIRCUMFLEX
+foldMapping '\x011C' = CM '\x011D' '\0' '\0'
+-- LATIN CAPITAL LETTER G WITH BREVE
+foldMapping '\x011E' = CM '\x011F' '\0' '\0'
+-- LATIN CAPITAL LETTER G WITH DOT ABOVE
+foldMapping '\x0120' = CM '\x0121' '\0' '\0'
+-- LATIN CAPITAL LETTER G WITH CEDILLA
+foldMapping '\x0122' = CM '\x0123' '\0' '\0'
+-- LATIN CAPITAL LETTER H WITH CIRCUMFLEX
+foldMapping '\x0124' = CM '\x0125' '\0' '\0'
+-- LATIN CAPITAL LETTER H WITH STROKE
+foldMapping '\x0126' = CM '\x0127' '\0' '\0'
+-- LATIN CAPITAL LETTER I WITH TILDE
+foldMapping '\x0128' = CM '\x0129' '\0' '\0'
+-- LATIN CAPITAL LETTER I WITH MACRON
+foldMapping '\x012A' = CM '\x012B' '\0' '\0'
+-- LATIN CAPITAL LETTER I WITH BREVE
+foldMapping '\x012C' = CM '\x012D' '\0' '\0'
+-- LATIN CAPITAL LETTER I WITH OGONEK
+foldMapping '\x012E' = CM '\x012F' '\0' '\0'
+-- LATIN CAPITAL LETTER I WITH DOT ABOVE
+foldMapping '\x0130' = CM '\x0069' '\x0307' '\0'
+-- LATIN CAPITAL LIGATURE IJ
+foldMapping '\x0132' = CM '\x0133' '\0' '\0'
+-- LATIN CAPITAL LETTER J WITH CIRCUMFLEX
+foldMapping '\x0134' = CM '\x0135' '\0' '\0'
+-- LATIN CAPITAL LETTER K WITH CEDILLA
+foldMapping '\x0136' = CM '\x0137' '\0' '\0'
+-- LATIN CAPITAL LETTER L WITH ACUTE
+foldMapping '\x0139' = CM '\x013A' '\0' '\0'
+-- LATIN CAPITAL LETTER L WITH CEDILLA
+foldMapping '\x013B' = CM '\x013C' '\0' '\0'
+-- LATIN CAPITAL LETTER L WITH CARON
+foldMapping '\x013D' = CM '\x013E' '\0' '\0'
+-- LATIN CAPITAL LETTER L WITH MIDDLE DOT
+foldMapping '\x013F' = CM '\x0140' '\0' '\0'
+-- LATIN CAPITAL LETTER L WITH STROKE
+foldMapping '\x0141' = CM '\x0142' '\0' '\0'
+-- LATIN CAPITAL LETTER N WITH ACUTE
+foldMapping '\x0143' = CM '\x0144' '\0' '\0'
+-- LATIN CAPITAL LETTER N WITH CEDILLA
+foldMapping '\x0145' = CM '\x0146' '\0' '\0'
+-- LATIN CAPITAL LETTER N WITH CARON
+foldMapping '\x0147' = CM '\x0148' '\0' '\0'
+-- LATIN SMALL LETTER N PRECEDED BY APOSTROPHE
+foldMapping '\x0149' = CM '\x02BC' '\x006E' '\0'
+-- LATIN CAPITAL LETTER ENG
+foldMapping '\x014A' = CM '\x014B' '\0' '\0'
+-- LATIN CAPITAL LETTER O WITH MACRON
+foldMapping '\x014C' = CM '\x014D' '\0' '\0'
+-- LATIN CAPITAL LETTER O WITH BREVE
+foldMapping '\x014E' = CM '\x014F' '\0' '\0'
+-- LATIN CAPITAL LETTER O WITH DOUBLE ACUTE
+foldMapping '\x0150' = CM '\x0151' '\0' '\0'
+-- LATIN CAPITAL LIGATURE OE
+foldMapping '\x0152' = CM '\x0153' '\0' '\0'
+-- LATIN CAPITAL LETTER R WITH ACUTE
+foldMapping '\x0154' = CM '\x0155' '\0' '\0'
+-- LATIN CAPITAL LETTER R WITH CEDILLA
+foldMapping '\x0156' = CM '\x0157' '\0' '\0'
+-- LATIN CAPITAL LETTER R WITH CARON
+foldMapping '\x0158' = CM '\x0159' '\0' '\0'
+-- LATIN CAPITAL LETTER S WITH ACUTE
+foldMapping '\x015A' = CM '\x015B' '\0' '\0'
+-- LATIN CAPITAL LETTER S WITH CIRCUMFLEX
+foldMapping '\x015C' = CM '\x015D' '\0' '\0'
+-- LATIN CAPITAL LETTER S WITH CEDILLA
+foldMapping '\x015E' = CM '\x015F' '\0' '\0'
+-- LATIN CAPITAL LETTER S WITH CARON
+foldMapping '\x0160' = CM '\x0161' '\0' '\0'
+-- LATIN CAPITAL LETTER T WITH CEDILLA
+foldMapping '\x0162' = CM '\x0163' '\0' '\0'
+-- LATIN CAPITAL LETTER T WITH CARON
+foldMapping '\x0164' = CM '\x0165' '\0' '\0'
+-- LATIN CAPITAL LETTER T WITH STROKE
+foldMapping '\x0166' = CM '\x0167' '\0' '\0'
+-- LATIN CAPITAL LETTER U WITH TILDE
+foldMapping '\x0168' = CM '\x0169' '\0' '\0'
+-- LATIN CAPITAL LETTER U WITH MACRON
+foldMapping '\x016A' = CM '\x016B' '\0' '\0'
+-- LATIN CAPITAL LETTER U WITH BREVE
+foldMapping '\x016C' = CM '\x016D' '\0' '\0'
+-- LATIN CAPITAL LETTER U WITH RING ABOVE
+foldMapping '\x016E' = CM '\x016F' '\0' '\0'
+-- LATIN CAPITAL LETTER U WITH DOUBLE ACUTE
+foldMapping '\x0170' = CM '\x0171' '\0' '\0'
+-- LATIN CAPITAL LETTER U WITH OGONEK
+foldMapping '\x0172' = CM '\x0173' '\0' '\0'
+-- LATIN CAPITAL LETTER W WITH CIRCUMFLEX
+foldMapping '\x0174' = CM '\x0175' '\0' '\0'
+-- LATIN CAPITAL LETTER Y WITH CIRCUMFLEX
+foldMapping '\x0176' = CM '\x0177' '\0' '\0'
+-- LATIN CAPITAL LETTER Y WITH DIAERESIS
+foldMapping '\x0178' = CM '\x00FF' '\0' '\0'
+-- LATIN CAPITAL LETTER Z WITH ACUTE
+foldMapping '\x0179' = CM '\x017A' '\0' '\0'
+-- LATIN CAPITAL LETTER Z WITH DOT ABOVE
+foldMapping '\x017B' = CM '\x017C' '\0' '\0'
+-- LATIN CAPITAL LETTER Z WITH CARON
+foldMapping '\x017D' = CM '\x017E' '\0' '\0'
+-- LATIN SMALL LETTER LONG S
+foldMapping '\x017F' = CM '\x0073' '\0' '\0'
+-- LATIN CAPITAL LETTER B WITH HOOK
+foldMapping '\x0181' = CM '\x0253' '\0' '\0'
+-- LATIN CAPITAL LETTER B WITH TOPBAR
+foldMapping '\x0182' = CM '\x0183' '\0' '\0'
+-- LATIN CAPITAL LETTER TONE SIX
+foldMapping '\x0184' = CM '\x0185' '\0' '\0'
+-- LATIN CAPITAL LETTER OPEN O
+foldMapping '\x0186' = CM '\x0254' '\0' '\0'
+-- LATIN CAPITAL LETTER C WITH HOOK
+foldMapping '\x0187' = CM '\x0188' '\0' '\0'
+-- LATIN CAPITAL LETTER AFRICAN D
+foldMapping '\x0189' = CM '\x0256' '\0' '\0'
+-- LATIN CAPITAL LETTER D WITH HOOK
+foldMapping '\x018A' = CM '\x0257' '\0' '\0'
+-- LATIN CAPITAL LETTER D WITH TOPBAR
+foldMapping '\x018B' = CM '\x018C' '\0' '\0'
+-- LATIN CAPITAL LETTER REVERSED E
+foldMapping '\x018E' = CM '\x01DD' '\0' '\0'
+-- LATIN CAPITAL LETTER SCHWA
+foldMapping '\x018F' = CM '\x0259' '\0' '\0'
+-- LATIN CAPITAL LETTER OPEN E
+foldMapping '\x0190' = CM '\x025B' '\0' '\0'
+-- LATIN CAPITAL LETTER F WITH HOOK
+foldMapping '\x0191' = CM '\x0192' '\0' '\0'
+-- LATIN CAPITAL LETTER G WITH HOOK
+foldMapping '\x0193' = CM '\x0260' '\0' '\0'
+-- LATIN CAPITAL LETTER GAMMA
+foldMapping '\x0194' = CM '\x0263' '\0' '\0'
+-- LATIN CAPITAL LETTER IOTA
+foldMapping '\x0196' = CM '\x0269' '\0' '\0'
+-- LATIN CAPITAL LETTER I WITH STROKE
+foldMapping '\x0197' = CM '\x0268' '\0' '\0'
+-- LATIN CAPITAL LETTER K WITH HOOK
+foldMapping '\x0198' = CM '\x0199' '\0' '\0'
+-- LATIN CAPITAL LETTER TURNED M
+foldMapping '\x019C' = CM '\x026F' '\0' '\0'
+-- LATIN CAPITAL LETTER N WITH LEFT HOOK
+foldMapping '\x019D' = CM '\x0272' '\0' '\0'
+-- LATIN CAPITAL LETTER O WITH MIDDLE TILDE
+foldMapping '\x019F' = CM '\x0275' '\0' '\0'
+-- LATIN CAPITAL LETTER O WITH HORN
+foldMapping '\x01A0' = CM '\x01A1' '\0' '\0'
+-- LATIN CAPITAL LETTER OI
+foldMapping '\x01A2' = CM '\x01A3' '\0' '\0'
+-- LATIN CAPITAL LETTER P WITH HOOK
+foldMapping '\x01A4' = CM '\x01A5' '\0' '\0'
+-- LATIN LETTER YR
+foldMapping '\x01A6' = CM '\x0280' '\0' '\0'
+-- LATIN CAPITAL LETTER TONE TWO
+foldMapping '\x01A7' = CM '\x01A8' '\0' '\0'
+-- LATIN CAPITAL LETTER ESH
+foldMapping '\x01A9' = CM '\x0283' '\0' '\0'
+-- LATIN CAPITAL LETTER T WITH HOOK
+foldMapping '\x01AC' = CM '\x01AD' '\0' '\0'
+-- LATIN CAPITAL LETTER T WITH RETROFLEX HOOK
+foldMapping '\x01AE' = CM '\x0288' '\0' '\0'
+-- LATIN CAPITAL LETTER U WITH HORN
+foldMapping '\x01AF' = CM '\x01B0' '\0' '\0'
+-- LATIN CAPITAL LETTER UPSILON
+foldMapping '\x01B1' = CM '\x028A' '\0' '\0'
+-- LATIN CAPITAL LETTER V WITH HOOK
+foldMapping '\x01B2' = CM '\x028B' '\0' '\0'
+-- LATIN CAPITAL LETTER Y WITH HOOK
+foldMapping '\x01B3' = CM '\x01B4' '\0' '\0'
+-- LATIN CAPITAL LETTER Z WITH STROKE
+foldMapping '\x01B5' = CM '\x01B6' '\0' '\0'
+-- LATIN CAPITAL LETTER EZH
+foldMapping '\x01B7' = CM '\x0292' '\0' '\0'
+-- LATIN CAPITAL LETTER EZH REVERSED
+foldMapping '\x01B8' = CM '\x01B9' '\0' '\0'
+-- LATIN CAPITAL LETTER TONE FIVE
+foldMapping '\x01BC' = CM '\x01BD' '\0' '\0'
+-- LATIN CAPITAL LETTER DZ WITH CARON
+foldMapping '\x01C4' = CM '\x01C6' '\0' '\0'
+-- LATIN CAPITAL LETTER D WITH SMALL LETTER Z WITH CARON
+foldMapping '\x01C5' = CM '\x01C6' '\0' '\0'
+-- LATIN CAPITAL LETTER LJ
+foldMapping '\x01C7' = CM '\x01C9' '\0' '\0'
+-- LATIN CAPITAL LETTER L WITH SMALL LETTER J
+foldMapping '\x01C8' = CM '\x01C9' '\0' '\0'
+-- LATIN CAPITAL LETTER NJ
+foldMapping '\x01CA' = CM '\x01CC' '\0' '\0'
+-- LATIN CAPITAL LETTER N WITH SMALL LETTER J
+foldMapping '\x01CB' = CM '\x01CC' '\0' '\0'
+-- LATIN CAPITAL LETTER A WITH CARON
+foldMapping '\x01CD' = CM '\x01CE' '\0' '\0'
+-- LATIN CAPITAL LETTER I WITH CARON
+foldMapping '\x01CF' = CM '\x01D0' '\0' '\0'
+-- LATIN CAPITAL LETTER O WITH CARON
+foldMapping '\x01D1' = CM '\x01D2' '\0' '\0'
+-- LATIN CAPITAL LETTER U WITH CARON
+foldMapping '\x01D3' = CM '\x01D4' '\0' '\0'
+-- LATIN CAPITAL LETTER U WITH DIAERESIS AND MACRON
+foldMapping '\x01D5' = CM '\x01D6' '\0' '\0'
+-- LATIN CAPITAL LETTER U WITH DIAERESIS AND ACUTE
+foldMapping '\x01D7' = CM '\x01D8' '\0' '\0'
+-- LATIN CAPITAL LETTER U WITH DIAERESIS AND CARON
+foldMapping '\x01D9' = CM '\x01DA' '\0' '\0'
+-- LATIN CAPITAL LETTER U WITH DIAERESIS AND GRAVE
+foldMapping '\x01DB' = CM '\x01DC' '\0' '\0'
+-- LATIN CAPITAL LETTER A WITH DIAERESIS AND MACRON
+foldMapping '\x01DE' = CM '\x01DF' '\0' '\0'
+-- LATIN CAPITAL LETTER A WITH DOT ABOVE AND MACRON
+foldMapping '\x01E0' = CM '\x01E1' '\0' '\0'
+-- LATIN CAPITAL LETTER AE WITH MACRON
+foldMapping '\x01E2' = CM '\x01E3' '\0' '\0'
+-- LATIN CAPITAL LETTER G WITH STROKE
+foldMapping '\x01E4' = CM '\x01E5' '\0' '\0'
+-- LATIN CAPITAL LETTER G WITH CARON
+foldMapping '\x01E6' = CM '\x01E7' '\0' '\0'
+-- LATIN CAPITAL LETTER K WITH CARON
+foldMapping '\x01E8' = CM '\x01E9' '\0' '\0'
+-- LATIN CAPITAL LETTER O WITH OGONEK
+foldMapping '\x01EA' = CM '\x01EB' '\0' '\0'
+-- LATIN CAPITAL LETTER O WITH OGONEK AND MACRON
+foldMapping '\x01EC' = CM '\x01ED' '\0' '\0'
+-- LATIN CAPITAL LETTER EZH WITH CARON
+foldMapping '\x01EE' = CM '\x01EF' '\0' '\0'
+-- LATIN SMALL LETTER J WITH CARON
+foldMapping '\x01F0' = CM '\x006A' '\x030C' '\0'
+-- LATIN CAPITAL LETTER DZ
+foldMapping '\x01F1' = CM '\x01F3' '\0' '\0'
+-- LATIN CAPITAL LETTER D WITH SMALL LETTER Z
+foldMapping '\x01F2' = CM '\x01F3' '\0' '\0'
+-- LATIN CAPITAL LETTER G WITH ACUTE
+foldMapping '\x01F4' = CM '\x01F5' '\0' '\0'
+-- LATIN CAPITAL LETTER HWAIR
+foldMapping '\x01F6' = CM '\x0195' '\0' '\0'
+-- LATIN CAPITAL LETTER WYNN
+foldMapping '\x01F7' = CM '\x01BF' '\0' '\0'
+-- LATIN CAPITAL LETTER N WITH GRAVE
+foldMapping '\x01F8' = CM '\x01F9' '\0' '\0'
+-- LATIN CAPITAL LETTER A WITH RING ABOVE AND ACUTE
+foldMapping '\x01FA' = CM '\x01FB' '\0' '\0'
+-- LATIN CAPITAL LETTER AE WITH ACUTE
+foldMapping '\x01FC' = CM '\x01FD' '\0' '\0'
+-- LATIN CAPITAL LETTER O WITH STROKE AND ACUTE
+foldMapping '\x01FE' = CM '\x01FF' '\0' '\0'
+-- LATIN CAPITAL LETTER A WITH DOUBLE GRAVE
+foldMapping '\x0200' = CM '\x0201' '\0' '\0'
+-- LATIN CAPITAL LETTER A WITH INVERTED BREVE
+foldMapping '\x0202' = CM '\x0203' '\0' '\0'
+-- LATIN CAPITAL LETTER E WITH DOUBLE GRAVE
+foldMapping '\x0204' = CM '\x0205' '\0' '\0'
+-- LATIN CAPITAL LETTER E WITH INVERTED BREVE
+foldMapping '\x0206' = CM '\x0207' '\0' '\0'
+-- LATIN CAPITAL LETTER I WITH DOUBLE GRAVE
+foldMapping '\x0208' = CM '\x0209' '\0' '\0'
+-- LATIN CAPITAL LETTER I WITH INVERTED BREVE
+foldMapping '\x020A' = CM '\x020B' '\0' '\0'
+-- LATIN CAPITAL LETTER O WITH DOUBLE GRAVE
+foldMapping '\x020C' = CM '\x020D' '\0' '\0'
+-- LATIN CAPITAL LETTER O WITH INVERTED BREVE
+foldMapping '\x020E' = CM '\x020F' '\0' '\0'
+-- LATIN CAPITAL LETTER R WITH DOUBLE GRAVE
+foldMapping '\x0210' = CM '\x0211' '\0' '\0'
+-- LATIN CAPITAL LETTER R WITH INVERTED BREVE
+foldMapping '\x0212' = CM '\x0213' '\0' '\0'
+-- LATIN CAPITAL LETTER U WITH DOUBLE GRAVE
+foldMapping '\x0214' = CM '\x0215' '\0' '\0'
+-- LATIN CAPITAL LETTER U WITH INVERTED BREVE
+foldMapping '\x0216' = CM '\x0217' '\0' '\0'
+-- LATIN CAPITAL LETTER S WITH COMMA BELOW
+foldMapping '\x0218' = CM '\x0219' '\0' '\0'
+-- LATIN CAPITAL LETTER T WITH COMMA BELOW
+foldMapping '\x021A' = CM '\x021B' '\0' '\0'
+-- LATIN CAPITAL LETTER YOGH
+foldMapping '\x021C' = CM '\x021D' '\0' '\0'
+-- LATIN CAPITAL LETTER H WITH CARON
+foldMapping '\x021E' = CM '\x021F' '\0' '\0'
+-- LATIN CAPITAL LETTER N WITH LONG RIGHT LEG
+foldMapping '\x0220' = CM '\x019E' '\0' '\0'
+-- LATIN CAPITAL LETTER OU
+foldMapping '\x0222' = CM '\x0223' '\0' '\0'
+-- LATIN CAPITAL LETTER Z WITH HOOK
+foldMapping '\x0224' = CM '\x0225' '\0' '\0'
+-- LATIN CAPITAL LETTER A WITH DOT ABOVE
+foldMapping '\x0226' = CM '\x0227' '\0' '\0'
+-- LATIN CAPITAL LETTER E WITH CEDILLA
+foldMapping '\x0228' = CM '\x0229' '\0' '\0'
+-- LATIN CAPITAL LETTER O WITH DIAERESIS AND MACRON
+foldMapping '\x022A' = CM '\x022B' '\0' '\0'
+-- LATIN CAPITAL LETTER O WITH TILDE AND MACRON
+foldMapping '\x022C' = CM '\x022D' '\0' '\0'
+-- LATIN CAPITAL LETTER O WITH DOT ABOVE
+foldMapping '\x022E' = CM '\x022F' '\0' '\0'
+-- LATIN CAPITAL LETTER O WITH DOT ABOVE AND MACRON
+foldMapping '\x0230' = CM '\x0231' '\0' '\0'
+-- LATIN CAPITAL LETTER Y WITH MACRON
+foldMapping '\x0232' = CM '\x0233' '\0' '\0'
+-- LATIN CAPITAL LETTER A WITH STROKE
+foldMapping '\x023A' = CM '\x2C65' '\0' '\0'
+-- LATIN CAPITAL LETTER C WITH STROKE
+foldMapping '\x023B' = CM '\x023C' '\0' '\0'
+-- LATIN CAPITAL LETTER L WITH BAR
+foldMapping '\x023D' = CM '\x019A' '\0' '\0'
+-- LATIN CAPITAL LETTER T WITH DIAGONAL STROKE
+foldMapping '\x023E' = CM '\x2C66' '\0' '\0'
+-- LATIN CAPITAL LETTER GLOTTAL STOP
+foldMapping '\x0241' = CM '\x0242' '\0' '\0'
+-- LATIN CAPITAL LETTER B WITH STROKE
+foldMapping '\x0243' = CM '\x0180' '\0' '\0'
+-- LATIN CAPITAL LETTER U BAR
+foldMapping '\x0244' = CM '\x0289' '\0' '\0'
+-- LATIN CAPITAL LETTER TURNED V
+foldMapping '\x0245' = CM '\x028C' '\0' '\0'
+-- LATIN CAPITAL LETTER E WITH STROKE
+foldMapping '\x0246' = CM '\x0247' '\0' '\0'
+-- LATIN CAPITAL LETTER J WITH STROKE
+foldMapping '\x0248' = CM '\x0249' '\0' '\0'
+-- LATIN CAPITAL LETTER SMALL Q WITH HOOK TAIL
+foldMapping '\x024A' = CM '\x024B' '\0' '\0'
+-- LATIN CAPITAL LETTER R WITH STROKE
+foldMapping '\x024C' = CM '\x024D' '\0' '\0'
+-- LATIN CAPITAL LETTER Y WITH STROKE
+foldMapping '\x024E' = CM '\x024F' '\0' '\0'
+-- COMBINING GREEK YPOGEGRAMMENI
+foldMapping '\x0345' = CM '\x03B9' '\0' '\0'
+-- GREEK CAPITAL LETTER HETA
+foldMapping '\x0370' = CM '\x0371' '\0' '\0'
+-- GREEK CAPITAL LETTER ARCHAIC SAMPI
+foldMapping '\x0372' = CM '\x0373' '\0' '\0'
+-- GREEK CAPITAL LETTER PAMPHYLIAN DIGAMMA
+foldMapping '\x0376' = CM '\x0377' '\0' '\0'
+-- GREEK CAPITAL LETTER YOT
+foldMapping '\x037F' = CM '\x03F3' '\0' '\0'
+-- GREEK CAPITAL LETTER ALPHA WITH TONOS
+foldMapping '\x0386' = CM '\x03AC' '\0' '\0'
+-- GREEK CAPITAL LETTER EPSILON WITH TONOS
+foldMapping '\x0388' = CM '\x03AD' '\0' '\0'
+-- GREEK CAPITAL LETTER ETA WITH TONOS
+foldMapping '\x0389' = CM '\x03AE' '\0' '\0'
+-- GREEK CAPITAL LETTER IOTA WITH TONOS
+foldMapping '\x038A' = CM '\x03AF' '\0' '\0'
+-- GREEK CAPITAL LETTER OMICRON WITH TONOS
+foldMapping '\x038C' = CM '\x03CC' '\0' '\0'
+-- GREEK CAPITAL LETTER UPSILON WITH TONOS
+foldMapping '\x038E' = CM '\x03CD' '\0' '\0'
+-- GREEK CAPITAL LETTER OMEGA WITH TONOS
+foldMapping '\x038F' = CM '\x03CE' '\0' '\0'
+-- GREEK SMALL LETTER IOTA WITH DIALYTIKA AND TONOS
+foldMapping '\x0390' = CM '\x03B9' '\x0308' '\x0301'
+-- GREEK CAPITAL LETTER ALPHA
+foldMapping '\x0391' = CM '\x03B1' '\0' '\0'
+-- GREEK CAPITAL LETTER BETA
+foldMapping '\x0392' = CM '\x03B2' '\0' '\0'
+-- GREEK CAPITAL LETTER GAMMA
+foldMapping '\x0393' = CM '\x03B3' '\0' '\0'
+-- GREEK CAPITAL LETTER DELTA
+foldMapping '\x0394' = CM '\x03B4' '\0' '\0'
+-- GREEK CAPITAL LETTER EPSILON
+foldMapping '\x0395' = CM '\x03B5' '\0' '\0'
+-- GREEK CAPITAL LETTER ZETA
+foldMapping '\x0396' = CM '\x03B6' '\0' '\0'
+-- GREEK CAPITAL LETTER ETA
+foldMapping '\x0397' = CM '\x03B7' '\0' '\0'
+-- GREEK CAPITAL LETTER THETA
+foldMapping '\x0398' = CM '\x03B8' '\0' '\0'
+-- GREEK CAPITAL LETTER IOTA
+foldMapping '\x0399' = CM '\x03B9' '\0' '\0'
+-- GREEK CAPITAL LETTER KAPPA
+foldMapping '\x039A' = CM '\x03BA' '\0' '\0'
+-- GREEK CAPITAL LETTER LAMDA
+foldMapping '\x039B' = CM '\x03BB' '\0' '\0'
+-- GREEK CAPITAL LETTER MU
+foldMapping '\x039C' = CM '\x03BC' '\0' '\0'
+-- GREEK CAPITAL LETTER NU
+foldMapping '\x039D' = CM '\x03BD' '\0' '\0'
+-- GREEK CAPITAL LETTER XI
+foldMapping '\x039E' = CM '\x03BE' '\0' '\0'
+-- GREEK CAPITAL LETTER OMICRON
+foldMapping '\x039F' = CM '\x03BF' '\0' '\0'
+-- GREEK CAPITAL LETTER PI
+foldMapping '\x03A0' = CM '\x03C0' '\0' '\0'
+-- GREEK CAPITAL LETTER RHO
+foldMapping '\x03A1' = CM '\x03C1' '\0' '\0'
+-- GREEK CAPITAL LETTER SIGMA
+foldMapping '\x03A3' = CM '\x03C3' '\0' '\0'
+-- GREEK CAPITAL LETTER TAU
+foldMapping '\x03A4' = CM '\x03C4' '\0' '\0'
+-- GREEK CAPITAL LETTER UPSILON
+foldMapping '\x03A5' = CM '\x03C5' '\0' '\0'
+-- GREEK CAPITAL LETTER PHI
+foldMapping '\x03A6' = CM '\x03C6' '\0' '\0'
+-- GREEK CAPITAL LETTER CHI
+foldMapping '\x03A7' = CM '\x03C7' '\0' '\0'
+-- GREEK CAPITAL LETTER PSI
+foldMapping '\x03A8' = CM '\x03C8' '\0' '\0'
+-- GREEK CAPITAL LETTER OMEGA
+foldMapping '\x03A9' = CM '\x03C9' '\0' '\0'
+-- GREEK CAPITAL LETTER IOTA WITH DIALYTIKA
+foldMapping '\x03AA' = CM '\x03CA' '\0' '\0'
+-- GREEK CAPITAL LETTER UPSILON WITH DIALYTIKA
+foldMapping '\x03AB' = CM '\x03CB' '\0' '\0'
+-- GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND TONOS
+foldMapping '\x03B0' = CM '\x03C5' '\x0308' '\x0301'
+-- GREEK SMALL LETTER FINAL SIGMA
+foldMapping '\x03C2' = CM '\x03C3' '\0' '\0'
+-- GREEK CAPITAL KAI SYMBOL
+foldMapping '\x03CF' = CM '\x03D7' '\0' '\0'
+-- GREEK BETA SYMBOL
+foldMapping '\x03D0' = CM '\x03B2' '\0' '\0'
+-- GREEK THETA SYMBOL
+foldMapping '\x03D1' = CM '\x03B8' '\0' '\0'
+-- GREEK PHI SYMBOL
+foldMapping '\x03D5' = CM '\x03C6' '\0' '\0'
+-- GREEK PI SYMBOL
+foldMapping '\x03D6' = CM '\x03C0' '\0' '\0'
+-- GREEK LETTER ARCHAIC KOPPA
+foldMapping '\x03D8' = CM '\x03D9' '\0' '\0'
+-- GREEK LETTER STIGMA
+foldMapping '\x03DA' = CM '\x03DB' '\0' '\0'
+-- GREEK LETTER DIGAMMA
+foldMapping '\x03DC' = CM '\x03DD' '\0' '\0'
+-- GREEK LETTER KOPPA
+foldMapping '\x03DE' = CM '\x03DF' '\0' '\0'
+-- GREEK LETTER SAMPI
+foldMapping '\x03E0' = CM '\x03E1' '\0' '\0'
+-- COPTIC CAPITAL LETTER SHEI
+foldMapping '\x03E2' = CM '\x03E3' '\0' '\0'
+-- COPTIC CAPITAL LETTER FEI
+foldMapping '\x03E4' = CM '\x03E5' '\0' '\0'
+-- COPTIC CAPITAL LETTER KHEI
+foldMapping '\x03E6' = CM '\x03E7' '\0' '\0'
+-- COPTIC CAPITAL LETTER HORI
+foldMapping '\x03E8' = CM '\x03E9' '\0' '\0'
+-- COPTIC CAPITAL LETTER GANGIA
+foldMapping '\x03EA' = CM '\x03EB' '\0' '\0'
+-- COPTIC CAPITAL LETTER SHIMA
+foldMapping '\x03EC' = CM '\x03ED' '\0' '\0'
+-- COPTIC CAPITAL LETTER DEI
+foldMapping '\x03EE' = CM '\x03EF' '\0' '\0'
+-- GREEK KAPPA SYMBOL
+foldMapping '\x03F0' = CM '\x03BA' '\0' '\0'
+-- GREEK RHO SYMBOL
+foldMapping '\x03F1' = CM '\x03C1' '\0' '\0'
+-- GREEK CAPITAL THETA SYMBOL
+foldMapping '\x03F4' = CM '\x03B8' '\0' '\0'
+-- GREEK LUNATE EPSILON SYMBOL
+foldMapping '\x03F5' = CM '\x03B5' '\0' '\0'
+-- GREEK CAPITAL LETTER SHO
+foldMapping '\x03F7' = CM '\x03F8' '\0' '\0'
+-- GREEK CAPITAL LUNATE SIGMA SYMBOL
+foldMapping '\x03F9' = CM '\x03F2' '\0' '\0'
+-- GREEK CAPITAL LETTER SAN
+foldMapping '\x03FA' = CM '\x03FB' '\0' '\0'
+-- GREEK CAPITAL REVERSED LUNATE SIGMA SYMBOL
+foldMapping '\x03FD' = CM '\x037B' '\0' '\0'
+-- GREEK CAPITAL DOTTED LUNATE SIGMA SYMBOL
+foldMapping '\x03FE' = CM '\x037C' '\0' '\0'
+-- GREEK CAPITAL REVERSED DOTTED LUNATE SIGMA SYMBOL
+foldMapping '\x03FF' = CM '\x037D' '\0' '\0'
+-- CYRILLIC CAPITAL LETTER IE WITH GRAVE
+foldMapping '\x0400' = CM '\x0450' '\0' '\0'
+-- CYRILLIC CAPITAL LETTER IO
+foldMapping '\x0401' = CM '\x0451' '\0' '\0'
+-- CYRILLIC CAPITAL LETTER DJE
+foldMapping '\x0402' = CM '\x0452' '\0' '\0'
+-- CYRILLIC CAPITAL LETTER GJE
+foldMapping '\x0403' = CM '\x0453' '\0' '\0'
+-- CYRILLIC CAPITAL LETTER UKRAINIAN IE
+foldMapping '\x0404' = CM '\x0454' '\0' '\0'
+-- CYRILLIC CAPITAL LETTER DZE
+foldMapping '\x0405' = CM '\x0455' '\0' '\0'
+-- CYRILLIC CAPITAL LETTER BYELORUSSIAN-UKRAINIAN I
+foldMapping '\x0406' = CM '\x0456' '\0' '\0'
+-- CYRILLIC CAPITAL LETTER YI
+foldMapping '\x0407' = CM '\x0457' '\0' '\0'
+-- CYRILLIC CAPITAL LETTER JE
+foldMapping '\x0408' = CM '\x0458' '\0' '\0'
+-- CYRILLIC CAPITAL LETTER LJE
+foldMapping '\x0409' = CM '\x0459' '\0' '\0'
+-- CYRILLIC CAPITAL LETTER NJE
+foldMapping '\x040A' = CM '\x045A' '\0' '\0'
+-- CYRILLIC CAPITAL LETTER TSHE
+foldMapping '\x040B' = CM '\x045B' '\0' '\0'
+-- CYRILLIC CAPITAL LETTER KJE
+foldMapping '\x040C' = CM '\x045C' '\0' '\0'
+-- CYRILLIC CAPITAL LETTER I WITH GRAVE
+foldMapping '\x040D' = CM '\x045D' '\0' '\0'
+-- CYRILLIC CAPITAL LETTER SHORT U
+foldMapping '\x040E' = CM '\x045E' '\0' '\0'
+-- CYRILLIC CAPITAL LETTER DZHE
+foldMapping '\x040F' = CM '\x045F' '\0' '\0'
+-- CYRILLIC CAPITAL LETTER A
+foldMapping '\x0410' = CM '\x0430' '\0' '\0'
+-- CYRILLIC CAPITAL LETTER BE
+foldMapping '\x0411' = CM '\x0431' '\0' '\0'
+-- CYRILLIC CAPITAL LETTER VE
+foldMapping '\x0412' = CM '\x0432' '\0' '\0'
+-- CYRILLIC CAPITAL LETTER GHE
+foldMapping '\x0413' = CM '\x0433' '\0' '\0'
+-- CYRILLIC CAPITAL LETTER DE
+foldMapping '\x0414' = CM '\x0434' '\0' '\0'
+-- CYRILLIC CAPITAL LETTER IE
+foldMapping '\x0415' = CM '\x0435' '\0' '\0'
+-- CYRILLIC CAPITAL LETTER ZHE
+foldMapping '\x0416' = CM '\x0436' '\0' '\0'
+-- CYRILLIC CAPITAL LETTER ZE
+foldMapping '\x0417' = CM '\x0437' '\0' '\0'
+-- CYRILLIC CAPITAL LETTER I
+foldMapping '\x0418' = CM '\x0438' '\0' '\0'
+-- CYRILLIC CAPITAL LETTER SHORT I
+foldMapping '\x0419' = CM '\x0439' '\0' '\0'
+-- CYRILLIC CAPITAL LETTER KA
+foldMapping '\x041A' = CM '\x043A' '\0' '\0'
+-- CYRILLIC CAPITAL LETTER EL
+foldMapping '\x041B' = CM '\x043B' '\0' '\0'
+-- CYRILLIC CAPITAL LETTER EM
+foldMapping '\x041C' = CM '\x043C' '\0' '\0'
+-- CYRILLIC CAPITAL LETTER EN
+foldMapping '\x041D' = CM '\x043D' '\0' '\0'
+-- CYRILLIC CAPITAL LETTER O
+foldMapping '\x041E' = CM '\x043E' '\0' '\0'
+-- CYRILLIC CAPITAL LETTER PE
+foldMapping '\x041F' = CM '\x043F' '\0' '\0'
+-- CYRILLIC CAPITAL LETTER ER
+foldMapping '\x0420' = CM '\x0440' '\0' '\0'
+-- CYRILLIC CAPITAL LETTER ES
+foldMapping '\x0421' = CM '\x0441' '\0' '\0'
+-- CYRILLIC CAPITAL LETTER TE
+foldMapping '\x0422' = CM '\x0442' '\0' '\0'
+-- CYRILLIC CAPITAL LETTER U
+foldMapping '\x0423' = CM '\x0443' '\0' '\0'
+-- CYRILLIC CAPITAL LETTER EF
+foldMapping '\x0424' = CM '\x0444' '\0' '\0'
+-- CYRILLIC CAPITAL LETTER HA
+foldMapping '\x0425' = CM '\x0445' '\0' '\0'
+-- CYRILLIC CAPITAL LETTER TSE
+foldMapping '\x0426' = CM '\x0446' '\0' '\0'
+-- CYRILLIC CAPITAL LETTER CHE
+foldMapping '\x0427' = CM '\x0447' '\0' '\0'
+-- CYRILLIC CAPITAL LETTER SHA
+foldMapping '\x0428' = CM '\x0448' '\0' '\0'
+-- CYRILLIC CAPITAL LETTER SHCHA
+foldMapping '\x0429' = CM '\x0449' '\0' '\0'
+-- CYRILLIC CAPITAL LETTER HARD SIGN
+foldMapping '\x042A' = CM '\x044A' '\0' '\0'
+-- CYRILLIC CAPITAL LETTER YERU
+foldMapping '\x042B' = CM '\x044B' '\0' '\0'
+-- CYRILLIC CAPITAL LETTER SOFT SIGN
+foldMapping '\x042C' = CM '\x044C' '\0' '\0'
+-- CYRILLIC CAPITAL LETTER E
+foldMapping '\x042D' = CM '\x044D' '\0' '\0'
+-- CYRILLIC CAPITAL LETTER YU
+foldMapping '\x042E' = CM '\x044E' '\0' '\0'
+-- CYRILLIC CAPITAL LETTER YA
+foldMapping '\x042F' = CM '\x044F' '\0' '\0'
+-- CYRILLIC CAPITAL LETTER OMEGA
+foldMapping '\x0460' = CM '\x0461' '\0' '\0'
+-- CYRILLIC CAPITAL LETTER YAT
+foldMapping '\x0462' = CM '\x0463' '\0' '\0'
+-- CYRILLIC CAPITAL LETTER IOTIFIED E
+foldMapping '\x0464' = CM '\x0465' '\0' '\0'
+-- CYRILLIC CAPITAL LETTER LITTLE YUS
+foldMapping '\x0466' = CM '\x0467' '\0' '\0'
+-- CYRILLIC CAPITAL LETTER IOTIFIED LITTLE YUS
+foldMapping '\x0468' = CM '\x0469' '\0' '\0'
+-- CYRILLIC CAPITAL LETTER BIG YUS
+foldMapping '\x046A' = CM '\x046B' '\0' '\0'
+-- CYRILLIC CAPITAL LETTER IOTIFIED BIG YUS
+foldMapping '\x046C' = CM '\x046D' '\0' '\0'
+-- CYRILLIC CAPITAL LETTER KSI
+foldMapping '\x046E' = CM '\x046F' '\0' '\0'
+-- CYRILLIC CAPITAL LETTER PSI
+foldMapping '\x0470' = CM '\x0471' '\0' '\0'
+-- CYRILLIC CAPITAL LETTER FITA
+foldMapping '\x0472' = CM '\x0473' '\0' '\0'
+-- CYRILLIC CAPITAL LETTER IZHITSA
+foldMapping '\x0474' = CM '\x0475' '\0' '\0'
+-- CYRILLIC CAPITAL LETTER IZHITSA WITH DOUBLE GRAVE ACCENT
+foldMapping '\x0476' = CM '\x0477' '\0' '\0'
+-- CYRILLIC CAPITAL LETTER UK
+foldMapping '\x0478' = CM '\x0479' '\0' '\0'
+-- CYRILLIC CAPITAL LETTER ROUND OMEGA
+foldMapping '\x047A' = CM '\x047B' '\0' '\0'
+-- CYRILLIC CAPITAL LETTER OMEGA WITH TITLO
+foldMapping '\x047C' = CM '\x047D' '\0' '\0'
+-- CYRILLIC CAPITAL LETTER OT
+foldMapping '\x047E' = CM '\x047F' '\0' '\0'
+-- CYRILLIC CAPITAL LETTER KOPPA
+foldMapping '\x0480' = CM '\x0481' '\0' '\0'
+-- CYRILLIC CAPITAL LETTER SHORT I WITH TAIL
+foldMapping '\x048A' = CM '\x048B' '\0' '\0'
+-- CYRILLIC CAPITAL LETTER SEMISOFT SIGN
+foldMapping '\x048C' = CM '\x048D' '\0' '\0'
+-- CYRILLIC CAPITAL LETTER ER WITH TICK
+foldMapping '\x048E' = CM '\x048F' '\0' '\0'
+-- CYRILLIC CAPITAL LETTER GHE WITH UPTURN
+foldMapping '\x0490' = CM '\x0491' '\0' '\0'
+-- CYRILLIC CAPITAL LETTER GHE WITH STROKE
+foldMapping '\x0492' = CM '\x0493' '\0' '\0'
+-- CYRILLIC CAPITAL LETTER GHE WITH MIDDLE HOOK
+foldMapping '\x0494' = CM '\x0495' '\0' '\0'
+-- CYRILLIC CAPITAL LETTER ZHE WITH DESCENDER
+foldMapping '\x0496' = CM '\x0497' '\0' '\0'
+-- CYRILLIC CAPITAL LETTER ZE WITH DESCENDER
+foldMapping '\x0498' = CM '\x0499' '\0' '\0'
+-- CYRILLIC CAPITAL LETTER KA WITH DESCENDER
+foldMapping '\x049A' = CM '\x049B' '\0' '\0'
+-- CYRILLIC CAPITAL LETTER KA WITH VERTICAL STROKE
+foldMapping '\x049C' = CM '\x049D' '\0' '\0'
+-- CYRILLIC CAPITAL LETTER KA WITH STROKE
+foldMapping '\x049E' = CM '\x049F' '\0' '\0'
+-- CYRILLIC CAPITAL LETTER BASHKIR KA
+foldMapping '\x04A0' = CM '\x04A1' '\0' '\0'
+-- CYRILLIC CAPITAL LETTER EN WITH DESCENDER
+foldMapping '\x04A2' = CM '\x04A3' '\0' '\0'
+-- CYRILLIC CAPITAL LIGATURE EN GHE
+foldMapping '\x04A4' = CM '\x04A5' '\0' '\0'
+-- CYRILLIC CAPITAL LETTER PE WITH MIDDLE HOOK
+foldMapping '\x04A6' = CM '\x04A7' '\0' '\0'
+-- CYRILLIC CAPITAL LETTER ABKHASIAN HA
+foldMapping '\x04A8' = CM '\x04A9' '\0' '\0'
+-- CYRILLIC CAPITAL LETTER ES WITH DESCENDER
+foldMapping '\x04AA' = CM '\x04AB' '\0' '\0'
+-- CYRILLIC CAPITAL LETTER TE WITH DESCENDER
+foldMapping '\x04AC' = CM '\x04AD' '\0' '\0'
+-- CYRILLIC CAPITAL LETTER STRAIGHT U
+foldMapping '\x04AE' = CM '\x04AF' '\0' '\0'
+-- CYRILLIC CAPITAL LETTER STRAIGHT U WITH STROKE
+foldMapping '\x04B0' = CM '\x04B1' '\0' '\0'
+-- CYRILLIC CAPITAL LETTER HA WITH DESCENDER
+foldMapping '\x04B2' = CM '\x04B3' '\0' '\0'
+-- CYRILLIC CAPITAL LIGATURE TE TSE
+foldMapping '\x04B4' = CM '\x04B5' '\0' '\0'
+-- CYRILLIC CAPITAL LETTER CHE WITH DESCENDER
+foldMapping '\x04B6' = CM '\x04B7' '\0' '\0'
+-- CYRILLIC CAPITAL LETTER CHE WITH VERTICAL STROKE
+foldMapping '\x04B8' = CM '\x04B9' '\0' '\0'
+-- CYRILLIC CAPITAL LETTER SHHA
+foldMapping '\x04BA' = CM '\x04BB' '\0' '\0'
+-- CYRILLIC CAPITAL LETTER ABKHASIAN CHE
+foldMapping '\x04BC' = CM '\x04BD' '\0' '\0'
+-- CYRILLIC CAPITAL LETTER ABKHASIAN CHE WITH DESCENDER
+foldMapping '\x04BE' = CM '\x04BF' '\0' '\0'
+-- CYRILLIC LETTER PALOCHKA
+foldMapping '\x04C0' = CM '\x04CF' '\0' '\0'
+-- CYRILLIC CAPITAL LETTER ZHE WITH BREVE
+foldMapping '\x04C1' = CM '\x04C2' '\0' '\0'
+-- CYRILLIC CAPITAL LETTER KA WITH HOOK
+foldMapping '\x04C3' = CM '\x04C4' '\0' '\0'
+-- CYRILLIC CAPITAL LETTER EL WITH TAIL
+foldMapping '\x04C5' = CM '\x04C6' '\0' '\0'
+-- CYRILLIC CAPITAL LETTER EN WITH HOOK
+foldMapping '\x04C7' = CM '\x04C8' '\0' '\0'
+-- CYRILLIC CAPITAL LETTER EN WITH TAIL
+foldMapping '\x04C9' = CM '\x04CA' '\0' '\0'
+-- CYRILLIC CAPITAL LETTER KHAKASSIAN CHE
+foldMapping '\x04CB' = CM '\x04CC' '\0' '\0'
+-- CYRILLIC CAPITAL LETTER EM WITH TAIL
+foldMapping '\x04CD' = CM '\x04CE' '\0' '\0'
+-- CYRILLIC CAPITAL LETTER A WITH BREVE
+foldMapping '\x04D0' = CM '\x04D1' '\0' '\0'
+-- CYRILLIC CAPITAL LETTER A WITH DIAERESIS
+foldMapping '\x04D2' = CM '\x04D3' '\0' '\0'
+-- CYRILLIC CAPITAL LIGATURE A IE
+foldMapping '\x04D4' = CM '\x04D5' '\0' '\0'
+-- CYRILLIC CAPITAL LETTER IE WITH BREVE
+foldMapping '\x04D6' = CM '\x04D7' '\0' '\0'
+-- CYRILLIC CAPITAL LETTER SCHWA
+foldMapping '\x04D8' = CM '\x04D9' '\0' '\0'
+-- CYRILLIC CAPITAL LETTER SCHWA WITH DIAERESIS
+foldMapping '\x04DA' = CM '\x04DB' '\0' '\0'
+-- CYRILLIC CAPITAL LETTER ZHE WITH DIAERESIS
+foldMapping '\x04DC' = CM '\x04DD' '\0' '\0'
+-- CYRILLIC CAPITAL LETTER ZE WITH DIAERESIS
+foldMapping '\x04DE' = CM '\x04DF' '\0' '\0'
+-- CYRILLIC CAPITAL LETTER ABKHASIAN DZE
+foldMapping '\x04E0' = CM '\x04E1' '\0' '\0'
+-- CYRILLIC CAPITAL LETTER I WITH MACRON
+foldMapping '\x04E2' = CM '\x04E3' '\0' '\0'
+-- CYRILLIC CAPITAL LETTER I WITH DIAERESIS
+foldMapping '\x04E4' = CM '\x04E5' '\0' '\0'
+-- CYRILLIC CAPITAL LETTER O WITH DIAERESIS
+foldMapping '\x04E6' = CM '\x04E7' '\0' '\0'
+-- CYRILLIC CAPITAL LETTER BARRED O
+foldMapping '\x04E8' = CM '\x04E9' '\0' '\0'
+-- CYRILLIC CAPITAL LETTER BARRED O WITH DIAERESIS
+foldMapping '\x04EA' = CM '\x04EB' '\0' '\0'
+-- CYRILLIC CAPITAL LETTER E WITH DIAERESIS
+foldMapping '\x04EC' = CM '\x04ED' '\0' '\0'
+-- CYRILLIC CAPITAL LETTER U WITH MACRON
+foldMapping '\x04EE' = CM '\x04EF' '\0' '\0'
+-- CYRILLIC CAPITAL LETTER U WITH DIAERESIS
+foldMapping '\x04F0' = CM '\x04F1' '\0' '\0'
+-- CYRILLIC CAPITAL LETTER U WITH DOUBLE ACUTE
+foldMapping '\x04F2' = CM '\x04F3' '\0' '\0'
+-- CYRILLIC CAPITAL LETTER CHE WITH DIAERESIS
+foldMapping '\x04F4' = CM '\x04F5' '\0' '\0'
+-- CYRILLIC CAPITAL LETTER GHE WITH DESCENDER
+foldMapping '\x04F6' = CM '\x04F7' '\0' '\0'
+-- CYRILLIC CAPITAL LETTER YERU WITH DIAERESIS
+foldMapping '\x04F8' = CM '\x04F9' '\0' '\0'
+-- CYRILLIC CAPITAL LETTER GHE WITH STROKE AND HOOK
+foldMapping '\x04FA' = CM '\x04FB' '\0' '\0'
+-- CYRILLIC CAPITAL LETTER HA WITH HOOK
+foldMapping '\x04FC' = CM '\x04FD' '\0' '\0'
+-- CYRILLIC CAPITAL LETTER HA WITH STROKE
+foldMapping '\x04FE' = CM '\x04FF' '\0' '\0'
+-- CYRILLIC CAPITAL LETTER KOMI DE
+foldMapping '\x0500' = CM '\x0501' '\0' '\0'
+-- CYRILLIC CAPITAL LETTER KOMI DJE
+foldMapping '\x0502' = CM '\x0503' '\0' '\0'
+-- CYRILLIC CAPITAL LETTER KOMI ZJE
+foldMapping '\x0504' = CM '\x0505' '\0' '\0'
+-- CYRILLIC CAPITAL LETTER KOMI DZJE
+foldMapping '\x0506' = CM '\x0507' '\0' '\0'
+-- CYRILLIC CAPITAL LETTER KOMI LJE
+foldMapping '\x0508' = CM '\x0509' '\0' '\0'
+-- CYRILLIC CAPITAL LETTER KOMI NJE
+foldMapping '\x050A' = CM '\x050B' '\0' '\0'
+-- CYRILLIC CAPITAL LETTER KOMI SJE
+foldMapping '\x050C' = CM '\x050D' '\0' '\0'
+-- CYRILLIC CAPITAL LETTER KOMI TJE
+foldMapping '\x050E' = CM '\x050F' '\0' '\0'
+-- CYRILLIC CAPITAL LETTER REVERSED ZE
+foldMapping '\x0510' = CM '\x0511' '\0' '\0'
+-- CYRILLIC CAPITAL LETTER EL WITH HOOK
+foldMapping '\x0512' = CM '\x0513' '\0' '\0'
+-- CYRILLIC CAPITAL LETTER LHA
+foldMapping '\x0514' = CM '\x0515' '\0' '\0'
+-- CYRILLIC CAPITAL LETTER RHA
+foldMapping '\x0516' = CM '\x0517' '\0' '\0'
+-- CYRILLIC CAPITAL LETTER YAE
+foldMapping '\x0518' = CM '\x0519' '\0' '\0'
+-- CYRILLIC CAPITAL LETTER QA
+foldMapping '\x051A' = CM '\x051B' '\0' '\0'
+-- CYRILLIC CAPITAL LETTER WE
+foldMapping '\x051C' = CM '\x051D' '\0' '\0'
+-- CYRILLIC CAPITAL LETTER ALEUT KA
+foldMapping '\x051E' = CM '\x051F' '\0' '\0'
+-- CYRILLIC CAPITAL LETTER EL WITH MIDDLE HOOK
+foldMapping '\x0520' = CM '\x0521' '\0' '\0'
+-- CYRILLIC CAPITAL LETTER EN WITH MIDDLE HOOK
+foldMapping '\x0522' = CM '\x0523' '\0' '\0'
+-- CYRILLIC CAPITAL LETTER PE WITH DESCENDER
+foldMapping '\x0524' = CM '\x0525' '\0' '\0'
+-- CYRILLIC CAPITAL LETTER SHHA WITH DESCENDER
+foldMapping '\x0526' = CM '\x0527' '\0' '\0'
+-- CYRILLIC CAPITAL LETTER EN WITH LEFT HOOK
+foldMapping '\x0528' = CM '\x0529' '\0' '\0'
+-- CYRILLIC CAPITAL LETTER DZZHE
+foldMapping '\x052A' = CM '\x052B' '\0' '\0'
+-- CYRILLIC CAPITAL LETTER DCHE
+foldMapping '\x052C' = CM '\x052D' '\0' '\0'
+-- CYRILLIC CAPITAL LETTER EL WITH DESCENDER
+foldMapping '\x052E' = CM '\x052F' '\0' '\0'
+-- ARMENIAN CAPITAL LETTER AYB
+foldMapping '\x0531' = CM '\x0561' '\0' '\0'
+-- ARMENIAN CAPITAL LETTER BEN
+foldMapping '\x0532' = CM '\x0562' '\0' '\0'
+-- ARMENIAN CAPITAL LETTER GIM
+foldMapping '\x0533' = CM '\x0563' '\0' '\0'
+-- ARMENIAN CAPITAL LETTER DA
+foldMapping '\x0534' = CM '\x0564' '\0' '\0'
+-- ARMENIAN CAPITAL LETTER ECH
+foldMapping '\x0535' = CM '\x0565' '\0' '\0'
+-- ARMENIAN CAPITAL LETTER ZA
+foldMapping '\x0536' = CM '\x0566' '\0' '\0'
+-- ARMENIAN CAPITAL LETTER EH
+foldMapping '\x0537' = CM '\x0567' '\0' '\0'
+-- ARMENIAN CAPITAL LETTER ET
+foldMapping '\x0538' = CM '\x0568' '\0' '\0'
+-- ARMENIAN CAPITAL LETTER TO
+foldMapping '\x0539' = CM '\x0569' '\0' '\0'
+-- ARMENIAN CAPITAL LETTER ZHE
+foldMapping '\x053A' = CM '\x056A' '\0' '\0'
+-- ARMENIAN CAPITAL LETTER INI
+foldMapping '\x053B' = CM '\x056B' '\0' '\0'
+-- ARMENIAN CAPITAL LETTER LIWN
+foldMapping '\x053C' = CM '\x056C' '\0' '\0'
+-- ARMENIAN CAPITAL LETTER XEH
+foldMapping '\x053D' = CM '\x056D' '\0' '\0'
+-- ARMENIAN CAPITAL LETTER CA
+foldMapping '\x053E' = CM '\x056E' '\0' '\0'
+-- ARMENIAN CAPITAL LETTER KEN
+foldMapping '\x053F' = CM '\x056F' '\0' '\0'
+-- ARMENIAN CAPITAL LETTER HO
+foldMapping '\x0540' = CM '\x0570' '\0' '\0'
+-- ARMENIAN CAPITAL LETTER JA
+foldMapping '\x0541' = CM '\x0571' '\0' '\0'
+-- ARMENIAN CAPITAL LETTER GHAD
+foldMapping '\x0542' = CM '\x0572' '\0' '\0'
+-- ARMENIAN CAPITAL LETTER CHEH
+foldMapping '\x0543' = CM '\x0573' '\0' '\0'
+-- ARMENIAN CAPITAL LETTER MEN
+foldMapping '\x0544' = CM '\x0574' '\0' '\0'
+-- ARMENIAN CAPITAL LETTER YI
+foldMapping '\x0545' = CM '\x0575' '\0' '\0'
+-- ARMENIAN CAPITAL LETTER NOW
+foldMapping '\x0546' = CM '\x0576' '\0' '\0'
+-- ARMENIAN CAPITAL LETTER SHA
+foldMapping '\x0547' = CM '\x0577' '\0' '\0'
+-- ARMENIAN CAPITAL LETTER VO
+foldMapping '\x0548' = CM '\x0578' '\0' '\0'
+-- ARMENIAN CAPITAL LETTER CHA
+foldMapping '\x0549' = CM '\x0579' '\0' '\0'
+-- ARMENIAN CAPITAL LETTER PEH
+foldMapping '\x054A' = CM '\x057A' '\0' '\0'
+-- ARMENIAN CAPITAL LETTER JHEH
+foldMapping '\x054B' = CM '\x057B' '\0' '\0'
+-- ARMENIAN CAPITAL LETTER RA
+foldMapping '\x054C' = CM '\x057C' '\0' '\0'
+-- ARMENIAN CAPITAL LETTER SEH
+foldMapping '\x054D' = CM '\x057D' '\0' '\0'
+-- ARMENIAN CAPITAL LETTER VEW
+foldMapping '\x054E' = CM '\x057E' '\0' '\0'
+-- ARMENIAN CAPITAL LETTER TIWN
+foldMapping '\x054F' = CM '\x057F' '\0' '\0'
+-- ARMENIAN CAPITAL LETTER REH
+foldMapping '\x0550' = CM '\x0580' '\0' '\0'
+-- ARMENIAN CAPITAL LETTER CO
+foldMapping '\x0551' = CM '\x0581' '\0' '\0'
+-- ARMENIAN CAPITAL LETTER YIWN
+foldMapping '\x0552' = CM '\x0582' '\0' '\0'
+-- ARMENIAN CAPITAL LETTER PIWR
+foldMapping '\x0553' = CM '\x0583' '\0' '\0'
+-- ARMENIAN CAPITAL LETTER KEH
+foldMapping '\x0554' = CM '\x0584' '\0' '\0'
+-- ARMENIAN CAPITAL LETTER OH
+foldMapping '\x0555' = CM '\x0585' '\0' '\0'
+-- ARMENIAN CAPITAL LETTER FEH
+foldMapping '\x0556' = CM '\x0586' '\0' '\0'
+-- ARMENIAN SMALL LIGATURE ECH YIWN
+foldMapping '\x0587' = CM '\x0565' '\x0582' '\0'
+-- GEORGIAN CAPITAL LETTER AN
+foldMapping '\x10A0' = CM '\x2D00' '\0' '\0'
+-- GEORGIAN CAPITAL LETTER BAN
+foldMapping '\x10A1' = CM '\x2D01' '\0' '\0'
+-- GEORGIAN CAPITAL LETTER GAN
+foldMapping '\x10A2' = CM '\x2D02' '\0' '\0'
+-- GEORGIAN CAPITAL LETTER DON
+foldMapping '\x10A3' = CM '\x2D03' '\0' '\0'
+-- GEORGIAN CAPITAL LETTER EN
+foldMapping '\x10A4' = CM '\x2D04' '\0' '\0'
+-- GEORGIAN CAPITAL LETTER VIN
+foldMapping '\x10A5' = CM '\x2D05' '\0' '\0'
+-- GEORGIAN CAPITAL LETTER ZEN
+foldMapping '\x10A6' = CM '\x2D06' '\0' '\0'
+-- GEORGIAN CAPITAL LETTER TAN
+foldMapping '\x10A7' = CM '\x2D07' '\0' '\0'
+-- GEORGIAN CAPITAL LETTER IN
+foldMapping '\x10A8' = CM '\x2D08' '\0' '\0'
+-- GEORGIAN CAPITAL LETTER KAN
+foldMapping '\x10A9' = CM '\x2D09' '\0' '\0'
+-- GEORGIAN CAPITAL LETTER LAS
+foldMapping '\x10AA' = CM '\x2D0A' '\0' '\0'
+-- GEORGIAN CAPITAL LETTER MAN
+foldMapping '\x10AB' = CM '\x2D0B' '\0' '\0'
+-- GEORGIAN CAPITAL LETTER NAR
+foldMapping '\x10AC' = CM '\x2D0C' '\0' '\0'
+-- GEORGIAN CAPITAL LETTER ON
+foldMapping '\x10AD' = CM '\x2D0D' '\0' '\0'
+-- GEORGIAN CAPITAL LETTER PAR
+foldMapping '\x10AE' = CM '\x2D0E' '\0' '\0'
+-- GEORGIAN CAPITAL LETTER ZHAR
+foldMapping '\x10AF' = CM '\x2D0F' '\0' '\0'
+-- GEORGIAN CAPITAL LETTER RAE
+foldMapping '\x10B0' = CM '\x2D10' '\0' '\0'
+-- GEORGIAN CAPITAL LETTER SAN
+foldMapping '\x10B1' = CM '\x2D11' '\0' '\0'
+-- GEORGIAN CAPITAL LETTER TAR
+foldMapping '\x10B2' = CM '\x2D12' '\0' '\0'
+-- GEORGIAN CAPITAL LETTER UN
+foldMapping '\x10B3' = CM '\x2D13' '\0' '\0'
+-- GEORGIAN CAPITAL LETTER PHAR
+foldMapping '\x10B4' = CM '\x2D14' '\0' '\0'
+-- GEORGIAN CAPITAL LETTER KHAR
+foldMapping '\x10B5' = CM '\x2D15' '\0' '\0'
+-- GEORGIAN CAPITAL LETTER GHAN
+foldMapping '\x10B6' = CM '\x2D16' '\0' '\0'
+-- GEORGIAN CAPITAL LETTER QAR
+foldMapping '\x10B7' = CM '\x2D17' '\0' '\0'
+-- GEORGIAN CAPITAL LETTER SHIN
+foldMapping '\x10B8' = CM '\x2D18' '\0' '\0'
+-- GEORGIAN CAPITAL LETTER CHIN
+foldMapping '\x10B9' = CM '\x2D19' '\0' '\0'
+-- GEORGIAN CAPITAL LETTER CAN
+foldMapping '\x10BA' = CM '\x2D1A' '\0' '\0'
+-- GEORGIAN CAPITAL LETTER JIL
+foldMapping '\x10BB' = CM '\x2D1B' '\0' '\0'
+-- GEORGIAN CAPITAL LETTER CIL
+foldMapping '\x10BC' = CM '\x2D1C' '\0' '\0'
+-- GEORGIAN CAPITAL LETTER CHAR
+foldMapping '\x10BD' = CM '\x2D1D' '\0' '\0'
+-- GEORGIAN CAPITAL LETTER XAN
+foldMapping '\x10BE' = CM '\x2D1E' '\0' '\0'
+-- GEORGIAN CAPITAL LETTER JHAN
+foldMapping '\x10BF' = CM '\x2D1F' '\0' '\0'
+-- GEORGIAN CAPITAL LETTER HAE
+foldMapping '\x10C0' = CM '\x2D20' '\0' '\0'
+-- GEORGIAN CAPITAL LETTER HE
+foldMapping '\x10C1' = CM '\x2D21' '\0' '\0'
+-- GEORGIAN CAPITAL LETTER HIE
+foldMapping '\x10C2' = CM '\x2D22' '\0' '\0'
+-- GEORGIAN CAPITAL LETTER WE
+foldMapping '\x10C3' = CM '\x2D23' '\0' '\0'
+-- GEORGIAN CAPITAL LETTER HAR
+foldMapping '\x10C4' = CM '\x2D24' '\0' '\0'
+-- GEORGIAN CAPITAL LETTER HOE
+foldMapping '\x10C5' = CM '\x2D25' '\0' '\0'
+-- GEORGIAN CAPITAL LETTER YN
+foldMapping '\x10C7' = CM '\x2D27' '\0' '\0'
+-- GEORGIAN CAPITAL LETTER AEN
+foldMapping '\x10CD' = CM '\x2D2D' '\0' '\0'
+-- CHEROKEE SMALL LETTER YE
+foldMapping '\x13F8' = CM '\x13F0' '\0' '\0'
+-- CHEROKEE SMALL LETTER YI
+foldMapping '\x13F9' = CM '\x13F1' '\0' '\0'
+-- CHEROKEE SMALL LETTER YO
+foldMapping '\x13FA' = CM '\x13F2' '\0' '\0'
+-- CHEROKEE SMALL LETTER YU
+foldMapping '\x13FB' = CM '\x13F3' '\0' '\0'
+-- CHEROKEE SMALL LETTER YV
+foldMapping '\x13FC' = CM '\x13F4' '\0' '\0'
+-- CHEROKEE SMALL LETTER MV
+foldMapping '\x13FD' = CM '\x13F5' '\0' '\0'
+-- CYRILLIC SMALL LETTER ROUNDED VE
+foldMapping '\x1C80' = CM '\x0432' '\0' '\0'
+-- CYRILLIC SMALL LETTER LONG-LEGGED DE
+foldMapping '\x1C81' = CM '\x0434' '\0' '\0'
+-- CYRILLIC SMALL LETTER NARROW O
+foldMapping '\x1C82' = CM '\x043E' '\0' '\0'
+-- CYRILLIC SMALL LETTER WIDE ES
+foldMapping '\x1C83' = CM '\x0441' '\0' '\0'
+-- CYRILLIC SMALL LETTER TALL TE
+foldMapping '\x1C84' = CM '\x0442' '\0' '\0'
+-- CYRILLIC SMALL LETTER THREE-LEGGED TE
+foldMapping '\x1C85' = CM '\x0442' '\0' '\0'
+-- CYRILLIC SMALL LETTER TALL HARD SIGN
+foldMapping '\x1C86' = CM '\x044A' '\0' '\0'
+-- CYRILLIC SMALL LETTER TALL YAT
+foldMapping '\x1C87' = CM '\x0463' '\0' '\0'
+-- CYRILLIC SMALL LETTER UNBLENDED UK
+foldMapping '\x1C88' = CM '\xA64B' '\0' '\0'
+-- LATIN CAPITAL LETTER A WITH RING BELOW
+foldMapping '\x1E00' = CM '\x1E01' '\0' '\0'
+-- LATIN CAPITAL LETTER B WITH DOT ABOVE
+foldMapping '\x1E02' = CM '\x1E03' '\0' '\0'
+-- LATIN CAPITAL LETTER B WITH DOT BELOW
+foldMapping '\x1E04' = CM '\x1E05' '\0' '\0'
+-- LATIN CAPITAL LETTER B WITH LINE BELOW
+foldMapping '\x1E06' = CM '\x1E07' '\0' '\0'
+-- LATIN CAPITAL LETTER C WITH CEDILLA AND ACUTE
+foldMapping '\x1E08' = CM '\x1E09' '\0' '\0'
+-- LATIN CAPITAL LETTER D WITH DOT ABOVE
+foldMapping '\x1E0A' = CM '\x1E0B' '\0' '\0'
+-- LATIN CAPITAL LETTER D WITH DOT BELOW
+foldMapping '\x1E0C' = CM '\x1E0D' '\0' '\0'
+-- LATIN CAPITAL LETTER D WITH LINE BELOW
+foldMapping '\x1E0E' = CM '\x1E0F' '\0' '\0'
+-- LATIN CAPITAL LETTER D WITH CEDILLA
+foldMapping '\x1E10' = CM '\x1E11' '\0' '\0'
+-- LATIN CAPITAL LETTER D WITH CIRCUMFLEX BELOW
+foldMapping '\x1E12' = CM '\x1E13' '\0' '\0'
+-- LATIN CAPITAL LETTER E WITH MACRON AND GRAVE
+foldMapping '\x1E14' = CM '\x1E15' '\0' '\0'
+-- LATIN CAPITAL LETTER E WITH MACRON AND ACUTE
+foldMapping '\x1E16' = CM '\x1E17' '\0' '\0'
+-- LATIN CAPITAL LETTER E WITH CIRCUMFLEX BELOW
+foldMapping '\x1E18' = CM '\x1E19' '\0' '\0'
+-- LATIN CAPITAL LETTER E WITH TILDE BELOW
+foldMapping '\x1E1A' = CM '\x1E1B' '\0' '\0'
+-- LATIN CAPITAL LETTER E WITH CEDILLA AND BREVE
+foldMapping '\x1E1C' = CM '\x1E1D' '\0' '\0'
+-- LATIN CAPITAL LETTER F WITH DOT ABOVE
+foldMapping '\x1E1E' = CM '\x1E1F' '\0' '\0'
+-- LATIN CAPITAL LETTER G WITH MACRON
+foldMapping '\x1E20' = CM '\x1E21' '\0' '\0'
+-- LATIN CAPITAL LETTER H WITH DOT ABOVE
+foldMapping '\x1E22' = CM '\x1E23' '\0' '\0'
+-- LATIN CAPITAL LETTER H WITH DOT BELOW
+foldMapping '\x1E24' = CM '\x1E25' '\0' '\0'
+-- LATIN CAPITAL LETTER H WITH DIAERESIS
+foldMapping '\x1E26' = CM '\x1E27' '\0' '\0'
+-- LATIN CAPITAL LETTER H WITH CEDILLA
+foldMapping '\x1E28' = CM '\x1E29' '\0' '\0'
+-- LATIN CAPITAL LETTER H WITH BREVE BELOW
+foldMapping '\x1E2A' = CM '\x1E2B' '\0' '\0'
+-- LATIN CAPITAL LETTER I WITH TILDE BELOW
+foldMapping '\x1E2C' = CM '\x1E2D' '\0' '\0'
+-- LATIN CAPITAL LETTER I WITH DIAERESIS AND ACUTE
+foldMapping '\x1E2E' = CM '\x1E2F' '\0' '\0'
+-- LATIN CAPITAL LETTER K WITH ACUTE
+foldMapping '\x1E30' = CM '\x1E31' '\0' '\0'
+-- LATIN CAPITAL LETTER K WITH DOT BELOW
+foldMapping '\x1E32' = CM '\x1E33' '\0' '\0'
+-- LATIN CAPITAL LETTER K WITH LINE BELOW
+foldMapping '\x1E34' = CM '\x1E35' '\0' '\0'
+-- LATIN CAPITAL LETTER L WITH DOT BELOW
+foldMapping '\x1E36' = CM '\x1E37' '\0' '\0'
+-- LATIN CAPITAL LETTER L WITH DOT BELOW AND MACRON
+foldMapping '\x1E38' = CM '\x1E39' '\0' '\0'
+-- LATIN CAPITAL LETTER L WITH LINE BELOW
+foldMapping '\x1E3A' = CM '\x1E3B' '\0' '\0'
+-- LATIN CAPITAL LETTER L WITH CIRCUMFLEX BELOW
+foldMapping '\x1E3C' = CM '\x1E3D' '\0' '\0'
+-- LATIN CAPITAL LETTER M WITH ACUTE
+foldMapping '\x1E3E' = CM '\x1E3F' '\0' '\0'
+-- LATIN CAPITAL LETTER M WITH DOT ABOVE
+foldMapping '\x1E40' = CM '\x1E41' '\0' '\0'
+-- LATIN CAPITAL LETTER M WITH DOT BELOW
+foldMapping '\x1E42' = CM '\x1E43' '\0' '\0'
+-- LATIN CAPITAL LETTER N WITH DOT ABOVE
+foldMapping '\x1E44' = CM '\x1E45' '\0' '\0'
+-- LATIN CAPITAL LETTER N WITH DOT BELOW
+foldMapping '\x1E46' = CM '\x1E47' '\0' '\0'
+-- LATIN CAPITAL LETTER N WITH LINE BELOW
+foldMapping '\x1E48' = CM '\x1E49' '\0' '\0'
+-- LATIN CAPITAL LETTER N WITH CIRCUMFLEX BELOW
+foldMapping '\x1E4A' = CM '\x1E4B' '\0' '\0'
+-- LATIN CAPITAL LETTER O WITH TILDE AND ACUTE
+foldMapping '\x1E4C' = CM '\x1E4D' '\0' '\0'
+-- LATIN CAPITAL LETTER O WITH TILDE AND DIAERESIS
+foldMapping '\x1E4E' = CM '\x1E4F' '\0' '\0'
+-- LATIN CAPITAL LETTER O WITH MACRON AND GRAVE
+foldMapping '\x1E50' = CM '\x1E51' '\0' '\0'
+-- LATIN CAPITAL LETTER O WITH MACRON AND ACUTE
+foldMapping '\x1E52' = CM '\x1E53' '\0' '\0'
+-- LATIN CAPITAL LETTER P WITH ACUTE
+foldMapping '\x1E54' = CM '\x1E55' '\0' '\0'
+-- LATIN CAPITAL LETTER P WITH DOT ABOVE
+foldMapping '\x1E56' = CM '\x1E57' '\0' '\0'
+-- LATIN CAPITAL LETTER R WITH DOT ABOVE
+foldMapping '\x1E58' = CM '\x1E59' '\0' '\0'
+-- LATIN CAPITAL LETTER R WITH DOT BELOW
+foldMapping '\x1E5A' = CM '\x1E5B' '\0' '\0'
+-- LATIN CAPITAL LETTER R WITH DOT BELOW AND MACRON
+foldMapping '\x1E5C' = CM '\x1E5D' '\0' '\0'
+-- LATIN CAPITAL LETTER R WITH LINE BELOW
+foldMapping '\x1E5E' = CM '\x1E5F' '\0' '\0'
+-- LATIN CAPITAL LETTER S WITH DOT ABOVE
+foldMapping '\x1E60' = CM '\x1E61' '\0' '\0'
+-- LATIN CAPITAL LETTER S WITH DOT BELOW
+foldMapping '\x1E62' = CM '\x1E63' '\0' '\0'
+-- LATIN CAPITAL LETTER S WITH ACUTE AND DOT ABOVE
+foldMapping '\x1E64' = CM '\x1E65' '\0' '\0'
+-- LATIN CAPITAL LETTER S WITH CARON AND DOT ABOVE
+foldMapping '\x1E66' = CM '\x1E67' '\0' '\0'
+-- LATIN CAPITAL LETTER S WITH DOT BELOW AND DOT ABOVE
+foldMapping '\x1E68' = CM '\x1E69' '\0' '\0'
+-- LATIN CAPITAL LETTER T WITH DOT ABOVE
+foldMapping '\x1E6A' = CM '\x1E6B' '\0' '\0'
+-- LATIN CAPITAL LETTER T WITH DOT BELOW
+foldMapping '\x1E6C' = CM '\x1E6D' '\0' '\0'
+-- LATIN CAPITAL LETTER T WITH LINE BELOW
+foldMapping '\x1E6E' = CM '\x1E6F' '\0' '\0'
+-- LATIN CAPITAL LETTER T WITH CIRCUMFLEX BELOW
+foldMapping '\x1E70' = CM '\x1E71' '\0' '\0'
+-- LATIN CAPITAL LETTER U WITH DIAERESIS BELOW
+foldMapping '\x1E72' = CM '\x1E73' '\0' '\0'
+-- LATIN CAPITAL LETTER U WITH TILDE BELOW
+foldMapping '\x1E74' = CM '\x1E75' '\0' '\0'
+-- LATIN CAPITAL LETTER U WITH CIRCUMFLEX BELOW
+foldMapping '\x1E76' = CM '\x1E77' '\0' '\0'
+-- LATIN CAPITAL LETTER U WITH TILDE AND ACUTE
+foldMapping '\x1E78' = CM '\x1E79' '\0' '\0'
+-- LATIN CAPITAL LETTER U WITH MACRON AND DIAERESIS
+foldMapping '\x1E7A' = CM '\x1E7B' '\0' '\0'
+-- LATIN CAPITAL LETTER V WITH TILDE
+foldMapping '\x1E7C' = CM '\x1E7D' '\0' '\0'
+-- LATIN CAPITAL LETTER V WITH DOT BELOW
+foldMapping '\x1E7E' = CM '\x1E7F' '\0' '\0'
+-- LATIN CAPITAL LETTER W WITH GRAVE
+foldMapping '\x1E80' = CM '\x1E81' '\0' '\0'
+-- LATIN CAPITAL LETTER W WITH ACUTE
+foldMapping '\x1E82' = CM '\x1E83' '\0' '\0'
+-- LATIN CAPITAL LETTER W WITH DIAERESIS
+foldMapping '\x1E84' = CM '\x1E85' '\0' '\0'
+-- LATIN CAPITAL LETTER W WITH DOT ABOVE
+foldMapping '\x1E86' = CM '\x1E87' '\0' '\0'
+-- LATIN CAPITAL LETTER W WITH DOT BELOW
+foldMapping '\x1E88' = CM '\x1E89' '\0' '\0'
+-- LATIN CAPITAL LETTER X WITH DOT ABOVE
+foldMapping '\x1E8A' = CM '\x1E8B' '\0' '\0'
+-- LATIN CAPITAL LETTER X WITH DIAERESIS
+foldMapping '\x1E8C' = CM '\x1E8D' '\0' '\0'
+-- LATIN CAPITAL LETTER Y WITH DOT ABOVE
+foldMapping '\x1E8E' = CM '\x1E8F' '\0' '\0'
+-- LATIN CAPITAL LETTER Z WITH CIRCUMFLEX
+foldMapping '\x1E90' = CM '\x1E91' '\0' '\0'
+-- LATIN CAPITAL LETTER Z WITH DOT BELOW
+foldMapping '\x1E92' = CM '\x1E93' '\0' '\0'
+-- LATIN CAPITAL LETTER Z WITH LINE BELOW
+foldMapping '\x1E94' = CM '\x1E95' '\0' '\0'
+-- LATIN SMALL LETTER H WITH LINE BELOW
+foldMapping '\x1E96' = CM '\x0068' '\x0331' '\0'
+-- LATIN SMALL LETTER T WITH DIAERESIS
+foldMapping '\x1E97' = CM '\x0074' '\x0308' '\0'
+-- LATIN SMALL LETTER W WITH RING ABOVE
+foldMapping '\x1E98' = CM '\x0077' '\x030A' '\0'
+-- LATIN SMALL LETTER Y WITH RING ABOVE
+foldMapping '\x1E99' = CM '\x0079' '\x030A' '\0'
+-- LATIN SMALL LETTER A WITH RIGHT HALF RING
+foldMapping '\x1E9A' = CM '\x0061' '\x02BE' '\0'
+-- LATIN SMALL LETTER LONG S WITH DOT ABOVE
+foldMapping '\x1E9B' = CM '\x1E61' '\0' '\0'
+-- LATIN CAPITAL LETTER SHARP S
+foldMapping '\x1E9E' = CM '\x0073' '\x0073' '\0'
+-- LATIN CAPITAL LETTER A WITH DOT BELOW
+foldMapping '\x1EA0' = CM '\x1EA1' '\0' '\0'
+-- LATIN CAPITAL LETTER A WITH HOOK ABOVE
+foldMapping '\x1EA2' = CM '\x1EA3' '\0' '\0'
+-- LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND ACUTE
+foldMapping '\x1EA4' = CM '\x1EA5' '\0' '\0'
+-- LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND GRAVE
+foldMapping '\x1EA6' = CM '\x1EA7' '\0' '\0'
+-- LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND HOOK ABOVE
+foldMapping '\x1EA8' = CM '\x1EA9' '\0' '\0'
+-- LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND TILDE
+foldMapping '\x1EAA' = CM '\x1EAB' '\0' '\0'
+-- LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND DOT BELOW
+foldMapping '\x1EAC' = CM '\x1EAD' '\0' '\0'
+-- LATIN CAPITAL LETTER A WITH BREVE AND ACUTE
+foldMapping '\x1EAE' = CM '\x1EAF' '\0' '\0'
+-- LATIN CAPITAL LETTER A WITH BREVE AND GRAVE
+foldMapping '\x1EB0' = CM '\x1EB1' '\0' '\0'
+-- LATIN CAPITAL LETTER A WITH BREVE AND HOOK ABOVE
+foldMapping '\x1EB2' = CM '\x1EB3' '\0' '\0'
+-- LATIN CAPITAL LETTER A WITH BREVE AND TILDE
+foldMapping '\x1EB4' = CM '\x1EB5' '\0' '\0'
+-- LATIN CAPITAL LETTER A WITH BREVE AND DOT BELOW
+foldMapping '\x1EB6' = CM '\x1EB7' '\0' '\0'
+-- LATIN CAPITAL LETTER E WITH DOT BELOW
+foldMapping '\x1EB8' = CM '\x1EB9' '\0' '\0'
+-- LATIN CAPITAL LETTER E WITH HOOK ABOVE
+foldMapping '\x1EBA' = CM '\x1EBB' '\0' '\0'
+-- LATIN CAPITAL LETTER E WITH TILDE
+foldMapping '\x1EBC' = CM '\x1EBD' '\0' '\0'
+-- LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND ACUTE
+foldMapping '\x1EBE' = CM '\x1EBF' '\0' '\0'
+-- LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND GRAVE
+foldMapping '\x1EC0' = CM '\x1EC1' '\0' '\0'
+-- LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND HOOK ABOVE
+foldMapping '\x1EC2' = CM '\x1EC3' '\0' '\0'
+-- LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND TILDE
+foldMapping '\x1EC4' = CM '\x1EC5' '\0' '\0'
+-- LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND DOT BELOW
+foldMapping '\x1EC6' = CM '\x1EC7' '\0' '\0'
+-- LATIN CAPITAL LETTER I WITH HOOK ABOVE
+foldMapping '\x1EC8' = CM '\x1EC9' '\0' '\0'
+-- LATIN CAPITAL LETTER I WITH DOT BELOW
+foldMapping '\x1ECA' = CM '\x1ECB' '\0' '\0'
+-- LATIN CAPITAL LETTER O WITH DOT BELOW
+foldMapping '\x1ECC' = CM '\x1ECD' '\0' '\0'
+-- LATIN CAPITAL LETTER O WITH HOOK ABOVE
+foldMapping '\x1ECE' = CM '\x1ECF' '\0' '\0'
+-- LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND ACUTE
+foldMapping '\x1ED0' = CM '\x1ED1' '\0' '\0'
+-- LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND GRAVE
+foldMapping '\x1ED2' = CM '\x1ED3' '\0' '\0'
+-- LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND HOOK ABOVE
+foldMapping '\x1ED4' = CM '\x1ED5' '\0' '\0'
+-- LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND TILDE
+foldMapping '\x1ED6' = CM '\x1ED7' '\0' '\0'
+-- LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND DOT BELOW
+foldMapping '\x1ED8' = CM '\x1ED9' '\0' '\0'
+-- LATIN CAPITAL LETTER O WITH HORN AND ACUTE
+foldMapping '\x1EDA' = CM '\x1EDB' '\0' '\0'
+-- LATIN CAPITAL LETTER O WITH HORN AND GRAVE
+foldMapping '\x1EDC' = CM '\x1EDD' '\0' '\0'
+-- LATIN CAPITAL LETTER O WITH HORN AND HOOK ABOVE
+foldMapping '\x1EDE' = CM '\x1EDF' '\0' '\0'
+-- LATIN CAPITAL LETTER O WITH HORN AND TILDE
+foldMapping '\x1EE0' = CM '\x1EE1' '\0' '\0'
+-- LATIN CAPITAL LETTER O WITH HORN AND DOT BELOW
+foldMapping '\x1EE2' = CM '\x1EE3' '\0' '\0'
+-- LATIN CAPITAL LETTER U WITH DOT BELOW
+foldMapping '\x1EE4' = CM '\x1EE5' '\0' '\0'
+-- LATIN CAPITAL LETTER U WITH HOOK ABOVE
+foldMapping '\x1EE6' = CM '\x1EE7' '\0' '\0'
+-- LATIN CAPITAL LETTER U WITH HORN AND ACUTE
+foldMapping '\x1EE8' = CM '\x1EE9' '\0' '\0'
+-- LATIN CAPITAL LETTER U WITH HORN AND GRAVE
+foldMapping '\x1EEA' = CM '\x1EEB' '\0' '\0'
+-- LATIN CAPITAL LETTER U WITH HORN AND HOOK ABOVE
+foldMapping '\x1EEC' = CM '\x1EED' '\0' '\0'
+-- LATIN CAPITAL LETTER U WITH HORN AND TILDE
+foldMapping '\x1EEE' = CM '\x1EEF' '\0' '\0'
+-- LATIN CAPITAL LETTER U WITH HORN AND DOT BELOW
+foldMapping '\x1EF0' = CM '\x1EF1' '\0' '\0'
+-- LATIN CAPITAL LETTER Y WITH GRAVE
+foldMapping '\x1EF2' = CM '\x1EF3' '\0' '\0'
+-- LATIN CAPITAL LETTER Y WITH DOT BELOW
+foldMapping '\x1EF4' = CM '\x1EF5' '\0' '\0'
+-- LATIN CAPITAL LETTER Y WITH HOOK ABOVE
+foldMapping '\x1EF6' = CM '\x1EF7' '\0' '\0'
+-- LATIN CAPITAL LETTER Y WITH TILDE
+foldMapping '\x1EF8' = CM '\x1EF9' '\0' '\0'
+-- LATIN CAPITAL LETTER MIDDLE-WELSH LL
+foldMapping '\x1EFA' = CM '\x1EFB' '\0' '\0'
+-- LATIN CAPITAL LETTER MIDDLE-WELSH V
+foldMapping '\x1EFC' = CM '\x1EFD' '\0' '\0'
+-- LATIN CAPITAL LETTER Y WITH LOOP
+foldMapping '\x1EFE' = CM '\x1EFF' '\0' '\0'
+-- GREEK CAPITAL LETTER ALPHA WITH PSILI
+foldMapping '\x1F08' = CM '\x1F00' '\0' '\0'
+-- GREEK CAPITAL LETTER ALPHA WITH DASIA
+foldMapping '\x1F09' = CM '\x1F01' '\0' '\0'
+-- GREEK CAPITAL LETTER ALPHA WITH PSILI AND VARIA
+foldMapping '\x1F0A' = CM '\x1F02' '\0' '\0'
+-- GREEK CAPITAL LETTER ALPHA WITH DASIA AND VARIA
+foldMapping '\x1F0B' = CM '\x1F03' '\0' '\0'
+-- GREEK CAPITAL LETTER ALPHA WITH PSILI AND OXIA
+foldMapping '\x1F0C' = CM '\x1F04' '\0' '\0'
+-- GREEK CAPITAL LETTER ALPHA WITH DASIA AND OXIA
+foldMapping '\x1F0D' = CM '\x1F05' '\0' '\0'
+-- GREEK CAPITAL LETTER ALPHA WITH PSILI AND PERISPOMENI
+foldMapping '\x1F0E' = CM '\x1F06' '\0' '\0'
+-- GREEK CAPITAL LETTER ALPHA WITH DASIA AND PERISPOMENI
+foldMapping '\x1F0F' = CM '\x1F07' '\0' '\0'
+-- GREEK CAPITAL LETTER EPSILON WITH PSILI
+foldMapping '\x1F18' = CM '\x1F10' '\0' '\0'
+-- GREEK CAPITAL LETTER EPSILON WITH DASIA
+foldMapping '\x1F19' = CM '\x1F11' '\0' '\0'
+-- GREEK CAPITAL LETTER EPSILON WITH PSILI AND VARIA
+foldMapping '\x1F1A' = CM '\x1F12' '\0' '\0'
+-- GREEK CAPITAL LETTER EPSILON WITH DASIA AND VARIA
+foldMapping '\x1F1B' = CM '\x1F13' '\0' '\0'
+-- GREEK CAPITAL LETTER EPSILON WITH PSILI AND OXIA
+foldMapping '\x1F1C' = CM '\x1F14' '\0' '\0'
+-- GREEK CAPITAL LETTER EPSILON WITH DASIA AND OXIA
+foldMapping '\x1F1D' = CM '\x1F15' '\0' '\0'
+-- GREEK CAPITAL LETTER ETA WITH PSILI
+foldMapping '\x1F28' = CM '\x1F20' '\0' '\0'
+-- GREEK CAPITAL LETTER ETA WITH DASIA
+foldMapping '\x1F29' = CM '\x1F21' '\0' '\0'
+-- GREEK CAPITAL LETTER ETA WITH PSILI AND VARIA
+foldMapping '\x1F2A' = CM '\x1F22' '\0' '\0'
+-- GREEK CAPITAL LETTER ETA WITH DASIA AND VARIA
+foldMapping '\x1F2B' = CM '\x1F23' '\0' '\0'
+-- GREEK CAPITAL LETTER ETA WITH PSILI AND OXIA
+foldMapping '\x1F2C' = CM '\x1F24' '\0' '\0'
+-- GREEK CAPITAL LETTER ETA WITH DASIA AND OXIA
+foldMapping '\x1F2D' = CM '\x1F25' '\0' '\0'
+-- GREEK CAPITAL LETTER ETA WITH PSILI AND PERISPOMENI
+foldMapping '\x1F2E' = CM '\x1F26' '\0' '\0'
+-- GREEK CAPITAL LETTER ETA WITH DASIA AND PERISPOMENI
+foldMapping '\x1F2F' = CM '\x1F27' '\0' '\0'
+-- GREEK CAPITAL LETTER IOTA WITH PSILI
+foldMapping '\x1F38' = CM '\x1F30' '\0' '\0'
+-- GREEK CAPITAL LETTER IOTA WITH DASIA
+foldMapping '\x1F39' = CM '\x1F31' '\0' '\0'
+-- GREEK CAPITAL LETTER IOTA WITH PSILI AND VARIA
+foldMapping '\x1F3A' = CM '\x1F32' '\0' '\0'
+-- GREEK CAPITAL LETTER IOTA WITH DASIA AND VARIA
+foldMapping '\x1F3B' = CM '\x1F33' '\0' '\0'
+-- GREEK CAPITAL LETTER IOTA WITH PSILI AND OXIA
+foldMapping '\x1F3C' = CM '\x1F34' '\0' '\0'
+-- GREEK CAPITAL LETTER IOTA WITH DASIA AND OXIA
+foldMapping '\x1F3D' = CM '\x1F35' '\0' '\0'
+-- GREEK CAPITAL LETTER IOTA WITH PSILI AND PERISPOMENI
+foldMapping '\x1F3E' = CM '\x1F36' '\0' '\0'
+-- GREEK CAPITAL LETTER IOTA WITH DASIA AND PERISPOMENI
+foldMapping '\x1F3F' = CM '\x1F37' '\0' '\0'
+-- GREEK CAPITAL LETTER OMICRON WITH PSILI
+foldMapping '\x1F48' = CM '\x1F40' '\0' '\0'
+-- GREEK CAPITAL LETTER OMICRON WITH DASIA
+foldMapping '\x1F49' = CM '\x1F41' '\0' '\0'
+-- GREEK CAPITAL LETTER OMICRON WITH PSILI AND VARIA
+foldMapping '\x1F4A' = CM '\x1F42' '\0' '\0'
+-- GREEK CAPITAL LETTER OMICRON WITH DASIA AND VARIA
+foldMapping '\x1F4B' = CM '\x1F43' '\0' '\0'
+-- GREEK CAPITAL LETTER OMICRON WITH PSILI AND OXIA
+foldMapping '\x1F4C' = CM '\x1F44' '\0' '\0'
+-- GREEK CAPITAL LETTER OMICRON WITH DASIA AND OXIA
+foldMapping '\x1F4D' = CM '\x1F45' '\0' '\0'
+-- GREEK SMALL LETTER UPSILON WITH PSILI
+foldMapping '\x1F50' = CM '\x03C5' '\x0313' '\0'
+-- GREEK SMALL LETTER UPSILON WITH PSILI AND VARIA
+foldMapping '\x1F52' = CM '\x03C5' '\x0313' '\x0300'
+-- GREEK SMALL LETTER UPSILON WITH PSILI AND OXIA
+foldMapping '\x1F54' = CM '\x03C5' '\x0313' '\x0301'
+-- GREEK SMALL LETTER UPSILON WITH PSILI AND PERISPOMENI
+foldMapping '\x1F56' = CM '\x03C5' '\x0313' '\x0342'
+-- GREEK CAPITAL LETTER UPSILON WITH DASIA
+foldMapping '\x1F59' = CM '\x1F51' '\0' '\0'
+-- GREEK CAPITAL LETTER UPSILON WITH DASIA AND VARIA
+foldMapping '\x1F5B' = CM '\x1F53' '\0' '\0'
+-- GREEK CAPITAL LETTER UPSILON WITH DASIA AND OXIA
+foldMapping '\x1F5D' = CM '\x1F55' '\0' '\0'
+-- GREEK CAPITAL LETTER UPSILON WITH DASIA AND PERISPOMENI
+foldMapping '\x1F5F' = CM '\x1F57' '\0' '\0'
+-- GREEK CAPITAL LETTER OMEGA WITH PSILI
+foldMapping '\x1F68' = CM '\x1F60' '\0' '\0'
+-- GREEK CAPITAL LETTER OMEGA WITH DASIA
+foldMapping '\x1F69' = CM '\x1F61' '\0' '\0'
+-- GREEK CAPITAL LETTER OMEGA WITH PSILI AND VARIA
+foldMapping '\x1F6A' = CM '\x1F62' '\0' '\0'
+-- GREEK CAPITAL LETTER OMEGA WITH DASIA AND VARIA
+foldMapping '\x1F6B' = CM '\x1F63' '\0' '\0'
+-- GREEK CAPITAL LETTER OMEGA WITH PSILI AND OXIA
+foldMapping '\x1F6C' = CM '\x1F64' '\0' '\0'
+-- GREEK CAPITAL LETTER OMEGA WITH DASIA AND OXIA
+foldMapping '\x1F6D' = CM '\x1F65' '\0' '\0'
+-- GREEK CAPITAL LETTER OMEGA WITH PSILI AND PERISPOMENI
+foldMapping '\x1F6E' = CM '\x1F66' '\0' '\0'
+-- GREEK CAPITAL LETTER OMEGA WITH DASIA AND PERISPOMENI
+foldMapping '\x1F6F' = CM '\x1F67' '\0' '\0'
+-- GREEK SMALL LETTER ALPHA WITH PSILI AND YPOGEGRAMMENI
+foldMapping '\x1F80' = CM '\x1F00' '\x03B9' '\0'
+-- GREEK SMALL LETTER ALPHA WITH DASIA AND YPOGEGRAMMENI
+foldMapping '\x1F81' = CM '\x1F01' '\x03B9' '\0'
+-- GREEK SMALL LETTER ALPHA WITH PSILI AND VARIA AND YPOGEGRAMMENI
+foldMapping '\x1F82' = CM '\x1F02' '\x03B9' '\0'
+-- GREEK SMALL LETTER ALPHA WITH DASIA AND VARIA AND YPOGEGRAMMENI
+foldMapping '\x1F83' = CM '\x1F03' '\x03B9' '\0'
+-- GREEK SMALL LETTER ALPHA WITH PSILI AND OXIA AND YPOGEGRAMMENI
+foldMapping '\x1F84' = CM '\x1F04' '\x03B9' '\0'
+-- GREEK SMALL LETTER ALPHA WITH DASIA AND OXIA AND YPOGEGRAMMENI
+foldMapping '\x1F85' = CM '\x1F05' '\x03B9' '\0'
+-- GREEK SMALL LETTER ALPHA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI
+foldMapping '\x1F86' = CM '\x1F06' '\x03B9' '\0'
+-- GREEK SMALL LETTER ALPHA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI
+foldMapping '\x1F87' = CM '\x1F07' '\x03B9' '\0'
+-- GREEK CAPITAL LETTER ALPHA WITH PSILI AND PROSGEGRAMMENI
+foldMapping '\x1F88' = CM '\x1F00' '\x03B9' '\0'
+-- GREEK CAPITAL LETTER ALPHA WITH DASIA AND PROSGEGRAMMENI
+foldMapping '\x1F89' = CM '\x1F01' '\x03B9' '\0'
+-- GREEK CAPITAL LETTER ALPHA WITH PSILI AND VARIA AND PROSGEGRAMMENI
+foldMapping '\x1F8A' = CM '\x1F02' '\x03B9' '\0'
+-- GREEK CAPITAL LETTER ALPHA WITH DASIA AND VARIA AND PROSGEGRAMMENI
+foldMapping '\x1F8B' = CM '\x1F03' '\x03B9' '\0'
+-- GREEK CAPITAL LETTER ALPHA WITH PSILI AND OXIA AND PROSGEGRAMMENI
+foldMapping '\x1F8C' = CM '\x1F04' '\x03B9' '\0'
+-- GREEK CAPITAL LETTER ALPHA WITH DASIA AND OXIA AND PROSGEGRAMMENI
+foldMapping '\x1F8D' = CM '\x1F05' '\x03B9' '\0'
+-- GREEK CAPITAL LETTER ALPHA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI
+foldMapping '\x1F8E' = CM '\x1F06' '\x03B9' '\0'
+-- GREEK CAPITAL LETTER ALPHA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI
+foldMapping '\x1F8F' = CM '\x1F07' '\x03B9' '\0'
+-- GREEK SMALL LETTER ETA WITH PSILI AND YPOGEGRAMMENI
+foldMapping '\x1F90' = CM '\x1F20' '\x03B9' '\0'
+-- GREEK SMALL LETTER ETA WITH DASIA AND YPOGEGRAMMENI
+foldMapping '\x1F91' = CM '\x1F21' '\x03B9' '\0'
+-- GREEK SMALL LETTER ETA WITH PSILI AND VARIA AND YPOGEGRAMMENI
+foldMapping '\x1F92' = CM '\x1F22' '\x03B9' '\0'
+-- GREEK SMALL LETTER ETA WITH DASIA AND VARIA AND YPOGEGRAMMENI
+foldMapping '\x1F93' = CM '\x1F23' '\x03B9' '\0'
+-- GREEK SMALL LETTER ETA WITH PSILI AND OXIA AND YPOGEGRAMMENI
+foldMapping '\x1F94' = CM '\x1F24' '\x03B9' '\0'
+-- GREEK SMALL LETTER ETA WITH DASIA AND OXIA AND YPOGEGRAMMENI
+foldMapping '\x1F95' = CM '\x1F25' '\x03B9' '\0'
+-- GREEK SMALL LETTER ETA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI
+foldMapping '\x1F96' = CM '\x1F26' '\x03B9' '\0'
+-- GREEK SMALL LETTER ETA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI
+foldMapping '\x1F97' = CM '\x1F27' '\x03B9' '\0'
+-- GREEK CAPITAL LETTER ETA WITH PSILI AND PROSGEGRAMMENI
+foldMapping '\x1F98' = CM '\x1F20' '\x03B9' '\0'
+-- GREEK CAPITAL LETTER ETA WITH DASIA AND PROSGEGRAMMENI
+foldMapping '\x1F99' = CM '\x1F21' '\x03B9' '\0'
+-- GREEK CAPITAL LETTER ETA WITH PSILI AND VARIA AND PROSGEGRAMMENI
+foldMapping '\x1F9A' = CM '\x1F22' '\x03B9' '\0'
+-- GREEK CAPITAL LETTER ETA WITH DASIA AND VARIA AND PROSGEGRAMMENI
+foldMapping '\x1F9B' = CM '\x1F23' '\x03B9' '\0'
+-- GREEK CAPITAL LETTER ETA WITH PSILI AND OXIA AND PROSGEGRAMMENI
+foldMapping '\x1F9C' = CM '\x1F24' '\x03B9' '\0'
+-- GREEK CAPITAL LETTER ETA WITH DASIA AND OXIA AND PROSGEGRAMMENI
+foldMapping '\x1F9D' = CM '\x1F25' '\x03B9' '\0'
+-- GREEK CAPITAL LETTER ETA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI
+foldMapping '\x1F9E' = CM '\x1F26' '\x03B9' '\0'
+-- GREEK CAPITAL LETTER ETA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI
+foldMapping '\x1F9F' = CM '\x1F27' '\x03B9' '\0'
+-- GREEK SMALL LETTER OMEGA WITH PSILI AND YPOGEGRAMMENI
+foldMapping '\x1FA0' = CM '\x1F60' '\x03B9' '\0'
+-- GREEK SMALL LETTER OMEGA WITH DASIA AND YPOGEGRAMMENI
+foldMapping '\x1FA1' = CM '\x1F61' '\x03B9' '\0'
+-- GREEK SMALL LETTER OMEGA WITH PSILI AND VARIA AND YPOGEGRAMMENI
+foldMapping '\x1FA2' = CM '\x1F62' '\x03B9' '\0'
+-- GREEK SMALL LETTER OMEGA WITH DASIA AND VARIA AND YPOGEGRAMMENI
+foldMapping '\x1FA3' = CM '\x1F63' '\x03B9' '\0'
+-- GREEK SMALL LETTER OMEGA WITH PSILI AND OXIA AND YPOGEGRAMMENI
+foldMapping '\x1FA4' = CM '\x1F64' '\x03B9' '\0'
+-- GREEK SMALL LETTER OMEGA WITH DASIA AND OXIA AND YPOGEGRAMMENI
+foldMapping '\x1FA5' = CM '\x1F65' '\x03B9' '\0'
+-- GREEK SMALL LETTER OMEGA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI
+foldMapping '\x1FA6' = CM '\x1F66' '\x03B9' '\0'
+-- GREEK SMALL LETTER OMEGA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI
+foldMapping '\x1FA7' = CM '\x1F67' '\x03B9' '\0'
+-- GREEK CAPITAL LETTER OMEGA WITH PSILI AND PROSGEGRAMMENI
+foldMapping '\x1FA8' = CM '\x1F60' '\x03B9' '\0'
+-- GREEK CAPITAL LETTER OMEGA WITH DASIA AND PROSGEGRAMMENI
+foldMapping '\x1FA9' = CM '\x1F61' '\x03B9' '\0'
+-- GREEK CAPITAL LETTER OMEGA WITH PSILI AND VARIA AND PROSGEGRAMMENI
+foldMapping '\x1FAA' = CM '\x1F62' '\x03B9' '\0'
+-- GREEK CAPITAL LETTER OMEGA WITH DASIA AND VARIA AND PROSGEGRAMMENI
+foldMapping '\x1FAB' = CM '\x1F63' '\x03B9' '\0'
+-- GREEK CAPITAL LETTER OMEGA WITH PSILI AND OXIA AND PROSGEGRAMMENI
+foldMapping '\x1FAC' = CM '\x1F64' '\x03B9' '\0'
+-- GREEK CAPITAL LETTER OMEGA WITH DASIA AND OXIA AND PROSGEGRAMMENI
+foldMapping '\x1FAD' = CM '\x1F65' '\x03B9' '\0'
+-- GREEK CAPITAL LETTER OMEGA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI
+foldMapping '\x1FAE' = CM '\x1F66' '\x03B9' '\0'
+-- GREEK CAPITAL LETTER OMEGA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI
+foldMapping '\x1FAF' = CM '\x1F67' '\x03B9' '\0'
+-- GREEK SMALL LETTER ALPHA WITH VARIA AND YPOGEGRAMMENI
+foldMapping '\x1FB2' = CM '\x1F70' '\x03B9' '\0'
+-- GREEK SMALL LETTER ALPHA WITH YPOGEGRAMMENI
+foldMapping '\x1FB3' = CM '\x03B1' '\x03B9' '\0'
+-- GREEK SMALL LETTER ALPHA WITH OXIA AND YPOGEGRAMMENI
+foldMapping '\x1FB4' = CM '\x03AC' '\x03B9' '\0'
+-- GREEK SMALL LETTER ALPHA WITH PERISPOMENI
+foldMapping '\x1FB6' = CM '\x03B1' '\x0342' '\0'
+-- GREEK SMALL LETTER ALPHA WITH PERISPOMENI AND YPOGEGRAMMENI
+foldMapping '\x1FB7' = CM '\x03B1' '\x0342' '\x03B9'
+-- GREEK CAPITAL LETTER ALPHA WITH VRACHY
+foldMapping '\x1FB8' = CM '\x1FB0' '\0' '\0'
+-- GREEK CAPITAL LETTER ALPHA WITH MACRON
+foldMapping '\x1FB9' = CM '\x1FB1' '\0' '\0'
+-- GREEK CAPITAL LETTER ALPHA WITH VARIA
+foldMapping '\x1FBA' = CM '\x1F70' '\0' '\0'
+-- GREEK CAPITAL LETTER ALPHA WITH OXIA
+foldMapping '\x1FBB' = CM '\x1F71' '\0' '\0'
+-- GREEK CAPITAL LETTER ALPHA WITH PROSGEGRAMMENI
+foldMapping '\x1FBC' = CM '\x03B1' '\x03B9' '\0'
+-- GREEK PROSGEGRAMMENI
+foldMapping '\x1FBE' = CM '\x03B9' '\0' '\0'
+-- GREEK SMALL LETTER ETA WITH VARIA AND YPOGEGRAMMENI
+foldMapping '\x1FC2' = CM '\x1F74' '\x03B9' '\0'
+-- GREEK SMALL LETTER ETA WITH YPOGEGRAMMENI
+foldMapping '\x1FC3' = CM '\x03B7' '\x03B9' '\0'
+-- GREEK SMALL LETTER ETA WITH OXIA AND YPOGEGRAMMENI
+foldMapping '\x1FC4' = CM '\x03AE' '\x03B9' '\0'
+-- GREEK SMALL LETTER ETA WITH PERISPOMENI
+foldMapping '\x1FC6' = CM '\x03B7' '\x0342' '\0'
+-- GREEK SMALL LETTER ETA WITH PERISPOMENI AND YPOGEGRAMMENI
+foldMapping '\x1FC7' = CM '\x03B7' '\x0342' '\x03B9'
+-- GREEK CAPITAL LETTER EPSILON WITH VARIA
+foldMapping '\x1FC8' = CM '\x1F72' '\0' '\0'
+-- GREEK CAPITAL LETTER EPSILON WITH OXIA
+foldMapping '\x1FC9' = CM '\x1F73' '\0' '\0'
+-- GREEK CAPITAL LETTER ETA WITH VARIA
+foldMapping '\x1FCA' = CM '\x1F74' '\0' '\0'
+-- GREEK CAPITAL LETTER ETA WITH OXIA
+foldMapping '\x1FCB' = CM '\x1F75' '\0' '\0'
+-- GREEK CAPITAL LETTER ETA WITH PROSGEGRAMMENI
+foldMapping '\x1FCC' = CM '\x03B7' '\x03B9' '\0'
+-- GREEK SMALL LETTER IOTA WITH DIALYTIKA AND VARIA
+foldMapping '\x1FD2' = CM '\x03B9' '\x0308' '\x0300'
+-- GREEK SMALL LETTER IOTA WITH DIALYTIKA AND OXIA
+foldMapping '\x1FD3' = CM '\x03B9' '\x0308' '\x0301'
+-- GREEK SMALL LETTER IOTA WITH PERISPOMENI
+foldMapping '\x1FD6' = CM '\x03B9' '\x0342' '\0'
+-- GREEK SMALL LETTER IOTA WITH DIALYTIKA AND PERISPOMENI
+foldMapping '\x1FD7' = CM '\x03B9' '\x0308' '\x0342'
+-- GREEK CAPITAL LETTER IOTA WITH VRACHY
+foldMapping '\x1FD8' = CM '\x1FD0' '\0' '\0'
+-- GREEK CAPITAL LETTER IOTA WITH MACRON
+foldMapping '\x1FD9' = CM '\x1FD1' '\0' '\0'
+-- GREEK CAPITAL LETTER IOTA WITH VARIA
+foldMapping '\x1FDA' = CM '\x1F76' '\0' '\0'
+-- GREEK CAPITAL LETTER IOTA WITH OXIA
+foldMapping '\x1FDB' = CM '\x1F77' '\0' '\0'
+-- GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND VARIA
+foldMapping '\x1FE2' = CM '\x03C5' '\x0308' '\x0300'
+-- GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND OXIA
+foldMapping '\x1FE3' = CM '\x03C5' '\x0308' '\x0301'
+-- GREEK SMALL LETTER RHO WITH PSILI
+foldMapping '\x1FE4' = CM '\x03C1' '\x0313' '\0'
+-- GREEK SMALL LETTER UPSILON WITH PERISPOMENI
+foldMapping '\x1FE6' = CM '\x03C5' '\x0342' '\0'
+-- GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND PERISPOMENI
+foldMapping '\x1FE7' = CM '\x03C5' '\x0308' '\x0342'
+-- GREEK CAPITAL LETTER UPSILON WITH VRACHY
+foldMapping '\x1FE8' = CM '\x1FE0' '\0' '\0'
+-- GREEK CAPITAL LETTER UPSILON WITH MACRON
+foldMapping '\x1FE9' = CM '\x1FE1' '\0' '\0'
+-- GREEK CAPITAL LETTER UPSILON WITH VARIA
+foldMapping '\x1FEA' = CM '\x1F7A' '\0' '\0'
+-- GREEK CAPITAL LETTER UPSILON WITH OXIA
+foldMapping '\x1FEB' = CM '\x1F7B' '\0' '\0'
+-- GREEK CAPITAL LETTER RHO WITH DASIA
+foldMapping '\x1FEC' = CM '\x1FE5' '\0' '\0'
+-- GREEK SMALL LETTER OMEGA WITH VARIA AND YPOGEGRAMMENI
+foldMapping '\x1FF2' = CM '\x1F7C' '\x03B9' '\0'
+-- GREEK SMALL LETTER OMEGA WITH YPOGEGRAMMENI
+foldMapping '\x1FF3' = CM '\x03C9' '\x03B9' '\0'
+-- GREEK SMALL LETTER OMEGA WITH OXIA AND YPOGEGRAMMENI
+foldMapping '\x1FF4' = CM '\x03CE' '\x03B9' '\0'
+-- GREEK SMALL LETTER OMEGA WITH PERISPOMENI
+foldMapping '\x1FF6' = CM '\x03C9' '\x0342' '\0'
+-- GREEK SMALL LETTER OMEGA WITH PERISPOMENI AND YPOGEGRAMMENI
+foldMapping '\x1FF7' = CM '\x03C9' '\x0342' '\x03B9'
+-- GREEK CAPITAL LETTER OMICRON WITH VARIA
+foldMapping '\x1FF8' = CM '\x1F78' '\0' '\0'
+-- GREEK CAPITAL LETTER OMICRON WITH OXIA
+foldMapping '\x1FF9' = CM '\x1F79' '\0' '\0'
+-- GREEK CAPITAL LETTER OMEGA WITH VARIA
+foldMapping '\x1FFA' = CM '\x1F7C' '\0' '\0'
+-- GREEK CAPITAL LETTER OMEGA WITH OXIA
+foldMapping '\x1FFB' = CM '\x1F7D' '\0' '\0'
+-- GREEK CAPITAL LETTER OMEGA WITH PROSGEGRAMMENI
+foldMapping '\x1FFC' = CM '\x03C9' '\x03B9' '\0'
+-- OHM SIGN
+foldMapping '\x2126' = CM '\x03C9' '\0' '\0'
+-- KELVIN SIGN
+foldMapping '\x212A' = CM '\x006B' '\0' '\0'
+-- ANGSTROM SIGN
+foldMapping '\x212B' = CM '\x00E5' '\0' '\0'
+-- TURNED CAPITAL F
+foldMapping '\x2132' = CM '\x214E' '\0' '\0'
+-- ROMAN NUMERAL ONE
+foldMapping '\x2160' = CM '\x2170' '\0' '\0'
+-- ROMAN NUMERAL TWO
+foldMapping '\x2161' = CM '\x2171' '\0' '\0'
+-- ROMAN NUMERAL THREE
+foldMapping '\x2162' = CM '\x2172' '\0' '\0'
+-- ROMAN NUMERAL FOUR
+foldMapping '\x2163' = CM '\x2173' '\0' '\0'
+-- ROMAN NUMERAL FIVE
+foldMapping '\x2164' = CM '\x2174' '\0' '\0'
+-- ROMAN NUMERAL SIX
+foldMapping '\x2165' = CM '\x2175' '\0' '\0'
+-- ROMAN NUMERAL SEVEN
+foldMapping '\x2166' = CM '\x2176' '\0' '\0'
+-- ROMAN NUMERAL EIGHT
+foldMapping '\x2167' = CM '\x2177' '\0' '\0'
+-- ROMAN NUMERAL NINE
+foldMapping '\x2168' = CM '\x2178' '\0' '\0'
+-- ROMAN NUMERAL TEN
+foldMapping '\x2169' = CM '\x2179' '\0' '\0'
+-- ROMAN NUMERAL ELEVEN
+foldMapping '\x216A' = CM '\x217A' '\0' '\0'
+-- ROMAN NUMERAL TWELVE
+foldMapping '\x216B' = CM '\x217B' '\0' '\0'
+-- ROMAN NUMERAL FIFTY
+foldMapping '\x216C' = CM '\x217C' '\0' '\0'
+-- ROMAN NUMERAL ONE HUNDRED
+foldMapping '\x216D' = CM '\x217D' '\0' '\0'
+-- ROMAN NUMERAL FIVE HUNDRED
+foldMapping '\x216E' = CM '\x217E' '\0' '\0'
+-- ROMAN NUMERAL ONE THOUSAND
+foldMapping '\x216F' = CM '\x217F' '\0' '\0'
+-- ROMAN NUMERAL REVERSED ONE HUNDRED
+foldMapping '\x2183' = CM '\x2184' '\0' '\0'
+-- CIRCLED LATIN CAPITAL LETTER A
+foldMapping '\x24B6' = CM '\x24D0' '\0' '\0'
+-- CIRCLED LATIN CAPITAL LETTER B
+foldMapping '\x24B7' = CM '\x24D1' '\0' '\0'
+-- CIRCLED LATIN CAPITAL LETTER C
+foldMapping '\x24B8' = CM '\x24D2' '\0' '\0'
+-- CIRCLED LATIN CAPITAL LETTER D
+foldMapping '\x24B9' = CM '\x24D3' '\0' '\0'
+-- CIRCLED LATIN CAPITAL LETTER E
+foldMapping '\x24BA' = CM '\x24D4' '\0' '\0'
+-- CIRCLED LATIN CAPITAL LETTER F
+foldMapping '\x24BB' = CM '\x24D5' '\0' '\0'
+-- CIRCLED LATIN CAPITAL LETTER G
+foldMapping '\x24BC' = CM '\x24D6' '\0' '\0'
+-- CIRCLED LATIN CAPITAL LETTER H
+foldMapping '\x24BD' = CM '\x24D7' '\0' '\0'
+-- CIRCLED LATIN CAPITAL LETTER I
+foldMapping '\x24BE' = CM '\x24D8' '\0' '\0'
+-- CIRCLED LATIN CAPITAL LETTER J
+foldMapping '\x24BF' = CM '\x24D9' '\0' '\0'
+-- CIRCLED LATIN CAPITAL LETTER K
+foldMapping '\x24C0' = CM '\x24DA' '\0' '\0'
+-- CIRCLED LATIN CAPITAL LETTER L
+foldMapping '\x24C1' = CM '\x24DB' '\0' '\0'
+-- CIRCLED LATIN CAPITAL LETTER M
+foldMapping '\x24C2' = CM '\x24DC' '\0' '\0'
+-- CIRCLED LATIN CAPITAL LETTER N
+foldMapping '\x24C3' = CM '\x24DD' '\0' '\0'
+-- CIRCLED LATIN CAPITAL LETTER O
+foldMapping '\x24C4' = CM '\x24DE' '\0' '\0'
+-- CIRCLED LATIN CAPITAL LETTER P
+foldMapping '\x24C5' = CM '\x24DF' '\0' '\0'
+-- CIRCLED LATIN CAPITAL LETTER Q
+foldMapping '\x24C6' = CM '\x24E0' '\0' '\0'
+-- CIRCLED LATIN CAPITAL LETTER R
+foldMapping '\x24C7' = CM '\x24E1' '\0' '\0'
+-- CIRCLED LATIN CAPITAL LETTER S
+foldMapping '\x24C8' = CM '\x24E2' '\0' '\0'
+-- CIRCLED LATIN CAPITAL LETTER T
+foldMapping '\x24C9' = CM '\x24E3' '\0' '\0'
+-- CIRCLED LATIN CAPITAL LETTER U
+foldMapping '\x24CA' = CM '\x24E4' '\0' '\0'
+-- CIRCLED LATIN CAPITAL LETTER V
+foldMapping '\x24CB' = CM '\x24E5' '\0' '\0'
+-- CIRCLED LATIN CAPITAL LETTER W
+foldMapping '\x24CC' = CM '\x24E6' '\0' '\0'
+-- CIRCLED LATIN CAPITAL LETTER X
+foldMapping '\x24CD' = CM '\x24E7' '\0' '\0'
+-- CIRCLED LATIN CAPITAL LETTER Y
+foldMapping '\x24CE' = CM '\x24E8' '\0' '\0'
+-- CIRCLED LATIN CAPITAL LETTER Z
+foldMapping '\x24CF' = CM '\x24E9' '\0' '\0'
+-- GLAGOLITIC CAPITAL LETTER AZU
+foldMapping '\x2C00' = CM '\x2C30' '\0' '\0'
+-- GLAGOLITIC CAPITAL LETTER BUKY
+foldMapping '\x2C01' = CM '\x2C31' '\0' '\0'
+-- GLAGOLITIC CAPITAL LETTER VEDE
+foldMapping '\x2C02' = CM '\x2C32' '\0' '\0'
+-- GLAGOLITIC CAPITAL LETTER GLAGOLI
+foldMapping '\x2C03' = CM '\x2C33' '\0' '\0'
+-- GLAGOLITIC CAPITAL LETTER DOBRO
+foldMapping '\x2C04' = CM '\x2C34' '\0' '\0'
+-- GLAGOLITIC CAPITAL LETTER YESTU
+foldMapping '\x2C05' = CM '\x2C35' '\0' '\0'
+-- GLAGOLITIC CAPITAL LETTER ZHIVETE
+foldMapping '\x2C06' = CM '\x2C36' '\0' '\0'
+-- GLAGOLITIC CAPITAL LETTER DZELO
+foldMapping '\x2C07' = CM '\x2C37' '\0' '\0'
+-- GLAGOLITIC CAPITAL LETTER ZEMLJA
+foldMapping '\x2C08' = CM '\x2C38' '\0' '\0'
+-- GLAGOLITIC CAPITAL LETTER IZHE
+foldMapping '\x2C09' = CM '\x2C39' '\0' '\0'
+-- GLAGOLITIC CAPITAL LETTER INITIAL IZHE
+foldMapping '\x2C0A' = CM '\x2C3A' '\0' '\0'
+-- GLAGOLITIC CAPITAL LETTER I
+foldMapping '\x2C0B' = CM '\x2C3B' '\0' '\0'
+-- GLAGOLITIC CAPITAL LETTER DJERVI
+foldMapping '\x2C0C' = CM '\x2C3C' '\0' '\0'
+-- GLAGOLITIC CAPITAL LETTER KAKO
+foldMapping '\x2C0D' = CM '\x2C3D' '\0' '\0'
+-- GLAGOLITIC CAPITAL LETTER LJUDIJE
+foldMapping '\x2C0E' = CM '\x2C3E' '\0' '\0'
+-- GLAGOLITIC CAPITAL LETTER MYSLITE
+foldMapping '\x2C0F' = CM '\x2C3F' '\0' '\0'
+-- GLAGOLITIC CAPITAL LETTER NASHI
+foldMapping '\x2C10' = CM '\x2C40' '\0' '\0'
+-- GLAGOLITIC CAPITAL LETTER ONU
+foldMapping '\x2C11' = CM '\x2C41' '\0' '\0'
+-- GLAGOLITIC CAPITAL LETTER POKOJI
+foldMapping '\x2C12' = CM '\x2C42' '\0' '\0'
+-- GLAGOLITIC CAPITAL LETTER RITSI
+foldMapping '\x2C13' = CM '\x2C43' '\0' '\0'
+-- GLAGOLITIC CAPITAL LETTER SLOVO
+foldMapping '\x2C14' = CM '\x2C44' '\0' '\0'
+-- GLAGOLITIC CAPITAL LETTER TVRIDO
+foldMapping '\x2C15' = CM '\x2C45' '\0' '\0'
+-- GLAGOLITIC CAPITAL LETTER UKU
+foldMapping '\x2C16' = CM '\x2C46' '\0' '\0'
+-- GLAGOLITIC CAPITAL LETTER FRITU
+foldMapping '\x2C17' = CM '\x2C47' '\0' '\0'
+-- GLAGOLITIC CAPITAL LETTER HERU
+foldMapping '\x2C18' = CM '\x2C48' '\0' '\0'
+-- GLAGOLITIC CAPITAL LETTER OTU
+foldMapping '\x2C19' = CM '\x2C49' '\0' '\0'
+-- GLAGOLITIC CAPITAL LETTER PE
+foldMapping '\x2C1A' = CM '\x2C4A' '\0' '\0'
+-- GLAGOLITIC CAPITAL LETTER SHTA
+foldMapping '\x2C1B' = CM '\x2C4B' '\0' '\0'
+-- GLAGOLITIC CAPITAL LETTER TSI
+foldMapping '\x2C1C' = CM '\x2C4C' '\0' '\0'
+-- GLAGOLITIC CAPITAL LETTER CHRIVI
+foldMapping '\x2C1D' = CM '\x2C4D' '\0' '\0'
+-- GLAGOLITIC CAPITAL LETTER SHA
+foldMapping '\x2C1E' = CM '\x2C4E' '\0' '\0'
+-- GLAGOLITIC CAPITAL LETTER YERU
+foldMapping '\x2C1F' = CM '\x2C4F' '\0' '\0'
+-- GLAGOLITIC CAPITAL LETTER YERI
+foldMapping '\x2C20' = CM '\x2C50' '\0' '\0'
+-- GLAGOLITIC CAPITAL LETTER YATI
+foldMapping '\x2C21' = CM '\x2C51' '\0' '\0'
+-- GLAGOLITIC CAPITAL LETTER SPIDERY HA
+foldMapping '\x2C22' = CM '\x2C52' '\0' '\0'
+-- GLAGOLITIC CAPITAL LETTER YU
+foldMapping '\x2C23' = CM '\x2C53' '\0' '\0'
+-- GLAGOLITIC CAPITAL LETTER SMALL YUS
+foldMapping '\x2C24' = CM '\x2C54' '\0' '\0'
+-- GLAGOLITIC CAPITAL LETTER SMALL YUS WITH TAIL
+foldMapping '\x2C25' = CM '\x2C55' '\0' '\0'
+-- GLAGOLITIC CAPITAL LETTER YO
+foldMapping '\x2C26' = CM '\x2C56' '\0' '\0'
+-- GLAGOLITIC CAPITAL LETTER IOTATED SMALL YUS
+foldMapping '\x2C27' = CM '\x2C57' '\0' '\0'
+-- GLAGOLITIC CAPITAL LETTER BIG YUS
+foldMapping '\x2C28' = CM '\x2C58' '\0' '\0'
+-- GLAGOLITIC CAPITAL LETTER IOTATED BIG YUS
+foldMapping '\x2C29' = CM '\x2C59' '\0' '\0'
+-- GLAGOLITIC CAPITAL LETTER FITA
+foldMapping '\x2C2A' = CM '\x2C5A' '\0' '\0'
+-- GLAGOLITIC CAPITAL LETTER IZHITSA
+foldMapping '\x2C2B' = CM '\x2C5B' '\0' '\0'
+-- GLAGOLITIC CAPITAL LETTER SHTAPIC
+foldMapping '\x2C2C' = CM '\x2C5C' '\0' '\0'
+-- GLAGOLITIC CAPITAL LETTER TROKUTASTI A
+foldMapping '\x2C2D' = CM '\x2C5D' '\0' '\0'
+-- GLAGOLITIC CAPITAL LETTER LATINATE MYSLITE
+foldMapping '\x2C2E' = CM '\x2C5E' '\0' '\0'
+-- LATIN CAPITAL LETTER L WITH DOUBLE BAR
+foldMapping '\x2C60' = CM '\x2C61' '\0' '\0'
+-- LATIN CAPITAL LETTER L WITH MIDDLE TILDE
+foldMapping '\x2C62' = CM '\x026B' '\0' '\0'
+-- LATIN CAPITAL LETTER P WITH STROKE
+foldMapping '\x2C63' = CM '\x1D7D' '\0' '\0'
+-- LATIN CAPITAL LETTER R WITH TAIL
+foldMapping '\x2C64' = CM '\x027D' '\0' '\0'
+-- LATIN CAPITAL LETTER H WITH DESCENDER
+foldMapping '\x2C67' = CM '\x2C68' '\0' '\0'
+-- LATIN CAPITAL LETTER K WITH DESCENDER
+foldMapping '\x2C69' = CM '\x2C6A' '\0' '\0'
+-- LATIN CAPITAL LETTER Z WITH DESCENDER
+foldMapping '\x2C6B' = CM '\x2C6C' '\0' '\0'
+-- LATIN CAPITAL LETTER ALPHA
+foldMapping '\x2C6D' = CM '\x0251' '\0' '\0'
+-- LATIN CAPITAL LETTER M WITH HOOK
+foldMapping '\x2C6E' = CM '\x0271' '\0' '\0'
+-- LATIN CAPITAL LETTER TURNED A
+foldMapping '\x2C6F' = CM '\x0250' '\0' '\0'
+-- LATIN CAPITAL LETTER TURNED ALPHA
+foldMapping '\x2C70' = CM '\x0252' '\0' '\0'
+-- LATIN CAPITAL LETTER W WITH HOOK
+foldMapping '\x2C72' = CM '\x2C73' '\0' '\0'
+-- LATIN CAPITAL LETTER HALF H
+foldMapping '\x2C75' = CM '\x2C76' '\0' '\0'
+-- LATIN CAPITAL LETTER S WITH SWASH TAIL
+foldMapping '\x2C7E' = CM '\x023F' '\0' '\0'
+-- LATIN CAPITAL LETTER Z WITH SWASH TAIL
+foldMapping '\x2C7F' = CM '\x0240' '\0' '\0'
+-- COPTIC CAPITAL LETTER ALFA
+foldMapping '\x2C80' = CM '\x2C81' '\0' '\0'
+-- COPTIC CAPITAL LETTER VIDA
+foldMapping '\x2C82' = CM '\x2C83' '\0' '\0'
+-- COPTIC CAPITAL LETTER GAMMA
+foldMapping '\x2C84' = CM '\x2C85' '\0' '\0'
+-- COPTIC CAPITAL LETTER DALDA
+foldMapping '\x2C86' = CM '\x2C87' '\0' '\0'
+-- COPTIC CAPITAL LETTER EIE
+foldMapping '\x2C88' = CM '\x2C89' '\0' '\0'
+-- COPTIC CAPITAL LETTER SOU
+foldMapping '\x2C8A' = CM '\x2C8B' '\0' '\0'
+-- COPTIC CAPITAL LETTER ZATA
+foldMapping '\x2C8C' = CM '\x2C8D' '\0' '\0'
+-- COPTIC CAPITAL LETTER HATE
+foldMapping '\x2C8E' = CM '\x2C8F' '\0' '\0'
+-- COPTIC CAPITAL LETTER THETHE
+foldMapping '\x2C90' = CM '\x2C91' '\0' '\0'
+-- COPTIC CAPITAL LETTER IAUDA
+foldMapping '\x2C92' = CM '\x2C93' '\0' '\0'
+-- COPTIC CAPITAL LETTER KAPA
+foldMapping '\x2C94' = CM '\x2C95' '\0' '\0'
+-- COPTIC CAPITAL LETTER LAULA
+foldMapping '\x2C96' = CM '\x2C97' '\0' '\0'
+-- COPTIC CAPITAL LETTER MI
+foldMapping '\x2C98' = CM '\x2C99' '\0' '\0'
+-- COPTIC CAPITAL LETTER NI
+foldMapping '\x2C9A' = CM '\x2C9B' '\0' '\0'
+-- COPTIC CAPITAL LETTER KSI
+foldMapping '\x2C9C' = CM '\x2C9D' '\0' '\0'
+-- COPTIC CAPITAL LETTER O
+foldMapping '\x2C9E' = CM '\x2C9F' '\0' '\0'
+-- COPTIC CAPITAL LETTER PI
+foldMapping '\x2CA0' = CM '\x2CA1' '\0' '\0'
+-- COPTIC CAPITAL LETTER RO
+foldMapping '\x2CA2' = CM '\x2CA3' '\0' '\0'
+-- COPTIC CAPITAL LETTER SIMA
+foldMapping '\x2CA4' = CM '\x2CA5' '\0' '\0'
+-- COPTIC CAPITAL LETTER TAU
+foldMapping '\x2CA6' = CM '\x2CA7' '\0' '\0'
+-- COPTIC CAPITAL LETTER UA
+foldMapping '\x2CA8' = CM '\x2CA9' '\0' '\0'
+-- COPTIC CAPITAL LETTER FI
+foldMapping '\x2CAA' = CM '\x2CAB' '\0' '\0'
+-- COPTIC CAPITAL LETTER KHI
+foldMapping '\x2CAC' = CM '\x2CAD' '\0' '\0'
+-- COPTIC CAPITAL LETTER PSI
+foldMapping '\x2CAE' = CM '\x2CAF' '\0' '\0'
+-- COPTIC CAPITAL LETTER OOU
+foldMapping '\x2CB0' = CM '\x2CB1' '\0' '\0'
+-- COPTIC CAPITAL LETTER DIALECT-P ALEF
+foldMapping '\x2CB2' = CM '\x2CB3' '\0' '\0'
+-- COPTIC CAPITAL LETTER OLD COPTIC AIN
+foldMapping '\x2CB4' = CM '\x2CB5' '\0' '\0'
+-- COPTIC CAPITAL LETTER CRYPTOGRAMMIC EIE
+foldMapping '\x2CB6' = CM '\x2CB7' '\0' '\0'
+-- COPTIC CAPITAL LETTER DIALECT-P KAPA
+foldMapping '\x2CB8' = CM '\x2CB9' '\0' '\0'
+-- COPTIC CAPITAL LETTER DIALECT-P NI
+foldMapping '\x2CBA' = CM '\x2CBB' '\0' '\0'
+-- COPTIC CAPITAL LETTER CRYPTOGRAMMIC NI
+foldMapping '\x2CBC' = CM '\x2CBD' '\0' '\0'
+-- COPTIC CAPITAL LETTER OLD COPTIC OOU
+foldMapping '\x2CBE' = CM '\x2CBF' '\0' '\0'
+-- COPTIC CAPITAL LETTER SAMPI
+foldMapping '\x2CC0' = CM '\x2CC1' '\0' '\0'
+-- COPTIC CAPITAL LETTER CROSSED SHEI
+foldMapping '\x2CC2' = CM '\x2CC3' '\0' '\0'
+-- COPTIC CAPITAL LETTER OLD COPTIC SHEI
+foldMapping '\x2CC4' = CM '\x2CC5' '\0' '\0'
+-- COPTIC CAPITAL LETTER OLD COPTIC ESH
+foldMapping '\x2CC6' = CM '\x2CC7' '\0' '\0'
+-- COPTIC CAPITAL LETTER AKHMIMIC KHEI
+foldMapping '\x2CC8' = CM '\x2CC9' '\0' '\0'
+-- COPTIC CAPITAL LETTER DIALECT-P HORI
+foldMapping '\x2CCA' = CM '\x2CCB' '\0' '\0'
+-- COPTIC CAPITAL LETTER OLD COPTIC HORI
+foldMapping '\x2CCC' = CM '\x2CCD' '\0' '\0'
+-- COPTIC CAPITAL LETTER OLD COPTIC HA
+foldMapping '\x2CCE' = CM '\x2CCF' '\0' '\0'
+-- COPTIC CAPITAL LETTER L-SHAPED HA
+foldMapping '\x2CD0' = CM '\x2CD1' '\0' '\0'
+-- COPTIC CAPITAL LETTER OLD COPTIC HEI
+foldMapping '\x2CD2' = CM '\x2CD3' '\0' '\0'
+-- COPTIC CAPITAL LETTER OLD COPTIC HAT
+foldMapping '\x2CD4' = CM '\x2CD5' '\0' '\0'
+-- COPTIC CAPITAL LETTER OLD COPTIC GANGIA
+foldMapping '\x2CD6' = CM '\x2CD7' '\0' '\0'
+-- COPTIC CAPITAL LETTER OLD COPTIC DJA
+foldMapping '\x2CD8' = CM '\x2CD9' '\0' '\0'
+-- COPTIC CAPITAL LETTER OLD COPTIC SHIMA
+foldMapping '\x2CDA' = CM '\x2CDB' '\0' '\0'
+-- COPTIC CAPITAL LETTER OLD NUBIAN SHIMA
+foldMapping '\x2CDC' = CM '\x2CDD' '\0' '\0'
+-- COPTIC CAPITAL LETTER OLD NUBIAN NGI
+foldMapping '\x2CDE' = CM '\x2CDF' '\0' '\0'
+-- COPTIC CAPITAL LETTER OLD NUBIAN NYI
+foldMapping '\x2CE0' = CM '\x2CE1' '\0' '\0'
+-- COPTIC CAPITAL LETTER OLD NUBIAN WAU
+foldMapping '\x2CE2' = CM '\x2CE3' '\0' '\0'
+-- COPTIC CAPITAL LETTER CRYPTOGRAMMIC SHEI
+foldMapping '\x2CEB' = CM '\x2CEC' '\0' '\0'
+-- COPTIC CAPITAL LETTER CRYPTOGRAMMIC GANGIA
+foldMapping '\x2CED' = CM '\x2CEE' '\0' '\0'
+-- COPTIC CAPITAL LETTER BOHAIRIC KHEI
+foldMapping '\x2CF2' = CM '\x2CF3' '\0' '\0'
+-- CYRILLIC CAPITAL LETTER ZEMLYA
+foldMapping '\xA640' = CM '\xA641' '\0' '\0'
+-- CYRILLIC CAPITAL LETTER DZELO
+foldMapping '\xA642' = CM '\xA643' '\0' '\0'
+-- CYRILLIC CAPITAL LETTER REVERSED DZE
+foldMapping '\xA644' = CM '\xA645' '\0' '\0'
+-- CYRILLIC CAPITAL LETTER IOTA
+foldMapping '\xA646' = CM '\xA647' '\0' '\0'
+-- CYRILLIC CAPITAL LETTER DJERV
+foldMapping '\xA648' = CM '\xA649' '\0' '\0'
+-- CYRILLIC CAPITAL LETTER MONOGRAPH UK
+foldMapping '\xA64A' = CM '\xA64B' '\0' '\0'
+-- CYRILLIC CAPITAL LETTER BROAD OMEGA
+foldMapping '\xA64C' = CM '\xA64D' '\0' '\0'
+-- CYRILLIC CAPITAL LETTER NEUTRAL YER
+foldMapping '\xA64E' = CM '\xA64F' '\0' '\0'
+-- CYRILLIC CAPITAL LETTER YERU WITH BACK YER
+foldMapping '\xA650' = CM '\xA651' '\0' '\0'
+-- CYRILLIC CAPITAL LETTER IOTIFIED YAT
+foldMapping '\xA652' = CM '\xA653' '\0' '\0'
+-- CYRILLIC CAPITAL LETTER REVERSED YU
+foldMapping '\xA654' = CM '\xA655' '\0' '\0'
+-- CYRILLIC CAPITAL LETTER IOTIFIED A
+foldMapping '\xA656' = CM '\xA657' '\0' '\0'
+-- CYRILLIC CAPITAL LETTER CLOSED LITTLE YUS
+foldMapping '\xA658' = CM '\xA659' '\0' '\0'
+-- CYRILLIC CAPITAL LETTER BLENDED YUS
+foldMapping '\xA65A' = CM '\xA65B' '\0' '\0'
+-- CYRILLIC CAPITAL LETTER IOTIFIED CLOSED LITTLE YUS
+foldMapping '\xA65C' = CM '\xA65D' '\0' '\0'
+-- CYRILLIC CAPITAL LETTER YN
+foldMapping '\xA65E' = CM '\xA65F' '\0' '\0'
+-- CYRILLIC CAPITAL LETTER REVERSED TSE
+foldMapping '\xA660' = CM '\xA661' '\0' '\0'
+-- CYRILLIC CAPITAL LETTER SOFT DE
+foldMapping '\xA662' = CM '\xA663' '\0' '\0'
+-- CYRILLIC CAPITAL LETTER SOFT EL
+foldMapping '\xA664' = CM '\xA665' '\0' '\0'
+-- CYRILLIC CAPITAL LETTER SOFT EM
+foldMapping '\xA666' = CM '\xA667' '\0' '\0'
+-- CYRILLIC CAPITAL LETTER MONOCULAR O
+foldMapping '\xA668' = CM '\xA669' '\0' '\0'
+-- CYRILLIC CAPITAL LETTER BINOCULAR O
+foldMapping '\xA66A' = CM '\xA66B' '\0' '\0'
+-- CYRILLIC CAPITAL LETTER DOUBLE MONOCULAR O
+foldMapping '\xA66C' = CM '\xA66D' '\0' '\0'
+-- CYRILLIC CAPITAL LETTER DWE
+foldMapping '\xA680' = CM '\xA681' '\0' '\0'
+-- CYRILLIC CAPITAL LETTER DZWE
+foldMapping '\xA682' = CM '\xA683' '\0' '\0'
+-- CYRILLIC CAPITAL LETTER ZHWE
+foldMapping '\xA684' = CM '\xA685' '\0' '\0'
+-- CYRILLIC CAPITAL LETTER CCHE
+foldMapping '\xA686' = CM '\xA687' '\0' '\0'
+-- CYRILLIC CAPITAL LETTER DZZE
+foldMapping '\xA688' = CM '\xA689' '\0' '\0'
+-- CYRILLIC CAPITAL LETTER TE WITH MIDDLE HOOK
+foldMapping '\xA68A' = CM '\xA68B' '\0' '\0'
+-- CYRILLIC CAPITAL LETTER TWE
+foldMapping '\xA68C' = CM '\xA68D' '\0' '\0'
+-- CYRILLIC CAPITAL LETTER TSWE
+foldMapping '\xA68E' = CM '\xA68F' '\0' '\0'
+-- CYRILLIC CAPITAL LETTER TSSE
+foldMapping '\xA690' = CM '\xA691' '\0' '\0'
+-- CYRILLIC CAPITAL LETTER TCHE
+foldMapping '\xA692' = CM '\xA693' '\0' '\0'
+-- CYRILLIC CAPITAL LETTER HWE
+foldMapping '\xA694' = CM '\xA695' '\0' '\0'
+-- CYRILLIC CAPITAL LETTER SHWE
+foldMapping '\xA696' = CM '\xA697' '\0' '\0'
+-- CYRILLIC CAPITAL LETTER DOUBLE O
+foldMapping '\xA698' = CM '\xA699' '\0' '\0'
+-- CYRILLIC CAPITAL LETTER CROSSED O
+foldMapping '\xA69A' = CM '\xA69B' '\0' '\0'
+-- LATIN CAPITAL LETTER EGYPTOLOGICAL ALEF
+foldMapping '\xA722' = CM '\xA723' '\0' '\0'
+-- LATIN CAPITAL LETTER EGYPTOLOGICAL AIN
+foldMapping '\xA724' = CM '\xA725' '\0' '\0'
+-- LATIN CAPITAL LETTER HENG
+foldMapping '\xA726' = CM '\xA727' '\0' '\0'
+-- LATIN CAPITAL LETTER TZ
+foldMapping '\xA728' = CM '\xA729' '\0' '\0'
+-- LATIN CAPITAL LETTER TRESILLO
+foldMapping '\xA72A' = CM '\xA72B' '\0' '\0'
+-- LATIN CAPITAL LETTER CUATRILLO
+foldMapping '\xA72C' = CM '\xA72D' '\0' '\0'
+-- LATIN CAPITAL LETTER CUATRILLO WITH COMMA
+foldMapping '\xA72E' = CM '\xA72F' '\0' '\0'
+-- LATIN CAPITAL LETTER AA
+foldMapping '\xA732' = CM '\xA733' '\0' '\0'
+-- LATIN CAPITAL LETTER AO
+foldMapping '\xA734' = CM '\xA735' '\0' '\0'
+-- LATIN CAPITAL LETTER AU
+foldMapping '\xA736' = CM '\xA737' '\0' '\0'
+-- LATIN CAPITAL LETTER AV
+foldMapping '\xA738' = CM '\xA739' '\0' '\0'
+-- LATIN CAPITAL LETTER AV WITH HORIZONTAL BAR
+foldMapping '\xA73A' = CM '\xA73B' '\0' '\0'
+-- LATIN CAPITAL LETTER AY
+foldMapping '\xA73C' = CM '\xA73D' '\0' '\0'
+-- LATIN CAPITAL LETTER REVERSED C WITH DOT
+foldMapping '\xA73E' = CM '\xA73F' '\0' '\0'
+-- LATIN CAPITAL LETTER K WITH STROKE
+foldMapping '\xA740' = CM '\xA741' '\0' '\0'
+-- LATIN CAPITAL LETTER K WITH DIAGONAL STROKE
+foldMapping '\xA742' = CM '\xA743' '\0' '\0'
+-- LATIN CAPITAL LETTER K WITH STROKE AND DIAGONAL STROKE
+foldMapping '\xA744' = CM '\xA745' '\0' '\0'
+-- LATIN CAPITAL LETTER BROKEN L
+foldMapping '\xA746' = CM '\xA747' '\0' '\0'
+-- LATIN CAPITAL LETTER L WITH HIGH STROKE
+foldMapping '\xA748' = CM '\xA749' '\0' '\0'
+-- LATIN CAPITAL LETTER O WITH LONG STROKE OVERLAY
+foldMapping '\xA74A' = CM '\xA74B' '\0' '\0'
+-- LATIN CAPITAL LETTER O WITH LOOP
+foldMapping '\xA74C' = CM '\xA74D' '\0' '\0'
+-- LATIN CAPITAL LETTER OO
+foldMapping '\xA74E' = CM '\xA74F' '\0' '\0'
+-- LATIN CAPITAL LETTER P WITH STROKE THROUGH DESCENDER
+foldMapping '\xA750' = CM '\xA751' '\0' '\0'
+-- LATIN CAPITAL LETTER P WITH FLOURISH
+foldMapping '\xA752' = CM '\xA753' '\0' '\0'
+-- LATIN CAPITAL LETTER P WITH SQUIRREL TAIL
+foldMapping '\xA754' = CM '\xA755' '\0' '\0'
+-- LATIN CAPITAL LETTER Q WITH STROKE THROUGH DESCENDER
+foldMapping '\xA756' = CM '\xA757' '\0' '\0'
+-- LATIN CAPITAL LETTER Q WITH DIAGONAL STROKE
+foldMapping '\xA758' = CM '\xA759' '\0' '\0'
+-- LATIN CAPITAL LETTER R ROTUNDA
+foldMapping '\xA75A' = CM '\xA75B' '\0' '\0'
+-- LATIN CAPITAL LETTER RUM ROTUNDA
+foldMapping '\xA75C' = CM '\xA75D' '\0' '\0'
+-- LATIN CAPITAL LETTER V WITH DIAGONAL STROKE
+foldMapping '\xA75E' = CM '\xA75F' '\0' '\0'
+-- LATIN CAPITAL LETTER VY
+foldMapping '\xA760' = CM '\xA761' '\0' '\0'
+-- LATIN CAPITAL LETTER VISIGOTHIC Z
+foldMapping '\xA762' = CM '\xA763' '\0' '\0'
+-- LATIN CAPITAL LETTER THORN WITH STROKE
+foldMapping '\xA764' = CM '\xA765' '\0' '\0'
+-- LATIN CAPITAL LETTER THORN WITH STROKE THROUGH DESCENDER
+foldMapping '\xA766' = CM '\xA767' '\0' '\0'
+-- LATIN CAPITAL LETTER VEND
+foldMapping '\xA768' = CM '\xA769' '\0' '\0'
+-- LATIN CAPITAL LETTER ET
+foldMapping '\xA76A' = CM '\xA76B' '\0' '\0'
+-- LATIN CAPITAL LETTER IS
+foldMapping '\xA76C' = CM '\xA76D' '\0' '\0'
+-- LATIN CAPITAL LETTER CON
+foldMapping '\xA76E' = CM '\xA76F' '\0' '\0'
+-- LATIN CAPITAL LETTER INSULAR D
+foldMapping '\xA779' = CM '\xA77A' '\0' '\0'
+-- LATIN CAPITAL LETTER INSULAR F
+foldMapping '\xA77B' = CM '\xA77C' '\0' '\0'
+-- LATIN CAPITAL LETTER INSULAR G
+foldMapping '\xA77D' = CM '\x1D79' '\0' '\0'
+-- LATIN CAPITAL LETTER TURNED INSULAR G
+foldMapping '\xA77E' = CM '\xA77F' '\0' '\0'
+-- LATIN CAPITAL LETTER TURNED L
+foldMapping '\xA780' = CM '\xA781' '\0' '\0'
+-- LATIN CAPITAL LETTER INSULAR R
+foldMapping '\xA782' = CM '\xA783' '\0' '\0'
+-- LATIN CAPITAL LETTER INSULAR S
+foldMapping '\xA784' = CM '\xA785' '\0' '\0'
+-- LATIN CAPITAL LETTER INSULAR T
+foldMapping '\xA786' = CM '\xA787' '\0' '\0'
+-- LATIN CAPITAL LETTER SALTILLO
+foldMapping '\xA78B' = CM '\xA78C' '\0' '\0'
+-- LATIN CAPITAL LETTER TURNED H
+foldMapping '\xA78D' = CM '\x0265' '\0' '\0'
+-- LATIN CAPITAL LETTER N WITH DESCENDER
+foldMapping '\xA790' = CM '\xA791' '\0' '\0'
+-- LATIN CAPITAL LETTER C WITH BAR
+foldMapping '\xA792' = CM '\xA793' '\0' '\0'
+-- LATIN CAPITAL LETTER B WITH FLOURISH
+foldMapping '\xA796' = CM '\xA797' '\0' '\0'
+-- LATIN CAPITAL LETTER F WITH STROKE
+foldMapping '\xA798' = CM '\xA799' '\0' '\0'
+-- LATIN CAPITAL LETTER VOLAPUK AE
+foldMapping '\xA79A' = CM '\xA79B' '\0' '\0'
+-- LATIN CAPITAL LETTER VOLAPUK OE
+foldMapping '\xA79C' = CM '\xA79D' '\0' '\0'
+-- LATIN CAPITAL LETTER VOLAPUK UE
+foldMapping '\xA79E' = CM '\xA79F' '\0' '\0'
+-- LATIN CAPITAL LETTER G WITH OBLIQUE STROKE
+foldMapping '\xA7A0' = CM '\xA7A1' '\0' '\0'
+-- LATIN CAPITAL LETTER K WITH OBLIQUE STROKE
+foldMapping '\xA7A2' = CM '\xA7A3' '\0' '\0'
+-- LATIN CAPITAL LETTER N WITH OBLIQUE STROKE
+foldMapping '\xA7A4' = CM '\xA7A5' '\0' '\0'
+-- LATIN CAPITAL LETTER R WITH OBLIQUE STROKE
+foldMapping '\xA7A6' = CM '\xA7A7' '\0' '\0'
+-- LATIN CAPITAL LETTER S WITH OBLIQUE STROKE
+foldMapping '\xA7A8' = CM '\xA7A9' '\0' '\0'
+-- LATIN CAPITAL LETTER H WITH HOOK
+foldMapping '\xA7AA' = CM '\x0266' '\0' '\0'
+-- LATIN CAPITAL LETTER REVERSED OPEN E
+foldMapping '\xA7AB' = CM '\x025C' '\0' '\0'
+-- LATIN CAPITAL LETTER SCRIPT G
+foldMapping '\xA7AC' = CM '\x0261' '\0' '\0'
+-- LATIN CAPITAL LETTER L WITH BELT
+foldMapping '\xA7AD' = CM '\x026C' '\0' '\0'
+-- LATIN CAPITAL LETTER SMALL CAPITAL I
+foldMapping '\xA7AE' = CM '\x026A' '\0' '\0'
+-- LATIN CAPITAL LETTER TURNED K
+foldMapping '\xA7B0' = CM '\x029E' '\0' '\0'
+-- LATIN CAPITAL LETTER TURNED T
+foldMapping '\xA7B1' = CM '\x0287' '\0' '\0'
+-- LATIN CAPITAL LETTER J WITH CROSSED-TAIL
+foldMapping '\xA7B2' = CM '\x029D' '\0' '\0'
+-- LATIN CAPITAL LETTER CHI
+foldMapping '\xA7B3' = CM '\xAB53' '\0' '\0'
+-- LATIN CAPITAL LETTER BETA
+foldMapping '\xA7B4' = CM '\xA7B5' '\0' '\0'
+-- LATIN CAPITAL LETTER OMEGA
+foldMapping '\xA7B6' = CM '\xA7B7' '\0' '\0'
+-- CHEROKEE SMALL LETTER A
+foldMapping '\xAB70' = CM '\x13A0' '\0' '\0'
+-- CHEROKEE SMALL LETTER E
+foldMapping '\xAB71' = CM '\x13A1' '\0' '\0'
+-- CHEROKEE SMALL LETTER I
+foldMapping '\xAB72' = CM '\x13A2' '\0' '\0'
+-- CHEROKEE SMALL LETTER O
+foldMapping '\xAB73' = CM '\x13A3' '\0' '\0'
+-- CHEROKEE SMALL LETTER U
+foldMapping '\xAB74' = CM '\x13A4' '\0' '\0'
+-- CHEROKEE SMALL LETTER V
+foldMapping '\xAB75' = CM '\x13A5' '\0' '\0'
+-- CHEROKEE SMALL LETTER GA
+foldMapping '\xAB76' = CM '\x13A6' '\0' '\0'
+-- CHEROKEE SMALL LETTER KA
+foldMapping '\xAB77' = CM '\x13A7' '\0' '\0'
+-- CHEROKEE SMALL LETTER GE
+foldMapping '\xAB78' = CM '\x13A8' '\0' '\0'
+-- CHEROKEE SMALL LETTER GI
+foldMapping '\xAB79' = CM '\x13A9' '\0' '\0'
+-- CHEROKEE SMALL LETTER GO
+foldMapping '\xAB7A' = CM '\x13AA' '\0' '\0'
+-- CHEROKEE SMALL LETTER GU
+foldMapping '\xAB7B' = CM '\x13AB' '\0' '\0'
+-- CHEROKEE SMALL LETTER GV
+foldMapping '\xAB7C' = CM '\x13AC' '\0' '\0'
+-- CHEROKEE SMALL LETTER HA
+foldMapping '\xAB7D' = CM '\x13AD' '\0' '\0'
+-- CHEROKEE SMALL LETTER HE
+foldMapping '\xAB7E' = CM '\x13AE' '\0' '\0'
+-- CHEROKEE SMALL LETTER HI
+foldMapping '\xAB7F' = CM '\x13AF' '\0' '\0'
+-- CHEROKEE SMALL LETTER HO
+foldMapping '\xAB80' = CM '\x13B0' '\0' '\0'
+-- CHEROKEE SMALL LETTER HU
+foldMapping '\xAB81' = CM '\x13B1' '\0' '\0'
+-- CHEROKEE SMALL LETTER HV
+foldMapping '\xAB82' = CM '\x13B2' '\0' '\0'
+-- CHEROKEE SMALL LETTER LA
+foldMapping '\xAB83' = CM '\x13B3' '\0' '\0'
+-- CHEROKEE SMALL LETTER LE
+foldMapping '\xAB84' = CM '\x13B4' '\0' '\0'
+-- CHEROKEE SMALL LETTER LI
+foldMapping '\xAB85' = CM '\x13B5' '\0' '\0'
+-- CHEROKEE SMALL LETTER LO
+foldMapping '\xAB86' = CM '\x13B6' '\0' '\0'
+-- CHEROKEE SMALL LETTER LU
+foldMapping '\xAB87' = CM '\x13B7' '\0' '\0'
+-- CHEROKEE SMALL LETTER LV
+foldMapping '\xAB88' = CM '\x13B8' '\0' '\0'
+-- CHEROKEE SMALL LETTER MA
+foldMapping '\xAB89' = CM '\x13B9' '\0' '\0'
+-- CHEROKEE SMALL LETTER ME
+foldMapping '\xAB8A' = CM '\x13BA' '\0' '\0'
+-- CHEROKEE SMALL LETTER MI
+foldMapping '\xAB8B' = CM '\x13BB' '\0' '\0'
+-- CHEROKEE SMALL LETTER MO
+foldMapping '\xAB8C' = CM '\x13BC' '\0' '\0'
+-- CHEROKEE SMALL LETTER MU
+foldMapping '\xAB8D' = CM '\x13BD' '\0' '\0'
+-- CHEROKEE SMALL LETTER NA
+foldMapping '\xAB8E' = CM '\x13BE' '\0' '\0'
+-- CHEROKEE SMALL LETTER HNA
+foldMapping '\xAB8F' = CM '\x13BF' '\0' '\0'
+-- CHEROKEE SMALL LETTER NAH
+foldMapping '\xAB90' = CM '\x13C0' '\0' '\0'
+-- CHEROKEE SMALL LETTER NE
+foldMapping '\xAB91' = CM '\x13C1' '\0' '\0'
+-- CHEROKEE SMALL LETTER NI
+foldMapping '\xAB92' = CM '\x13C2' '\0' '\0'
+-- CHEROKEE SMALL LETTER NO
+foldMapping '\xAB93' = CM '\x13C3' '\0' '\0'
+-- CHEROKEE SMALL LETTER NU
+foldMapping '\xAB94' = CM '\x13C4' '\0' '\0'
+-- CHEROKEE SMALL LETTER NV
+foldMapping '\xAB95' = CM '\x13C5' '\0' '\0'
+-- CHEROKEE SMALL LETTER QUA
+foldMapping '\xAB96' = CM '\x13C6' '\0' '\0'
+-- CHEROKEE SMALL LETTER QUE
+foldMapping '\xAB97' = CM '\x13C7' '\0' '\0'
+-- CHEROKEE SMALL LETTER QUI
+foldMapping '\xAB98' = CM '\x13C8' '\0' '\0'
+-- CHEROKEE SMALL LETTER QUO
+foldMapping '\xAB99' = CM '\x13C9' '\0' '\0'
+-- CHEROKEE SMALL LETTER QUU
+foldMapping '\xAB9A' = CM '\x13CA' '\0' '\0'
+-- CHEROKEE SMALL LETTER QUV
+foldMapping '\xAB9B' = CM '\x13CB' '\0' '\0'
+-- CHEROKEE SMALL LETTER SA
+foldMapping '\xAB9C' = CM '\x13CC' '\0' '\0'
+-- CHEROKEE SMALL LETTER S
+foldMapping '\xAB9D' = CM '\x13CD' '\0' '\0'
+-- CHEROKEE SMALL LETTER SE
+foldMapping '\xAB9E' = CM '\x13CE' '\0' '\0'
+-- CHEROKEE SMALL LETTER SI
+foldMapping '\xAB9F' = CM '\x13CF' '\0' '\0'
+-- CHEROKEE SMALL LETTER SO
+foldMapping '\xABA0' = CM '\x13D0' '\0' '\0'
+-- CHEROKEE SMALL LETTER SU
+foldMapping '\xABA1' = CM '\x13D1' '\0' '\0'
+-- CHEROKEE SMALL LETTER SV
+foldMapping '\xABA2' = CM '\x13D2' '\0' '\0'
+-- CHEROKEE SMALL LETTER DA
+foldMapping '\xABA3' = CM '\x13D3' '\0' '\0'
+-- CHEROKEE SMALL LETTER TA
+foldMapping '\xABA4' = CM '\x13D4' '\0' '\0'
+-- CHEROKEE SMALL LETTER DE
+foldMapping '\xABA5' = CM '\x13D5' '\0' '\0'
+-- CHEROKEE SMALL LETTER TE
+foldMapping '\xABA6' = CM '\x13D6' '\0' '\0'
+-- CHEROKEE SMALL LETTER DI
+foldMapping '\xABA7' = CM '\x13D7' '\0' '\0'
+-- CHEROKEE SMALL LETTER TI
+foldMapping '\xABA8' = CM '\x13D8' '\0' '\0'
+-- CHEROKEE SMALL LETTER DO
+foldMapping '\xABA9' = CM '\x13D9' '\0' '\0'
+-- CHEROKEE SMALL LETTER DU
+foldMapping '\xABAA' = CM '\x13DA' '\0' '\0'
+-- CHEROKEE SMALL LETTER DV
+foldMapping '\xABAB' = CM '\x13DB' '\0' '\0'
+-- CHEROKEE SMALL LETTER DLA
+foldMapping '\xABAC' = CM '\x13DC' '\0' '\0'
+-- CHEROKEE SMALL LETTER TLA
+foldMapping '\xABAD' = CM '\x13DD' '\0' '\0'
+-- CHEROKEE SMALL LETTER TLE
+foldMapping '\xABAE' = CM '\x13DE' '\0' '\0'
+-- CHEROKEE SMALL LETTER TLI
+foldMapping '\xABAF' = CM '\x13DF' '\0' '\0'
+-- CHEROKEE SMALL LETTER TLO
+foldMapping '\xABB0' = CM '\x13E0' '\0' '\0'
+-- CHEROKEE SMALL LETTER TLU
+foldMapping '\xABB1' = CM '\x13E1' '\0' '\0'
+-- CHEROKEE SMALL LETTER TLV
+foldMapping '\xABB2' = CM '\x13E2' '\0' '\0'
+-- CHEROKEE SMALL LETTER TSA
+foldMapping '\xABB3' = CM '\x13E3' '\0' '\0'
+-- CHEROKEE SMALL LETTER TSE
+foldMapping '\xABB4' = CM '\x13E4' '\0' '\0'
+-- CHEROKEE SMALL LETTER TSI
+foldMapping '\xABB5' = CM '\x13E5' '\0' '\0'
+-- CHEROKEE SMALL LETTER TSO
+foldMapping '\xABB6' = CM '\x13E6' '\0' '\0'
+-- CHEROKEE SMALL LETTER TSU
+foldMapping '\xABB7' = CM '\x13E7' '\0' '\0'
+-- CHEROKEE SMALL LETTER TSV
+foldMapping '\xABB8' = CM '\x13E8' '\0' '\0'
+-- CHEROKEE SMALL LETTER WA
+foldMapping '\xABB9' = CM '\x13E9' '\0' '\0'
+-- CHEROKEE SMALL LETTER WE
+foldMapping '\xABBA' = CM '\x13EA' '\0' '\0'
+-- CHEROKEE SMALL LETTER WI
+foldMapping '\xABBB' = CM '\x13EB' '\0' '\0'
+-- CHEROKEE SMALL LETTER WO
+foldMapping '\xABBC' = CM '\x13EC' '\0' '\0'
+-- CHEROKEE SMALL LETTER WU
+foldMapping '\xABBD' = CM '\x13ED' '\0' '\0'
+-- CHEROKEE SMALL LETTER WV
+foldMapping '\xABBE' = CM '\x13EE' '\0' '\0'
+-- CHEROKEE SMALL LETTER YA
+foldMapping '\xABBF' = CM '\x13EF' '\0' '\0'
+-- LATIN SMALL LIGATURE FF
+foldMapping '\xFB00' = CM '\x0066' '\x0066' '\0'
+-- LATIN SMALL LIGATURE FI
+foldMapping '\xFB01' = CM '\x0066' '\x0069' '\0'
+-- LATIN SMALL LIGATURE FL
+foldMapping '\xFB02' = CM '\x0066' '\x006C' '\0'
+-- LATIN SMALL LIGATURE FFI
+foldMapping '\xFB03' = CM '\x0066' '\x0066' '\x0069'
+-- LATIN SMALL LIGATURE FFL
+foldMapping '\xFB04' = CM '\x0066' '\x0066' '\x006C'
+-- LATIN SMALL LIGATURE LONG S T
+foldMapping '\xFB05' = CM '\x0073' '\x0074' '\0'
+-- LATIN SMALL LIGATURE ST
+foldMapping '\xFB06' = CM '\x0073' '\x0074' '\0'
+-- ARMENIAN SMALL LIGATURE MEN NOW
+foldMapping '\xFB13' = CM '\x0574' '\x0576' '\0'
+-- ARMENIAN SMALL LIGATURE MEN ECH
+foldMapping '\xFB14' = CM '\x0574' '\x0565' '\0'
+-- ARMENIAN SMALL LIGATURE MEN INI
+foldMapping '\xFB15' = CM '\x0574' '\x056B' '\0'
+-- ARMENIAN SMALL LIGATURE VEW NOW
+foldMapping '\xFB16' = CM '\x057E' '\x0576' '\0'
+-- ARMENIAN SMALL LIGATURE MEN XEH
+foldMapping '\xFB17' = CM '\x0574' '\x056D' '\0'
+-- FULLWIDTH LATIN CAPITAL LETTER A
+foldMapping '\xFF21' = CM '\xFF41' '\0' '\0'
+-- FULLWIDTH LATIN CAPITAL LETTER B
+foldMapping '\xFF22' = CM '\xFF42' '\0' '\0'
+-- FULLWIDTH LATIN CAPITAL LETTER C
+foldMapping '\xFF23' = CM '\xFF43' '\0' '\0'
+-- FULLWIDTH LATIN CAPITAL LETTER D
+foldMapping '\xFF24' = CM '\xFF44' '\0' '\0'
+-- FULLWIDTH LATIN CAPITAL LETTER E
+foldMapping '\xFF25' = CM '\xFF45' '\0' '\0'
+-- FULLWIDTH LATIN CAPITAL LETTER F
+foldMapping '\xFF26' = CM '\xFF46' '\0' '\0'
+-- FULLWIDTH LATIN CAPITAL LETTER G
+foldMapping '\xFF27' = CM '\xFF47' '\0' '\0'
+-- FULLWIDTH LATIN CAPITAL LETTER H
+foldMapping '\xFF28' = CM '\xFF48' '\0' '\0'
+-- FULLWIDTH LATIN CAPITAL LETTER I
+foldMapping '\xFF29' = CM '\xFF49' '\0' '\0'
+-- FULLWIDTH LATIN CAPITAL LETTER J
+foldMapping '\xFF2A' = CM '\xFF4A' '\0' '\0'
+-- FULLWIDTH LATIN CAPITAL LETTER K
+foldMapping '\xFF2B' = CM '\xFF4B' '\0' '\0'
+-- FULLWIDTH LATIN CAPITAL LETTER L
+foldMapping '\xFF2C' = CM '\xFF4C' '\0' '\0'
+-- FULLWIDTH LATIN CAPITAL LETTER M
+foldMapping '\xFF2D' = CM '\xFF4D' '\0' '\0'
+-- FULLWIDTH LATIN CAPITAL LETTER N
+foldMapping '\xFF2E' = CM '\xFF4E' '\0' '\0'
+-- FULLWIDTH LATIN CAPITAL LETTER O
+foldMapping '\xFF2F' = CM '\xFF4F' '\0' '\0'
+-- FULLWIDTH LATIN CAPITAL LETTER P
+foldMapping '\xFF30' = CM '\xFF50' '\0' '\0'
+-- FULLWIDTH LATIN CAPITAL LETTER Q
+foldMapping '\xFF31' = CM '\xFF51' '\0' '\0'
+-- FULLWIDTH LATIN CAPITAL LETTER R
+foldMapping '\xFF32' = CM '\xFF52' '\0' '\0'
+-- FULLWIDTH LATIN CAPITAL LETTER S
+foldMapping '\xFF33' = CM '\xFF53' '\0' '\0'
+-- FULLWIDTH LATIN CAPITAL LETTER T
+foldMapping '\xFF34' = CM '\xFF54' '\0' '\0'
+-- FULLWIDTH LATIN CAPITAL LETTER U
+foldMapping '\xFF35' = CM '\xFF55' '\0' '\0'
+-- FULLWIDTH LATIN CAPITAL LETTER V
+foldMapping '\xFF36' = CM '\xFF56' '\0' '\0'
+-- FULLWIDTH LATIN CAPITAL LETTER W
+foldMapping '\xFF37' = CM '\xFF57' '\0' '\0'
+-- FULLWIDTH LATIN CAPITAL LETTER X
+foldMapping '\xFF38' = CM '\xFF58' '\0' '\0'
+-- FULLWIDTH LATIN CAPITAL LETTER Y
+foldMapping '\xFF39' = CM '\xFF59' '\0' '\0'
+-- FULLWIDTH LATIN CAPITAL LETTER Z
+foldMapping '\xFF3A' = CM '\xFF5A' '\0' '\0'
+-- DESERET CAPITAL LETTER LONG I
+foldMapping '\x10400' = CM '\x10428' '\0' '\0'
+-- DESERET CAPITAL LETTER LONG E
+foldMapping '\x10401' = CM '\x10429' '\0' '\0'
+-- DESERET CAPITAL LETTER LONG A
+foldMapping '\x10402' = CM '\x1042A' '\0' '\0'
+-- DESERET CAPITAL LETTER LONG AH
+foldMapping '\x10403' = CM '\x1042B' '\0' '\0'
+-- DESERET CAPITAL LETTER LONG O
+foldMapping '\x10404' = CM '\x1042C' '\0' '\0'
+-- DESERET CAPITAL LETTER LONG OO
+foldMapping '\x10405' = CM '\x1042D' '\0' '\0'
+-- DESERET CAPITAL LETTER SHORT I
+foldMapping '\x10406' = CM '\x1042E' '\0' '\0'
+-- DESERET CAPITAL LETTER SHORT E
+foldMapping '\x10407' = CM '\x1042F' '\0' '\0'
+-- DESERET CAPITAL LETTER SHORT A
+foldMapping '\x10408' = CM '\x10430' '\0' '\0'
+-- DESERET CAPITAL LETTER SHORT AH
+foldMapping '\x10409' = CM '\x10431' '\0' '\0'
+-- DESERET CAPITAL LETTER SHORT O
+foldMapping '\x1040A' = CM '\x10432' '\0' '\0'
+-- DESERET CAPITAL LETTER SHORT OO
+foldMapping '\x1040B' = CM '\x10433' '\0' '\0'
+-- DESERET CAPITAL LETTER AY
+foldMapping '\x1040C' = CM '\x10434' '\0' '\0'
+-- DESERET CAPITAL LETTER OW
+foldMapping '\x1040D' = CM '\x10435' '\0' '\0'
+-- DESERET CAPITAL LETTER WU
+foldMapping '\x1040E' = CM '\x10436' '\0' '\0'
+-- DESERET CAPITAL LETTER YEE
+foldMapping '\x1040F' = CM '\x10437' '\0' '\0'
+-- DESERET CAPITAL LETTER H
+foldMapping '\x10410' = CM '\x10438' '\0' '\0'
+-- DESERET CAPITAL LETTER PEE
+foldMapping '\x10411' = CM '\x10439' '\0' '\0'
+-- DESERET CAPITAL LETTER BEE
+foldMapping '\x10412' = CM '\x1043A' '\0' '\0'
+-- DESERET CAPITAL LETTER TEE
+foldMapping '\x10413' = CM '\x1043B' '\0' '\0'
+-- DESERET CAPITAL LETTER DEE
+foldMapping '\x10414' = CM '\x1043C' '\0' '\0'
+-- DESERET CAPITAL LETTER CHEE
+foldMapping '\x10415' = CM '\x1043D' '\0' '\0'
+-- DESERET CAPITAL LETTER JEE
+foldMapping '\x10416' = CM '\x1043E' '\0' '\0'
+-- DESERET CAPITAL LETTER KAY
+foldMapping '\x10417' = CM '\x1043F' '\0' '\0'
+-- DESERET CAPITAL LETTER GAY
+foldMapping '\x10418' = CM '\x10440' '\0' '\0'
+-- DESERET CAPITAL LETTER EF
+foldMapping '\x10419' = CM '\x10441' '\0' '\0'
+-- DESERET CAPITAL LETTER VEE
+foldMapping '\x1041A' = CM '\x10442' '\0' '\0'
+-- DESERET CAPITAL LETTER ETH
+foldMapping '\x1041B' = CM '\x10443' '\0' '\0'
+-- DESERET CAPITAL LETTER THEE
+foldMapping '\x1041C' = CM '\x10444' '\0' '\0'
+-- DESERET CAPITAL LETTER ES
+foldMapping '\x1041D' = CM '\x10445' '\0' '\0'
+-- DESERET CAPITAL LETTER ZEE
+foldMapping '\x1041E' = CM '\x10446' '\0' '\0'
+-- DESERET CAPITAL LETTER ESH
+foldMapping '\x1041F' = CM '\x10447' '\0' '\0'
+-- DESERET CAPITAL LETTER ZHEE
+foldMapping '\x10420' = CM '\x10448' '\0' '\0'
+-- DESERET CAPITAL LETTER ER
+foldMapping '\x10421' = CM '\x10449' '\0' '\0'
+-- DESERET CAPITAL LETTER EL
+foldMapping '\x10422' = CM '\x1044A' '\0' '\0'
+-- DESERET CAPITAL LETTER EM
+foldMapping '\x10423' = CM '\x1044B' '\0' '\0'
+-- DESERET CAPITAL LETTER EN
+foldMapping '\x10424' = CM '\x1044C' '\0' '\0'
+-- DESERET CAPITAL LETTER ENG
+foldMapping '\x10425' = CM '\x1044D' '\0' '\0'
+-- DESERET CAPITAL LETTER OI
+foldMapping '\x10426' = CM '\x1044E' '\0' '\0'
+-- DESERET CAPITAL LETTER EW
+foldMapping '\x10427' = CM '\x1044F' '\0' '\0'
+-- OSAGE CAPITAL LETTER A
+foldMapping '\x104B0' = CM '\x104D8' '\0' '\0'
+-- OSAGE CAPITAL LETTER AI
+foldMapping '\x104B1' = CM '\x104D9' '\0' '\0'
+-- OSAGE CAPITAL LETTER AIN
+foldMapping '\x104B2' = CM '\x104DA' '\0' '\0'
+-- OSAGE CAPITAL LETTER AH
+foldMapping '\x104B3' = CM '\x104DB' '\0' '\0'
+-- OSAGE CAPITAL LETTER BRA
+foldMapping '\x104B4' = CM '\x104DC' '\0' '\0'
+-- OSAGE CAPITAL LETTER CHA
+foldMapping '\x104B5' = CM '\x104DD' '\0' '\0'
+-- OSAGE CAPITAL LETTER EHCHA
+foldMapping '\x104B6' = CM '\x104DE' '\0' '\0'
+-- OSAGE CAPITAL LETTER E
+foldMapping '\x104B7' = CM '\x104DF' '\0' '\0'
+-- OSAGE CAPITAL LETTER EIN
+foldMapping '\x104B8' = CM '\x104E0' '\0' '\0'
+-- OSAGE CAPITAL LETTER HA
+foldMapping '\x104B9' = CM '\x104E1' '\0' '\0'
+-- OSAGE CAPITAL LETTER HYA
+foldMapping '\x104BA' = CM '\x104E2' '\0' '\0'
+-- OSAGE CAPITAL LETTER I
+foldMapping '\x104BB' = CM '\x104E3' '\0' '\0'
+-- OSAGE CAPITAL LETTER KA
+foldMapping '\x104BC' = CM '\x104E4' '\0' '\0'
+-- OSAGE CAPITAL LETTER EHKA
+foldMapping '\x104BD' = CM '\x104E5' '\0' '\0'
+-- OSAGE CAPITAL LETTER KYA
+foldMapping '\x104BE' = CM '\x104E6' '\0' '\0'
+-- OSAGE CAPITAL LETTER LA
+foldMapping '\x104BF' = CM '\x104E7' '\0' '\0'
+-- OSAGE CAPITAL LETTER MA
+foldMapping '\x104C0' = CM '\x104E8' '\0' '\0'
+-- OSAGE CAPITAL LETTER NA
+foldMapping '\x104C1' = CM '\x104E9' '\0' '\0'
+-- OSAGE CAPITAL LETTER O
+foldMapping '\x104C2' = CM '\x104EA' '\0' '\0'
+-- OSAGE CAPITAL LETTER OIN
+foldMapping '\x104C3' = CM '\x104EB' '\0' '\0'
+-- OSAGE CAPITAL LETTER PA
+foldMapping '\x104C4' = CM '\x104EC' '\0' '\0'
+-- OSAGE CAPITAL LETTER EHPA
+foldMapping '\x104C5' = CM '\x104ED' '\0' '\0'
+-- OSAGE CAPITAL LETTER SA
+foldMapping '\x104C6' = CM '\x104EE' '\0' '\0'
+-- OSAGE CAPITAL LETTER SHA
+foldMapping '\x104C7' = CM '\x104EF' '\0' '\0'
+-- OSAGE CAPITAL LETTER TA
+foldMapping '\x104C8' = CM '\x104F0' '\0' '\0'
+-- OSAGE CAPITAL LETTER EHTA
+foldMapping '\x104C9' = CM '\x104F1' '\0' '\0'
+-- OSAGE CAPITAL LETTER TSA
+foldMapping '\x104CA' = CM '\x104F2' '\0' '\0'
+-- OSAGE CAPITAL LETTER EHTSA
+foldMapping '\x104CB' = CM '\x104F3' '\0' '\0'
+-- OSAGE CAPITAL LETTER TSHA
+foldMapping '\x104CC' = CM '\x104F4' '\0' '\0'
+-- OSAGE CAPITAL LETTER DHA
+foldMapping '\x104CD' = CM '\x104F5' '\0' '\0'
+-- OSAGE CAPITAL LETTER U
+foldMapping '\x104CE' = CM '\x104F6' '\0' '\0'
+-- OSAGE CAPITAL LETTER WA
+foldMapping '\x104CF' = CM '\x104F7' '\0' '\0'
+-- OSAGE CAPITAL LETTER KHA
+foldMapping '\x104D0' = CM '\x104F8' '\0' '\0'
+-- OSAGE CAPITAL LETTER GHA
+foldMapping '\x104D1' = CM '\x104F9' '\0' '\0'
+-- OSAGE CAPITAL LETTER ZA
+foldMapping '\x104D2' = CM '\x104FA' '\0' '\0'
+-- OSAGE CAPITAL LETTER ZHA
+foldMapping '\x104D3' = CM '\x104FB' '\0' '\0'
+-- OLD HUNGARIAN CAPITAL LETTER A
+foldMapping '\x10C80' = CM '\x10CC0' '\0' '\0'
+-- OLD HUNGARIAN CAPITAL LETTER AA
+foldMapping '\x10C81' = CM '\x10CC1' '\0' '\0'
+-- OLD HUNGARIAN CAPITAL LETTER EB
+foldMapping '\x10C82' = CM '\x10CC2' '\0' '\0'
+-- OLD HUNGARIAN CAPITAL LETTER AMB
+foldMapping '\x10C83' = CM '\x10CC3' '\0' '\0'
+-- OLD HUNGARIAN CAPITAL LETTER EC
+foldMapping '\x10C84' = CM '\x10CC4' '\0' '\0'
+-- OLD HUNGARIAN CAPITAL LETTER ENC
+foldMapping '\x10C85' = CM '\x10CC5' '\0' '\0'
+-- OLD HUNGARIAN CAPITAL LETTER ECS
+foldMapping '\x10C86' = CM '\x10CC6' '\0' '\0'
+-- OLD HUNGARIAN CAPITAL LETTER ED
+foldMapping '\x10C87' = CM '\x10CC7' '\0' '\0'
+-- OLD HUNGARIAN CAPITAL LETTER AND
+foldMapping '\x10C88' = CM '\x10CC8' '\0' '\0'
+-- OLD HUNGARIAN CAPITAL LETTER E
+foldMapping '\x10C89' = CM '\x10CC9' '\0' '\0'
+-- OLD HUNGARIAN CAPITAL LETTER CLOSE E
+foldMapping '\x10C8A' = CM '\x10CCA' '\0' '\0'
+-- OLD HUNGARIAN CAPITAL LETTER EE
+foldMapping '\x10C8B' = CM '\x10CCB' '\0' '\0'
+-- OLD HUNGARIAN CAPITAL LETTER EF
+foldMapping '\x10C8C' = CM '\x10CCC' '\0' '\0'
+-- OLD HUNGARIAN CAPITAL LETTER EG
+foldMapping '\x10C8D' = CM '\x10CCD' '\0' '\0'
+-- OLD HUNGARIAN CAPITAL LETTER EGY
+foldMapping '\x10C8E' = CM '\x10CCE' '\0' '\0'
+-- OLD HUNGARIAN CAPITAL LETTER EH
+foldMapping '\x10C8F' = CM '\x10CCF' '\0' '\0'
+-- OLD HUNGARIAN CAPITAL LETTER I
+foldMapping '\x10C90' = CM '\x10CD0' '\0' '\0'
+-- OLD HUNGARIAN CAPITAL LETTER II
+foldMapping '\x10C91' = CM '\x10CD1' '\0' '\0'
+-- OLD HUNGARIAN CAPITAL LETTER EJ
+foldMapping '\x10C92' = CM '\x10CD2' '\0' '\0'
+-- OLD HUNGARIAN CAPITAL LETTER EK
+foldMapping '\x10C93' = CM '\x10CD3' '\0' '\0'
+-- OLD HUNGARIAN CAPITAL LETTER AK
+foldMapping '\x10C94' = CM '\x10CD4' '\0' '\0'
+-- OLD HUNGARIAN CAPITAL LETTER UNK
+foldMapping '\x10C95' = CM '\x10CD5' '\0' '\0'
+-- OLD HUNGARIAN CAPITAL LETTER EL
+foldMapping '\x10C96' = CM '\x10CD6' '\0' '\0'
+-- OLD HUNGARIAN CAPITAL LETTER ELY
+foldMapping '\x10C97' = CM '\x10CD7' '\0' '\0'
+-- OLD HUNGARIAN CAPITAL LETTER EM
+foldMapping '\x10C98' = CM '\x10CD8' '\0' '\0'
+-- OLD HUNGARIAN CAPITAL LETTER EN
+foldMapping '\x10C99' = CM '\x10CD9' '\0' '\0'
+-- OLD HUNGARIAN CAPITAL LETTER ENY
+foldMapping '\x10C9A' = CM '\x10CDA' '\0' '\0'
+-- OLD HUNGARIAN CAPITAL LETTER O
+foldMapping '\x10C9B' = CM '\x10CDB' '\0' '\0'
+-- OLD HUNGARIAN CAPITAL LETTER OO
+foldMapping '\x10C9C' = CM '\x10CDC' '\0' '\0'
+-- OLD HUNGARIAN CAPITAL LETTER NIKOLSBURG OE
+foldMapping '\x10C9D' = CM '\x10CDD' '\0' '\0'
+-- OLD HUNGARIAN CAPITAL LETTER RUDIMENTA OE
+foldMapping '\x10C9E' = CM '\x10CDE' '\0' '\0'
+-- OLD HUNGARIAN CAPITAL LETTER OEE
+foldMapping '\x10C9F' = CM '\x10CDF' '\0' '\0'
+-- OLD HUNGARIAN CAPITAL LETTER EP
+foldMapping '\x10CA0' = CM '\x10CE0' '\0' '\0'
+-- OLD HUNGARIAN CAPITAL LETTER EMP
+foldMapping '\x10CA1' = CM '\x10CE1' '\0' '\0'
+-- OLD HUNGARIAN CAPITAL LETTER ER
+foldMapping '\x10CA2' = CM '\x10CE2' '\0' '\0'
+-- OLD HUNGARIAN CAPITAL LETTER SHORT ER
+foldMapping '\x10CA3' = CM '\x10CE3' '\0' '\0'
+-- OLD HUNGARIAN CAPITAL LETTER ES
+foldMapping '\x10CA4' = CM '\x10CE4' '\0' '\0'
+-- OLD HUNGARIAN CAPITAL LETTER ESZ
+foldMapping '\x10CA5' = CM '\x10CE5' '\0' '\0'
+-- OLD HUNGARIAN CAPITAL LETTER ET
+foldMapping '\x10CA6' = CM '\x10CE6' '\0' '\0'
+-- OLD HUNGARIAN CAPITAL LETTER ENT
+foldMapping '\x10CA7' = CM '\x10CE7' '\0' '\0'
+-- OLD HUNGARIAN CAPITAL LETTER ETY
+foldMapping '\x10CA8' = CM '\x10CE8' '\0' '\0'
+-- OLD HUNGARIAN CAPITAL LETTER ECH
+foldMapping '\x10CA9' = CM '\x10CE9' '\0' '\0'
+-- OLD HUNGARIAN CAPITAL LETTER U
+foldMapping '\x10CAA' = CM '\x10CEA' '\0' '\0'
+-- OLD HUNGARIAN CAPITAL LETTER UU
+foldMapping '\x10CAB' = CM '\x10CEB' '\0' '\0'
+-- OLD HUNGARIAN CAPITAL LETTER NIKOLSBURG UE
+foldMapping '\x10CAC' = CM '\x10CEC' '\0' '\0'
+-- OLD HUNGARIAN CAPITAL LETTER RUDIMENTA UE
+foldMapping '\x10CAD' = CM '\x10CED' '\0' '\0'
+-- OLD HUNGARIAN CAPITAL LETTER EV
+foldMapping '\x10CAE' = CM '\x10CEE' '\0' '\0'
+-- OLD HUNGARIAN CAPITAL LETTER EZ
+foldMapping '\x10CAF' = CM '\x10CEF' '\0' '\0'
+-- OLD HUNGARIAN CAPITAL LETTER EZS
+foldMapping '\x10CB0' = CM '\x10CF0' '\0' '\0'
+-- OLD HUNGARIAN CAPITAL LETTER ENT-SHAPED SIGN
+foldMapping '\x10CB1' = CM '\x10CF1' '\0' '\0'
+-- OLD HUNGARIAN CAPITAL LETTER US
+foldMapping '\x10CB2' = CM '\x10CF2' '\0' '\0'
+-- WARANG CITI CAPITAL LETTER NGAA
+foldMapping '\x118A0' = CM '\x118C0' '\0' '\0'
+-- WARANG CITI CAPITAL LETTER A
+foldMapping '\x118A1' = CM '\x118C1' '\0' '\0'
+-- WARANG CITI CAPITAL LETTER WI
+foldMapping '\x118A2' = CM '\x118C2' '\0' '\0'
+-- WARANG CITI CAPITAL LETTER YU
+foldMapping '\x118A3' = CM '\x118C3' '\0' '\0'
+-- WARANG CITI CAPITAL LETTER YA
+foldMapping '\x118A4' = CM '\x118C4' '\0' '\0'
+-- WARANG CITI CAPITAL LETTER YO
+foldMapping '\x118A5' = CM '\x118C5' '\0' '\0'
+-- WARANG CITI CAPITAL LETTER II
+foldMapping '\x118A6' = CM '\x118C6' '\0' '\0'
+-- WARANG CITI CAPITAL LETTER UU
+foldMapping '\x118A7' = CM '\x118C7' '\0' '\0'
+-- WARANG CITI CAPITAL LETTER E
+foldMapping '\x118A8' = CM '\x118C8' '\0' '\0'
+-- WARANG CITI CAPITAL LETTER O
+foldMapping '\x118A9' = CM '\x118C9' '\0' '\0'
+-- WARANG CITI CAPITAL LETTER ANG
+foldMapping '\x118AA' = CM '\x118CA' '\0' '\0'
+-- WARANG CITI CAPITAL LETTER GA
+foldMapping '\x118AB' = CM '\x118CB' '\0' '\0'
+-- WARANG CITI CAPITAL LETTER KO
+foldMapping '\x118AC' = CM '\x118CC' '\0' '\0'
+-- WARANG CITI CAPITAL LETTER ENY
+foldMapping '\x118AD' = CM '\x118CD' '\0' '\0'
+-- WARANG CITI CAPITAL LETTER YUJ
+foldMapping '\x118AE' = CM '\x118CE' '\0' '\0'
+-- WARANG CITI CAPITAL LETTER UC
+foldMapping '\x118AF' = CM '\x118CF' '\0' '\0'
+-- WARANG CITI CAPITAL LETTER ENN
+foldMapping '\x118B0' = CM '\x118D0' '\0' '\0'
+-- WARANG CITI CAPITAL LETTER ODD
+foldMapping '\x118B1' = CM '\x118D1' '\0' '\0'
+-- WARANG CITI CAPITAL LETTER TTE
+foldMapping '\x118B2' = CM '\x118D2' '\0' '\0'
+-- WARANG CITI CAPITAL LETTER NUNG
+foldMapping '\x118B3' = CM '\x118D3' '\0' '\0'
+-- WARANG CITI CAPITAL LETTER DA
+foldMapping '\x118B4' = CM '\x118D4' '\0' '\0'
+-- WARANG CITI CAPITAL LETTER AT
+foldMapping '\x118B5' = CM '\x118D5' '\0' '\0'
+-- WARANG CITI CAPITAL LETTER AM
+foldMapping '\x118B6' = CM '\x118D6' '\0' '\0'
+-- WARANG CITI CAPITAL LETTER BU
+foldMapping '\x118B7' = CM '\x118D7' '\0' '\0'
+-- WARANG CITI CAPITAL LETTER PU
+foldMapping '\x118B8' = CM '\x118D8' '\0' '\0'
+-- WARANG CITI CAPITAL LETTER HIYO
+foldMapping '\x118B9' = CM '\x118D9' '\0' '\0'
+-- WARANG CITI CAPITAL LETTER HOLO
+foldMapping '\x118BA' = CM '\x118DA' '\0' '\0'
+-- WARANG CITI CAPITAL LETTER HORR
+foldMapping '\x118BB' = CM '\x118DB' '\0' '\0'
+-- WARANG CITI CAPITAL LETTER HAR
+foldMapping '\x118BC' = CM '\x118DC' '\0' '\0'
+-- WARANG CITI CAPITAL LETTER SSUU
+foldMapping '\x118BD' = CM '\x118DD' '\0' '\0'
+-- WARANG CITI CAPITAL LETTER SII
+foldMapping '\x118BE' = CM '\x118DE' '\0' '\0'
+-- WARANG CITI CAPITAL LETTER VIYO
+foldMapping '\x118BF' = CM '\x118DF' '\0' '\0'
+-- ADLAM CAPITAL LETTER ALIF
+foldMapping '\x1E900' = CM '\x1E922' '\0' '\0'
+-- ADLAM CAPITAL LETTER DAALI
+foldMapping '\x1E901' = CM '\x1E923' '\0' '\0'
+-- ADLAM CAPITAL LETTER LAAM
+foldMapping '\x1E902' = CM '\x1E924' '\0' '\0'
+-- ADLAM CAPITAL LETTER MIIM
+foldMapping '\x1E903' = CM '\x1E925' '\0' '\0'
+-- ADLAM CAPITAL LETTER BA
+foldMapping '\x1E904' = CM '\x1E926' '\0' '\0'
+-- ADLAM CAPITAL LETTER SINNYIIYHE
+foldMapping '\x1E905' = CM '\x1E927' '\0' '\0'
+-- ADLAM CAPITAL LETTER PE
+foldMapping '\x1E906' = CM '\x1E928' '\0' '\0'
+-- ADLAM CAPITAL LETTER BHE
+foldMapping '\x1E907' = CM '\x1E929' '\0' '\0'
+-- ADLAM CAPITAL LETTER RA
+foldMapping '\x1E908' = CM '\x1E92A' '\0' '\0'
+-- ADLAM CAPITAL LETTER E
+foldMapping '\x1E909' = CM '\x1E92B' '\0' '\0'
+-- ADLAM CAPITAL LETTER FA
+foldMapping '\x1E90A' = CM '\x1E92C' '\0' '\0'
+-- ADLAM CAPITAL LETTER I
+foldMapping '\x1E90B' = CM '\x1E92D' '\0' '\0'
+-- ADLAM CAPITAL LETTER O
+foldMapping '\x1E90C' = CM '\x1E92E' '\0' '\0'
+-- ADLAM CAPITAL LETTER DHA
+foldMapping '\x1E90D' = CM '\x1E92F' '\0' '\0'
+-- ADLAM CAPITAL LETTER YHE
+foldMapping '\x1E90E' = CM '\x1E930' '\0' '\0'
+-- ADLAM CAPITAL LETTER WAW
+foldMapping '\x1E90F' = CM '\x1E931' '\0' '\0'
+-- ADLAM CAPITAL LETTER NUN
+foldMapping '\x1E910' = CM '\x1E932' '\0' '\0'
+-- ADLAM CAPITAL LETTER KAF
+foldMapping '\x1E911' = CM '\x1E933' '\0' '\0'
+-- ADLAM CAPITAL LETTER YA
+foldMapping '\x1E912' = CM '\x1E934' '\0' '\0'
+-- ADLAM CAPITAL LETTER U
+foldMapping '\x1E913' = CM '\x1E935' '\0' '\0'
+-- ADLAM CAPITAL LETTER JIIM
+foldMapping '\x1E914' = CM '\x1E936' '\0' '\0'
+-- ADLAM CAPITAL LETTER CHI
+foldMapping '\x1E915' = CM '\x1E937' '\0' '\0'
+-- ADLAM CAPITAL LETTER HA
+foldMapping '\x1E916' = CM '\x1E938' '\0' '\0'
+-- ADLAM CAPITAL LETTER QAAF
+foldMapping '\x1E917' = CM '\x1E939' '\0' '\0'
+-- ADLAM CAPITAL LETTER GA
+foldMapping '\x1E918' = CM '\x1E93A' '\0' '\0'
+-- ADLAM CAPITAL LETTER NYA
+foldMapping '\x1E919' = CM '\x1E93B' '\0' '\0'
+-- ADLAM CAPITAL LETTER TU
+foldMapping '\x1E91A' = CM '\x1E93C' '\0' '\0'
+-- ADLAM CAPITAL LETTER NHA
+foldMapping '\x1E91B' = CM '\x1E93D' '\0' '\0'
+-- ADLAM CAPITAL LETTER VA
+foldMapping '\x1E91C' = CM '\x1E93E' '\0' '\0'
+-- ADLAM CAPITAL LETTER KHA
+foldMapping '\x1E91D' = CM '\x1E93F' '\0' '\0'
+-- ADLAM CAPITAL LETTER GBE
+foldMapping '\x1E91E' = CM '\x1E940' '\0' '\0'
+-- ADLAM CAPITAL LETTER ZAL
+foldMapping '\x1E91F' = CM '\x1E941' '\0' '\0'
+-- ADLAM CAPITAL LETTER KPO
+foldMapping '\x1E920' = CM '\x1E942' '\0' '\0'
+-- ADLAM CAPITAL LETTER SHA
+foldMapping '\x1E921' = CM '\x1E943' '\0' '\0'
+foldMapping c = CM (toLower c) '\0' '\0'
diff --git a/Basement/Types/OffsetSize.hs b/Basement/Types/OffsetSize.hs
--- a/Basement/Types/OffsetSize.hs
+++ b/Basement/Types/OffsetSize.hs
@@ -61,6 +61,7 @@
 import Basement.Numerical.Additive
 import Basement.Numerical.Subtractive
 import Basement.Numerical.Multiplicative
+import Basement.Numerical.Conversion (intToWord)
 import Basement.Nat
 import Basement.IntegralConv
 import Data.List (foldl')
@@ -88,14 +89,10 @@
 instance IsIntegral (Offset ty) where
     toInteger (Offset i) = toInteger i
 instance IsNatural (Offset ty) where
-    toNatural (Offset i) = toNatural (integralCast i :: Word)
+    toNatural (Offset i) = toNatural (intToWord i)
 instance Subtractive (Offset ty) where
     type Difference (Offset ty) = CountOf ty
     (Offset a) - (Offset b) = CountOf (a-b)
-instance IntegralCast Int (Offset ty) where
-    integralCast i = Offset i
-instance IntegralCast Word (Offset ty) where
-    integralCast (W# w) = Offset (I# (word2Int# w))
 
 (+.) :: Offset ty -> Int -> Offset ty
 (+.) (Offset a) b = Offset (a + b)
@@ -192,7 +189,7 @@
 instance IsIntegral (CountOf ty) where
     toInteger (CountOf i) = toInteger i
 instance IsNatural (CountOf ty) where
-    toNatural (CountOf i) = toNatural (integralCast i :: Word)
+    toNatural (CountOf i) = toNatural (intToWord i)
 
 instance Additive (CountOf ty) where
     azero = CountOf 0
@@ -210,11 +207,6 @@
     mempty = azero
     mappend = (+)
     mconcat = foldl' (+) 0
-
-instance IntegralCast Int (CountOf ty) where
-    integralCast i = CountOf i
-instance IntegralCast Word (CountOf ty) where
-    integralCast (W# w) = CountOf (I# (word2Int# w))
 
 sizeOfE :: CountOf Word8 -> CountOf ty -> CountOf Word8
 sizeOfE (CountOf sz) (CountOf ty) = CountOf (ty * sz)
diff --git a/Basement/Types/Word128.hs b/Basement/Types/Word128.hs
--- a/Basement/Types/Word128.hs
+++ b/Basement/Types/Word128.hs
@@ -1,6 +1,7 @@
-{-# LANGUAGE CPP                   #-}
-{-# LANGUAGE MagicHash #-}
-{-# LANGUAGE UnboxedTuples #-}
+{-# LANGUAGE CPP                #-}
+{-# LANGUAGE MagicHash          #-}
+{-# LANGUAGE UnboxedTuples      #-}
+{-# LANGUAGE DeriveDataTypeable #-}
 module Basement.Types.Word128
     ( Word128(..)
     , (+)
@@ -37,7 +38,7 @@
 -- | 128 bits Word
 data Word128 = Word128 {-# UNPACK #-} !Word64
                        {-# UNPACK #-} !Word64
-    deriving (Eq)
+    deriving (Eq, Typeable)
 
 instance Show Word128 where
     show w = Prelude.show (toNatural w)
diff --git a/Basement/Types/Word256.hs b/Basement/Types/Word256.hs
--- a/Basement/Types/Word256.hs
+++ b/Basement/Types/Word256.hs
@@ -1,6 +1,7 @@
-{-# LANGUAGE CPP                   #-}
-{-# LANGUAGE MagicHash #-}
-{-# LANGUAGE UnboxedTuples #-}
+{-# LANGUAGE CPP                #-}
+{-# LANGUAGE MagicHash          #-}
+{-# LANGUAGE UnboxedTuples      #-}
+{-# LANGUAGE DeriveDataTypeable #-}
 module Basement.Types.Word256
     ( Word256(..)
     , (+)
@@ -39,7 +40,7 @@
                        {-# UNPACK #-} !Word64
                        {-# UNPACK #-} !Word64
                        {-# UNPACK #-} !Word64
-    deriving (Eq)
+    deriving (Eq, Typeable)
 
 instance Show Word256 where
     show w = Prelude.show (toNatural w)
diff --git a/Basement/UArray/Base.hs b/Basement/UArray/Base.hs
--- a/Basement/UArray/Base.hs
+++ b/Basement/UArray/Base.hs
@@ -605,29 +605,26 @@
     !la = length a
     !lb = length b
 
-concat :: PrimType ty => [UArray ty] -> UArray ty
-concat [] = empty
-concat l  =
-    case filterAndSum (CountOf 0) [] l of
-        (_,[])            -> empty
-        (_,[x])           -> x
-        (totalLen,chunks) -> runST $ do
-            r <- new totalLen
-            doCopy r (Offset 0) chunks
-            unsafeFreeze r
+concat :: forall ty . PrimType ty => [UArray ty] -> UArray ty
+concat original = runST $ do
+    r <- new total
+    goCopy r 0 original
+    unsafeFreeze r
   where
-    -- TODO would go faster not to reverse but pack from the end instead
-    filterAndSum !totalLen acc []     = (totalLen, List.reverse acc)
-    filterAndSum !totalLen acc (x:xs)
-        | len == CountOf 0 = filterAndSum totalLen acc xs
-        | otherwise      = filterAndSum (len+totalLen) (x:acc) xs
-      where len = length x
+    !total = size 0 original
+    -- size
+    size !sz []     = sz
+    size !sz (x:xs) = size (length x + sz) xs
 
-    doCopy _ _ []     = return ()
-    doCopy r i (x:xs) = do
-        unsafeCopyAtRO r i x (Offset 0) lx
-        doCopy r (i `offsetPlusE` lx) xs
-      where lx = length x
+    zero = Offset 0
+
+    goCopy r = loop
+      where
+        loop _  []      = pure ()
+        loop !i (x:xs) = do
+            unsafeCopyAtRO r i x zero lx
+            loop (i `offsetPlusE` lx) xs
+          where !lx = length x
 
 -- | Create a Block from a UArray.
 --
diff --git a/Basement/UArray/Mutable.hs b/Basement/UArray/Mutable.hs
--- a/Basement/UArray/Mutable.hs
+++ b/Basement/UArray/Mutable.hs
@@ -153,10 +153,10 @@
     ofs = mutableOffset marr
 
     sz = primSizeInBytes (Proxy :: Proxy ty)
-    !(CountOf bytes@(I# bytes#)) = sizeOfE sz count
-    !(Offset od@(I# od#)) = offsetOfE sz ofs
+    !count'@(CountOf bytes@(I# bytes#)) = sizeOfE sz count
+    !off'@(Offset od@(I# od#)) = offsetOfE sz ofs
 
-    copyNative (MutableBlock mba) = primitive $ \st -> (# copyAddrToByteArray# src# mba od# bytes# st, () #)
+    copyNative mba = MBLK.unsafeCopyBytesPtr mba off' src count'
     copyPtr fptr = withFinalPtr fptr $ \dst ->
         unsafePrimFromIO $ copyBytes (dst `plusPtr` od) src bytes
 
diff --git a/Basement/UTF8/Types.hs b/Basement/UTF8/Types.hs
--- a/Basement/UTF8/Types.hs
+++ b/Basement/UTF8/Types.hs
@@ -9,6 +9,8 @@
     , isValidStepDigit
     -- * Unicode Errors
     , ValidationFailure(..)
+    -- * Case Conversion
+    , CM (..)
     ) where
 
 import           Basement.Compat.Base
@@ -33,6 +35,9 @@
 
 -- | Step when processing ASCII character
 newtype StepASCII = StepASCII Word8
+
+-- | Specialized tuple used for case mapping.
+data CM = CM {-# UNPACK #-} !Char {-# UNPACK #-} !Char {-# UNPACK #-} !Char deriving (Eq)
 
 isValidStepASCII :: StepASCII -> Bool
 isValidStepASCII (StepASCII w) = w < 0x80
diff --git a/basement.cabal b/basement.cabal
--- a/basement.cabal
+++ b/basement.cabal
@@ -1,12 +1,12 @@
 name:                basement
-version:             0.0.5
+version:             0.0.6
 synopsis:            Foundation scrap box of array & string
 description:         Foundation most basic primitives without any dependencies
 homepage:            https://github.com/haskell-foundation/foundation#readme
 license:             BSD3
 license-file:        LICENSE
 copyright:           2015-2017 Vincent Hanquez <vincent@snarc.org>
-                     2017      Foundation Maintainers
+                     2017-2018 Foundation Maintainers
 maintainer:          vincent@snarc.org
 copyright:           Vincent Hanquez
 category:            Web
@@ -33,6 +33,7 @@
                      Basement.PrimType
 
                      Basement.Exception
+                     Basement.Cast
                      Basement.From
 
                      Basement.Types.Char7
@@ -51,9 +52,11 @@
                      Basement.BoxedArray
                      Basement.Block
                      Basement.Block.Mutable
+                     Basement.Block.Builder
                      Basement.UArray
                      Basement.UArray.Mutable
                      Basement.String
+                     Basement.String.Builder
                      Basement.NonEmpty
                      
                      -- Utils
@@ -77,6 +80,7 @@
                      Basement.Alg.XorShift
 
                      -- compat / base redefinition
+                     Basement.Compat.AMP
                      Basement.Compat.Base
                      Basement.Compat.Bifunctor
                      Basement.Compat.CallStack
@@ -128,6 +132,7 @@
 
                      Basement.UArray.Base
 
+                     Basement.String.CaseMapping
                      Basement.String.Encoding.Encoding
                      Basement.String.Encoding.UTF16
                      Basement.String.Encoding.UTF32
