cryptonite 0.21 → 0.22
raw patch · 86 files changed
+5679/−18216 lines, 86 filesdep −byteabledep ~memoryPVP ok
version bump matches the API change (PVP)
Dependencies removed: byteable
Dependency ranges changed: memory
API changes (from Hackage documentation)
- Crypto.PubKey.Ed448: data DhSecret
- Crypto.PubKey.Ed448: data PublicKey
- Crypto.PubKey.Ed448: data SecretKey
- Crypto.PubKey.Ed448: dh :: PublicKey -> SecretKey -> DhSecret
- Crypto.PubKey.Ed448: dhSecret :: ByteArrayAccess b => b -> CryptoFailable DhSecret
- Crypto.PubKey.Ed448: generateSecretKey :: MonadRandom m => m SecretKey
- Crypto.PubKey.Ed448: instance Control.DeepSeq.NFData Crypto.PubKey.Ed448.DhSecret
- Crypto.PubKey.Ed448: instance Control.DeepSeq.NFData Crypto.PubKey.Ed448.PublicKey
- Crypto.PubKey.Ed448: instance Control.DeepSeq.NFData Crypto.PubKey.Ed448.SecretKey
- Crypto.PubKey.Ed448: instance Data.ByteArray.Types.ByteArrayAccess Crypto.PubKey.Ed448.DhSecret
- Crypto.PubKey.Ed448: instance Data.ByteArray.Types.ByteArrayAccess Crypto.PubKey.Ed448.PublicKey
- Crypto.PubKey.Ed448: instance Data.ByteArray.Types.ByteArrayAccess Crypto.PubKey.Ed448.SecretKey
- Crypto.PubKey.Ed448: instance GHC.Classes.Eq Crypto.PubKey.Ed448.DhSecret
- Crypto.PubKey.Ed448: instance GHC.Classes.Eq Crypto.PubKey.Ed448.PublicKey
- Crypto.PubKey.Ed448: instance GHC.Classes.Eq Crypto.PubKey.Ed448.SecretKey
- Crypto.PubKey.Ed448: instance GHC.Show.Show Crypto.PubKey.Ed448.DhSecret
- Crypto.PubKey.Ed448: instance GHC.Show.Show Crypto.PubKey.Ed448.PublicKey
- Crypto.PubKey.Ed448: instance GHC.Show.Show Crypto.PubKey.Ed448.SecretKey
- Crypto.PubKey.Ed448: publicKey :: ByteArrayAccess bs => bs -> CryptoFailable PublicKey
- Crypto.PubKey.Ed448: secretKey :: ByteArrayAccess bs => bs -> CryptoFailable SecretKey
- Crypto.PubKey.Ed448: toPublic :: SecretKey -> PublicKey
+ Crypto.Error: CryptoError_OutputLengthTooBig :: CryptoError
+ Crypto.Error: CryptoError_OutputLengthTooSmall :: CryptoError
+ Crypto.Error: CryptoError_PrimeSizeInvalid :: CryptoError
+ Crypto.Error: CryptoError_SaltTooSmall :: CryptoError
+ Crypto.Hash.Algorithms: Blake2b_160 :: Blake2b_160
+ Crypto.Hash.Algorithms: Blake2b_224 :: Blake2b_224
+ Crypto.Hash.Algorithms: Blake2b_256 :: Blake2b_256
+ Crypto.Hash.Algorithms: Blake2b_384 :: Blake2b_384
+ Crypto.Hash.Algorithms: Blake2s_160 :: Blake2s_160
+ Crypto.Hash.Algorithms: SHAKE128 :: SHAKE128
+ Crypto.Hash.Algorithms: SHAKE256 :: SHAKE256
+ Crypto.Hash.Algorithms: data Blake2b_160
+ Crypto.Hash.Algorithms: data Blake2b_224
+ Crypto.Hash.Algorithms: data Blake2b_256
+ Crypto.Hash.Algorithms: data Blake2b_384
+ Crypto.Hash.Algorithms: data Blake2s_160
+ Crypto.Hash.Algorithms: data SHAKE128 (bitlen :: Nat)
+ Crypto.Hash.Algorithms: data SHAKE256 (bitlen :: Nat)
+ Crypto.KDF.Argon2: Argon2d :: Variant
+ Crypto.KDF.Argon2: Argon2i :: Variant
+ Crypto.KDF.Argon2: Argon2id :: Variant
+ Crypto.KDF.Argon2: Options :: !TimeCost -> !MemoryCost -> !Parallelism -> !Variant -> !Version -> Options
+ Crypto.KDF.Argon2: Version10 :: Version
+ Crypto.KDF.Argon2: Version13 :: Version
+ Crypto.KDF.Argon2: [iterations] :: Options -> !TimeCost
+ Crypto.KDF.Argon2: [memory] :: Options -> !MemoryCost
+ Crypto.KDF.Argon2: [parallelism] :: Options -> !Parallelism
+ Crypto.KDF.Argon2: [variant] :: Options -> !Variant
+ Crypto.KDF.Argon2: [version] :: Options -> !Version
+ Crypto.KDF.Argon2: data Options
+ Crypto.KDF.Argon2: data Variant
+ Crypto.KDF.Argon2: data Version
+ Crypto.KDF.Argon2: defaultOptions :: Options
+ Crypto.KDF.Argon2: hash :: (ByteArrayAccess password, ByteArrayAccess salt, ByteArray out) => Options -> password -> salt -> Int -> CryptoFailable out
+ Crypto.KDF.Argon2: instance GHC.Classes.Eq Crypto.KDF.Argon2.Options
+ Crypto.KDF.Argon2: instance GHC.Classes.Eq Crypto.KDF.Argon2.Variant
+ Crypto.KDF.Argon2: instance GHC.Classes.Eq Crypto.KDF.Argon2.Version
+ Crypto.KDF.Argon2: instance GHC.Classes.Ord Crypto.KDF.Argon2.Options
+ Crypto.KDF.Argon2: instance GHC.Classes.Ord Crypto.KDF.Argon2.Variant
+ Crypto.KDF.Argon2: instance GHC.Classes.Ord Crypto.KDF.Argon2.Version
+ Crypto.KDF.Argon2: instance GHC.Enum.Bounded Crypto.KDF.Argon2.Variant
+ Crypto.KDF.Argon2: instance GHC.Enum.Bounded Crypto.KDF.Argon2.Version
+ Crypto.KDF.Argon2: instance GHC.Enum.Enum Crypto.KDF.Argon2.Variant
+ Crypto.KDF.Argon2: instance GHC.Enum.Enum Crypto.KDF.Argon2.Version
+ Crypto.KDF.Argon2: instance GHC.Read.Read Crypto.KDF.Argon2.Options
+ Crypto.KDF.Argon2: instance GHC.Read.Read Crypto.KDF.Argon2.Variant
+ Crypto.KDF.Argon2: instance GHC.Read.Read Crypto.KDF.Argon2.Version
+ Crypto.KDF.Argon2: instance GHC.Show.Show Crypto.KDF.Argon2.Options
+ Crypto.KDF.Argon2: instance GHC.Show.Show Crypto.KDF.Argon2.Variant
+ Crypto.KDF.Argon2: instance GHC.Show.Show Crypto.KDF.Argon2.Version
+ Crypto.KDF.Argon2: type MemoryCost = Word32
+ Crypto.KDF.Argon2: type Parallelism = Word32
+ Crypto.KDF.Argon2: type TimeCost = Word32
+ Crypto.KDF.PBKDF2: fastPBKDF2_SHA1 :: (ByteArrayAccess password, ByteArrayAccess salt, ByteArray out) => Parameters -> password -> salt -> out
+ Crypto.KDF.PBKDF2: fastPBKDF2_SHA256 :: (ByteArrayAccess password, ByteArrayAccess salt, ByteArray out) => Parameters -> password -> salt -> out
+ Crypto.KDF.PBKDF2: fastPBKDF2_SHA512 :: (ByteArrayAccess password, ByteArrayAccess salt, ByteArray out) => Parameters -> password -> salt -> out
+ Crypto.OTP: FourSteps :: ClockSkew
+ Crypto.OTP: NoSkew :: ClockSkew
+ Crypto.OTP: OTP4 :: OTPDigits
+ Crypto.OTP: OTP5 :: OTPDigits
+ Crypto.OTP: OTP6 :: OTPDigits
+ Crypto.OTP: OTP7 :: OTPDigits
+ Crypto.OTP: OTP8 :: OTPDigits
+ Crypto.OTP: OTP9 :: OTPDigits
+ Crypto.OTP: OneStep :: ClockSkew
+ Crypto.OTP: ThreeSteps :: ClockSkew
+ Crypto.OTP: TwoSteps :: ClockSkew
+ Crypto.OTP: data ClockSkew
+ Crypto.OTP: data OTPDigits
+ Crypto.OTP: data TOTPParams h
+ Crypto.OTP: defaultTOTPParams :: TOTPParams SHA1
+ Crypto.OTP: hotp :: forall hash key. (HashAlgorithm hash, ByteArrayAccess key) => hash -> OTPDigits -> key -> Word64 -> OTP
+ Crypto.OTP: instance GHC.Enum.Enum Crypto.OTP.ClockSkew
+ Crypto.OTP: instance GHC.Show.Show Crypto.OTP.ClockSkew
+ Crypto.OTP: instance GHC.Show.Show Crypto.OTP.OTPDigits
+ Crypto.OTP: instance GHC.Show.Show h => GHC.Show.Show (Crypto.OTP.TOTPParams h)
+ Crypto.OTP: mkTOTPParams :: (HashAlgorithm hash) => hash -> OTPTime -> Word16 -> OTPDigits -> ClockSkew -> Either String (TOTPParams hash)
+ Crypto.OTP: resynchronize :: (HashAlgorithm hash, ByteArrayAccess key) => hash -> OTPDigits -> Word16 -> key -> Word64 -> (OTP, [OTP]) -> Maybe Word64
+ Crypto.OTP: totp :: (HashAlgorithm hash, ByteArrayAccess key) => TOTPParams hash -> key -> OTPTime -> OTP
+ Crypto.OTP: totpVerify :: (HashAlgorithm hash, ByteArrayAccess key) => TOTPParams hash -> key -> OTPTime -> OTP -> Bool
+ Crypto.OTP: type OTP = Word32
+ Crypto.OTP: type OTPTime = Word64
+ Crypto.PubKey.Curve448: data DhSecret
+ Crypto.PubKey.Curve448: data PublicKey
+ Crypto.PubKey.Curve448: data SecretKey
+ Crypto.PubKey.Curve448: dh :: PublicKey -> SecretKey -> DhSecret
+ Crypto.PubKey.Curve448: dhSecret :: ByteArrayAccess b => b -> CryptoFailable DhSecret
+ Crypto.PubKey.Curve448: generateSecretKey :: MonadRandom m => m SecretKey
+ Crypto.PubKey.Curve448: instance Control.DeepSeq.NFData Crypto.PubKey.Curve448.DhSecret
+ Crypto.PubKey.Curve448: instance Control.DeepSeq.NFData Crypto.PubKey.Curve448.PublicKey
+ Crypto.PubKey.Curve448: instance Control.DeepSeq.NFData Crypto.PubKey.Curve448.SecretKey
+ Crypto.PubKey.Curve448: instance Data.ByteArray.Types.ByteArrayAccess Crypto.PubKey.Curve448.DhSecret
+ Crypto.PubKey.Curve448: instance Data.ByteArray.Types.ByteArrayAccess Crypto.PubKey.Curve448.PublicKey
+ Crypto.PubKey.Curve448: instance Data.ByteArray.Types.ByteArrayAccess Crypto.PubKey.Curve448.SecretKey
+ Crypto.PubKey.Curve448: instance GHC.Classes.Eq Crypto.PubKey.Curve448.DhSecret
+ Crypto.PubKey.Curve448: instance GHC.Classes.Eq Crypto.PubKey.Curve448.PublicKey
+ Crypto.PubKey.Curve448: instance GHC.Classes.Eq Crypto.PubKey.Curve448.SecretKey
+ Crypto.PubKey.Curve448: instance GHC.Show.Show Crypto.PubKey.Curve448.DhSecret
+ Crypto.PubKey.Curve448: instance GHC.Show.Show Crypto.PubKey.Curve448.PublicKey
+ Crypto.PubKey.Curve448: instance GHC.Show.Show Crypto.PubKey.Curve448.SecretKey
+ Crypto.PubKey.Curve448: publicKey :: ByteArrayAccess bs => bs -> CryptoFailable PublicKey
+ Crypto.PubKey.Curve448: secretKey :: ByteArrayAccess bs => bs -> CryptoFailable SecretKey
+ Crypto.PubKey.Curve448: toPublic :: SecretKey -> PublicKey
Files
- CHANGELOG.md +21/−0
- Crypto/ECC.hs +1/−1
- Crypto/Error/Types.hs +6/−0
- Crypto/Hash/Algorithms.hs +13/−1
- Crypto/Hash/Blake2b.hs +53/−2
- Crypto/Hash/Blake2bp.hs +4/−1
- Crypto/Hash/Blake2s.hs +18/−3
- Crypto/Hash/Blake2sp.hs +5/−2
- Crypto/Hash/Keccak.hs +7/−4
- Crypto/Hash/MD2.hs +4/−1
- Crypto/Hash/MD4.hs +4/−1
- Crypto/Hash/MD5.hs +4/−1
- Crypto/Hash/RIPEMD160.hs +4/−1
- Crypto/Hash/SHA1.hs +4/−1
- Crypto/Hash/SHA224.hs +4/−1
- Crypto/Hash/SHA256.hs +4/−1
- Crypto/Hash/SHA3.hs +7/−6
- Crypto/Hash/SHA384.hs +4/−1
- Crypto/Hash/SHA512.hs +4/−1
- Crypto/Hash/SHA512t.hs +5/−2
- Crypto/Hash/SHAKE.hs +91/−0
- Crypto/Hash/Skein256.hs +5/−2
- Crypto/Hash/Skein512.hs +7/−4
- Crypto/Hash/Tiger.hs +4/−1
- Crypto/Hash/Whirlpool.hs +4/−1
- Crypto/Internal/Nat.hs +101/−0
- Crypto/KDF/Argon2.hs +155/−0
- Crypto/KDF/PBKDF2.hs +74/−1
- Crypto/Number/Prime.hs +31/−7
- Crypto/OTP.hs +179/−0
- Crypto/PubKey/Curve448.hs +108/−0
- Crypto/PubKey/Ed448.hs +6/−94
- cbits/argon2/argon2.c +142/−0
- cbits/argon2/argon2.h +267/−0
- cbits/argon2/blamka-round-opt.h +180/−0
- cbits/argon2/blamka-round-ref.h +56/−0
- cbits/argon2/core.c +701/−0
- cbits/argon2/core.h +234/−0
- cbits/argon2/opt.c +186/−0
- cbits/argon2/opt.h +35/−0
- cbits/argon2/ref.c +185/−0
- cbits/argon2/ref.h +35/−0
- cbits/argon2/thread.c +57/−0
- cbits/argon2/thread.h +67/−0
- cbits/blake2/ref/blake2-impl.h +86/−63
- cbits/blake2/ref/blake2-kat.h +0/−16467
- cbits/blake2/ref/blake2.h +123/−78
- cbits/blake2/ref/blake2b-ref.c +147/−173
- cbits/blake2/ref/blake2bp-ref.c +125/−57
- cbits/blake2/ref/blake2s-ref.c +144/−171
- cbits/blake2/ref/blake2sp-ref.c +124/−62
- cbits/blake2/sse/blake2-config.h +12/−12
- cbits/blake2/sse/blake2-impl.h +90/−66
- cbits/blake2/sse/blake2.h +124/−79
- cbits/blake2/sse/blake2b-load-sse2.h +10/−10
- cbits/blake2/sse/blake2b-load-sse41.h +10/−10
- cbits/blake2/sse/blake2b-round.h +12/−12
- cbits/blake2/sse/blake2b.c +179/−209
- cbits/blake2/sse/blake2bp.c +149/−51
- cbits/blake2/sse/blake2s-load-sse2.h +10/−9
- cbits/blake2/sse/blake2s-load-sse41.h +10/−10
- cbits/blake2/sse/blake2s-load-xop.h +17/−15
- cbits/blake2/sse/blake2s-round.h +11/−11
- cbits/blake2/sse/blake2s.c +175/−199
- cbits/blake2/sse/blake2sp.c +151/−52
- cbits/cryptonite_align.h +58/−0
- cbits/cryptonite_keccak.c +0/−159
- cbits/cryptonite_keccak.h +0/−43
- cbits/cryptonite_pbkdf2.c +390/−0
- cbits/cryptonite_pbkdf2.h +31/−0
- cbits/cryptonite_sha1.h +3/−1
- cbits/cryptonite_sha256.h +2/−0
- cbits/cryptonite_sha3.c +82/−9
- cbits/cryptonite_sha3.h +24/−1
- cbits/cryptonite_sha512.h +3/−1
- cbits/ed448/x448.c +1/−1
- cbits/ed448/x448.h +1/−1
- cryptonite.cabal +29/−9
- tests/Hash.hs +42/−0
- tests/KAT_Argon2.hs +42/−0
- tests/KAT_Curve448.hs +25/−0
- tests/KAT_Ed448.hs +0/−25
- tests/KAT_OTP.hs +102/−0
- tests/KAT_PBKDF2.hs +35/−1
- tests/Number.hs +8/−6
- tests/Tests.hs +6/−2
CHANGELOG.md view
@@ -1,3 +1,24 @@+## 0.22++* Add Argon2 (Password Hashing Competition winner) hash function+* Update blake2 to latest upstream version+* Add extra blake2 hashing size+* Add faster PBKDF2 functions for SHA1/SHA256/SHA512+* Add SHAKE128 and SHAKE256+* Cleanup prime generation, and add tests+* Add Time-based One Time Password (TOTP) and HMAC-based One Time Password (HOTP)+* Rename Ed448 module name to Curve448, old module name still valid for now++## 0.21++* Drop automated tests with GHC 7.0, GHC 7.4, GHC 7.6. support dropped, but probably still working.+* Improve non-aligned support in C sources, ChaCha and SHA3 now probably work on arch without support for unaligned access. not complete or tested.+* Add another ECC framework that is more flexible, allowing different implementations to work instead of+ the existing Pure haskell NIST implementation.+* Add ECIES basic primitives+* Add XSalsa20 stream cipher+* Process partial buffer correctly with Poly1305+ ## 0.20 * Fixed hash truncation used in ECDSA signature & verification (Olivier Chéron)
Crypto/ECC.hs view
@@ -34,7 +34,7 @@ import qualified Crypto.Internal.ByteArray as B import Crypto.Number.Serialize (i2ospOf_, os2ip) import qualified Crypto.PubKey.Curve25519 as X25519-import qualified Crypto.PubKey.Ed448 as X448+import qualified Crypto.PubKey.Curve448 as X448 import Data.Function (on) import Data.ByteArray (convert)
Crypto/Error/Types.hs view
@@ -43,6 +43,12 @@ -- Message authentification error | CryptoError_MacKeyInvalid | CryptoError_AuthenticationTagSizeInvalid+ -- Prime generation error+ | CryptoError_PrimeSizeInvalid+ -- Parameter errors+ | CryptoError_SaltTooSmall+ | CryptoError_OutputLengthTooSmall+ | CryptoError_OutputLengthTooBig deriving (Show,Eq,Enum,Data,Typeable) instance E.Exception CryptoError
Crypto/Hash/Algorithms.hs view
@@ -11,10 +11,15 @@ module Crypto.Hash.Algorithms ( HashAlgorithm -- * hash algorithms+ , Blake2s_160(..) , Blake2s_224(..)- , Blake2sp_224(..) , Blake2s_256(..)+ , Blake2sp_224(..) , Blake2sp_256(..)+ , Blake2b_160(..)+ , Blake2b_224(..)+ , Blake2b_256(..)+ , Blake2b_384(..) , Blake2b_512(..) , Blake2bp_512(..) , MD2(..)@@ -37,6 +42,10 @@ , SHA3_256(..) , SHA3_384(..) , SHA3_512(..)+#if MIN_VERSION_base(4,7,0)+ , SHAKE128(..)+ , SHAKE256(..)+#endif , Skein256_224(..) , Skein256_256(..) , Skein512_224(..)@@ -67,3 +76,6 @@ import Crypto.Hash.Skein256 import Crypto.Hash.Skein512 import Crypto.Hash.Whirlpool+#if MIN_VERSION_base(4,7,0)+import Crypto.Hash.SHAKE+#endif
Crypto/Hash/Blake2b.hs view
@@ -9,18 +9,69 @@ -- Blake2b cryptographic hash. -- {-# LANGUAGE ForeignFunctionInterface #-}+{-# LANGUAGE DeriveDataTypeable #-} module Crypto.Hash.Blake2b- ( Blake2b_512 (..)+ ( Blake2b_160 (..), Blake2b_224 (..), Blake2b_256 (..), Blake2b_384 (..), Blake2b_512 (..) ) where import Crypto.Hash.Types import Foreign.Ptr (Ptr)+import Data.Data+import Data.Typeable import Data.Word (Word8, Word32) +-- | Blake2b (160 bits) cryptographic hash algorithm+data Blake2b_160 = Blake2b_160+ deriving (Show,Data,Typeable)++instance HashAlgorithm Blake2b_160 where+ hashBlockSize _ = 128+ hashDigestSize _ = 20+ hashInternalContextSize _ = 361+ hashInternalInit p = c_blake2b_init p 160+ hashInternalUpdate = c_blake2b_update+ hashInternalFinalize p = c_blake2b_finalize p 160++-- | Blake2b (224 bits) cryptographic hash algorithm+data Blake2b_224 = Blake2b_224+ deriving (Show,Data,Typeable)++instance HashAlgorithm Blake2b_224 where+ hashBlockSize _ = 128+ hashDigestSize _ = 28+ hashInternalContextSize _ = 361+ hashInternalInit p = c_blake2b_init p 224+ hashInternalUpdate = c_blake2b_update+ hashInternalFinalize p = c_blake2b_finalize p 224++-- | Blake2b (256 bits) cryptographic hash algorithm+data Blake2b_256 = Blake2b_256+ deriving (Show,Data,Typeable)++instance HashAlgorithm Blake2b_256 where+ hashBlockSize _ = 128+ hashDigestSize _ = 32+ hashInternalContextSize _ = 361+ hashInternalInit p = c_blake2b_init p 256+ hashInternalUpdate = c_blake2b_update+ hashInternalFinalize p = c_blake2b_finalize p 256++-- | Blake2b (384 bits) cryptographic hash algorithm+data Blake2b_384 = Blake2b_384+ deriving (Show,Data,Typeable)++instance HashAlgorithm Blake2b_384 where+ hashBlockSize _ = 128+ hashDigestSize _ = 48+ hashInternalContextSize _ = 361+ hashInternalInit p = c_blake2b_init p 384+ hashInternalUpdate = c_blake2b_update+ hashInternalFinalize p = c_blake2b_finalize p 384+ -- | Blake2b (512 bits) cryptographic hash algorithm data Blake2b_512 = Blake2b_512- deriving (Show)+ deriving (Show,Data,Typeable) instance HashAlgorithm Blake2b_512 where hashBlockSize _ = 128
Crypto/Hash/Blake2bp.hs view
@@ -9,18 +9,21 @@ -- Blake2bp cryptographic hash. -- {-# LANGUAGE ForeignFunctionInterface #-}+{-# LANGUAGE DeriveDataTypeable #-} module Crypto.Hash.Blake2bp ( Blake2bp_512 (..) ) where import Crypto.Hash.Types import Foreign.Ptr (Ptr)+import Data.Data+import Data.Typeable import Data.Word (Word8, Word32) -- | Blake2bp (512 bits) cryptographic hash algorithm data Blake2bp_512 = Blake2bp_512- deriving (Show)+ deriving (Show,Data,Typeable) instance HashAlgorithm Blake2bp_512 where hashBlockSize _ = 128
Crypto/Hash/Blake2s.hs view
@@ -9,18 +9,33 @@ -- Blake2s cryptographic hash. -- {-# LANGUAGE ForeignFunctionInterface #-}+{-# LANGUAGE DeriveDataTypeable #-} module Crypto.Hash.Blake2s- ( Blake2s_224 (..), Blake2s_256 (..)+ ( Blake2s_160 (..), Blake2s_224 (..), Blake2s_256 (..) ) where import Crypto.Hash.Types import Foreign.Ptr (Ptr)+import Data.Data+import Data.Typeable import Data.Word (Word8, Word32) +-- | Blake2s (160 bits) cryptographic hash algorithm+data Blake2s_160 = Blake2s_160+ deriving (Show,Data,Typeable)++instance HashAlgorithm Blake2s_160 where+ hashBlockSize _ = 64+ hashDigestSize _ = 20+ hashInternalContextSize _ = 185+ hashInternalInit p = c_blake2s_init p 160+ hashInternalUpdate = c_blake2s_update+ hashInternalFinalize p = c_blake2s_finalize p 160+ -- | Blake2s (224 bits) cryptographic hash algorithm data Blake2s_224 = Blake2s_224- deriving (Show)+ deriving (Show,Data,Typeable) instance HashAlgorithm Blake2s_224 where hashBlockSize _ = 64@@ -32,7 +47,7 @@ -- | Blake2s (256 bits) cryptographic hash algorithm data Blake2s_256 = Blake2s_256- deriving (Show)+ deriving (Show,Data,Typeable) instance HashAlgorithm Blake2s_256 where hashBlockSize _ = 64
Crypto/Hash/Blake2sp.hs view
@@ -9,18 +9,21 @@ -- Blake2sp cryptographic hash. -- {-# LANGUAGE ForeignFunctionInterface #-}+{-# LANGUAGE DeriveDataTypeable #-} module Crypto.Hash.Blake2sp ( Blake2sp_224 (..), Blake2sp_256 (..) ) where import Crypto.Hash.Types import Foreign.Ptr (Ptr)+import Data.Data+import Data.Typeable import Data.Word (Word8, Word32) -- | Blake2sp (224 bits) cryptographic hash algorithm data Blake2sp_224 = Blake2sp_224- deriving (Show)+ deriving (Show,Data,Typeable) instance HashAlgorithm Blake2sp_224 where hashBlockSize _ = 64@@ -32,7 +35,7 @@ -- | Blake2sp (256 bits) cryptographic hash algorithm data Blake2sp_256 = Blake2sp_256- deriving (Show)+ deriving (Show,Data,Typeable) instance HashAlgorithm Blake2sp_256 where hashBlockSize _ = 64
Crypto/Hash/Keccak.hs view
@@ -9,18 +9,21 @@ -- Keccak cryptographic hash. -- {-# LANGUAGE ForeignFunctionInterface #-}+{-# LANGUAGE DeriveDataTypeable #-} module Crypto.Hash.Keccak ( Keccak_224 (..), Keccak_256 (..), Keccak_384 (..), Keccak_512 (..) ) where import Crypto.Hash.Types import Foreign.Ptr (Ptr)+import Data.Data+import Data.Typeable import Data.Word (Word8, Word32) -- | Keccak (224 bits) cryptographic hash algorithm data Keccak_224 = Keccak_224- deriving (Show)+ deriving (Show,Data,Typeable) instance HashAlgorithm Keccak_224 where hashBlockSize _ = 144@@ -32,7 +35,7 @@ -- | Keccak (256 bits) cryptographic hash algorithm data Keccak_256 = Keccak_256- deriving (Show)+ deriving (Show,Data,Typeable) instance HashAlgorithm Keccak_256 where hashBlockSize _ = 136@@ -44,7 +47,7 @@ -- | Keccak (384 bits) cryptographic hash algorithm data Keccak_384 = Keccak_384- deriving (Show)+ deriving (Show,Data,Typeable) instance HashAlgorithm Keccak_384 where hashBlockSize _ = 104@@ -56,7 +59,7 @@ -- | Keccak (512 bits) cryptographic hash algorithm data Keccak_512 = Keccak_512- deriving (Show)+ deriving (Show,Data,Typeable) instance HashAlgorithm Keccak_512 where hashBlockSize _ = 72
Crypto/Hash/MD2.hs view
@@ -9,15 +9,18 @@ -- MD2 cryptographic hash. -- {-# LANGUAGE ForeignFunctionInterface #-}+{-# LANGUAGE DeriveDataTypeable #-} module Crypto.Hash.MD2 ( MD2 (..) ) where import Crypto.Hash.Types import Foreign.Ptr (Ptr)+import Data.Data+import Data.Typeable import Data.Word (Word8, Word32) -- | MD2 cryptographic hash algorithm data MD2 = MD2- deriving (Show)+ deriving (Show,Data,Typeable) instance HashAlgorithm MD2 where hashBlockSize _ = 16
Crypto/Hash/MD4.hs view
@@ -9,15 +9,18 @@ -- MD4 cryptographic hash. -- {-# LANGUAGE ForeignFunctionInterface #-}+{-# LANGUAGE DeriveDataTypeable #-} module Crypto.Hash.MD4 ( MD4 (..) ) where import Crypto.Hash.Types import Foreign.Ptr (Ptr)+import Data.Data+import Data.Typeable import Data.Word (Word8, Word32) -- | MD4 cryptographic hash algorithm data MD4 = MD4- deriving (Show)+ deriving (Show,Data,Typeable) instance HashAlgorithm MD4 where hashBlockSize _ = 64
Crypto/Hash/MD5.hs view
@@ -9,15 +9,18 @@ -- MD5 cryptographic hash. -- {-# LANGUAGE ForeignFunctionInterface #-}+{-# LANGUAGE DeriveDataTypeable #-} module Crypto.Hash.MD5 ( MD5 (..) ) where import Crypto.Hash.Types import Foreign.Ptr (Ptr)+import Data.Data+import Data.Typeable import Data.Word (Word8, Word32) -- | MD5 cryptographic hash algorithm data MD5 = MD5- deriving (Show)+ deriving (Show,Data,Typeable) instance HashAlgorithm MD5 where hashBlockSize _ = 64
Crypto/Hash/RIPEMD160.hs view
@@ -9,15 +9,18 @@ -- RIPEMD160 cryptographic hash. -- {-# LANGUAGE ForeignFunctionInterface #-}+{-# LANGUAGE DeriveDataTypeable #-} module Crypto.Hash.RIPEMD160 ( RIPEMD160 (..) ) where import Crypto.Hash.Types import Foreign.Ptr (Ptr)+import Data.Data+import Data.Typeable import Data.Word (Word8, Word32) -- | RIPEMD160 cryptographic hash algorithm data RIPEMD160 = RIPEMD160- deriving (Show)+ deriving (Show,Data,Typeable) instance HashAlgorithm RIPEMD160 where hashBlockSize _ = 64
Crypto/Hash/SHA1.hs view
@@ -9,15 +9,18 @@ -- SHA1 cryptographic hash. -- {-# LANGUAGE ForeignFunctionInterface #-}+{-# LANGUAGE DeriveDataTypeable #-} module Crypto.Hash.SHA1 ( SHA1 (..) ) where import Crypto.Hash.Types import Foreign.Ptr (Ptr)+import Data.Data+import Data.Typeable import Data.Word (Word8, Word32) -- | SHA1 cryptographic hash algorithm data SHA1 = SHA1- deriving (Show)+ deriving (Show,Data,Typeable) instance HashAlgorithm SHA1 where hashBlockSize _ = 64
Crypto/Hash/SHA224.hs view
@@ -9,15 +9,18 @@ -- SHA224 cryptographic hash. -- {-# LANGUAGE ForeignFunctionInterface #-}+{-# LANGUAGE DeriveDataTypeable #-} module Crypto.Hash.SHA224 ( SHA224 (..) ) where import Crypto.Hash.Types import Foreign.Ptr (Ptr)+import Data.Data+import Data.Typeable import Data.Word (Word8, Word32) -- | SHA224 cryptographic hash algorithm data SHA224 = SHA224- deriving (Show)+ deriving (Show,Data,Typeable) instance HashAlgorithm SHA224 where hashBlockSize _ = 64
Crypto/Hash/SHA256.hs view
@@ -9,15 +9,18 @@ -- SHA256 cryptographic hash. -- {-# LANGUAGE ForeignFunctionInterface #-}+{-# LANGUAGE DeriveDataTypeable #-} module Crypto.Hash.SHA256 ( SHA256 (..) ) where import Crypto.Hash.Types import Foreign.Ptr (Ptr)+import Data.Data+import Data.Typeable import Data.Word (Word8, Word32) -- | SHA256 cryptographic hash algorithm data SHA256 = SHA256- deriving (Show)+ deriving (Show,Data,Typeable) instance HashAlgorithm SHA256 where hashBlockSize _ = 64
Crypto/Hash/SHA3.hs view
@@ -9,18 +9,20 @@ -- SHA3 cryptographic hash. -- {-# LANGUAGE ForeignFunctionInterface #-}+{-# LANGUAGE DeriveDataTypeable #-} module Crypto.Hash.SHA3 ( SHA3_224 (..), SHA3_256 (..), SHA3_384 (..), SHA3_512 (..) ) where import Crypto.Hash.Types import Foreign.Ptr (Ptr)+import Data.Data+import Data.Typeable import Data.Word (Word8, Word32) - -- | SHA3 (224 bits) cryptographic hash algorithm data SHA3_224 = SHA3_224- deriving (Show)+ deriving (Show,Data,Typeable) instance HashAlgorithm SHA3_224 where hashBlockSize _ = 144@@ -32,7 +34,7 @@ -- | SHA3 (256 bits) cryptographic hash algorithm data SHA3_256 = SHA3_256- deriving (Show)+ deriving (Show,Data,Typeable) instance HashAlgorithm SHA3_256 where hashBlockSize _ = 136@@ -44,7 +46,7 @@ -- | SHA3 (384 bits) cryptographic hash algorithm data SHA3_384 = SHA3_384- deriving (Show)+ deriving (Show,Data,Typeable) instance HashAlgorithm SHA3_384 where hashBlockSize _ = 104@@ -56,7 +58,7 @@ -- | SHA3 (512 bits) cryptographic hash algorithm data SHA3_512 = SHA3_512- deriving (Show)+ deriving (Show,Data,Typeable) instance HashAlgorithm SHA3_512 where hashBlockSize _ = 72@@ -65,7 +67,6 @@ hashInternalInit p = c_sha3_init p 512 hashInternalUpdate = c_sha3_update hashInternalFinalize p = c_sha3_finalize p 512- foreign import ccall unsafe "cryptonite_sha3_init" c_sha3_init :: Ptr (Context a) -> Word32 -> IO ()
Crypto/Hash/SHA384.hs view
@@ -9,15 +9,18 @@ -- SHA384 cryptographic hash. -- {-# LANGUAGE ForeignFunctionInterface #-}+{-# LANGUAGE DeriveDataTypeable #-} module Crypto.Hash.SHA384 ( SHA384 (..) ) where import Crypto.Hash.Types import Foreign.Ptr (Ptr)+import Data.Data+import Data.Typeable import Data.Word (Word8, Word32) -- | SHA384 cryptographic hash algorithm data SHA384 = SHA384- deriving (Show)+ deriving (Show,Data,Typeable) instance HashAlgorithm SHA384 where hashBlockSize _ = 128
Crypto/Hash/SHA512.hs view
@@ -9,15 +9,18 @@ -- SHA512 cryptographic hash. -- {-# LANGUAGE ForeignFunctionInterface #-}+{-# LANGUAGE DeriveDataTypeable #-} module Crypto.Hash.SHA512 ( SHA512 (..) ) where import Crypto.Hash.Types import Foreign.Ptr (Ptr)+import Data.Data+import Data.Typeable import Data.Word (Word8, Word32) -- | SHA512 cryptographic hash algorithm data SHA512 = SHA512- deriving (Show)+ deriving (Show,Data,Typeable) instance HashAlgorithm SHA512 where hashBlockSize _ = 128
Crypto/Hash/SHA512t.hs view
@@ -9,18 +9,21 @@ -- SHA512t cryptographic hash. -- {-# LANGUAGE ForeignFunctionInterface #-}+{-# LANGUAGE DeriveDataTypeable #-} module Crypto.Hash.SHA512t ( SHA512t_224 (..), SHA512t_256 (..) ) where import Crypto.Hash.Types import Foreign.Ptr (Ptr)+import Data.Data+import Data.Typeable import Data.Word (Word8, Word32) -- | SHA512t (224 bits) cryptographic hash algorithm data SHA512t_224 = SHA512t_224- deriving (Show)+ deriving (Show,Data,Typeable) instance HashAlgorithm SHA512t_224 where hashBlockSize _ = 128@@ -32,7 +35,7 @@ -- | SHA512t (256 bits) cryptographic hash algorithm data SHA512t_256 = SHA512t_256- deriving (Show)+ deriving (Show,Data,Typeable) instance HashAlgorithm SHA512t_256 where hashBlockSize _ = 128
+ Crypto/Hash/SHAKE.hs view
@@ -0,0 +1,91 @@+-- |+-- Module : Crypto.Hash.SHAKE+-- License : BSD-style+-- Maintainer : Vincent Hanquez <vincent@snarc.org>+-- Stability : experimental+-- Portability : unknown+--+-- module containing the binding functions to work with the+-- SHA3 extendable output functions (SHAKE).+--+{-# LANGUAGE ForeignFunctionInterface #-}+{-# LANGUAGE DeriveDataTypeable #-}+{-# LANGUAGE KindSignatures #-}+{-# LANGUAGE DataKinds #-}+{-# LANGUAGE ConstraintKinds #-}+{-# LANGUAGE ScopedTypeVariables #-}+{-# LANGUAGE TypeOperators #-}+{-# LANGUAGE TypeFamilies #-}+{-# LANGUAGE UndecidableInstances #-}+module Crypto.Hash.SHAKE+ ( SHAKE128 (..), SHAKE256 (..)+ ) where++import Crypto.Hash.Types+import Foreign.Ptr (Ptr)+import Data.Typeable+import Data.Word (Word8, Word32)++import Data.Proxy (Proxy(..))+import GHC.TypeLits (Nat, KnownNat, natVal)+import Crypto.Internal.Nat++-- | SHAKE128 (128 bits) extendable output function. Supports an arbitrary+-- digest size (multiple of 8 bits), to be specified as a type parameter+-- of kind 'Nat'.+--+-- Note: outputs from @'SHAKE128' n@ and @'SHAKE128' m@ for the same input are+-- correlated (one being a prefix of the other). Results are unrelated to+-- 'SHAKE256' results.+data SHAKE128 (bitlen :: Nat) = SHAKE128+ deriving (Show, Typeable)++instance (IsDivisibleBy8 bitLen, KnownNat bitLen) => HashAlgorithm (SHAKE128 bitLen) where+ hashBlockSize _ = 168+ hashDigestSize _ = byteLen (Proxy :: Proxy bitLen)+ hashInternalContextSize _ = 376+ hashInternalInit p = c_sha3_init p 128+ hashInternalUpdate = c_sha3_update+ hashInternalFinalize = shakeFinalizeOutput (Proxy :: Proxy bitLen)++-- | SHAKE256 (256 bits) extendable output function. Supports an arbitrary+-- digest size (multiple of 8 bits), to be specified as a type parameter+-- of kind 'Nat'.+--+-- Note: outputs from @'SHAKE256' n@ and @'SHAKE256' m@ for the same input are+-- correlated (one being a prefix of the other). Results are unrelated to+-- 'SHAKE128' results.+data SHAKE256 (bitlen :: Nat) = SHAKE256+ deriving (Show, Typeable)++instance (IsDivisibleBy8 bitLen, KnownNat bitLen) => HashAlgorithm (SHAKE256 bitLen) where+ hashBlockSize _ = 136+ hashDigestSize _ = byteLen (Proxy :: Proxy bitLen)+ hashInternalContextSize _ = 344+ hashInternalInit p = c_sha3_init p 256+ hashInternalUpdate = c_sha3_update+ hashInternalFinalize = shakeFinalizeOutput (Proxy :: Proxy bitLen)++shakeFinalizeOutput :: (IsDivisibleBy8 bitLen, KnownNat bitLen)+ => proxy bitLen+ -> Ptr (Context a)+ -> Ptr (Digest a)+ -> IO ()+shakeFinalizeOutput d ctx dig = do+ c_sha3_finalize_shake ctx+ c_sha3_output ctx dig (fromInteger (natVal d `div` 8))++byteLen :: (KnownNat bitlen, IsDivisibleBy8 bitlen, Num a) => proxy bitlen -> a+byteLen d = fromInteger (natVal d `div` 8)++foreign import ccall unsafe "cryptonite_sha3_init"+ c_sha3_init :: Ptr (Context a) -> Word32 -> IO ()++foreign import ccall "cryptonite_sha3_update"+ c_sha3_update :: Ptr (Context a) -> Ptr Word8 -> Word32 -> IO ()++foreign import ccall unsafe "cryptonite_sha3_finalize_shake"+ c_sha3_finalize_shake :: Ptr (Context a) -> IO ()++foreign import ccall unsafe "cryptonite_sha3_output"+ c_sha3_output :: Ptr (Context a) -> Ptr (Digest a) -> Word32 -> IO ()
Crypto/Hash/Skein256.hs view
@@ -9,18 +9,21 @@ -- Skein256 cryptographic hash. -- {-# LANGUAGE ForeignFunctionInterface #-}+{-# LANGUAGE DeriveDataTypeable #-} module Crypto.Hash.Skein256 ( Skein256_224 (..), Skein256_256 (..) ) where import Crypto.Hash.Types import Foreign.Ptr (Ptr)+import Data.Data+import Data.Typeable import Data.Word (Word8, Word32) -- | Skein256 (224 bits) cryptographic hash algorithm data Skein256_224 = Skein256_224- deriving (Show)+ deriving (Show,Data,Typeable) instance HashAlgorithm Skein256_224 where hashBlockSize _ = 32@@ -32,7 +35,7 @@ -- | Skein256 (256 bits) cryptographic hash algorithm data Skein256_256 = Skein256_256- deriving (Show)+ deriving (Show,Data,Typeable) instance HashAlgorithm Skein256_256 where hashBlockSize _ = 32
Crypto/Hash/Skein512.hs view
@@ -9,18 +9,21 @@ -- Skein512 cryptographic hash. -- {-# LANGUAGE ForeignFunctionInterface #-}+{-# LANGUAGE DeriveDataTypeable #-} module Crypto.Hash.Skein512 ( Skein512_224 (..), Skein512_256 (..), Skein512_384 (..), Skein512_512 (..) ) where import Crypto.Hash.Types import Foreign.Ptr (Ptr)+import Data.Data+import Data.Typeable import Data.Word (Word8, Word32) -- | Skein512 (224 bits) cryptographic hash algorithm data Skein512_224 = Skein512_224- deriving (Show)+ deriving (Show,Data,Typeable) instance HashAlgorithm Skein512_224 where hashBlockSize _ = 64@@ -32,7 +35,7 @@ -- | Skein512 (256 bits) cryptographic hash algorithm data Skein512_256 = Skein512_256- deriving (Show)+ deriving (Show,Data,Typeable) instance HashAlgorithm Skein512_256 where hashBlockSize _ = 64@@ -44,7 +47,7 @@ -- | Skein512 (384 bits) cryptographic hash algorithm data Skein512_384 = Skein512_384- deriving (Show)+ deriving (Show,Data,Typeable) instance HashAlgorithm Skein512_384 where hashBlockSize _ = 64@@ -56,7 +59,7 @@ -- | Skein512 (512 bits) cryptographic hash algorithm data Skein512_512 = Skein512_512- deriving (Show)+ deriving (Show,Data,Typeable) instance HashAlgorithm Skein512_512 where hashBlockSize _ = 64
Crypto/Hash/Tiger.hs view
@@ -9,15 +9,18 @@ -- Tiger cryptographic hash. -- {-# LANGUAGE ForeignFunctionInterface #-}+{-# LANGUAGE DeriveDataTypeable #-} module Crypto.Hash.Tiger ( Tiger (..) ) where import Crypto.Hash.Types import Foreign.Ptr (Ptr)+import Data.Data+import Data.Typeable import Data.Word (Word8, Word32) -- | Tiger cryptographic hash algorithm data Tiger = Tiger- deriving (Show)+ deriving (Show,Data,Typeable) instance HashAlgorithm Tiger where hashBlockSize _ = 64
Crypto/Hash/Whirlpool.hs view
@@ -9,15 +9,18 @@ -- Whirlpool cryptographic hash. -- {-# LANGUAGE ForeignFunctionInterface #-}+{-# LANGUAGE DeriveDataTypeable #-} module Crypto.Hash.Whirlpool ( Whirlpool (..) ) where import Crypto.Hash.Types import Foreign.Ptr (Ptr)+import Data.Data+import Data.Typeable import Data.Word (Word8, Word32) -- | Whirlpool cryptographic hash algorithm data Whirlpool = Whirlpool- deriving (Show)+ deriving (Show,Data,Typeable) instance HashAlgorithm Whirlpool where hashBlockSize _ = 64
+ Crypto/Internal/Nat.hs view
@@ -0,0 +1,101 @@+{-# LANGUAGE CPP #-}+{-# LANGUAGE DataKinds #-}+{-# LANGUAGE ConstraintKinds #-}+{-# LANGUAGE TypeOperators #-}+{-# LANGUAGE TypeFamilies #-}+{-# LANGUAGE UndecidableInstances #-}+module Crypto.Internal.Nat+ ( type IsDivisibleBy8+ ) where++import GHC.TypeLits++type family IsDiv8 (bitLen :: Nat) (n :: Nat) where+ IsDiv8 bitLen 0 = 'True+#if MIN_VERSION_base(4,9,0)+ IsDiv8 bitLen 1 = TypeError ('Text "bitLen " ':<>: 'ShowType bitLen ':<>: 'Text " is not divisible by 8")+ IsDiv8 bitLen 2 = TypeError ('Text "bitLen " ':<>: 'ShowType bitLen ':<>: 'Text " is not divisible by 8")+ IsDiv8 bitLen 3 = TypeError ('Text "bitLen " ':<>: 'ShowType bitLen ':<>: 'Text " is not divisible by 8")+ IsDiv8 bitLen 4 = TypeError ('Text "bitLen " ':<>: 'ShowType bitLen ':<>: 'Text " is not divisible by 8")+ IsDiv8 bitLen 5 = TypeError ('Text "bitLen " ':<>: 'ShowType bitLen ':<>: 'Text " is not divisible by 8")+ IsDiv8 bitLen 6 = TypeError ('Text "bitLen " ':<>: 'ShowType bitLen ':<>: 'Text " is not divisible by 8")+ IsDiv8 bitLen 7 = TypeError ('Text "bitLen " ':<>: 'ShowType bitLen ':<>: 'Text " is not divisible by 8")+#else+ IsDiv8 bitLen 1 = 'False+ IsDiv8 bitLen 2 = 'False+ IsDiv8 bitLen 3 = 'False+ IsDiv8 bitLen 4 = 'False+ IsDiv8 bitLen 5 = 'False+ IsDiv8 bitLen 6 = 'False+ IsDiv8 bitLen 7 = 'False+#endif+ IsDiv8 bitLen n = IsDiv8 n (Mod8 n)++type family Mod8 (n :: Nat) where+ Mod8 0 = 0+ Mod8 1 = 1+ Mod8 2 = 2+ Mod8 3 = 3+ Mod8 4 = 4+ Mod8 5 = 5+ Mod8 6 = 6+ Mod8 7 = 7+ Mod8 8 = 0+ Mod8 9 = 1+ Mod8 10 = 2+ Mod8 11 = 3+ Mod8 12 = 4+ Mod8 13 = 5+ Mod8 14 = 6+ Mod8 15 = 7+ Mod8 16 = 0+ Mod8 17 = 1+ Mod8 18 = 2+ Mod8 19 = 3+ Mod8 20 = 4+ Mod8 21 = 5+ Mod8 22 = 6+ Mod8 23 = 7+ Mod8 24 = 0+ Mod8 25 = 1+ Mod8 26 = 2+ Mod8 27 = 3+ Mod8 28 = 4+ Mod8 29 = 5+ Mod8 30 = 6+ Mod8 31 = 7+ Mod8 32 = 0+ Mod8 33 = 1+ Mod8 34 = 2+ Mod8 35 = 3+ Mod8 36 = 4+ Mod8 37 = 5+ Mod8 38 = 6+ Mod8 39 = 7+ Mod8 40 = 0+ Mod8 41 = 1+ Mod8 42 = 2+ Mod8 43 = 3+ Mod8 44 = 4+ Mod8 45 = 5+ Mod8 46 = 6+ Mod8 47 = 7+ Mod8 48 = 0+ Mod8 49 = 1+ Mod8 50 = 2+ Mod8 51 = 3+ Mod8 52 = 4+ Mod8 53 = 5+ Mod8 54 = 6+ Mod8 55 = 7+ Mod8 56 = 0+ Mod8 57 = 1+ Mod8 58 = 2+ Mod8 59 = 3+ Mod8 60 = 4+ Mod8 61 = 5+ Mod8 62 = 6+ Mod8 63 = 7+ Mod8 n = Mod8 (n - 64)++type IsDivisibleBy8 bitLen = IsDiv8 bitLen bitLen ~ 'True
+ Crypto/KDF/Argon2.hs view
@@ -0,0 +1,155 @@+-- |+-- Module : Crypto.KDF.Argon2+-- License : BSD-style+-- Maintainer : Vincent Hanquez <vincent@snarc.org>+-- Stability : experimental+-- Portability : unknown+--+-- Argon2 hashing function (P-H-C winner)+--+-- Recommended to use this module qualified+--+-- File started from Argon2.hs, from Oliver Charles+-- at https://github.com/ocharles/argon2+--+module Crypto.KDF.Argon2+ (+ Options(..)+ , TimeCost+ , MemoryCost+ , Parallelism+ , Variant(..)+ , Version(..)+ , defaultOptions+ -- * Hashing function+ , hash+ ) where++import Crypto.Internal.ByteArray (ScrubbedBytes, ByteArray, ByteArrayAccess)+import qualified Crypto.Internal.ByteArray as B+import Crypto.Error+import Control.Monad (when)+import Data.Word+import Foreign.C+import Foreign.Ptr++-- | Which variant of Argon2 to use. You should choose the variant that is most+-- applicable to your intention to hash inputs.+data Variant =+ Argon2d -- ^ Argon2i uses data-independent memory access, which is preferred+ -- for password hashing and password-based key derivation. Argon2i+ -- is slower as it makes more passes over the memory to protect from+ -- tradeoff attacks.+ | Argon2i -- ^ Argon2d is faster and uses data-depending memory access, which+ -- makes it suitable for cryptocurrencies and applications with no+ -- threats from side-channel timing attacks.+ | Argon2id -- ^ Argon2id is a hybrid of Argon2i and Argon2d, using a combination+ -- of data-depending and data-independent memory accesses, which gives+ -- some of Argon2i's resistance to side-channel cache timing attacks+ -- and much of Argon2d's resistance to GPU cracking attacks+ deriving (Eq,Ord,Read,Show,Enum,Bounded)++-- | Which version of Argon2 to use+data Version = Version10 | Version13+ deriving (Eq,Ord,Read,Show,Enum,Bounded)++-- | The time cost, which defines the amount of computation realized and therefore the execution time, given in number of iterations.+--+-- 'FFI.ARGON2_MIN_TIME' <= 'hashIterations' <= 'FFI.ARGON2_MAX_TIME'+type TimeCost = Word32++-- | The memory cost, which defines the memory usage, given in kibibytes.+--+-- max 'FFI.ARGON2_MIN_MEMORY' (8 * 'hashParallelism') <= 'hashMemory' <= 'FFI.ARGON2_MAX_MEMORY'+type MemoryCost = Word32++-- \ A parallelism degree, which defines the number of parallel threads.+--+-- 'FFI.ARGON2_MIN_LANES' <= 'hashParallelism' <= 'FFI.ARGON2_MAX_LANES' && 'FFI.ARGON_MIN_THREADS' <= 'hashParallelism' <= 'FFI.ARGON2_MAX_THREADS'+type Parallelism = Word32++-- | Parameters that can be adjusted to change the runtime performance of the+-- hashing.+data Options = Options+ { iterations :: !TimeCost+ , memory :: !MemoryCost+ , parallelism :: !Parallelism+ , variant :: !Variant -- ^ Which variant of Argon2 to use.+ , version :: !Version -- ^ Which version of Argon2 to use.+ }+ deriving (Eq,Ord,Read,Show)++saltMinLength :: Int+saltMinLength = 8++outputMinLength :: Int+outputMinLength = 4++outputMaxLength :: Int+outputMaxLength = 0xffffffff++defaultOptions :: Options+defaultOptions =+ Options { iterations = 1+ , memory = 2 ^ (17 :: Int)+ , parallelism = 4+ , variant = Argon2i+ , version = Version13+ }++hash :: (ByteArrayAccess password, ByteArrayAccess salt, ByteArray out)+ => Options+ -> password+ -> salt+ -> Int+ -> CryptoFailable out+hash options password salt outLen+ | saltLen < saltMinLength = CryptoFailed CryptoError_SaltTooSmall+ | outLen < outputMinLength = CryptoFailed CryptoError_OutputLengthTooSmall+ | outLen > outputMaxLength = CryptoFailed CryptoError_OutputLengthTooBig+ | otherwise = CryptoPassed $ B.allocAndFreeze outLen $ \out -> do+ res <- B.withByteArray password $ \pPass ->+ B.withByteArray salt $ \pSalt ->+ argon2_hash (iterations options)+ (memory options)+ (parallelism options)+ pPass+ (csizeOfInt passwordLen)+ pSalt+ (csizeOfInt saltLen)+ out+ (csizeOfInt outLen)+ (cOfVariant $ variant options)+ (cOfVersion $ version options)+ when (res /= 0) $ error "argon2: hash: internal error"+ where+ saltLen = B.length salt+ passwordLen = B.length password++data Pass+data Salt+data HashOut++type CVariant = CInt -- valid value is 0 (Argon2d), 1 (Argon2i) and 2 (Argon2id)+type CVersion = CInt -- valid value is 0x10, 0x13++cOfVersion :: Version -> CVersion+cOfVersion Version10 = 0x10+cOfVersion Version13 = 0x13++cOfVariant :: Variant -> CVariant+cOfVariant Argon2d = 0+cOfVariant Argon2i = 1+cOfVariant Argon2id = 2++csizeOfInt :: Int -> CSize+csizeOfInt = fromIntegral++foreign import ccall unsafe "cryptonite_argon2_hash"+ argon2_hash :: Word32 -> Word32 -> Word32+ -> Ptr Pass -> CSize+ -> Ptr Salt -> CSize+ -> Ptr HashOut -> CSize+ -> CVariant+ -> CVersion+ -> IO CInt
Crypto/KDF/PBKDF2.hs view
@@ -8,17 +8,23 @@ -- Password Based Key Derivation Function 2 -- {-# LANGUAGE BangPatterns #-}+{-# LANGUAGE ForeignFunctionInterface #-}+ module Crypto.KDF.PBKDF2 ( PRF , prfHMAC , Parameters(..) , generate+ , fastPBKDF2_SHA1+ , fastPBKDF2_SHA256+ , fastPBKDF2_SHA512 ) where import Data.Word import Data.Bits import Foreign.Marshal.Alloc-import Foreign.Ptr (plusPtr)+import Foreign.Ptr (plusPtr, Ptr)+import Foreign.C.Types (CUInt(..), CInt(..), CSize(..)) import Crypto.Hash (HashAlgorithm) import qualified Crypto.MAC.HMAC as HMAC@@ -100,3 +106,70 @@ c = fromIntegral ((w `shiftR` 8) .&. 0xff) d = fromIntegral (w .&. 0xff) {-# NOINLINE generate #-}++fastPBKDF2_SHA1 :: (ByteArrayAccess password, ByteArrayAccess salt, ByteArray out)+ => Parameters+ -> password+ -> salt+ -> out+fastPBKDF2_SHA1 params password salt =+ B.allocAndFreeze (outputLength params) $ \outPtr ->+ B.withByteArray password $ \passPtr ->+ B.withByteArray salt $ \saltPtr ->+ c_cryptonite_fastpbkdf2_hmac_sha1+ passPtr (fromIntegral $ B.length password)+ saltPtr (fromIntegral $ B.length salt)+ (fromIntegral $ iterCounts params)+ outPtr (fromIntegral $ outputLength params)++fastPBKDF2_SHA256 :: (ByteArrayAccess password, ByteArrayAccess salt, ByteArray out)+ => Parameters+ -> password+ -> salt+ -> out+fastPBKDF2_SHA256 params password salt =+ B.allocAndFreeze (outputLength params) $ \outPtr ->+ B.withByteArray password $ \passPtr ->+ B.withByteArray salt $ \saltPtr ->+ c_cryptonite_fastpbkdf2_hmac_sha256+ passPtr (fromIntegral $ B.length password)+ saltPtr (fromIntegral $ B.length salt)+ (fromIntegral $ iterCounts params)+ outPtr (fromIntegral $ outputLength params)++fastPBKDF2_SHA512 :: (ByteArrayAccess password, ByteArrayAccess salt, ByteArray out)+ => Parameters+ -> password+ -> salt+ -> out+fastPBKDF2_SHA512 params password salt =+ B.allocAndFreeze (outputLength params) $ \outPtr ->+ B.withByteArray password $ \passPtr ->+ B.withByteArray salt $ \saltPtr ->+ c_cryptonite_fastpbkdf2_hmac_sha512+ passPtr (fromIntegral $ B.length password)+ saltPtr (fromIntegral $ B.length salt)+ (fromIntegral $ iterCounts params)+ outPtr (fromIntegral $ outputLength params)+++foreign import ccall unsafe "cryptonite_pbkdf2.h cryptonite_fastpbkdf2_hmac_sha1"+ c_cryptonite_fastpbkdf2_hmac_sha1 :: Ptr Word8 -> CSize+ -> Ptr Word8 -> CSize+ -> CUInt+ -> Ptr Word8 -> CSize+ -> IO ()++foreign import ccall unsafe "cryptonite_pbkdf2.h cryptonite_fastpbkdf2_hmac_sha256"+ c_cryptonite_fastpbkdf2_hmac_sha256 :: Ptr Word8 -> CSize+ -> Ptr Word8 -> CSize+ -> CUInt+ -> Ptr Word8 -> CSize+ -> IO ()++foreign import ccall unsafe "cryptonite_pbkdf2.h cryptonite_fastpbkdf2_hmac_sha512"+ c_cryptonite_fastpbkdf2_hmac_sha512 :: Ptr Word8 -> CSize+ -> Ptr Word8 -> CSize+ -> CUInt+ -> Ptr Word8 -> CSize+ -> IO ()
Crypto/Number/Prime.hs view
@@ -27,6 +27,7 @@ import Crypto.Number.ModArithmetic (expSafe) import Crypto.Random.Types import Crypto.Random.Probabilistic+import Crypto.Error import Data.Bits @@ -37,25 +38,48 @@ isProbablyPrime :: Integer -> Bool isProbablyPrime !n | any (\p -> p `divides` n) (filter (< n) firstPrimes) = False- | primalityTestFermat 50 (n`div`2) n = primalityTestMillerRabin 30 n+ | n >= 2 && n <= 2903 = True+ | primalityTestFermat 50 (n `div` 2) n = primalityTestMillerRabin 30 n | otherwise = False --- | generate a prime number of the required bitsize+-- | generate a prime number of the required bitsize (i.e. in the range+-- [2^(b-1)+2^(b-2), 2^b)).+--+-- May throw a CryptoError_PrimeSizeInvalid if the requested size is less+-- than 5 bits, as the smallest prime meeting these conditions is 29.+-- This function requires that the two highest bits are set, so that when+-- multiplied with another prime to create a key, it is guaranteed to be of+-- the proper size. generatePrime :: MonadRandom m => Int -> m Integer generatePrime bits = do- sp <- generateParams bits (Just SetTwoHighest) True- return $ findPrimeFrom sp+ if bits < 5 then+ throwCryptoError $ CryptoFailed $ CryptoError_PrimeSizeInvalid+ else do+ sp <- generateParams bits (Just SetTwoHighest) True+ let prime = findPrimeFrom sp+ if prime < 1 `shiftL` bits then+ return $ prime+ else generatePrime bits -- | generate a prime number of the form 2p+1 where p is also prime. -- it is also knowed as a Sophie Germaine prime or safe prime. -- -- The number of safe prime is significantly smaller to the number of prime, -- as such it shouldn't be used if this number is supposed to be kept safe.+--+-- May throw a CryptoError_PrimeSizeInvalid if the requested size is less than+-- 6 bits, as the smallest safe prime with the two highest bits set is 59. generateSafePrime :: MonadRandom m => Int -> m Integer generateSafePrime bits = do- sp <- generateParams bits (Just SetTwoHighest) True- let p = findPrimeFromWith (\i -> isProbablyPrime (2*i+1)) (sp `div` 2)- return (2*p+1)+ if bits < 6 then+ throwCryptoError $ CryptoFailed $ CryptoError_PrimeSizeInvalid+ else do+ sp <- generateParams bits (Just SetTwoHighest) True+ let p = findPrimeFromWith (\i -> isProbablyPrime (2*i+1)) (sp `div` 2)+ let val = 2 * p + 1+ if val < 1 `shiftL` bits then+ return $ val+ else generateSafePrime bits -- | find a prime from a starting point where the property hold. findPrimeFromWith :: (Integer -> Bool) -> Integer -> Integer
+ Crypto/OTP.hs view
@@ -0,0 +1,179 @@+{-# LANGUAGE ScopedTypeVariables #-}++-- | One-time password implementation as defined by the+-- <http://tools.ietf.org/html/rfc4226 HOTP> and <http://tools.ietf.org/html/rfc6238 TOTP>+-- specifications.+--+-- Both implementations use a shared key between the client and the server. HOTP passwords+-- are based on a synchronized counter. TOTP passwords use the same approach but calculate+-- the counter as a number of time steps from the Unix epoch to the current time, thus+-- requiring that both client and server have synchronized clocks.+--+-- Probably the best-known use of TOTP is in Google's 2-factor authentication.+--+-- The TOTP API doesn't depend on any particular time package, so the user needs to supply+-- the current @OTPTime@ value, based on the system time. For example, using the @hourglass@+-- package, you could create a @getOTPTime@ function:+--+-- >>> import Time.System+-- >>> import Time.Types+-- >>>+-- >>> let getOTPTime = timeCurrent >>= \(Elapsed t) -> return (fromIntegral t :: OTPTime)+--+-- Or if you prefer, the @time@ package could be used:+--+-- >>> import Data.Time.Clock.POSIX+-- >>>+-- >>> let getOTPTime = getPOSIXTime >>= \t -> return (floor t :: OTPTime)+--++module Crypto.OTP+ ( OTP+ , OTPDigits (..)+ , OTPTime+ , hotp+ , resynchronize+ , totp+ , totpVerify+ , TOTPParams+ , ClockSkew (..)+ , defaultTOTPParams+ , mkTOTPParams+ )+where++import Data.Bits (shiftL, shiftR, (.&.), (.|.))+import Data.ByteArray.Mapping (fromW64BE)+import Data.List (elemIndex)+import Data.Word+import Foreign.Storable (poke)+import Control.Monad (unless)+import Crypto.Hash (HashAlgorithm, SHA1(..))+import Crypto.MAC.HMAC+import Crypto.Internal.ByteArray (ByteArrayAccess, ByteArray, Bytes)+import qualified Crypto.Internal.ByteArray as B+++-- | A one-time password which is a sequence of 4 to 9 digits.+type OTP = Word32++-- | The strength of the calculated HOTP value, namely+-- the number of digits (between 4 and 9) in the extracted value.+data OTPDigits = OTP4 | OTP5 | OTP6 | OTP7 | OTP8 | OTP9 deriving (Show)++-- | An integral time value in seconds.+type OTPTime = Word64++hotp :: forall hash key. (HashAlgorithm hash, ByteArrayAccess key)+ => hash+ -> OTPDigits+ -- ^ Number of digits in the HOTP value extracted from the calculated HMAC+ -> key+ -- ^ Shared secret between the client and server+ -> Word64+ -- ^ Counter value synchronized between the client and server+ -> OTP+ -- ^ The HOTP value+hotp _ d k c = dt `mod` digitsPower d+ where+ mac = hmac k (fromW64BE c :: Bytes) :: HMAC hash+ offset = fromIntegral (B.index mac (B.length mac - 1) .&. 0xf)+ dt = (fromIntegral (B.index mac offset .&. 0x7f) `shiftL` 24) .|.+ (fromIntegral (B.index mac (offset + 1) .&. 0xff) `shiftL` 16) .|.+ (fromIntegral (B.index mac (offset + 2) .&. 0xff) `shiftL` 8) .|.+ fromIntegral (B.index mac (offset + 3) .&. 0xff)++-- | Attempt to resynchronize the server's counter value+-- with the client, given a sequence of HOTP values.+resynchronize :: (HashAlgorithm hash, ByteArrayAccess key)+ => hash+ -> OTPDigits+ -> Word16+ -- ^ The look-ahead window parameter. Up to this many values will+ -- be calculated and checked against the value(s) submitted by the client+ -> key+ -- ^ The shared secret+ -> Word64+ -- ^ The current server counter value+ -> (OTP, [OTP])+ -- ^ The first OTP submitted by the client and a list of additional+ -- sequential OTPs (which may be empty)+ -> Maybe Word64+ -- ^ The new counter value, synchronized with the client's current counter+ -- or Nothing if the submitted OTP values didn't match anywhere within the window+resynchronize h d s k c (p1, extras) = do+ offBy <- fmap fromIntegral (elemIndex p1 range)+ checkExtraOtps (c + offBy + 1) extras+ where+ checkExtraOtps ctr [] = Just ctr+ checkExtraOtps ctr (p:ps)+ | hotp h d k ctr /= p = Nothing+ | otherwise = checkExtraOtps (ctr + 1) ps++ range = map (hotp h d k)[c..c + fromIntegral s]++digitsPower :: OTPDigits -> Word32+digitsPower OTP4 = 10000+digitsPower OTP5 = 100000+digitsPower OTP6 = 1000000+digitsPower OTP7 = 10000000+digitsPower OTP8 = 100000000+digitsPower OTP9 = 1000000000+++data TOTPParams h = TP !h !OTPTime !Word16 !OTPDigits !ClockSkew deriving (Show)++data ClockSkew = NoSkew | OneStep | TwoSteps | ThreeSteps | FourSteps deriving (Enum, Show)++-- | The default TOTP configuration.+defaultTOTPParams :: TOTPParams SHA1+defaultTOTPParams = TP SHA1 0 30 OTP6 TwoSteps++-- | Create a TOTP configuration with customized parameters.+mkTOTPParams :: (HashAlgorithm hash)+ => hash+ -> OTPTime+ -- ^ The T0 parameter in seconds. This is the Unix time from which to start+ -- counting steps (default 0). Must be before the current time.+ -> Word16+ -- ^ The time step parameter X in seconds (default 30, maximum allowed 300)+ -> OTPDigits+ -- ^ Number of required digits in the OTP (default 6)+ -> ClockSkew+ -- ^ The number of time steps to check either side of the current value+ -- to allow for clock skew between client and server and or delay in+ -- submitting the value. The default is two time steps.+ -> Either String (TOTPParams hash)+mkTOTPParams h t0 x d skew = do+ unless (x > 0) (Left "Time step must be greater than zero")+ unless (x <= 300) (Left "Time step cannot be greater than 300 seconds")+ return (TP h t0 x d skew)++-- | Calculate a totp value for the given time.+totp :: (HashAlgorithm hash, ByteArrayAccess key)+ => TOTPParams hash+ -> key+ -- ^ The shared secret+ -> OTPTime+ -- ^ The time for which the OTP should be calculated.+ -- This is usually the current time as returned by @Data.Time.Clock.POSIX.getPOSIXTime@+ -> OTP+totp (TP h t0 x d _) k now = hotp h d k (timeToCounter now t0 x)++-- | Check a supplied TOTP value is valid for the given time,+-- within the window defined by the skew parameter.+totpVerify :: (HashAlgorithm hash, ByteArrayAccess key)+ => TOTPParams hash+ -> key+ -> OTPTime+ -> OTP+ -> Bool+totpVerify (TP h t0 x d skew) k now otp = otp `elem` map (hotp h d k) (range window [])+ where+ t = timeToCounter now t0 x+ window = fromIntegral (fromEnum skew)+ range 0 acc = t : acc+ range n acc = range (n-1) ((t-n) : (t+n) : acc)++timeToCounter :: Word64 -> Word64 -> Word16 -> Word64+timeToCounter now t0 x = (now - t0) `div` fromIntegral x
+ Crypto/PubKey/Curve448.hs view
@@ -0,0 +1,108 @@+-- |+-- Module : Crypto.PubKey.Curve448+-- License : BSD-style+-- Maintainer : John Galt <jgalt@centromere.net>+-- Stability : experimental+-- Portability : unknown+--+-- Curve448 support+--+{-# LANGUAGE GeneralizedNewtypeDeriving #-}+{-# LANGUAGE MagicHash #-}+module Crypto.PubKey.Curve448+ ( SecretKey+ , PublicKey+ , DhSecret+ -- * Smart constructors+ , dhSecret+ , publicKey+ , secretKey+ -- * methods+ , dh+ , toPublic+ , generateSecretKey+ ) where++import Data.Word+import Foreign.Ptr+import GHC.Ptr++import Crypto.Error+import Crypto.Random+import Crypto.Internal.Compat+import Crypto.Internal.Imports+import Crypto.Internal.ByteArray (ByteArrayAccess, ScrubbedBytes, Bytes, withByteArray)+import qualified Crypto.Internal.ByteArray as B++-- | A Curve448 Secret key+newtype SecretKey = SecretKey ScrubbedBytes+ deriving (Show,Eq,ByteArrayAccess,NFData)++-- | A Curve448 public key+newtype PublicKey = PublicKey Bytes+ deriving (Show,Eq,ByteArrayAccess,NFData)++-- | A Curve448 Diffie Hellman secret related to a+-- public key and a secret key.+newtype DhSecret = DhSecret ScrubbedBytes+ deriving (Show,Eq,ByteArrayAccess,NFData)++-- | Try to build a public key from a bytearray+publicKey :: ByteArrayAccess bs => bs -> CryptoFailable PublicKey+publicKey bs+ | B.length bs == x448_bytes = CryptoPassed $ PublicKey $ B.copyAndFreeze bs (\_ -> return ())+ | otherwise = CryptoFailed CryptoError_PublicKeySizeInvalid++-- | Try to build a secret key from a bytearray+secretKey :: ByteArrayAccess bs => bs -> CryptoFailable SecretKey+secretKey bs+ | B.length bs == x448_bytes = unsafeDoIO $+ withByteArray bs $ \inp -> do+ valid <- isValidPtr inp+ if valid+ then (CryptoPassed . SecretKey) <$> B.copy bs (\_ -> return ())+ else return $ CryptoFailed CryptoError_SecretKeyStructureInvalid+ | otherwise = CryptoFailed CryptoError_SecretKeySizeInvalid+ where+ isValidPtr :: Ptr Word8 -> IO Bool+ isValidPtr _ =+ return True+{-# NOINLINE secretKey #-}++-- | Create a DhSecret from a bytearray object+dhSecret :: ByteArrayAccess b => b -> CryptoFailable DhSecret+dhSecret bs+ | B.length bs == x448_bytes = CryptoPassed $ DhSecret $ B.copyAndFreeze bs (\_ -> return ())+ | otherwise = CryptoFailed CryptoError_SharedSecretSizeInvalid++-- | Compute the Diffie Hellman secret from a public key and a secret key+dh :: PublicKey -> SecretKey -> DhSecret+dh (PublicKey pub) (SecretKey sec) = DhSecret <$>+ B.allocAndFreeze x448_bytes $ \result ->+ withByteArray sec $ \psec ->+ withByteArray pub $ \ppub ->+ ccryptonite_ed448 result psec ppub+{-# NOINLINE dh #-}++-- | Create a public key from a secret key+toPublic :: SecretKey -> PublicKey+toPublic (SecretKey sec) = PublicKey <$>+ B.allocAndFreeze x448_bytes $ \result ->+ withByteArray sec $ \psec ->+ ccryptonite_ed448 result psec basePoint+ where+ basePoint = Ptr "\x05\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"#+{-# NOINLINE toPublic #-}++-- | Generate a secret key.+generateSecretKey :: MonadRandom m => m SecretKey+generateSecretKey = SecretKey <$> getRandomBytes x448_bytes++x448_bytes :: Int+x448_bytes = 448 `quot` 8++foreign import ccall "cryptonite_x448"+ ccryptonite_ed448 :: Ptr Word8 -- ^ public+ -> Ptr Word8 -- ^ secret+ -> Ptr Word8 -- ^ basepoint+ -> IO ()
Crypto/PubKey/Ed448.hs view
@@ -7,102 +7,14 @@ -- -- Ed448 support --+-- /Functions and types exported here will be DEPRECATED in a future version./+-- For Diffie-Hellman over curve448 please use module "Crypto.PubKey.Curve448"+-- instead.+-- {-# LANGUAGE GeneralizedNewtypeDeriving #-} {-# LANGUAGE MagicHash #-} module Crypto.PubKey.Ed448- ( SecretKey- , PublicKey- , DhSecret- -- * Smart constructors- , dhSecret- , publicKey- , secretKey- -- * methods- , dh- , toPublic- , generateSecretKey+ ( module Crypto.PubKey.Curve448 ) where -import Data.Word-import Foreign.Ptr-import GHC.Ptr--import Crypto.Error-import Crypto.Random-import Crypto.Internal.Compat-import Crypto.Internal.Imports-import Crypto.Internal.ByteArray (ByteArrayAccess, ScrubbedBytes, Bytes, withByteArray)-import qualified Crypto.Internal.ByteArray as B---- | A Ed448 Secret key-newtype SecretKey = SecretKey ScrubbedBytes- deriving (Show,Eq,ByteArrayAccess,NFData)---- | A Ed448 public key-newtype PublicKey = PublicKey Bytes- deriving (Show,Eq,ByteArrayAccess,NFData)---- | A Ed448 Diffie Hellman secret related to a--- public key and a secret key.-newtype DhSecret = DhSecret ScrubbedBytes- deriving (Show,Eq,ByteArrayAccess,NFData)---- | Try to build a public key from a bytearray-publicKey :: ByteArrayAccess bs => bs -> CryptoFailable PublicKey-publicKey bs- | B.length bs == x448_bytes = CryptoPassed $ PublicKey $ B.copyAndFreeze bs (\_ -> return ())- | otherwise = CryptoFailed CryptoError_PublicKeySizeInvalid---- | Try to build a secret key from a bytearray-secretKey :: ByteArrayAccess bs => bs -> CryptoFailable SecretKey-secretKey bs- | B.length bs == x448_bytes = unsafeDoIO $- withByteArray bs $ \inp -> do- valid <- isValidPtr inp- if valid- then (CryptoPassed . SecretKey) <$> B.copy bs (\_ -> return ())- else return $ CryptoFailed CryptoError_SecretKeyStructureInvalid- | otherwise = CryptoFailed CryptoError_SecretKeySizeInvalid- where- isValidPtr :: Ptr Word8 -> IO Bool- isValidPtr _ =- return True-{-# NOINLINE secretKey #-}---- | Create a DhSecret from a bytearray object-dhSecret :: ByteArrayAccess b => b -> CryptoFailable DhSecret-dhSecret bs- | B.length bs == x448_bytes = CryptoPassed $ DhSecret $ B.copyAndFreeze bs (\_ -> return ())- | otherwise = CryptoFailed CryptoError_SharedSecretSizeInvalid---- | Compute the Diffie Hellman secret from a public key and a secret key-dh :: PublicKey -> SecretKey -> DhSecret-dh (PublicKey pub) (SecretKey sec) = DhSecret <$>- B.allocAndFreeze x448_bytes $ \result ->- withByteArray sec $ \psec ->- withByteArray pub $ \ppub ->- ccryptonite_ed448 result psec ppub-{-# NOINLINE dh #-}---- | Create a public key from a secret key-toPublic :: SecretKey -> PublicKey-toPublic (SecretKey sec) = PublicKey <$>- B.allocAndFreeze x448_bytes $ \result ->- withByteArray sec $ \psec ->- ccryptonite_ed448 result psec basePoint- where- basePoint = Ptr "\x05\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"#-{-# NOINLINE toPublic #-}---- | Generate a secret key.-generateSecretKey :: MonadRandom m => m SecretKey-generateSecretKey = SecretKey <$> getRandomBytes x448_bytes--x448_bytes :: Int-x448_bytes = 448 `quot` 8--foreign import ccall "cryptonite_x448"- ccryptonite_ed448 :: Ptr Word8 -- ^ public- -> Ptr Word8 -- ^ secret- -> Ptr Word8 -- ^ basepoint- -> IO ()+import Crypto.PubKey.Curve448
+ cbits/argon2/argon2.c view
@@ -0,0 +1,142 @@+/*+ * Argon2 reference source code package - reference C implementations+ *+ * Copyright 2015+ * Daniel Dinu, Dmitry Khovratovich, Jean-Philippe Aumasson, and Samuel Neves+ *+ * You may use this work under the terms of a Creative Commons CC0 1.0 + * License/Waiver or the Apache Public License 2.0, at your option. The terms of+ * these licenses can be found at:+ *+ * - CC0 1.0 Universal : http://creativecommons.org/publicdomain/zero/1.0+ * - Apache 2.0 : http://www.apache.org/licenses/LICENSE-2.0+ *+ * You should have received a copy of both of these licenses along with this+ * software. If not, they may be obtained at the above URLs.+ */++#include <string.h>+#include <stdlib.h>+#include <stdio.h>++#include "argon2.h"+#include "core.c"++int cryptonite_argon2_ctx(argon2_context *context, argon2_type type) {+ /* 1. Validate all inputs */+ int result = validate_inputs(context);+ uint32_t memory_blocks, segment_length;+ argon2_instance_t instance;++ if (ARGON2_OK != result) {+ return result;+ }++ if (Argon2_d != type && Argon2_i != type && Argon2_id != type) {+ return ARGON2_INCORRECT_TYPE;+ }++ /* 2. Align memory size */+ /* Minimum memory_blocks = 8L blocks, where L is the number of lanes */+ memory_blocks = context->m_cost;++ if (memory_blocks < 2 * ARGON2_SYNC_POINTS * context->lanes) {+ memory_blocks = 2 * ARGON2_SYNC_POINTS * context->lanes;+ }++ segment_length = memory_blocks / (context->lanes * ARGON2_SYNC_POINTS);+ /* Ensure that all segments have equal length */+ memory_blocks = segment_length * (context->lanes * ARGON2_SYNC_POINTS);++ instance.version = context->version;+ instance.memory = NULL;+ instance.passes = context->t_cost;+ instance.memory_blocks = memory_blocks;+ instance.segment_length = segment_length;+ instance.lane_length = segment_length * ARGON2_SYNC_POINTS;+ instance.lanes = context->lanes;+ instance.threads = context->threads;+ instance.type = type;++ /* 3. Initialization: Hashing inputs, allocating memory, filling first+ * blocks+ */+ result = initialize(&instance, context);++ if (ARGON2_OK != result) {+ return result;+ }++ /* 4. Filling memory */+ result = fill_memory_blocks(&instance);++ if (ARGON2_OK != result) {+ return result;+ }+ /* 5. Finalization */+ finalize(context, &instance);++ return ARGON2_OK;+}++int cryptonite_argon2_hash(const uint32_t t_cost, const uint32_t m_cost,+ const uint32_t parallelism, const void *pwd,+ const size_t pwdlen, const void *salt, const size_t saltlen,+ void *hash, const size_t hashlen, argon2_type type,+ const uint32_t version){++ argon2_context context;+ int result;+ uint8_t *out;++ if (hashlen > ARGON2_MAX_OUTLEN) {+ return ARGON2_OUTPUT_TOO_LONG;+ }++ if (hashlen < ARGON2_MIN_OUTLEN) {+ return ARGON2_OUTPUT_TOO_SHORT;+ }++ out = malloc(hashlen);+ if (!out) {+ return ARGON2_MEMORY_ALLOCATION_ERROR;+ }++ context.out = (uint8_t *)out;+ context.outlen = (uint32_t)hashlen;+ context.pwd = CONST_CAST(uint8_t *)pwd;+ context.pwdlen = (uint32_t)pwdlen;+ context.salt = CONST_CAST(uint8_t *)salt;+ context.saltlen = (uint32_t)saltlen;+ context.secret = NULL;+ context.secretlen = 0;+ context.ad = NULL;+ context.adlen = 0;+ context.t_cost = t_cost;+ context.m_cost = m_cost;+ context.lanes = parallelism;+ context.threads = parallelism;+ context.allocate_cbk = NULL;+ context.free_cbk = NULL;+ context.flags = ARGON2_DEFAULT_FLAGS;+ context.version = version;++ result = cryptonite_argon2_ctx(&context, type);++ if (result != ARGON2_OK) {+ clear_internal_memory(out, hashlen);+ free(out);+ return result;+ }++ /* if raw hash requested, write it */+ if (hash) {+ memcpy(hash, out, hashlen);+ }++ clear_internal_memory(out, hashlen);+ free(out);++ return ARGON2_OK;+}+
+ cbits/argon2/argon2.h view
@@ -0,0 +1,267 @@+/*+ * Argon2 reference source code package - reference C implementations+ *+ * Copyright 2015+ * Daniel Dinu, Dmitry Khovratovich, Jean-Philippe Aumasson, and Samuel Neves+ *+ * You may use this work under the terms of a Creative Commons CC0 1.0 + * License/Waiver or the Apache Public License 2.0, at your option. The terms of+ * these licenses can be found at:+ *+ * - CC0 1.0 Universal : http://creativecommons.org/publicdomain/zero/1.0+ * - Apache 2.0 : http://www.apache.org/licenses/LICENSE-2.0+ *+ * You should have received a copy of both of these licenses along with this+ * software. If not, they may be obtained at the above URLs.+ */++#ifndef ARGON2_H+#define ARGON2_H++#include <stdint.h>+#include <stddef.h>+#include <limits.h>++#if defined(__cplusplus)+extern "C" {+#endif++/* Symbols visibility control */+#ifdef A2_VISCTL+#define ARGON2_PUBLIC __attribute__((visibility("default")))+#elif _MSC_VER+#define ARGON2_PUBLIC __declspec(dllexport)+#else+#define ARGON2_PUBLIC+#endif++/*+ * Argon2 input parameter restrictions+ */++/* Minimum and maximum number of lanes (degree of parallelism) */+#define ARGON2_MIN_LANES UINT32_C(1)+#define ARGON2_MAX_LANES UINT32_C(0xFFFFFF)++/* Minimum and maximum number of threads */+#define ARGON2_MIN_THREADS UINT32_C(1)+#define ARGON2_MAX_THREADS UINT32_C(0xFFFFFF)++/* Number of synchronization points between lanes per pass */+#define ARGON2_SYNC_POINTS UINT32_C(4)++/* Minimum and maximum digest size in bytes */+#define ARGON2_MIN_OUTLEN UINT32_C(4)+#define ARGON2_MAX_OUTLEN UINT32_C(0xFFFFFFFF)++/* Minimum and maximum number of memory blocks (each of BLOCK_SIZE bytes) */+#define ARGON2_MIN_MEMORY (2 * ARGON2_SYNC_POINTS) /* 2 blocks per slice */++#define ARGON2_MIN(a, b) ((a) < (b) ? (a) : (b))+/* Max memory size is addressing-space/2, topping at 2^32 blocks (4 TB) */+#define ARGON2_MAX_MEMORY_BITS \+ ARGON2_MIN(UINT32_C(32), (sizeof(void *) * CHAR_BIT - 10 - 1))+#define ARGON2_MAX_MEMORY \+ ARGON2_MIN(UINT32_C(0xFFFFFFFF), UINT64_C(1) << ARGON2_MAX_MEMORY_BITS)++/* Minimum and maximum number of passes */+#define ARGON2_MIN_TIME UINT32_C(1)+#define ARGON2_MAX_TIME UINT32_C(0xFFFFFFFF)++/* Minimum and maximum password length in bytes */+#define ARGON2_MIN_PWD_LENGTH UINT32_C(0)+#define ARGON2_MAX_PWD_LENGTH UINT32_C(0xFFFFFFFF)++/* Minimum and maximum associated data length in bytes */+#define ARGON2_MIN_AD_LENGTH UINT32_C(0)+#define ARGON2_MAX_AD_LENGTH UINT32_C(0xFFFFFFFF)++/* Minimum and maximum salt length in bytes */+#define ARGON2_MIN_SALT_LENGTH UINT32_C(8)+#define ARGON2_MAX_SALT_LENGTH UINT32_C(0xFFFFFFFF)++/* Minimum and maximum key length in bytes */+#define ARGON2_MIN_SECRET UINT32_C(0)+#define ARGON2_MAX_SECRET UINT32_C(0xFFFFFFFF)++/* Flags to determine which fields are securely wiped (default = no wipe). */+#define ARGON2_DEFAULT_FLAGS UINT32_C(0)+#define ARGON2_FLAG_CLEAR_PASSWORD (UINT32_C(1) << 0)+#define ARGON2_FLAG_CLEAR_SECRET (UINT32_C(1) << 1)++/* Global flag to determine if we are wiping internal memory buffers. This flag+ * is defined in core.c and deafults to 1 (wipe internal memory). */+//extern int FLAG_clear_internal_memory;++/* Error codes */+typedef enum Argon2_ErrorCodes {+ ARGON2_OK = 0,++ ARGON2_OUTPUT_PTR_NULL = -1,++ ARGON2_OUTPUT_TOO_SHORT = -2,+ ARGON2_OUTPUT_TOO_LONG = -3,++ ARGON2_PWD_TOO_SHORT = -4,+ ARGON2_PWD_TOO_LONG = -5,++ ARGON2_SALT_TOO_SHORT = -6,+ ARGON2_SALT_TOO_LONG = -7,++ ARGON2_AD_TOO_SHORT = -8,+ ARGON2_AD_TOO_LONG = -9,++ ARGON2_SECRET_TOO_SHORT = -10,+ ARGON2_SECRET_TOO_LONG = -11,++ ARGON2_TIME_TOO_SMALL = -12,+ ARGON2_TIME_TOO_LARGE = -13,++ ARGON2_MEMORY_TOO_LITTLE = -14,+ ARGON2_MEMORY_TOO_MUCH = -15,++ ARGON2_LANES_TOO_FEW = -16,+ ARGON2_LANES_TOO_MANY = -17,++ ARGON2_PWD_PTR_MISMATCH = -18, /* NULL ptr with non-zero length */+ ARGON2_SALT_PTR_MISMATCH = -19, /* NULL ptr with non-zero length */+ ARGON2_SECRET_PTR_MISMATCH = -20, /* NULL ptr with non-zero length */+ ARGON2_AD_PTR_MISMATCH = -21, /* NULL ptr with non-zero length */++ ARGON2_MEMORY_ALLOCATION_ERROR = -22,++ ARGON2_FREE_MEMORY_CBK_NULL = -23,+ ARGON2_ALLOCATE_MEMORY_CBK_NULL = -24,++ ARGON2_INCORRECT_PARAMETER = -25,+ ARGON2_INCORRECT_TYPE = -26,++ ARGON2_OUT_PTR_MISMATCH = -27,++ ARGON2_THREADS_TOO_FEW = -28,+ ARGON2_THREADS_TOO_MANY = -29,++ ARGON2_MISSING_ARGS = -30,++ ARGON2_ENCODING_FAIL = -31,++ ARGON2_DECODING_FAIL = -32,++ ARGON2_THREAD_FAIL = -33,++ ARGON2_DECODING_LENGTH_FAIL = -34,++ ARGON2_VERIFY_MISMATCH = -35+} argon2_error_codes;++/* Memory allocator types --- for external allocation */+typedef int (*allocate_fptr)(uint8_t **memory, size_t bytes_to_allocate);+typedef void (*deallocate_fptr)(uint8_t *memory, size_t bytes_to_allocate);++/* Argon2 external data structures */++/*+ *****+ * Context: structure to hold Argon2 inputs:+ * output array and its length,+ * password and its length,+ * salt and its length,+ * secret and its length,+ * associated data and its length,+ * number of passes, amount of used memory (in KBytes, can be rounded up a bit)+ * number of parallel threads that will be run.+ * All the parameters above affect the output hash value.+ * Additionally, two function pointers can be provided to allocate and+ * deallocate the memory (if NULL, memory will be allocated internally).+ * Also, three flags indicate whether to erase password, secret as soon as they+ * are pre-hashed (and thus not needed anymore), and the entire memory+ *****+ * Simplest situation: you have output array out[8], password is stored in+ * pwd[32], salt is stored in salt[16], you do not have keys nor associated+ * data. You need to spend 1 GB of RAM and you run 5 passes of Argon2d with+ * 4 parallel lanes.+ * You want to erase the password, but you're OK with last pass not being+ * erased. You want to use the default memory allocator.+ * Then you initialize:+ Argon2_Context(out,8,pwd,32,salt,16,NULL,0,NULL,0,5,1<<20,4,4,NULL,NULL,true,false,false,false)+ */+typedef struct Argon2_Context {+ uint8_t *out; /* output array */+ uint32_t outlen; /* digest length */++ uint8_t *pwd; /* password array */+ uint32_t pwdlen; /* password length */++ uint8_t *salt; /* salt array */+ uint32_t saltlen; /* salt length */++ uint8_t *secret; /* key array */+ uint32_t secretlen; /* key length */++ uint8_t *ad; /* associated data array */+ uint32_t adlen; /* associated data length */++ uint32_t t_cost; /* number of passes */+ uint32_t m_cost; /* amount of memory requested (KB) */+ uint32_t lanes; /* number of lanes */+ uint32_t threads; /* maximum number of threads */++ uint32_t version; /* version number */++ allocate_fptr allocate_cbk; /* pointer to memory allocator */+ deallocate_fptr free_cbk; /* pointer to memory deallocator */++ uint32_t flags; /* array of bool options */+} argon2_context;++/* Argon2 primitive type */+typedef enum Argon2_type {+ Argon2_d = 0,+ Argon2_i = 1,+ Argon2_id = 2+} argon2_type;++/* Version of the algorithm */+typedef enum Argon2_version {+ ARGON2_VERSION_10 = 0x10,+ ARGON2_VERSION_13 = 0x13,+ ARGON2_VERSION_NUMBER = ARGON2_VERSION_13+} argon2_version;++/*+ * Function that performs memory-hard hashing with certain degree of parallelism+ * @param context Pointer to the Argon2 internal structure+ * @return Error code if smth is wrong, ARGON2_OK otherwise+ */+ARGON2_PUBLIC int cryptonite_argon2_ctx(argon2_context *context, argon2_type type);++/**+ * Hashes a password with Argon2i, producing a raw hash by allocating memory at+ * @hash+ * @param t_cost Number of iterations+ * @param m_cost Sets memory usage to m_cost kibibytes+ * @param parallelism Number of threads and compute lanes+ * @param pwd Pointer to password+ * @param pwdlen Password size in bytes+ * @param salt Pointer to salt+ * @param saltlen Salt size in bytes+ * @param hash Buffer where to write the raw hash - updated by the function+ * @param hashlen Desired length of the hash in bytes+ * @pre Different parallelism levels will give different results+ * @pre Returns ARGON2_OK if successful+ */++/* generic function underlying the above ones */+ARGON2_PUBLIC int cryptonite_argon2_hash(const uint32_t t_cost, const uint32_t m_cost,+ const uint32_t parallelism, const void *pwd,+ const size_t pwdlen, const void *salt,+ const size_t saltlen, void *hash,+ const size_t hashlen, argon2_type type,+ const uint32_t version);+++#if defined(__cplusplus)+}+#endif++#endif
+ cbits/argon2/blamka-round-opt.h view
@@ -0,0 +1,180 @@+/*+ * Argon2 reference source code package - reference C implementations+ *+ * Copyright 2015+ * Daniel Dinu, Dmitry Khovratovich, Jean-Philippe Aumasson, and Samuel Neves+ *+ * You may use this work under the terms of a Creative Commons CC0 1.0 + * License/Waiver or the Apache Public License 2.0, at your option. The terms of+ * these licenses can be found at:+ *+ * - CC0 1.0 Universal : http://creativecommons.org/publicdomain/zero/1.0+ * - Apache 2.0 : http://www.apache.org/licenses/LICENSE-2.0+ *+ * You should have received a copy of both of these licenses along with this+ * software. If not, they may be obtained at the above URLs.+ */++#ifndef BLAKE_ROUND_MKA_OPT_H+#define BLAKE_ROUND_MKA_OPT_H++#include "blake2-impl.h"++#include <emmintrin.h>+#if defined(__SSSE3__)+#include <tmmintrin.h> /* for _mm_shuffle_epi8 and _mm_alignr_epi8 */+#endif++#if defined(__XOP__) && (defined(__GNUC__) || defined(__clang__))+#include <x86intrin.h>+#endif++#if !defined(__XOP__)+#if defined(__SSSE3__)+#define r16 \+ (_mm_setr_epi8(2, 3, 4, 5, 6, 7, 0, 1, 10, 11, 12, 13, 14, 15, 8, 9))+#define r24 \+ (_mm_setr_epi8(3, 4, 5, 6, 7, 0, 1, 2, 11, 12, 13, 14, 15, 8, 9, 10))+#define _mm_roti_epi64(x, c) \+ (-(c) == 32) \+ ? _mm_shuffle_epi32((x), _MM_SHUFFLE(2, 3, 0, 1)) \+ : (-(c) == 24) \+ ? _mm_shuffle_epi8((x), r24) \+ : (-(c) == 16) \+ ? _mm_shuffle_epi8((x), r16) \+ : (-(c) == 63) \+ ? _mm_xor_si128(_mm_srli_epi64((x), -(c)), \+ _mm_add_epi64((x), (x))) \+ : _mm_xor_si128(_mm_srli_epi64((x), -(c)), \+ _mm_slli_epi64((x), 64 - (-(c))))+#else /* defined(__SSE2__) */+#define _mm_roti_epi64(r, c) \+ _mm_xor_si128(_mm_srli_epi64((r), -(c)), _mm_slli_epi64((r), 64 - (-(c))))+#endif+#else+#endif++static BLAKE2_INLINE __m128i fBlaMka(__m128i x, __m128i y) {+ const __m128i z = _mm_mul_epu32(x, y);+ return _mm_add_epi64(_mm_add_epi64(x, y), _mm_add_epi64(z, z));+}++#define G1(A0, B0, C0, D0, A1, B1, C1, D1) \+ do { \+ A0 = fBlaMka(A0, B0); \+ A1 = fBlaMka(A1, B1); \+ \+ D0 = _mm_xor_si128(D0, A0); \+ D1 = _mm_xor_si128(D1, A1); \+ \+ D0 = _mm_roti_epi64(D0, -32); \+ D1 = _mm_roti_epi64(D1, -32); \+ \+ C0 = fBlaMka(C0, D0); \+ C1 = fBlaMka(C1, D1); \+ \+ B0 = _mm_xor_si128(B0, C0); \+ B1 = _mm_xor_si128(B1, C1); \+ \+ B0 = _mm_roti_epi64(B0, -24); \+ B1 = _mm_roti_epi64(B1, -24); \+ } while ((void)0, 0)++#define G2(A0, B0, C0, D0, A1, B1, C1, D1) \+ do { \+ A0 = fBlaMka(A0, B0); \+ A1 = fBlaMka(A1, B1); \+ \+ D0 = _mm_xor_si128(D0, A0); \+ D1 = _mm_xor_si128(D1, A1); \+ \+ D0 = _mm_roti_epi64(D0, -16); \+ D1 = _mm_roti_epi64(D1, -16); \+ \+ C0 = fBlaMka(C0, D0); \+ C1 = fBlaMka(C1, D1); \+ \+ B0 = _mm_xor_si128(B0, C0); \+ B1 = _mm_xor_si128(B1, C1); \+ \+ B0 = _mm_roti_epi64(B0, -63); \+ B1 = _mm_roti_epi64(B1, -63); \+ } while ((void)0, 0)++#if defined(__SSSE3__)+#define DIAGONALIZE(A0, B0, C0, D0, A1, B1, C1, D1) \+ do { \+ __m128i t0 = _mm_alignr_epi8(B1, B0, 8); \+ __m128i t1 = _mm_alignr_epi8(B0, B1, 8); \+ B0 = t0; \+ B1 = t1; \+ \+ t0 = C0; \+ C0 = C1; \+ C1 = t0; \+ \+ t0 = _mm_alignr_epi8(D1, D0, 8); \+ t1 = _mm_alignr_epi8(D0, D1, 8); \+ D0 = t1; \+ D1 = t0; \+ } while ((void)0, 0)++#define UNDIAGONALIZE(A0, B0, C0, D0, A1, B1, C1, D1) \+ do { \+ __m128i t0 = _mm_alignr_epi8(B0, B1, 8); \+ __m128i t1 = _mm_alignr_epi8(B1, B0, 8); \+ B0 = t0; \+ B1 = t1; \+ \+ t0 = C0; \+ C0 = C1; \+ C1 = t0; \+ \+ t0 = _mm_alignr_epi8(D0, D1, 8); \+ t1 = _mm_alignr_epi8(D1, D0, 8); \+ D0 = t1; \+ D1 = t0; \+ } while ((void)0, 0)+#else /* SSE2 */+#define DIAGONALIZE(A0, B0, C0, D0, A1, B1, C1, D1) \+ do { \+ __m128i t0 = D0; \+ __m128i t1 = B0; \+ D0 = C0; \+ C0 = C1; \+ C1 = D0; \+ D0 = _mm_unpackhi_epi64(D1, _mm_unpacklo_epi64(t0, t0)); \+ D1 = _mm_unpackhi_epi64(t0, _mm_unpacklo_epi64(D1, D1)); \+ B0 = _mm_unpackhi_epi64(B0, _mm_unpacklo_epi64(B1, B1)); \+ B1 = _mm_unpackhi_epi64(B1, _mm_unpacklo_epi64(t1, t1)); \+ } while ((void)0, 0)++#define UNDIAGONALIZE(A0, B0, C0, D0, A1, B1, C1, D1) \+ do { \+ __m128i t0, t1; \+ t0 = C0; \+ C0 = C1; \+ C1 = t0; \+ t0 = B0; \+ t1 = D0; \+ B0 = _mm_unpackhi_epi64(B1, _mm_unpacklo_epi64(B0, B0)); \+ B1 = _mm_unpackhi_epi64(t0, _mm_unpacklo_epi64(B1, B1)); \+ D0 = _mm_unpackhi_epi64(D0, _mm_unpacklo_epi64(D1, D1)); \+ D1 = _mm_unpackhi_epi64(D1, _mm_unpacklo_epi64(t1, t1)); \+ } while ((void)0, 0)+#endif++#define BLAKE2_ROUND(A0, A1, B0, B1, C0, C1, D0, D1) \+ do { \+ G1(A0, B0, C0, D0, A1, B1, C1, D1); \+ G2(A0, B0, C0, D0, A1, B1, C1, D1); \+ \+ DIAGONALIZE(A0, B0, C0, D0, A1, B1, C1, D1); \+ \+ G1(A0, B0, C0, D0, A1, B1, C1, D1); \+ G2(A0, B0, C0, D0, A1, B1, C1, D1); \+ \+ UNDIAGONALIZE(A0, B0, C0, D0, A1, B1, C1, D1); \+ } while ((void)0, 0)++#endif
+ cbits/argon2/blamka-round-ref.h view
@@ -0,0 +1,56 @@+/*+ * Argon2 reference source code package - reference C implementations+ *+ * Copyright 2015+ * Daniel Dinu, Dmitry Khovratovich, Jean-Philippe Aumasson, and Samuel Neves+ *+ * You may use this work under the terms of a Creative Commons CC0 1.0 + * License/Waiver or the Apache Public License 2.0, at your option. The terms of+ * these licenses can be found at:+ *+ * - CC0 1.0 Universal : http://creativecommons.org/publicdomain/zero/1.0+ * - Apache 2.0 : http://www.apache.org/licenses/LICENSE-2.0+ *+ * You should have received a copy of both of these licenses along with this+ * software. If not, they may be obtained at the above URLs.+ */++#ifndef BLAKE_ROUND_MKA_H+#define BLAKE_ROUND_MKA_H++#include "blake2.h"+#include "blake2-impl.h"++/*designed by the Lyra PHC team */+static BLAKE2_INLINE uint64_t fBlaMka(uint64_t x, uint64_t y) {+ const uint64_t m = UINT64_C(0xFFFFFFFF);+ const uint64_t xy = (x & m) * (y & m);+ return x + y + 2 * xy;+}++#define G(a, b, c, d) \+ do { \+ a = fBlaMka(a, b); \+ d = rotr64(d ^ a, 32); \+ c = fBlaMka(c, d); \+ b = rotr64(b ^ c, 24); \+ a = fBlaMka(a, b); \+ d = rotr64(d ^ a, 16); \+ c = fBlaMka(c, d); \+ b = rotr64(b ^ c, 63); \+ } while ((void)0, 0)++#define BLAKE2_ROUND_NOMSG(v0, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, \+ v12, v13, v14, v15) \+ do { \+ G(v0, v4, v8, v12); \+ G(v1, v5, v9, v13); \+ G(v2, v6, v10, v14); \+ G(v3, v7, v11, v15); \+ G(v0, v5, v10, v15); \+ G(v1, v6, v11, v12); \+ G(v2, v7, v8, v13); \+ G(v3, v4, v9, v14); \+ } while ((void)0, 0)++#endif
+ cbits/argon2/core.c view
@@ -0,0 +1,701 @@+/*+ * Argon2 reference source code package - reference C implementations+ *+ * Copyright 2015+ * Daniel Dinu, Dmitry Khovratovich, Jean-Philippe Aumasson, and Samuel Neves+ *+ * You may use this work under the terms of a Creative Commons CC0 1.0 + * License/Waiver or the Apache Public License 2.0, at your option. The terms of+ * these licenses can be found at:+ *+ * - CC0 1.0 Universal : http://creativecommons.org/publicdomain/zero/1.0+ * - Apache 2.0 : http://www.apache.org/licenses/LICENSE-2.0+ *+ * You should have received a copy of both of these licenses along with this+ * software. If not, they may be obtained at the above URLs.+ */++/*For memory wiping*/+#ifdef _MSC_VER+#include <windows.h>+#include <winbase.h> /* For SecureZeroMemory */+#endif+#if defined __STDC_LIB_EXT1__+#define __STDC_WANT_LIB_EXT1__ 1+#endif+#define VC_GE_2005(version) (version >= 1400)++#include <inttypes.h>+#include <stdio.h>+#include <stdlib.h>+#include <string.h>++#include "core.h"+#include "thread.c"+#include "blake2.h"+#include "blake2-impl.h"++#ifdef GENKAT+#include "genkat.h"+#endif++#ifdef SUPPORT_SSE+#include "opt.c"+#else+#include "ref.c"+#endif++#if defined(__clang__)+#if __has_attribute(optnone)+#define NOT_OPTIMIZED __attribute__((optnone))+#endif+#elif defined(__GNUC__)+#define GCC_VERSION \+ (__GNUC__ * 10000 + __GNUC_MINOR__ * 100 + __GNUC_PATCHLEVEL__)+#if GCC_VERSION >= 40400+#define NOT_OPTIMIZED __attribute__((optimize("O0")))+#endif+#endif+#ifndef NOT_OPTIMIZED+#define NOT_OPTIMIZED+#endif++/* Argon2 Team - Begin Code */+static int blake2b_long(void *pout, size_t outlen, const void *in, size_t inlen) {+ uint8_t *out = (uint8_t *)pout;+ blake2b_state blake_state;+ uint8_t outlen_bytes[sizeof(uint32_t)] = {0};+ int ret = -1;++ if (outlen > UINT32_MAX) {+ goto fail;+ }++ /* Ensure little-endian byte order! */+ store32(outlen_bytes, (uint32_t)outlen);++#define TRY(statement) \+ do { \+ ret = statement; \+ if (ret < 0) { \+ goto fail; \+ } \+ } while ((void)0, 0)++ if (outlen <= BLAKE2B_OUTBYTES) {+ TRY(blake2b_init(&blake_state, outlen));+ TRY(blake2b_update(&blake_state, outlen_bytes, sizeof(outlen_bytes)));+ TRY(blake2b_update(&blake_state, in, inlen));+ TRY(blake2b_final(&blake_state, out, outlen));+ } else {+ uint32_t toproduce;+ uint8_t out_buffer[BLAKE2B_OUTBYTES];+ uint8_t in_buffer[BLAKE2B_OUTBYTES];+ TRY(blake2b_init(&blake_state, BLAKE2B_OUTBYTES));+ TRY(blake2b_update(&blake_state, outlen_bytes, sizeof(outlen_bytes)));+ TRY(blake2b_update(&blake_state, in, inlen));+ TRY(blake2b_final(&blake_state, out_buffer, BLAKE2B_OUTBYTES));+ memcpy(out, out_buffer, BLAKE2B_OUTBYTES / 2);+ out += BLAKE2B_OUTBYTES / 2;+ toproduce = (uint32_t)outlen - BLAKE2B_OUTBYTES / 2;++ while (toproduce > BLAKE2B_OUTBYTES) {+ memcpy(in_buffer, out_buffer, BLAKE2B_OUTBYTES);+ TRY(blake2b(out_buffer, BLAKE2B_OUTBYTES, in_buffer,+ BLAKE2B_OUTBYTES, NULL, 0));+ memcpy(out, out_buffer, BLAKE2B_OUTBYTES / 2);+ out += BLAKE2B_OUTBYTES / 2;+ toproduce -= BLAKE2B_OUTBYTES / 2;+ }++ memcpy(in_buffer, out_buffer, BLAKE2B_OUTBYTES);+ TRY(blake2b(out_buffer, toproduce, in_buffer, BLAKE2B_OUTBYTES, NULL,+ 0));+ memcpy(out, out_buffer, toproduce);+ }+fail:+ clear_internal_memory(&blake_state, sizeof(blake_state));+ return ret;+#undef TRY+}+/* Argon2 Team - End Code */++/***************Instance and Position constructors**********/+static void init_block_value(block *b, uint8_t in) { memset(b->v, in, sizeof(b->v)); }++static void copy_block(block *dst, const block *src) {+ memcpy(dst->v, src->v, sizeof(uint64_t) * ARGON2_QWORDS_IN_BLOCK);+}++static void xor_block(block *dst, const block *src) {+ int i;+ for (i = 0; i < ARGON2_QWORDS_IN_BLOCK; ++i) {+ dst->v[i] ^= src->v[i];+ }+}++static void load_block(block *dst, const void *input) {+ unsigned i;+ for (i = 0; i < ARGON2_QWORDS_IN_BLOCK; ++i) {+ dst->v[i] = load64((const uint8_t *)input + i * sizeof(dst->v[i]));+ }+}++static void store_block(void *output, const block *src) {+ unsigned i;+ for (i = 0; i < ARGON2_QWORDS_IN_BLOCK; ++i) {+ store64((uint8_t *)output + i * sizeof(src->v[i]), src->v[i]);+ }+}++/***************Memory functions*****************/+static +int allocate_memory(const argon2_context *context, uint8_t **memory,+ size_t num, size_t size) {+ size_t memory_size = num*size;+ if (memory == NULL) {+ return ARGON2_MEMORY_ALLOCATION_ERROR;+ }++ /* 1. Check for multiplication overflow */+ if (size != 0 && memory_size / size != num) {+ return ARGON2_MEMORY_ALLOCATION_ERROR;+ }++ /* 2. Try to allocate with appropriate allocator */+ if (context->allocate_cbk) {+ (context->allocate_cbk)(memory, memory_size);+ } else {+ *memory = malloc(memory_size);+ }++ if (*memory == NULL) {+ return ARGON2_MEMORY_ALLOCATION_ERROR;+ }++ return ARGON2_OK;+}+static +void free_memory(const argon2_context *context, uint8_t *memory,+ size_t num, size_t size) {+ size_t memory_size = num*size;+ clear_internal_memory(memory, memory_size);+ if (context->free_cbk) {+ (context->free_cbk)(memory, memory_size);+ } else {+ free(memory);+ }+}++void NOT_OPTIMIZED secure_wipe_memory(void *v, size_t n) {+#if defined(_MSC_VER) && VC_GE_2005(_MSC_VER)+ SecureZeroMemory(v, n);+#elif defined memset_s+ memset_s(v, n, 0, n);+#elif defined(__OpenBSD__)+ explicit_bzero(v, n);+#else+ static void *(*const volatile memset_sec)(void *, int, size_t) = &memset;+ memset_sec(v, 0, n);+#endif+}++/* Memory clear flag defaults to true. */+static int FLAG_clear_internal_memory = 1;+static void clear_internal_memory(void *v, size_t n) {+ if (FLAG_clear_internal_memory && v) {+ secure_wipe_memory(v, n);+ }+}++static void finalize(const argon2_context *context, argon2_instance_t *instance) {+ if (context != NULL && instance != NULL) {+ block blockhash;+ uint32_t l;++ copy_block(&blockhash, instance->memory + instance->lane_length - 1);++ /* XOR the last blocks */+ for (l = 1; l < instance->lanes; ++l) {+ uint32_t last_block_in_lane =+ l * instance->lane_length + (instance->lane_length - 1);+ xor_block(&blockhash, instance->memory + last_block_in_lane);+ }++ /* Hash the result */+ {+ uint8_t blockhash_bytes[ARGON2_BLOCK_SIZE];+ store_block(blockhash_bytes, &blockhash);+ blake2b_long(context->out, context->outlen, blockhash_bytes,+ ARGON2_BLOCK_SIZE);+ /* clear blockhash and blockhash_bytes */+ clear_internal_memory(blockhash.v, ARGON2_BLOCK_SIZE);+ clear_internal_memory(blockhash_bytes, ARGON2_BLOCK_SIZE);+ }++#ifdef GENKAT+ print_tag(context->out, context->outlen);+#endif++ free_memory(context, (uint8_t *)instance->memory,+ instance->memory_blocks, sizeof(block));+ }+}++static uint32_t index_alpha(const argon2_instance_t *instance,+ const argon2_position_t *position, uint32_t pseudo_rand,+ int same_lane) {+ /*+ * Pass 0:+ * This lane : all already finished segments plus already constructed+ * blocks in this segment+ * Other lanes : all already finished segments+ * Pass 1+:+ * This lane : (SYNC_POINTS - 1) last segments plus already constructed+ * blocks in this segment+ * Other lanes : (SYNC_POINTS - 1) last segments+ */+ uint32_t reference_area_size;+ uint64_t relative_position;+ uint32_t start_position, absolute_position;++ if (0 == position->pass) {+ /* First pass */+ if (0 == position->slice) {+ /* First slice */+ reference_area_size =+ position->index - 1; /* all but the previous */+ } else {+ if (same_lane) {+ /* The same lane => add current segment */+ reference_area_size =+ position->slice * instance->segment_length ++ position->index - 1;+ } else {+ reference_area_size =+ position->slice * instance->segment_length ++ ((position->index == 0) ? (-1) : 0);+ }+ }+ } else {+ /* Second pass */+ if (same_lane) {+ reference_area_size = instance->lane_length -+ instance->segment_length + position->index -+ 1;+ } else {+ reference_area_size = instance->lane_length -+ instance->segment_length ++ ((position->index == 0) ? (-1) : 0);+ }+ }++ /* 1.2.4. Mapping pseudo_rand to 0..<reference_area_size-1> and produce+ * relative position */+ relative_position = pseudo_rand;+ relative_position = relative_position * relative_position >> 32;+ relative_position = reference_area_size - 1 -+ (reference_area_size * relative_position >> 32);++ /* 1.2.5 Computing starting position */+ start_position = 0;++ if (0 != position->pass) {+ start_position = (position->slice == ARGON2_SYNC_POINTS - 1)+ ? 0+ : (position->slice + 1) * instance->segment_length;+ }++ /* 1.2.6. Computing absolute position */+ absolute_position = (start_position + relative_position) %+ instance->lane_length; /* absolute position */+ return absolute_position;+}++/* Single-threaded version for p=1 case */+static int fill_memory_blocks_st(argon2_instance_t *instance) {+ uint32_t r, s, l;++ for (r = 0; r < instance->passes; ++r) {+ for (s = 0; s < ARGON2_SYNC_POINTS; ++s) {+ for (l = 0; l < instance->lanes; ++l) {+ argon2_position_t position = {r, l, (uint8_t)s, 0};+ fill_segment(instance, position);+ }+ }+#ifdef GENKAT+ internal_kat(instance, r); /* Print all memory blocks */+#endif+ }+ return ARGON2_OK;+}++#if !defined(ARGON2_NO_THREADS)++#ifdef _WIN32+static unsigned __stdcall fill_segment_thr(void *thread_data)+#else+static void *fill_segment_thr(void *thread_data)+#endif+{+ argon2_thread_data *my_data = thread_data;+ fill_segment(my_data->instance_ptr, my_data->pos);+ argon2_thread_exit();+ return 0;+}++/* Multi-threaded version for p > 1 case */+static int fill_memory_blocks_mt(argon2_instance_t *instance) {+ uint32_t r, s;+ argon2_thread_handle_t *thread = NULL;+ argon2_thread_data *thr_data = NULL;+ int rc = ARGON2_OK;++ /* 1. Allocating space for threads */+ thread = calloc(instance->lanes, sizeof(argon2_thread_handle_t));+ if (thread == NULL) {+ rc = ARGON2_MEMORY_ALLOCATION_ERROR;+ goto fail;+ }++ thr_data = calloc(instance->lanes, sizeof(argon2_thread_data));+ if (thr_data == NULL) {+ rc = ARGON2_MEMORY_ALLOCATION_ERROR;+ goto fail;+ }++ for (r = 0; r < instance->passes; ++r) {+ for (s = 0; s < ARGON2_SYNC_POINTS; ++s) {+ uint32_t l;++ /* 2. Calling threads */+ for (l = 0; l < instance->lanes; ++l) {+ argon2_position_t position;++ /* 2.1 Join a thread if limit is exceeded */+ if (l >= instance->threads) {+ if (argon2_thread_join(thread[l - instance->threads])) {+ rc = ARGON2_THREAD_FAIL;+ goto fail;+ }+ }++ /* 2.2 Create thread */+ position.pass = r;+ position.lane = l;+ position.slice = (uint8_t)s;+ position.index = 0;+ thr_data[l].instance_ptr =+ instance; /* preparing the thread input */+ memcpy(&(thr_data[l].pos), &position,+ sizeof(argon2_position_t));+ if (argon2_thread_create(&thread[l], &fill_segment_thr,+ (void *)&thr_data[l])) {+ rc = ARGON2_THREAD_FAIL;+ goto fail;+ }++ /* fill_segment(instance, position); */+ /*Non-thread equivalent of the lines above */+ }++ /* 3. Joining remaining threads */+ for (l = instance->lanes - instance->threads; l < instance->lanes;+ ++l) {+ if (argon2_thread_join(thread[l])) {+ rc = ARGON2_THREAD_FAIL;+ goto fail;+ }+ }+ }++#ifdef GENKAT+ internal_kat(instance, r); /* Print all memory blocks */+#endif+ }++fail:+ if (thread != NULL) {+ free(thread);+ }+ if (thr_data != NULL) {+ free(thr_data);+ }+ return rc;+}++#endif /* ARGON2_NO_THREADS */+static +int fill_memory_blocks(argon2_instance_t *instance) {+ if (instance == NULL || instance->lanes == 0) {+ return ARGON2_INCORRECT_PARAMETER;+ }+#if defined(ARGON2_NO_THREADS)+ return fill_memory_blocks_st(instance);+#else+ return instance->threads == 1 ?+ fill_memory_blocks_st(instance) : fill_memory_blocks_mt(instance);+#endif+}+static +int validate_inputs(const argon2_context *context) {+ if (NULL == context) {+ return ARGON2_INCORRECT_PARAMETER;+ }++ if (NULL == context->out) {+ return ARGON2_OUTPUT_PTR_NULL;+ }++ /* Validate output length */+ if (ARGON2_MIN_OUTLEN > context->outlen) {+ return ARGON2_OUTPUT_TOO_SHORT;+ }++ if (ARGON2_MAX_OUTLEN < context->outlen) {+ return ARGON2_OUTPUT_TOO_LONG;+ }++ /* Validate password (required param) */+ if (NULL == context->pwd) {+ if (0 != context->pwdlen) {+ return ARGON2_PWD_PTR_MISMATCH;+ }+ }++ if (ARGON2_MIN_PWD_LENGTH > context->pwdlen) {+ return ARGON2_PWD_TOO_SHORT;+ }++ if (ARGON2_MAX_PWD_LENGTH < context->pwdlen) {+ return ARGON2_PWD_TOO_LONG;+ }++ /* Validate salt (required param) */+ if (NULL == context->salt) {+ if (0 != context->saltlen) {+ return ARGON2_SALT_PTR_MISMATCH;+ }+ }++ if (ARGON2_MIN_SALT_LENGTH > context->saltlen) {+ return ARGON2_SALT_TOO_SHORT;+ }++ if (ARGON2_MAX_SALT_LENGTH < context->saltlen) {+ return ARGON2_SALT_TOO_LONG;+ }++ /* Validate secret (optional param) */+ if (NULL == context->secret) {+ if (0 != context->secretlen) {+ return ARGON2_SECRET_PTR_MISMATCH;+ }+ } else {+ if (ARGON2_MIN_SECRET > context->secretlen) {+ return ARGON2_SECRET_TOO_SHORT;+ }+ if (ARGON2_MAX_SECRET < context->secretlen) {+ return ARGON2_SECRET_TOO_LONG;+ }+ }++ /* Validate associated data (optional param) */+ if (NULL == context->ad) {+ if (0 != context->adlen) {+ return ARGON2_AD_PTR_MISMATCH;+ }+ } else {+ if (ARGON2_MIN_AD_LENGTH > context->adlen) {+ return ARGON2_AD_TOO_SHORT;+ }+ if (ARGON2_MAX_AD_LENGTH < context->adlen) {+ return ARGON2_AD_TOO_LONG;+ }+ }++ /* Validate memory cost */+ if (ARGON2_MIN_MEMORY > context->m_cost) {+ return ARGON2_MEMORY_TOO_LITTLE;+ }++ if (ARGON2_MAX_MEMORY < context->m_cost) {+ return ARGON2_MEMORY_TOO_MUCH;+ }++ if (context->m_cost < 8 * context->lanes) {+ return ARGON2_MEMORY_TOO_LITTLE;+ }++ /* Validate time cost */+ if (ARGON2_MIN_TIME > context->t_cost) {+ return ARGON2_TIME_TOO_SMALL;+ }++ if (ARGON2_MAX_TIME < context->t_cost) {+ return ARGON2_TIME_TOO_LARGE;+ }++ /* Validate lanes */+ if (ARGON2_MIN_LANES > context->lanes) {+ return ARGON2_LANES_TOO_FEW;+ }++ if (ARGON2_MAX_LANES < context->lanes) {+ return ARGON2_LANES_TOO_MANY;+ }++ /* Validate threads */+ if (ARGON2_MIN_THREADS > context->threads) {+ return ARGON2_THREADS_TOO_FEW;+ }++ if (ARGON2_MAX_THREADS < context->threads) {+ return ARGON2_THREADS_TOO_MANY;+ }++ if (NULL != context->allocate_cbk && NULL == context->free_cbk) {+ return ARGON2_FREE_MEMORY_CBK_NULL;+ }++ if (NULL == context->allocate_cbk && NULL != context->free_cbk) {+ return ARGON2_ALLOCATE_MEMORY_CBK_NULL;+ }++ return ARGON2_OK;+}+static +void fill_first_blocks(uint8_t *blockhash, const argon2_instance_t *instance) {+ uint32_t l;+ /* Make the first and second block in each lane as G(H0||i||0) or+ G(H0||i||1) */+ uint8_t blockhash_bytes[ARGON2_BLOCK_SIZE];+ for (l = 0; l < instance->lanes; ++l) {++ store32(blockhash + ARGON2_PREHASH_DIGEST_LENGTH, 0);+ store32(blockhash + ARGON2_PREHASH_DIGEST_LENGTH + 4, l);+ blake2b_long(blockhash_bytes, ARGON2_BLOCK_SIZE, blockhash,+ ARGON2_PREHASH_SEED_LENGTH);+ load_block(&instance->memory[l * instance->lane_length + 0],+ blockhash_bytes);++ store32(blockhash + ARGON2_PREHASH_DIGEST_LENGTH, 1);+ blake2b_long(blockhash_bytes, ARGON2_BLOCK_SIZE, blockhash,+ ARGON2_PREHASH_SEED_LENGTH);+ load_block(&instance->memory[l * instance->lane_length + 1],+ blockhash_bytes);+ }+ clear_internal_memory(blockhash_bytes, ARGON2_BLOCK_SIZE);+}+static +void initial_hash(uint8_t *blockhash, argon2_context *context,+ argon2_type type) {+ blake2b_state BlakeHash;+ uint8_t value[sizeof(uint32_t)];++ if (NULL == context || NULL == blockhash) {+ return;+ }++ blake2b_init(&BlakeHash, ARGON2_PREHASH_DIGEST_LENGTH);++ store32(&value, context->lanes);+ blake2b_update(&BlakeHash, (const uint8_t *)&value, sizeof(value));++ store32(&value, context->outlen);+ blake2b_update(&BlakeHash, (const uint8_t *)&value, sizeof(value));++ store32(&value, context->m_cost);+ blake2b_update(&BlakeHash, (const uint8_t *)&value, sizeof(value));++ store32(&value, context->t_cost);+ blake2b_update(&BlakeHash, (const uint8_t *)&value, sizeof(value));++ store32(&value, context->version);+ blake2b_update(&BlakeHash, (const uint8_t *)&value, sizeof(value));++ store32(&value, (uint32_t)type);+ blake2b_update(&BlakeHash, (const uint8_t *)&value, sizeof(value));++ store32(&value, context->pwdlen);+ blake2b_update(&BlakeHash, (const uint8_t *)&value, sizeof(value));++ if (context->pwd != NULL) {+ blake2b_update(&BlakeHash, (const uint8_t *)context->pwd,+ context->pwdlen);++ if (context->flags & ARGON2_FLAG_CLEAR_PASSWORD) {+ secure_wipe_memory(context->pwd, context->pwdlen);+ context->pwdlen = 0;+ }+ }++ store32(&value, context->saltlen);+ blake2b_update(&BlakeHash, (const uint8_t *)&value, sizeof(value));++ if (context->salt != NULL) {+ blake2b_update(&BlakeHash, (const uint8_t *)context->salt,+ context->saltlen);+ }++ store32(&value, context->secretlen);+ blake2b_update(&BlakeHash, (const uint8_t *)&value, sizeof(value));++ if (context->secret != NULL) {+ blake2b_update(&BlakeHash, (const uint8_t *)context->secret,+ context->secretlen);++ if (context->flags & ARGON2_FLAG_CLEAR_SECRET) {+ secure_wipe_memory(context->secret, context->secretlen);+ context->secretlen = 0;+ }+ }++ store32(&value, context->adlen);+ blake2b_update(&BlakeHash, (const uint8_t *)&value, sizeof(value));++ if (context->ad != NULL) {+ blake2b_update(&BlakeHash, (const uint8_t *)context->ad,+ context->adlen);+ }++ blake2b_final(&BlakeHash, blockhash, ARGON2_PREHASH_DIGEST_LENGTH);+}+static +int initialize(argon2_instance_t *instance, argon2_context *context) {+ uint8_t blockhash[ARGON2_PREHASH_SEED_LENGTH];+ int result = ARGON2_OK;++ if (instance == NULL || context == NULL)+ return ARGON2_INCORRECT_PARAMETER;+ instance->context_ptr = context;++ /* 1. Memory allocation */+ result = allocate_memory(context, (uint8_t **)&(instance->memory),+ instance->memory_blocks, sizeof(block));+ if (result != ARGON2_OK) {+ return result;+ }++ /* 2. Initial hashing */+ /* H_0 + 8 extra bytes to produce the first blocks */+ /* uint8_t blockhash[ARGON2_PREHASH_SEED_LENGTH]; */+ /* Hashing all inputs */+ initial_hash(blockhash, context, instance->type);+ /* Zeroing 8 extra bytes */+ clear_internal_memory(blockhash + ARGON2_PREHASH_DIGEST_LENGTH,+ ARGON2_PREHASH_SEED_LENGTH -+ ARGON2_PREHASH_DIGEST_LENGTH);++#ifdef GENKAT+ initial_kat(blockhash, context, instance->type);+#endif++ /* 3. Creating first blocks, we always have at least two blocks in a slice+ */+ fill_first_blocks(blockhash, instance);+ /* Clearing the hash */+ clear_internal_memory(blockhash, ARGON2_PREHASH_SEED_LENGTH);++ return ARGON2_OK;+}
+ cbits/argon2/core.h view
@@ -0,0 +1,234 @@+/*+ * Argon2 reference source code package - reference C implementations+ *+ * Copyright 2015+ * Daniel Dinu, Dmitry Khovratovich, Jean-Philippe Aumasson, and Samuel Neves+ *+ * You may use this work under the terms of a Creative Commons CC0 1.0 + * License/Waiver or the Apache Public License 2.0, at your option. The terms of+ * these licenses can be found at:+ *+ * - CC0 1.0 Universal : http://creativecommons.org/publicdomain/zero/1.0+ * - Apache 2.0 : http://www.apache.org/licenses/LICENSE-2.0+ *+ * You should have received a copy of both of these licenses along with this+ * software. If not, they may be obtained at the above URLs.+ */++#ifndef ARGON2_CORE_H+#define ARGON2_CORE_H++#include "argon2.h"++#if defined(_MSC_VER)+#define ALIGN(n) __declspec(align(16))+#elif defined(__GNUC__) || defined(__clang)+#define ALIGN(x) __attribute__((__aligned__(x)))+#else+#define ALIGN(x)+#endif++#define CONST_CAST(x) (x)(uintptr_t)++/**********************Argon2 internal constants*******************************/++enum argon2_core_constants {+ /* Memory block size in bytes */+ ARGON2_BLOCK_SIZE = 1024,+ ARGON2_QWORDS_IN_BLOCK = ARGON2_BLOCK_SIZE / 8,+ ARGON2_OWORDS_IN_BLOCK = ARGON2_BLOCK_SIZE / 16,++ /* Number of pseudo-random values generated by one call to Blake in Argon2i+ to+ generate reference block positions */+ ARGON2_ADDRESSES_IN_BLOCK = 128,++ /* Pre-hashing digest length and its extension*/+ ARGON2_PREHASH_DIGEST_LENGTH = 64,+ ARGON2_PREHASH_SEED_LENGTH = 72+};++/*************************Argon2 internal data types***********************/++/*+ * Structure for the (1KB) memory block implemented as 128 64-bit words.+ * Memory blocks can be copied, XORed. Internal words can be accessed by [] (no+ * bounds checking).+ */+typedef struct block_ { uint64_t v[ARGON2_QWORDS_IN_BLOCK]; } block;++/*****************Functions that work with the block******************/++/* Initialize each byte of the block with @in */+static void init_block_value(block *b, uint8_t in);++/* Copy block @src to block @dst */+static void copy_block(block *dst, const block *src);++/* XOR @src onto @dst bytewise */+static void xor_block(block *dst, const block *src);++/*+ * Argon2 instance: memory pointer, number of passes, amount of memory, type,+ * and derived values.+ * Used to evaluate the number and location of blocks to construct in each+ * thread+ */+typedef struct Argon2_instance_t {+ block *memory; /* Memory pointer */+ uint32_t version;+ uint32_t passes; /* Number of passes */+ uint32_t memory_blocks; /* Number of blocks in memory */+ uint32_t segment_length;+ uint32_t lane_length;+ uint32_t lanes;+ uint32_t threads;+ argon2_type type;+ int print_internals; /* whether to print the memory blocks */+ argon2_context *context_ptr; /* points back to original context */+} argon2_instance_t;++/*+ * Argon2 position: where we construct the block right now. Used to distribute+ * work between threads.+ */+typedef struct Argon2_position_t {+ uint32_t pass;+ uint32_t lane;+ uint8_t slice;+ uint32_t index;+} argon2_position_t;++/*Struct that holds the inputs for thread handling FillSegment*/+typedef struct Argon2_thread_data {+ argon2_instance_t *instance_ptr;+ argon2_position_t pos;+} argon2_thread_data;++/*************************Argon2 core functions********************************/++/* Allocates memory to the given pointer, uses the appropriate allocator as+ * specified in the context. Total allocated memory is num*size.+ * @param context argon2_context which specifies the allocator+ * @param memory pointer to the pointer to the memory+ * @param size the size in bytes for each element to be allocated+ * @param num the number of elements to be allocated+ * @return ARGON2_OK if @memory is a valid pointer and memory is allocated+ */+static int allocate_memory(const argon2_context *context, uint8_t **memory,+ size_t num, size_t size);++/*+ * Frees memory at the given pointer, uses the appropriate deallocator as+ * specified in the context. Also cleans the memory using clear_internal_memory.+ * @param context argon2_context which specifies the deallocator+ * @param memory pointer to buffer to be freed+ * @param size the size in bytes for each element to be deallocated+ * @param num the number of elements to be deallocated+ */+static void free_memory(const argon2_context *context, uint8_t *memory,+ size_t num, size_t size);++/* Function that securely cleans the memory. This ignores any flags set+ * regarding clearing memory. Usually one just calls clear_internal_memory.+ * @param mem Pointer to the memory+ * @param s Memory size in bytes+ */+static void secure_wipe_memory(void *v, size_t n);++/* Function that securely clears the memory if FLAG_clear_internal_memory is+ * set. If the flag isn't set, this function does nothing.+ * @param mem Pointer to the memory+ * @param s Memory size in bytes+ */+static void clear_internal_memory(void *v, size_t n);++/*+ * Computes absolute position of reference block in the lane following a skewed+ * distribution and using a pseudo-random value as input+ * @param instance Pointer to the current instance+ * @param position Pointer to the current position+ * @param pseudo_rand 32-bit pseudo-random value used to determine the position+ * @param same_lane Indicates if the block will be taken from the current lane.+ * If so we can reference the current segment+ * @pre All pointers must be valid+ */+static uint32_t index_alpha(const argon2_instance_t *instance,+ const argon2_position_t *position, uint32_t pseudo_rand,+ int same_lane);++/*+ * Function that validates all inputs against predefined restrictions and return+ * an error code+ * @param context Pointer to current Argon2 context+ * @return ARGON2_OK if everything is all right, otherwise one of error codes+ * (all defined in <argon2.h>+ */+static int validate_inputs(const argon2_context *context);++/*+ * Hashes all the inputs into @a blockhash[PREHASH_DIGEST_LENGTH], clears+ * password and secret if needed+ * @param context Pointer to the Argon2 internal structure containing memory+ * pointer, and parameters for time and space requirements.+ * @param blockhash Buffer for pre-hashing digest+ * @param type Argon2 type+ * @pre @a blockhash must have at least @a PREHASH_DIGEST_LENGTH bytes+ * allocated+ */+static void initial_hash(uint8_t *blockhash, argon2_context *context,+ argon2_type type);++/*+ * Function creates first 2 blocks per lane+ * @param instance Pointer to the current instance+ * @param blockhash Pointer to the pre-hashing digest+ * @pre blockhash must point to @a PREHASH_SEED_LENGTH allocated values+ */+static void fill_first_blocks(uint8_t *blockhash, const argon2_instance_t *instance);++/*+ * Function allocates memory, hashes the inputs with Blake, and creates first+ * two blocks. Returns the pointer to the main memory with 2 blocks per lane+ * initialized+ * @param context Pointer to the Argon2 internal structure containing memory+ * pointer, and parameters for time and space requirements.+ * @param instance Current Argon2 instance+ * @return Zero if successful, -1 if memory failed to allocate. @context->state+ * will be modified if successful.+ */+static int initialize(argon2_instance_t *instance, argon2_context *context);++/*+ * XORing the last block of each lane, hashing it, making the tag. Deallocates+ * the memory.+ * @param context Pointer to current Argon2 context (use only the out parameters+ * from it)+ * @param instance Pointer to current instance of Argon2+ * @pre instance->state must point to necessary amount of memory+ * @pre context->out must point to outlen bytes of memory+ * @pre if context->free_cbk is not NULL, it should point to a function that+ * deallocates memory+ */+static void finalize(const argon2_context *context, argon2_instance_t *instance);++/*+ * Function that fills the segment using previous segments also from other+ * threads+ * @param context current context+ * @param instance Pointer to the current instance+ * @param position Current position+ * @pre all block pointers must be valid+ */+static void fill_segment(const argon2_instance_t *instance,+ argon2_position_t position);++/*+ * Function that fills the entire memory t_cost times based on the first two+ * blocks in each lane+ * @param instance Pointer to the current instance+ * @return ARGON2_OK if successful, @context->state+ */+static int fill_memory_blocks(argon2_instance_t *instance);++#endif
+ cbits/argon2/opt.c view
@@ -0,0 +1,186 @@+/*+ * Argon2 reference source code package - reference C implementations+ *+ * Copyright 2015+ * Daniel Dinu, Dmitry Khovratovich, Jean-Philippe Aumasson, and Samuel Neves+ *+ * You may use this work under the terms of a Creative Commons CC0 1.0 + * License/Waiver or the Apache Public License 2.0, at your option. The terms of+ * these licenses can be found at:+ *+ * - CC0 1.0 Universal : http://creativecommons.org/publicdomain/zero/1.0+ * - Apache 2.0 : http://www.apache.org/licenses/LICENSE-2.0+ *+ * You should have received a copy of both of these licenses along with this+ * software. If not, they may be obtained at the above URLs.+ */++#include <stdint.h>+#include <string.h>+#include <stdlib.h>++#include "argon2.h"+#include "opt.h"++#include "blake2/blake2.h"+#include "blake2/blamka-round-opt.h"++static void fill_block(__m128i *state, const block *ref_block, block *next_block,+ int with_xor) {+ __m128i block_XY[ARGON2_OWORDS_IN_BLOCK];+ unsigned int i;++ if (with_xor) {+ for (i = 0; i < ARGON2_OWORDS_IN_BLOCK; i++) {+ state[i] = _mm_xor_si128(+ state[i], _mm_loadu_si128((const __m128i *)ref_block->v + i));+ block_XY[i] = _mm_xor_si128(+ state[i], _mm_loadu_si128((const __m128i *)next_block->v + i));+ }+ } else {+ for (i = 0; i < ARGON2_OWORDS_IN_BLOCK; i++) {+ block_XY[i] = state[i] = _mm_xor_si128(+ state[i], _mm_loadu_si128((const __m128i *)ref_block->v + i));+ }+ }++ for (i = 0; i < 8; ++i) {+ BLAKE2_ROUND(state[8 * i + 0], state[8 * i + 1], state[8 * i + 2],+ state[8 * i + 3], state[8 * i + 4], state[8 * i + 5],+ state[8 * i + 6], state[8 * i + 7]);+ }++ for (i = 0; i < 8; ++i) {+ BLAKE2_ROUND(state[8 * 0 + i], state[8 * 1 + i], state[8 * 2 + i],+ state[8 * 3 + i], state[8 * 4 + i], state[8 * 5 + i],+ state[8 * 6 + i], state[8 * 7 + i]);+ }++ for (i = 0; i < ARGON2_OWORDS_IN_BLOCK; i++) {+ state[i] = _mm_xor_si128(state[i], block_XY[i]);+ _mm_storeu_si128((__m128i *)next_block->v + i, state[i]);+ }+}++static void next_addresses(block *address_block, block *input_block) {+ /*Temporary zero-initialized blocks*/+ __m128i zero_block[ARGON2_OWORDS_IN_BLOCK];+ __m128i zero2_block[ARGON2_OWORDS_IN_BLOCK];++ memset(zero_block, 0, sizeof(zero_block));+ memset(zero2_block, 0, sizeof(zero2_block));++ /*Increasing index counter*/+ input_block->v[6]++;++ /*First iteration of G*/+ fill_block(zero_block, input_block, address_block, 0);++ /*Second iteration of G*/+ fill_block(zero2_block, address_block, address_block, 0);+}++static void fill_segment(const argon2_instance_t *instance,+ argon2_position_t position) {+ block *ref_block = NULL, *curr_block = NULL;+ block address_block, input_block;+ uint64_t pseudo_rand, ref_index, ref_lane;+ uint32_t prev_offset, curr_offset;+ uint32_t starting_index, i;+ __m128i state[64];+ int data_independent_addressing;++ if (instance == NULL) {+ return;+ }++ data_independent_addressing =+ (instance->type == Argon2_i) ||+ (instance->type == Argon2_id && (position.pass == 0) &&+ (position.slice < ARGON2_SYNC_POINTS / 2));++ if (data_independent_addressing) {+ init_block_value(&input_block, 0);++ input_block.v[0] = position.pass;+ input_block.v[1] = position.lane;+ input_block.v[2] = position.slice;+ input_block.v[3] = instance->memory_blocks;+ input_block.v[4] = instance->passes;+ input_block.v[5] = instance->type;+ }++ starting_index = 0;++ if ((0 == position.pass) && (0 == position.slice)) {+ starting_index = 2; /* we have already generated the first two blocks */++ /* Don't forget to generate the first block of addresses: */+ if (data_independent_addressing) {+ next_addresses(&address_block, &input_block);+ }+ }++ /* Offset of the current block */+ curr_offset = position.lane * instance->lane_length ++ position.slice * instance->segment_length + starting_index;++ if (0 == curr_offset % instance->lane_length) {+ /* Last block in this lane */+ prev_offset = curr_offset + instance->lane_length - 1;+ } else {+ /* Previous block */+ prev_offset = curr_offset - 1;+ }++ memcpy(state, ((instance->memory + prev_offset)->v), ARGON2_BLOCK_SIZE);++ for (i = starting_index; i < instance->segment_length;+ ++i, ++curr_offset, ++prev_offset) {+ /*1.1 Rotating prev_offset if needed */+ if (curr_offset % instance->lane_length == 1) {+ prev_offset = curr_offset - 1;+ }++ /* 1.2 Computing the index of the reference block */+ /* 1.2.1 Taking pseudo-random value from the previous block */+ if (data_independent_addressing) {+ if (i % ARGON2_ADDRESSES_IN_BLOCK == 0) {+ next_addresses(&address_block, &input_block);+ }+ pseudo_rand = address_block.v[i % ARGON2_ADDRESSES_IN_BLOCK];+ } else {+ pseudo_rand = instance->memory[prev_offset].v[0];+ }++ /* 1.2.2 Computing the lane of the reference block */+ ref_lane = ((pseudo_rand >> 32)) % instance->lanes;++ if ((position.pass == 0) && (position.slice == 0)) {+ /* Can not reference other lanes yet */+ ref_lane = position.lane;+ }++ /* 1.2.3 Computing the number of possible reference block within the+ * lane.+ */+ position.index = i;+ ref_index = index_alpha(instance, &position, pseudo_rand & 0xFFFFFFFF,+ ref_lane == position.lane);++ /* 2 Creating a new block */+ ref_block =+ instance->memory + instance->lane_length * ref_lane + ref_index;+ curr_block = instance->memory + curr_offset;+ if (ARGON2_VERSION_10 == instance->version) {+ /* version 1.2.1 and earlier: overwrite, not XOR */+ fill_block(state, ref_block, curr_block, 0);+ } else {+ if(0 == position.pass) {+ fill_block(state, ref_block, curr_block, 0);+ } else {+ fill_block(state, ref_block, curr_block, 1);+ }+ }+ }+}
+ cbits/argon2/opt.h view
@@ -0,0 +1,35 @@+/*+ * Argon2 reference source code package - reference C implementations+ *+ * Copyright 2015+ * Daniel Dinu, Dmitry Khovratovich, Jean-Philippe Aumasson, and Samuel Neves+ *+ * You may use this work under the terms of a Creative Commons CC0 1.0 + * License/Waiver or the Apache Public License 2.0, at your option. The terms of+ * these licenses can be found at:+ *+ * - CC0 1.0 Universal : http://creativecommons.org/publicdomain/zero/1.0+ * - Apache 2.0 : http://www.apache.org/licenses/LICENSE-2.0+ *+ * You should have received a copy of both of these licenses along with this+ * software. If not, they may be obtained at the above URLs.+ */++#ifndef ARGON2_OPT_H+#define ARGON2_OPT_H++#include "core.h"+#include <emmintrin.h>++/*+ * Function fills a new memory block and optionally XORs the old block over the new one.+ * Memory must be initialized.+ * @param state Pointer to the just produced block. Content will be updated(!)+ * @param ref_block Pointer to the reference block+ * @param next_block Pointer to the block to be XORed over. May coincide with @ref_block+ * @param with_xor Whether to XOR into the new block (1) or just overwrite (0)+ * @pre all block pointers must be valid+ */+static void fill_block(__m128i *s, const block *ref_block, block *next_block, int with_xor);++#endif /* ARGON2_OPT_H */
+ cbits/argon2/ref.c view
@@ -0,0 +1,185 @@+/*+ * Argon2 reference source code package - reference C implementations+ *+ * Copyright 2015+ * Daniel Dinu, Dmitry Khovratovich, Jean-Philippe Aumasson, and Samuel Neves+ *+ * You may use this work under the terms of a Creative Commons CC0 1.0 + * License/Waiver or the Apache Public License 2.0, at your option. The terms of+ * these licenses can be found at:+ *+ * - CC0 1.0 Universal : http://creativecommons.org/publicdomain/zero/1.0+ * - Apache 2.0 : http://www.apache.org/licenses/LICENSE-2.0+ *+ * You should have received a copy of both of these licenses along with this+ * software. If not, they may be obtained at the above URLs.+ */++#include <stdint.h>+#include <string.h>+#include <stdlib.h>++#include "argon2.h"+#include "ref.h"++#include "blamka-round-ref.h"+#include "blake2-impl.h"+#include "blake2.h"+++static void fill_block(const block *prev_block, const block *ref_block,+ block *next_block, int with_xor) {+ block blockR, block_tmp;+ unsigned i;++ copy_block(&blockR, ref_block);+ xor_block(&blockR, prev_block);+ copy_block(&block_tmp, &blockR);+ /* Now blockR = ref_block + prev_block and block_tmp = ref_block + prev_block */+ if (with_xor) {+ /* Saving the next block contents for XOR over: */+ xor_block(&block_tmp, next_block);+ /* Now blockR = ref_block + prev_block and+ block_tmp = ref_block + prev_block + next_block */+ }++ /* Apply Blake2 on columns of 64-bit words: (0,1,...,15) , then+ (16,17,..31)... finally (112,113,...127) */+ for (i = 0; i < 8; ++i) {+ BLAKE2_ROUND_NOMSG(+ blockR.v[16 * i], blockR.v[16 * i + 1], blockR.v[16 * i + 2],+ blockR.v[16 * i + 3], blockR.v[16 * i + 4], blockR.v[16 * i + 5],+ blockR.v[16 * i + 6], blockR.v[16 * i + 7], blockR.v[16 * i + 8],+ blockR.v[16 * i + 9], blockR.v[16 * i + 10], blockR.v[16 * i + 11],+ blockR.v[16 * i + 12], blockR.v[16 * i + 13], blockR.v[16 * i + 14],+ blockR.v[16 * i + 15]);+ }++ /* Apply Blake2 on rows of 64-bit words: (0,1,16,17,...112,113), then+ (2,3,18,19,...,114,115).. finally (14,15,30,31,...,126,127) */+ for (i = 0; i < 8; i++) {+ BLAKE2_ROUND_NOMSG(+ blockR.v[2 * i], blockR.v[2 * i + 1], blockR.v[2 * i + 16],+ blockR.v[2 * i + 17], blockR.v[2 * i + 32], blockR.v[2 * i + 33],+ blockR.v[2 * i + 48], blockR.v[2 * i + 49], blockR.v[2 * i + 64],+ blockR.v[2 * i + 65], blockR.v[2 * i + 80], blockR.v[2 * i + 81],+ blockR.v[2 * i + 96], blockR.v[2 * i + 97], blockR.v[2 * i + 112],+ blockR.v[2 * i + 113]);+ }++ copy_block(next_block, &block_tmp);+ xor_block(next_block, &blockR);+}++static void next_addresses(block *address_block, block *input_block,+ const block *zero_block) {+ input_block->v[6]++;+ fill_block(zero_block, input_block, address_block, 0);+ fill_block(zero_block, address_block, address_block, 0);+}++static void fill_segment(const argon2_instance_t *instance,+ argon2_position_t position) {+ block *ref_block = NULL, *curr_block = NULL;+ block address_block, input_block, zero_block;+ uint64_t pseudo_rand, ref_index, ref_lane;+ uint32_t prev_offset, curr_offset;+ uint32_t starting_index;+ uint32_t i;+ int data_independent_addressing;++ if (instance == NULL) {+ return;+ }++ data_independent_addressing =+ (instance->type == Argon2_i) ||+ (instance->type == Argon2_id && (position.pass == 0) &&+ (position.slice < ARGON2_SYNC_POINTS / 2));++ if (data_independent_addressing) {+ init_block_value(&zero_block, 0);+ init_block_value(&input_block, 0);++ input_block.v[0] = position.pass;+ input_block.v[1] = position.lane;+ input_block.v[2] = position.slice;+ input_block.v[3] = instance->memory_blocks;+ input_block.v[4] = instance->passes;+ input_block.v[5] = instance->type;+ }++ starting_index = 0;++ if ((0 == position.pass) && (0 == position.slice)) {+ starting_index = 2; /* we have already generated the first two blocks */++ /* Don't forget to generate the first block of addresses: */+ if (data_independent_addressing) {+ next_addresses(&address_block, &input_block, &zero_block);+ }+ }++ /* Offset of the current block */+ curr_offset = position.lane * instance->lane_length ++ position.slice * instance->segment_length + starting_index;++ if (0 == curr_offset % instance->lane_length) {+ /* Last block in this lane */+ prev_offset = curr_offset + instance->lane_length - 1;+ } else {+ /* Previous block */+ prev_offset = curr_offset - 1;+ }++ for (i = starting_index; i < instance->segment_length;+ ++i, ++curr_offset, ++prev_offset) {+ /*1.1 Rotating prev_offset if needed */+ if (curr_offset % instance->lane_length == 1) {+ prev_offset = curr_offset - 1;+ }++ /* 1.2 Computing the index of the reference block */+ /* 1.2.1 Taking pseudo-random value from the previous block */+ if (data_independent_addressing) {+ if (i % ARGON2_ADDRESSES_IN_BLOCK == 0) {+ next_addresses(&address_block, &input_block, &zero_block);+ }+ pseudo_rand = address_block.v[i % ARGON2_ADDRESSES_IN_BLOCK];+ } else {+ pseudo_rand = instance->memory[prev_offset].v[0];+ }++ /* 1.2.2 Computing the lane of the reference block */+ ref_lane = ((pseudo_rand >> 32)) % instance->lanes;++ if ((position.pass == 0) && (position.slice == 0)) {+ /* Can not reference other lanes yet */+ ref_lane = position.lane;+ }++ /* 1.2.3 Computing the number of possible reference block within the+ * lane.+ */+ position.index = i;+ ref_index = index_alpha(instance, &position, pseudo_rand & 0xFFFFFFFF,+ ref_lane == position.lane);++ /* 2 Creating a new block */+ ref_block =+ instance->memory + instance->lane_length * ref_lane + ref_index;+ curr_block = instance->memory + curr_offset;+ if (ARGON2_VERSION_10 == instance->version) {+ /* version 1.2.1 and earlier: overwrite, not XOR */+ fill_block(instance->memory + prev_offset, ref_block, curr_block, 0);+ } else {+ if(0 == position.pass) {+ fill_block(instance->memory + prev_offset, ref_block,+ curr_block, 0);+ } else {+ fill_block(instance->memory + prev_offset, ref_block,+ curr_block, 1);+ }+ }+ }+}
+ cbits/argon2/ref.h view
@@ -0,0 +1,35 @@+/*+ * Argon2 reference source code package - reference C implementations+ *+ * Copyright 2015+ * Daniel Dinu, Dmitry Khovratovich, Jean-Philippe Aumasson, and Samuel Neves+ *+ * You may use this work under the terms of a Creative Commons CC0 1.0 + * License/Waiver or the Apache Public License 2.0, at your option. The terms of+ * these licenses can be found at:+ *+ * - CC0 1.0 Universal : http://creativecommons.org/publicdomain/zero/1.0+ * - Apache 2.0 : http://www.apache.org/licenses/LICENSE-2.0+ *+ * You should have received a copy of both of these licenses along with this+ * software. If not, they may be obtained at the above URLs.+ */++#ifndef ARGON2_REF_H+#define ARGON2_REF_H++#include "core.h"++/*+ * Function fills a new memory block and optionally XORs the old block over the new one.+ * @next_block must be initialized.+ * @param prev_block Pointer to the previous block+ * @param ref_block Pointer to the reference block+ * @param next_block Pointer to the block to be constructed+ * @param with_xor Whether to XOR into the new block (1) or just overwrite (0)+ * @pre all block pointers must be valid+ */+static void fill_block(const block *prev_block, const block *ref_block,+ block *next_block, int with_xor);++#endif /* ARGON2_REF_H */
+ cbits/argon2/thread.c view
@@ -0,0 +1,57 @@+/*+ * Argon2 reference source code package - reference C implementations+ *+ * Copyright 2015+ * Daniel Dinu, Dmitry Khovratovich, Jean-Philippe Aumasson, and Samuel Neves+ *+ * You may use this work under the terms of a Creative Commons CC0 1.0 + * License/Waiver or the Apache Public License 2.0, at your option. The terms of+ * these licenses can be found at:+ *+ * - CC0 1.0 Universal : http://creativecommons.org/publicdomain/zero/1.0+ * - Apache 2.0 : http://www.apache.org/licenses/LICENSE-2.0+ *+ * You should have received a copy of both of these licenses along with this+ * software. If not, they may be obtained at the above URLs.+ */++#if !defined(ARGON2_NO_THREADS)++#include "thread.h"+#if defined(_WIN32)+#include <windows.h>+#endif++static int argon2_thread_create(argon2_thread_handle_t *handle,+ argon2_thread_func_t func, void *args) {+ if (NULL == handle || func == NULL) {+ return -1;+ }+#if defined(_WIN32)+ *handle = _beginthreadex(NULL, 0, func, args, 0, NULL);+ return *handle != 0 ? 0 : -1;+#else+ return pthread_create(handle, NULL, func, args);+#endif+}++static int argon2_thread_join(argon2_thread_handle_t handle) {+#if defined(_WIN32)+ if (WaitForSingleObject((HANDLE)handle, INFINITE) == WAIT_OBJECT_0) {+ return CloseHandle((HANDLE)handle) != 0 ? 0 : -1;+ }+ return -1;+#else+ return pthread_join(handle, NULL);+#endif+}++static void argon2_thread_exit(void) {+#if defined(_WIN32)+ _endthreadex(0);+#else+ pthread_exit(NULL);+#endif+}++#endif /* ARGON2_NO_THREADS */
+ cbits/argon2/thread.h view
@@ -0,0 +1,67 @@+/*+ * Argon2 reference source code package - reference C implementations+ *+ * Copyright 2015+ * Daniel Dinu, Dmitry Khovratovich, Jean-Philippe Aumasson, and Samuel Neves+ *+ * You may use this work under the terms of a Creative Commons CC0 1.0 + * License/Waiver or the Apache Public License 2.0, at your option. The terms of+ * these licenses can be found at:+ *+ * - CC0 1.0 Universal : http://creativecommons.org/publicdomain/zero/1.0+ * - Apache 2.0 : http://www.apache.org/licenses/LICENSE-2.0+ *+ * You should have received a copy of both of these licenses along with this+ * software. If not, they may be obtained at the above URLs.+ */++#ifndef ARGON2_THREAD_H+#define ARGON2_THREAD_H++#if !defined(ARGON2_NO_THREADS)++/*+ Here we implement an abstraction layer for the simpĺe requirements+ of the Argon2 code. We only require 3 primitives---thread creation,+ joining, and termination---so full emulation of the pthreads API+ is unwarranted. Currently we wrap pthreads and Win32 threads.++ The API defines 2 types: the function pointer type,+ argon2_thread_func_t,+ and the type of the thread handle---argon2_thread_handle_t.+*/+#if defined(_WIN32)+#include <process.h>+typedef unsigned(__stdcall *argon2_thread_func_t)(void *);+typedef uintptr_t argon2_thread_handle_t;+#else+#include <pthread.h>+typedef void *(*argon2_thread_func_t)(void *);+typedef pthread_t argon2_thread_handle_t;+#endif++/* Creates a thread+ * @param handle pointer to a thread handle, which is the output of this+ * function. Must not be NULL.+ * @param func A function pointer for the thread's entry point. Must not be+ * NULL.+ * @param args Pointer that is passed as an argument to @func. May be NULL.+ * @return 0 if @handle and @func are valid pointers and a thread is successfuly+ * created.+ */+static int argon2_thread_create(argon2_thread_handle_t *handle,+ argon2_thread_func_t func, void *args);++/* Waits for a thread to terminate+ * @param handle Handle to a thread created with argon2_thread_create.+ * @return 0 if @handle is a valid handle, and joining completed successfully.+*/+static int argon2_thread_join(argon2_thread_handle_t handle);++/* Terminate the current thread. Must be run inside a thread created by+ * argon2_thread_create.+*/+static void argon2_thread_exit(void);++#endif /* ARGON2_NO_THREADS */+#endif
cbits/blake2/ref/blake2-impl.h view
@@ -1,23 +1,36 @@ /* BLAKE2 reference source code package - reference C implementations - Written in 2012 by Samuel Neves <sneves@dei.uc.pt>+ Copyright 2012, Samuel Neves <sneves@dei.uc.pt>. You may use this under the+ terms of the CC0, the OpenSSL Licence, or the Apache Public License 2.0, at+ your option. The terms of these licenses can be found at: - To the extent possible under law, the author(s) have dedicated all copyright- and related and neighboring rights to this software to the public domain- worldwide. This software is distributed without any warranty.+ - CC0 1.0 Universal : http://creativecommons.org/publicdomain/zero/1.0+ - OpenSSL license : https://www.openssl.org/source/license.html+ - Apache 2.0 : http://www.apache.org/licenses/LICENSE-2.0 - You should have received a copy of the CC0 Public Domain Dedication along with- this software. If not, see <http://creativecommons.org/publicdomain/zero/1.0/>.+ More information about the BLAKE2 hash function can be found at+ https://blake2.net. */-#pragma once-#ifndef __BLAKE2_IMPL_H__-#define __BLAKE2_IMPL_H__+#ifndef BLAKE2_IMPL_H+#define BLAKE2_IMPL_H #include <stdint.h> #include <string.h> -static inline uint32_t load32( const void *src )+#if !defined(__cplusplus) && (!defined(__STDC_VERSION__) || __STDC_VERSION__ < 199901L)+ #if defined(_MSC_VER)+ #define BLAKE2_INLINE __inline+ #elif defined(__GNUC__)+ #define BLAKE2_INLINE __inline__+ #else+ #define BLAKE2_INLINE+ #endif+#else+ #define BLAKE2_INLINE inline+#endif++static BLAKE2_INLINE uint32_t load32( const void *src ) { #if defined(NATIVE_LITTLE_ENDIAN) uint32_t w;@@ -25,15 +38,14 @@ return w; #else const uint8_t *p = ( const uint8_t * )src;- uint32_t w = *p++;- w |= ( uint32_t )( *p++ ) << 8;- w |= ( uint32_t )( *p++ ) << 16;- w |= ( uint32_t )( *p++ ) << 24;- return w;+ return (( uint32_t )( p[0] ) << 0) |+ (( uint32_t )( p[1] ) << 8) |+ (( uint32_t )( p[2] ) << 16) |+ (( uint32_t )( p[3] ) << 24) ; #endif } -static inline uint64_t load64( const void *src )+static BLAKE2_INLINE uint64_t load64( const void *src ) { #if defined(NATIVE_LITTLE_ENDIAN) uint64_t w;@@ -41,97 +53,108 @@ return w; #else const uint8_t *p = ( const uint8_t * )src;- uint64_t w = *p++;- w |= ( uint64_t )( *p++ ) << 8;- w |= ( uint64_t )( *p++ ) << 16;- w |= ( uint64_t )( *p++ ) << 24;- w |= ( uint64_t )( *p++ ) << 32;- w |= ( uint64_t )( *p++ ) << 40;- w |= ( uint64_t )( *p++ ) << 48;- w |= ( uint64_t )( *p++ ) << 56;- return w;+ return (( uint64_t )( p[0] ) << 0) |+ (( uint64_t )( p[1] ) << 8) |+ (( uint64_t )( p[2] ) << 16) |+ (( uint64_t )( p[3] ) << 24) |+ (( uint64_t )( p[4] ) << 32) |+ (( uint64_t )( p[5] ) << 40) |+ (( uint64_t )( p[6] ) << 48) |+ (( uint64_t )( p[7] ) << 56) ; #endif } -static inline void store32( void *dst, uint32_t w )+static BLAKE2_INLINE uint16_t load16( const void *src ) { #if defined(NATIVE_LITTLE_ENDIAN)- memcpy(dst, &w, sizeof w);+ uint16_t w;+ memcpy(&w, src, sizeof w);+ return w; #else- uint8_t *p = ( uint8_t * )dst;- *p++ = ( uint8_t )w; w >>= 8;- *p++ = ( uint8_t )w; w >>= 8;- *p++ = ( uint8_t )w; w >>= 8;- *p++ = ( uint8_t )w;+ const uint8_t *p = ( const uint8_t * )src;+ return (( uint16_t )( p[0] ) << 0) |+ (( uint16_t )( p[1] ) << 8) ; #endif } -static inline void store64( void *dst, uint64_t w )+static BLAKE2_INLINE void store16( void *dst, uint16_t w ) { #if defined(NATIVE_LITTLE_ENDIAN) memcpy(dst, &w, sizeof w); #else uint8_t *p = ( uint8_t * )dst; *p++ = ( uint8_t )w; w >>= 8;- *p++ = ( uint8_t )w; w >>= 8;- *p++ = ( uint8_t )w; w >>= 8;- *p++ = ( uint8_t )w; w >>= 8;- *p++ = ( uint8_t )w; w >>= 8;- *p++ = ( uint8_t )w; w >>= 8;- *p++ = ( uint8_t )w; w >>= 8; *p++ = ( uint8_t )w; #endif } -static inline uint64_t load48( const void *src )+static BLAKE2_INLINE void store32( void *dst, uint32_t w ) {- const uint8_t *p = ( const uint8_t * )src;- uint64_t w = *p++;- w |= ( uint64_t )( *p++ ) << 8;- w |= ( uint64_t )( *p++ ) << 16;- w |= ( uint64_t )( *p++ ) << 24;- w |= ( uint64_t )( *p++ ) << 32;- w |= ( uint64_t )( *p++ ) << 40;- return w;+#if defined(NATIVE_LITTLE_ENDIAN)+ memcpy(dst, &w, sizeof w);+#else+ uint8_t *p = ( uint8_t * )dst;+ p[0] = (uint8_t)(w >> 0);+ p[1] = (uint8_t)(w >> 8);+ p[2] = (uint8_t)(w >> 16);+ p[3] = (uint8_t)(w >> 24);+#endif } -static inline void store48( void *dst, uint64_t w )+static BLAKE2_INLINE void store64( void *dst, uint64_t w ) {+#if defined(NATIVE_LITTLE_ENDIAN)+ memcpy(dst, &w, sizeof w);+#else uint8_t *p = ( uint8_t * )dst;- *p++ = ( uint8_t )w; w >>= 8;- *p++ = ( uint8_t )w; w >>= 8;- *p++ = ( uint8_t )w; w >>= 8;- *p++ = ( uint8_t )w; w >>= 8;- *p++ = ( uint8_t )w; w >>= 8;- *p++ = ( uint8_t )w;+ p[0] = (uint8_t)(w >> 0);+ p[1] = (uint8_t)(w >> 8);+ p[2] = (uint8_t)(w >> 16);+ p[3] = (uint8_t)(w >> 24);+ p[4] = (uint8_t)(w >> 32);+ p[5] = (uint8_t)(w >> 40);+ p[6] = (uint8_t)(w >> 48);+ p[7] = (uint8_t)(w >> 56);+#endif } -static inline uint32_t rotl32( const uint32_t w, const unsigned c )+static BLAKE2_INLINE uint64_t load48( const void *src ) {- return ( w << c ) | ( w >> ( 32 - c ) );+ const uint8_t *p = ( const uint8_t * )src;+ return (( uint64_t )( p[0] ) << 0) |+ (( uint64_t )( p[1] ) << 8) |+ (( uint64_t )( p[2] ) << 16) |+ (( uint64_t )( p[3] ) << 24) |+ (( uint64_t )( p[4] ) << 32) |+ (( uint64_t )( p[5] ) << 40) ; } -static inline uint64_t rotl64( const uint64_t w, const unsigned c )+static BLAKE2_INLINE void store48( void *dst, uint64_t w ) {- return ( w << c ) | ( w >> ( 64 - c ) );+ uint8_t *p = ( uint8_t * )dst;+ p[0] = (uint8_t)(w >> 0);+ p[1] = (uint8_t)(w >> 8);+ p[2] = (uint8_t)(w >> 16);+ p[3] = (uint8_t)(w >> 24);+ p[4] = (uint8_t)(w >> 32);+ p[5] = (uint8_t)(w >> 40); } -static inline uint32_t rotr32( const uint32_t w, const unsigned c )+static BLAKE2_INLINE uint32_t rotr32( const uint32_t w, const unsigned c ) { return ( w >> c ) | ( w << ( 32 - c ) ); } -static inline uint64_t rotr64( const uint64_t w, const unsigned c )+static BLAKE2_INLINE uint64_t rotr64( const uint64_t w, const unsigned c ) { return ( w >> c ) | ( w << ( 64 - c ) ); } /* prevents compiler optimizing out memset() */-static inline void secure_zero_memory(void *v, size_t n)+static BLAKE2_INLINE void secure_zero_memory(void *v, size_t n) { static void *(*const volatile memset_v)(void *, int, size_t) = &memset; memset_v(v, 0, n); } #endif-
− cbits/blake2/ref/blake2-kat.h
@@ -1,16467 +0,0 @@-/*- BLAKE2 reference source code package - reference C implementations-- Written in 2012 by Samuel Neves <sneves@dei.uc.pt>-- To the extent possible under law, the author(s) have dedicated all copyright- and related and neighboring rights to this software to the public domain- worldwide. This software is distributed without any warranty.-- You should have received a copy of the CC0 Public Domain Dedication along with- this software. If not, see <http://creativecommons.org/publicdomain/zero/1.0/>.-*/-#pragma once-#ifndef __BLAKE2_KAT_H__-#define __BLAKE2_KAT_H__---#include <stdint.h>--#define KAT_LENGTH 256----static const uint8_t blake2s_kat[KAT_LENGTH][BLAKE2S_OUTBYTES] =-{- {- 0x69, 0x21, 0x7A, 0x30, 0x79, 0x90, 0x80, 0x94,- 0xE1, 0x11, 0x21, 0xD0, 0x42, 0x35, 0x4A, 0x7C,- 0x1F, 0x55, 0xB6, 0x48, 0x2C, 0xA1, 0xA5, 0x1E,- 0x1B, 0x25, 0x0D, 0xFD, 0x1E, 0xD0, 0xEE, 0xF9- },- {- 0xE3, 0x4D, 0x74, 0xDB, 0xAF, 0x4F, 0xF4, 0xC6,- 0xAB, 0xD8, 0x71, 0xCC, 0x22, 0x04, 0x51, 0xD2,- 0xEA, 0x26, 0x48, 0x84, 0x6C, 0x77, 0x57, 0xFB,- 0xAA, 0xC8, 0x2F, 0xE5, 0x1A, 0xD6, 0x4B, 0xEA- },- {- 0xDD, 0xAD, 0x9A, 0xB1, 0x5D, 0xAC, 0x45, 0x49,- 0xBA, 0x42, 0xF4, 0x9D, 0x26, 0x24, 0x96, 0xBE,- 0xF6, 0xC0, 0xBA, 0xE1, 0xDD, 0x34, 0x2A, 0x88,- 0x08, 0xF8, 0xEA, 0x26, 0x7C, 0x6E, 0x21, 0x0C- },- {- 0xE8, 0xF9, 0x1C, 0x6E, 0xF2, 0x32, 0xA0, 0x41,- 0x45, 0x2A, 0xB0, 0xE1, 0x49, 0x07, 0x0C, 0xDD,- 0x7D, 0xD1, 0x76, 0x9E, 0x75, 0xB3, 0xA5, 0x92,- 0x1B, 0xE3, 0x78, 0x76, 0xC4, 0x5C, 0x99, 0x00- },- {- 0x0C, 0xC7, 0x0E, 0x00, 0x34, 0x8B, 0x86, 0xBA,- 0x29, 0x44, 0xD0, 0xC3, 0x20, 0x38, 0xB2, 0x5C,- 0x55, 0x58, 0x4F, 0x90, 0xDF, 0x23, 0x04, 0xF5,- 0x5F, 0xA3, 0x32, 0xAF, 0x5F, 0xB0, 0x1E, 0x20- },- {- 0xEC, 0x19, 0x64, 0x19, 0x10, 0x87, 0xA4, 0xFE,- 0x9D, 0xF1, 0xC7, 0x95, 0x34, 0x2A, 0x02, 0xFF,- 0xC1, 0x91, 0xA5, 0xB2, 0x51, 0x76, 0x48, 0x56,- 0xAE, 0x5B, 0x8B, 0x57, 0x69, 0xF0, 0xC6, 0xCD- },- {- 0xE1, 0xFA, 0x51, 0x61, 0x8D, 0x7D, 0xF4, 0xEB,- 0x70, 0xCF, 0x0D, 0x5A, 0x9E, 0x90, 0x6F, 0x80,- 0x6E, 0x9D, 0x19, 0xF7, 0xF4, 0xF0, 0x1E, 0x3B,- 0x62, 0x12, 0x88, 0xE4, 0x12, 0x04, 0x05, 0xD6- },- {- 0x59, 0x80, 0x01, 0xFA, 0xFB, 0xE8, 0xF9, 0x4E,- 0xC6, 0x6D, 0xC8, 0x27, 0xD0, 0x12, 0xCF, 0xCB,- 0xBA, 0x22, 0x28, 0x56, 0x9F, 0x44, 0x8E, 0x89,- 0xEA, 0x22, 0x08, 0xC8, 0xBF, 0x76, 0x92, 0x93- },- {- 0xC7, 0xE8, 0x87, 0xB5, 0x46, 0x62, 0x36, 0x35,- 0xE9, 0x3E, 0x04, 0x95, 0x59, 0x8F, 0x17, 0x26,- 0x82, 0x19, 0x96, 0xC2, 0x37, 0x77, 0x05, 0xB9,- 0x3A, 0x1F, 0x63, 0x6F, 0x87, 0x2B, 0xFA, 0x2D- },- {- 0xC3, 0x15, 0xA4, 0x37, 0xDD, 0x28, 0x06, 0x2A,- 0x77, 0x0D, 0x48, 0x19, 0x67, 0x13, 0x6B, 0x1B,- 0x5E, 0xB8, 0x8B, 0x21, 0xEE, 0x53, 0xD0, 0x32,- 0x9C, 0x58, 0x97, 0x12, 0x6E, 0x9D, 0xB0, 0x2C- },- {- 0xBB, 0x47, 0x3D, 0xED, 0xDC, 0x05, 0x5F, 0xEA,- 0x62, 0x28, 0xF2, 0x07, 0xDA, 0x57, 0x53, 0x47,- 0xBB, 0x00, 0x40, 0x4C, 0xD3, 0x49, 0xD3, 0x8C,- 0x18, 0x02, 0x63, 0x07, 0xA2, 0x24, 0xCB, 0xFF- },- {- 0x68, 0x7E, 0x18, 0x73, 0xA8, 0x27, 0x75, 0x91,- 0xBB, 0x33, 0xD9, 0xAD, 0xF9, 0xA1, 0x39, 0x12,- 0xEF, 0xEF, 0xE5, 0x57, 0xCA, 0xFC, 0x39, 0xA7,- 0x95, 0x26, 0x23, 0xE4, 0x72, 0x55, 0xF1, 0x6D- },- {- 0x1A, 0xC7, 0xBA, 0x75, 0x4D, 0x6E, 0x2F, 0x94,- 0xE0, 0xE8, 0x6C, 0x46, 0xBF, 0xB2, 0x62, 0xAB,- 0xBB, 0x74, 0xF4, 0x50, 0xEF, 0x45, 0x6D, 0x6B,- 0x4D, 0x97, 0xAA, 0x80, 0xCE, 0x6D, 0xA7, 0x67- },- {- 0x01, 0x2C, 0x97, 0x80, 0x96, 0x14, 0x81, 0x6B,- 0x5D, 0x94, 0x94, 0x47, 0x7D, 0x4B, 0x68, 0x7D,- 0x15, 0xB9, 0x6E, 0xB6, 0x9C, 0x0E, 0x80, 0x74,- 0xA8, 0x51, 0x6F, 0x31, 0x22, 0x4B, 0x5C, 0x98- },- {- 0x91, 0xFF, 0xD2, 0x6C, 0xFA, 0x4D, 0xA5, 0x13,- 0x4C, 0x7E, 0xA2, 0x62, 0xF7, 0x88, 0x9C, 0x32,- 0x9F, 0x61, 0xF6, 0xA6, 0x57, 0x22, 0x5C, 0xC2,- 0x12, 0xF4, 0x00, 0x56, 0xD9, 0x86, 0xB3, 0xF4- },- {- 0xD9, 0x7C, 0x82, 0x8D, 0x81, 0x82, 0xA7, 0x21,- 0x80, 0xA0, 0x6A, 0x78, 0x26, 0x83, 0x30, 0x67,- 0x3F, 0x7C, 0x4E, 0x06, 0x35, 0x94, 0x7C, 0x04,- 0xC0, 0x23, 0x23, 0xFD, 0x45, 0xC0, 0xA5, 0x2D- },- {- 0xEF, 0xC0, 0x4C, 0xDC, 0x39, 0x1C, 0x7E, 0x91,- 0x19, 0xBD, 0x38, 0x66, 0x8A, 0x53, 0x4E, 0x65,- 0xFE, 0x31, 0x03, 0x6D, 0x6A, 0x62, 0x11, 0x2E,- 0x44, 0xEB, 0xEB, 0x11, 0xF9, 0xC5, 0x70, 0x80- },- {- 0x99, 0x2C, 0xF5, 0xC0, 0x53, 0x44, 0x2A, 0x5F,- 0xBC, 0x4F, 0xAF, 0x58, 0x3E, 0x04, 0xE5, 0x0B,- 0xB7, 0x0D, 0x2F, 0x39, 0xFB, 0xB6, 0xA5, 0x03,- 0xF8, 0x9E, 0x56, 0xA6, 0x3E, 0x18, 0x57, 0x8A- },- {- 0x38, 0x64, 0x0E, 0x9F, 0x21, 0x98, 0x3E, 0x67,- 0xB5, 0x39, 0xCA, 0xCC, 0xAE, 0x5E, 0xCF, 0x61,- 0x5A, 0xE2, 0x76, 0x4F, 0x75, 0xA0, 0x9C, 0x9C,- 0x59, 0xB7, 0x64, 0x83, 0xC1, 0xFB, 0xC7, 0x35- },- {- 0x21, 0x3D, 0xD3, 0x4C, 0x7E, 0xFE, 0x4F, 0xB2,- 0x7A, 0x6B, 0x35, 0xF6, 0xB4, 0x00, 0x0D, 0x1F,- 0xE0, 0x32, 0x81, 0xAF, 0x3C, 0x72, 0x3E, 0x5C,- 0x9F, 0x94, 0x74, 0x7A, 0x5F, 0x31, 0xCD, 0x3B- },- {- 0xEC, 0x24, 0x6E, 0xEE, 0xB9, 0xCE, 0xD3, 0xF7,- 0xAD, 0x33, 0xED, 0x28, 0x66, 0x0D, 0xD9, 0xBB,- 0x07, 0x32, 0x51, 0x3D, 0xB4, 0xE2, 0xFA, 0x27,- 0x8B, 0x60, 0xCD, 0xE3, 0x68, 0x2A, 0x4C, 0xCD- },- {- 0xAC, 0x9B, 0x61, 0xD4, 0x46, 0x64, 0x8C, 0x30,- 0x05, 0xD7, 0x89, 0x2B, 0xF3, 0xA8, 0x71, 0x9F,- 0x4C, 0x81, 0x81, 0xCF, 0xDC, 0xBC, 0x2B, 0x79,- 0xFE, 0xF1, 0x0A, 0x27, 0x9B, 0x91, 0x10, 0x95- },- {- 0x7B, 0xF8, 0xB2, 0x29, 0x59, 0xE3, 0x4E, 0x3A,- 0x43, 0xF7, 0x07, 0x92, 0x23, 0xE8, 0x3A, 0x97,- 0x54, 0x61, 0x7D, 0x39, 0x1E, 0x21, 0x3D, 0xFD,- 0x80, 0x8E, 0x41, 0xB9, 0xBE, 0xAD, 0x4C, 0xE7- },- {- 0x68, 0xD4, 0xB5, 0xD4, 0xFA, 0x0E, 0x30, 0x2B,- 0x64, 0xCC, 0xC5, 0xAF, 0x79, 0x29, 0x13, 0xAC,- 0x4C, 0x88, 0xEC, 0x95, 0xC0, 0x7D, 0xDF, 0x40,- 0x69, 0x42, 0x56, 0xEB, 0x88, 0xCE, 0x9F, 0x3D- },- {- 0xB2, 0xC2, 0x42, 0x0F, 0x05, 0xF9, 0xAB, 0xE3,- 0x63, 0x15, 0x91, 0x93, 0x36, 0xB3, 0x7E, 0x4E,- 0x0F, 0xA3, 0x3F, 0xF7, 0xE7, 0x6A, 0x49, 0x27,- 0x67, 0x00, 0x6F, 0xDB, 0x5D, 0x93, 0x54, 0x62- },- {- 0x13, 0x4F, 0x61, 0xBB, 0xD0, 0xBB, 0xB6, 0x9A,- 0xED, 0x53, 0x43, 0x90, 0x45, 0x51, 0xA3, 0xE6,- 0xC1, 0xAA, 0x7D, 0xCD, 0xD7, 0x7E, 0x90, 0x3E,- 0x70, 0x23, 0xEB, 0x7C, 0x60, 0x32, 0x0A, 0xA7- },- {- 0x46, 0x93, 0xF9, 0xBF, 0xF7, 0xD4, 0xF3, 0x98,- 0x6A, 0x7D, 0x17, 0x6E, 0x6E, 0x06, 0xF7, 0x2A,- 0xD1, 0x49, 0x0D, 0x80, 0x5C, 0x99, 0xE2, 0x53,- 0x47, 0xB8, 0xDE, 0x77, 0xB4, 0xDB, 0x6D, 0x9B- },- {- 0x85, 0x3E, 0x26, 0xF7, 0x41, 0x95, 0x3B, 0x0F,- 0xD5, 0xBD, 0xB4, 0x24, 0xE8, 0xAB, 0x9E, 0x8B,- 0x37, 0x50, 0xEA, 0xA8, 0xEF, 0x61, 0xE4, 0x79,- 0x02, 0xC9, 0x1E, 0x55, 0x4E, 0x9C, 0x73, 0xB9- },- {- 0xF7, 0xDE, 0x53, 0x63, 0x61, 0xAB, 0xAA, 0x0E,- 0x15, 0x81, 0x56, 0xCF, 0x0E, 0xA4, 0xF6, 0x3A,- 0x99, 0xB5, 0xE4, 0x05, 0x4F, 0x8F, 0xA4, 0xC9,- 0xD4, 0x5F, 0x62, 0x85, 0xCA, 0xD5, 0x56, 0x94- },- {- 0x4C, 0x23, 0x06, 0x08, 0x86, 0x0A, 0x99, 0xAE,- 0x8D, 0x7B, 0xD5, 0xC2, 0xCC, 0x17, 0xFA, 0x52,- 0x09, 0x6B, 0x9A, 0x61, 0xBE, 0xDB, 0x17, 0xCB,- 0x76, 0x17, 0x86, 0x4A, 0xD2, 0x9C, 0xA7, 0xA6- },- {- 0xAE, 0xB9, 0x20, 0xEA, 0x87, 0x95, 0x2D, 0xAD,- 0xB1, 0xFB, 0x75, 0x92, 0x91, 0xE3, 0x38, 0x81,- 0x39, 0xA8, 0x72, 0x86, 0x50, 0x01, 0x88, 0x6E,- 0xD8, 0x47, 0x52, 0xE9, 0x3C, 0x25, 0x0C, 0x2A- },- {- 0xAB, 0xA4, 0xAD, 0x9B, 0x48, 0x0B, 0x9D, 0xF3,- 0xD0, 0x8C, 0xA5, 0xE8, 0x7B, 0x0C, 0x24, 0x40,- 0xD4, 0xE4, 0xEA, 0x21, 0x22, 0x4C, 0x2E, 0xB4,- 0x2C, 0xBA, 0xE4, 0x69, 0xD0, 0x89, 0xB9, 0x31- },- {- 0x05, 0x82, 0x56, 0x07, 0xD7, 0xFD, 0xF2, 0xD8,- 0x2E, 0xF4, 0xC3, 0xC8, 0xC2, 0xAE, 0xA9, 0x61,- 0xAD, 0x98, 0xD6, 0x0E, 0xDF, 0xF7, 0xD0, 0x18,- 0x98, 0x3E, 0x21, 0x20, 0x4C, 0x0D, 0x93, 0xD1- },- {- 0xA7, 0x42, 0xF8, 0xB6, 0xAF, 0x82, 0xD8, 0xA6,- 0xCA, 0x23, 0x57, 0xC5, 0xF1, 0xCF, 0x91, 0xDE,- 0xFB, 0xD0, 0x66, 0x26, 0x7D, 0x75, 0xC0, 0x48,- 0xB3, 0x52, 0x36, 0x65, 0x85, 0x02, 0x59, 0x62- },- {- 0x2B, 0xCA, 0xC8, 0x95, 0x99, 0x00, 0x0B, 0x42,- 0xC9, 0x5A, 0xE2, 0x38, 0x35, 0xA7, 0x13, 0x70,- 0x4E, 0xD7, 0x97, 0x89, 0xC8, 0x4F, 0xEF, 0x14,- 0x9A, 0x87, 0x4F, 0xF7, 0x33, 0xF0, 0x17, 0xA2- },- {- 0xAC, 0x1E, 0xD0, 0x7D, 0x04, 0x8F, 0x10, 0x5A,- 0x9E, 0x5B, 0x7A, 0xB8, 0x5B, 0x09, 0xA4, 0x92,- 0xD5, 0xBA, 0xFF, 0x14, 0xB8, 0xBF, 0xB0, 0xE9,- 0xFD, 0x78, 0x94, 0x86, 0xEE, 0xA2, 0xB9, 0x74- },- {- 0xE4, 0x8D, 0x0E, 0xCF, 0xAF, 0x49, 0x7D, 0x5B,- 0x27, 0xC2, 0x5D, 0x99, 0xE1, 0x56, 0xCB, 0x05,- 0x79, 0xD4, 0x40, 0xD6, 0xE3, 0x1F, 0xB6, 0x24,- 0x73, 0x69, 0x6D, 0xBF, 0x95, 0xE0, 0x10, 0xE4- },- {- 0x12, 0xA9, 0x1F, 0xAD, 0xF8, 0xB2, 0x16, 0x44,- 0xFD, 0x0F, 0x93, 0x4F, 0x3C, 0x4A, 0x8F, 0x62,- 0xBA, 0x86, 0x2F, 0xFD, 0x20, 0xE8, 0xE9, 0x61,- 0x15, 0x4C, 0x15, 0xC1, 0x38, 0x84, 0xED, 0x3D- },- {- 0x7C, 0xBE, 0xE9, 0x6E, 0x13, 0x98, 0x97, 0xDC,- 0x98, 0xFB, 0xEF, 0x3B, 0xE8, 0x1A, 0xD4, 0xD9,- 0x64, 0xD2, 0x35, 0xCB, 0x12, 0x14, 0x1F, 0xB6,- 0x67, 0x27, 0xE6, 0xE5, 0xDF, 0x73, 0xA8, 0x78- },- {- 0xEB, 0xF6, 0x6A, 0xBB, 0x59, 0x7A, 0xE5, 0x72,- 0xA7, 0x29, 0x7C, 0xB0, 0x87, 0x1E, 0x35, 0x5A,- 0xCC, 0xAF, 0xAD, 0x83, 0x77, 0xB8, 0xE7, 0x8B,- 0xF1, 0x64, 0xCE, 0x2A, 0x18, 0xDE, 0x4B, 0xAF- },- {- 0x71, 0xB9, 0x33, 0xB0, 0x7E, 0x4F, 0xF7, 0x81,- 0x8C, 0xE0, 0x59, 0xD0, 0x08, 0x82, 0x9E, 0x45,- 0x3C, 0x6F, 0xF0, 0x2E, 0xC0, 0xA7, 0xDB, 0x39,- 0x3F, 0xC2, 0xD8, 0x70, 0xF3, 0x7A, 0x72, 0x86- },- {- 0x7C, 0xF7, 0xC5, 0x13, 0x31, 0x22, 0x0B, 0x8D,- 0x3E, 0xBA, 0xED, 0x9C, 0x29, 0x39, 0x8A, 0x16,- 0xD9, 0x81, 0x56, 0xE2, 0x61, 0x3C, 0xB0, 0x88,- 0xF2, 0xB0, 0xE0, 0x8A, 0x1B, 0xE4, 0xCF, 0x4F- },- {- 0x3E, 0x41, 0xA1, 0x08, 0xE0, 0xF6, 0x4A, 0xD2,- 0x76, 0xB9, 0x79, 0xE1, 0xCE, 0x06, 0x82, 0x79,- 0xE1, 0x6F, 0x7B, 0xC7, 0xE4, 0xAA, 0x1D, 0x21,- 0x1E, 0x17, 0xB8, 0x11, 0x61, 0xDF, 0x16, 0x02- },- {- 0x88, 0x65, 0x02, 0xA8, 0x2A, 0xB4, 0x7B, 0xA8,- 0xD8, 0x67, 0x10, 0xAA, 0x9D, 0xE3, 0xD4, 0x6E,- 0xA6, 0x5C, 0x47, 0xAF, 0x6E, 0xE8, 0xDE, 0x45,- 0x0C, 0xCE, 0xB8, 0xB1, 0x1B, 0x04, 0x5F, 0x50- },- {- 0xC0, 0x21, 0xBC, 0x5F, 0x09, 0x54, 0xFE, 0xE9,- 0x4F, 0x46, 0xEA, 0x09, 0x48, 0x7E, 0x10, 0xA8,- 0x48, 0x40, 0xD0, 0x2F, 0x64, 0x81, 0x0B, 0xC0,- 0x8D, 0x9E, 0x55, 0x1F, 0x7D, 0x41, 0x68, 0x14- },- {- 0x20, 0x30, 0x51, 0x6E, 0x8A, 0x5F, 0xE1, 0x9A,- 0xE7, 0x9C, 0x33, 0x6F, 0xCE, 0x26, 0x38, 0x2A,- 0x74, 0x9D, 0x3F, 0xD0, 0xEC, 0x91, 0xE5, 0x37,- 0xD4, 0xBD, 0x23, 0x58, 0xC1, 0x2D, 0xFB, 0x22- },- {- 0x55, 0x66, 0x98, 0xDA, 0xC8, 0x31, 0x7F, 0xD3,- 0x6D, 0xFB, 0xDF, 0x25, 0xA7, 0x9C, 0xB1, 0x12,- 0xD5, 0x42, 0x58, 0x60, 0x60, 0x5C, 0xBA, 0xF5,- 0x07, 0xF2, 0x3B, 0xF7, 0xE9, 0xF4, 0x2A, 0xFE- },- {- 0x2F, 0x86, 0x7B, 0xA6, 0x77, 0x73, 0xFD, 0xC3,- 0xE9, 0x2F, 0xCE, 0xD9, 0x9A, 0x64, 0x09, 0xAD,- 0x39, 0xD0, 0xB8, 0x80, 0xFD, 0xE8, 0xF1, 0x09,- 0xA8, 0x17, 0x30, 0xC4, 0x45, 0x1D, 0x01, 0x78- },- {- 0x17, 0x2E, 0xC2, 0x18, 0xF1, 0x19, 0xDF, 0xAE,- 0x98, 0x89, 0x6D, 0xFF, 0x29, 0xDD, 0x98, 0x76,- 0xC9, 0x4A, 0xF8, 0x74, 0x17, 0xF9, 0xAE, 0x4C,- 0x70, 0x14, 0xBB, 0x4E, 0x4B, 0x96, 0xAF, 0xC7- },- {- 0x3F, 0x85, 0x81, 0x4A, 0x18, 0x19, 0x5F, 0x87,- 0x9A, 0xA9, 0x62, 0xF9, 0x5D, 0x26, 0xBD, 0x82,- 0xA2, 0x78, 0xF2, 0xB8, 0x23, 0x20, 0x21, 0x8F,- 0x6B, 0x3B, 0xD6, 0xF7, 0xF6, 0x67, 0xA6, 0xD9- },- {- 0x1B, 0x61, 0x8F, 0xBA, 0xA5, 0x66, 0xB3, 0xD4,- 0x98, 0xC1, 0x2E, 0x98, 0x2C, 0x9E, 0xC5, 0x2E,- 0x4D, 0xA8, 0x5A, 0x8C, 0x54, 0xF3, 0x8F, 0x34,- 0xC0, 0x90, 0x39, 0x4F, 0x23, 0xC1, 0x84, 0xC1- },- {- 0x0C, 0x75, 0x8F, 0xB5, 0x69, 0x2F, 0xFD, 0x41,- 0xA3, 0x57, 0x5D, 0x0A, 0xF0, 0x0C, 0xC7, 0xFB,- 0xF2, 0xCB, 0xE5, 0x90, 0x5A, 0x58, 0x32, 0x3A,- 0x88, 0xAE, 0x42, 0x44, 0xF6, 0xE4, 0xC9, 0x93- },- {- 0xA9, 0x31, 0x36, 0x0C, 0xAD, 0x62, 0x8C, 0x7F,- 0x12, 0xA6, 0xC1, 0xC4, 0xB7, 0x53, 0xB0, 0xF4,- 0x06, 0x2A, 0xEF, 0x3C, 0xE6, 0x5A, 0x1A, 0xE3,- 0xF1, 0x93, 0x69, 0xDA, 0xDF, 0x3A, 0xE2, 0x3D- },- {- 0xCB, 0xAC, 0x7D, 0x77, 0x3B, 0x1E, 0x3B, 0x3C,- 0x66, 0x91, 0xD7, 0xAB, 0xB7, 0xE9, 0xDF, 0x04,- 0x5C, 0x8B, 0xA1, 0x92, 0x68, 0xDE, 0xD1, 0x53,- 0x20, 0x7F, 0x5E, 0x80, 0x43, 0x52, 0xEC, 0x5D- },- {- 0x23, 0xA1, 0x96, 0xD3, 0x80, 0x2E, 0xD3, 0xC1,- 0xB3, 0x84, 0x01, 0x9A, 0x82, 0x32, 0x58, 0x40,- 0xD3, 0x2F, 0x71, 0x95, 0x0C, 0x45, 0x80, 0xB0,- 0x34, 0x45, 0xE0, 0x89, 0x8E, 0x14, 0x05, 0x3C- },- {- 0xF4, 0x49, 0x54, 0x70, 0xF2, 0x26, 0xC8, 0xC2,- 0x14, 0xBE, 0x08, 0xFD, 0xFA, 0xD4, 0xBC, 0x4A,- 0x2A, 0x9D, 0xBE, 0xA9, 0x13, 0x6A, 0x21, 0x0D,- 0xF0, 0xD4, 0xB6, 0x49, 0x29, 0xE6, 0xFC, 0x14- },- {- 0xE2, 0x90, 0xDD, 0x27, 0x0B, 0x46, 0x7F, 0x34,- 0xAB, 0x1C, 0x00, 0x2D, 0x34, 0x0F, 0xA0, 0x16,- 0x25, 0x7F, 0xF1, 0x9E, 0x58, 0x33, 0xFD, 0xBB,- 0xF2, 0xCB, 0x40, 0x1C, 0x3B, 0x28, 0x17, 0xDE- },- {- 0x9F, 0xC7, 0xB5, 0xDE, 0xD3, 0xC1, 0x50, 0x42,- 0xB2, 0xA6, 0x58, 0x2D, 0xC3, 0x9B, 0xE0, 0x16,- 0xD2, 0x4A, 0x68, 0x2D, 0x5E, 0x61, 0xAD, 0x1E,- 0xFF, 0x9C, 0x63, 0x30, 0x98, 0x48, 0xF7, 0x06- },- {- 0x8C, 0xCA, 0x67, 0xA3, 0x6D, 0x17, 0xD5, 0xE6,- 0x34, 0x1C, 0xB5, 0x92, 0xFD, 0x7B, 0xEF, 0x99,- 0x26, 0xC9, 0xE3, 0xAA, 0x10, 0x27, 0xEA, 0x11,- 0xA7, 0xD8, 0xBD, 0x26, 0x0B, 0x57, 0x6E, 0x04- },- {- 0x40, 0x93, 0x92, 0xF5, 0x60, 0xF8, 0x68, 0x31,- 0xDA, 0x43, 0x73, 0xEE, 0x5E, 0x00, 0x74, 0x26,- 0x05, 0x95, 0xD7, 0xBC, 0x24, 0x18, 0x3B, 0x60,- 0xED, 0x70, 0x0D, 0x45, 0x83, 0xD3, 0xF6, 0xF0- },- {- 0x28, 0x02, 0x16, 0x5D, 0xE0, 0x90, 0x91, 0x55,- 0x46, 0xF3, 0x39, 0x8C, 0xD8, 0x49, 0x16, 0x4A,- 0x19, 0xF9, 0x2A, 0xDB, 0xC3, 0x61, 0xAD, 0xC9,- 0x9B, 0x0F, 0x20, 0xC8, 0xEA, 0x07, 0x10, 0x54- },- {- 0xAD, 0x83, 0x91, 0x68, 0xD9, 0xF8, 0xA4, 0xBE,- 0x95, 0xBA, 0x9E, 0xF9, 0xA6, 0x92, 0xF0, 0x72,- 0x56, 0xAE, 0x43, 0xFE, 0x6F, 0x98, 0x64, 0xE2,- 0x90, 0x69, 0x1B, 0x02, 0x56, 0xCE, 0x50, 0xA9- },- {- 0x75, 0xFD, 0xAA, 0x50, 0x38, 0xC2, 0x84, 0xB8,- 0x6D, 0x6E, 0x8A, 0xFF, 0xE8, 0xB2, 0x80, 0x7E,- 0x46, 0x7B, 0x86, 0x60, 0x0E, 0x79, 0xAF, 0x36,- 0x89, 0xFB, 0xC0, 0x63, 0x28, 0xCB, 0xF8, 0x94- },- {- 0xE5, 0x7C, 0xB7, 0x94, 0x87, 0xDD, 0x57, 0x90,- 0x24, 0x32, 0xB2, 0x50, 0x73, 0x38, 0x13, 0xBD,- 0x96, 0xA8, 0x4E, 0xFC, 0xE5, 0x9F, 0x65, 0x0F,- 0xAC, 0x26, 0xE6, 0x69, 0x6A, 0xEF, 0xAF, 0xC3- },- {- 0x56, 0xF3, 0x4E, 0x8B, 0x96, 0x55, 0x7E, 0x90,- 0xC1, 0xF2, 0x4B, 0x52, 0xD0, 0xC8, 0x9D, 0x51,- 0x08, 0x6A, 0xCF, 0x1B, 0x00, 0xF6, 0x34, 0xCF,- 0x1D, 0xDE, 0x92, 0x33, 0xB8, 0xEA, 0xAA, 0x3E- },- {- 0x1B, 0x53, 0xEE, 0x94, 0xAA, 0xF3, 0x4E, 0x4B,- 0x15, 0x9D, 0x48, 0xDE, 0x35, 0x2C, 0x7F, 0x06,- 0x61, 0xD0, 0xA4, 0x0E, 0xDF, 0xF9, 0x5A, 0x0B,- 0x16, 0x39, 0xB4, 0x09, 0x0E, 0x97, 0x44, 0x72- },- {- 0x05, 0x70, 0x5E, 0x2A, 0x81, 0x75, 0x7C, 0x14,- 0xBD, 0x38, 0x3E, 0xA9, 0x8D, 0xDA, 0x54, 0x4E,- 0xB1, 0x0E, 0x6B, 0xC0, 0x7B, 0xAE, 0x43, 0x5E,- 0x25, 0x18, 0xDB, 0xE1, 0x33, 0x52, 0x53, 0x75- },- {- 0xD8, 0xB2, 0x86, 0x6E, 0x8A, 0x30, 0x9D, 0xB5,- 0x3E, 0x52, 0x9E, 0xC3, 0x29, 0x11, 0xD8, 0x2F,- 0x5C, 0xA1, 0x6C, 0xFF, 0x76, 0x21, 0x68, 0x91,- 0xA9, 0x67, 0x6A, 0xA3, 0x1A, 0xAA, 0x6C, 0x42- },- {- 0xF5, 0x04, 0x1C, 0x24, 0x12, 0x70, 0xEB, 0x04,- 0xC7, 0x1E, 0xC2, 0xC9, 0x5D, 0x4C, 0x38, 0xD8,- 0x03, 0xB1, 0x23, 0x7B, 0x0F, 0x29, 0xFD, 0x4D,- 0xB3, 0xEB, 0x39, 0x76, 0x69, 0xE8, 0x86, 0x99- },- {- 0x9A, 0x4C, 0xE0, 0x77, 0xC3, 0x49, 0x32, 0x2F,- 0x59, 0x5E, 0x0E, 0xE7, 0x9E, 0xD0, 0xDA, 0x5F,- 0xAB, 0x66, 0x75, 0x2C, 0xBF, 0xEF, 0x8F, 0x87,- 0xD0, 0xE9, 0xD0, 0x72, 0x3C, 0x75, 0x30, 0xDD- },- {- 0x65, 0x7B, 0x09, 0xF3, 0xD0, 0xF5, 0x2B, 0x5B,- 0x8F, 0x2F, 0x97, 0x16, 0x3A, 0x0E, 0xDF, 0x0C,- 0x04, 0xF0, 0x75, 0x40, 0x8A, 0x07, 0xBB, 0xEB,- 0x3A, 0x41, 0x01, 0xA8, 0x91, 0x99, 0x0D, 0x62- },- {- 0x1E, 0x3F, 0x7B, 0xD5, 0xA5, 0x8F, 0xA5, 0x33,- 0x34, 0x4A, 0xA8, 0xED, 0x3A, 0xC1, 0x22, 0xBB,- 0x9E, 0x70, 0xD4, 0xEF, 0x50, 0xD0, 0x04, 0x53,- 0x08, 0x21, 0x94, 0x8F, 0x5F, 0xE6, 0x31, 0x5A- },- {- 0x80, 0xDC, 0xCF, 0x3F, 0xD8, 0x3D, 0xFD, 0x0D,- 0x35, 0xAA, 0x28, 0x58, 0x59, 0x22, 0xAB, 0x89,- 0xD5, 0x31, 0x39, 0x97, 0x67, 0x3E, 0xAF, 0x90,- 0x5C, 0xEA, 0x9C, 0x0B, 0x22, 0x5C, 0x7B, 0x5F- },- {- 0x8A, 0x0D, 0x0F, 0xBF, 0x63, 0x77, 0xD8, 0x3B,- 0xB0, 0x8B, 0x51, 0x4B, 0x4B, 0x1C, 0x43, 0xAC,- 0xC9, 0x5D, 0x75, 0x17, 0x14, 0xF8, 0x92, 0x56,- 0x45, 0xCB, 0x6B, 0xC8, 0x56, 0xCA, 0x15, 0x0A- },- {- 0x9F, 0xA5, 0xB4, 0x87, 0x73, 0x8A, 0xD2, 0x84,- 0x4C, 0xC6, 0x34, 0x8A, 0x90, 0x19, 0x18, 0xF6,- 0x59, 0xA3, 0xB8, 0x9E, 0x9C, 0x0D, 0xFE, 0xEA,- 0xD3, 0x0D, 0xD9, 0x4B, 0xCF, 0x42, 0xEF, 0x8E- },- {- 0x80, 0x83, 0x2C, 0x4A, 0x16, 0x77, 0xF5, 0xEA,- 0x25, 0x60, 0xF6, 0x68, 0xE9, 0x35, 0x4D, 0xD3,- 0x69, 0x97, 0xF0, 0x37, 0x28, 0xCF, 0xA5, 0x5E,- 0x1B, 0x38, 0x33, 0x7C, 0x0C, 0x9E, 0xF8, 0x18- },- {- 0xAB, 0x37, 0xDD, 0xB6, 0x83, 0x13, 0x7E, 0x74,- 0x08, 0x0D, 0x02, 0x6B, 0x59, 0x0B, 0x96, 0xAE,- 0x9B, 0xB4, 0x47, 0x72, 0x2F, 0x30, 0x5A, 0x5A,- 0xC5, 0x70, 0xEC, 0x1D, 0xF9, 0xB1, 0x74, 0x3C- },- {- 0x3E, 0xE7, 0x35, 0xA6, 0x94, 0xC2, 0x55, 0x9B,- 0x69, 0x3A, 0xA6, 0x86, 0x29, 0x36, 0x1E, 0x15,- 0xD1, 0x22, 0x65, 0xAD, 0x6A, 0x3D, 0xED, 0xF4,- 0x88, 0xB0, 0xB0, 0x0F, 0xAC, 0x97, 0x54, 0xBA- },- {- 0xD6, 0xFC, 0xD2, 0x32, 0x19, 0xB6, 0x47, 0xE4,- 0xCB, 0xD5, 0xEB, 0x2D, 0x0A, 0xD0, 0x1E, 0xC8,- 0x83, 0x8A, 0x4B, 0x29, 0x01, 0xFC, 0x32, 0x5C,- 0xC3, 0x70, 0x19, 0x81, 0xCA, 0x6C, 0x88, 0x8B- },- {- 0x05, 0x20, 0xEC, 0x2F, 0x5B, 0xF7, 0xA7, 0x55,- 0xDA, 0xCB, 0x50, 0xC6, 0xBF, 0x23, 0x3E, 0x35,- 0x15, 0x43, 0x47, 0x63, 0xDB, 0x01, 0x39, 0xCC,- 0xD9, 0xFA, 0xEF, 0xBB, 0x82, 0x07, 0x61, 0x2D- },- {- 0xAF, 0xF3, 0xB7, 0x5F, 0x3F, 0x58, 0x12, 0x64,- 0xD7, 0x66, 0x16, 0x62, 0xB9, 0x2F, 0x5A, 0xD3,- 0x7C, 0x1D, 0x32, 0xBD, 0x45, 0xFF, 0x81, 0xA4,- 0xED, 0x8A, 0xDC, 0x9E, 0xF3, 0x0D, 0xD9, 0x89- },- {- 0xD0, 0xDD, 0x65, 0x0B, 0xEF, 0xD3, 0xBA, 0x63,- 0xDC, 0x25, 0x10, 0x2C, 0x62, 0x7C, 0x92, 0x1B,- 0x9C, 0xBE, 0xB0, 0xB1, 0x30, 0x68, 0x69, 0x35,- 0xB5, 0xC9, 0x27, 0xCB, 0x7C, 0xCD, 0x5E, 0x3B- },- {- 0xE1, 0x14, 0x98, 0x16, 0xB1, 0x0A, 0x85, 0x14,- 0xFB, 0x3E, 0x2C, 0xAB, 0x2C, 0x08, 0xBE, 0xE9,- 0xF7, 0x3C, 0xE7, 0x62, 0x21, 0x70, 0x12, 0x46,- 0xA5, 0x89, 0xBB, 0xB6, 0x73, 0x02, 0xD8, 0xA9- },- {- 0x7D, 0xA3, 0xF4, 0x41, 0xDE, 0x90, 0x54, 0x31,- 0x7E, 0x72, 0xB5, 0xDB, 0xF9, 0x79, 0xDA, 0x01,- 0xE6, 0xBC, 0xEE, 0xBB, 0x84, 0x78, 0xEA, 0xE6,- 0xA2, 0x28, 0x49, 0xD9, 0x02, 0x92, 0x63, 0x5C- },- {- 0x12, 0x30, 0xB1, 0xFC, 0x8A, 0x7D, 0x92, 0x15,- 0xED, 0xC2, 0xD4, 0xA2, 0xDE, 0xCB, 0xDD, 0x0A,- 0x6E, 0x21, 0x6C, 0x92, 0x42, 0x78, 0xC9, 0x1F,- 0xC5, 0xD1, 0x0E, 0x7D, 0x60, 0x19, 0x2D, 0x94- },- {- 0x57, 0x50, 0xD7, 0x16, 0xB4, 0x80, 0x8F, 0x75,- 0x1F, 0xEB, 0xC3, 0x88, 0x06, 0xBA, 0x17, 0x0B,- 0xF6, 0xD5, 0x19, 0x9A, 0x78, 0x16, 0xBE, 0x51,- 0x4E, 0x3F, 0x93, 0x2F, 0xBE, 0x0C, 0xB8, 0x71- },- {- 0x6F, 0xC5, 0x9B, 0x2F, 0x10, 0xFE, 0xBA, 0x95,- 0x4A, 0xA6, 0x82, 0x0B, 0x3C, 0xA9, 0x87, 0xEE,- 0x81, 0xD5, 0xCC, 0x1D, 0xA3, 0xC6, 0x3C, 0xE8,- 0x27, 0x30, 0x1C, 0x56, 0x9D, 0xFB, 0x39, 0xCE- },- {- 0xC7, 0xC3, 0xFE, 0x1E, 0xEB, 0xDC, 0x7B, 0x5A,- 0x93, 0x93, 0x26, 0xE8, 0xDD, 0xB8, 0x3E, 0x8B,- 0xF2, 0xB7, 0x80, 0xB6, 0x56, 0x78, 0xCB, 0x62,- 0xF2, 0x08, 0xB0, 0x40, 0xAB, 0xDD, 0x35, 0xE2- },- {- 0x0C, 0x75, 0xC1, 0xA1, 0x5C, 0xF3, 0x4A, 0x31,- 0x4E, 0xE4, 0x78, 0xF4, 0xA5, 0xCE, 0x0B, 0x8A,- 0x6B, 0x36, 0x52, 0x8E, 0xF7, 0xA8, 0x20, 0x69,- 0x6C, 0x3E, 0x42, 0x46, 0xC5, 0xA1, 0x58, 0x64- },- {- 0x21, 0x6D, 0xC1, 0x2A, 0x10, 0x85, 0x69, 0xA3,- 0xC7, 0xCD, 0xDE, 0x4A, 0xED, 0x43, 0xA6, 0xC3,- 0x30, 0x13, 0x9D, 0xDA, 0x3C, 0xCC, 0x4A, 0x10,- 0x89, 0x05, 0xDB, 0x38, 0x61, 0x89, 0x90, 0x50- },- {- 0xA5, 0x7B, 0xE6, 0xAE, 0x67, 0x56, 0xF2, 0x8B,- 0x02, 0xF5, 0x9D, 0xAD, 0xF7, 0xE0, 0xD7, 0xD8,- 0x80, 0x7F, 0x10, 0xFA, 0x15, 0xCE, 0xD1, 0xAD,- 0x35, 0x85, 0x52, 0x1A, 0x1D, 0x99, 0x5A, 0x89- },- {- 0x81, 0x6A, 0xEF, 0x87, 0x59, 0x53, 0x71, 0x6C,- 0xD7, 0xA5, 0x81, 0xF7, 0x32, 0xF5, 0x3D, 0xD4,- 0x35, 0xDA, 0xB6, 0x6D, 0x09, 0xC3, 0x61, 0xD2,- 0xD6, 0x59, 0x2D, 0xE1, 0x77, 0x55, 0xD8, 0xA8- },- {- 0x9A, 0x76, 0x89, 0x32, 0x26, 0x69, 0x3B, 0x6E,- 0xA9, 0x7E, 0x6A, 0x73, 0x8F, 0x9D, 0x10, 0xFB,- 0x3D, 0x0B, 0x43, 0xAE, 0x0E, 0x8B, 0x7D, 0x81,- 0x23, 0xEA, 0x76, 0xCE, 0x97, 0x98, 0x9C, 0x7E- },- {- 0x8D, 0xAE, 0xDB, 0x9A, 0x27, 0x15, 0x29, 0xDB,- 0xB7, 0xDC, 0x3B, 0x60, 0x7F, 0xE5, 0xEB, 0x2D,- 0x32, 0x11, 0x77, 0x07, 0x58, 0xDD, 0x3B, 0x0A,- 0x35, 0x93, 0xD2, 0xD7, 0x95, 0x4E, 0x2D, 0x5B- },- {- 0x16, 0xDB, 0xC0, 0xAA, 0x5D, 0xD2, 0xC7, 0x74,- 0xF5, 0x05, 0x10, 0x0F, 0x73, 0x37, 0x86, 0xD8,- 0xA1, 0x75, 0xFC, 0xBB, 0xB5, 0x9C, 0x43, 0xE1,- 0xFB, 0xFF, 0x3E, 0x1E, 0xAF, 0x31, 0xCB, 0x4A- },- {- 0x86, 0x06, 0xCB, 0x89, 0x9C, 0x6A, 0xEA, 0xF5,- 0x1B, 0x9D, 0xB0, 0xFE, 0x49, 0x24, 0xA9, 0xFD,- 0x5D, 0xAB, 0xC1, 0x9F, 0x88, 0x26, 0xF2, 0xBC,- 0x1C, 0x1D, 0x7D, 0xA1, 0x4D, 0x2C, 0x2C, 0x99- },- {- 0x84, 0x79, 0x73, 0x1A, 0xED, 0xA5, 0x7B, 0xD3,- 0x7E, 0xAD, 0xB5, 0x1A, 0x50, 0x7E, 0x30, 0x7F,- 0x3B, 0xD9, 0x5E, 0x69, 0xDB, 0xCA, 0x94, 0xF3,- 0xBC, 0x21, 0x72, 0x60, 0x66, 0xAD, 0x6D, 0xFD- },- {- 0x58, 0x47, 0x3A, 0x9E, 0xA8, 0x2E, 0xFA, 0x3F,- 0x3B, 0x3D, 0x8F, 0xC8, 0x3E, 0xD8, 0x86, 0x31,- 0x27, 0xB3, 0x3A, 0xE8, 0xDE, 0xAE, 0x63, 0x07,- 0x20, 0x1E, 0xDB, 0x6D, 0xDE, 0x61, 0xDE, 0x29- },- {- 0x9A, 0x92, 0x55, 0xD5, 0x3A, 0xF1, 0x16, 0xDE,- 0x8B, 0xA2, 0x7C, 0xE3, 0x5B, 0x4C, 0x7E, 0x15,- 0x64, 0x06, 0x57, 0xA0, 0xFC, 0xB8, 0x88, 0xC7,- 0x0D, 0x95, 0x43, 0x1D, 0xAC, 0xD8, 0xF8, 0x30- },- {- 0x9E, 0xB0, 0x5F, 0xFB, 0xA3, 0x9F, 0xD8, 0x59,- 0x6A, 0x45, 0x49, 0x3E, 0x18, 0xD2, 0x51, 0x0B,- 0xF3, 0xEF, 0x06, 0x5C, 0x51, 0xD6, 0xE1, 0x3A,- 0xBE, 0x66, 0xAA, 0x57, 0xE0, 0x5C, 0xFD, 0xB7- },- {- 0x81, 0xDC, 0xC3, 0xA5, 0x05, 0xEA, 0xCE, 0x3F,- 0x87, 0x9D, 0x8F, 0x70, 0x27, 0x76, 0x77, 0x0F,- 0x9D, 0xF5, 0x0E, 0x52, 0x1D, 0x14, 0x28, 0xA8,- 0x5D, 0xAF, 0x04, 0xF9, 0xAD, 0x21, 0x50, 0xE0- },- {- 0xE3, 0xE3, 0xC4, 0xAA, 0x3A, 0xCB, 0xBC, 0x85,- 0x33, 0x2A, 0xF9, 0xD5, 0x64, 0xBC, 0x24, 0x16,- 0x5E, 0x16, 0x87, 0xF6, 0xB1, 0xAD, 0xCB, 0xFA,- 0xE7, 0x7A, 0x8F, 0x03, 0xC7, 0x2A, 0xC2, 0x8C- },- {- 0x67, 0x46, 0xC8, 0x0B, 0x4E, 0xB5, 0x6A, 0xEA,- 0x45, 0xE6, 0x4E, 0x72, 0x89, 0xBB, 0xA3, 0xED,- 0xBF, 0x45, 0xEC, 0xF8, 0x20, 0x64, 0x81, 0xFF,- 0x63, 0x02, 0x12, 0x29, 0x84, 0xCD, 0x52, 0x6A- },- {- 0x2B, 0x62, 0x8E, 0x52, 0x76, 0x4D, 0x7D, 0x62,- 0xC0, 0x86, 0x8B, 0x21, 0x23, 0x57, 0xCD, 0xD1,- 0x2D, 0x91, 0x49, 0x82, 0x2F, 0x4E, 0x98, 0x45,- 0xD9, 0x18, 0xA0, 0x8D, 0x1A, 0xE9, 0x90, 0xC0- },- {- 0xE4, 0xBF, 0xE8, 0x0D, 0x58, 0xC9, 0x19, 0x94,- 0x61, 0x39, 0x09, 0xDC, 0x4B, 0x1A, 0x12, 0x49,- 0x68, 0x96, 0xC0, 0x04, 0xAF, 0x7B, 0x57, 0x01,- 0x48, 0x3D, 0xE4, 0x5D, 0x28, 0x23, 0xD7, 0x8E- },- {- 0xEB, 0xB4, 0xBA, 0x15, 0x0C, 0xEF, 0x27, 0x34,- 0x34, 0x5B, 0x5D, 0x64, 0x1B, 0xBE, 0xD0, 0x3A,- 0x21, 0xEA, 0xFA, 0xE9, 0x33, 0xC9, 0x9E, 0x00,- 0x92, 0x12, 0xEF, 0x04, 0x57, 0x4A, 0x85, 0x30- },- {- 0x39, 0x66, 0xEC, 0x73, 0xB1, 0x54, 0xAC, 0xC6,- 0x97, 0xAC, 0x5C, 0xF5, 0xB2, 0x4B, 0x40, 0xBD,- 0xB0, 0xDB, 0x9E, 0x39, 0x88, 0x36, 0xD7, 0x6D,- 0x4B, 0x88, 0x0E, 0x3B, 0x2A, 0xF1, 0xAA, 0x27- },- {- 0xEF, 0x7E, 0x48, 0x31, 0xB3, 0xA8, 0x46, 0x36,- 0x51, 0x8D, 0x6E, 0x4B, 0xFC, 0xE6, 0x4A, 0x43,- 0xDB, 0x2A, 0x5D, 0xDA, 0x9C, 0xCA, 0x2B, 0x44,- 0xF3, 0x90, 0x33, 0xBD, 0xC4, 0x0D, 0x62, 0x43- },- {- 0x7A, 0xBF, 0x6A, 0xCF, 0x5C, 0x8E, 0x54, 0x9D,- 0xDB, 0xB1, 0x5A, 0xE8, 0xD8, 0xB3, 0x88, 0xC1,- 0xC1, 0x97, 0xE6, 0x98, 0x73, 0x7C, 0x97, 0x85,- 0x50, 0x1E, 0xD1, 0xF9, 0x49, 0x30, 0xB7, 0xD9- },- {- 0x88, 0x01, 0x8D, 0xED, 0x66, 0x81, 0x3F, 0x0C,- 0xA9, 0x5D, 0xEF, 0x47, 0x4C, 0x63, 0x06, 0x92,- 0x01, 0x99, 0x67, 0xB9, 0xE3, 0x68, 0x88, 0xDA,- 0xDD, 0x94, 0x12, 0x47, 0x19, 0xB6, 0x82, 0xF6- },- {- 0x39, 0x30, 0x87, 0x6B, 0x9F, 0xC7, 0x52, 0x90,- 0x36, 0xB0, 0x08, 0xB1, 0xB8, 0xBB, 0x99, 0x75,- 0x22, 0xA4, 0x41, 0x63, 0x5A, 0x0C, 0x25, 0xEC,- 0x02, 0xFB, 0x6D, 0x90, 0x26, 0xE5, 0x5A, 0x97- },- {- 0x0A, 0x40, 0x49, 0xD5, 0x7E, 0x83, 0x3B, 0x56,- 0x95, 0xFA, 0xC9, 0x3D, 0xD1, 0xFB, 0xEF, 0x31,- 0x66, 0xB4, 0x4B, 0x12, 0xAD, 0x11, 0x24, 0x86,- 0x62, 0x38, 0x3A, 0xE0, 0x51, 0xE1, 0x58, 0x27- },- {- 0x81, 0xDC, 0xC0, 0x67, 0x8B, 0xB6, 0xA7, 0x65,- 0xE4, 0x8C, 0x32, 0x09, 0x65, 0x4F, 0xE9, 0x00,- 0x89, 0xCE, 0x44, 0xFF, 0x56, 0x18, 0x47, 0x7E,- 0x39, 0xAB, 0x28, 0x64, 0x76, 0xDF, 0x05, 0x2B- },- {- 0xE6, 0x9B, 0x3A, 0x36, 0xA4, 0x46, 0x19, 0x12,- 0xDC, 0x08, 0x34, 0x6B, 0x11, 0xDD, 0xCB, 0x9D,- 0xB7, 0x96, 0xF8, 0x85, 0xFD, 0x01, 0x93, 0x6E,- 0x66, 0x2F, 0xE2, 0x92, 0x97, 0xB0, 0x99, 0xA4- },- {- 0x5A, 0xC6, 0x50, 0x3B, 0x0D, 0x8D, 0xA6, 0x91,- 0x76, 0x46, 0xE6, 0xDC, 0xC8, 0x7E, 0xDC, 0x58,- 0xE9, 0x42, 0x45, 0x32, 0x4C, 0xC2, 0x04, 0xF4,- 0xDD, 0x4A, 0xF0, 0x15, 0x63, 0xAC, 0xD4, 0x27- },- {- 0xDF, 0x6D, 0xDA, 0x21, 0x35, 0x9A, 0x30, 0xBC,- 0x27, 0x17, 0x80, 0x97, 0x1C, 0x1A, 0xBD, 0x56,- 0xA6, 0xEF, 0x16, 0x7E, 0x48, 0x08, 0x87, 0x88,- 0x8E, 0x73, 0xA8, 0x6D, 0x3B, 0xF6, 0x05, 0xE9- },- {- 0xE8, 0xE6, 0xE4, 0x70, 0x71, 0xE7, 0xB7, 0xDF,- 0x25, 0x80, 0xF2, 0x25, 0xCF, 0xBB, 0xED, 0xF8,- 0x4C, 0xE6, 0x77, 0x46, 0x62, 0x66, 0x28, 0xD3,- 0x30, 0x97, 0xE4, 0xB7, 0xDC, 0x57, 0x11, 0x07- },- {- 0x53, 0xE4, 0x0E, 0xAD, 0x62, 0x05, 0x1E, 0x19,- 0xCB, 0x9B, 0xA8, 0x13, 0x3E, 0x3E, 0x5C, 0x1C,- 0xE0, 0x0D, 0xDC, 0xAD, 0x8A, 0xCF, 0x34, 0x2A,- 0x22, 0x43, 0x60, 0xB0, 0xAC, 0xC1, 0x47, 0x77- },- {- 0x9C, 0xCD, 0x53, 0xFE, 0x80, 0xBE, 0x78, 0x6A,- 0xA9, 0x84, 0x63, 0x84, 0x62, 0xFB, 0x28, 0xAF,- 0xDF, 0x12, 0x2B, 0x34, 0xD7, 0x8F, 0x46, 0x87,- 0xEC, 0x63, 0x2B, 0xB1, 0x9D, 0xE2, 0x37, 0x1A- },- {- 0xCB, 0xD4, 0x80, 0x52, 0xC4, 0x8D, 0x78, 0x84,- 0x66, 0xA3, 0xE8, 0x11, 0x8C, 0x56, 0xC9, 0x7F,- 0xE1, 0x46, 0xE5, 0x54, 0x6F, 0xAA, 0xF9, 0x3E,- 0x2B, 0xC3, 0xC4, 0x7E, 0x45, 0x93, 0x97, 0x53- },- {- 0x25, 0x68, 0x83, 0xB1, 0x4E, 0x2A, 0xF4, 0x4D,- 0xAD, 0xB2, 0x8E, 0x1B, 0x34, 0xB2, 0xAC, 0x0F,- 0x0F, 0x4C, 0x91, 0xC3, 0x4E, 0xC9, 0x16, 0x9E,- 0x29, 0x03, 0x61, 0x58, 0xAC, 0xAA, 0x95, 0xB9- },- {- 0x44, 0x71, 0xB9, 0x1A, 0xB4, 0x2D, 0xB7, 0xC4,- 0xDD, 0x84, 0x90, 0xAB, 0x95, 0xA2, 0xEE, 0x8D,- 0x04, 0xE3, 0xEF, 0x5C, 0x3D, 0x6F, 0xC7, 0x1A,- 0xC7, 0x4B, 0x2B, 0x26, 0x91, 0x4D, 0x16, 0x41- },- {- 0xA5, 0xEB, 0x08, 0x03, 0x8F, 0x8F, 0x11, 0x55,- 0xED, 0x86, 0xE6, 0x31, 0x90, 0x6F, 0xC1, 0x30,- 0x95, 0xF6, 0xBB, 0xA4, 0x1D, 0xE5, 0xD4, 0xE7,- 0x95, 0x75, 0x8E, 0xC8, 0xC8, 0xDF, 0x8A, 0xF1- },- {- 0xDC, 0x1D, 0xB6, 0x4E, 0xD8, 0xB4, 0x8A, 0x91,- 0x0E, 0x06, 0x0A, 0x6B, 0x86, 0x63, 0x74, 0xC5,- 0x78, 0x78, 0x4E, 0x9A, 0xC4, 0x9A, 0xB2, 0x77,- 0x40, 0x92, 0xAC, 0x71, 0x50, 0x19, 0x34, 0xAC- },- {- 0x28, 0x54, 0x13, 0xB2, 0xF2, 0xEE, 0x87, 0x3D,- 0x34, 0x31, 0x9E, 0xE0, 0xBB, 0xFB, 0xB9, 0x0F,- 0x32, 0xDA, 0x43, 0x4C, 0xC8, 0x7E, 0x3D, 0xB5,- 0xED, 0x12, 0x1B, 0xB3, 0x98, 0xED, 0x96, 0x4B- },- {- 0x02, 0x16, 0xE0, 0xF8, 0x1F, 0x75, 0x0F, 0x26,- 0xF1, 0x99, 0x8B, 0xC3, 0x93, 0x4E, 0x3E, 0x12,- 0x4C, 0x99, 0x45, 0xE6, 0x85, 0xA6, 0x0B, 0x25,- 0xE8, 0xFB, 0xD9, 0x62, 0x5A, 0xB6, 0xB5, 0x99- },- {- 0x38, 0xC4, 0x10, 0xF5, 0xB9, 0xD4, 0x07, 0x20,- 0x50, 0x75, 0x5B, 0x31, 0xDC, 0xA8, 0x9F, 0xD5,- 0x39, 0x5C, 0x67, 0x85, 0xEE, 0xB3, 0xD7, 0x90,- 0xF3, 0x20, 0xFF, 0x94, 0x1C, 0x5A, 0x93, 0xBF- },- {- 0xF1, 0x84, 0x17, 0xB3, 0x9D, 0x61, 0x7A, 0xB1,- 0xC1, 0x8F, 0xDF, 0x91, 0xEB, 0xD0, 0xFC, 0x6D,- 0x55, 0x16, 0xBB, 0x34, 0xCF, 0x39, 0x36, 0x40,- 0x37, 0xBC, 0xE8, 0x1F, 0xA0, 0x4C, 0xEC, 0xB1- },- {- 0x1F, 0xA8, 0x77, 0xDE, 0x67, 0x25, 0x9D, 0x19,- 0x86, 0x3A, 0x2A, 0x34, 0xBC, 0xC6, 0x96, 0x2A,- 0x2B, 0x25, 0xFC, 0xBF, 0x5C, 0xBE, 0xCD, 0x7E,- 0xDE, 0x8F, 0x1F, 0xA3, 0x66, 0x88, 0xA7, 0x96- },- {- 0x5B, 0xD1, 0x69, 0xE6, 0x7C, 0x82, 0xC2, 0xC2,- 0xE9, 0x8E, 0xF7, 0x00, 0x8B, 0xDF, 0x26, 0x1F,- 0x2D, 0xDF, 0x30, 0xB1, 0xC0, 0x0F, 0x9E, 0x7F,- 0x27, 0x5B, 0xB3, 0xE8, 0xA2, 0x8D, 0xC9, 0xA2- },- {- 0xC8, 0x0A, 0xBE, 0xEB, 0xB6, 0x69, 0xAD, 0x5D,- 0xEE, 0xB5, 0xF5, 0xEC, 0x8E, 0xA6, 0xB7, 0xA0,- 0x5D, 0xDF, 0x7D, 0x31, 0xEC, 0x4C, 0x0A, 0x2E,- 0xE2, 0x0B, 0x0B, 0x98, 0xCA, 0xEC, 0x67, 0x46- },- {- 0xE7, 0x6D, 0x3F, 0xBD, 0xA5, 0xBA, 0x37, 0x4E,- 0x6B, 0xF8, 0xE5, 0x0F, 0xAD, 0xC3, 0xBB, 0xB9,- 0xBA, 0x5C, 0x20, 0x6E, 0xBD, 0xEC, 0x89, 0xA3,- 0xA5, 0x4C, 0xF3, 0xDD, 0x84, 0xA0, 0x70, 0x16- },- {- 0x7B, 0xBA, 0x9D, 0xC5, 0xB5, 0xDB, 0x20, 0x71,- 0xD1, 0x77, 0x52, 0xB1, 0x04, 0x4C, 0x1E, 0xCE,- 0xD9, 0x6A, 0xAF, 0x2D, 0xD4, 0x6E, 0x9B, 0x43,- 0x37, 0x50, 0xE8, 0xEA, 0x0D, 0xCC, 0x18, 0x70- },- {- 0xF2, 0x9B, 0x1B, 0x1A, 0xB9, 0xBA, 0xB1, 0x63,- 0x01, 0x8E, 0xE3, 0xDA, 0x15, 0x23, 0x2C, 0xCA,- 0x78, 0xEC, 0x52, 0xDB, 0xC3, 0x4E, 0xDA, 0x5B,- 0x82, 0x2E, 0xC1, 0xD8, 0x0F, 0xC2, 0x1B, 0xD0- },- {- 0x9E, 0xE3, 0xE3, 0xE7, 0xE9, 0x00, 0xF1, 0xE1,- 0x1D, 0x30, 0x8C, 0x4B, 0x2B, 0x30, 0x76, 0xD2,- 0x72, 0xCF, 0x70, 0x12, 0x4F, 0x9F, 0x51, 0xE1,- 0xDA, 0x60, 0xF3, 0x78, 0x46, 0xCD, 0xD2, 0xF4- },- {- 0x70, 0xEA, 0x3B, 0x01, 0x76, 0x92, 0x7D, 0x90,- 0x96, 0xA1, 0x85, 0x08, 0xCD, 0x12, 0x3A, 0x29,- 0x03, 0x25, 0x92, 0x0A, 0x9D, 0x00, 0xA8, 0x9B,- 0x5D, 0xE0, 0x42, 0x73, 0xFB, 0xC7, 0x6B, 0x85- },- {- 0x67, 0xDE, 0x25, 0xC0, 0x2A, 0x4A, 0xAB, 0xA2,- 0x3B, 0xDC, 0x97, 0x3C, 0x8B, 0xB0, 0xB5, 0x79,- 0x6D, 0x47, 0xCC, 0x06, 0x59, 0xD4, 0x3D, 0xFF,- 0x1F, 0x97, 0xDE, 0x17, 0x49, 0x63, 0xB6, 0x8E- },- {- 0xB2, 0x16, 0x8E, 0x4E, 0x0F, 0x18, 0xB0, 0xE6,- 0x41, 0x00, 0xB5, 0x17, 0xED, 0x95, 0x25, 0x7D,- 0x73, 0xF0, 0x62, 0x0D, 0xF8, 0x85, 0xC1, 0x3D,- 0x2E, 0xCF, 0x79, 0x36, 0x7B, 0x38, 0x4C, 0xEE- },- {- 0x2E, 0x7D, 0xEC, 0x24, 0x28, 0x85, 0x3B, 0x2C,- 0x71, 0x76, 0x07, 0x45, 0x54, 0x1F, 0x7A, 0xFE,- 0x98, 0x25, 0xB5, 0xDD, 0x77, 0xDF, 0x06, 0x51,- 0x1D, 0x84, 0x41, 0xA9, 0x4B, 0xAC, 0xC9, 0x27- },- {- 0xCA, 0x9F, 0xFA, 0xC4, 0xC4, 0x3F, 0x0B, 0x48,- 0x46, 0x1D, 0xC5, 0xC2, 0x63, 0xBE, 0xA3, 0xF6,- 0xF0, 0x06, 0x11, 0xCE, 0xAC, 0xAB, 0xF6, 0xF8,- 0x95, 0xBA, 0x2B, 0x01, 0x01, 0xDB, 0xB6, 0x8D- },- {- 0x74, 0x10, 0xD4, 0x2D, 0x8F, 0xD1, 0xD5, 0xE9,- 0xD2, 0xF5, 0x81, 0x5C, 0xB9, 0x34, 0x17, 0x99,- 0x88, 0x28, 0xEF, 0x3C, 0x42, 0x30, 0xBF, 0xBD,- 0x41, 0x2D, 0xF0, 0xA4, 0xA7, 0xA2, 0x50, 0x7A- },- {- 0x50, 0x10, 0xF6, 0x84, 0x51, 0x6D, 0xCC, 0xD0,- 0xB6, 0xEE, 0x08, 0x52, 0xC2, 0x51, 0x2B, 0x4D,- 0xC0, 0x06, 0x6C, 0xF0, 0xD5, 0x6F, 0x35, 0x30,- 0x29, 0x78, 0xDB, 0x8A, 0xE3, 0x2C, 0x6A, 0x81- },- {- 0xAC, 0xAA, 0xB5, 0x85, 0xF7, 0xB7, 0x9B, 0x71,- 0x99, 0x35, 0xCE, 0xB8, 0x95, 0x23, 0xDD, 0xC5,- 0x48, 0x27, 0xF7, 0x5C, 0x56, 0x88, 0x38, 0x56,- 0x15, 0x4A, 0x56, 0xCD, 0xCD, 0x5E, 0xE9, 0x88- },- {- 0x66, 0x6D, 0xE5, 0xD1, 0x44, 0x0F, 0xEE, 0x73,- 0x31, 0xAA, 0xF0, 0x12, 0x3A, 0x62, 0xEF, 0x2D,- 0x8B, 0xA5, 0x74, 0x53, 0xA0, 0x76, 0x96, 0x35,- 0xAC, 0x6C, 0xD0, 0x1E, 0x63, 0x3F, 0x77, 0x12- },- {- 0xA6, 0xF9, 0x86, 0x58, 0xF6, 0xEA, 0xBA, 0xF9,- 0x02, 0xD8, 0xB3, 0x87, 0x1A, 0x4B, 0x10, 0x1D,- 0x16, 0x19, 0x6E, 0x8A, 0x4B, 0x24, 0x1E, 0x15,- 0x58, 0xFE, 0x29, 0x96, 0x6E, 0x10, 0x3E, 0x8D- },- {- 0x89, 0x15, 0x46, 0xA8, 0xB2, 0x9F, 0x30, 0x47,- 0xDD, 0xCF, 0xE5, 0xB0, 0x0E, 0x45, 0xFD, 0x55,- 0x75, 0x63, 0x73, 0x10, 0x5E, 0xA8, 0x63, 0x7D,- 0xFC, 0xFF, 0x54, 0x7B, 0x6E, 0xA9, 0x53, 0x5F- },- {- 0x18, 0xDF, 0xBC, 0x1A, 0xC5, 0xD2, 0x5B, 0x07,- 0x61, 0x13, 0x7D, 0xBD, 0x22, 0xC1, 0x7C, 0x82,- 0x9D, 0x0F, 0x0E, 0xF1, 0xD8, 0x23, 0x44, 0xE9,- 0xC8, 0x9C, 0x28, 0x66, 0x94, 0xDA, 0x24, 0xE8- },- {- 0xB5, 0x4B, 0x9B, 0x67, 0xF8, 0xFE, 0xD5, 0x4B,- 0xBF, 0x5A, 0x26, 0x66, 0xDB, 0xDF, 0x4B, 0x23,- 0xCF, 0xF1, 0xD1, 0xB6, 0xF4, 0xAF, 0xC9, 0x85,- 0xB2, 0xE6, 0xD3, 0x30, 0x5A, 0x9F, 0xF8, 0x0F- },- {- 0x7D, 0xB4, 0x42, 0xE1, 0x32, 0xBA, 0x59, 0xBC,- 0x12, 0x89, 0xAA, 0x98, 0xB0, 0xD3, 0xE8, 0x06,- 0x00, 0x4F, 0x8E, 0xC1, 0x28, 0x11, 0xAF, 0x1E,- 0x2E, 0x33, 0xC6, 0x9B, 0xFD, 0xE7, 0x29, 0xE1- },- {- 0x25, 0x0F, 0x37, 0xCD, 0xC1, 0x5E, 0x81, 0x7D,- 0x2F, 0x16, 0x0D, 0x99, 0x56, 0xC7, 0x1F, 0xE3,- 0xEB, 0x5D, 0xB7, 0x45, 0x56, 0xE4, 0xAD, 0xF9,- 0xA4, 0xFF, 0xAF, 0xBA, 0x74, 0x01, 0x03, 0x96- },- {- 0x4A, 0xB8, 0xA3, 0xDD, 0x1D, 0xDF, 0x8A, 0xD4,- 0x3D, 0xAB, 0x13, 0xA2, 0x7F, 0x66, 0xA6, 0x54,- 0x4F, 0x29, 0x05, 0x97, 0xFA, 0x96, 0x04, 0x0E,- 0x0E, 0x1D, 0xB9, 0x26, 0x3A, 0xA4, 0x79, 0xF8- },- {- 0xEE, 0x61, 0x72, 0x7A, 0x07, 0x66, 0xDF, 0x93,- 0x9C, 0xCD, 0xC8, 0x60, 0x33, 0x40, 0x44, 0xC7,- 0x9A, 0x3C, 0x9B, 0x15, 0x62, 0x00, 0xBC, 0x3A,- 0xA3, 0x29, 0x73, 0x48, 0x3D, 0x83, 0x41, 0xAE- },- {- 0x3F, 0x68, 0xC7, 0xEC, 0x63, 0xAC, 0x11, 0xEB,- 0xB9, 0x8F, 0x94, 0xB3, 0x39, 0xB0, 0x5C, 0x10,- 0x49, 0x84, 0xFD, 0xA5, 0x01, 0x03, 0x06, 0x01,- 0x44, 0xE5, 0xA2, 0xBF, 0xCC, 0xC9, 0xDA, 0x95- },- {- 0x05, 0x6F, 0x29, 0x81, 0x6B, 0x8A, 0xF8, 0xF5,- 0x66, 0x82, 0xBC, 0x4D, 0x7C, 0xF0, 0x94, 0x11,- 0x1D, 0xA7, 0x73, 0x3E, 0x72, 0x6C, 0xD1, 0x3D,- 0x6B, 0x3E, 0x8E, 0xA0, 0x3E, 0x92, 0xA0, 0xD5- },- {- 0xF5, 0xEC, 0x43, 0xA2, 0x8A, 0xCB, 0xEF, 0xF1,- 0xF3, 0x31, 0x8A, 0x5B, 0xCA, 0xC7, 0xC6, 0x6D,- 0xDB, 0x52, 0x30, 0xB7, 0x9D, 0xB2, 0xD1, 0x05,- 0xBC, 0xBE, 0x15, 0xF3, 0xC1, 0x14, 0x8D, 0x69- },- {- 0x2A, 0x69, 0x60, 0xAD, 0x1D, 0x8D, 0xD5, 0x47,- 0x55, 0x5C, 0xFB, 0xD5, 0xE4, 0x60, 0x0F, 0x1E,- 0xAA, 0x1C, 0x8E, 0xDA, 0x34, 0xDE, 0x03, 0x74,- 0xEC, 0x4A, 0x26, 0xEA, 0xAA, 0xA3, 0x3B, 0x4E- },- {- 0xDC, 0xC1, 0xEA, 0x7B, 0xAA, 0xB9, 0x33, 0x84,- 0xF7, 0x6B, 0x79, 0x68, 0x66, 0x19, 0x97, 0x54,- 0x74, 0x2F, 0x7B, 0x96, 0xD6, 0xB4, 0xC1, 0x20,- 0x16, 0x5C, 0x04, 0xA6, 0xC4, 0xF5, 0xCE, 0x10- },- {- 0x13, 0xD5, 0xDF, 0x17, 0x92, 0x21, 0x37, 0x9C,- 0x6A, 0x78, 0xC0, 0x7C, 0x79, 0x3F, 0xF5, 0x34,- 0x87, 0xCA, 0xE6, 0xBF, 0x9F, 0xE8, 0x82, 0x54,- 0x1A, 0xB0, 0xE7, 0x35, 0xE3, 0xEA, 0xDA, 0x3B- },- {- 0x8C, 0x59, 0xE4, 0x40, 0x76, 0x41, 0xA0, 0x1E,- 0x8F, 0xF9, 0x1F, 0x99, 0x80, 0xDC, 0x23, 0x6F,- 0x4E, 0xCD, 0x6F, 0xCF, 0x52, 0x58, 0x9A, 0x09,- 0x9A, 0x96, 0x16, 0x33, 0x96, 0x77, 0x14, 0xE1- },- {- 0x83, 0x3B, 0x1A, 0xC6, 0xA2, 0x51, 0xFD, 0x08,- 0xFD, 0x6D, 0x90, 0x8F, 0xEA, 0x2A, 0x4E, 0xE1,- 0xE0, 0x40, 0xBC, 0xA9, 0x3F, 0xC1, 0xA3, 0x8E,- 0xC3, 0x82, 0x0E, 0x0C, 0x10, 0xBD, 0x82, 0xEA- },- {- 0xA2, 0x44, 0xF9, 0x27, 0xF3, 0xB4, 0x0B, 0x8F,- 0x6C, 0x39, 0x15, 0x70, 0xC7, 0x65, 0x41, 0x8F,- 0x2F, 0x6E, 0x70, 0x8E, 0xAC, 0x90, 0x06, 0xC5,- 0x1A, 0x7F, 0xEF, 0xF4, 0xAF, 0x3B, 0x2B, 0x9E- },- {- 0x3D, 0x99, 0xED, 0x95, 0x50, 0xCF, 0x11, 0x96,- 0xE6, 0xC4, 0xD2, 0x0C, 0x25, 0x96, 0x20, 0xF8,- 0x58, 0xC3, 0xD7, 0x03, 0x37, 0x4C, 0x12, 0x8C,- 0xE7, 0xB5, 0x90, 0x31, 0x0C, 0x83, 0x04, 0x6D- },- {- 0x2B, 0x35, 0xC4, 0x7D, 0x7B, 0x87, 0x76, 0x1F,- 0x0A, 0xE4, 0x3A, 0xC5, 0x6A, 0xC2, 0x7B, 0x9F,- 0x25, 0x83, 0x03, 0x67, 0xB5, 0x95, 0xBE, 0x8C,- 0x24, 0x0E, 0x94, 0x60, 0x0C, 0x6E, 0x33, 0x12- },- {- 0x5D, 0x11, 0xED, 0x37, 0xD2, 0x4D, 0xC7, 0x67,- 0x30, 0x5C, 0xB7, 0xE1, 0x46, 0x7D, 0x87, 0xC0,- 0x65, 0xAC, 0x4B, 0xC8, 0xA4, 0x26, 0xDE, 0x38,- 0x99, 0x1F, 0xF5, 0x9A, 0xA8, 0x73, 0x5D, 0x02- },- {- 0xB8, 0x36, 0x47, 0x8E, 0x1C, 0xA0, 0x64, 0x0D,- 0xCE, 0x6F, 0xD9, 0x10, 0xA5, 0x09, 0x62, 0x72,- 0xC8, 0x33, 0x09, 0x90, 0xCD, 0x97, 0x86, 0x4A,- 0xC2, 0xBF, 0x14, 0xEF, 0x6B, 0x23, 0x91, 0x4A- },- {- 0x91, 0x00, 0xF9, 0x46, 0xD6, 0xCC, 0xDE, 0x3A,- 0x59, 0x7F, 0x90, 0xD3, 0x9F, 0xC1, 0x21, 0x5B,- 0xAD, 0xDC, 0x74, 0x13, 0x64, 0x3D, 0x85, 0xC2,- 0x1C, 0x3E, 0xEE, 0x5D, 0x2D, 0xD3, 0x28, 0x94- },- {- 0xDA, 0x70, 0xEE, 0xDD, 0x23, 0xE6, 0x63, 0xAA,- 0x1A, 0x74, 0xB9, 0x76, 0x69, 0x35, 0xB4, 0x79,- 0x22, 0x2A, 0x72, 0xAF, 0xBA, 0x5C, 0x79, 0x51,- 0x58, 0xDA, 0xD4, 0x1A, 0x3B, 0xD7, 0x7E, 0x40- },- {- 0xF0, 0x67, 0xED, 0x6A, 0x0D, 0xBD, 0x43, 0xAA,- 0x0A, 0x92, 0x54, 0xE6, 0x9F, 0xD6, 0x6B, 0xDD,- 0x8A, 0xCB, 0x87, 0xDE, 0x93, 0x6C, 0x25, 0x8C,- 0xFB, 0x02, 0x28, 0x5F, 0x2C, 0x11, 0xFA, 0x79- },- {- 0x71, 0x5C, 0x99, 0xC7, 0xD5, 0x75, 0x80, 0xCF,- 0x97, 0x53, 0xB4, 0xC1, 0xD7, 0x95, 0xE4, 0x5A,- 0x83, 0xFB, 0xB2, 0x28, 0xC0, 0xD3, 0x6F, 0xBE,- 0x20, 0xFA, 0xF3, 0x9B, 0xDD, 0x6D, 0x4E, 0x85- },- {- 0xE4, 0x57, 0xD6, 0xAD, 0x1E, 0x67, 0xCB, 0x9B,- 0xBD, 0x17, 0xCB, 0xD6, 0x98, 0xFA, 0x6D, 0x7D,- 0xAE, 0x0C, 0x9B, 0x7A, 0xD6, 0xCB, 0xD6, 0x53,- 0x96, 0x34, 0xE3, 0x2A, 0x71, 0x9C, 0x84, 0x92- },- {- 0xEC, 0xE3, 0xEA, 0x81, 0x03, 0xE0, 0x24, 0x83,- 0xC6, 0x4A, 0x70, 0xA4, 0xBD, 0xCE, 0xE8, 0xCE,- 0xB6, 0x27, 0x8F, 0x25, 0x33, 0xF3, 0xF4, 0x8D,- 0xBE, 0xED, 0xFB, 0xA9, 0x45, 0x31, 0xD4, 0xAE- },- {- 0x38, 0x8A, 0xA5, 0xD3, 0x66, 0x7A, 0x97, 0xC6,- 0x8D, 0x3D, 0x56, 0xF8, 0xF3, 0xEE, 0x8D, 0x3D,- 0x36, 0x09, 0x1F, 0x17, 0xFE, 0x5D, 0x1B, 0x0D,- 0x5D, 0x84, 0xC9, 0x3B, 0x2F, 0xFE, 0x40, 0xBD- },- {- 0x8B, 0x6B, 0x31, 0xB9, 0xAD, 0x7C, 0x3D, 0x5C,- 0xD8, 0x4B, 0xF9, 0x89, 0x47, 0xB9, 0xCD, 0xB5,- 0x9D, 0xF8, 0xA2, 0x5F, 0xF7, 0x38, 0x10, 0x10,- 0x13, 0xBE, 0x4F, 0xD6, 0x5E, 0x1D, 0xD1, 0xA3- },- {- 0x06, 0x62, 0x91, 0xF6, 0xBB, 0xD2, 0x5F, 0x3C,- 0x85, 0x3D, 0xB7, 0xD8, 0xB9, 0x5C, 0x9A, 0x1C,- 0xFB, 0x9B, 0xF1, 0xC1, 0xC9, 0x9F, 0xB9, 0x5A,- 0x9B, 0x78, 0x69, 0xD9, 0x0F, 0x1C, 0x29, 0x03- },- {- 0xA7, 0x07, 0xEF, 0xBC, 0xCD, 0xCE, 0xED, 0x42,- 0x96, 0x7A, 0x66, 0xF5, 0x53, 0x9B, 0x93, 0xED,- 0x75, 0x60, 0xD4, 0x67, 0x30, 0x40, 0x16, 0xC4,- 0x78, 0x0D, 0x77, 0x55, 0xA5, 0x65, 0xD4, 0xC4- },- {- 0x38, 0xC5, 0x3D, 0xFB, 0x70, 0xBE, 0x7E, 0x79,- 0x2B, 0x07, 0xA6, 0xA3, 0x5B, 0x8A, 0x6A, 0x0A,- 0xBA, 0x02, 0xC5, 0xC5, 0xF3, 0x8B, 0xAF, 0x5C,- 0x82, 0x3F, 0xDF, 0xD9, 0xE4, 0x2D, 0x65, 0x7E- },- {- 0xF2, 0x91, 0x13, 0x86, 0x50, 0x1D, 0x9A, 0xB9,- 0xD7, 0x20, 0xCF, 0x8A, 0xD1, 0x05, 0x03, 0xD5,- 0x63, 0x4B, 0xF4, 0xB7, 0xD1, 0x2B, 0x56, 0xDF,- 0xB7, 0x4F, 0xEC, 0xC6, 0xE4, 0x09, 0x3F, 0x68- },- {- 0xC6, 0xF2, 0xBD, 0xD5, 0x2B, 0x81, 0xE6, 0xE4,- 0xF6, 0x59, 0x5A, 0xBD, 0x4D, 0x7F, 0xB3, 0x1F,- 0x65, 0x11, 0x69, 0xD0, 0x0F, 0xF3, 0x26, 0x92,- 0x6B, 0x34, 0x94, 0x7B, 0x28, 0xA8, 0x39, 0x59- },- {- 0x29, 0x3D, 0x94, 0xB1, 0x8C, 0x98, 0xBB, 0x32,- 0x23, 0x36, 0x6B, 0x8C, 0xE7, 0x4C, 0x28, 0xFB,- 0xDF, 0x28, 0xE1, 0xF8, 0x4A, 0x33, 0x50, 0xB0,- 0xEB, 0x2D, 0x18, 0x04, 0xA5, 0x77, 0x57, 0x9B- },- {- 0x2C, 0x2F, 0xA5, 0xC0, 0xB5, 0x15, 0x33, 0x16,- 0x5B, 0xC3, 0x75, 0xC2, 0x2E, 0x27, 0x81, 0x76,- 0x82, 0x70, 0xA3, 0x83, 0x98, 0x5D, 0x13, 0xBD,- 0x6B, 0x67, 0xB6, 0xFD, 0x67, 0xF8, 0x89, 0xEB- },- {- 0xCA, 0xA0, 0x9B, 0x82, 0xB7, 0x25, 0x62, 0xE4,- 0x3F, 0x4B, 0x22, 0x75, 0xC0, 0x91, 0x91, 0x8E,- 0x62, 0x4D, 0x91, 0x16, 0x61, 0xCC, 0x81, 0x1B,- 0xB5, 0xFA, 0xEC, 0x51, 0xF6, 0x08, 0x8E, 0xF7- },- {- 0x24, 0x76, 0x1E, 0x45, 0xE6, 0x74, 0x39, 0x53,- 0x79, 0xFB, 0x17, 0x72, 0x9C, 0x78, 0xCB, 0x93,- 0x9E, 0x6F, 0x74, 0xC5, 0xDF, 0xFB, 0x9C, 0x96,- 0x1F, 0x49, 0x59, 0x82, 0xC3, 0xED, 0x1F, 0xE3- },- {- 0x55, 0xB7, 0x0A, 0x82, 0x13, 0x1E, 0xC9, 0x48,- 0x88, 0xD7, 0xAB, 0x54, 0xA7, 0xC5, 0x15, 0x25,- 0x5C, 0x39, 0x38, 0xBB, 0x10, 0xBC, 0x78, 0x4D,- 0xC9, 0xB6, 0x7F, 0x07, 0x6E, 0x34, 0x1A, 0x73- },- {- 0x6A, 0xB9, 0x05, 0x7B, 0x97, 0x7E, 0xBC, 0x3C,- 0xA4, 0xD4, 0xCE, 0x74, 0x50, 0x6C, 0x25, 0xCC,- 0xCD, 0xC5, 0x66, 0x49, 0x7C, 0x45, 0x0B, 0x54,- 0x15, 0xA3, 0x94, 0x86, 0xF8, 0x65, 0x7A, 0x03- },- {- 0x24, 0x06, 0x6D, 0xEE, 0xE0, 0xEC, 0xEE, 0x15,- 0xA4, 0x5F, 0x0A, 0x32, 0x6D, 0x0F, 0x8D, 0xBC,- 0x79, 0x76, 0x1E, 0xBB, 0x93, 0xCF, 0x8C, 0x03,- 0x77, 0xAF, 0x44, 0x09, 0x78, 0xFC, 0xF9, 0x94- },- {- 0x20, 0x00, 0x0D, 0x3F, 0x66, 0xBA, 0x76, 0x86,- 0x0D, 0x5A, 0x95, 0x06, 0x88, 0xB9, 0xAA, 0x0D,- 0x76, 0xCF, 0xEA, 0x59, 0xB0, 0x05, 0xD8, 0x59,- 0x91, 0x4B, 0x1A, 0x46, 0x65, 0x3A, 0x93, 0x9B- },- {- 0xB9, 0x2D, 0xAA, 0x79, 0x60, 0x3E, 0x3B, 0xDB,- 0xC3, 0xBF, 0xE0, 0xF4, 0x19, 0xE4, 0x09, 0xB2,- 0xEA, 0x10, 0xDC, 0x43, 0x5B, 0xEE, 0xFE, 0x29,- 0x59, 0xDA, 0x16, 0x89, 0x5D, 0x5D, 0xCA, 0x1C- },- {- 0xE9, 0x47, 0x94, 0x87, 0x05, 0xB2, 0x06, 0xD5,- 0x72, 0xB0, 0xE8, 0xF6, 0x2F, 0x66, 0xA6, 0x55,- 0x1C, 0xBD, 0x6B, 0xC3, 0x05, 0xD2, 0x6C, 0xE7,- 0x53, 0x9A, 0x12, 0xF9, 0xAA, 0xDF, 0x75, 0x71- },- {- 0x3D, 0x67, 0xC1, 0xB3, 0xF9, 0xB2, 0x39, 0x10,- 0xE3, 0xD3, 0x5E, 0x6B, 0x0F, 0x2C, 0xCF, 0x44,- 0xA0, 0xB5, 0x40, 0xA4, 0x5C, 0x18, 0xBA, 0x3C,- 0x36, 0x26, 0x4D, 0xD4, 0x8E, 0x96, 0xAF, 0x6A- },- {- 0xC7, 0x55, 0x8B, 0xAB, 0xDA, 0x04, 0xBC, 0xCB,- 0x76, 0x4D, 0x0B, 0xBF, 0x33, 0x58, 0x42, 0x51,- 0x41, 0x90, 0x2D, 0x22, 0x39, 0x1D, 0x9F, 0x8C,- 0x59, 0x15, 0x9F, 0xEC, 0x9E, 0x49, 0xB1, 0x51- },- {- 0x0B, 0x73, 0x2B, 0xB0, 0x35, 0x67, 0x5A, 0x50,- 0xFF, 0x58, 0xF2, 0xC2, 0x42, 0xE4, 0x71, 0x0A,- 0xEC, 0xE6, 0x46, 0x70, 0x07, 0x9C, 0x13, 0x04,- 0x4C, 0x79, 0xC9, 0xB7, 0x49, 0x1F, 0x70, 0x00- },- {- 0xD1, 0x20, 0xB5, 0xEF, 0x6D, 0x57, 0xEB, 0xF0,- 0x6E, 0xAF, 0x96, 0xBC, 0x93, 0x3C, 0x96, 0x7B,- 0x16, 0xCB, 0xE6, 0xE2, 0xBF, 0x00, 0x74, 0x1C,- 0x30, 0xAA, 0x1C, 0x54, 0xBA, 0x64, 0x80, 0x1F- },- {- 0x58, 0xD2, 0x12, 0xAD, 0x6F, 0x58, 0xAE, 0xF0,- 0xF8, 0x01, 0x16, 0xB4, 0x41, 0xE5, 0x7F, 0x61,- 0x95, 0xBF, 0xEF, 0x26, 0xB6, 0x14, 0x63, 0xED,- 0xEC, 0x11, 0x83, 0xCD, 0xB0, 0x4F, 0xE7, 0x6D- },- {- 0xB8, 0x83, 0x6F, 0x51, 0xD1, 0xE2, 0x9B, 0xDF,- 0xDB, 0xA3, 0x25, 0x56, 0x53, 0x60, 0x26, 0x8B,- 0x8F, 0xAD, 0x62, 0x74, 0x73, 0xED, 0xEC, 0xEF,- 0x7E, 0xAE, 0xFE, 0xE8, 0x37, 0xC7, 0x40, 0x03- },- {- 0xC5, 0x47, 0xA3, 0xC1, 0x24, 0xAE, 0x56, 0x85,- 0xFF, 0xA7, 0xB8, 0xED, 0xAF, 0x96, 0xEC, 0x86,- 0xF8, 0xB2, 0xD0, 0xD5, 0x0C, 0xEE, 0x8B, 0xE3,- 0xB1, 0xF0, 0xC7, 0x67, 0x63, 0x06, 0x9D, 0x9C- },- {- 0x5D, 0x16, 0x8B, 0x76, 0x9A, 0x2F, 0x67, 0x85,- 0x3D, 0x62, 0x95, 0xF7, 0x56, 0x8B, 0xE4, 0x0B,- 0xB7, 0xA1, 0x6B, 0x8D, 0x65, 0xBA, 0x87, 0x63,- 0x5D, 0x19, 0x78, 0xD2, 0xAB, 0x11, 0xBA, 0x2A- },- {- 0xA2, 0xF6, 0x75, 0xDC, 0x73, 0x02, 0x63, 0x8C,- 0xB6, 0x02, 0x01, 0x06, 0x4C, 0xA5, 0x50, 0x77,- 0x71, 0x4D, 0x71, 0xFE, 0x09, 0x6A, 0x31, 0x5F,- 0x2F, 0xE7, 0x40, 0x12, 0x77, 0xCA, 0xA5, 0xAF- },- {- 0xC8, 0xAA, 0xB5, 0xCD, 0x01, 0x60, 0xAE, 0x78,- 0xCD, 0x2E, 0x8A, 0xC5, 0xFB, 0x0E, 0x09, 0x3C,- 0xDB, 0x5C, 0x4B, 0x60, 0x52, 0xA0, 0xA9, 0x7B,- 0xB0, 0x42, 0x16, 0x82, 0x6F, 0xA7, 0xA4, 0x37- },- {- 0xFF, 0x68, 0xCA, 0x40, 0x35, 0xBF, 0xEB, 0x43,- 0xFB, 0xF1, 0x45, 0xFD, 0xDD, 0x5E, 0x43, 0xF1,- 0xCE, 0xA5, 0x4F, 0x11, 0xF7, 0xBE, 0xE1, 0x30,- 0x58, 0xF0, 0x27, 0x32, 0x9A, 0x4A, 0x5F, 0xA4- },- {- 0x1D, 0x4E, 0x54, 0x87, 0xAE, 0x3C, 0x74, 0x0F,- 0x2B, 0xA6, 0xE5, 0x41, 0xAC, 0x91, 0xBC, 0x2B,- 0xFC, 0xD2, 0x99, 0x9C, 0x51, 0x8D, 0x80, 0x7B,- 0x42, 0x67, 0x48, 0x80, 0x3A, 0x35, 0x0F, 0xD4- },- {- 0x6D, 0x24, 0x4E, 0x1A, 0x06, 0xCE, 0x4E, 0xF5,- 0x78, 0xDD, 0x0F, 0x63, 0xAF, 0xF0, 0x93, 0x67,- 0x06, 0x73, 0x51, 0x19, 0xCA, 0x9C, 0x8D, 0x22,- 0xD8, 0x6C, 0x80, 0x14, 0x14, 0xAB, 0x97, 0x41- },- {- 0xDE, 0xCF, 0x73, 0x29, 0xDB, 0xCC, 0x82, 0x7B,- 0x8F, 0xC5, 0x24, 0xC9, 0x43, 0x1E, 0x89, 0x98,- 0x02, 0x9E, 0xCE, 0x12, 0xCE, 0x93, 0xB7, 0xB2,- 0xF3, 0xE7, 0x69, 0xA9, 0x41, 0xFB, 0x8C, 0xEA- },- {- 0x2F, 0xAF, 0xCC, 0x0F, 0x2E, 0x63, 0xCB, 0xD0,- 0x77, 0x55, 0xBE, 0x7B, 0x75, 0xEC, 0xEA, 0x0A,- 0xDF, 0xF9, 0xAA, 0x5E, 0xDE, 0x2A, 0x52, 0xFD,- 0xAB, 0x4D, 0xFD, 0x03, 0x74, 0xCD, 0x48, 0x3F- },- {- 0xAA, 0x85, 0x01, 0x0D, 0xD4, 0x6A, 0x54, 0x6B,- 0x53, 0x5E, 0xF4, 0xCF, 0x5F, 0x07, 0xD6, 0x51,- 0x61, 0xE8, 0x98, 0x28, 0xF3, 0xA7, 0x7D, 0xB7,- 0xB9, 0xB5, 0x6F, 0x0D, 0xF5, 0x9A, 0xAE, 0x45- },- {- 0x07, 0xE8, 0xE1, 0xEE, 0x73, 0x2C, 0xB0, 0xD3,- 0x56, 0xC9, 0xC0, 0xD1, 0x06, 0x9C, 0x89, 0xD1,- 0x7A, 0xDF, 0x6A, 0x9A, 0x33, 0x4F, 0x74, 0x5E,- 0xC7, 0x86, 0x73, 0x32, 0x54, 0x8C, 0xA8, 0xE9- },- {- 0x0E, 0x01, 0xE8, 0x1C, 0xAD, 0xA8, 0x16, 0x2B,- 0xFD, 0x5F, 0x8A, 0x8C, 0x81, 0x8A, 0x6C, 0x69,- 0xFE, 0xDF, 0x02, 0xCE, 0xB5, 0x20, 0x85, 0x23,- 0xCB, 0xE5, 0x31, 0x3B, 0x89, 0xCA, 0x10, 0x53- },- {- 0x6B, 0xB6, 0xC6, 0x47, 0x26, 0x55, 0x08, 0x43,- 0x99, 0x85, 0x2E, 0x00, 0x24, 0x9F, 0x8C, 0xB2,- 0x47, 0x89, 0x6D, 0x39, 0x2B, 0x02, 0xD7, 0x3B,- 0x7F, 0x0D, 0xD8, 0x18, 0xE1, 0xE2, 0x9B, 0x07- },- {- 0x42, 0xD4, 0x63, 0x6E, 0x20, 0x60, 0xF0, 0x8F,- 0x41, 0xC8, 0x82, 0xE7, 0x6B, 0x39, 0x6B, 0x11,- 0x2E, 0xF6, 0x27, 0xCC, 0x24, 0xC4, 0x3D, 0xD5,- 0xF8, 0x3A, 0x1D, 0x1A, 0x7E, 0xAD, 0x71, 0x1A- },- {- 0x48, 0x58, 0xC9, 0xA1, 0x88, 0xB0, 0x23, 0x4F,- 0xB9, 0xA8, 0xD4, 0x7D, 0x0B, 0x41, 0x33, 0x65,- 0x0A, 0x03, 0x0B, 0xD0, 0x61, 0x1B, 0x87, 0xC3,- 0x89, 0x2E, 0x94, 0x95, 0x1F, 0x8D, 0xF8, 0x52- },- {- 0x3F, 0xAB, 0x3E, 0x36, 0x98, 0x8D, 0x44, 0x5A,- 0x51, 0xC8, 0x78, 0x3E, 0x53, 0x1B, 0xE3, 0xA0,- 0x2B, 0xE4, 0x0C, 0xD0, 0x47, 0x96, 0xCF, 0xB6,- 0x1D, 0x40, 0x34, 0x74, 0x42, 0xD3, 0xF7, 0x94- },- {- 0xEB, 0xAB, 0xC4, 0x96, 0x36, 0xBD, 0x43, 0x3D,- 0x2E, 0xC8, 0xF0, 0xE5, 0x18, 0x73, 0x2E, 0xF8,- 0xFA, 0x21, 0xD4, 0xD0, 0x71, 0xCC, 0x3B, 0xC4,- 0x6C, 0xD7, 0x9F, 0xA3, 0x8A, 0x28, 0xB8, 0x10- },- {- 0xA1, 0xD0, 0x34, 0x35, 0x23, 0xB8, 0x93, 0xFC,- 0xA8, 0x4F, 0x47, 0xFE, 0xB4, 0xA6, 0x4D, 0x35,- 0x0A, 0x17, 0xD8, 0xEE, 0xF5, 0x49, 0x7E, 0xCE,- 0x69, 0x7D, 0x02, 0xD7, 0x91, 0x78, 0xB5, 0x91- },- {- 0x26, 0x2E, 0xBF, 0xD9, 0x13, 0x0B, 0x7D, 0x28,- 0x76, 0x0D, 0x08, 0xEF, 0x8B, 0xFD, 0x3B, 0x86,- 0xCD, 0xD3, 0xB2, 0x11, 0x3D, 0x2C, 0xAE, 0xF7,- 0xEA, 0x95, 0x1A, 0x30, 0x3D, 0xFA, 0x38, 0x46- },- {- 0xF7, 0x61, 0x58, 0xED, 0xD5, 0x0A, 0x15, 0x4F,- 0xA7, 0x82, 0x03, 0xED, 0x23, 0x62, 0x93, 0x2F,- 0xCB, 0x82, 0x53, 0xAA, 0xE3, 0x78, 0x90, 0x3E,- 0xDE, 0xD1, 0xE0, 0x3F, 0x70, 0x21, 0xA2, 0x57- },- {- 0x26, 0x17, 0x8E, 0x95, 0x0A, 0xC7, 0x22, 0xF6,- 0x7A, 0xE5, 0x6E, 0x57, 0x1B, 0x28, 0x4C, 0x02,- 0x07, 0x68, 0x4A, 0x63, 0x34, 0xA1, 0x77, 0x48,- 0xA9, 0x4D, 0x26, 0x0B, 0xC5, 0xF5, 0x52, 0x74- },- {- 0xC3, 0x78, 0xD1, 0xE4, 0x93, 0xB4, 0x0E, 0xF1,- 0x1F, 0xE6, 0xA1, 0x5D, 0x9C, 0x27, 0x37, 0xA3,- 0x78, 0x09, 0x63, 0x4C, 0x5A, 0xBA, 0xD5, 0xB3,- 0x3D, 0x7E, 0x39, 0x3B, 0x4A, 0xE0, 0x5D, 0x03- },- {- 0x98, 0x4B, 0xD8, 0x37, 0x91, 0x01, 0xBE, 0x8F,- 0xD8, 0x06, 0x12, 0xD8, 0xEA, 0x29, 0x59, 0xA7,- 0x86, 0x5E, 0xC9, 0x71, 0x85, 0x23, 0x55, 0x01,- 0x07, 0xAE, 0x39, 0x38, 0xDF, 0x32, 0x01, 0x1B- },- {- 0xC6, 0xF2, 0x5A, 0x81, 0x2A, 0x14, 0x48, 0x58,- 0xAC, 0x5C, 0xED, 0x37, 0xA9, 0x3A, 0x9F, 0x47,- 0x59, 0xBA, 0x0B, 0x1C, 0x0F, 0xDC, 0x43, 0x1D,- 0xCE, 0x35, 0xF9, 0xEC, 0x1F, 0x1F, 0x4A, 0x99- },- {- 0x92, 0x4C, 0x75, 0xC9, 0x44, 0x24, 0xFF, 0x75,- 0xE7, 0x4B, 0x8B, 0x4E, 0x94, 0x35, 0x89, 0x58,- 0xB0, 0x27, 0xB1, 0x71, 0xDF, 0x5E, 0x57, 0x89,- 0x9A, 0xD0, 0xD4, 0xDA, 0xC3, 0x73, 0x53, 0xB6- },- {- 0x0A, 0xF3, 0x58, 0x92, 0xA6, 0x3F, 0x45, 0x93,- 0x1F, 0x68, 0x46, 0xED, 0x19, 0x03, 0x61, 0xCD,- 0x07, 0x30, 0x89, 0xE0, 0x77, 0x16, 0x57, 0x14,- 0xB5, 0x0B, 0x81, 0xA2, 0xE3, 0xDD, 0x9B, 0xA1- },- {- 0xCC, 0x80, 0xCE, 0xFB, 0x26, 0xC3, 0xB2, 0xB0,- 0xDA, 0xEF, 0x23, 0x3E, 0x60, 0x6D, 0x5F, 0xFC,- 0x80, 0xFA, 0x17, 0x42, 0x7D, 0x18, 0xE3, 0x04,- 0x89, 0x67, 0x3E, 0x06, 0xEF, 0x4B, 0x87, 0xF7- },- {- 0xC2, 0xF8, 0xC8, 0x11, 0x74, 0x47, 0xF3, 0x97,- 0x8B, 0x08, 0x18, 0xDC, 0xF6, 0xF7, 0x01, 0x16,- 0xAC, 0x56, 0xFD, 0x18, 0x4D, 0xD1, 0x27, 0x84,- 0x94, 0xE1, 0x03, 0xFC, 0x6D, 0x74, 0xA8, 0x87- },- {- 0xBD, 0xEC, 0xF6, 0xBF, 0xC1, 0xBA, 0x0D, 0xF6,- 0xE8, 0x62, 0xC8, 0x31, 0x99, 0x22, 0x07, 0x79,- 0x6A, 0xCC, 0x79, 0x79, 0x68, 0x35, 0x88, 0x28,- 0xC0, 0x6E, 0x7A, 0x51, 0xE0, 0x90, 0x09, 0x8F- },- {- 0x24, 0xD1, 0xA2, 0x6E, 0x3D, 0xAB, 0x02, 0xFE,- 0x45, 0x72, 0xD2, 0xAA, 0x7D, 0xBD, 0x3E, 0xC3,- 0x0F, 0x06, 0x93, 0xDB, 0x26, 0xF2, 0x73, 0xD0,- 0xAB, 0x2C, 0xB0, 0xC1, 0x3B, 0x5E, 0x64, 0x51- },- {- 0xEC, 0x56, 0xF5, 0x8B, 0x09, 0x29, 0x9A, 0x30,- 0x0B, 0x14, 0x05, 0x65, 0xD7, 0xD3, 0xE6, 0x87,- 0x82, 0xB6, 0xE2, 0xFB, 0xEB, 0x4B, 0x7E, 0xA9,- 0x7A, 0xC0, 0x57, 0x98, 0x90, 0x61, 0xDD, 0x3F- },- {- 0x11, 0xA4, 0x37, 0xC1, 0xAB, 0xA3, 0xC1, 0x19,- 0xDD, 0xFA, 0xB3, 0x1B, 0x3E, 0x8C, 0x84, 0x1D,- 0xEE, 0xEB, 0x91, 0x3E, 0xF5, 0x7F, 0x7E, 0x48,- 0xF2, 0xC9, 0xCF, 0x5A, 0x28, 0xFA, 0x42, 0xBC- },- {- 0x53, 0xC7, 0xE6, 0x11, 0x4B, 0x85, 0x0A, 0x2C,- 0xB4, 0x96, 0xC9, 0xB3, 0xC6, 0x9A, 0x62, 0x3E,- 0xAE, 0xA2, 0xCB, 0x1D, 0x33, 0xDD, 0x81, 0x7E,- 0x47, 0x65, 0xED, 0xAA, 0x68, 0x23, 0xC2, 0x28- },- {- 0x15, 0x4C, 0x3E, 0x96, 0xFE, 0xE5, 0xDB, 0x14,- 0xF8, 0x77, 0x3E, 0x18, 0xAF, 0x14, 0x85, 0x79,- 0x13, 0x50, 0x9D, 0xA9, 0x99, 0xB4, 0x6C, 0xDD,- 0x3D, 0x4C, 0x16, 0x97, 0x60, 0xC8, 0x3A, 0xD2- },- {- 0x40, 0xB9, 0x91, 0x6F, 0x09, 0x3E, 0x02, 0x7A,- 0x87, 0x86, 0x64, 0x18, 0x18, 0x92, 0x06, 0x20,- 0x47, 0x2F, 0xBC, 0xF6, 0x8F, 0x70, 0x1D, 0x1B,- 0x68, 0x06, 0x32, 0xE6, 0x99, 0x6B, 0xDE, 0xD3- },- {- 0x24, 0xC4, 0xCB, 0xBA, 0x07, 0x11, 0x98, 0x31,- 0xA7, 0x26, 0xB0, 0x53, 0x05, 0xD9, 0x6D, 0xA0,- 0x2F, 0xF8, 0xB1, 0x48, 0xF0, 0xDA, 0x44, 0x0F,- 0xE2, 0x33, 0xBC, 0xAA, 0x32, 0xC7, 0x2F, 0x6F- },- {- 0x5D, 0x20, 0x15, 0x10, 0x25, 0x00, 0x20, 0xB7,- 0x83, 0x68, 0x96, 0x88, 0xAB, 0xBF, 0x8E, 0xCF,- 0x25, 0x94, 0xA9, 0x6A, 0x08, 0xF2, 0xBF, 0xEC,- 0x6C, 0xE0, 0x57, 0x44, 0x65, 0xDD, 0xED, 0x71- },- {- 0x04, 0x3B, 0x97, 0xE3, 0x36, 0xEE, 0x6F, 0xDB,- 0xBE, 0x2B, 0x50, 0xF2, 0x2A, 0xF8, 0x32, 0x75,- 0xA4, 0x08, 0x48, 0x05, 0xD2, 0xD5, 0x64, 0x59,- 0x62, 0x45, 0x4B, 0x6C, 0x9B, 0x80, 0x53, 0xA0- },- {- 0x56, 0x48, 0x35, 0xCB, 0xAE, 0xA7, 0x74, 0x94,- 0x85, 0x68, 0xBE, 0x36, 0xCF, 0x52, 0xFC, 0xDD,- 0x83, 0x93, 0x4E, 0xB0, 0xA2, 0x75, 0x12, 0xDB,- 0xE3, 0xE2, 0xDB, 0x47, 0xB9, 0xE6, 0x63, 0x5A- },- {- 0xF2, 0x1C, 0x33, 0xF4, 0x7B, 0xDE, 0x40, 0xA2,- 0xA1, 0x01, 0xC9, 0xCD, 0xE8, 0x02, 0x7A, 0xAF,- 0x61, 0xA3, 0x13, 0x7D, 0xE2, 0x42, 0x2B, 0x30,- 0x03, 0x5A, 0x04, 0xC2, 0x70, 0x89, 0x41, 0x83- },- {- 0x9D, 0xB0, 0xEF, 0x74, 0xE6, 0x6C, 0xBB, 0x84,- 0x2E, 0xB0, 0xE0, 0x73, 0x43, 0xA0, 0x3C, 0x5C,- 0x56, 0x7E, 0x37, 0x2B, 0x3F, 0x23, 0xB9, 0x43,- 0xC7, 0x88, 0xA4, 0xF2, 0x50, 0xF6, 0x78, 0x91- },- {- 0xAB, 0x8D, 0x08, 0x65, 0x5F, 0xF1, 0xD3, 0xFE,- 0x87, 0x58, 0xD5, 0x62, 0x23, 0x5F, 0xD2, 0x3E,- 0x7C, 0xF9, 0xDC, 0xAA, 0xD6, 0x58, 0x87, 0x2A,- 0x49, 0xE5, 0xD3, 0x18, 0x3B, 0x6C, 0xCE, 0xBD- },- {- 0x6F, 0x27, 0xF7, 0x7E, 0x7B, 0xCF, 0x46, 0xA1,- 0xE9, 0x63, 0xAD, 0xE0, 0x30, 0x97, 0x33, 0x54,- 0x30, 0x31, 0xDC, 0xCD, 0xD4, 0x7C, 0xAA, 0xC1,- 0x74, 0xD7, 0xD2, 0x7C, 0xE8, 0x07, 0x7E, 0x8B- },- {- 0xE3, 0xCD, 0x54, 0xDA, 0x7E, 0x44, 0x4C, 0xAA,- 0x62, 0x07, 0x56, 0x95, 0x25, 0xA6, 0x70, 0xEB,- 0xAE, 0x12, 0x78, 0xDE, 0x4E, 0x3F, 0xE2, 0x68,- 0x4B, 0x3E, 0x33, 0xF5, 0xEF, 0x90, 0xCC, 0x1B- },- {- 0xB2, 0xC3, 0xE3, 0x3A, 0x51, 0xD2, 0x2C, 0x4C,- 0x08, 0xFC, 0x09, 0x89, 0xC8, 0x73, 0xC9, 0xCC,- 0x41, 0x50, 0x57, 0x9B, 0x1E, 0x61, 0x63, 0xFA,- 0x69, 0x4A, 0xD5, 0x1D, 0x53, 0xD7, 0x12, 0xDC- },- {- 0xBE, 0x7F, 0xDA, 0x98, 0x3E, 0x13, 0x18, 0x9B,- 0x4C, 0x77, 0xE0, 0xA8, 0x09, 0x20, 0xB6, 0xE0,- 0xE0, 0xEA, 0x80, 0xC3, 0xB8, 0x4D, 0xBE, 0x7E,- 0x71, 0x17, 0xD2, 0x53, 0xF4, 0x81, 0x12, 0xF4- },- {- 0xB6, 0x00, 0x8C, 0x28, 0xFA, 0xE0, 0x8A, 0xA4,- 0x27, 0xE5, 0xBD, 0x3A, 0xAD, 0x36, 0xF1, 0x00,- 0x21, 0xF1, 0x6C, 0x77, 0xCF, 0xEA, 0xBE, 0xD0,- 0x7F, 0x97, 0xCC, 0x7D, 0xC1, 0xF1, 0x28, 0x4A- },- {- 0x6E, 0x4E, 0x67, 0x60, 0xC5, 0x38, 0xF2, 0xE9,- 0x7B, 0x3A, 0xDB, 0xFB, 0xBC, 0xDE, 0x57, 0xF8,- 0x96, 0x6B, 0x7E, 0xA8, 0xFC, 0xB5, 0xBF, 0x7E,- 0xFE, 0xC9, 0x13, 0xFD, 0x2A, 0x2B, 0x0C, 0x55- },- {- 0x4A, 0xE5, 0x1F, 0xD1, 0x83, 0x4A, 0xA5, 0xBD,- 0x9A, 0x6F, 0x7E, 0xC3, 0x9F, 0xC6, 0x63, 0x33,- 0x8D, 0xC5, 0xD2, 0xE2, 0x07, 0x61, 0x56, 0x6D,- 0x90, 0xCC, 0x68, 0xB1, 0xCB, 0x87, 0x5E, 0xD8- },- {- 0xB6, 0x73, 0xAA, 0xD7, 0x5A, 0xB1, 0xFD, 0xB5,- 0x40, 0x1A, 0xBF, 0xA1, 0xBF, 0x89, 0xF3, 0xAD,- 0xD2, 0xEB, 0xC4, 0x68, 0xDF, 0x36, 0x24, 0xA4,- 0x78, 0xF4, 0xFE, 0x85, 0x9D, 0x8D, 0x55, 0xE2- },- {- 0x13, 0xC9, 0x47, 0x1A, 0x98, 0x55, 0x91, 0x35,- 0x39, 0x83, 0x66, 0x60, 0x39, 0x8D, 0xA0, 0xF3,- 0xF9, 0x9A, 0xDA, 0x08, 0x47, 0x9C, 0x69, 0xD1,- 0xB7, 0xFC, 0xAA, 0x34, 0x61, 0xDD, 0x7E, 0x59- },- {- 0x2C, 0x11, 0xF4, 0xA7, 0xF9, 0x9A, 0x1D, 0x23,- 0xA5, 0x8B, 0xB6, 0x36, 0x35, 0x0F, 0xE8, 0x49,- 0xF2, 0x9C, 0xBA, 0xC1, 0xB2, 0xA1, 0x11, 0x2D,- 0x9F, 0x1E, 0xD5, 0xBC, 0x5B, 0x31, 0x3C, 0xCD- },- {- 0xC7, 0xD3, 0xC0, 0x70, 0x6B, 0x11, 0xAE, 0x74,- 0x1C, 0x05, 0xA1, 0xEF, 0x15, 0x0D, 0xD6, 0x5B,- 0x54, 0x94, 0xD6, 0xD5, 0x4C, 0x9A, 0x86, 0xE2,- 0x61, 0x78, 0x54, 0xE6, 0xAE, 0xEE, 0xBB, 0xD9- },- {- 0x19, 0x4E, 0x10, 0xC9, 0x38, 0x93, 0xAF, 0xA0,- 0x64, 0xC3, 0xAC, 0x04, 0xC0, 0xDD, 0x80, 0x8D,- 0x79, 0x1C, 0x3D, 0x4B, 0x75, 0x56, 0xE8, 0x9D,- 0x8D, 0x9C, 0xB2, 0x25, 0xC4, 0xB3, 0x33, 0x39- },- {- 0x6F, 0xC4, 0x98, 0x8B, 0x8F, 0x78, 0x54, 0x6B,- 0x16, 0x88, 0x99, 0x18, 0x45, 0x90, 0x8F, 0x13,- 0x4B, 0x6A, 0x48, 0x2E, 0x69, 0x94, 0xB3, 0xD4,- 0x83, 0x17, 0xBF, 0x08, 0xDB, 0x29, 0x21, 0x85- },- {- 0x56, 0x65, 0xBE, 0xB8, 0xB0, 0x95, 0x55, 0x25,- 0x81, 0x3B, 0x59, 0x81, 0xCD, 0x14, 0x2E, 0xD4,- 0xD0, 0x3F, 0xBA, 0x38, 0xA6, 0xF3, 0xE5, 0xAD,- 0x26, 0x8E, 0x0C, 0xC2, 0x70, 0xD1, 0xCD, 0x11- },- {- 0xB8, 0x83, 0xD6, 0x8F, 0x5F, 0xE5, 0x19, 0x36,- 0x43, 0x1B, 0xA4, 0x25, 0x67, 0x38, 0x05, 0x3B,- 0x1D, 0x04, 0x26, 0xD4, 0xCB, 0x64, 0xB1, 0x6E,- 0x83, 0xBA, 0xDC, 0x5E, 0x9F, 0xBE, 0x3B, 0x81- },- {- 0x53, 0xE7, 0xB2, 0x7E, 0xA5, 0x9C, 0x2F, 0x6D,- 0xBB, 0x50, 0x76, 0x9E, 0x43, 0x55, 0x4D, 0xF3,- 0x5A, 0xF8, 0x9F, 0x48, 0x22, 0xD0, 0x46, 0x6B,- 0x00, 0x7D, 0xD6, 0xF6, 0xDE, 0xAF, 0xFF, 0x02- },- {- 0x1F, 0x1A, 0x02, 0x29, 0xD4, 0x64, 0x0F, 0x01,- 0x90, 0x15, 0x88, 0xD9, 0xDE, 0xC2, 0x2D, 0x13,- 0xFC, 0x3E, 0xB3, 0x4A, 0x61, 0xB3, 0x29, 0x38,- 0xEF, 0xBF, 0x53, 0x34, 0xB2, 0x80, 0x0A, 0xFA- },- {- 0xC2, 0xB4, 0x05, 0xAF, 0xA0, 0xFA, 0x66, 0x68,- 0x85, 0x2A, 0xEE, 0x4D, 0x88, 0x04, 0x08, 0x53,- 0xFA, 0xB8, 0x00, 0xE7, 0x2B, 0x57, 0x58, 0x14,- 0x18, 0xE5, 0x50, 0x6F, 0x21, 0x4C, 0x7D, 0x1F- },- {- 0xC0, 0x8A, 0xA1, 0xC2, 0x86, 0xD7, 0x09, 0xFD,- 0xC7, 0x47, 0x37, 0x44, 0x97, 0x71, 0x88, 0xC8,- 0x95, 0xBA, 0x01, 0x10, 0x14, 0x24, 0x7E, 0x4E,- 0xFA, 0x8D, 0x07, 0xE7, 0x8F, 0xEC, 0x69, 0x5C- },- {- 0xF0, 0x3F, 0x57, 0x89, 0xD3, 0x33, 0x6B, 0x80,- 0xD0, 0x02, 0xD5, 0x9F, 0xDF, 0x91, 0x8B, 0xDB,- 0x77, 0x5B, 0x00, 0x95, 0x6E, 0xD5, 0x52, 0x8E,- 0x86, 0xAA, 0x99, 0x4A, 0xCB, 0x38, 0xFE, 0x2D- },-};-----static const uint8_t blake2s_keyed_kat[KAT_LENGTH][BLAKE2S_OUTBYTES] =-{- {- 0x48, 0xA8, 0x99, 0x7D, 0xA4, 0x07, 0x87, 0x6B,- 0x3D, 0x79, 0xC0, 0xD9, 0x23, 0x25, 0xAD, 0x3B,- 0x89, 0xCB, 0xB7, 0x54, 0xD8, 0x6A, 0xB7, 0x1A,- 0xEE, 0x04, 0x7A, 0xD3, 0x45, 0xFD, 0x2C, 0x49- },- {- 0x40, 0xD1, 0x5F, 0xEE, 0x7C, 0x32, 0x88, 0x30,- 0x16, 0x6A, 0xC3, 0xF9, 0x18, 0x65, 0x0F, 0x80,- 0x7E, 0x7E, 0x01, 0xE1, 0x77, 0x25, 0x8C, 0xDC,- 0x0A, 0x39, 0xB1, 0x1F, 0x59, 0x80, 0x66, 0xF1- },- {- 0x6B, 0xB7, 0x13, 0x00, 0x64, 0x4C, 0xD3, 0x99,- 0x1B, 0x26, 0xCC, 0xD4, 0xD2, 0x74, 0xAC, 0xD1,- 0xAD, 0xEA, 0xB8, 0xB1, 0xD7, 0x91, 0x45, 0x46,- 0xC1, 0x19, 0x8B, 0xBE, 0x9F, 0xC9, 0xD8, 0x03- },- {- 0x1D, 0x22, 0x0D, 0xBE, 0x2E, 0xE1, 0x34, 0x66,- 0x1F, 0xDF, 0x6D, 0x9E, 0x74, 0xB4, 0x17, 0x04,- 0x71, 0x05, 0x56, 0xF2, 0xF6, 0xE5, 0xA0, 0x91,- 0xB2, 0x27, 0x69, 0x74, 0x45, 0xDB, 0xEA, 0x6B- },- {- 0xF6, 0xC3, 0xFB, 0xAD, 0xB4, 0xCC, 0x68, 0x7A,- 0x00, 0x64, 0xA5, 0xBE, 0x6E, 0x79, 0x1B, 0xEC,- 0x63, 0xB8, 0x68, 0xAD, 0x62, 0xFB, 0xA6, 0x1B,- 0x37, 0x57, 0xEF, 0x9C, 0xA5, 0x2E, 0x05, 0xB2- },- {- 0x49, 0xC1, 0xF2, 0x11, 0x88, 0xDF, 0xD7, 0x69,- 0xAE, 0xA0, 0xE9, 0x11, 0xDD, 0x6B, 0x41, 0xF1,- 0x4D, 0xAB, 0x10, 0x9D, 0x2B, 0x85, 0x97, 0x7A,- 0xA3, 0x08, 0x8B, 0x5C, 0x70, 0x7E, 0x85, 0x98- },- {- 0xFD, 0xD8, 0x99, 0x3D, 0xCD, 0x43, 0xF6, 0x96,- 0xD4, 0x4F, 0x3C, 0xEA, 0x0F, 0xF3, 0x53, 0x45,- 0x23, 0x4E, 0xC8, 0xEE, 0x08, 0x3E, 0xB3, 0xCA,- 0xDA, 0x01, 0x7C, 0x7F, 0x78, 0xC1, 0x71, 0x43- },- {- 0xE6, 0xC8, 0x12, 0x56, 0x37, 0x43, 0x8D, 0x09,- 0x05, 0xB7, 0x49, 0xF4, 0x65, 0x60, 0xAC, 0x89,- 0xFD, 0x47, 0x1C, 0xF8, 0x69, 0x2E, 0x28, 0xFA,- 0xB9, 0x82, 0xF7, 0x3F, 0x01, 0x9B, 0x83, 0xA9- },- {- 0x19, 0xFC, 0x8C, 0xA6, 0x97, 0x9D, 0x60, 0xE6,- 0xED, 0xD3, 0xB4, 0x54, 0x1E, 0x2F, 0x96, 0x7C,- 0xED, 0x74, 0x0D, 0xF6, 0xEC, 0x1E, 0xAE, 0xBB,- 0xFE, 0x81, 0x38, 0x32, 0xE9, 0x6B, 0x29, 0x74- },- {- 0xA6, 0xAD, 0x77, 0x7C, 0xE8, 0x81, 0xB5, 0x2B,- 0xB5, 0xA4, 0x42, 0x1A, 0xB6, 0xCD, 0xD2, 0xDF,- 0xBA, 0x13, 0xE9, 0x63, 0x65, 0x2D, 0x4D, 0x6D,- 0x12, 0x2A, 0xEE, 0x46, 0x54, 0x8C, 0x14, 0xA7- },- {- 0xF5, 0xC4, 0xB2, 0xBA, 0x1A, 0x00, 0x78, 0x1B,- 0x13, 0xAB, 0xA0, 0x42, 0x52, 0x42, 0xC6, 0x9C,- 0xB1, 0x55, 0x2F, 0x3F, 0x71, 0xA9, 0xA3, 0xBB,- 0x22, 0xB4, 0xA6, 0xB4, 0x27, 0x7B, 0x46, 0xDD- },- {- 0xE3, 0x3C, 0x4C, 0x9B, 0xD0, 0xCC, 0x7E, 0x45,- 0xC8, 0x0E, 0x65, 0xC7, 0x7F, 0xA5, 0x99, 0x7F,- 0xEC, 0x70, 0x02, 0x73, 0x85, 0x41, 0x50, 0x9E,- 0x68, 0xA9, 0x42, 0x38, 0x91, 0xE8, 0x22, 0xA3- },- {- 0xFB, 0xA1, 0x61, 0x69, 0xB2, 0xC3, 0xEE, 0x10,- 0x5B, 0xE6, 0xE1, 0xE6, 0x50, 0xE5, 0xCB, 0xF4,- 0x07, 0x46, 0xB6, 0x75, 0x3D, 0x03, 0x6A, 0xB5,- 0x51, 0x79, 0x01, 0x4A, 0xD7, 0xEF, 0x66, 0x51- },- {- 0xF5, 0xC4, 0xBE, 0xC6, 0xD6, 0x2F, 0xC6, 0x08,- 0xBF, 0x41, 0xCC, 0x11, 0x5F, 0x16, 0xD6, 0x1C,- 0x7E, 0xFD, 0x3F, 0xF6, 0xC6, 0x56, 0x92, 0xBB,- 0xE0, 0xAF, 0xFF, 0xB1, 0xFE, 0xDE, 0x74, 0x75- },- {- 0xA4, 0x86, 0x2E, 0x76, 0xDB, 0x84, 0x7F, 0x05,- 0xBA, 0x17, 0xED, 0xE5, 0xDA, 0x4E, 0x7F, 0x91,- 0xB5, 0x92, 0x5C, 0xF1, 0xAD, 0x4B, 0xA1, 0x27,- 0x32, 0xC3, 0x99, 0x57, 0x42, 0xA5, 0xCD, 0x6E- },- {- 0x65, 0xF4, 0xB8, 0x60, 0xCD, 0x15, 0xB3, 0x8E,- 0xF8, 0x14, 0xA1, 0xA8, 0x04, 0x31, 0x4A, 0x55,- 0xBE, 0x95, 0x3C, 0xAA, 0x65, 0xFD, 0x75, 0x8A,- 0xD9, 0x89, 0xFF, 0x34, 0xA4, 0x1C, 0x1E, 0xEA- },- {- 0x19, 0xBA, 0x23, 0x4F, 0x0A, 0x4F, 0x38, 0x63,- 0x7D, 0x18, 0x39, 0xF9, 0xD9, 0xF7, 0x6A, 0xD9,- 0x1C, 0x85, 0x22, 0x30, 0x71, 0x43, 0xC9, 0x7D,- 0x5F, 0x93, 0xF6, 0x92, 0x74, 0xCE, 0xC9, 0xA7- },- {- 0x1A, 0x67, 0x18, 0x6C, 0xA4, 0xA5, 0xCB, 0x8E,- 0x65, 0xFC, 0xA0, 0xE2, 0xEC, 0xBC, 0x5D, 0xDC,- 0x14, 0xAE, 0x38, 0x1B, 0xB8, 0xBF, 0xFE, 0xB9,- 0xE0, 0xA1, 0x03, 0x44, 0x9E, 0x3E, 0xF0, 0x3C- },- {- 0xAF, 0xBE, 0xA3, 0x17, 0xB5, 0xA2, 0xE8, 0x9C,- 0x0B, 0xD9, 0x0C, 0xCF, 0x5D, 0x7F, 0xD0, 0xED,- 0x57, 0xFE, 0x58, 0x5E, 0x4B, 0xE3, 0x27, 0x1B,- 0x0A, 0x6B, 0xF0, 0xF5, 0x78, 0x6B, 0x0F, 0x26- },- {- 0xF1, 0xB0, 0x15, 0x58, 0xCE, 0x54, 0x12, 0x62,- 0xF5, 0xEC, 0x34, 0x29, 0x9D, 0x6F, 0xB4, 0x09,- 0x00, 0x09, 0xE3, 0x43, 0x4B, 0xE2, 0xF4, 0x91,- 0x05, 0xCF, 0x46, 0xAF, 0x4D, 0x2D, 0x41, 0x24- },- {- 0x13, 0xA0, 0xA0, 0xC8, 0x63, 0x35, 0x63, 0x5E,- 0xAA, 0x74, 0xCA, 0x2D, 0x5D, 0x48, 0x8C, 0x79,- 0x7B, 0xBB, 0x4F, 0x47, 0xDC, 0x07, 0x10, 0x50,- 0x15, 0xED, 0x6A, 0x1F, 0x33, 0x09, 0xEF, 0xCE- },- {- 0x15, 0x80, 0xAF, 0xEE, 0xBE, 0xBB, 0x34, 0x6F,- 0x94, 0xD5, 0x9F, 0xE6, 0x2D, 0xA0, 0xB7, 0x92,- 0x37, 0xEA, 0xD7, 0xB1, 0x49, 0x1F, 0x56, 0x67,- 0xA9, 0x0E, 0x45, 0xED, 0xF6, 0xCA, 0x8B, 0x03- },- {- 0x20, 0xBE, 0x1A, 0x87, 0x5B, 0x38, 0xC5, 0x73,- 0xDD, 0x7F, 0xAA, 0xA0, 0xDE, 0x48, 0x9D, 0x65,- 0x5C, 0x11, 0xEF, 0xB6, 0xA5, 0x52, 0x69, 0x8E,- 0x07, 0xA2, 0xD3, 0x31, 0xB5, 0xF6, 0x55, 0xC3- },- {- 0xBE, 0x1F, 0xE3, 0xC4, 0xC0, 0x40, 0x18, 0xC5,- 0x4C, 0x4A, 0x0F, 0x6B, 0x9A, 0x2E, 0xD3, 0xC5,- 0x3A, 0xBE, 0x3A, 0x9F, 0x76, 0xB4, 0xD2, 0x6D,- 0xE5, 0x6F, 0xC9, 0xAE, 0x95, 0x05, 0x9A, 0x99- },- {- 0xE3, 0xE3, 0xAC, 0xE5, 0x37, 0xEB, 0x3E, 0xDD,- 0x84, 0x63, 0xD9, 0xAD, 0x35, 0x82, 0xE1, 0x3C,- 0xF8, 0x65, 0x33, 0xFF, 0xDE, 0x43, 0xD6, 0x68,- 0xDD, 0x2E, 0x93, 0xBB, 0xDB, 0xD7, 0x19, 0x5A- },- {- 0x11, 0x0C, 0x50, 0xC0, 0xBF, 0x2C, 0x6E, 0x7A,- 0xEB, 0x7E, 0x43, 0x5D, 0x92, 0xD1, 0x32, 0xAB,- 0x66, 0x55, 0x16, 0x8E, 0x78, 0xA2, 0xDE, 0xCD,- 0xEC, 0x33, 0x30, 0x77, 0x76, 0x84, 0xD9, 0xC1- },- {- 0xE9, 0xBA, 0x8F, 0x50, 0x5C, 0x9C, 0x80, 0xC0,- 0x86, 0x66, 0xA7, 0x01, 0xF3, 0x36, 0x7E, 0x6C,- 0xC6, 0x65, 0xF3, 0x4B, 0x22, 0xE7, 0x3C, 0x3C,- 0x04, 0x17, 0xEB, 0x1C, 0x22, 0x06, 0x08, 0x2F- },- {- 0x26, 0xCD, 0x66, 0xFC, 0xA0, 0x23, 0x79, 0xC7,- 0x6D, 0xF1, 0x23, 0x17, 0x05, 0x2B, 0xCA, 0xFD,- 0x6C, 0xD8, 0xC3, 0xA7, 0xB8, 0x90, 0xD8, 0x05,- 0xF3, 0x6C, 0x49, 0x98, 0x97, 0x82, 0x43, 0x3A- },- {- 0x21, 0x3F, 0x35, 0x96, 0xD6, 0xE3, 0xA5, 0xD0,- 0xE9, 0x93, 0x2C, 0xD2, 0x15, 0x91, 0x46, 0x01,- 0x5E, 0x2A, 0xBC, 0x94, 0x9F, 0x47, 0x29, 0xEE,- 0x26, 0x32, 0xFE, 0x1E, 0xDB, 0x78, 0xD3, 0x37- },- {- 0x10, 0x15, 0xD7, 0x01, 0x08, 0xE0, 0x3B, 0xE1,- 0xC7, 0x02, 0xFE, 0x97, 0x25, 0x36, 0x07, 0xD1,- 0x4A, 0xEE, 0x59, 0x1F, 0x24, 0x13, 0xEA, 0x67,- 0x87, 0x42, 0x7B, 0x64, 0x59, 0xFF, 0x21, 0x9A- },- {- 0x3C, 0xA9, 0x89, 0xDE, 0x10, 0xCF, 0xE6, 0x09,- 0x90, 0x94, 0x72, 0xC8, 0xD3, 0x56, 0x10, 0x80,- 0x5B, 0x2F, 0x97, 0x77, 0x34, 0xCF, 0x65, 0x2C,- 0xC6, 0x4B, 0x3B, 0xFC, 0x88, 0x2D, 0x5D, 0x89- },- {- 0xB6, 0x15, 0x6F, 0x72, 0xD3, 0x80, 0xEE, 0x9E,- 0xA6, 0xAC, 0xD1, 0x90, 0x46, 0x4F, 0x23, 0x07,- 0xA5, 0xC1, 0x79, 0xEF, 0x01, 0xFD, 0x71, 0xF9,- 0x9F, 0x2D, 0x0F, 0x7A, 0x57, 0x36, 0x0A, 0xEA- },- {- 0xC0, 0x3B, 0xC6, 0x42, 0xB2, 0x09, 0x59, 0xCB,- 0xE1, 0x33, 0xA0, 0x30, 0x3E, 0x0C, 0x1A, 0xBF,- 0xF3, 0xE3, 0x1E, 0xC8, 0xE1, 0xA3, 0x28, 0xEC,- 0x85, 0x65, 0xC3, 0x6D, 0xEC, 0xFF, 0x52, 0x65- },- {- 0x2C, 0x3E, 0x08, 0x17, 0x6F, 0x76, 0x0C, 0x62,- 0x64, 0xC3, 0xA2, 0xCD, 0x66, 0xFE, 0xC6, 0xC3,- 0xD7, 0x8D, 0xE4, 0x3F, 0xC1, 0x92, 0x45, 0x7B,- 0x2A, 0x4A, 0x66, 0x0A, 0x1E, 0x0E, 0xB2, 0x2B- },- {- 0xF7, 0x38, 0xC0, 0x2F, 0x3C, 0x1B, 0x19, 0x0C,- 0x51, 0x2B, 0x1A, 0x32, 0xDE, 0xAB, 0xF3, 0x53,- 0x72, 0x8E, 0x0E, 0x9A, 0xB0, 0x34, 0x49, 0x0E,- 0x3C, 0x34, 0x09, 0x94, 0x6A, 0x97, 0xAE, 0xEC- },- {- 0x8B, 0x18, 0x80, 0xDF, 0x30, 0x1C, 0xC9, 0x63,- 0x41, 0x88, 0x11, 0x08, 0x89, 0x64, 0x83, 0x92,- 0x87, 0xFF, 0x7F, 0xE3, 0x1C, 0x49, 0xEA, 0x6E,- 0xBD, 0x9E, 0x48, 0xBD, 0xEE, 0xE4, 0x97, 0xC5- },- {- 0x1E, 0x75, 0xCB, 0x21, 0xC6, 0x09, 0x89, 0x02,- 0x03, 0x75, 0xF1, 0xA7, 0xA2, 0x42, 0x83, 0x9F,- 0x0B, 0x0B, 0x68, 0x97, 0x3A, 0x4C, 0x2A, 0x05,- 0xCF, 0x75, 0x55, 0xED, 0x5A, 0xAE, 0xC4, 0xC1- },- {- 0x62, 0xBF, 0x8A, 0x9C, 0x32, 0xA5, 0xBC, 0xCF,- 0x29, 0x0B, 0x6C, 0x47, 0x4D, 0x75, 0xB2, 0xA2,- 0xA4, 0x09, 0x3F, 0x1A, 0x9E, 0x27, 0x13, 0x94,- 0x33, 0xA8, 0xF2, 0xB3, 0xBC, 0xE7, 0xB8, 0xD7- },- {- 0x16, 0x6C, 0x83, 0x50, 0xD3, 0x17, 0x3B, 0x5E,- 0x70, 0x2B, 0x78, 0x3D, 0xFD, 0x33, 0xC6, 0x6E,- 0xE0, 0x43, 0x27, 0x42, 0xE9, 0xB9, 0x2B, 0x99,- 0x7F, 0xD2, 0x3C, 0x60, 0xDC, 0x67, 0x56, 0xCA- },- {- 0x04, 0x4A, 0x14, 0xD8, 0x22, 0xA9, 0x0C, 0xAC,- 0xF2, 0xF5, 0xA1, 0x01, 0x42, 0x8A, 0xDC, 0x8F,- 0x41, 0x09, 0x38, 0x6C, 0xCB, 0x15, 0x8B, 0xF9,- 0x05, 0xC8, 0x61, 0x8B, 0x8E, 0xE2, 0x4E, 0xC3- },- {- 0x38, 0x7D, 0x39, 0x7E, 0xA4, 0x3A, 0x99, 0x4B,- 0xE8, 0x4D, 0x2D, 0x54, 0x4A, 0xFB, 0xE4, 0x81,- 0xA2, 0x00, 0x0F, 0x55, 0x25, 0x26, 0x96, 0xBB,- 0xA2, 0xC5, 0x0C, 0x8E, 0xBD, 0x10, 0x13, 0x47- },- {- 0x56, 0xF8, 0xCC, 0xF1, 0xF8, 0x64, 0x09, 0xB4,- 0x6C, 0xE3, 0x61, 0x66, 0xAE, 0x91, 0x65, 0x13,- 0x84, 0x41, 0x57, 0x75, 0x89, 0xDB, 0x08, 0xCB,- 0xC5, 0xF6, 0x6C, 0xA2, 0x97, 0x43, 0xB9, 0xFD- },- {- 0x97, 0x06, 0xC0, 0x92, 0xB0, 0x4D, 0x91, 0xF5,- 0x3D, 0xFF, 0x91, 0xFA, 0x37, 0xB7, 0x49, 0x3D,- 0x28, 0xB5, 0x76, 0xB5, 0xD7, 0x10, 0x46, 0x9D,- 0xF7, 0x94, 0x01, 0x66, 0x22, 0x36, 0xFC, 0x03- },- {- 0x87, 0x79, 0x68, 0x68, 0x6C, 0x06, 0x8C, 0xE2,- 0xF7, 0xE2, 0xAD, 0xCF, 0xF6, 0x8B, 0xF8, 0x74,- 0x8E, 0xDF, 0x3C, 0xF8, 0x62, 0xCF, 0xB4, 0xD3,- 0x94, 0x7A, 0x31, 0x06, 0x95, 0x80, 0x54, 0xE3- },- {- 0x88, 0x17, 0xE5, 0x71, 0x98, 0x79, 0xAC, 0xF7,- 0x02, 0x47, 0x87, 0xEC, 0xCD, 0xB2, 0x71, 0x03,- 0x55, 0x66, 0xCF, 0xA3, 0x33, 0xE0, 0x49, 0x40,- 0x7C, 0x01, 0x78, 0xCC, 0xC5, 0x7A, 0x5B, 0x9F- },- {- 0x89, 0x38, 0x24, 0x9E, 0x4B, 0x50, 0xCA, 0xDA,- 0xCC, 0xDF, 0x5B, 0x18, 0x62, 0x13, 0x26, 0xCB,- 0xB1, 0x52, 0x53, 0xE3, 0x3A, 0x20, 0xF5, 0x63,- 0x6E, 0x99, 0x5D, 0x72, 0x47, 0x8D, 0xE4, 0x72- },- {- 0xF1, 0x64, 0xAB, 0xBA, 0x49, 0x63, 0xA4, 0x4D,- 0x10, 0x72, 0x57, 0xE3, 0x23, 0x2D, 0x90, 0xAC,- 0xA5, 0xE6, 0x6A, 0x14, 0x08, 0x24, 0x8C, 0x51,- 0x74, 0x1E, 0x99, 0x1D, 0xB5, 0x22, 0x77, 0x56- },- {- 0xD0, 0x55, 0x63, 0xE2, 0xB1, 0xCB, 0xA0, 0xC4,- 0xA2, 0xA1, 0xE8, 0xBD, 0xE3, 0xA1, 0xA0, 0xD9,- 0xF5, 0xB4, 0x0C, 0x85, 0xA0, 0x70, 0xD6, 0xF5,- 0xFB, 0x21, 0x06, 0x6E, 0xAD, 0x5D, 0x06, 0x01- },- {- 0x03, 0xFB, 0xB1, 0x63, 0x84, 0xF0, 0xA3, 0x86,- 0x6F, 0x4C, 0x31, 0x17, 0x87, 0x76, 0x66, 0xEF,- 0xBF, 0x12, 0x45, 0x97, 0x56, 0x4B, 0x29, 0x3D,- 0x4A, 0xAB, 0x0D, 0x26, 0x9F, 0xAB, 0xDD, 0xFA- },- {- 0x5F, 0xA8, 0x48, 0x6A, 0xC0, 0xE5, 0x29, 0x64,- 0xD1, 0x88, 0x1B, 0xBE, 0x33, 0x8E, 0xB5, 0x4B,- 0xE2, 0xF7, 0x19, 0x54, 0x92, 0x24, 0x89, 0x20,- 0x57, 0xB4, 0xDA, 0x04, 0xBA, 0x8B, 0x34, 0x75- },- {- 0xCD, 0xFA, 0xBC, 0xEE, 0x46, 0x91, 0x11, 0x11,- 0x23, 0x6A, 0x31, 0x70, 0x8B, 0x25, 0x39, 0xD7,- 0x1F, 0xC2, 0x11, 0xD9, 0xB0, 0x9C, 0x0D, 0x85,- 0x30, 0xA1, 0x1E, 0x1D, 0xBF, 0x6E, 0xED, 0x01- },- {- 0x4F, 0x82, 0xDE, 0x03, 0xB9, 0x50, 0x47, 0x93,- 0xB8, 0x2A, 0x07, 0xA0, 0xBD, 0xCD, 0xFF, 0x31,- 0x4D, 0x75, 0x9E, 0x7B, 0x62, 0xD2, 0x6B, 0x78,- 0x49, 0x46, 0xB0, 0xD3, 0x6F, 0x91, 0x6F, 0x52- },- {- 0x25, 0x9E, 0xC7, 0xF1, 0x73, 0xBC, 0xC7, 0x6A,- 0x09, 0x94, 0xC9, 0x67, 0xB4, 0xF5, 0xF0, 0x24,- 0xC5, 0x60, 0x57, 0xFB, 0x79, 0xC9, 0x65, 0xC4,- 0xFA, 0xE4, 0x18, 0x75, 0xF0, 0x6A, 0x0E, 0x4C- },- {- 0x19, 0x3C, 0xC8, 0xE7, 0xC3, 0xE0, 0x8B, 0xB3,- 0x0F, 0x54, 0x37, 0xAA, 0x27, 0xAD, 0xE1, 0xF1,- 0x42, 0x36, 0x9B, 0x24, 0x6A, 0x67, 0x5B, 0x23,- 0x83, 0xE6, 0xDA, 0x9B, 0x49, 0xA9, 0x80, 0x9E- },- {- 0x5C, 0x10, 0x89, 0x6F, 0x0E, 0x28, 0x56, 0xB2,- 0xA2, 0xEE, 0xE0, 0xFE, 0x4A, 0x2C, 0x16, 0x33,- 0x56, 0x5D, 0x18, 0xF0, 0xE9, 0x3E, 0x1F, 0xAB,- 0x26, 0xC3, 0x73, 0xE8, 0xF8, 0x29, 0x65, 0x4D- },- {- 0xF1, 0x60, 0x12, 0xD9, 0x3F, 0x28, 0x85, 0x1A,- 0x1E, 0xB9, 0x89, 0xF5, 0xD0, 0xB4, 0x3F, 0x3F,- 0x39, 0xCA, 0x73, 0xC9, 0xA6, 0x2D, 0x51, 0x81,- 0xBF, 0xF2, 0x37, 0x53, 0x6B, 0xD3, 0x48, 0xC3- },- {- 0x29, 0x66, 0xB3, 0xCF, 0xAE, 0x1E, 0x44, 0xEA,- 0x99, 0x6D, 0xC5, 0xD6, 0x86, 0xCF, 0x25, 0xFA,- 0x05, 0x3F, 0xB6, 0xF6, 0x72, 0x01, 0xB9, 0xE4,- 0x6E, 0xAD, 0xE8, 0x5D, 0x0A, 0xD6, 0xB8, 0x06- },- {- 0xDD, 0xB8, 0x78, 0x24, 0x85, 0xE9, 0x00, 0xBC,- 0x60, 0xBC, 0xF4, 0xC3, 0x3A, 0x6F, 0xD5, 0x85,- 0x68, 0x0C, 0xC6, 0x83, 0xD5, 0x16, 0xEF, 0xA0,- 0x3E, 0xB9, 0x98, 0x5F, 0xAD, 0x87, 0x15, 0xFB- },- {- 0x4C, 0x4D, 0x6E, 0x71, 0xAE, 0xA0, 0x57, 0x86,- 0x41, 0x31, 0x48, 0xFC, 0x7A, 0x78, 0x6B, 0x0E,- 0xCA, 0xF5, 0x82, 0xCF, 0xF1, 0x20, 0x9F, 0x5A,- 0x80, 0x9F, 0xBA, 0x85, 0x04, 0xCE, 0x66, 0x2C- },- {- 0xFB, 0x4C, 0x5E, 0x86, 0xD7, 0xB2, 0x22, 0x9B,- 0x99, 0xB8, 0xBA, 0x6D, 0x94, 0xC2, 0x47, 0xEF,- 0x96, 0x4A, 0xA3, 0xA2, 0xBA, 0xE8, 0xED, 0xC7,- 0x75, 0x69, 0xF2, 0x8D, 0xBB, 0xFF, 0x2D, 0x4E- },- {- 0xE9, 0x4F, 0x52, 0x6D, 0xE9, 0x01, 0x96, 0x33,- 0xEC, 0xD5, 0x4A, 0xC6, 0x12, 0x0F, 0x23, 0x95,- 0x8D, 0x77, 0x18, 0xF1, 0xE7, 0x71, 0x7B, 0xF3,- 0x29, 0x21, 0x1A, 0x4F, 0xAE, 0xED, 0x4E, 0x6D- },- {- 0xCB, 0xD6, 0x66, 0x0A, 0x10, 0xDB, 0x3F, 0x23,- 0xF7, 0xA0, 0x3D, 0x4B, 0x9D, 0x40, 0x44, 0xC7,- 0x93, 0x2B, 0x28, 0x01, 0xAC, 0x89, 0xD6, 0x0B,- 0xC9, 0xEB, 0x92, 0xD6, 0x5A, 0x46, 0xC2, 0xA0- },- {- 0x88, 0x18, 0xBB, 0xD3, 0xDB, 0x4D, 0xC1, 0x23,- 0xB2, 0x5C, 0xBB, 0xA5, 0xF5, 0x4C, 0x2B, 0xC4,- 0xB3, 0xFC, 0xF9, 0xBF, 0x7D, 0x7A, 0x77, 0x09,- 0xF4, 0xAE, 0x58, 0x8B, 0x26, 0x7C, 0x4E, 0xCE- },- {- 0xC6, 0x53, 0x82, 0x51, 0x3F, 0x07, 0x46, 0x0D,- 0xA3, 0x98, 0x33, 0xCB, 0x66, 0x6C, 0x5E, 0xD8,- 0x2E, 0x61, 0xB9, 0xE9, 0x98, 0xF4, 0xB0, 0xC4,- 0x28, 0x7C, 0xEE, 0x56, 0xC3, 0xCC, 0x9B, 0xCD- },- {- 0x89, 0x75, 0xB0, 0x57, 0x7F, 0xD3, 0x55, 0x66,- 0xD7, 0x50, 0xB3, 0x62, 0xB0, 0x89, 0x7A, 0x26,- 0xC3, 0x99, 0x13, 0x6D, 0xF0, 0x7B, 0xAB, 0xAB,- 0xBD, 0xE6, 0x20, 0x3F, 0xF2, 0x95, 0x4E, 0xD4- },- {- 0x21, 0xFE, 0x0C, 0xEB, 0x00, 0x52, 0xBE, 0x7F,- 0xB0, 0xF0, 0x04, 0x18, 0x7C, 0xAC, 0xD7, 0xDE,- 0x67, 0xFA, 0x6E, 0xB0, 0x93, 0x8D, 0x92, 0x76,- 0x77, 0xF2, 0x39, 0x8C, 0x13, 0x23, 0x17, 0xA8- },- {- 0x2E, 0xF7, 0x3F, 0x3C, 0x26, 0xF1, 0x2D, 0x93,- 0x88, 0x9F, 0x3C, 0x78, 0xB6, 0xA6, 0x6C, 0x1D,- 0x52, 0xB6, 0x49, 0xDC, 0x9E, 0x85, 0x6E, 0x2C,- 0x17, 0x2E, 0xA7, 0xC5, 0x8A, 0xC2, 0xB5, 0xE3- },- {- 0x38, 0x8A, 0x3C, 0xD5, 0x6D, 0x73, 0x86, 0x7A,- 0xBB, 0x5F, 0x84, 0x01, 0x49, 0x2B, 0x6E, 0x26,- 0x81, 0xEB, 0x69, 0x85, 0x1E, 0x76, 0x7F, 0xD8,- 0x42, 0x10, 0xA5, 0x60, 0x76, 0xFB, 0x3D, 0xD3- },- {- 0xAF, 0x53, 0x3E, 0x02, 0x2F, 0xC9, 0x43, 0x9E,- 0x4E, 0x3C, 0xB8, 0x38, 0xEC, 0xD1, 0x86, 0x92,- 0x23, 0x2A, 0xDF, 0x6F, 0xE9, 0x83, 0x95, 0x26,- 0xD3, 0xC3, 0xDD, 0x1B, 0x71, 0x91, 0x0B, 0x1A- },- {- 0x75, 0x1C, 0x09, 0xD4, 0x1A, 0x93, 0x43, 0x88,- 0x2A, 0x81, 0xCD, 0x13, 0xEE, 0x40, 0x81, 0x8D,- 0x12, 0xEB, 0x44, 0xC6, 0xC7, 0xF4, 0x0D, 0xF1,- 0x6E, 0x4A, 0xEA, 0x8F, 0xAB, 0x91, 0x97, 0x2A- },- {- 0x5B, 0x73, 0xDD, 0xB6, 0x8D, 0x9D, 0x2B, 0x0A,- 0xA2, 0x65, 0xA0, 0x79, 0x88, 0xD6, 0xB8, 0x8A,- 0xE9, 0xAA, 0xC5, 0x82, 0xAF, 0x83, 0x03, 0x2F,- 0x8A, 0x9B, 0x21, 0xA2, 0xE1, 0xB7, 0xBF, 0x18- },- {- 0x3D, 0xA2, 0x91, 0x26, 0xC7, 0xC5, 0xD7, 0xF4,- 0x3E, 0x64, 0x24, 0x2A, 0x79, 0xFE, 0xAA, 0x4E,- 0xF3, 0x45, 0x9C, 0xDE, 0xCC, 0xC8, 0x98, 0xED,- 0x59, 0xA9, 0x7F, 0x6E, 0xC9, 0x3B, 0x9D, 0xAB- },- {- 0x56, 0x6D, 0xC9, 0x20, 0x29, 0x3D, 0xA5, 0xCB,- 0x4F, 0xE0, 0xAA, 0x8A, 0xBD, 0xA8, 0xBB, 0xF5,- 0x6F, 0x55, 0x23, 0x13, 0xBF, 0xF1, 0x90, 0x46,- 0x64, 0x1E, 0x36, 0x15, 0xC1, 0xE3, 0xED, 0x3F- },- {- 0x41, 0x15, 0xBE, 0xA0, 0x2F, 0x73, 0xF9, 0x7F,- 0x62, 0x9E, 0x5C, 0x55, 0x90, 0x72, 0x0C, 0x01,- 0xE7, 0xE4, 0x49, 0xAE, 0x2A, 0x66, 0x97, 0xD4,- 0xD2, 0x78, 0x33, 0x21, 0x30, 0x36, 0x92, 0xF9- },- {- 0x4C, 0xE0, 0x8F, 0x47, 0x62, 0x46, 0x8A, 0x76,- 0x70, 0x01, 0x21, 0x64, 0x87, 0x8D, 0x68, 0x34,- 0x0C, 0x52, 0xA3, 0x5E, 0x66, 0xC1, 0x88, 0x4D,- 0x5C, 0x86, 0x48, 0x89, 0xAB, 0xC9, 0x66, 0x77- },- {- 0x81, 0xEA, 0x0B, 0x78, 0x04, 0x12, 0x4E, 0x0C,- 0x22, 0xEA, 0x5F, 0xC7, 0x11, 0x04, 0xA2, 0xAF,- 0xCB, 0x52, 0xA1, 0xFA, 0x81, 0x6F, 0x3E, 0xCB,- 0x7D, 0xCB, 0x5D, 0x9D, 0xEA, 0x17, 0x86, 0xD0- },- {- 0xFE, 0x36, 0x27, 0x33, 0xB0, 0x5F, 0x6B, 0xED,- 0xAF, 0x93, 0x79, 0xD7, 0xF7, 0x93, 0x6E, 0xDE,- 0x20, 0x9B, 0x1F, 0x83, 0x23, 0xC3, 0x92, 0x25,- 0x49, 0xD9, 0xE7, 0x36, 0x81, 0xB5, 0xDB, 0x7B- },- {- 0xEF, 0xF3, 0x7D, 0x30, 0xDF, 0xD2, 0x03, 0x59,- 0xBE, 0x4E, 0x73, 0xFD, 0xF4, 0x0D, 0x27, 0x73,- 0x4B, 0x3D, 0xF9, 0x0A, 0x97, 0xA5, 0x5E, 0xD7,- 0x45, 0x29, 0x72, 0x94, 0xCA, 0x85, 0xD0, 0x9F- },- {- 0x17, 0x2F, 0xFC, 0x67, 0x15, 0x3D, 0x12, 0xE0,- 0xCA, 0x76, 0xA8, 0xB6, 0xCD, 0x5D, 0x47, 0x31,- 0x88, 0x5B, 0x39, 0xCE, 0x0C, 0xAC, 0x93, 0xA8,- 0x97, 0x2A, 0x18, 0x00, 0x6C, 0x8B, 0x8B, 0xAF- },- {- 0xC4, 0x79, 0x57, 0xF1, 0xCC, 0x88, 0xE8, 0x3E,- 0xF9, 0x44, 0x58, 0x39, 0x70, 0x9A, 0x48, 0x0A,- 0x03, 0x6B, 0xED, 0x5F, 0x88, 0xAC, 0x0F, 0xCC,- 0x8E, 0x1E, 0x70, 0x3F, 0xFA, 0xAC, 0x13, 0x2C- },- {- 0x30, 0xF3, 0x54, 0x83, 0x70, 0xCF, 0xDC, 0xED,- 0xA5, 0xC3, 0x7B, 0x56, 0x9B, 0x61, 0x75, 0xE7,- 0x99, 0xEE, 0xF1, 0xA6, 0x2A, 0xAA, 0x94, 0x32,- 0x45, 0xAE, 0x76, 0x69, 0xC2, 0x27, 0xA7, 0xB5- },- {- 0xC9, 0x5D, 0xCB, 0x3C, 0xF1, 0xF2, 0x7D, 0x0E,- 0xEF, 0x2F, 0x25, 0xD2, 0x41, 0x38, 0x70, 0x90,- 0x4A, 0x87, 0x7C, 0x4A, 0x56, 0xC2, 0xDE, 0x1E,- 0x83, 0xE2, 0xBC, 0x2A, 0xE2, 0xE4, 0x68, 0x21- },- {- 0xD5, 0xD0, 0xB5, 0xD7, 0x05, 0x43, 0x4C, 0xD4,- 0x6B, 0x18, 0x57, 0x49, 0xF6, 0x6B, 0xFB, 0x58,- 0x36, 0xDC, 0xDF, 0x6E, 0xE5, 0x49, 0xA2, 0xB7,- 0xA4, 0xAE, 0xE7, 0xF5, 0x80, 0x07, 0xCA, 0xAF- },- {- 0xBB, 0xC1, 0x24, 0xA7, 0x12, 0xF1, 0x5D, 0x07,- 0xC3, 0x00, 0xE0, 0x5B, 0x66, 0x83, 0x89, 0xA4,- 0x39, 0xC9, 0x17, 0x77, 0xF7, 0x21, 0xF8, 0x32,- 0x0C, 0x1C, 0x90, 0x78, 0x06, 0x6D, 0x2C, 0x7E- },- {- 0xA4, 0x51, 0xB4, 0x8C, 0x35, 0xA6, 0xC7, 0x85,- 0x4C, 0xFA, 0xAE, 0x60, 0x26, 0x2E, 0x76, 0x99,- 0x08, 0x16, 0x38, 0x2A, 0xC0, 0x66, 0x7E, 0x5A,- 0x5C, 0x9E, 0x1B, 0x46, 0xC4, 0x34, 0x2D, 0xDF- },- {- 0xB0, 0xD1, 0x50, 0xFB, 0x55, 0xE7, 0x78, 0xD0,- 0x11, 0x47, 0xF0, 0xB5, 0xD8, 0x9D, 0x99, 0xEC,- 0xB2, 0x0F, 0xF0, 0x7E, 0x5E, 0x67, 0x60, 0xD6,- 0xB6, 0x45, 0xEB, 0x5B, 0x65, 0x4C, 0x62, 0x2B- },- {- 0x34, 0xF7, 0x37, 0xC0, 0xAB, 0x21, 0x99, 0x51,- 0xEE, 0xE8, 0x9A, 0x9F, 0x8D, 0xAC, 0x29, 0x9C,- 0x9D, 0x4C, 0x38, 0xF3, 0x3F, 0xA4, 0x94, 0xC5,- 0xC6, 0xEE, 0xFC, 0x92, 0xB6, 0xDB, 0x08, 0xBC- },- {- 0x1A, 0x62, 0xCC, 0x3A, 0x00, 0x80, 0x0D, 0xCB,- 0xD9, 0x98, 0x91, 0x08, 0x0C, 0x1E, 0x09, 0x84,- 0x58, 0x19, 0x3A, 0x8C, 0xC9, 0xF9, 0x70, 0xEA,- 0x99, 0xFB, 0xEF, 0xF0, 0x03, 0x18, 0xC2, 0x89- },- {- 0xCF, 0xCE, 0x55, 0xEB, 0xAF, 0xC8, 0x40, 0xD7,- 0xAE, 0x48, 0x28, 0x1C, 0x7F, 0xD5, 0x7E, 0xC8,- 0xB4, 0x82, 0xD4, 0xB7, 0x04, 0x43, 0x74, 0x95,- 0x49, 0x5A, 0xC4, 0x14, 0xCF, 0x4A, 0x37, 0x4B- },- {- 0x67, 0x46, 0xFA, 0xCF, 0x71, 0x14, 0x6D, 0x99,- 0x9D, 0xAB, 0xD0, 0x5D, 0x09, 0x3A, 0xE5, 0x86,- 0x64, 0x8D, 0x1E, 0xE2, 0x8E, 0x72, 0x61, 0x7B,- 0x99, 0xD0, 0xF0, 0x08, 0x6E, 0x1E, 0x45, 0xBF- },- {- 0x57, 0x1C, 0xED, 0x28, 0x3B, 0x3F, 0x23, 0xB4,- 0xE7, 0x50, 0xBF, 0x12, 0xA2, 0xCA, 0xF1, 0x78,- 0x18, 0x47, 0xBD, 0x89, 0x0E, 0x43, 0x60, 0x3C,- 0xDC, 0x59, 0x76, 0x10, 0x2B, 0x7B, 0xB1, 0x1B- },- {- 0xCF, 0xCB, 0x76, 0x5B, 0x04, 0x8E, 0x35, 0x02,- 0x2C, 0x5D, 0x08, 0x9D, 0x26, 0xE8, 0x5A, 0x36,- 0xB0, 0x05, 0xA2, 0xB8, 0x04, 0x93, 0xD0, 0x3A,- 0x14, 0x4E, 0x09, 0xF4, 0x09, 0xB6, 0xAF, 0xD1- },- {- 0x40, 0x50, 0xC7, 0xA2, 0x77, 0x05, 0xBB, 0x27,- 0xF4, 0x20, 0x89, 0xB2, 0x99, 0xF3, 0xCB, 0xE5,- 0x05, 0x4E, 0xAD, 0x68, 0x72, 0x7E, 0x8E, 0xF9,- 0x31, 0x8C, 0xE6, 0xF2, 0x5C, 0xD6, 0xF3, 0x1D- },- {- 0x18, 0x40, 0x70, 0xBD, 0x5D, 0x26, 0x5F, 0xBD,- 0xC1, 0x42, 0xCD, 0x1C, 0x5C, 0xD0, 0xD7, 0xE4,- 0x14, 0xE7, 0x03, 0x69, 0xA2, 0x66, 0xD6, 0x27,- 0xC8, 0xFB, 0xA8, 0x4F, 0xA5, 0xE8, 0x4C, 0x34- },- {- 0x9E, 0xDD, 0xA9, 0xA4, 0x44, 0x39, 0x02, 0xA9,- 0x58, 0x8C, 0x0D, 0x0C, 0xCC, 0x62, 0xB9, 0x30,- 0x21, 0x84, 0x79, 0xA6, 0x84, 0x1E, 0x6F, 0xE7,- 0xD4, 0x30, 0x03, 0xF0, 0x4B, 0x1F, 0xD6, 0x43- },- {- 0xE4, 0x12, 0xFE, 0xEF, 0x79, 0x08, 0x32, 0x4A,- 0x6D, 0xA1, 0x84, 0x16, 0x29, 0xF3, 0x5D, 0x3D,- 0x35, 0x86, 0x42, 0x01, 0x93, 0x10, 0xEC, 0x57,- 0xC6, 0x14, 0x83, 0x6B, 0x63, 0xD3, 0x07, 0x63- },- {- 0x1A, 0x2B, 0x8E, 0xDF, 0xF3, 0xF9, 0xAC, 0xC1,- 0x55, 0x4F, 0xCB, 0xAE, 0x3C, 0xF1, 0xD6, 0x29,- 0x8C, 0x64, 0x62, 0xE2, 0x2E, 0x5E, 0xB0, 0x25,- 0x96, 0x84, 0xF8, 0x35, 0x01, 0x2B, 0xD1, 0x3F- },- {- 0x28, 0x8C, 0x4A, 0xD9, 0xB9, 0x40, 0x97, 0x62,- 0xEA, 0x07, 0xC2, 0x4A, 0x41, 0xF0, 0x4F, 0x69,- 0xA7, 0xD7, 0x4B, 0xEE, 0x2D, 0x95, 0x43, 0x53,- 0x74, 0xBD, 0xE9, 0x46, 0xD7, 0x24, 0x1C, 0x7B- },- {- 0x80, 0x56, 0x91, 0xBB, 0x28, 0x67, 0x48, 0xCF,- 0xB5, 0x91, 0xD3, 0xAE, 0xBE, 0x7E, 0x6F, 0x4E,- 0x4D, 0xC6, 0xE2, 0x80, 0x8C, 0x65, 0x14, 0x3C,- 0xC0, 0x04, 0xE4, 0xEB, 0x6F, 0xD0, 0x9D, 0x43- },- {- 0xD4, 0xAC, 0x8D, 0x3A, 0x0A, 0xFC, 0x6C, 0xFA,- 0x7B, 0x46, 0x0A, 0xE3, 0x00, 0x1B, 0xAE, 0xB3,- 0x6D, 0xAD, 0xB3, 0x7D, 0xA0, 0x7D, 0x2E, 0x8A,- 0xC9, 0x18, 0x22, 0xDF, 0x34, 0x8A, 0xED, 0x3D- },- {- 0xC3, 0x76, 0x61, 0x70, 0x14, 0xD2, 0x01, 0x58,- 0xBC, 0xED, 0x3D, 0x3B, 0xA5, 0x52, 0xB6, 0xEC,- 0xCF, 0x84, 0xE6, 0x2A, 0xA3, 0xEB, 0x65, 0x0E,- 0x90, 0x02, 0x9C, 0x84, 0xD1, 0x3E, 0xEA, 0x69- },- {- 0xC4, 0x1F, 0x09, 0xF4, 0x3C, 0xEC, 0xAE, 0x72,- 0x93, 0xD6, 0x00, 0x7C, 0xA0, 0xA3, 0x57, 0x08,- 0x7D, 0x5A, 0xE5, 0x9B, 0xE5, 0x00, 0xC1, 0xCD,- 0x5B, 0x28, 0x9E, 0xE8, 0x10, 0xC7, 0xB0, 0x82- },- {- 0x03, 0xD1, 0xCE, 0xD1, 0xFB, 0xA5, 0xC3, 0x91,- 0x55, 0xC4, 0x4B, 0x77, 0x65, 0xCB, 0x76, 0x0C,- 0x78, 0x70, 0x8D, 0xCF, 0xC8, 0x0B, 0x0B, 0xD8,- 0xAD, 0xE3, 0xA5, 0x6D, 0xA8, 0x83, 0x0B, 0x29- },- {- 0x09, 0xBD, 0xE6, 0xF1, 0x52, 0x21, 0x8D, 0xC9,- 0x2C, 0x41, 0xD7, 0xF4, 0x53, 0x87, 0xE6, 0x3E,- 0x58, 0x69, 0xD8, 0x07, 0xEC, 0x70, 0xB8, 0x21,- 0x40, 0x5D, 0xBD, 0x88, 0x4B, 0x7F, 0xCF, 0x4B- },- {- 0x71, 0xC9, 0x03, 0x6E, 0x18, 0x17, 0x9B, 0x90,- 0xB3, 0x7D, 0x39, 0xE9, 0xF0, 0x5E, 0xB8, 0x9C,- 0xC5, 0xFC, 0x34, 0x1F, 0xD7, 0xC4, 0x77, 0xD0,- 0xD7, 0x49, 0x32, 0x85, 0xFA, 0xCA, 0x08, 0xA4- },- {- 0x59, 0x16, 0x83, 0x3E, 0xBB, 0x05, 0xCD, 0x91,- 0x9C, 0xA7, 0xFE, 0x83, 0xB6, 0x92, 0xD3, 0x20,- 0x5B, 0xEF, 0x72, 0x39, 0x2B, 0x2C, 0xF6, 0xBB,- 0x0A, 0x6D, 0x43, 0xF9, 0x94, 0xF9, 0x5F, 0x11- },- {- 0xF6, 0x3A, 0xAB, 0x3E, 0xC6, 0x41, 0xB3, 0xB0,- 0x24, 0x96, 0x4C, 0x2B, 0x43, 0x7C, 0x04, 0xF6,- 0x04, 0x3C, 0x4C, 0x7E, 0x02, 0x79, 0x23, 0x99,- 0x95, 0x40, 0x19, 0x58, 0xF8, 0x6B, 0xBE, 0x54- },- {- 0xF1, 0x72, 0xB1, 0x80, 0xBF, 0xB0, 0x97, 0x40,- 0x49, 0x31, 0x20, 0xB6, 0x32, 0x6C, 0xBD, 0xC5,- 0x61, 0xE4, 0x77, 0xDE, 0xF9, 0xBB, 0xCF, 0xD2,- 0x8C, 0xC8, 0xC1, 0xC5, 0xE3, 0x37, 0x9A, 0x31- },- {- 0xCB, 0x9B, 0x89, 0xCC, 0x18, 0x38, 0x1D, 0xD9,- 0x14, 0x1A, 0xDE, 0x58, 0x86, 0x54, 0xD4, 0xE6,- 0xA2, 0x31, 0xD5, 0xBF, 0x49, 0xD4, 0xD5, 0x9A,- 0xC2, 0x7D, 0x86, 0x9C, 0xBE, 0x10, 0x0C, 0xF3- },- {- 0x7B, 0xD8, 0x81, 0x50, 0x46, 0xFD, 0xD8, 0x10,- 0xA9, 0x23, 0xE1, 0x98, 0x4A, 0xAE, 0xBD, 0xCD,- 0xF8, 0x4D, 0x87, 0xC8, 0x99, 0x2D, 0x68, 0xB5,- 0xEE, 0xB4, 0x60, 0xF9, 0x3E, 0xB3, 0xC8, 0xD7- },- {- 0x60, 0x7B, 0xE6, 0x68, 0x62, 0xFD, 0x08, 0xEE,- 0x5B, 0x19, 0xFA, 0xCA, 0xC0, 0x9D, 0xFD, 0xBC,- 0xD4, 0x0C, 0x31, 0x21, 0x01, 0xD6, 0x6E, 0x6E,- 0xBD, 0x2B, 0x84, 0x1F, 0x1B, 0x9A, 0x93, 0x25- },- {- 0x9F, 0xE0, 0x3B, 0xBE, 0x69, 0xAB, 0x18, 0x34,- 0xF5, 0x21, 0x9B, 0x0D, 0xA8, 0x8A, 0x08, 0xB3,- 0x0A, 0x66, 0xC5, 0x91, 0x3F, 0x01, 0x51, 0x96,- 0x3C, 0x36, 0x05, 0x60, 0xDB, 0x03, 0x87, 0xB3- },- {- 0x90, 0xA8, 0x35, 0x85, 0x71, 0x7B, 0x75, 0xF0,- 0xE9, 0xB7, 0x25, 0xE0, 0x55, 0xEE, 0xEE, 0xB9,- 0xE7, 0xA0, 0x28, 0xEA, 0x7E, 0x6C, 0xBC, 0x07,- 0xB2, 0x09, 0x17, 0xEC, 0x03, 0x63, 0xE3, 0x8C- },- {- 0x33, 0x6E, 0xA0, 0x53, 0x0F, 0x4A, 0x74, 0x69,- 0x12, 0x6E, 0x02, 0x18, 0x58, 0x7E, 0xBB, 0xDE,- 0x33, 0x58, 0xA0, 0xB3, 0x1C, 0x29, 0xD2, 0x00,- 0xF7, 0xDC, 0x7E, 0xB1, 0x5C, 0x6A, 0xAD, 0xD8- },- {- 0xA7, 0x9E, 0x76, 0xDC, 0x0A, 0xBC, 0xA4, 0x39,- 0x6F, 0x07, 0x47, 0xCD, 0x7B, 0x74, 0x8D, 0xF9,- 0x13, 0x00, 0x76, 0x26, 0xB1, 0xD6, 0x59, 0xDA,- 0x0C, 0x1F, 0x78, 0xB9, 0x30, 0x3D, 0x01, 0xA3- },- {- 0x44, 0xE7, 0x8A, 0x77, 0x37, 0x56, 0xE0, 0x95,- 0x15, 0x19, 0x50, 0x4D, 0x70, 0x38, 0xD2, 0x8D,- 0x02, 0x13, 0xA3, 0x7E, 0x0C, 0xE3, 0x75, 0x37,- 0x17, 0x57, 0xBC, 0x99, 0x63, 0x11, 0xE3, 0xB8- },- {- 0x77, 0xAC, 0x01, 0x2A, 0x3F, 0x75, 0x4D, 0xCF,- 0xEA, 0xB5, 0xEB, 0x99, 0x6B, 0xE9, 0xCD, 0x2D,- 0x1F, 0x96, 0x11, 0x1B, 0x6E, 0x49, 0xF3, 0x99,- 0x4D, 0xF1, 0x81, 0xF2, 0x85, 0x69, 0xD8, 0x25- },- {- 0xCE, 0x5A, 0x10, 0xDB, 0x6F, 0xCC, 0xDA, 0xF1,- 0x40, 0xAA, 0xA4, 0xDE, 0xD6, 0x25, 0x0A, 0x9C,- 0x06, 0xE9, 0x22, 0x2B, 0xC9, 0xF9, 0xF3, 0x65,- 0x8A, 0x4A, 0xFF, 0x93, 0x5F, 0x2B, 0x9F, 0x3A- },- {- 0xEC, 0xC2, 0x03, 0xA7, 0xFE, 0x2B, 0xE4, 0xAB,- 0xD5, 0x5B, 0xB5, 0x3E, 0x6E, 0x67, 0x35, 0x72,- 0xE0, 0x07, 0x8D, 0xA8, 0xCD, 0x37, 0x5E, 0xF4,- 0x30, 0xCC, 0x97, 0xF9, 0xF8, 0x00, 0x83, 0xAF- },- {- 0x14, 0xA5, 0x18, 0x6D, 0xE9, 0xD7, 0xA1, 0x8B,- 0x04, 0x12, 0xB8, 0x56, 0x3E, 0x51, 0xCC, 0x54,- 0x33, 0x84, 0x0B, 0x4A, 0x12, 0x9A, 0x8F, 0xF9,- 0x63, 0xB3, 0x3A, 0x3C, 0x4A, 0xFE, 0x8E, 0xBB- },- {- 0x13, 0xF8, 0xEF, 0x95, 0xCB, 0x86, 0xE6, 0xA6,- 0x38, 0x93, 0x1C, 0x8E, 0x10, 0x76, 0x73, 0xEB,- 0x76, 0xBA, 0x10, 0xD7, 0xC2, 0xCD, 0x70, 0xB9,- 0xD9, 0x92, 0x0B, 0xBE, 0xED, 0x92, 0x94, 0x09- },- {- 0x0B, 0x33, 0x8F, 0x4E, 0xE1, 0x2F, 0x2D, 0xFC,- 0xB7, 0x87, 0x13, 0x37, 0x79, 0x41, 0xE0, 0xB0,- 0x63, 0x21, 0x52, 0x58, 0x1D, 0x13, 0x32, 0x51,- 0x6E, 0x4A, 0x2C, 0xAB, 0x19, 0x42, 0xCC, 0xA4- },- {- 0xEA, 0xAB, 0x0E, 0xC3, 0x7B, 0x3B, 0x8A, 0xB7,- 0x96, 0xE9, 0xF5, 0x72, 0x38, 0xDE, 0x14, 0xA2,- 0x64, 0xA0, 0x76, 0xF3, 0x88, 0x7D, 0x86, 0xE2,- 0x9B, 0xB5, 0x90, 0x6D, 0xB5, 0xA0, 0x0E, 0x02- },- {- 0x23, 0xCB, 0x68, 0xB8, 0xC0, 0xE6, 0xDC, 0x26,- 0xDC, 0x27, 0x76, 0x6D, 0xDC, 0x0A, 0x13, 0xA9,- 0x94, 0x38, 0xFD, 0x55, 0x61, 0x7A, 0xA4, 0x09,- 0x5D, 0x8F, 0x96, 0x97, 0x20, 0xC8, 0x72, 0xDF- },- {- 0x09, 0x1D, 0x8E, 0xE3, 0x0D, 0x6F, 0x29, 0x68,- 0xD4, 0x6B, 0x68, 0x7D, 0xD6, 0x52, 0x92, 0x66,- 0x57, 0x42, 0xDE, 0x0B, 0xB8, 0x3D, 0xCC, 0x00,- 0x04, 0xC7, 0x2C, 0xE1, 0x00, 0x07, 0xA5, 0x49- },- {- 0x7F, 0x50, 0x7A, 0xBC, 0x6D, 0x19, 0xBA, 0x00,- 0xC0, 0x65, 0xA8, 0x76, 0xEC, 0x56, 0x57, 0x86,- 0x88, 0x82, 0xD1, 0x8A, 0x22, 0x1B, 0xC4, 0x6C,- 0x7A, 0x69, 0x12, 0x54, 0x1F, 0x5B, 0xC7, 0xBA- },- {- 0xA0, 0x60, 0x7C, 0x24, 0xE1, 0x4E, 0x8C, 0x22,- 0x3D, 0xB0, 0xD7, 0x0B, 0x4D, 0x30, 0xEE, 0x88,- 0x01, 0x4D, 0x60, 0x3F, 0x43, 0x7E, 0x9E, 0x02,- 0xAA, 0x7D, 0xAF, 0xA3, 0xCD, 0xFB, 0xAD, 0x94- },- {- 0xDD, 0xBF, 0xEA, 0x75, 0xCC, 0x46, 0x78, 0x82,- 0xEB, 0x34, 0x83, 0xCE, 0x5E, 0x2E, 0x75, 0x6A,- 0x4F, 0x47, 0x01, 0xB7, 0x6B, 0x44, 0x55, 0x19,- 0xE8, 0x9F, 0x22, 0xD6, 0x0F, 0xA8, 0x6E, 0x06- },- {- 0x0C, 0x31, 0x1F, 0x38, 0xC3, 0x5A, 0x4F, 0xB9,- 0x0D, 0x65, 0x1C, 0x28, 0x9D, 0x48, 0x68, 0x56,- 0xCD, 0x14, 0x13, 0xDF, 0x9B, 0x06, 0x77, 0xF5,- 0x3E, 0xCE, 0x2C, 0xD9, 0xE4, 0x77, 0xC6, 0x0A- },- {- 0x46, 0xA7, 0x3A, 0x8D, 0xD3, 0xE7, 0x0F, 0x59,- 0xD3, 0x94, 0x2C, 0x01, 0xDF, 0x59, 0x9D, 0xEF,- 0x78, 0x3C, 0x9D, 0xA8, 0x2F, 0xD8, 0x32, 0x22,- 0xCD, 0x66, 0x2B, 0x53, 0xDC, 0xE7, 0xDB, 0xDF- },- {- 0xAD, 0x03, 0x8F, 0xF9, 0xB1, 0x4D, 0xE8, 0x4A,- 0x80, 0x1E, 0x4E, 0x62, 0x1C, 0xE5, 0xDF, 0x02,- 0x9D, 0xD9, 0x35, 0x20, 0xD0, 0xC2, 0xFA, 0x38,- 0xBF, 0xF1, 0x76, 0xA8, 0xB1, 0xD1, 0x69, 0x8C- },- {- 0xAB, 0x70, 0xC5, 0xDF, 0xBD, 0x1E, 0xA8, 0x17,- 0xFE, 0xD0, 0xCD, 0x06, 0x72, 0x93, 0xAB, 0xF3,- 0x19, 0xE5, 0xD7, 0x90, 0x1C, 0x21, 0x41, 0xD5,- 0xD9, 0x9B, 0x23, 0xF0, 0x3A, 0x38, 0xE7, 0x48- },- {- 0x1F, 0xFF, 0xDA, 0x67, 0x93, 0x2B, 0x73, 0xC8,- 0xEC, 0xAF, 0x00, 0x9A, 0x34, 0x91, 0xA0, 0x26,- 0x95, 0x3B, 0xAB, 0xFE, 0x1F, 0x66, 0x3B, 0x06,- 0x97, 0xC3, 0xC4, 0xAE, 0x8B, 0x2E, 0x7D, 0xCB- },- {- 0xB0, 0xD2, 0xCC, 0x19, 0x47, 0x2D, 0xD5, 0x7F,- 0x2B, 0x17, 0xEF, 0xC0, 0x3C, 0x8D, 0x58, 0xC2,- 0x28, 0x3D, 0xBB, 0x19, 0xDA, 0x57, 0x2F, 0x77,- 0x55, 0x85, 0x5A, 0xA9, 0x79, 0x43, 0x17, 0xA0- },- {- 0xA0, 0xD1, 0x9A, 0x6E, 0xE3, 0x39, 0x79, 0xC3,- 0x25, 0x51, 0x0E, 0x27, 0x66, 0x22, 0xDF, 0x41,- 0xF7, 0x15, 0x83, 0xD0, 0x75, 0x01, 0xB8, 0x70,- 0x71, 0x12, 0x9A, 0x0A, 0xD9, 0x47, 0x32, 0xA5- },- {- 0x72, 0x46, 0x42, 0xA7, 0x03, 0x2D, 0x10, 0x62,- 0xB8, 0x9E, 0x52, 0xBE, 0xA3, 0x4B, 0x75, 0xDF,- 0x7D, 0x8F, 0xE7, 0x72, 0xD9, 0xFE, 0x3C, 0x93,- 0xDD, 0xF3, 0xC4, 0x54, 0x5A, 0xB5, 0xA9, 0x9B- },- {- 0xAD, 0xE5, 0xEA, 0xA7, 0xE6, 0x1F, 0x67, 0x2D,- 0x58, 0x7E, 0xA0, 0x3D, 0xAE, 0x7D, 0x7B, 0x55,- 0x22, 0x9C, 0x01, 0xD0, 0x6B, 0xC0, 0xA5, 0x70,- 0x14, 0x36, 0xCB, 0xD1, 0x83, 0x66, 0xA6, 0x26- },- {- 0x01, 0x3B, 0x31, 0xEB, 0xD2, 0x28, 0xFC, 0xDD,- 0xA5, 0x1F, 0xAB, 0xB0, 0x3B, 0xB0, 0x2D, 0x60,- 0xAC, 0x20, 0xCA, 0x21, 0x5A, 0xAF, 0xA8, 0x3B,- 0xDD, 0x85, 0x5E, 0x37, 0x55, 0xA3, 0x5F, 0x0B- },- {- 0x33, 0x2E, 0xD4, 0x0B, 0xB1, 0x0D, 0xDE, 0x3C,- 0x95, 0x4A, 0x75, 0xD7, 0xB8, 0x99, 0x9D, 0x4B,- 0x26, 0xA1, 0xC0, 0x63, 0xC1, 0xDC, 0x6E, 0x32,- 0xC1, 0xD9, 0x1B, 0xAB, 0x7B, 0xBB, 0x7D, 0x16- },- {- 0xC7, 0xA1, 0x97, 0xB3, 0xA0, 0x5B, 0x56, 0x6B,- 0xCC, 0x9F, 0xAC, 0xD2, 0x0E, 0x44, 0x1D, 0x6F,- 0x6C, 0x28, 0x60, 0xAC, 0x96, 0x51, 0xCD, 0x51,- 0xD6, 0xB9, 0xD2, 0xCD, 0xEE, 0xEA, 0x03, 0x90- },- {- 0xBD, 0x9C, 0xF6, 0x4E, 0xA8, 0x95, 0x3C, 0x03,- 0x71, 0x08, 0xE6, 0xF6, 0x54, 0x91, 0x4F, 0x39,- 0x58, 0xB6, 0x8E, 0x29, 0xC1, 0x67, 0x00, 0xDC,- 0x18, 0x4D, 0x94, 0xA2, 0x17, 0x08, 0xFF, 0x60- },- {- 0x88, 0x35, 0xB0, 0xAC, 0x02, 0x11, 0x51, 0xDF,- 0x71, 0x64, 0x74, 0xCE, 0x27, 0xCE, 0x4D, 0x3C,- 0x15, 0xF0, 0xB2, 0xDA, 0xB4, 0x80, 0x03, 0xCF,- 0x3F, 0x3E, 0xFD, 0x09, 0x45, 0x10, 0x6B, 0x9A- },- {- 0x3B, 0xFE, 0xFA, 0x33, 0x01, 0xAA, 0x55, 0xC0,- 0x80, 0x19, 0x0C, 0xFF, 0xDA, 0x8E, 0xAE, 0x51,- 0xD9, 0xAF, 0x48, 0x8B, 0x4C, 0x1F, 0x24, 0xC3,- 0xD9, 0xA7, 0x52, 0x42, 0xFD, 0x8E, 0xA0, 0x1D- },- {- 0x08, 0x28, 0x4D, 0x14, 0x99, 0x3C, 0xD4, 0x7D,- 0x53, 0xEB, 0xAE, 0xCF, 0x0D, 0xF0, 0x47, 0x8C,- 0xC1, 0x82, 0xC8, 0x9C, 0x00, 0xE1, 0x85, 0x9C,- 0x84, 0x85, 0x16, 0x86, 0xDD, 0xF2, 0xC1, 0xB7- },- {- 0x1E, 0xD7, 0xEF, 0x9F, 0x04, 0xC2, 0xAC, 0x8D,- 0xB6, 0xA8, 0x64, 0xDB, 0x13, 0x10, 0x87, 0xF2,- 0x70, 0x65, 0x09, 0x8E, 0x69, 0xC3, 0xFE, 0x78,- 0x71, 0x8D, 0x9B, 0x94, 0x7F, 0x4A, 0x39, 0xD0- },- {- 0xC1, 0x61, 0xF2, 0xDC, 0xD5, 0x7E, 0x9C, 0x14,- 0x39, 0xB3, 0x1A, 0x9D, 0xD4, 0x3D, 0x8F, 0x3D,- 0x7D, 0xD8, 0xF0, 0xEB, 0x7C, 0xFA, 0xC6, 0xFB,- 0x25, 0xA0, 0xF2, 0x8E, 0x30, 0x6F, 0x06, 0x61- },- {- 0xC0, 0x19, 0x69, 0xAD, 0x34, 0xC5, 0x2C, 0xAF,- 0x3D, 0xC4, 0xD8, 0x0D, 0x19, 0x73, 0x5C, 0x29,- 0x73, 0x1A, 0xC6, 0xE7, 0xA9, 0x20, 0x85, 0xAB,- 0x92, 0x50, 0xC4, 0x8D, 0xEA, 0x48, 0xA3, 0xFC- },- {- 0x17, 0x20, 0xB3, 0x65, 0x56, 0x19, 0xD2, 0xA5,- 0x2B, 0x35, 0x21, 0xAE, 0x0E, 0x49, 0xE3, 0x45,- 0xCB, 0x33, 0x89, 0xEB, 0xD6, 0x20, 0x8A, 0xCA,- 0xF9, 0xF1, 0x3F, 0xDA, 0xCC, 0xA8, 0xBE, 0x49- },- {- 0x75, 0x62, 0x88, 0x36, 0x1C, 0x83, 0xE2, 0x4C,- 0x61, 0x7C, 0xF9, 0x5C, 0x90, 0x5B, 0x22, 0xD0,- 0x17, 0xCD, 0xC8, 0x6F, 0x0B, 0xF1, 0xD6, 0x58,- 0xF4, 0x75, 0x6C, 0x73, 0x79, 0x87, 0x3B, 0x7F- },- {- 0xE7, 0xD0, 0xED, 0xA3, 0x45, 0x26, 0x93, 0xB7,- 0x52, 0xAB, 0xCD, 0xA1, 0xB5, 0x5E, 0x27, 0x6F,- 0x82, 0x69, 0x8F, 0x5F, 0x16, 0x05, 0x40, 0x3E,- 0xFF, 0x83, 0x0B, 0xEA, 0x00, 0x71, 0xA3, 0x94- },- {- 0x2C, 0x82, 0xEC, 0xAA, 0x6B, 0x84, 0x80, 0x3E,- 0x04, 0x4A, 0xF6, 0x31, 0x18, 0xAF, 0xE5, 0x44,- 0x68, 0x7C, 0xB6, 0xE6, 0xC7, 0xDF, 0x49, 0xED,- 0x76, 0x2D, 0xFD, 0x7C, 0x86, 0x93, 0xA1, 0xBC- },- {- 0x61, 0x36, 0xCB, 0xF4, 0xB4, 0x41, 0x05, 0x6F,- 0xA1, 0xE2, 0x72, 0x24, 0x98, 0x12, 0x5D, 0x6D,- 0xED, 0x45, 0xE1, 0x7B, 0x52, 0x14, 0x39, 0x59,- 0xC7, 0xF4, 0xD4, 0xE3, 0x95, 0x21, 0x8A, 0xC2- },- {- 0x72, 0x1D, 0x32, 0x45, 0xAA, 0xFE, 0xF2, 0x7F,- 0x6A, 0x62, 0x4F, 0x47, 0x95, 0x4B, 0x6C, 0x25,- 0x50, 0x79, 0x52, 0x6F, 0xFA, 0x25, 0xE9, 0xFF,- 0x77, 0xE5, 0xDC, 0xFF, 0x47, 0x3B, 0x15, 0x97- },- {- 0x9D, 0xD2, 0xFB, 0xD8, 0xCE, 0xF1, 0x6C, 0x35,- 0x3C, 0x0A, 0xC2, 0x11, 0x91, 0xD5, 0x09, 0xEB,- 0x28, 0xDD, 0x9E, 0x3E, 0x0D, 0x8C, 0xEA, 0x5D,- 0x26, 0xCA, 0x83, 0x93, 0x93, 0x85, 0x1C, 0x3A- },- {- 0xB2, 0x39, 0x4C, 0xEA, 0xCD, 0xEB, 0xF2, 0x1B,- 0xF9, 0xDF, 0x2C, 0xED, 0x98, 0xE5, 0x8F, 0x1C,- 0x3A, 0x4B, 0xBB, 0xFF, 0x66, 0x0D, 0xD9, 0x00,- 0xF6, 0x22, 0x02, 0xD6, 0x78, 0x5C, 0xC4, 0x6E- },- {- 0x57, 0x08, 0x9F, 0x22, 0x27, 0x49, 0xAD, 0x78,- 0x71, 0x76, 0x5F, 0x06, 0x2B, 0x11, 0x4F, 0x43,- 0xBA, 0x20, 0xEC, 0x56, 0x42, 0x2A, 0x8B, 0x1E,- 0x3F, 0x87, 0x19, 0x2C, 0x0E, 0xA7, 0x18, 0xC6- },- {- 0xE4, 0x9A, 0x94, 0x59, 0x96, 0x1C, 0xD3, 0x3C,- 0xDF, 0x4A, 0xAE, 0x1B, 0x10, 0x78, 0xA5, 0xDE,- 0xA7, 0xC0, 0x40, 0xE0, 0xFE, 0xA3, 0x40, 0xC9,- 0x3A, 0x72, 0x48, 0x72, 0xFC, 0x4A, 0xF8, 0x06- },- {- 0xED, 0xE6, 0x7F, 0x72, 0x0E, 0xFF, 0xD2, 0xCA,- 0x9C, 0x88, 0x99, 0x41, 0x52, 0xD0, 0x20, 0x1D,- 0xEE, 0x6B, 0x0A, 0x2D, 0x2C, 0x07, 0x7A, 0xCA,- 0x6D, 0xAE, 0x29, 0xF7, 0x3F, 0x8B, 0x63, 0x09- },- {- 0xE0, 0xF4, 0x34, 0xBF, 0x22, 0xE3, 0x08, 0x80,- 0x39, 0xC2, 0x1F, 0x71, 0x9F, 0xFC, 0x67, 0xF0,- 0xF2, 0xCB, 0x5E, 0x98, 0xA7, 0xA0, 0x19, 0x4C,- 0x76, 0xE9, 0x6B, 0xF4, 0xE8, 0xE1, 0x7E, 0x61- },- {- 0x27, 0x7C, 0x04, 0xE2, 0x85, 0x34, 0x84, 0xA4,- 0xEB, 0xA9, 0x10, 0xAD, 0x33, 0x6D, 0x01, 0xB4,- 0x77, 0xB6, 0x7C, 0xC2, 0x00, 0xC5, 0x9F, 0x3C,- 0x8D, 0x77, 0xEE, 0xF8, 0x49, 0x4F, 0x29, 0xCD- },- {- 0x15, 0x6D, 0x57, 0x47, 0xD0, 0xC9, 0x9C, 0x7F,- 0x27, 0x09, 0x7D, 0x7B, 0x7E, 0x00, 0x2B, 0x2E,- 0x18, 0x5C, 0xB7, 0x2D, 0x8D, 0xD7, 0xEB, 0x42,- 0x4A, 0x03, 0x21, 0x52, 0x81, 0x61, 0x21, 0x9F- },- {- 0x20, 0xDD, 0xD1, 0xED, 0x9B, 0x1C, 0xA8, 0x03,- 0x94, 0x6D, 0x64, 0xA8, 0x3A, 0xE4, 0x65, 0x9D,- 0xA6, 0x7F, 0xBA, 0x7A, 0x1A, 0x3E, 0xDD, 0xB1,- 0xE1, 0x03, 0xC0, 0xF5, 0xE0, 0x3E, 0x3A, 0x2C- },- {- 0xF0, 0xAF, 0x60, 0x4D, 0x3D, 0xAB, 0xBF, 0x9A,- 0x0F, 0x2A, 0x7D, 0x3D, 0xDA, 0x6B, 0xD3, 0x8B,- 0xBA, 0x72, 0xC6, 0xD0, 0x9B, 0xE4, 0x94, 0xFC,- 0xEF, 0x71, 0x3F, 0xF1, 0x01, 0x89, 0xB6, 0xE6- },- {- 0x98, 0x02, 0xBB, 0x87, 0xDE, 0xF4, 0xCC, 0x10,- 0xC4, 0xA5, 0xFD, 0x49, 0xAA, 0x58, 0xDF, 0xE2,- 0xF3, 0xFD, 0xDB, 0x46, 0xB4, 0x70, 0x88, 0x14,- 0xEA, 0xD8, 0x1D, 0x23, 0xBA, 0x95, 0x13, 0x9B- },- {- 0x4F, 0x8C, 0xE1, 0xE5, 0x1D, 0x2F, 0xE7, 0xF2,- 0x40, 0x43, 0xA9, 0x04, 0xD8, 0x98, 0xEB, 0xFC,- 0x91, 0x97, 0x54, 0x18, 0x75, 0x34, 0x13, 0xAA,- 0x09, 0x9B, 0x79, 0x5E, 0xCB, 0x35, 0xCE, 0xDB- },- {- 0xBD, 0xDC, 0x65, 0x14, 0xD7, 0xEE, 0x6A, 0xCE,- 0x0A, 0x4A, 0xC1, 0xD0, 0xE0, 0x68, 0x11, 0x22,- 0x88, 0xCB, 0xCF, 0x56, 0x04, 0x54, 0x64, 0x27,- 0x05, 0x63, 0x01, 0x77, 0xCB, 0xA6, 0x08, 0xBD- },- {- 0xD6, 0x35, 0x99, 0x4F, 0x62, 0x91, 0x51, 0x7B,- 0x02, 0x81, 0xFF, 0xDD, 0x49, 0x6A, 0xFA, 0x86,- 0x27, 0x12, 0xE5, 0xB3, 0xC4, 0xE5, 0x2E, 0x4C,- 0xD5, 0xFD, 0xAE, 0x8C, 0x0E, 0x72, 0xFB, 0x08- },- {- 0x87, 0x8D, 0x9C, 0xA6, 0x00, 0xCF, 0x87, 0xE7,- 0x69, 0xCC, 0x30, 0x5C, 0x1B, 0x35, 0x25, 0x51,- 0x86, 0x61, 0x5A, 0x73, 0xA0, 0xDA, 0x61, 0x3B,- 0x5F, 0x1C, 0x98, 0xDB, 0xF8, 0x12, 0x83, 0xEA- },- {- 0xA6, 0x4E, 0xBE, 0x5D, 0xC1, 0x85, 0xDE, 0x9F,- 0xDD, 0xE7, 0x60, 0x7B, 0x69, 0x98, 0x70, 0x2E,- 0xB2, 0x34, 0x56, 0x18, 0x49, 0x57, 0x30, 0x7D,- 0x2F, 0xA7, 0x2E, 0x87, 0xA4, 0x77, 0x02, 0xD6- },- {- 0xCE, 0x50, 0xEA, 0xB7, 0xB5, 0xEB, 0x52, 0xBD,- 0xC9, 0xAD, 0x8E, 0x5A, 0x48, 0x0A, 0xB7, 0x80,- 0xCA, 0x93, 0x20, 0xE4, 0x43, 0x60, 0xB1, 0xFE,- 0x37, 0xE0, 0x3F, 0x2F, 0x7A, 0xD7, 0xDE, 0x01- },- {- 0xEE, 0xDD, 0xB7, 0xC0, 0xDB, 0x6E, 0x30, 0xAB,- 0xE6, 0x6D, 0x79, 0xE3, 0x27, 0x51, 0x1E, 0x61,- 0xFC, 0xEB, 0xBC, 0x29, 0xF1, 0x59, 0xB4, 0x0A,- 0x86, 0xB0, 0x46, 0xEC, 0xF0, 0x51, 0x38, 0x23- },- {- 0x78, 0x7F, 0xC9, 0x34, 0x40, 0xC1, 0xEC, 0x96,- 0xB5, 0xAD, 0x01, 0xC1, 0x6C, 0xF7, 0x79, 0x16,- 0xA1, 0x40, 0x5F, 0x94, 0x26, 0x35, 0x6E, 0xC9,- 0x21, 0xD8, 0xDF, 0xF3, 0xEA, 0x63, 0xB7, 0xE0- },- {- 0x7F, 0x0D, 0x5E, 0xAB, 0x47, 0xEE, 0xFD, 0xA6,- 0x96, 0xC0, 0xBF, 0x0F, 0xBF, 0x86, 0xAB, 0x21,- 0x6F, 0xCE, 0x46, 0x1E, 0x93, 0x03, 0xAB, 0xA6,- 0xAC, 0x37, 0x41, 0x20, 0xE8, 0x90, 0xE8, 0xDF- },- {- 0xB6, 0x80, 0x04, 0xB4, 0x2F, 0x14, 0xAD, 0x02,- 0x9F, 0x4C, 0x2E, 0x03, 0xB1, 0xD5, 0xEB, 0x76,- 0xD5, 0x71, 0x60, 0xE2, 0x64, 0x76, 0xD2, 0x11,- 0x31, 0xBE, 0xF2, 0x0A, 0xDA, 0x7D, 0x27, 0xF4- },- {- 0xB0, 0xC4, 0xEB, 0x18, 0xAE, 0x25, 0x0B, 0x51,- 0xA4, 0x13, 0x82, 0xEA, 0xD9, 0x2D, 0x0D, 0xC7,- 0x45, 0x5F, 0x93, 0x79, 0xFC, 0x98, 0x84, 0x42,- 0x8E, 0x47, 0x70, 0x60, 0x8D, 0xB0, 0xFA, 0xEC- },- {- 0xF9, 0x2B, 0x7A, 0x87, 0x0C, 0x05, 0x9F, 0x4D,- 0x46, 0x46, 0x4C, 0x82, 0x4E, 0xC9, 0x63, 0x55,- 0x14, 0x0B, 0xDC, 0xE6, 0x81, 0x32, 0x2C, 0xC3,- 0xA9, 0x92, 0xFF, 0x10, 0x3E, 0x3F, 0xEA, 0x52- },- {- 0x53, 0x64, 0x31, 0x26, 0x14, 0x81, 0x33, 0x98,- 0xCC, 0x52, 0x5D, 0x4C, 0x4E, 0x14, 0x6E, 0xDE,- 0xB3, 0x71, 0x26, 0x5F, 0xBA, 0x19, 0x13, 0x3A,- 0x2C, 0x3D, 0x21, 0x59, 0x29, 0x8A, 0x17, 0x42- },- {- 0xF6, 0x62, 0x0E, 0x68, 0xD3, 0x7F, 0xB2, 0xAF,- 0x50, 0x00, 0xFC, 0x28, 0xE2, 0x3B, 0x83, 0x22,- 0x97, 0xEC, 0xD8, 0xBC, 0xE9, 0x9E, 0x8B, 0xE4,- 0xD0, 0x4E, 0x85, 0x30, 0x9E, 0x3D, 0x33, 0x74- },- {- 0x53, 0x16, 0xA2, 0x79, 0x69, 0xD7, 0xFE, 0x04,- 0xFF, 0x27, 0xB2, 0x83, 0x96, 0x1B, 0xFF, 0xC3,- 0xBF, 0x5D, 0xFB, 0x32, 0xFB, 0x6A, 0x89, 0xD1,- 0x01, 0xC6, 0xC3, 0xB1, 0x93, 0x7C, 0x28, 0x71- },- {- 0x81, 0xD1, 0x66, 0x4F, 0xDF, 0x3C, 0xB3, 0x3C,- 0x24, 0xEE, 0xBA, 0xC0, 0xBD, 0x64, 0x24, 0x4B,- 0x77, 0xC4, 0xAB, 0xEA, 0x90, 0xBB, 0xE8, 0xB5,- 0xEE, 0x0B, 0x2A, 0xAF, 0xCF, 0x2D, 0x6A, 0x53- },- {- 0x34, 0x57, 0x82, 0xF2, 0x95, 0xB0, 0x88, 0x03,- 0x52, 0xE9, 0x24, 0xA0, 0x46, 0x7B, 0x5F, 0xBC,- 0x3E, 0x8F, 0x3B, 0xFB, 0xC3, 0xC7, 0xE4, 0x8B,- 0x67, 0x09, 0x1F, 0xB5, 0xE8, 0x0A, 0x94, 0x42- },- {- 0x79, 0x41, 0x11, 0xEA, 0x6C, 0xD6, 0x5E, 0x31,- 0x1F, 0x74, 0xEE, 0x41, 0xD4, 0x76, 0xCB, 0x63,- 0x2C, 0xE1, 0xE4, 0xB0, 0x51, 0xDC, 0x1D, 0x9E,- 0x9D, 0x06, 0x1A, 0x19, 0xE1, 0xD0, 0xBB, 0x49- },- {- 0x2A, 0x85, 0xDA, 0xF6, 0x13, 0x88, 0x16, 0xB9,- 0x9B, 0xF8, 0xD0, 0x8B, 0xA2, 0x11, 0x4B, 0x7A,- 0xB0, 0x79, 0x75, 0xA7, 0x84, 0x20, 0xC1, 0xA3,- 0xB0, 0x6A, 0x77, 0x7C, 0x22, 0xDD, 0x8B, 0xCB- },- {- 0x89, 0xB0, 0xD5, 0xF2, 0x89, 0xEC, 0x16, 0x40,- 0x1A, 0x06, 0x9A, 0x96, 0x0D, 0x0B, 0x09, 0x3E,- 0x62, 0x5D, 0xA3, 0xCF, 0x41, 0xEE, 0x29, 0xB5,- 0x9B, 0x93, 0x0C, 0x58, 0x20, 0x14, 0x54, 0x55- },- {- 0xD0, 0xFD, 0xCB, 0x54, 0x39, 0x43, 0xFC, 0x27,- 0xD2, 0x08, 0x64, 0xF5, 0x21, 0x81, 0x47, 0x1B,- 0x94, 0x2C, 0xC7, 0x7C, 0xA6, 0x75, 0xBC, 0xB3,- 0x0D, 0xF3, 0x1D, 0x35, 0x8E, 0xF7, 0xB1, 0xEB- },- {- 0xB1, 0x7E, 0xA8, 0xD7, 0x70, 0x63, 0xC7, 0x09,- 0xD4, 0xDC, 0x6B, 0x87, 0x94, 0x13, 0xC3, 0x43,- 0xE3, 0x79, 0x0E, 0x9E, 0x62, 0xCA, 0x85, 0xB7,- 0x90, 0x0B, 0x08, 0x6F, 0x6B, 0x75, 0xC6, 0x72- },- {- 0xE7, 0x1A, 0x3E, 0x2C, 0x27, 0x4D, 0xB8, 0x42,- 0xD9, 0x21, 0x14, 0xF2, 0x17, 0xE2, 0xC0, 0xEA,- 0xC8, 0xB4, 0x50, 0x93, 0xFD, 0xFD, 0x9D, 0xF4,- 0xCA, 0x71, 0x62, 0x39, 0x48, 0x62, 0xD5, 0x01- },- {- 0xC0, 0x47, 0x67, 0x59, 0xAB, 0x7A, 0xA3, 0x33,- 0x23, 0x4F, 0x6B, 0x44, 0xF5, 0xFD, 0x85, 0x83,- 0x90, 0xEC, 0x23, 0x69, 0x4C, 0x62, 0x2C, 0xB9,- 0x86, 0xE7, 0x69, 0xC7, 0x8E, 0xDD, 0x73, 0x3E- },- {- 0x9A, 0xB8, 0xEA, 0xBB, 0x14, 0x16, 0x43, 0x4D,- 0x85, 0x39, 0x13, 0x41, 0xD5, 0x69, 0x93, 0xC5,- 0x54, 0x58, 0x16, 0x7D, 0x44, 0x18, 0xB1, 0x9A,- 0x0F, 0x2A, 0xD8, 0xB7, 0x9A, 0x83, 0xA7, 0x5B- },- {- 0x79, 0x92, 0xD0, 0xBB, 0xB1, 0x5E, 0x23, 0x82,- 0x6F, 0x44, 0x3E, 0x00, 0x50, 0x5D, 0x68, 0xD3,- 0xED, 0x73, 0x72, 0x99, 0x5A, 0x5C, 0x3E, 0x49,- 0x86, 0x54, 0x10, 0x2F, 0xBC, 0xD0, 0x96, 0x4E- },- {- 0xC0, 0x21, 0xB3, 0x00, 0x85, 0x15, 0x14, 0x35,- 0xDF, 0x33, 0xB0, 0x07, 0xCC, 0xEC, 0xC6, 0x9D,- 0xF1, 0x26, 0x9F, 0x39, 0xBA, 0x25, 0x09, 0x2B,- 0xED, 0x59, 0xD9, 0x32, 0xAC, 0x0F, 0xDC, 0x28- },- {- 0x91, 0xA2, 0x5E, 0xC0, 0xEC, 0x0D, 0x9A, 0x56,- 0x7F, 0x89, 0xC4, 0xBF, 0xE1, 0xA6, 0x5A, 0x0E,- 0x43, 0x2D, 0x07, 0x06, 0x4B, 0x41, 0x90, 0xE2,- 0x7D, 0xFB, 0x81, 0x90, 0x1F, 0xD3, 0x13, 0x9B- },- {- 0x59, 0x50, 0xD3, 0x9A, 0x23, 0xE1, 0x54, 0x5F,- 0x30, 0x12, 0x70, 0xAA, 0x1A, 0x12, 0xF2, 0xE6,- 0xC4, 0x53, 0x77, 0x6E, 0x4D, 0x63, 0x55, 0xDE,- 0x42, 0x5C, 0xC1, 0x53, 0xF9, 0x81, 0x88, 0x67- },- {- 0xD7, 0x9F, 0x14, 0x72, 0x0C, 0x61, 0x0A, 0xF1,- 0x79, 0xA3, 0x76, 0x5D, 0x4B, 0x7C, 0x09, 0x68,- 0xF9, 0x77, 0x96, 0x2D, 0xBF, 0x65, 0x5B, 0x52,- 0x12, 0x72, 0xB6, 0xF1, 0xE1, 0x94, 0x48, 0x8E- },- {- 0xE9, 0x53, 0x1B, 0xFC, 0x8B, 0x02, 0x99, 0x5A,- 0xEA, 0xA7, 0x5B, 0xA2, 0x70, 0x31, 0xFA, 0xDB,- 0xCB, 0xF4, 0xA0, 0xDA, 0xB8, 0x96, 0x1D, 0x92,- 0x96, 0xCD, 0x7E, 0x84, 0xD2, 0x5D, 0x60, 0x06- },- {- 0x34, 0xE9, 0xC2, 0x6A, 0x01, 0xD7, 0xF1, 0x61,- 0x81, 0xB4, 0x54, 0xA9, 0xD1, 0x62, 0x3C, 0x23,- 0x3C, 0xB9, 0x9D, 0x31, 0xC6, 0x94, 0x65, 0x6E,- 0x94, 0x13, 0xAC, 0xA3, 0xE9, 0x18, 0x69, 0x2F- },- {- 0xD9, 0xD7, 0x42, 0x2F, 0x43, 0x7B, 0xD4, 0x39,- 0xDD, 0xD4, 0xD8, 0x83, 0xDA, 0xE2, 0xA0, 0x83,- 0x50, 0x17, 0x34, 0x14, 0xBE, 0x78, 0x15, 0x51,- 0x33, 0xFF, 0xF1, 0x96, 0x4C, 0x3D, 0x79, 0x72- },- {- 0x4A, 0xEE, 0x0C, 0x7A, 0xAF, 0x07, 0x54, 0x14,- 0xFF, 0x17, 0x93, 0xEA, 0xD7, 0xEA, 0xCA, 0x60,- 0x17, 0x75, 0xC6, 0x15, 0xDB, 0xD6, 0x0B, 0x64,- 0x0B, 0x0A, 0x9F, 0x0C, 0xE5, 0x05, 0xD4, 0x35- },- {- 0x6B, 0xFD, 0xD1, 0x54, 0x59, 0xC8, 0x3B, 0x99,- 0xF0, 0x96, 0xBF, 0xB4, 0x9E, 0xE8, 0x7B, 0x06,- 0x3D, 0x69, 0xC1, 0x97, 0x4C, 0x69, 0x28, 0xAC,- 0xFC, 0xFB, 0x40, 0x99, 0xF8, 0xC4, 0xEF, 0x67- },- {- 0x9F, 0xD1, 0xC4, 0x08, 0xFD, 0x75, 0xC3, 0x36,- 0x19, 0x3A, 0x2A, 0x14, 0xD9, 0x4F, 0x6A, 0xF5,- 0xAD, 0xF0, 0x50, 0xB8, 0x03, 0x87, 0xB4, 0xB0,- 0x10, 0xFB, 0x29, 0xF4, 0xCC, 0x72, 0x70, 0x7C- },- {- 0x13, 0xC8, 0x84, 0x80, 0xA5, 0xD0, 0x0D, 0x6C,- 0x8C, 0x7A, 0xD2, 0x11, 0x0D, 0x76, 0xA8, 0x2D,- 0x9B, 0x70, 0xF4, 0xFA, 0x66, 0x96, 0xD4, 0xE5,- 0xDD, 0x42, 0xA0, 0x66, 0xDC, 0xAF, 0x99, 0x20- },- {- 0x82, 0x0E, 0x72, 0x5E, 0xE2, 0x5F, 0xE8, 0xFD,- 0x3A, 0x8D, 0x5A, 0xBE, 0x4C, 0x46, 0xC3, 0xBA,- 0x88, 0x9D, 0xE6, 0xFA, 0x91, 0x91, 0xAA, 0x22,- 0xBA, 0x67, 0xD5, 0x70, 0x54, 0x21, 0x54, 0x2B- },- {- 0x32, 0xD9, 0x3A, 0x0E, 0xB0, 0x2F, 0x42, 0xFB,- 0xBC, 0xAF, 0x2B, 0xAD, 0x00, 0x85, 0xB2, 0x82,- 0xE4, 0x60, 0x46, 0xA4, 0xDF, 0x7A, 0xD1, 0x06,- 0x57, 0xC9, 0xD6, 0x47, 0x63, 0x75, 0xB9, 0x3E- },- {- 0xAD, 0xC5, 0x18, 0x79, 0x05, 0xB1, 0x66, 0x9C,- 0xD8, 0xEC, 0x9C, 0x72, 0x1E, 0x19, 0x53, 0x78,- 0x6B, 0x9D, 0x89, 0xA9, 0xBA, 0xE3, 0x07, 0x80,- 0xF1, 0xE1, 0xEA, 0xB2, 0x4A, 0x00, 0x52, 0x3C- },- {- 0xE9, 0x07, 0x56, 0xFF, 0x7F, 0x9A, 0xD8, 0x10,- 0xB2, 0x39, 0xA1, 0x0C, 0xED, 0x2C, 0xF9, 0xB2,- 0x28, 0x43, 0x54, 0xC1, 0xF8, 0xC7, 0xE0, 0xAC,- 0xCC, 0x24, 0x61, 0xDC, 0x79, 0x6D, 0x6E, 0x89- },- {- 0x12, 0x51, 0xF7, 0x6E, 0x56, 0x97, 0x84, 0x81,- 0x87, 0x53, 0x59, 0x80, 0x1D, 0xB5, 0x89, 0xA0,- 0xB2, 0x2F, 0x86, 0xD8, 0xD6, 0x34, 0xDC, 0x04,- 0x50, 0x6F, 0x32, 0x2E, 0xD7, 0x8F, 0x17, 0xE8- },- {- 0x3A, 0xFA, 0x89, 0x9F, 0xD9, 0x80, 0xE7, 0x3E,- 0xCB, 0x7F, 0x4D, 0x8B, 0x8F, 0x29, 0x1D, 0xC9,- 0xAF, 0x79, 0x6B, 0xC6, 0x5D, 0x27, 0xF9, 0x74,- 0xC6, 0xF1, 0x93, 0xC9, 0x19, 0x1A, 0x09, 0xFD- },- {- 0xAA, 0x30, 0x5B, 0xE2, 0x6E, 0x5D, 0xED, 0xDC,- 0x3C, 0x10, 0x10, 0xCB, 0xC2, 0x13, 0xF9, 0x5F,- 0x05, 0x1C, 0x78, 0x5C, 0x5B, 0x43, 0x1E, 0x6A,- 0x7C, 0xD0, 0x48, 0xF1, 0x61, 0x78, 0x75, 0x28- },- {- 0x8E, 0xA1, 0x88, 0x4F, 0xF3, 0x2E, 0x9D, 0x10,- 0xF0, 0x39, 0xB4, 0x07, 0xD0, 0xD4, 0x4E, 0x7E,- 0x67, 0x0A, 0xBD, 0x88, 0x4A, 0xEE, 0xE0, 0xFB,- 0x75, 0x7A, 0xE9, 0x4E, 0xAA, 0x97, 0x37, 0x3D- },- {- 0xD4, 0x82, 0xB2, 0x15, 0x5D, 0x4D, 0xEC, 0x6B,- 0x47, 0x36, 0xA1, 0xF1, 0x61, 0x7B, 0x53, 0xAA,- 0xA3, 0x73, 0x10, 0x27, 0x7D, 0x3F, 0xEF, 0x0C,- 0x37, 0xAD, 0x41, 0x76, 0x8F, 0xC2, 0x35, 0xB4- },- {- 0x4D, 0x41, 0x39, 0x71, 0x38, 0x7E, 0x7A, 0x88,- 0x98, 0xA8, 0xDC, 0x2A, 0x27, 0x50, 0x07, 0x78,- 0x53, 0x9E, 0xA2, 0x14, 0xA2, 0xDF, 0xE9, 0xB3,- 0xD7, 0xE8, 0xEB, 0xDC, 0xE5, 0xCF, 0x3D, 0xB3- },- {- 0x69, 0x6E, 0x5D, 0x46, 0xE6, 0xC5, 0x7E, 0x87,- 0x96, 0xE4, 0x73, 0x5D, 0x08, 0x91, 0x6E, 0x0B,- 0x79, 0x29, 0xB3, 0xCF, 0x29, 0x8C, 0x29, 0x6D,- 0x22, 0xE9, 0xD3, 0x01, 0x96, 0x53, 0x37, 0x1C- },- {- 0x1F, 0x56, 0x47, 0xC1, 0xD3, 0xB0, 0x88, 0x22,- 0x88, 0x85, 0x86, 0x5C, 0x89, 0x40, 0x90, 0x8B,- 0xF4, 0x0D, 0x1A, 0x82, 0x72, 0x82, 0x19, 0x73,- 0xB1, 0x60, 0x00, 0x8E, 0x7A, 0x3C, 0xE2, 0xEB- },- {- 0xB6, 0xE7, 0x6C, 0x33, 0x0F, 0x02, 0x1A, 0x5B,- 0xDA, 0x65, 0x87, 0x50, 0x10, 0xB0, 0xED, 0xF0,- 0x91, 0x26, 0xC0, 0xF5, 0x10, 0xEA, 0x84, 0x90,- 0x48, 0x19, 0x20, 0x03, 0xAE, 0xF4, 0xC6, 0x1C- },- {- 0x3C, 0xD9, 0x52, 0xA0, 0xBE, 0xAD, 0xA4, 0x1A,- 0xBB, 0x42, 0x4C, 0xE4, 0x7F, 0x94, 0xB4, 0x2B,- 0xE6, 0x4E, 0x1F, 0xFB, 0x0F, 0xD0, 0x78, 0x22,- 0x76, 0x80, 0x79, 0x46, 0xD0, 0xD0, 0xBC, 0x55- },- {- 0x98, 0xD9, 0x26, 0x77, 0x43, 0x9B, 0x41, 0xB7,- 0xBB, 0x51, 0x33, 0x12, 0xAF, 0xB9, 0x2B, 0xCC,- 0x8E, 0xE9, 0x68, 0xB2, 0xE3, 0xB2, 0x38, 0xCE,- 0xCB, 0x9B, 0x0F, 0x34, 0xC9, 0xBB, 0x63, 0xD0- },- {- 0xEC, 0xBC, 0xA2, 0xCF, 0x08, 0xAE, 0x57, 0xD5,- 0x17, 0xAD, 0x16, 0x15, 0x8A, 0x32, 0xBF, 0xA7,- 0xDC, 0x03, 0x82, 0xEA, 0xED, 0xA1, 0x28, 0xE9,- 0x18, 0x86, 0x73, 0x4C, 0x24, 0xA0, 0xB2, 0x9D- },- {- 0x94, 0x2C, 0xC7, 0xC0, 0xB5, 0x2E, 0x2B, 0x16,- 0xA4, 0xB8, 0x9F, 0xA4, 0xFC, 0x7E, 0x0B, 0xF6,- 0x09, 0xE2, 0x9A, 0x08, 0xC1, 0xA8, 0x54, 0x34,- 0x52, 0xB7, 0x7C, 0x7B, 0xFD, 0x11, 0xBB, 0x28- },- {- 0x8A, 0x06, 0x5D, 0x8B, 0x61, 0xA0, 0xDF, 0xFB,- 0x17, 0x0D, 0x56, 0x27, 0x73, 0x5A, 0x76, 0xB0,- 0xE9, 0x50, 0x60, 0x37, 0x80, 0x8C, 0xBA, 0x16,- 0xC3, 0x45, 0x00, 0x7C, 0x9F, 0x79, 0xCF, 0x8F- },- {- 0x1B, 0x9F, 0xA1, 0x97, 0x14, 0x65, 0x9C, 0x78,- 0xFF, 0x41, 0x38, 0x71, 0x84, 0x92, 0x15, 0x36,- 0x10, 0x29, 0xAC, 0x80, 0x2B, 0x1C, 0xBC, 0xD5,- 0x4E, 0x40, 0x8B, 0xD8, 0x72, 0x87, 0xF8, 0x1F- },- {- 0x8D, 0xAB, 0x07, 0x1B, 0xCD, 0x6C, 0x72, 0x92,- 0xA9, 0xEF, 0x72, 0x7B, 0x4A, 0xE0, 0xD8, 0x67,- 0x13, 0x30, 0x1D, 0xA8, 0x61, 0x8D, 0x9A, 0x48,- 0xAD, 0xCE, 0x55, 0xF3, 0x03, 0xA8, 0x69, 0xA1- },- {- 0x82, 0x53, 0xE3, 0xE7, 0xC7, 0xB6, 0x84, 0xB9,- 0xCB, 0x2B, 0xEB, 0x01, 0x4C, 0xE3, 0x30, 0xFF,- 0x3D, 0x99, 0xD1, 0x7A, 0xBB, 0xDB, 0xAB, 0xE4,- 0xF4, 0xD6, 0x74, 0xDE, 0xD5, 0x3F, 0xFC, 0x6B- },- {- 0xF1, 0x95, 0xF3, 0x21, 0xE9, 0xE3, 0xD6, 0xBD,- 0x7D, 0x07, 0x45, 0x04, 0xDD, 0x2A, 0xB0, 0xE6,- 0x24, 0x1F, 0x92, 0xE7, 0x84, 0xB1, 0xAA, 0x27,- 0x1F, 0xF6, 0x48, 0xB1, 0xCA, 0xB6, 0xD7, 0xF6- },- {- 0x27, 0xE4, 0xCC, 0x72, 0x09, 0x0F, 0x24, 0x12,- 0x66, 0x47, 0x6A, 0x7C, 0x09, 0x49, 0x5F, 0x2D,- 0xB1, 0x53, 0xD5, 0xBC, 0xBD, 0x76, 0x19, 0x03,- 0xEF, 0x79, 0x27, 0x5E, 0xC5, 0x6B, 0x2E, 0xD8- },- {- 0x89, 0x9C, 0x24, 0x05, 0x78, 0x8E, 0x25, 0xB9,- 0x9A, 0x18, 0x46, 0x35, 0x5E, 0x64, 0x6D, 0x77,- 0xCF, 0x40, 0x00, 0x83, 0x41, 0x5F, 0x7D, 0xC5,- 0xAF, 0xE6, 0x9D, 0x6E, 0x17, 0xC0, 0x00, 0x23- },- {- 0xA5, 0x9B, 0x78, 0xC4, 0x90, 0x57, 0x44, 0x07,- 0x6B, 0xFE, 0xE8, 0x94, 0xDE, 0x70, 0x7D, 0x4F,- 0x12, 0x0B, 0x5C, 0x68, 0x93, 0xEA, 0x04, 0x00,- 0x29, 0x7D, 0x0B, 0xB8, 0x34, 0x72, 0x76, 0x32- },- {- 0x59, 0xDC, 0x78, 0xB1, 0x05, 0x64, 0x97, 0x07,- 0xA2, 0xBB, 0x44, 0x19, 0xC4, 0x8F, 0x00, 0x54,- 0x00, 0xD3, 0x97, 0x3D, 0xE3, 0x73, 0x66, 0x10,- 0x23, 0x04, 0x35, 0xB1, 0x04, 0x24, 0xB2, 0x4F- },- {- 0xC0, 0x14, 0x9D, 0x1D, 0x7E, 0x7A, 0x63, 0x53,- 0xA6, 0xD9, 0x06, 0xEF, 0xE7, 0x28, 0xF2, 0xF3,- 0x29, 0xFE, 0x14, 0xA4, 0x14, 0x9A, 0x3E, 0xA7,- 0x76, 0x09, 0xBC, 0x42, 0xB9, 0x75, 0xDD, 0xFA- },- {- 0xA3, 0x2F, 0x24, 0x14, 0x74, 0xA6, 0xC1, 0x69,- 0x32, 0xE9, 0x24, 0x3B, 0xE0, 0xCF, 0x09, 0xBC,- 0xDC, 0x7E, 0x0C, 0xA0, 0xE7, 0xA6, 0xA1, 0xB9,- 0xB1, 0xA0, 0xF0, 0x1E, 0x41, 0x50, 0x23, 0x77- },- {- 0xB2, 0x39, 0xB2, 0xE4, 0xF8, 0x18, 0x41, 0x36,- 0x1C, 0x13, 0x39, 0xF6, 0x8E, 0x2C, 0x35, 0x9F,- 0x92, 0x9A, 0xF9, 0xAD, 0x9F, 0x34, 0xE0, 0x1A,- 0xAB, 0x46, 0x31, 0xAD, 0x6D, 0x55, 0x00, 0xB0- },- {- 0x85, 0xFB, 0x41, 0x9C, 0x70, 0x02, 0xA3, 0xE0,- 0xB4, 0xB6, 0xEA, 0x09, 0x3B, 0x4C, 0x1A, 0xC6,- 0x93, 0x66, 0x45, 0xB6, 0x5D, 0xAC, 0x5A, 0xC1,- 0x5A, 0x85, 0x28, 0xB7, 0xB9, 0x4C, 0x17, 0x54- },- {- 0x96, 0x19, 0x72, 0x06, 0x25, 0xF1, 0x90, 0xB9,- 0x3A, 0x3F, 0xAD, 0x18, 0x6A, 0xB3, 0x14, 0x18,- 0x96, 0x33, 0xC0, 0xD3, 0xA0, 0x1E, 0x6F, 0x9B,- 0xC8, 0xC4, 0xA8, 0xF8, 0x2F, 0x38, 0x3D, 0xBF- },- {- 0x7D, 0x62, 0x0D, 0x90, 0xFE, 0x69, 0xFA, 0x46,- 0x9A, 0x65, 0x38, 0x38, 0x89, 0x70, 0xA1, 0xAA,- 0x09, 0xBB, 0x48, 0xA2, 0xD5, 0x9B, 0x34, 0x7B,- 0x97, 0xE8, 0xCE, 0x71, 0xF4, 0x8C, 0x7F, 0x46- },- {- 0x29, 0x43, 0x83, 0x56, 0x85, 0x96, 0xFB, 0x37,- 0xC7, 0x5B, 0xBA, 0xCD, 0x97, 0x9C, 0x5F, 0xF6,- 0xF2, 0x0A, 0x55, 0x6B, 0xF8, 0x87, 0x9C, 0xC7,- 0x29, 0x24, 0x85, 0x5D, 0xF9, 0xB8, 0x24, 0x0E- },- {- 0x16, 0xB1, 0x8A, 0xB3, 0x14, 0x35, 0x9C, 0x2B,- 0x83, 0x3C, 0x1C, 0x69, 0x86, 0xD4, 0x8C, 0x55,- 0xA9, 0xFC, 0x97, 0xCD, 0xE9, 0xA3, 0xC1, 0xF1,- 0x0A, 0x31, 0x77, 0x14, 0x0F, 0x73, 0xF7, 0x38- },- {- 0x8C, 0xBB, 0xDD, 0x14, 0xBC, 0x33, 0xF0, 0x4C,- 0xF4, 0x58, 0x13, 0xE4, 0xA1, 0x53, 0xA2, 0x73,- 0xD3, 0x6A, 0xDA, 0xD5, 0xCE, 0x71, 0xF4, 0x99,- 0xEE, 0xB8, 0x7F, 0xB8, 0xAC, 0x63, 0xB7, 0x29- },- {- 0x69, 0xC9, 0xA4, 0x98, 0xDB, 0x17, 0x4E, 0xCA,- 0xEF, 0xCC, 0x5A, 0x3A, 0xC9, 0xFD, 0xED, 0xF0,- 0xF8, 0x13, 0xA5, 0xBE, 0xC7, 0x27, 0xF1, 0xE7,- 0x75, 0xBA, 0xBD, 0xEC, 0x77, 0x18, 0x81, 0x6E- },- {- 0xB4, 0x62, 0xC3, 0xBE, 0x40, 0x44, 0x8F, 0x1D,- 0x4F, 0x80, 0x62, 0x62, 0x54, 0xE5, 0x35, 0xB0,- 0x8B, 0xC9, 0xCD, 0xCF, 0xF5, 0x99, 0xA7, 0x68,- 0x57, 0x8D, 0x4B, 0x28, 0x81, 0xA8, 0xE3, 0xF0- },- {- 0x55, 0x3E, 0x9D, 0x9C, 0x5F, 0x36, 0x0A, 0xC0,- 0xB7, 0x4A, 0x7D, 0x44, 0xE5, 0xA3, 0x91, 0xDA,- 0xD4, 0xCE, 0xD0, 0x3E, 0x0C, 0x24, 0x18, 0x3B,- 0x7E, 0x8E, 0xCA, 0xBD, 0xF1, 0x71, 0x5A, 0x64- },- {- 0x7A, 0x7C, 0x55, 0xA5, 0x6F, 0xA9, 0xAE, 0x51,- 0xE6, 0x55, 0xE0, 0x19, 0x75, 0xD8, 0xA6, 0xFF,- 0x4A, 0xE9, 0xE4, 0xB4, 0x86, 0xFC, 0xBE, 0x4E,- 0xAC, 0x04, 0x45, 0x88, 0xF2, 0x45, 0xEB, 0xEA- },- {- 0x2A, 0xFD, 0xF3, 0xC8, 0x2A, 0xBC, 0x48, 0x67,- 0xF5, 0xDE, 0x11, 0x12, 0x86, 0xC2, 0xB3, 0xBE,- 0x7D, 0x6E, 0x48, 0x65, 0x7B, 0xA9, 0x23, 0xCF,- 0xBF, 0x10, 0x1A, 0x6D, 0xFC, 0xF9, 0xDB, 0x9A- },- {- 0x41, 0x03, 0x7D, 0x2E, 0xDC, 0xDC, 0xE0, 0xC4,- 0x9B, 0x7F, 0xB4, 0xA6, 0xAA, 0x09, 0x99, 0xCA,- 0x66, 0x97, 0x6C, 0x74, 0x83, 0xAF, 0xE6, 0x31,- 0xD4, 0xED, 0xA2, 0x83, 0x14, 0x4F, 0x6D, 0xFC- },- {- 0xC4, 0x46, 0x6F, 0x84, 0x97, 0xCA, 0x2E, 0xEB,- 0x45, 0x83, 0xA0, 0xB0, 0x8E, 0x9D, 0x9A, 0xC7,- 0x43, 0x95, 0x70, 0x9F, 0xDA, 0x10, 0x9D, 0x24,- 0xF2, 0xE4, 0x46, 0x21, 0x96, 0x77, 0x9C, 0x5D- },- {- 0x75, 0xF6, 0x09, 0x33, 0x8A, 0xA6, 0x7D, 0x96,- 0x9A, 0x2A, 0xE2, 0xA2, 0x36, 0x2B, 0x2D, 0xA9,- 0xD7, 0x7C, 0x69, 0x5D, 0xFD, 0x1D, 0xF7, 0x22,- 0x4A, 0x69, 0x01, 0xDB, 0x93, 0x2C, 0x33, 0x64- },- {- 0x68, 0x60, 0x6C, 0xEB, 0x98, 0x9D, 0x54, 0x88,- 0xFC, 0x7C, 0xF6, 0x49, 0xF3, 0xD7, 0xC2, 0x72,- 0xEF, 0x05, 0x5D, 0xA1, 0xA9, 0x3F, 0xAE, 0xCD,- 0x55, 0xFE, 0x06, 0xF6, 0x96, 0x70, 0x98, 0xCA- },- {- 0x44, 0x34, 0x6B, 0xDE, 0xB7, 0xE0, 0x52, 0xF6,- 0x25, 0x50, 0x48, 0xF0, 0xD9, 0xB4, 0x2C, 0x42,- 0x5B, 0xAB, 0x9C, 0x3D, 0xD2, 0x41, 0x68, 0x21,- 0x2C, 0x3E, 0xCF, 0x1E, 0xBF, 0x34, 0xE6, 0xAE- },- {- 0x8E, 0x9C, 0xF6, 0xE1, 0xF3, 0x66, 0x47, 0x1F,- 0x2A, 0xC7, 0xD2, 0xEE, 0x9B, 0x5E, 0x62, 0x66,- 0xFD, 0xA7, 0x1F, 0x8F, 0x2E, 0x41, 0x09, 0xF2,- 0x23, 0x7E, 0xD5, 0xF8, 0x81, 0x3F, 0xC7, 0x18- },- {- 0x84, 0xBB, 0xEB, 0x84, 0x06, 0xD2, 0x50, 0x95,- 0x1F, 0x8C, 0x1B, 0x3E, 0x86, 0xA7, 0xC0, 0x10,- 0x08, 0x29, 0x21, 0x83, 0x3D, 0xFD, 0x95, 0x55,- 0xA2, 0xF9, 0x09, 0xB1, 0x08, 0x6E, 0xB4, 0xB8- },- {- 0xEE, 0x66, 0x6F, 0x3E, 0xEF, 0x0F, 0x7E, 0x2A,- 0x9C, 0x22, 0x29, 0x58, 0xC9, 0x7E, 0xAF, 0x35,- 0xF5, 0x1C, 0xED, 0x39, 0x3D, 0x71, 0x44, 0x85,- 0xAB, 0x09, 0xA0, 0x69, 0x34, 0x0F, 0xDF, 0x88- },- {- 0xC1, 0x53, 0xD3, 0x4A, 0x65, 0xC4, 0x7B, 0x4A,- 0x62, 0xC5, 0xCA, 0xCF, 0x24, 0x01, 0x09, 0x75,- 0xD0, 0x35, 0x6B, 0x2F, 0x32, 0xC8, 0xF5, 0xDA,- 0x53, 0x0D, 0x33, 0x88, 0x16, 0xAD, 0x5D, 0xE6- },- {- 0x9F, 0xC5, 0x45, 0x01, 0x09, 0xE1, 0xB7, 0x79,- 0xF6, 0xC7, 0xAE, 0x79, 0xD5, 0x6C, 0x27, 0x63,- 0x5C, 0x8D, 0xD4, 0x26, 0xC5, 0xA9, 0xD5, 0x4E,- 0x25, 0x78, 0xDB, 0x98, 0x9B, 0x8C, 0x3B, 0x4E- },- {- 0xD1, 0x2B, 0xF3, 0x73, 0x2E, 0xF4, 0xAF, 0x5C,- 0x22, 0xFA, 0x90, 0x35, 0x6A, 0xF8, 0xFC, 0x50,- 0xFC, 0xB4, 0x0F, 0x8F, 0x2E, 0xA5, 0xC8, 0x59,- 0x47, 0x37, 0xA3, 0xB3, 0xD5, 0xAB, 0xDB, 0xD7- },- {- 0x11, 0x03, 0x0B, 0x92, 0x89, 0xBB, 0xA5, 0xAF,- 0x65, 0x26, 0x06, 0x72, 0xAB, 0x6F, 0xEE, 0x88,- 0xB8, 0x74, 0x20, 0xAC, 0xEF, 0x4A, 0x17, 0x89,- 0xA2, 0x07, 0x3B, 0x7E, 0xC2, 0xF2, 0xA0, 0x9E- },- {- 0x69, 0xCB, 0x19, 0x2B, 0x84, 0x44, 0x00, 0x5C,- 0x8C, 0x0C, 0xEB, 0x12, 0xC8, 0x46, 0x86, 0x07,- 0x68, 0x18, 0x8C, 0xDA, 0x0A, 0xEC, 0x27, 0xA9,- 0xC8, 0xA5, 0x5C, 0xDE, 0xE2, 0x12, 0x36, 0x32- },- {- 0xDB, 0x44, 0x4C, 0x15, 0x59, 0x7B, 0x5F, 0x1A,- 0x03, 0xD1, 0xF9, 0xED, 0xD1, 0x6E, 0x4A, 0x9F,- 0x43, 0xA6, 0x67, 0xCC, 0x27, 0x51, 0x75, 0xDF,- 0xA2, 0xB7, 0x04, 0xE3, 0xBB, 0x1A, 0x9B, 0x83- },- {- 0x3F, 0xB7, 0x35, 0x06, 0x1A, 0xBC, 0x51, 0x9D,- 0xFE, 0x97, 0x9E, 0x54, 0xC1, 0xEE, 0x5B, 0xFA,- 0xD0, 0xA9, 0xD8, 0x58, 0xB3, 0x31, 0x5B, 0xAD,- 0x34, 0xBD, 0xE9, 0x99, 0xEF, 0xD7, 0x24, 0xDD- },-};-----static const uint8_t blake2b_kat[KAT_LENGTH][BLAKE2B_OUTBYTES] =-{- {- 0x78, 0x6A, 0x02, 0xF7, 0x42, 0x01, 0x59, 0x03,- 0xC6, 0xC6, 0xFD, 0x85, 0x25, 0x52, 0xD2, 0x72,- 0x91, 0x2F, 0x47, 0x40, 0xE1, 0x58, 0x47, 0x61,- 0x8A, 0x86, 0xE2, 0x17, 0xF7, 0x1F, 0x54, 0x19,- 0xD2, 0x5E, 0x10, 0x31, 0xAF, 0xEE, 0x58, 0x53,- 0x13, 0x89, 0x64, 0x44, 0x93, 0x4E, 0xB0, 0x4B,- 0x90, 0x3A, 0x68, 0x5B, 0x14, 0x48, 0xB7, 0x55,- 0xD5, 0x6F, 0x70, 0x1A, 0xFE, 0x9B, 0xE2, 0xCE- },- {- 0x2F, 0xA3, 0xF6, 0x86, 0xDF, 0x87, 0x69, 0x95,- 0x16, 0x7E, 0x7C, 0x2E, 0x5D, 0x74, 0xC4, 0xC7,- 0xB6, 0xE4, 0x8F, 0x80, 0x68, 0xFE, 0x0E, 0x44,- 0x20, 0x83, 0x44, 0xD4, 0x80, 0xF7, 0x90, 0x4C,- 0x36, 0x96, 0x3E, 0x44, 0x11, 0x5F, 0xE3, 0xEB,- 0x2A, 0x3A, 0xC8, 0x69, 0x4C, 0x28, 0xBC, 0xB4,- 0xF5, 0xA0, 0xF3, 0x27, 0x6F, 0x2E, 0x79, 0x48,- 0x7D, 0x82, 0x19, 0x05, 0x7A, 0x50, 0x6E, 0x4B- },- {- 0x1C, 0x08, 0x79, 0x8D, 0xC6, 0x41, 0xAB, 0xA9,- 0xDE, 0xE4, 0x35, 0xE2, 0x25, 0x19, 0xA4, 0x72,- 0x9A, 0x09, 0xB2, 0xBF, 0xE0, 0xFF, 0x00, 0xEF,- 0x2D, 0xCD, 0x8E, 0xD6, 0xF8, 0xA0, 0x7D, 0x15,- 0xEA, 0xF4, 0xAE, 0xE5, 0x2B, 0xBF, 0x18, 0xAB,- 0x56, 0x08, 0xA6, 0x19, 0x0F, 0x70, 0xB9, 0x04,- 0x86, 0xC8, 0xA7, 0xD4, 0x87, 0x37, 0x10, 0xB1,- 0x11, 0x5D, 0x3D, 0xEB, 0xBB, 0x43, 0x27, 0xB5- },- {- 0x40, 0xA3, 0x74, 0x72, 0x73, 0x02, 0xD9, 0xA4,- 0x76, 0x9C, 0x17, 0xB5, 0xF4, 0x09, 0xFF, 0x32,- 0xF5, 0x8A, 0xA2, 0x4F, 0xF1, 0x22, 0xD7, 0x60,- 0x3E, 0x4F, 0xDA, 0x15, 0x09, 0xE9, 0x19, 0xD4,- 0x10, 0x7A, 0x52, 0xC5, 0x75, 0x70, 0xA6, 0xD9,- 0x4E, 0x50, 0x96, 0x7A, 0xEA, 0x57, 0x3B, 0x11,- 0xF8, 0x6F, 0x47, 0x3F, 0x53, 0x75, 0x65, 0xC6,- 0x6F, 0x70, 0x39, 0x83, 0x0A, 0x85, 0xD1, 0x86- },- {- 0x77, 0xDD, 0xF4, 0xB1, 0x44, 0x25, 0xEB, 0x3D,- 0x05, 0x3C, 0x1E, 0x84, 0xE3, 0x46, 0x9D, 0x92,- 0xC4, 0xCD, 0x91, 0x0E, 0xD2, 0x0F, 0x92, 0x03,- 0x5E, 0x0C, 0x99, 0xD8, 0xA7, 0xA8, 0x6C, 0xEC,- 0xAF, 0x69, 0xF9, 0x66, 0x3C, 0x20, 0xA7, 0xAA,- 0x23, 0x0B, 0xC8, 0x2F, 0x60, 0xD2, 0x2F, 0xB4,- 0xA0, 0x0B, 0x09, 0xD3, 0xEB, 0x8F, 0xC6, 0x5E,- 0xF5, 0x47, 0xFE, 0x63, 0xC8, 0xD3, 0xDD, 0xCE- },- {- 0xCB, 0xAA, 0x0B, 0xA7, 0xD4, 0x82, 0xB1, 0xF3,- 0x01, 0x10, 0x9A, 0xE4, 0x10, 0x51, 0x99, 0x1A,- 0x32, 0x89, 0xBC, 0x11, 0x98, 0x00, 0x5A, 0xF2,- 0x26, 0xC5, 0xE4, 0xF1, 0x03, 0xB6, 0x65, 0x79,- 0xF4, 0x61, 0x36, 0x10, 0x44, 0xC8, 0xBA, 0x34,- 0x39, 0xFF, 0x12, 0xC5, 0x15, 0xFB, 0x29, 0xC5,- 0x21, 0x61, 0xB7, 0xEB, 0x9C, 0x28, 0x37, 0xB7,- 0x6A, 0x5D, 0xC3, 0x3F, 0x7C, 0xB2, 0xE2, 0xE8- },- {- 0xF9, 0x5D, 0x45, 0xCF, 0x69, 0xAF, 0x5C, 0x20,- 0x23, 0xBD, 0xB5, 0x05, 0x82, 0x1E, 0x62, 0xE8,- 0x5D, 0x7C, 0xAE, 0xDF, 0x7B, 0xED, 0xA1, 0x2C,- 0x02, 0x48, 0x77, 0x5B, 0x0C, 0x88, 0x20, 0x5E,- 0xEB, 0x35, 0xAF, 0x3A, 0x90, 0x81, 0x6F, 0x66,- 0x08, 0xCE, 0x7D, 0xD4, 0x4E, 0xC2, 0x8D, 0xB1,- 0x14, 0x06, 0x14, 0xE1, 0xDD, 0xEB, 0xF3, 0xAA,- 0x9C, 0xD1, 0x84, 0x3E, 0x0F, 0xAD, 0x2C, 0x36- },- {- 0x8F, 0x94, 0x5B, 0xA7, 0x00, 0xF2, 0x53, 0x0E,- 0x5C, 0x2A, 0x7D, 0xF7, 0xD5, 0xDC, 0xE0, 0xF8,- 0x3F, 0x9E, 0xFC, 0x78, 0xC0, 0x73, 0xFE, 0x71,- 0xAE, 0x1F, 0x88, 0x20, 0x4A, 0x4F, 0xD1, 0xCF,- 0x70, 0xA0, 0x73, 0xF5, 0xD1, 0xF9, 0x42, 0xED,- 0x62, 0x3A, 0xA1, 0x6E, 0x90, 0xA8, 0x71, 0x24,- 0x6C, 0x90, 0xC4, 0x5B, 0x62, 0x1B, 0x34, 0x01,- 0xA5, 0xDD, 0xBD, 0x9D, 0xF6, 0x26, 0x41, 0x65- },- {- 0xE9, 0x98, 0xE0, 0xDC, 0x03, 0xEC, 0x30, 0xEB,- 0x99, 0xBB, 0x6B, 0xFA, 0xAF, 0x66, 0x18, 0xAC,- 0xC6, 0x20, 0x32, 0x0D, 0x72, 0x20, 0xB3, 0xAF,- 0x2B, 0x23, 0xD1, 0x12, 0xD8, 0xE9, 0xCB, 0x12,- 0x62, 0xF3, 0xC0, 0xD6, 0x0D, 0x18, 0x3B, 0x1E,- 0xE7, 0xF0, 0x96, 0xD1, 0x2D, 0xAE, 0x42, 0xC9,- 0x58, 0x41, 0x86, 0x00, 0x21, 0x4D, 0x04, 0xF5,- 0xED, 0x6F, 0x5E, 0x71, 0x8B, 0xE3, 0x55, 0x66- },- {- 0x6A, 0x9A, 0x09, 0x0C, 0x61, 0xB3, 0x41, 0x0A,- 0xED, 0xE7, 0xEC, 0x91, 0x38, 0x14, 0x6C, 0xEB,- 0x2C, 0x69, 0x66, 0x2F, 0x46, 0x0C, 0x3D, 0xA5,- 0x3C, 0x65, 0x15, 0xC1, 0xEB, 0x31, 0xF4, 0x1C,- 0xA3, 0xD2, 0x80, 0xE5, 0x67, 0x88, 0x2F, 0x95,- 0xCF, 0x66, 0x4A, 0x94, 0x14, 0x7D, 0x78, 0xF4,- 0x2C, 0xFC, 0x71, 0x4A, 0x40, 0xD2, 0x2E, 0xF1,- 0x94, 0x70, 0xE0, 0x53, 0x49, 0x35, 0x08, 0xA2- },- {- 0x29, 0x10, 0x25, 0x11, 0xD7, 0x49, 0xDB, 0x3C,- 0xC9, 0xB4, 0xE3, 0x35, 0xFA, 0x1F, 0x5E, 0x8F,- 0xAC, 0xA8, 0x42, 0x1D, 0x55, 0x8F, 0x6A, 0x3F,- 0x33, 0x21, 0xD5, 0x0D, 0x04, 0x4A, 0x24, 0x8B,- 0xA5, 0x95, 0xCF, 0xC3, 0xEF, 0xD3, 0xD2, 0xAD,- 0xC9, 0x73, 0x34, 0xDA, 0x73, 0x24, 0x13, 0xF5,- 0xCB, 0xF4, 0x75, 0x1C, 0x36, 0x2B, 0xA1, 0xD5,- 0x38, 0x62, 0xAC, 0x1E, 0x8D, 0xAB, 0xEE, 0xE8- },- {- 0xC9, 0x7A, 0x47, 0x79, 0xD4, 0x7E, 0x6F, 0x77,- 0x72, 0x9B, 0x59, 0x17, 0xD0, 0x13, 0x8A, 0xBB,- 0x35, 0x98, 0x0A, 0xB6, 0x41, 0xBD, 0x73, 0xA8,- 0x85, 0x9E, 0xB1, 0xAC, 0x98, 0xC0, 0x53, 0x62,- 0xED, 0x7D, 0x60, 0x8F, 0x2E, 0x95, 0x87, 0xD6,- 0xBA, 0x9E, 0x27, 0x1D, 0x34, 0x31, 0x25, 0xD4,- 0x0D, 0x93, 0x3A, 0x8E, 0xD0, 0x4E, 0xC1, 0xFE,- 0x75, 0xEC, 0x40, 0x7C, 0x7A, 0x53, 0xC3, 0x4E- },- {- 0x10, 0xF0, 0xDC, 0x91, 0xB9, 0xF8, 0x45, 0xFB,- 0x95, 0xFA, 0xD6, 0x86, 0x0E, 0x6C, 0xE1, 0xAD,- 0xFA, 0x00, 0x2C, 0x7F, 0xC3, 0x27, 0x11, 0x6D,- 0x44, 0xD0, 0x47, 0xCD, 0x7D, 0x58, 0x70, 0xD7,- 0x72, 0xBB, 0x12, 0xB5, 0xFA, 0xC0, 0x0E, 0x02,- 0xB0, 0x8A, 0xC2, 0xA0, 0x17, 0x4D, 0x04, 0x46,- 0xC3, 0x6A, 0xB3, 0x5F, 0x14, 0xCA, 0x31, 0x89,- 0x4C, 0xD6, 0x1C, 0x78, 0xC8, 0x49, 0xB4, 0x8A- },- {- 0xDE, 0xA9, 0x10, 0x1C, 0xAC, 0x62, 0xB8, 0xF6,- 0xA3, 0xC6, 0x50, 0xF9, 0x0E, 0xEA, 0x5B, 0xFA,- 0xE2, 0x65, 0x3A, 0x4E, 0xAF, 0xD6, 0x3A, 0x6D,- 0x1F, 0x0F, 0x13, 0x2D, 0xB9, 0xE4, 0xF2, 0xB1,- 0xB6, 0x62, 0x43, 0x2E, 0xC8, 0x5B, 0x17, 0xBC,- 0xAC, 0x41, 0xE7, 0x75, 0x63, 0x78, 0x81, 0xF6,- 0xAA, 0xB3, 0x8D, 0xD6, 0x6D, 0xCB, 0xD0, 0x80,- 0xF0, 0x99, 0x0A, 0x7A, 0x6E, 0x98, 0x54, 0xFE- },- {- 0x44, 0x1F, 0xFA, 0xA0, 0x8C, 0xD7, 0x9D, 0xFF,- 0x4A, 0xFC, 0x9B, 0x9E, 0x5B, 0x56, 0x20, 0xEE,- 0xC0, 0x86, 0x73, 0x0C, 0x25, 0xF6, 0x61, 0xB1,- 0xD6, 0xFB, 0xFB, 0xD1, 0xCE, 0xC3, 0x14, 0x8D,- 0xD7, 0x22, 0x58, 0xC6, 0x56, 0x41, 0xF2, 0xFC,- 0xA5, 0xEB, 0x15, 0x5F, 0xAD, 0xBC, 0xAB, 0xB1,- 0x3C, 0x6E, 0x21, 0xDC, 0x11, 0xFA, 0xF7, 0x2C,- 0x2A, 0x28, 0x1B, 0x7D, 0x56, 0x14, 0x5F, 0x19- },- {- 0x44, 0x4B, 0x24, 0x0F, 0xE3, 0xED, 0x86, 0xD0,- 0xE2, 0xEF, 0x4C, 0xE7, 0xD8, 0x51, 0xED, 0xDE,- 0x22, 0x15, 0x55, 0x82, 0xAA, 0x09, 0x14, 0x79,- 0x7B, 0x72, 0x6C, 0xD0, 0x58, 0xB6, 0xF4, 0x59,- 0x32, 0xE0, 0xE1, 0x29, 0x51, 0x68, 0x76, 0x52,- 0x7B, 0x1D, 0xD8, 0x8F, 0xC6, 0x6D, 0x71, 0x19,- 0xF4, 0xAB, 0x3B, 0xED, 0x93, 0xA6, 0x1A, 0x0E,- 0x2D, 0x2D, 0x2A, 0xEA, 0xC3, 0x36, 0xD9, 0x58- },- {- 0xBF, 0xBA, 0xBB, 0xEF, 0x45, 0x55, 0x4C, 0xCF,- 0xA0, 0xDC, 0x83, 0x75, 0x2A, 0x19, 0xCC, 0x35,- 0xD5, 0x92, 0x09, 0x56, 0xB3, 0x01, 0xD5, 0x58,- 0xD7, 0x72, 0x28, 0x2B, 0xC8, 0x67, 0x00, 0x91,- 0x68, 0xE9, 0xE9, 0x86, 0x06, 0xBB, 0x5B, 0xA7,- 0x3A, 0x38, 0x5D, 0xE5, 0x74, 0x92, 0x28, 0xC9,- 0x25, 0xA8, 0x50, 0x19, 0xB7, 0x1F, 0x72, 0xFE,- 0x29, 0xB3, 0xCD, 0x37, 0xCA, 0x52, 0xEF, 0xE6- },- {- 0x9C, 0x4D, 0x0C, 0x3E, 0x1C, 0xDB, 0xBF, 0x48,- 0x5B, 0xEC, 0x86, 0xF4, 0x1C, 0xEC, 0x7C, 0x98,- 0x37, 0x3F, 0x0E, 0x09, 0xF3, 0x92, 0x84, 0x9A,- 0xAA, 0x22, 0x9E, 0xBF, 0xBF, 0x39, 0x7B, 0x22,- 0x08, 0x55, 0x29, 0xCB, 0x7E, 0xF3, 0x9F, 0x9C,- 0x7C, 0x22, 0x22, 0xA5, 0x14, 0x18, 0x2B, 0x1E,- 0xFF, 0xAA, 0x17, 0x8C, 0xC3, 0x68, 0x7B, 0x1B,- 0x2B, 0x6C, 0xBC, 0xB6, 0xFD, 0xEB, 0x96, 0xF8- },- {- 0x47, 0x71, 0x76, 0xB3, 0xBF, 0xCB, 0xAD, 0xD7,- 0x65, 0x7C, 0x23, 0xC2, 0x46, 0x25, 0xE4, 0xD0,- 0xD6, 0x74, 0xD1, 0x86, 0x8F, 0x00, 0x60, 0x06,- 0x39, 0x8A, 0xF9, 0x7A, 0xA4, 0x18, 0x77, 0xC8,- 0xE7, 0x0D, 0x3D, 0x14, 0xC3, 0xBB, 0xC9, 0xBB,- 0xCD, 0xCE, 0xA8, 0x01, 0xBD, 0x0E, 0x15, 0x99,- 0xAF, 0x1F, 0x3E, 0xEC, 0x67, 0x40, 0x51, 0x70,- 0xF4, 0xE2, 0x6C, 0x96, 0x4A, 0x57, 0xA8, 0xB7- },- {- 0xA7, 0x8C, 0x49, 0x0E, 0xDA, 0x31, 0x73, 0xBB,- 0x3F, 0x10, 0xDE, 0xE5, 0x2F, 0x11, 0x0F, 0xB1,- 0xC0, 0x8E, 0x03, 0x02, 0x23, 0x0B, 0x85, 0xDD,- 0xD7, 0xC1, 0x12, 0x57, 0xD9, 0x2D, 0xE1, 0x48,- 0x78, 0x5E, 0xF0, 0x0C, 0x03, 0x9C, 0x0B, 0xB8,- 0xEB, 0x98, 0x08, 0xA3, 0x5B, 0x2D, 0x8C, 0x08,- 0x0F, 0x57, 0x28, 0x59, 0x71, 0x4C, 0x9D, 0x40,- 0x69, 0xC5, 0xBC, 0xAF, 0x09, 0x0E, 0x89, 0x8E- },- {- 0x58, 0xD0, 0x23, 0x39, 0x7B, 0xEB, 0x5B, 0x41,- 0x45, 0xCB, 0x22, 0x55, 0xB0, 0x7D, 0x74, 0x29,- 0x0B, 0x36, 0xD9, 0xFD, 0x1E, 0x59, 0x4A, 0xFB,- 0xD8, 0xEE, 0xA4, 0x7C, 0x20, 0x5B, 0x2E, 0xFB,- 0xFE, 0x6F, 0x46, 0x19, 0x0F, 0xAF, 0x95, 0xAF,- 0x50, 0x4A, 0xB0, 0x72, 0xE3, 0x6F, 0x6C, 0x85,- 0xD7, 0x67, 0xA3, 0x21, 0xBF, 0xD7, 0xF2, 0x26,- 0x87, 0xA4, 0xAB, 0xBF, 0x49, 0x4A, 0x68, 0x9C- },- {- 0x40, 0x01, 0xEC, 0x74, 0xD5, 0xA4, 0x6F, 0xD2,- 0x9C, 0x2C, 0x3C, 0xDB, 0xE5, 0xD1, 0xB9, 0xF2,- 0x0E, 0x51, 0xA9, 0x41, 0xBE, 0x98, 0xD2, 0xA4,- 0xE1, 0xE2, 0xFB, 0xF8, 0x66, 0xA6, 0x72, 0x12,- 0x1D, 0xB6, 0xF8, 0x1A, 0x51, 0x4C, 0xFD, 0x10,- 0xE7, 0x35, 0x8D, 0x57, 0x1B, 0xDB, 0xA4, 0x8E,- 0x4C, 0xE7, 0x08, 0xB9, 0xD1, 0x24, 0x89, 0x4B,- 0xC0, 0xB5, 0xED, 0x55, 0x49, 0x35, 0xF7, 0x3A- },- {- 0xCC, 0xD1, 0xB2, 0x2D, 0xAB, 0x65, 0x11, 0x22,- 0x5D, 0x24, 0x01, 0xEA, 0x2D, 0x86, 0x25, 0xD2,- 0x06, 0xA1, 0x24, 0x73, 0xCC, 0x73, 0x2B, 0x61,- 0x5E, 0x56, 0x40, 0xCE, 0xFF, 0xF0, 0xA4, 0xAD,- 0xF9, 0x71, 0xB0, 0xE8, 0x27, 0xA6, 0x19, 0xE0,- 0xA8, 0x0F, 0x5D, 0xB9, 0xCC, 0xD0, 0x96, 0x23,- 0x29, 0x01, 0x0D, 0x07, 0xE3, 0x4A, 0x20, 0x64,- 0xE7, 0x31, 0xC5, 0x20, 0x81, 0x7B, 0x21, 0x83- },- {- 0xB4, 0xA0, 0xA9, 0xE3, 0x57, 0x4E, 0xDB, 0x9E,- 0x1E, 0x72, 0xAA, 0x31, 0xE3, 0x9C, 0xC5, 0xF3,- 0x0D, 0xBF, 0x94, 0x3F, 0x8C, 0xAB, 0xC4, 0x08,- 0x44, 0x96, 0x54, 0xA3, 0x91, 0x31, 0xE6, 0x6D,- 0x71, 0x8A, 0x18, 0x81, 0x91, 0x43, 0xE3, 0xEA,- 0x96, 0xB4, 0xA1, 0x89, 0x59, 0x88, 0xA1, 0xC0,- 0x05, 0x6C, 0xF2, 0xB6, 0xE0, 0x4F, 0x9A, 0xC1,- 0x9D, 0x65, 0x73, 0x83, 0xC2, 0x91, 0x0C, 0x44- },- {- 0x44, 0x7B, 0xEC, 0xAB, 0x16, 0x63, 0x06, 0x08,- 0xD3, 0x9F, 0x4F, 0x05, 0x8B, 0x16, 0xF7, 0xAF,- 0x95, 0xB8, 0x5A, 0x76, 0xAA, 0x0F, 0xA7, 0xCE,- 0xA2, 0xB8, 0x07, 0x55, 0xFB, 0x76, 0xE9, 0xC8,- 0x04, 0xF2, 0xCA, 0x78, 0xF0, 0x26, 0x43, 0xC9,- 0x15, 0xFB, 0xF2, 0xFC, 0xE5, 0xE1, 0x9D, 0xE8,- 0x60, 0x00, 0xDE, 0x03, 0xB1, 0x88, 0x61, 0x81,- 0x5A, 0x83, 0x12, 0x60, 0x71, 0xF8, 0xA3, 0x7B- },- {- 0x54, 0xE6, 0xDA, 0xB9, 0x97, 0x73, 0x80, 0xA5,- 0x66, 0x58, 0x22, 0xDB, 0x93, 0x37, 0x4E, 0xDA,- 0x52, 0x8D, 0x9B, 0xEB, 0x62, 0x6F, 0x9B, 0x94,- 0x02, 0x70, 0x71, 0xCB, 0x26, 0x67, 0x5E, 0x11,- 0x2B, 0x4A, 0x7F, 0xEC, 0x94, 0x1E, 0xE6, 0x0A,- 0x81, 0xE4, 0xD2, 0xEA, 0x3F, 0xF7, 0xBC, 0x52,- 0xCF, 0xC4, 0x5D, 0xFB, 0xFE, 0x73, 0x5A, 0x1C,- 0x64, 0x6B, 0x2C, 0xF6, 0xD6, 0xA4, 0x9B, 0x62- },- {- 0x3E, 0xA6, 0x26, 0x25, 0x94, 0x9E, 0x36, 0x46,- 0x70, 0x4D, 0x7E, 0x3C, 0x90, 0x6F, 0x82, 0xF6,- 0xC0, 0x28, 0xF5, 0x40, 0xF5, 0xF7, 0x2A, 0x79,- 0x4B, 0x0C, 0x57, 0xBF, 0x97, 0xB7, 0x64, 0x9B,- 0xFE, 0xB9, 0x0B, 0x01, 0xD3, 0xCA, 0x3E, 0x82,- 0x9D, 0xE2, 0x1B, 0x38, 0x26, 0xE6, 0xF8, 0x70,- 0x14, 0xD3, 0xC7, 0x73, 0x50, 0xCB, 0x5A, 0x15,- 0xFF, 0x5D, 0x46, 0x8A, 0x81, 0xBE, 0xC1, 0x60- },- {- 0x21, 0x3C, 0xFE, 0x14, 0x5C, 0x54, 0xA3, 0x36,- 0x91, 0x56, 0x99, 0x80, 0xE5, 0x93, 0x8C, 0x88,- 0x83, 0xA4, 0x6D, 0x84, 0xD1, 0x49, 0xC8, 0xFF,- 0x1A, 0x67, 0xCD, 0x28, 0x7B, 0x4D, 0x49, 0xC6,- 0xDA, 0x69, 0xD3, 0xA0, 0x35, 0x44, 0x3D, 0xB0,- 0x85, 0x98, 0x3D, 0x0E, 0xFE, 0x63, 0x70, 0x6B,- 0xD5, 0xB6, 0xF1, 0x5A, 0x7D, 0xA4, 0x59, 0xE8,- 0xD5, 0x0A, 0x19, 0x09, 0x3D, 0xB5, 0x5E, 0x80- },- {- 0x57, 0x16, 0xC4, 0xA3, 0x8F, 0x38, 0xDB, 0x10,- 0x4E, 0x49, 0x4A, 0x0A, 0x27, 0xCB, 0xE8, 0x9A,- 0x26, 0xA6, 0xBB, 0x6F, 0x49, 0x9E, 0xC0, 0x1C,- 0x8C, 0x01, 0xAA, 0x7C, 0xB8, 0x84, 0x97, 0xE7,- 0x51, 0x48, 0xCD, 0x6E, 0xEE, 0x12, 0xA7, 0x16,- 0x8B, 0x6F, 0x78, 0xAB, 0x74, 0xE4, 0xBE, 0x74,- 0x92, 0x51, 0xA1, 0xA7, 0x4C, 0x38, 0xC8, 0x6D,- 0x61, 0x29, 0x17, 0x7E, 0x28, 0x89, 0xE0, 0xB6- },- {- 0x03, 0x04, 0x60, 0xA9, 0x8B, 0xDF, 0x9F, 0xF1,- 0x7C, 0xD9, 0x64, 0x04, 0xF2, 0x8F, 0xC3, 0x04,- 0xF2, 0xB7, 0xC0, 0x4E, 0xAA, 0xDE, 0x53, 0x67,- 0x7F, 0xD2, 0x8F, 0x78, 0x8C, 0xA2, 0x21, 0x86,- 0xB8, 0xBC, 0x80, 0xDD, 0x21, 0xD1, 0x7F, 0x85,- 0x49, 0xC7, 0x11, 0xAF, 0xF0, 0xE5, 0x14, 0xE1,- 0x9D, 0x4E, 0x15, 0xF5, 0x99, 0x02, 0x52, 0xA0,- 0x3E, 0x08, 0x2F, 0x28, 0xDC, 0x20, 0x52, 0xF6- },- {- 0x19, 0xE7, 0xF1, 0xCC, 0xEE, 0x88, 0xA1, 0x06,- 0x72, 0x33, 0x3E, 0x39, 0x0C, 0xF2, 0x20, 0x13,- 0xA8, 0xC7, 0x34, 0xC6, 0xCB, 0x9E, 0xAB, 0x41,- 0xF1, 0x7C, 0x3C, 0x80, 0x32, 0xA2, 0xE4, 0xAC,- 0xA0, 0x56, 0x9E, 0xA3, 0x6F, 0x08, 0x60, 0xC7,- 0xA1, 0xAF, 0x28, 0xFA, 0x47, 0x68, 0x40, 0xD6,- 0x60, 0x11, 0x16, 0x88, 0x59, 0x33, 0x4A, 0x9E,- 0x4E, 0xF9, 0xCC, 0x2E, 0x61, 0xA0, 0xE2, 0x9E- },- {- 0x29, 0xF8, 0xB8, 0xC7, 0x8C, 0x80, 0xF2, 0xFC,- 0xB4, 0xBD, 0xF7, 0x82, 0x5E, 0xD9, 0x0A, 0x70,- 0xD6, 0x25, 0xFF, 0x78, 0x5D, 0x26, 0x26, 0x77,- 0xE2, 0x50, 0xC0, 0x4F, 0x37, 0x20, 0xC8, 0x88,- 0xD0, 0x3F, 0x80, 0x45, 0xE4, 0xED, 0xF3, 0xF5,- 0x28, 0x5B, 0xD3, 0x9D, 0x92, 0x8A, 0x10, 0xA7,- 0xD0, 0xA5, 0xDF, 0x00, 0xB8, 0x48, 0x4A, 0xC2,- 0x86, 0x81, 0x42, 0xA1, 0xE8, 0xBE, 0xA3, 0x51- },- {- 0x5C, 0x52, 0x92, 0x0A, 0x72, 0x63, 0xE3, 0x9D,- 0x57, 0x92, 0x0C, 0xA0, 0xCB, 0x75, 0x2A, 0xC6,- 0xD7, 0x9A, 0x04, 0xFE, 0xF8, 0xA7, 0xA2, 0x16,- 0xA1, 0xEC, 0xB7, 0x11, 0x5C, 0xE0, 0x6D, 0x89,- 0xFD, 0x7D, 0x73, 0x5B, 0xD6, 0xF4, 0x27, 0x25,- 0x55, 0xDB, 0xA2, 0x2C, 0x2D, 0x1C, 0x96, 0xE6,- 0x35, 0x23, 0x22, 0xC6, 0x2C, 0x56, 0x30, 0xFD,- 0xE0, 0xF4, 0x77, 0x7A, 0x76, 0xC3, 0xDE, 0x2C- },- {- 0x83, 0xB0, 0x98, 0xF2, 0x62, 0x25, 0x1B, 0xF6,- 0x60, 0x06, 0x4A, 0x9D, 0x35, 0x11, 0xCE, 0x76,- 0x87, 0xA0, 0x9E, 0x6D, 0xFB, 0xB8, 0x78, 0x29,- 0x9C, 0x30, 0xE9, 0x3D, 0xFB, 0x43, 0xA9, 0x31,- 0x4D, 0xB9, 0xA6, 0x00, 0x33, 0x7D, 0xB2, 0x6E,- 0xBE, 0xED, 0xAF, 0x22, 0x56, 0xA9, 0x6D, 0xAB,- 0xE9, 0xB2, 0x9E, 0x75, 0x73, 0xAD, 0x11, 0xC3,- 0x52, 0x3D, 0x87, 0x4D, 0xDE, 0x5B, 0xE7, 0xED- },- {- 0x94, 0x47, 0xD9, 0x8A, 0xA5, 0xC9, 0x33, 0x13,- 0x52, 0xF4, 0x3D, 0x3E, 0x56, 0xD0, 0xA9, 0xA9,- 0xF9, 0x58, 0x18, 0x65, 0x99, 0x8E, 0x28, 0x85,- 0xCC, 0x56, 0xDD, 0x0A, 0x0B, 0xD5, 0xA7, 0xB5,- 0x05, 0x95, 0xBD, 0x10, 0xF7, 0x52, 0x9B, 0xCD,- 0x31, 0xF3, 0x7D, 0xC1, 0x6A, 0x14, 0x65, 0xD5,- 0x94, 0x07, 0x96, 0x67, 0xDA, 0x2A, 0x3F, 0xCB,- 0x70, 0x40, 0x14, 0x98, 0x83, 0x7C, 0xED, 0xEB- },- {- 0x86, 0x77, 0x32, 0xF2, 0xFE, 0xEB, 0x23, 0x89,- 0x30, 0x97, 0x56, 0x1A, 0xC7, 0x10, 0xA4, 0xBF,- 0xF4, 0x53, 0xBE, 0x9C, 0xFB, 0xED, 0xBA, 0x8B,- 0xA3, 0x24, 0xF9, 0xD3, 0x12, 0xA8, 0x2D, 0x73,- 0x2E, 0x1B, 0x83, 0xB8, 0x29, 0xFD, 0xCD, 0x17,- 0x7B, 0x88, 0x2C, 0xA0, 0xC1, 0xBF, 0x54, 0x4B,- 0x22, 0x3B, 0xE5, 0x29, 0x92, 0x4A, 0x24, 0x6A,- 0x63, 0xCF, 0x05, 0x9B, 0xFD, 0xC5, 0x0A, 0x1B- },- {- 0xF1, 0x5A, 0xB2, 0x6D, 0x4C, 0xDF, 0xCF, 0x56,- 0xE1, 0x96, 0xBB, 0x6B, 0xA1, 0x70, 0xA8, 0xFC,- 0xCC, 0x41, 0x4D, 0xE9, 0x28, 0x5A, 0xFD, 0x98,- 0xA3, 0xD3, 0xCF, 0x2F, 0xB8, 0x8F, 0xCB, 0xC0,- 0xF1, 0x98, 0x32, 0xAC, 0x43, 0x3A, 0x5B, 0x2C,- 0xC2, 0x39, 0x2A, 0x4C, 0xE3, 0x43, 0x32, 0x98,- 0x7D, 0x8D, 0x2C, 0x2B, 0xEF, 0x6C, 0x34, 0x66,- 0x13, 0x8D, 0xB0, 0xC6, 0xE4, 0x2F, 0xA4, 0x7B- },- {- 0x28, 0x13, 0x51, 0x6D, 0x68, 0xED, 0x4A, 0x08,- 0xB3, 0x9D, 0x64, 0x8A, 0xA6, 0xAA, 0xCD, 0x81,- 0xE9, 0xD6, 0x55, 0xEC, 0xD5, 0xF0, 0xC1, 0x35,- 0x56, 0xC6, 0x0F, 0xDF, 0x0D, 0x33, 0x3E, 0xA3,- 0x84, 0x64, 0xB3, 0x6C, 0x02, 0xBA, 0xCC, 0xD7,- 0x46, 0xE9, 0x57, 0x5E, 0x96, 0xC6, 0x30, 0x14,- 0xF0, 0x74, 0xAE, 0x34, 0xA0, 0xA2, 0x5B, 0x32,- 0x0F, 0x0F, 0xBE, 0xDD, 0x6A, 0xCF, 0x76, 0x65- },- {- 0xD3, 0x25, 0x9A, 0xFC, 0xA8, 0xA4, 0x89, 0x62,- 0xFA, 0x89, 0x2E, 0x14, 0x5A, 0xCF, 0x54, 0x7F,- 0x26, 0x92, 0x3A, 0xE8, 0xD4, 0x92, 0x4C, 0x8A,- 0x53, 0x15, 0x81, 0x52, 0x6B, 0x04, 0xB4, 0x4C,- 0x7A, 0xF8, 0x3C, 0x64, 0x3E, 0xF5, 0xA0, 0xBC,- 0x28, 0x2D, 0x36, 0xF3, 0xFB, 0x04, 0xC8, 0x4E,- 0x28, 0xB3, 0x51, 0xF4, 0x0C, 0x74, 0xB6, 0x9D,- 0xC7, 0x84, 0x0B, 0xC7, 0x17, 0xB6, 0xF1, 0x5F- },- {- 0xF1, 0x4B, 0x06, 0x1A, 0xE3, 0x59, 0xFA, 0x31,- 0xB9, 0x89, 0xE3, 0x03, 0x32, 0xBF, 0xE8, 0xDE,- 0x8C, 0xC8, 0xCD, 0xB5, 0x68, 0xE1, 0x4B, 0xE2,- 0x14, 0xA2, 0x22, 0x3B, 0x84, 0xCA, 0xAB, 0x74,- 0x19, 0x54, 0x9E, 0xCF, 0xCC, 0x96, 0xCE, 0x2A,- 0xCE, 0xC1, 0x19, 0x48, 0x5D, 0x87, 0xD1, 0x57,- 0xD3, 0xA8, 0x73, 0x4F, 0xC4, 0x26, 0x59, 0x7D,- 0x64, 0xF3, 0x65, 0x70, 0xCE, 0xAF, 0x22, 0x4D- },- {- 0x55, 0xE7, 0x0B, 0x01, 0xD1, 0xFB, 0xF8, 0xB2,- 0x3B, 0x57, 0xFB, 0x62, 0xE2, 0x6C, 0x2C, 0xE5,- 0x4F, 0x13, 0xF8, 0xFA, 0x24, 0x64, 0xE6, 0xEB,- 0x98, 0xD1, 0x6A, 0x61, 0x17, 0x02, 0x6D, 0x8B,- 0x90, 0x81, 0x90, 0x12, 0x49, 0x6D, 0x40, 0x71,- 0xEB, 0xE2, 0xE5, 0x95, 0x57, 0xEC, 0xE3, 0x51,- 0x9A, 0x7A, 0xA4, 0x58, 0x02, 0xF9, 0x61, 0x53,- 0x74, 0x87, 0x73, 0x32, 0xB7, 0x34, 0x90, 0xB3- },- {- 0x25, 0x26, 0x1E, 0xB2, 0x96, 0x97, 0x1D, 0x6E,- 0x4A, 0x71, 0xB2, 0x92, 0x8E, 0x64, 0x83, 0x9C,- 0x67, 0xD4, 0x22, 0x87, 0x2B, 0xF9, 0xF3, 0xC3,- 0x19, 0x93, 0x61, 0x52, 0x22, 0xDE, 0x9F, 0x8F,- 0x0B, 0x2C, 0x4B, 0xE8, 0x54, 0x85, 0x59, 0xB4,- 0xB3, 0x54, 0xE7, 0x36, 0x41, 0x6E, 0x32, 0x18,- 0xD4, 0xE8, 0xA1, 0xE2, 0x19, 0xA4, 0xA6, 0xD4,- 0x3E, 0x1A, 0x9A, 0x52, 0x1D, 0x0E, 0x75, 0xFC- },- {- 0x08, 0x30, 0x7F, 0x34, 0x7C, 0x41, 0x29, 0x4E,- 0x34, 0xBB, 0x54, 0xCB, 0x42, 0xB1, 0x52, 0x2D,- 0x22, 0xF8, 0x24, 0xF7, 0xB6, 0xE5, 0xDB, 0x50,- 0xFD, 0xA0, 0x96, 0x79, 0x8E, 0x18, 0x1A, 0x8F,- 0x02, 0x6F, 0xA2, 0x7B, 0x4A, 0xE4, 0x5D, 0x52,- 0xA6, 0x2C, 0xAF, 0x9D, 0x51, 0x98, 0xE2, 0x4A,- 0x49, 0x13, 0xC6, 0x67, 0x17, 0x75, 0xB2, 0xD7,- 0x23, 0xC1, 0x23, 0x9B, 0xFB, 0xF0, 0x16, 0xD7- },- {- 0x1E, 0x5C, 0x62, 0xE7, 0xE9, 0xBF, 0xA1, 0xB1,- 0x18, 0x74, 0x7A, 0x2D, 0xE0, 0x8B, 0x3C, 0xA1,- 0x01, 0x12, 0xAF, 0x96, 0xA4, 0x6E, 0x4B, 0x22,- 0xC3, 0xFC, 0x06, 0xF9, 0xBF, 0xEE, 0x4E, 0xB5,- 0xC4, 0x9E, 0x05, 0x7A, 0x4A, 0x48, 0x86, 0x23,- 0x43, 0x24, 0x57, 0x25, 0x76, 0xBB, 0x9B, 0x5E,- 0xCF, 0xDE, 0x0D, 0x99, 0xB0, 0xDE, 0x4F, 0x98,- 0xEC, 0x16, 0xE4, 0xD1, 0xB8, 0x5F, 0xA9, 0x47- },- {- 0xC7, 0x4A, 0x77, 0x39, 0x5F, 0xB8, 0xBC, 0x12,- 0x64, 0x47, 0x45, 0x48, 0x38, 0xE5, 0x61, 0xE9,- 0x62, 0x85, 0x3D, 0xC7, 0xEB, 0x49, 0xA1, 0xE3,- 0xCB, 0x67, 0xC3, 0xD0, 0x85, 0x1F, 0x3E, 0x39,- 0x51, 0x7B, 0xE8, 0xC3, 0x50, 0xAC, 0x91, 0x09,- 0x03, 0xD4, 0x9C, 0xD2, 0xBF, 0xDF, 0x54, 0x5C,- 0x99, 0x31, 0x6D, 0x03, 0x46, 0x17, 0x0B, 0x73,- 0x9F, 0x0A, 0xDD, 0x5D, 0x53, 0x3C, 0x2C, 0xFC- },- {- 0x0D, 0xD5, 0x7B, 0x42, 0x3C, 0xC0, 0x1E, 0xB2,- 0x86, 0x13, 0x91, 0xEB, 0x88, 0x6A, 0x0D, 0x17,- 0x07, 0x9B, 0x93, 0x3F, 0xC7, 0x6E, 0xB3, 0xFC,- 0x08, 0xA1, 0x9F, 0x8A, 0x74, 0x95, 0x2C, 0xB6,- 0x8F, 0x6B, 0xCD, 0xC6, 0x44, 0xF7, 0x73, 0x70,- 0x96, 0x6E, 0x4D, 0x13, 0xE8, 0x05, 0x60, 0xBC,- 0xF0, 0x82, 0xEF, 0x04, 0x79, 0xD4, 0x8F, 0xBB,- 0xAB, 0x4D, 0xF0, 0x3B, 0x53, 0xA4, 0xE1, 0x78- },- {- 0x4D, 0x8D, 0xC3, 0x92, 0x3E, 0xDC, 0xCD, 0xFC,- 0xE7, 0x00, 0x72, 0x39, 0x8B, 0x8A, 0x3D, 0xA5,- 0xC3, 0x1F, 0xCB, 0x3E, 0xE3, 0xB6, 0x45, 0xC8,- 0x5F, 0x71, 0x7C, 0xBA, 0xEB, 0x4B, 0x67, 0x3A,- 0x19, 0x39, 0x44, 0x25, 0xA5, 0x85, 0xBF, 0xB4,- 0x64, 0xD9, 0x2F, 0x15, 0x97, 0xD0, 0xB7, 0x54,- 0xD1, 0x63, 0xF9, 0x7C, 0xED, 0x34, 0x3B, 0x25,- 0xDB, 0x5A, 0x70, 0xEF, 0x48, 0xEB, 0xB3, 0x4F- },- {- 0xF0, 0xA5, 0x05, 0x53, 0xE4, 0xDF, 0xB0, 0xC4,- 0xE3, 0xE3, 0xD3, 0xBA, 0x82, 0x03, 0x48, 0x57,- 0xE3, 0xB1, 0xE5, 0x09, 0x18, 0xF5, 0xB8, 0xA7,- 0xD6, 0x98, 0xE1, 0x0D, 0x24, 0x2B, 0x0F, 0xB5,- 0x44, 0xAF, 0x6C, 0x92, 0xD0, 0xC3, 0xAA, 0xF9,- 0x93, 0x22, 0x20, 0x41, 0x61, 0x17, 0xB4, 0xE7,- 0x8E, 0xCB, 0x8A, 0x8F, 0x43, 0x0E, 0x13, 0xB8,- 0x2A, 0x59, 0x15, 0x29, 0x0A, 0x58, 0x19, 0xC5- },- {- 0xB1, 0x55, 0x43, 0xF3, 0xF7, 0x36, 0x08, 0x66,- 0x27, 0xCC, 0x53, 0x65, 0xE7, 0xE8, 0x98, 0x8C,- 0x2E, 0xF1, 0x55, 0xC0, 0xFD, 0x4F, 0x42, 0x89,- 0x61, 0xB0, 0x0D, 0x15, 0x26, 0xF0, 0x4D, 0x6D,- 0x6A, 0x65, 0x8B, 0x4B, 0x8E, 0xD3, 0x2C, 0x5D,- 0x86, 0x21, 0xE7, 0xF4, 0xF8, 0xE8, 0xA9, 0x33,- 0xD9, 0xEC, 0xC9, 0xDD, 0x1B, 0x83, 0x33, 0xCB,- 0xE2, 0x8C, 0xFC, 0x37, 0xD9, 0x71, 0x9E, 0x1C- },- {- 0x7B, 0x4F, 0xA1, 0x58, 0xE4, 0x15, 0xFE, 0xF0,- 0x23, 0x24, 0x72, 0x64, 0xCB, 0xBE, 0x15, 0xD1,- 0x6D, 0x91, 0xA4, 0x44, 0x24, 0xA8, 0xDB, 0x70,- 0x7E, 0xB1, 0xE2, 0x03, 0x3C, 0x30, 0xE9, 0xE1,- 0xE7, 0xC8, 0xC0, 0x86, 0x45, 0x95, 0xD2, 0xCB,- 0x8C, 0x58, 0x0E, 0xB4, 0x7E, 0x9D, 0x16, 0xAB,- 0xBD, 0x7E, 0x44, 0xE8, 0x24, 0xF7, 0xCE, 0xDB,- 0x7D, 0xEF, 0x57, 0x13, 0x0E, 0x52, 0xCF, 0xE9- },- {- 0x60, 0x42, 0x4F, 0xF2, 0x32, 0x34, 0xC3, 0x4D,- 0xC9, 0x68, 0x7A, 0xD5, 0x02, 0x86, 0x93, 0x72,- 0xCC, 0x31, 0xA5, 0x93, 0x80, 0x18, 0x6B, 0xC2,- 0x36, 0x1C, 0x83, 0x5D, 0x97, 0x2F, 0x49, 0x66,- 0x6E, 0xB1, 0xAC, 0x69, 0x62, 0x9D, 0xE6, 0x46,- 0xF0, 0x3F, 0x9B, 0x4D, 0xB9, 0xE2, 0xAC, 0xE0,- 0x93, 0xFB, 0xFD, 0xF8, 0xF2, 0x0A, 0xB5, 0xF9,- 0x85, 0x41, 0x97, 0x8B, 0xE8, 0xEF, 0x54, 0x9F- },- {- 0x74, 0x06, 0x01, 0x8C, 0xE7, 0x04, 0xD8, 0x4F,- 0x5E, 0xB9, 0xC7, 0x9F, 0xEA, 0x97, 0xDA, 0x34,- 0x56, 0x99, 0x46, 0x8A, 0x35, 0x0E, 0xE0, 0xB2,- 0xD0, 0xF3, 0xA4, 0xBF, 0x20, 0x70, 0x30, 0x4E,- 0xA8, 0x62, 0xD7, 0x2A, 0x51, 0xC5, 0x7D, 0x30,- 0x64, 0x94, 0x72, 0x86, 0xF5, 0x31, 0xE0, 0xEA,- 0xF7, 0x56, 0x37, 0x02, 0x26, 0x2E, 0x6C, 0x72,- 0x4A, 0xBF, 0x5E, 0xD8, 0xC8, 0x39, 0x8D, 0x17- },- {- 0x14, 0xEF, 0x5C, 0x6D, 0x64, 0x7B, 0x3B, 0xD1,- 0xE6, 0xE3, 0x20, 0x06, 0xC2, 0x31, 0x19, 0x98,- 0x10, 0xDE, 0x5C, 0x4D, 0xC8, 0x8E, 0x70, 0x24,- 0x02, 0x73, 0xB0, 0xEA, 0x18, 0xE6, 0x51, 0xA3,- 0xEB, 0x4F, 0x5C, 0xA3, 0x11, 0x4B, 0x8A, 0x56,- 0x71, 0x69, 0x69, 0xC7, 0xCD, 0xA2, 0x7E, 0x0C,- 0x8D, 0xB8, 0x32, 0xAD, 0x5E, 0x89, 0xA2, 0xDC,- 0x6C, 0xB0, 0xAD, 0xBE, 0x7D, 0x93, 0xAB, 0xD1- },- {- 0x38, 0xCF, 0x6C, 0x24, 0xE3, 0xE0, 0x8B, 0xCF,- 0x1F, 0x6C, 0xF3, 0xD1, 0xB1, 0xF6, 0x5B, 0x90,- 0x52, 0x39, 0xA3, 0x11, 0x80, 0x33, 0x24, 0x9E,- 0x44, 0x81, 0x13, 0xEC, 0x63, 0x2E, 0xA6, 0xDC,- 0x34, 0x6F, 0xEE, 0xB2, 0x57, 0x1C, 0x38, 0xBD,- 0x9A, 0x73, 0x98, 0xB2, 0x22, 0x12, 0x80, 0x32,- 0x80, 0x02, 0xB2, 0x3E, 0x1A, 0x45, 0xAD, 0xAF,- 0xFE, 0x66, 0xD9, 0x3F, 0x65, 0x64, 0xEA, 0xA2- },- {- 0x6C, 0xD7, 0x20, 0x8A, 0x4B, 0xC7, 0xE7, 0xE5,- 0x62, 0x01, 0xBB, 0xBA, 0x02, 0xA0, 0xF4, 0x89,- 0xCD, 0x38, 0x4A, 0xBE, 0x40, 0xAF, 0xD4, 0x22,- 0x2F, 0x15, 0x8B, 0x3D, 0x98, 0x6E, 0xE7, 0x2A,- 0x54, 0xC5, 0x0F, 0xB6, 0x4F, 0xD4, 0xED, 0x25,- 0x30, 0xED, 0xA2, 0xC8, 0xAF, 0x29, 0x28, 0xA0,- 0xDA, 0x6D, 0x4F, 0x83, 0x0A, 0xE1, 0xC9, 0xDB,- 0x46, 0x9D, 0xFD, 0x97, 0x0F, 0x12, 0xA5, 0x6F- },- {- 0x65, 0x98, 0x58, 0xF0, 0xB5, 0xC9, 0xED, 0xAB,- 0x5B, 0x94, 0xFD, 0x73, 0x2F, 0x6E, 0x6B, 0x17,- 0xC5, 0x1C, 0xC0, 0x96, 0x10, 0x4F, 0x09, 0xBE,- 0xB3, 0xAF, 0xC3, 0xAA, 0x46, 0x7C, 0x2E, 0xCF,- 0x88, 0x5C, 0x4C, 0x65, 0x41, 0xEF, 0xFA, 0x90,- 0x23, 0xD3, 0xB5, 0x73, 0x8A, 0xE5, 0xA1, 0x4D,- 0x86, 0x7E, 0x15, 0xDB, 0x06, 0xFE, 0x1F, 0x9D,- 0x11, 0x27, 0xB7, 0x7E, 0x1A, 0xAB, 0xB5, 0x16- },- {- 0x26, 0xCC, 0xA0, 0x12, 0x6F, 0x5D, 0x1A, 0x81,- 0x3C, 0x62, 0xE5, 0xC7, 0x10, 0x01, 0xC0, 0x46,- 0xF9, 0xC9, 0x20, 0x95, 0x70, 0x45, 0x50, 0xBE,- 0x58, 0x73, 0xA4, 0x95, 0xA9, 0x99, 0xAD, 0x01,- 0x0A, 0x4F, 0x79, 0x49, 0x1F, 0x24, 0xF2, 0x86,- 0x50, 0x0A, 0xDC, 0xE1, 0xA1, 0x37, 0xBC, 0x20,- 0x84, 0xE4, 0x94, 0x9F, 0x5B, 0x72, 0x94, 0xCE,- 0xFE, 0x51, 0xEC, 0xAF, 0xF8, 0xE9, 0x5C, 0xBA- },- {- 0x41, 0x47, 0xC1, 0xF5, 0x51, 0x72, 0x78, 0x8C,- 0x55, 0x67, 0xC5, 0x61, 0xFE, 0xEF, 0x87, 0x6F,- 0x62, 0x1F, 0xFF, 0x1C, 0xE8, 0x77, 0x86, 0xB8,- 0x46, 0x76, 0x37, 0xE7, 0x0D, 0xFB, 0xCD, 0x0D,- 0xBD, 0xB6, 0x41, 0x5C, 0xB6, 0x00, 0x95, 0x4A,- 0xB9, 0xC0, 0x4C, 0x0E, 0x45, 0x7E, 0x62, 0x5B,- 0x40, 0x72, 0x22, 0xC0, 0xFE, 0x1A, 0xE2, 0x1B,- 0x21, 0x43, 0x68, 0x8A, 0xDA, 0x94, 0xDC, 0x58- },- {- 0x5B, 0x1B, 0xF1, 0x54, 0xC6, 0x2A, 0x8A, 0xF6,- 0xE9, 0x3D, 0x35, 0xF1, 0x8F, 0x7F, 0x90, 0xAB,- 0xB1, 0x6A, 0x6E, 0xF0, 0xE8, 0xD1, 0xAE, 0xCD,- 0x11, 0x8B, 0xF7, 0x01, 0x67, 0xBA, 0xB2, 0xAF,- 0x08, 0x93, 0x5C, 0x6F, 0xDC, 0x06, 0x63, 0xCE,- 0x74, 0x48, 0x2D, 0x17, 0xA8, 0xE5, 0x4B, 0x54,- 0x6D, 0x1C, 0x29, 0x66, 0x31, 0xC6, 0x5F, 0x3B,- 0x52, 0x2A, 0x51, 0x58, 0x39, 0xD4, 0x3D, 0x71- },- {- 0x9F, 0x60, 0x04, 0x19, 0xA4, 0xE8, 0xF4, 0xFB,- 0x83, 0x4C, 0x24, 0xB0, 0xF7, 0xFC, 0x13, 0xBF,- 0x4E, 0x27, 0x9D, 0x98, 0xE8, 0xA3, 0xC7, 0x65,- 0xEE, 0x93, 0x49, 0x17, 0x40, 0x3E, 0x3A, 0x66,- 0x09, 0x71, 0x82, 0xEA, 0x21, 0x45, 0x3C, 0xB6,- 0x3E, 0xBB, 0xE8, 0xB7, 0x3A, 0x9C, 0x21, 0x67,- 0x59, 0x64, 0x46, 0x43, 0x8C, 0x57, 0x62, 0x7F,- 0x33, 0x0B, 0xAD, 0xD4, 0xF5, 0x69, 0xF7, 0xD6- },- {- 0x45, 0x7E, 0xF6, 0x46, 0x6A, 0x89, 0x24, 0xFD,- 0x80, 0x11, 0xA3, 0x44, 0x71, 0xA5, 0xA1, 0xAC,- 0x8C, 0xCD, 0x9B, 0xD0, 0xD0, 0x7A, 0x97, 0x41,- 0x4A, 0xC9, 0x43, 0x02, 0x1C, 0xE4, 0xB9, 0xE4,- 0xB9, 0xC8, 0xDB, 0x0A, 0x28, 0xF0, 0x16, 0xED,- 0x43, 0xB1, 0x54, 0x24, 0x81, 0x99, 0x00, 0x22,- 0x14, 0x7B, 0x31, 0x3E, 0x19, 0x46, 0x71, 0x13,- 0x1E, 0x70, 0x8D, 0xD4, 0x3A, 0x3E, 0xD7, 0xDC- },- {- 0x99, 0x97, 0xB2, 0x19, 0x4D, 0x9A, 0xF6, 0xDF,- 0xCB, 0x91, 0x43, 0xF4, 0x1C, 0x0E, 0xD8, 0x3D,- 0x3A, 0x3F, 0x43, 0x88, 0x36, 0x11, 0x03, 0xD3,- 0x8C, 0x2A, 0x49, 0xB2, 0x80, 0xA5, 0x81, 0x21,- 0x27, 0x15, 0xFD, 0x90, 0x8D, 0x41, 0xC6, 0x51,- 0xF5, 0xC7, 0x15, 0xCA, 0x38, 0xC0, 0xCE, 0x28,- 0x30, 0xA3, 0x7E, 0x00, 0xE5, 0x08, 0xCE, 0xD1,- 0xBC, 0xDC, 0x32, 0x0E, 0x5E, 0x4D, 0x1E, 0x2E- },- {- 0x5C, 0x6B, 0xBF, 0x16, 0xBA, 0xA1, 0x80, 0xF9,- 0x86, 0xBD, 0x40, 0xA1, 0x28, 0x7E, 0xD4, 0xC5,- 0x49, 0x77, 0x0E, 0x72, 0x84, 0x85, 0x8F, 0xC4,- 0x7B, 0xC2, 0x1A, 0xB9, 0x5E, 0xBB, 0xF3, 0x37,- 0x4B, 0x4E, 0xE3, 0xFD, 0x9F, 0x2A, 0xF6, 0x0F,- 0x33, 0x95, 0x22, 0x1B, 0x2A, 0xCC, 0x76, 0xF2,- 0xD3, 0x4C, 0x13, 0x29, 0x54, 0x04, 0x9F, 0x8A,- 0x3A, 0x99, 0x6F, 0x1E, 0x32, 0xEC, 0x84, 0xE5- },- {- 0xD1, 0x0B, 0xF9, 0xA1, 0x5B, 0x1C, 0x9F, 0xC8,- 0xD4, 0x1F, 0x89, 0xBB, 0x14, 0x0B, 0xF0, 0xBE,- 0x08, 0xD2, 0xF3, 0x66, 0x61, 0x76, 0xD1, 0x3B,- 0xAA, 0xC4, 0xD3, 0x81, 0x35, 0x8A, 0xD0, 0x74,- 0xC9, 0xD4, 0x74, 0x8C, 0x30, 0x05, 0x20, 0xEB,- 0x02, 0x6D, 0xAE, 0xAE, 0xA7, 0xC5, 0xB1, 0x58,- 0x89, 0x2F, 0xDE, 0x4E, 0x8E, 0xC1, 0x7D, 0xC9,- 0x98, 0xDC, 0xD5, 0x07, 0xDF, 0x26, 0xEB, 0x63- },- {- 0x2F, 0xC6, 0xE6, 0x9F, 0xA2, 0x6A, 0x89, 0xA5,- 0xED, 0x26, 0x90, 0x92, 0xCB, 0x9B, 0x2A, 0x44,- 0x9A, 0x44, 0x09, 0xA7, 0xA4, 0x40, 0x11, 0xEE,- 0xCA, 0xD1, 0x3D, 0x7C, 0x4B, 0x04, 0x56, 0x60,- 0x2D, 0x40, 0x2F, 0xA5, 0x84, 0x4F, 0x1A, 0x7A,- 0x75, 0x81, 0x36, 0xCE, 0x3D, 0x5D, 0x8D, 0x0E,- 0x8B, 0x86, 0x92, 0x1F, 0xFF, 0xF4, 0xF6, 0x92,- 0xDD, 0x95, 0xBD, 0xC8, 0xE5, 0xFF, 0x00, 0x52- },- {- 0xFC, 0xBE, 0x8B, 0xE7, 0xDC, 0xB4, 0x9A, 0x32,- 0xDB, 0xDF, 0x23, 0x94, 0x59, 0xE2, 0x63, 0x08,- 0xB8, 0x4D, 0xFF, 0x1E, 0xA4, 0x80, 0xDF, 0x8D,- 0x10, 0x4E, 0xEF, 0xF3, 0x4B, 0x46, 0xFA, 0xE9,- 0x86, 0x27, 0xB4, 0x50, 0xC2, 0x26, 0x7D, 0x48,- 0xC0, 0x94, 0x6A, 0x69, 0x7C, 0x5B, 0x59, 0x53,- 0x14, 0x52, 0xAC, 0x04, 0x84, 0xF1, 0xC8, 0x4E,- 0x3A, 0x33, 0xD0, 0xC3, 0x39, 0xBB, 0x2E, 0x28- },- {- 0xA1, 0x90, 0x93, 0xA6, 0xE3, 0xBC, 0xF5, 0x95,- 0x2F, 0x85, 0x0F, 0x20, 0x30, 0xF6, 0x9B, 0x96,- 0x06, 0xF1, 0x47, 0xF9, 0x0B, 0x8B, 0xAE, 0xE3,- 0x36, 0x2D, 0xA7, 0x1D, 0x9F, 0x35, 0xB4, 0x4E,- 0xF9, 0xD8, 0xF0, 0xA7, 0x71, 0x2B, 0xA1, 0x87,- 0x7F, 0xDD, 0xCD, 0x2D, 0x8E, 0xA8, 0xF1, 0xE5,- 0xA7, 0x73, 0xD0, 0xB7, 0x45, 0xD4, 0x72, 0x56,- 0x05, 0x98, 0x3A, 0x2D, 0xE9, 0x01, 0xF8, 0x03- },- {- 0x3C, 0x20, 0x06, 0x42, 0x3F, 0x73, 0xE2, 0x68,- 0xFA, 0x59, 0xD2, 0x92, 0x03, 0x77, 0xEB, 0x29,- 0xA4, 0xF9, 0xA8, 0xB4, 0x62, 0xBE, 0x15, 0x98,- 0x3E, 0xE3, 0xB8, 0x5A, 0xE8, 0xA7, 0x8E, 0x99,- 0x26, 0x33, 0x58, 0x1A, 0x90, 0x99, 0x89, 0x3B,- 0x63, 0xDB, 0x30, 0x24, 0x1C, 0x34, 0xF6, 0x43,- 0x02, 0x7D, 0xC8, 0x78, 0x27, 0x9A, 0xF5, 0x85,- 0x0D, 0x7E, 0x2D, 0x4A, 0x26, 0x53, 0x07, 0x3A- },- {- 0xD0, 0xF2, 0xF2, 0xE3, 0x78, 0x76, 0x53, 0xF7,- 0x7C, 0xCE, 0x2F, 0xA2, 0x48, 0x35, 0x78, 0x5B,- 0xBD, 0x0C, 0x43, 0x3F, 0xC7, 0x79, 0x46, 0x5A,- 0x11, 0x51, 0x49, 0x90, 0x5A, 0x9D, 0xD1, 0xCB,- 0x82, 0x7A, 0x62, 0x85, 0x06, 0xD4, 0x57, 0xFC,- 0xF1, 0x24, 0xA0, 0xC2, 0xAE, 0xF9, 0xCE, 0x2D,- 0x2A, 0x0A, 0x0F, 0x63, 0x54, 0x55, 0x70, 0xD8,- 0x66, 0x7F, 0xF9, 0xE2, 0xEB, 0xA0, 0x73, 0x34- },- {- 0x78, 0xA9, 0xFC, 0x04, 0x8E, 0x25, 0xC6, 0xDC,- 0xB5, 0xDE, 0x45, 0x66, 0x7D, 0xE8, 0xFF, 0xDD,- 0x3A, 0x93, 0x71, 0x11, 0x41, 0xD5, 0x94, 0xE9,- 0xFA, 0x62, 0xA9, 0x59, 0x47, 0x5D, 0xA6, 0x07,- 0x5E, 0xA8, 0xF0, 0x91, 0x6E, 0x84, 0xE4, 0x5A,- 0xD9, 0x11, 0xB7, 0x54, 0x67, 0x07, 0x7E, 0xE5,- 0x2D, 0x2C, 0x9A, 0xEB, 0xF4, 0xD5, 0x8F, 0x20,- 0xCE, 0x4A, 0x3A, 0x00, 0x45, 0x8B, 0x05, 0xD4- },- {- 0x45, 0x81, 0x3F, 0x44, 0x17, 0x69, 0xAB, 0x6E,- 0xD3, 0x7D, 0x34, 0x9F, 0xF6, 0xE7, 0x22, 0x67,- 0xD7, 0x6A, 0xE6, 0xBB, 0x3E, 0x3C, 0x61, 0x2E,- 0xC0, 0x5C, 0x6E, 0x02, 0xA1, 0x2A, 0xF5, 0xA3,- 0x7C, 0x91, 0x8B, 0x52, 0xBF, 0x74, 0x26, 0x7C,- 0x3F, 0x6A, 0x3F, 0x18, 0x3A, 0x80, 0x64, 0xFF,- 0x84, 0xC0, 0x7B, 0x19, 0x3D, 0x08, 0x06, 0x67,- 0x89, 0xA0, 0x1A, 0xCC, 0xDB, 0x6F, 0x93, 0x40- },- {- 0x95, 0x6D, 0xA1, 0xC6, 0x8D, 0x83, 0xA7, 0xB8,- 0x81, 0xE0, 0x1B, 0x9A, 0x96, 0x6C, 0x3C, 0x0B,- 0xF2, 0x7F, 0x68, 0x60, 0x6A, 0x8B, 0x71, 0xD4,- 0x57, 0xBD, 0x01, 0x6D, 0x4C, 0x41, 0xDD, 0x8A,- 0x38, 0x0C, 0x70, 0x9A, 0x29, 0x6C, 0xB4, 0xC6,- 0x54, 0x47, 0x92, 0x92, 0x0F, 0xD7, 0x88, 0x83,- 0x57, 0x71, 0xA0, 0x7D, 0x4A, 0x16, 0xFB, 0x52,- 0xED, 0x48, 0x05, 0x03, 0x31, 0xDC, 0x4C, 0x8B- },- {- 0xDF, 0x18, 0x6C, 0x2D, 0xC0, 0x9C, 0xAA, 0x48,- 0xE1, 0x4E, 0x94, 0x2F, 0x75, 0xDE, 0x5A, 0xC1,- 0xB7, 0xA2, 0x1E, 0x4F, 0x9F, 0x07, 0x2A, 0x5B,- 0x37, 0x1E, 0x09, 0xE0, 0x73, 0x45, 0xB0, 0x74,- 0x0C, 0x76, 0x17, 0x7B, 0x01, 0x27, 0x88, 0x08,- 0xFE, 0xC0, 0x25, 0xED, 0xED, 0x98, 0x22, 0xC1,- 0x22, 0xAF, 0xD1, 0xC6, 0x3E, 0x6F, 0x0C, 0xE2,- 0xE3, 0x26, 0x31, 0x04, 0x10, 0x63, 0x14, 0x5C- },- {- 0x87, 0x47, 0x56, 0x40, 0x96, 0x6A, 0x9F, 0xDC,- 0xD6, 0xD3, 0xA3, 0xB5, 0xA2, 0xCC, 0xA5, 0xC0,- 0x8F, 0x0D, 0x88, 0x2B, 0x10, 0x24, 0x3C, 0x0E,- 0xC1, 0xBF, 0x3C, 0x6B, 0x1C, 0x37, 0xF2, 0xCD,- 0x32, 0x12, 0xF1, 0x9A, 0x05, 0x78, 0x64, 0x47,- 0x7D, 0x5E, 0xAF, 0x8F, 0xAE, 0xD7, 0x3F, 0x29,- 0x37, 0xC7, 0x68, 0xA0, 0xAF, 0x41, 0x5E, 0x84,- 0xBB, 0xCE, 0x6B, 0xD7, 0xDE, 0x23, 0xB6, 0x60- },- {- 0xC3, 0xB5, 0x73, 0xBB, 0xE1, 0x09, 0x49, 0xA0,- 0xFB, 0xD4, 0xFF, 0x88, 0x4C, 0x44, 0x6F, 0x22,- 0x29, 0xB7, 0x69, 0x02, 0xF9, 0xDF, 0xDB, 0xB8,- 0xA0, 0x35, 0x3D, 0xA5, 0xC8, 0x3C, 0xA1, 0x4E,- 0x81, 0x51, 0xBB, 0xAA, 0xC8, 0x2F, 0xD1, 0x57,- 0x6A, 0x00, 0x9A, 0xDC, 0x6F, 0x19, 0x35, 0xCF,- 0x26, 0xED, 0xD4, 0xF1, 0xFB, 0x8D, 0xA4, 0x83,- 0xE6, 0xC5, 0xCD, 0x9D, 0x89, 0x23, 0xAD, 0xC3- },- {- 0xB0, 0x9D, 0x8D, 0x0B, 0xBA, 0x8A, 0x72, 0x86,- 0xE4, 0x35, 0x68, 0xF7, 0x90, 0x75, 0x50, 0xE4,- 0x20, 0x36, 0xD6, 0x74, 0xE3, 0xC8, 0xFC, 0x34,- 0xD8, 0xCA, 0x46, 0xF7, 0x71, 0xD6, 0x46, 0x6B,- 0x70, 0xFB, 0x60, 0x58, 0x75, 0xF6, 0xA8, 0x63,- 0xC8, 0x77, 0xD1, 0x2F, 0x07, 0x06, 0x3F, 0xDC,- 0x2E, 0x90, 0xCC, 0xD4, 0x59, 0xB1, 0x91, 0x0D,- 0xCD, 0x52, 0xD8, 0xF1, 0x0B, 0x2B, 0x0A, 0x15- },- {- 0xAF, 0x3A, 0x22, 0xBF, 0x75, 0xB2, 0x1A, 0xBF,- 0xB0, 0xAC, 0xD5, 0x44, 0x22, 0xBA, 0x1B, 0x73,- 0x00, 0xA9, 0x52, 0xEF, 0xF0, 0x2E, 0xBE, 0xB6,- 0x5B, 0x5C, 0x23, 0x44, 0x71, 0xA9, 0x8D, 0xF3,- 0x2F, 0x4F, 0x96, 0x43, 0xCE, 0x19, 0x04, 0x10,- 0x8A, 0x16, 0x87, 0x67, 0x92, 0x42, 0x80, 0xBD,- 0x76, 0xC8, 0x3F, 0x8C, 0x82, 0xD9, 0xA7, 0x9D,- 0x92, 0x59, 0xB1, 0x95, 0x36, 0x2A, 0x2A, 0x04- },- {- 0xBF, 0x4F, 0xF2, 0x22, 0x1B, 0x7E, 0x69, 0x57,- 0xA7, 0x24, 0xCD, 0x96, 0x4A, 0xA3, 0xD5, 0xD0,- 0xD9, 0x94, 0x1F, 0x54, 0x04, 0x13, 0x75, 0x2F,- 0x46, 0x99, 0xD8, 0x10, 0x1B, 0x3E, 0x53, 0x75,- 0x08, 0xBF, 0x09, 0xF8, 0x50, 0x8B, 0x31, 0x77,- 0x36, 0xFF, 0xD2, 0x65, 0xF2, 0x84, 0x7A, 0xA7,- 0xD8, 0x4B, 0xD2, 0xD9, 0x75, 0x69, 0xC4, 0x9D,- 0x63, 0x2A, 0xED, 0x99, 0x45, 0xE5, 0xFA, 0x5E- },- {- 0x9C, 0x6B, 0x6B, 0x78, 0x19, 0x9B, 0x1B, 0xDA,- 0xCB, 0x43, 0x00, 0xE3, 0x14, 0x79, 0xFA, 0x62,- 0x2A, 0x6B, 0x5B, 0xC8, 0x0D, 0x46, 0x78, 0xA6,- 0x07, 0x8F, 0x88, 0xA8, 0x26, 0x8C, 0xD7, 0x20,- 0x6A, 0x27, 0x99, 0xE8, 0xD4, 0x62, 0x1A, 0x46,- 0x4E, 0xF6, 0xB4, 0x3D, 0xD8, 0xAD, 0xFF, 0xE9,- 0x7C, 0xAF, 0x22, 0x1B, 0x22, 0xB6, 0xB8, 0x77,- 0x8B, 0x14, 0x9A, 0x82, 0x2A, 0xEF, 0xBB, 0x09- },- {- 0x89, 0x06, 0x56, 0xF0, 0x9C, 0x99, 0xD2, 0x80,- 0xB5, 0xEC, 0xB3, 0x81, 0xF5, 0x64, 0x27, 0xB8,- 0x13, 0x75, 0x1B, 0xC6, 0x52, 0xC7, 0x82, 0x80,- 0x78, 0xB2, 0x3A, 0x4A, 0xF8, 0x3B, 0x4E, 0x3A,- 0x61, 0xFD, 0xBA, 0xC6, 0x1F, 0x89, 0xBE, 0xE8,- 0x4E, 0xA6, 0xBE, 0xE7, 0x60, 0xC0, 0x47, 0xF2,- 0x5C, 0x6B, 0x0A, 0x20, 0x1C, 0x69, 0xA3, 0x8F,- 0xD6, 0xFD, 0x97, 0x1A, 0xF1, 0x85, 0x88, 0xBB- },- {- 0x31, 0xA0, 0x46, 0xF7, 0x88, 0x2F, 0xFE, 0x6F,- 0x83, 0xCE, 0x47, 0x2E, 0x9A, 0x07, 0x01, 0x83,- 0x2E, 0xC7, 0xB3, 0xF7, 0x6F, 0xBC, 0xFD, 0x1D,- 0xF6, 0x0F, 0xE3, 0xEA, 0x48, 0xFD, 0xE1, 0x65,- 0x12, 0x54, 0x24, 0x7C, 0x3F, 0xD9, 0x5E, 0x10,- 0x0F, 0x91, 0x72, 0x73, 0x1E, 0x17, 0xFD, 0x52,- 0x97, 0xC1, 0x1F, 0x4B, 0xB3, 0x28, 0x36, 0x3C,- 0xA3, 0x61, 0x62, 0x4A, 0x81, 0xAF, 0x79, 0x7C- },- {- 0x27, 0xA6, 0x0B, 0x2D, 0x00, 0xE7, 0xA6, 0x71,- 0xD4, 0x7D, 0x0A, 0xEC, 0x2A, 0x68, 0x6A, 0x0A,- 0xC0, 0x4B, 0x52, 0xF4, 0x0A, 0xB6, 0x62, 0x90,- 0x28, 0xEB, 0x7D, 0x13, 0xF4, 0xBA, 0xA9, 0x9A,- 0xC0, 0xFE, 0x46, 0xEE, 0x6C, 0x81, 0x49, 0x44,- 0xF2, 0xF4, 0xB4, 0xD2, 0x0E, 0x93, 0x78, 0xE4,- 0x84, 0x7E, 0xA4, 0x4C, 0x13, 0x17, 0x80, 0x91,- 0xE2, 0x77, 0xB8, 0x7E, 0xA7, 0xA5, 0x57, 0x11- },- {- 0x8B, 0x5C, 0xCE, 0xF1, 0x94, 0x16, 0x2C, 0x1F,- 0x19, 0xD6, 0x8F, 0x91, 0xE0, 0xB0, 0x92, 0x8F,- 0x28, 0x9E, 0xC5, 0x28, 0x37, 0x20, 0x84, 0x0C,- 0x2F, 0x73, 0xD2, 0x53, 0x11, 0x12, 0x38, 0xDC,- 0xFE, 0x94, 0xAF, 0x2B, 0x59, 0xC2, 0xC1, 0xCA,- 0x25, 0x91, 0x90, 0x1A, 0x7B, 0xC0, 0x60, 0xE7,- 0x45, 0x9B, 0x6C, 0x47, 0xDF, 0x0F, 0x71, 0x70,- 0x1A, 0x35, 0xCC, 0x0A, 0xA8, 0x31, 0xB5, 0xB6- },- {- 0x57, 0xAB, 0x6C, 0x4B, 0x22, 0x29, 0xAE, 0xB3,- 0xB7, 0x04, 0x76, 0xD8, 0x03, 0xCD, 0x63, 0x81,- 0x2F, 0x10, 0x7C, 0xE6, 0xDA, 0x17, 0xFE, 0xD9,- 0xB1, 0x78, 0x75, 0xE8, 0xF8, 0x6C, 0x72, 0x4F,- 0x49, 0xE0, 0x24, 0xCB, 0xF3, 0xA1, 0xB8, 0xB1,- 0x19, 0xC5, 0x03, 0x57, 0x65, 0x2B, 0x81, 0x87,- 0x9D, 0x2A, 0xDE, 0x2D, 0x58, 0x8B, 0x9E, 0x4F,- 0x7C, 0xED, 0xBA, 0x0E, 0x46, 0x44, 0xC9, 0xEE- },- {- 0x01, 0x90, 0xA8, 0xDA, 0xC3, 0x20, 0xA7, 0x39,- 0xF3, 0x22, 0xE1, 0x57, 0x31, 0xAA, 0x14, 0x0D,- 0xDA, 0xF5, 0xBE, 0xD2, 0x94, 0xD5, 0xC8, 0x2E,- 0x54, 0xFE, 0xF2, 0x9F, 0x21, 0x4E, 0x18, 0xAA,- 0xFA, 0xA8, 0x4F, 0x8B, 0xE9, 0x9A, 0xF6, 0x29,- 0x50, 0x26, 0x6B, 0x8F, 0x90, 0x1F, 0x15, 0xDD,- 0x4C, 0x5D, 0x35, 0x51, 0x6F, 0xC3, 0x5B, 0x4C,- 0xAB, 0x2E, 0x96, 0xE4, 0x69, 0x5B, 0xBE, 0x1C- },- {- 0xD1, 0x4D, 0x7C, 0x4C, 0x41, 0x5E, 0xEB, 0x0E,- 0x10, 0xB1, 0x59, 0x22, 0x4B, 0xEA, 0x12, 0x7E,- 0xBD, 0x84, 0xF9, 0x59, 0x1C, 0x70, 0x2A, 0x33,- 0x0F, 0x5B, 0xB7, 0xBB, 0x7A, 0xA4, 0x4E, 0xA3,- 0x9D, 0xE6, 0xED, 0x01, 0xF1, 0x8D, 0xA7, 0xAD,- 0xF4, 0x0C, 0xFB, 0x97, 0xC5, 0xD1, 0x52, 0xC2,- 0x75, 0x28, 0x82, 0x4B, 0x21, 0xE2, 0x39, 0x52,- 0x6A, 0xF8, 0xF3, 0x6B, 0x21, 0x4E, 0x0C, 0xFB- },- {- 0xBE, 0x28, 0xC4, 0xBE, 0x70, 0x69, 0x70, 0x48,- 0x8F, 0xAC, 0x7D, 0x29, 0xC3, 0xBD, 0x5C, 0x4E,- 0x98, 0x60, 0x85, 0xC4, 0xC3, 0x33, 0x2F, 0x1F,- 0x3F, 0xD3, 0x09, 0x73, 0xDB, 0x61, 0x41, 0x64,- 0xBA, 0x2F, 0x31, 0xA7, 0x88, 0x75, 0xFF, 0xDC,- 0x15, 0x03, 0x25, 0xC8, 0x83, 0x27, 0xA9, 0x44,- 0x3E, 0xD0, 0x4F, 0xDF, 0xE5, 0xBE, 0x93, 0x87,- 0x6D, 0x16, 0x28, 0x56, 0x0C, 0x76, 0x4A, 0x80- },- {- 0x03, 0x1D, 0xA1, 0x06, 0x9E, 0x3A, 0x2E, 0x9C,- 0x33, 0x82, 0xE4, 0x36, 0xFF, 0xD7, 0x9D, 0xF7,- 0x4B, 0x1C, 0xA6, 0xA8, 0xAD, 0xB2, 0xDE, 0xAB,- 0xE6, 0x76, 0xAB, 0x45, 0x99, 0x4C, 0xBC, 0x05,- 0x4F, 0x03, 0x7D, 0x2F, 0x0E, 0xAC, 0xE8, 0x58,- 0xD3, 0x2C, 0x14, 0xE2, 0xD1, 0xC8, 0xB4, 0x60,- 0x77, 0x30, 0x8E, 0x3B, 0xDC, 0x2C, 0x1B, 0x53,- 0x17, 0x2E, 0xCF, 0x7A, 0x8C, 0x14, 0xE3, 0x49- },- {- 0x46, 0x65, 0xCE, 0xF8, 0xBA, 0x4D, 0xB4, 0xD0,- 0xAC, 0xB1, 0x18, 0xF2, 0x98, 0x7F, 0x0B, 0xB0,- 0x9F, 0x8F, 0x86, 0xAA, 0x44, 0x5A, 0xA3, 0xD5,- 0xFC, 0x9A, 0x8B, 0x34, 0x68, 0x64, 0x78, 0x74,- 0x89, 0xE8, 0xFC, 0xEC, 0xC1, 0x25, 0xD1, 0x7E,- 0x9B, 0x56, 0xE1, 0x29, 0x88, 0xEA, 0xC5, 0xEC,- 0xC7, 0x28, 0x68, 0x83, 0xDB, 0x06, 0x61, 0xB8,- 0xFF, 0x05, 0xDA, 0x2A, 0xFF, 0xF3, 0x0F, 0xE4- },- {- 0x63, 0xB7, 0x03, 0x2E, 0x5F, 0x93, 0x0C, 0xC9,- 0x93, 0x95, 0x17, 0xF9, 0xE9, 0x86, 0x81, 0x6C,- 0xFB, 0xEC, 0x2B, 0xE5, 0x9B, 0x95, 0x68, 0xB1,- 0x3F, 0x2E, 0xAD, 0x05, 0xBA, 0xE7, 0x77, 0x7C,- 0xAB, 0x62, 0x0C, 0x66, 0x59, 0x40, 0x4F, 0x74,- 0x09, 0xE4, 0x19, 0x9A, 0x3B, 0xE5, 0xF7, 0x86,- 0x5A, 0xA7, 0xCB, 0xDF, 0x8C, 0x42, 0x53, 0xF7,- 0xE8, 0x21, 0x9B, 0x1B, 0xD5, 0xF4, 0x6F, 0xEA- },- {- 0x9F, 0x09, 0xBF, 0x09, 0x3A, 0x2B, 0x0F, 0xF8,- 0xC2, 0x63, 0x4B, 0x49, 0xE3, 0x7F, 0x1B, 0x21,- 0x35, 0xB4, 0x47, 0xAA, 0x91, 0x44, 0xC9, 0x78,- 0x7D, 0xBF, 0xD9, 0x21, 0x29, 0x31, 0x6C, 0x99,- 0xE8, 0x8A, 0xAB, 0x8A, 0x21, 0xFD, 0xEF, 0x23,- 0x72, 0xD1, 0x18, 0x9A, 0xEC, 0x50, 0x0F, 0x95,- 0x77, 0x5F, 0x1F, 0x92, 0xBF, 0xB4, 0x55, 0x45,- 0xE4, 0x25, 0x9F, 0xB9, 0xB7, 0xB0, 0x2D, 0x14- },- {- 0xF9, 0xF8, 0x49, 0x3C, 0x68, 0x08, 0x88, 0x07,- 0xDF, 0x7F, 0x6A, 0x26, 0x93, 0xD6, 0x4E, 0xA5,- 0x9F, 0x03, 0xE9, 0xE0, 0x5A, 0x22, 0x3E, 0x68,- 0x52, 0x4C, 0xA3, 0x21, 0x95, 0xA4, 0x73, 0x4B,- 0x65, 0x4F, 0xCE, 0xA4, 0xD2, 0x73, 0x4C, 0x86,- 0x6C, 0xF9, 0x5C, 0x88, 0x9F, 0xB1, 0x0C, 0x49,- 0x15, 0x9B, 0xE2, 0xF5, 0x04, 0x3D, 0xC9, 0x8B,- 0xB5, 0x5E, 0x02, 0xEF, 0x7B, 0xDC, 0xB0, 0x82- },- {- 0x3C, 0x9A, 0x73, 0x59, 0xAB, 0x4F, 0xEB, 0xCE,- 0x07, 0xB2, 0x0A, 0xC4, 0x47, 0xB0, 0x6A, 0x24,- 0x0B, 0x7F, 0xE1, 0xDA, 0xE5, 0x43, 0x9C, 0x49,- 0xB6, 0x0B, 0x58, 0x19, 0xF7, 0x81, 0x2E, 0x4C,- 0x17, 0x24, 0x06, 0xC1, 0xAA, 0xC3, 0x16, 0x71,- 0x3C, 0xF0, 0xDD, 0xED, 0x10, 0x38, 0x07, 0x72,- 0x58, 0xE2, 0xEF, 0xF5, 0xB3, 0x39, 0x13, 0xD9,- 0xD9, 0x5C, 0xAE, 0xB4, 0xE6, 0xC6, 0xB9, 0x70- },- {- 0xAD, 0x6A, 0xAB, 0x80, 0x84, 0x51, 0x0E, 0x82,- 0x2C, 0xFC, 0xE8, 0x62, 0x5D, 0x62, 0xCF, 0x4D,- 0xE6, 0x55, 0xF4, 0x76, 0x38, 0x84, 0xC7, 0x1E,- 0x80, 0xBA, 0xB9, 0xAC, 0x9D, 0x53, 0x18, 0xDB,- 0xA4, 0xA6, 0x03, 0x3E, 0xD2, 0x90, 0x84, 0xE6,- 0x52, 0x16, 0xC0, 0x31, 0x60, 0x6C, 0xA1, 0x76,- 0x15, 0xDC, 0xFE, 0x3B, 0xA1, 0x1D, 0x26, 0x85,- 0x1A, 0xE0, 0x99, 0x9C, 0xA6, 0xE2, 0x32, 0xCF- },- {- 0x15, 0x6E, 0x9E, 0x62, 0x61, 0x37, 0x4C, 0x9D,- 0xC8, 0x84, 0xF3, 0x6E, 0x70, 0xF0, 0xFE, 0x1A,- 0xB9, 0x29, 0x79, 0x97, 0xB8, 0x36, 0xFA, 0x7D,- 0x17, 0x0A, 0x9C, 0x9E, 0xBF, 0x57, 0x5B, 0x88,- 0x1E, 0x7B, 0xCE, 0xA4, 0x4D, 0x6C, 0x02, 0x48,- 0xD3, 0x55, 0x97, 0x90, 0x71, 0x54, 0x82, 0x89,- 0x55, 0xBE, 0x19, 0x13, 0x58, 0x52, 0xF9, 0x22,- 0x88, 0x15, 0xEC, 0xA0, 0x24, 0xA8, 0xAD, 0xFB- },- {- 0x42, 0x15, 0x40, 0x76, 0x33, 0xF4, 0xCC, 0xA9,- 0xB6, 0x78, 0x8B, 0xE9, 0x3E, 0x6A, 0xA3, 0xD9,- 0x63, 0xC7, 0xD6, 0xCE, 0x4B, 0x14, 0x72, 0x47,- 0x09, 0x9F, 0x46, 0xA3, 0xAC, 0xB5, 0x00, 0xA3,- 0x00, 0x38, 0xCB, 0x3E, 0x78, 0x8C, 0x3D, 0x29,- 0xF1, 0x32, 0xAD, 0x84, 0x4E, 0x80, 0xE9, 0xE9,- 0x92, 0x51, 0xF6, 0xDB, 0x96, 0xAC, 0xD8, 0xA0,- 0x91, 0xCF, 0xC7, 0x70, 0xAF, 0x53, 0x84, 0x7B- },- {- 0x1C, 0x07, 0x7E, 0x27, 0x9D, 0xE6, 0x54, 0x85,- 0x23, 0x50, 0x2B, 0x6D, 0xF8, 0x00, 0xFF, 0xDA,- 0xB5, 0xE2, 0xC3, 0xE9, 0x44, 0x2E, 0xB8, 0x38,- 0xF5, 0x8C, 0x29, 0x5F, 0x3B, 0x14, 0x7C, 0xEF,- 0x9D, 0x70, 0x1C, 0x41, 0xC3, 0x21, 0x28, 0x3F,- 0x00, 0xC7, 0x1A, 0xFF, 0xA0, 0x61, 0x93, 0x10,- 0x39, 0x91, 0x26, 0x29, 0x5B, 0x78, 0xDD, 0x4D,- 0x1A, 0x74, 0x57, 0x2E, 0xF9, 0xED, 0x51, 0x35- },- {- 0xF0, 0x7A, 0x55, 0x5F, 0x49, 0xFE, 0x48, 0x1C,- 0xF4, 0xCD, 0x0A, 0x87, 0xB7, 0x1B, 0x82, 0xE4,- 0xA9, 0x50, 0x64, 0xD0, 0x66, 0x77, 0xFD, 0xD9,- 0x0A, 0x0E, 0xB5, 0x98, 0x87, 0x7B, 0xA1, 0xC8,- 0x3D, 0x46, 0x77, 0xB3, 0x93, 0xC3, 0xA3, 0xB6,- 0x66, 0x1C, 0x42, 0x1F, 0x5B, 0x12, 0xCB, 0x99,- 0xD2, 0x03, 0x76, 0xBA, 0x72, 0x75, 0xC2, 0xF3,- 0xA8, 0xF5, 0xA9, 0xB7, 0x82, 0x17, 0x20, 0xDA- },- {- 0xB5, 0x91, 0x1B, 0x38, 0x0D, 0x20, 0xC7, 0xB0,- 0x43, 0x23, 0xE4, 0x02, 0x6B, 0x38, 0xE2, 0x00,- 0xF5, 0x34, 0x25, 0x92, 0x33, 0xB5, 0x81, 0xE0,- 0x2C, 0x1E, 0x3E, 0x2D, 0x84, 0x38, 0xD6, 0xC6,- 0x6D, 0x5A, 0x4E, 0xB2, 0x01, 0xD5, 0xA8, 0xB7,- 0x50, 0x72, 0xC4, 0xEC, 0x29, 0x10, 0x63, 0x34,- 0xDA, 0x70, 0xBC, 0x79, 0x52, 0x1B, 0x0C, 0xED,- 0x2C, 0xFD, 0x53, 0x3F, 0x5F, 0xF8, 0x4F, 0x95- },- {- 0x01, 0xF0, 0x70, 0xA0, 0x9B, 0xAE, 0x91, 0x12,- 0x96, 0x36, 0x1F, 0x91, 0xAA, 0x0E, 0x8E, 0x0D,- 0x09, 0xA7, 0x72, 0x54, 0x78, 0x53, 0x6D, 0x9D,- 0x48, 0xC5, 0xFE, 0x1E, 0x5E, 0x7C, 0x3C, 0x5B,- 0x9B, 0x9D, 0x6E, 0xB0, 0x77, 0x96, 0xF6, 0xDA,- 0x57, 0xAE, 0x56, 0x2A, 0x7D, 0x70, 0xE8, 0x82,- 0xE3, 0x7A, 0xDF, 0xDE, 0x83, 0xF0, 0xC4, 0x33,- 0xC2, 0xCD, 0x36, 0x35, 0x36, 0xBB, 0x22, 0xC8- },- {- 0x6F, 0x79, 0x3E, 0xB4, 0x37, 0x4A, 0x48, 0xB0,- 0x77, 0x5A, 0xCA, 0xF9, 0xAD, 0xCF, 0x8E, 0x45,- 0xE5, 0x42, 0x70, 0xC9, 0x47, 0x5F, 0x00, 0x4A,- 0xD8, 0xD5, 0x97, 0x3E, 0x2A, 0xCA, 0x52, 0x74,- 0x7F, 0xF4, 0xED, 0x04, 0xAE, 0x96, 0x72, 0x75,- 0xB9, 0xF9, 0xEB, 0x0E, 0x1F, 0xF7, 0x5F, 0xB4,- 0xF7, 0x94, 0xFA, 0x8B, 0xE9, 0xAD, 0xD7, 0xA4,- 0x13, 0x04, 0x86, 0x8D, 0x10, 0x3F, 0xAB, 0x10- },- {- 0x96, 0x5F, 0x20, 0xF1, 0x39, 0x76, 0x5F, 0xCC,- 0x4C, 0xE4, 0xBA, 0x37, 0x94, 0x67, 0x58, 0x63,- 0xCA, 0xC2, 0x4D, 0xB4, 0x72, 0xCD, 0x2B, 0x79,- 0x9D, 0x03, 0x5B, 0xCE, 0x3D, 0xBE, 0xA5, 0x02,- 0xDA, 0x7B, 0x52, 0x48, 0x65, 0xF6, 0xB8, 0x11,- 0xD8, 0xC5, 0x82, 0x8D, 0x3A, 0x88, 0x96, 0x46,- 0xFE, 0x64, 0xA3, 0x80, 0xDA, 0x1A, 0xA7, 0xC7,- 0x04, 0x4E, 0x9F, 0x24, 0x5D, 0xCE, 0xD1, 0x28- },- {- 0xEC, 0x29, 0x5B, 0x57, 0x83, 0x60, 0x12, 0x44,- 0xC3, 0x0E, 0x46, 0x41, 0xE3, 0xB4, 0x5B, 0xE2,- 0x22, 0xC4, 0xDC, 0xE7, 0x7A, 0x58, 0x70, 0x0F,- 0x53, 0xBC, 0x8E, 0xC5, 0x2A, 0x94, 0x16, 0x90,- 0xB4, 0xD0, 0xB0, 0x87, 0xFB, 0x6F, 0xCB, 0x3F,- 0x39, 0x83, 0x2B, 0x9D, 0xE8, 0xF7, 0x5E, 0xC2,- 0x0B, 0xD4, 0x30, 0x79, 0x81, 0x17, 0x49, 0xCD,- 0xC9, 0x07, 0xED, 0xB9, 0x41, 0x57, 0xD1, 0x80- },- {- 0x61, 0xC7, 0x2F, 0x8C, 0xCC, 0x91, 0xDB, 0xB5,- 0x4C, 0xA6, 0x75, 0x0B, 0xC4, 0x89, 0x67, 0x2D,- 0xE0, 0x9F, 0xAE, 0xDB, 0x8F, 0xDD, 0x4F, 0x94,- 0xFF, 0x23, 0x20, 0x90, 0x9A, 0x30, 0x3F, 0x5D,- 0x5A, 0x98, 0x48, 0x1C, 0x0B, 0xC1, 0xA6, 0x25,- 0x41, 0x9F, 0xB4, 0xDE, 0xBF, 0xBF, 0x7F, 0x8A,- 0x53, 0xBB, 0x07, 0xEC, 0x3D, 0x98, 0x5E, 0x8E,- 0xA1, 0x1E, 0x72, 0xD5, 0x59, 0x94, 0x07, 0x80- },- {- 0xAF, 0xD8, 0x14, 0x5B, 0x25, 0x9E, 0xEF, 0xC8,- 0xD1, 0x26, 0x20, 0xC3, 0xC5, 0xB0, 0x3E, 0x1E,- 0xD8, 0xFD, 0x2C, 0xCE, 0xFE, 0x03, 0x65, 0x07,- 0x8C, 0x80, 0xFD, 0x42, 0xC1, 0x77, 0x0E, 0x28,- 0xB4, 0x49, 0x48, 0xF2, 0x7E, 0x65, 0xA1, 0x88,- 0x66, 0x90, 0x11, 0x0D, 0xB8, 0x14, 0x39, 0x7B,- 0x68, 0xE4, 0x3D, 0x80, 0xD1, 0xBA, 0x16, 0xDF,- 0xA3, 0x58, 0xE7, 0x39, 0xC8, 0x98, 0xCF, 0xA3- },- {- 0x55, 0x2F, 0xC7, 0x89, 0x3C, 0xF1, 0xCE, 0x93,- 0x3A, 0xDA, 0x35, 0xC0, 0xDA, 0x98, 0x84, 0x4E,- 0x41, 0x54, 0x5E, 0x24, 0x4C, 0x31, 0x57, 0xA1,- 0x42, 0x8D, 0x7B, 0x4C, 0x21, 0xF9, 0xCD, 0x7E,- 0x40, 0x71, 0xAE, 0xD7, 0x7B, 0x7C, 0xA9, 0xF1,- 0xC3, 0x8F, 0xBA, 0x32, 0x23, 0x74, 0x12, 0xEF,- 0x21, 0xA3, 0x42, 0x74, 0x2E, 0xC8, 0x32, 0x43,- 0x78, 0xF2, 0x1E, 0x50, 0x7F, 0xAF, 0xDD, 0x88- },- {- 0x46, 0x7A, 0x33, 0xFB, 0xAD, 0xF5, 0xEB, 0xC5,- 0x25, 0x96, 0xEF, 0x86, 0xAA, 0xAE, 0xFC, 0x6F,- 0xAB, 0xA8, 0xEE, 0x65, 0x1B, 0x1C, 0xE0, 0x4D,- 0xE3, 0x68, 0xA0, 0x3A, 0x5A, 0x90, 0x40, 0xEF,- 0x28, 0x35, 0xE0, 0x0A, 0xDB, 0x09, 0xAB, 0xB3,- 0xFB, 0xD2, 0xBC, 0xE8, 0x18, 0xA2, 0x41, 0x3D,- 0x0B, 0x02, 0x53, 0xB5, 0xBD, 0xA4, 0xFC, 0x5B,- 0x2F, 0x6F, 0x85, 0xF3, 0xFD, 0x5B, 0x55, 0xF2- },- {- 0x22, 0xEF, 0xF8, 0xE6, 0xDD, 0x52, 0x36, 0xF5,- 0xF5, 0x7D, 0x94, 0xED, 0xE8, 0x74, 0xD6, 0xC9,- 0x42, 0x8E, 0x8F, 0x5D, 0x56, 0x6F, 0x17, 0xCD,- 0x6D, 0x18, 0x48, 0xCD, 0x75, 0x2F, 0xE1, 0x3C,- 0x65, 0x5C, 0xB1, 0x0F, 0xBA, 0xAF, 0xF7, 0x68,- 0x72, 0xF2, 0xBF, 0x2D, 0xA9, 0x9E, 0x15, 0xDC,- 0x62, 0x40, 0x75, 0xE1, 0xEC, 0x2F, 0x58, 0xA3,- 0xF6, 0x40, 0x72, 0x12, 0x18, 0x38, 0x56, 0x9E- },- {- 0x9C, 0xEC, 0x6B, 0xBF, 0x62, 0xC4, 0xBC, 0xE4,- 0x13, 0x8A, 0xBA, 0xE1, 0xCB, 0xEC, 0x8D, 0xAD,- 0x31, 0x95, 0x04, 0x44, 0xE9, 0x03, 0x21, 0xB1,- 0x34, 0x71, 0x96, 0x83, 0x4C, 0x11, 0x4B, 0x86,- 0x4A, 0xF3, 0xF3, 0xCC, 0x35, 0x08, 0xF8, 0x37,- 0x51, 0xFF, 0xB4, 0xED, 0xA7, 0xC8, 0x4D, 0x14,- 0x07, 0x34, 0xBB, 0x42, 0x63, 0xC3, 0x62, 0x5C,- 0x00, 0xF0, 0x4F, 0x4C, 0x80, 0x68, 0x98, 0x1B- },- {- 0xA8, 0xB6, 0x0F, 0xA4, 0xFC, 0x24, 0x42, 0xF6,- 0xF1, 0x51, 0x4A, 0xD7, 0x40, 0x26, 0x26, 0x92,- 0x0C, 0xC7, 0xC2, 0xC9, 0xF7, 0x21, 0x24, 0xB8,- 0xCB, 0xA8, 0xEE, 0x2C, 0xB7, 0xC4, 0x58, 0x6F,- 0x65, 0x8A, 0x44, 0x10, 0xCF, 0xFC, 0xC0, 0xAB,- 0x88, 0x34, 0x39, 0x55, 0xE0, 0x94, 0xC6, 0xAF,- 0x0D, 0x20, 0xD0, 0xC7, 0x14, 0xFB, 0x0A, 0x98,- 0x8F, 0x54, 0x3F, 0x30, 0x0F, 0x58, 0xD3, 0x89- },- {- 0x82, 0x71, 0xCC, 0x45, 0xDF, 0xA5, 0xE4, 0x17,- 0x0E, 0x84, 0x7E, 0x86, 0x30, 0xB9, 0x52, 0xCF,- 0x9C, 0x2A, 0xA7, 0x77, 0xD0, 0x6F, 0x26, 0xA7,- 0x58, 0x5B, 0x83, 0x81, 0xF1, 0x88, 0xDA, 0xCC,- 0x73, 0x37, 0x39, 0x1C, 0xFC, 0xC9, 0x4B, 0x05,- 0x3D, 0xC4, 0xEC, 0x29, 0xCC, 0x17, 0xF0, 0x77,- 0x87, 0x04, 0x28, 0xF1, 0xAC, 0x23, 0xFD, 0xDD,- 0xA1, 0x65, 0xEF, 0x5A, 0x3F, 0x15, 0x5F, 0x39- },- {- 0xBF, 0x23, 0xC0, 0xC2, 0x5C, 0x80, 0x60, 0xE4,- 0xF6, 0x99, 0x5F, 0x16, 0x23, 0xA3, 0xBE, 0xBE,- 0xCA, 0xA9, 0x6E, 0x30, 0x86, 0x80, 0x00, 0x0A,- 0x8A, 0xA3, 0xCD, 0x56, 0xBB, 0x1A, 0x6D, 0xA0,- 0x99, 0xE1, 0x0D, 0x92, 0x31, 0xB3, 0x7F, 0x45,- 0x19, 0xB2, 0xEF, 0xD2, 0xC2, 0x4D, 0xE7, 0x2F,- 0x31, 0xA5, 0xF1, 0x95, 0x35, 0x24, 0x1B, 0x4A,- 0x59, 0xFA, 0x3C, 0x03, 0xCE, 0xB7, 0x90, 0xE7- },- {- 0x87, 0x7F, 0xD6, 0x52, 0xC0, 0x52, 0x81, 0x00,- 0x9C, 0x0A, 0x52, 0x50, 0xE7, 0xA3, 0xA6, 0x71,- 0xF8, 0xB1, 0x8C, 0x10, 0x88, 0x17, 0xFE, 0x4A,- 0x87, 0x4D, 0xE2, 0x2D, 0xA8, 0xE4, 0x5D, 0xB1,- 0x19, 0x58, 0xA6, 0x00, 0xC5, 0xF6, 0x2E, 0x67,- 0xD3, 0x6C, 0xBF, 0x84, 0x47, 0x4C, 0xF2, 0x44,- 0xA9, 0xC2, 0xB0, 0x3A, 0x9F, 0xB9, 0xDC, 0x71,- 0x1C, 0xD1, 0xA2, 0xCA, 0xB6, 0xF3, 0xFA, 0xE0- },- {- 0x29, 0xDF, 0x4D, 0x87, 0xEA, 0x44, 0x4B, 0xAF,- 0x5B, 0xCD, 0xF5, 0xF4, 0xE4, 0x15, 0x79, 0xE2,- 0x8A, 0x67, 0xDE, 0x84, 0x14, 0x9F, 0x06, 0xC0,- 0x3F, 0x11, 0x0E, 0xA8, 0x4F, 0x57, 0x2A, 0x9F,- 0x67, 0x6A, 0xDD, 0xD0, 0x4C, 0x48, 0x78, 0xF4,- 0x9C, 0x5C, 0x00, 0xAC, 0xCD, 0xA4, 0x41, 0xB1,- 0xA3, 0x87, 0xCA, 0xCE, 0xB2, 0xE9, 0x93, 0xBB,- 0x7A, 0x10, 0xCD, 0x8C, 0x2D, 0x67, 0x17, 0xE1- },- {- 0x71, 0x0D, 0xAC, 0xB1, 0x66, 0x84, 0x46, 0x39,- 0xCD, 0x7B, 0x63, 0x7C, 0x27, 0x42, 0x09, 0x42,- 0x4E, 0x24, 0x49, 0xDC, 0x35, 0xD7, 0x90, 0xBB,- 0xFA, 0x4F, 0x76, 0x17, 0x70, 0x54, 0xA3, 0x6B,- 0x3B, 0x76, 0xFA, 0xC0, 0xCA, 0x6E, 0x61, 0xDF,- 0x1E, 0x68, 0x70, 0x00, 0x67, 0x8A, 0xC0, 0x74,- 0x6D, 0xF7, 0x5D, 0x0A, 0x39, 0x54, 0x89, 0x76,- 0x81, 0xFD, 0x39, 0x3A, 0x15, 0x5A, 0x1B, 0xB4- },- {- 0xC1, 0xD5, 0xF9, 0x3B, 0x8D, 0xEA, 0x1F, 0x25,- 0x71, 0xBA, 0xBC, 0xCB, 0xC0, 0x17, 0x64, 0x54,- 0x1A, 0x0C, 0xDA, 0x87, 0xE4, 0x44, 0xD6, 0x73,- 0xC5, 0x09, 0x66, 0xCA, 0x55, 0x9C, 0x33, 0x35,- 0x4B, 0x3A, 0xCB, 0x26, 0xE5, 0xD5, 0x78, 0x1F,- 0xFB, 0x28, 0x84, 0x7A, 0x4B, 0x47, 0x54, 0xD7,- 0x70, 0x08, 0xC6, 0x2A, 0x83, 0x58, 0x35, 0xF5,- 0x00, 0xDE, 0xA7, 0xC3, 0xB5, 0x8B, 0xDA, 0xE2- },- {- 0xA4, 0x1E, 0x41, 0x27, 0x1C, 0xDA, 0xB8, 0xAF,- 0x4D, 0x72, 0xB1, 0x04, 0xBF, 0xB2, 0xAD, 0x04,- 0x1A, 0xC4, 0xDF, 0x14, 0x67, 0x7D, 0xA6, 0x71,- 0xD8, 0x56, 0x40, 0xC4, 0xB1, 0x87, 0xF5, 0x0C,- 0x2B, 0x66, 0x51, 0x3C, 0x46, 0x19, 0xFB, 0xD5,- 0xD5, 0xDC, 0x4F, 0xE6, 0x5D, 0xD3, 0x7B, 0x90,- 0x42, 0xE9, 0x84, 0x8D, 0xDA, 0x55, 0x6A, 0x50,- 0x4C, 0xAA, 0x2B, 0x1C, 0x6A, 0xFE, 0x47, 0x30- },- {- 0xE7, 0xBC, 0xBA, 0xCD, 0xC3, 0x79, 0xC4, 0x3D,- 0x81, 0xEB, 0xAD, 0xCB, 0x37, 0x78, 0x15, 0x52,- 0xFC, 0x1D, 0x75, 0x3E, 0x8C, 0xF3, 0x10, 0xD9,- 0x68, 0x39, 0x2D, 0x06, 0xC9, 0x1F, 0x1D, 0x64,- 0xCC, 0x9E, 0x90, 0xCE, 0x1D, 0x22, 0xC3, 0x2D,- 0x27, 0x7F, 0xC6, 0xCD, 0xA4, 0x33, 0xA4, 0xD4,- 0x42, 0xC7, 0x62, 0xE9, 0xEA, 0xCF, 0x2C, 0x25,- 0x9F, 0x32, 0xD6, 0x4C, 0xF9, 0xDA, 0x3A, 0x22- },- {- 0x51, 0x75, 0x5B, 0x4A, 0xC5, 0x45, 0x6B, 0x13,- 0x21, 0x8A, 0x19, 0xC5, 0xB9, 0x24, 0x2F, 0x57,- 0xC4, 0xA9, 0x81, 0xE4, 0xD4, 0xEC, 0xDC, 0xE0,- 0x9A, 0x31, 0x93, 0x36, 0x2B, 0x80, 0x8A, 0x57,- 0x93, 0x45, 0xD4, 0x88, 0x1C, 0x26, 0x07, 0xA5,- 0x65, 0x34, 0xDD, 0x7F, 0x21, 0x95, 0x6A, 0xFF,- 0x72, 0xC2, 0xF4, 0x17, 0x3A, 0x6E, 0x7B, 0x6C,- 0xC2, 0x21, 0x2B, 0xA0, 0xE3, 0xDA, 0xEE, 0x1F- },- {- 0xDC, 0xC2, 0xC4, 0xBE, 0xB9, 0xC1, 0xF2, 0x60,- 0x7B, 0x78, 0x6C, 0x20, 0xC6, 0x31, 0x97, 0x23,- 0x47, 0x03, 0x4C, 0x1C, 0xC0, 0x2F, 0xCC, 0x7D,- 0x02, 0xFF, 0x01, 0x09, 0x9C, 0xFE, 0x1C, 0x69,- 0x89, 0x84, 0x0A, 0xC2, 0x13, 0x92, 0x36, 0x29,- 0x11, 0x3A, 0xA8, 0xBA, 0xD7, 0x13, 0xCC, 0xF0,- 0xFE, 0x4C, 0xE1, 0x32, 0x64, 0xFB, 0x32, 0xB8,- 0xB0, 0xFE, 0x37, 0x2D, 0xA3, 0x82, 0x54, 0x4A- },- {- 0x3D, 0x55, 0x17, 0x6A, 0xCE, 0xA4, 0xA7, 0xE3,- 0xA6, 0x5F, 0xFA, 0x9F, 0xB1, 0x0A, 0x7A, 0x17,- 0x67, 0x19, 0x9C, 0xF0, 0x77, 0xCE, 0xE9, 0xF7,- 0x15, 0x32, 0xD6, 0x7C, 0xD7, 0xC7, 0x3C, 0x9F,- 0x93, 0xCF, 0xC3, 0x7C, 0xCD, 0xCC, 0x1F, 0xDE,- 0xF5, 0x0A, 0xAD, 0x46, 0xA5, 0x04, 0xA6, 0x50,- 0xD2, 0x98, 0xD5, 0x97, 0xA3, 0xA9, 0xFA, 0x95,- 0xC6, 0xC4, 0x0C, 0xB7, 0x1F, 0xA5, 0xE7, 0x25- },- {- 0xD0, 0x77, 0x13, 0xC0, 0x05, 0xDE, 0x96, 0xDD,- 0x21, 0xD2, 0xEB, 0x8B, 0xBE, 0xCA, 0x66, 0x74,- 0x6E, 0xA5, 0x1A, 0x31, 0xAE, 0x92, 0x2A, 0x3E,- 0x74, 0x86, 0x48, 0x89, 0x54, 0x0A, 0x48, 0xDB,- 0x27, 0xD7, 0xE4, 0xC9, 0x03, 0x11, 0x63, 0x8B,- 0x22, 0x4B, 0xF0, 0x20, 0x1B, 0x50, 0x18, 0x91,- 0x75, 0x48, 0x48, 0x11, 0x3C, 0x26, 0x61, 0x08,- 0xD0, 0xAD, 0xB1, 0x3D, 0xB7, 0x19, 0x09, 0xC7- },- {- 0x58, 0x98, 0x3C, 0x21, 0x43, 0x3D, 0x95, 0x0C,- 0xAA, 0x23, 0xE4, 0xBC, 0x18, 0x54, 0x3B, 0x8E,- 0x60, 0x1C, 0x20, 0x43, 0x18, 0x53, 0x21, 0x52,- 0xDA, 0xF5, 0xE1, 0x59, 0xA0, 0xCD, 0x14, 0x80,- 0x18, 0x3D, 0x29, 0x28, 0x5C, 0x05, 0xF1, 0x29,- 0xCB, 0x0C, 0xC3, 0x16, 0x46, 0x87, 0x92, 0x80,- 0x86, 0xFF, 0xE3, 0x80, 0x15, 0x8D, 0xF1, 0xD3,- 0x94, 0xC6, 0xAC, 0x0D, 0x42, 0x88, 0xBC, 0xA8- },- {- 0x81, 0x00, 0xA8, 0xDC, 0x52, 0x8D, 0x2B, 0x68,- 0x2A, 0xB4, 0x25, 0x08, 0x01, 0xBA, 0x33, 0xF0,- 0x2A, 0x3E, 0x94, 0xC5, 0x4D, 0xAC, 0x0A, 0xE1,- 0x48, 0x2A, 0xA2, 0x1F, 0x51, 0xEF, 0x3A, 0x82,- 0xF3, 0x80, 0x7E, 0x6F, 0xAC, 0xB0, 0xAE, 0xB0,- 0x59, 0x47, 0xBF, 0x7A, 0xA2, 0xAD, 0xCB, 0x03,- 0x43, 0x56, 0xF9, 0x0F, 0xA4, 0x56, 0x0E, 0xDE,- 0x02, 0x20, 0x1A, 0x37, 0xE4, 0x11, 0xEC, 0x1A- },- {- 0x07, 0x02, 0x5F, 0x1B, 0xB6, 0xC7, 0x84, 0xF3,- 0xFE, 0x49, 0xDE, 0x5C, 0x14, 0xB9, 0x36, 0xA5,- 0xAC, 0xAC, 0xAC, 0xAA, 0xB3, 0x3F, 0x6A, 0xC4,- 0xD0, 0xE0, 0x0A, 0xB6, 0xA1, 0x24, 0x83, 0xD6,- 0xBE, 0xC0, 0x0B, 0x4F, 0xE6, 0x7C, 0x7C, 0xA5,- 0xCC, 0x50, 0x8C, 0x2A, 0x53, 0xEF, 0xB5, 0xBF,- 0xA5, 0x39, 0x87, 0x69, 0xD8, 0x43, 0xFF, 0x0D,- 0x9E, 0x8B, 0x14, 0xD3, 0x6A, 0x01, 0xA7, 0x7F- },- {- 0xBA, 0x6A, 0xEF, 0xD9, 0x72, 0xB6, 0x18, 0x6E,- 0x02, 0x7A, 0x76, 0x27, 0x3A, 0x4A, 0x72, 0x33,- 0x21, 0xA3, 0xF5, 0x80, 0xCF, 0xA8, 0x94, 0xDA,- 0x5A, 0x9C, 0xE8, 0xE7, 0x21, 0xC8, 0x28, 0x55,- 0x2C, 0x64, 0xDA, 0xCE, 0xE3, 0xA7, 0xFD, 0x2D,- 0x74, 0x3B, 0x5C, 0x35, 0xAD, 0x0C, 0x8E, 0xFA,- 0x71, 0xF8, 0xCE, 0x99, 0xBF, 0x96, 0x33, 0x47,- 0x10, 0xE2, 0xC2, 0x34, 0x6E, 0x8F, 0x3C, 0x52- },- {- 0xE0, 0x72, 0x1E, 0x02, 0x51, 0x7A, 0xED, 0xFA,- 0x4E, 0x7E, 0x9B, 0xA5, 0x03, 0xE0, 0x25, 0xFD,- 0x46, 0xE7, 0x14, 0x56, 0x6D, 0xC8, 0x89, 0xA8,- 0x4C, 0xBF, 0xE5, 0x6A, 0x55, 0xDF, 0xBE, 0x2F,- 0xC4, 0x93, 0x8A, 0xC4, 0x12, 0x05, 0x88, 0x33,- 0x5D, 0xEA, 0xC8, 0xEF, 0x3F, 0xA2, 0x29, 0xAD,- 0xC9, 0x64, 0x7F, 0x54, 0xAD, 0x2E, 0x34, 0x72,- 0x23, 0x4F, 0x9B, 0x34, 0xEF, 0xC4, 0x65, 0x43- },- {- 0xB6, 0x29, 0x26, 0x69, 0xCC, 0xD3, 0x8D, 0x5F,- 0x01, 0xCA, 0xAE, 0x96, 0xBA, 0x27, 0x2C, 0x76,- 0xA8, 0x79, 0xA4, 0x57, 0x43, 0xAF, 0xA0, 0x72,- 0x5D, 0x83, 0xB9, 0xEB, 0xB2, 0x66, 0x65, 0xB7,- 0x31, 0xF1, 0x84, 0x8C, 0x52, 0xF1, 0x19, 0x72,- 0xB6, 0x64, 0x4F, 0x55, 0x4C, 0x06, 0x4F, 0xA9,- 0x07, 0x80, 0xDB, 0xBB, 0xF3, 0xA8, 0x9D, 0x4F,- 0xC3, 0x1F, 0x67, 0xDF, 0x3E, 0x58, 0x57, 0xEF- },- {- 0x23, 0x19, 0xE3, 0x78, 0x9C, 0x47, 0xE2, 0xDA,- 0xA5, 0xFE, 0x80, 0x7F, 0x61, 0xBE, 0xC2, 0xA1,- 0xA6, 0x53, 0x7F, 0xA0, 0x3F, 0x19, 0xFF, 0x32,- 0xE8, 0x7E, 0xEC, 0xBF, 0xD6, 0x4B, 0x7E, 0x0E,- 0x8C, 0xCF, 0xF4, 0x39, 0xAC, 0x33, 0x3B, 0x04,- 0x0F, 0x19, 0xB0, 0xC4, 0xDD, 0xD1, 0x1A, 0x61,- 0xE2, 0x4A, 0xC1, 0xFE, 0x0F, 0x10, 0xA0, 0x39,- 0x80, 0x6C, 0x5D, 0xCC, 0x0D, 0xA3, 0xD1, 0x15- },- {- 0xF5, 0x97, 0x11, 0xD4, 0x4A, 0x03, 0x1D, 0x5F,- 0x97, 0xA9, 0x41, 0x3C, 0x06, 0x5D, 0x1E, 0x61,- 0x4C, 0x41, 0x7E, 0xDE, 0x99, 0x85, 0x90, 0x32,- 0x5F, 0x49, 0xBA, 0xD2, 0xFD, 0x44, 0x4D, 0x3E,- 0x44, 0x18, 0xBE, 0x19, 0xAE, 0xC4, 0xE1, 0x14,- 0x49, 0xAC, 0x1A, 0x57, 0x20, 0x78, 0x98, 0xBC,- 0x57, 0xD7, 0x6A, 0x1B, 0xCF, 0x35, 0x66, 0x29,- 0x2C, 0x20, 0xC6, 0x83, 0xA5, 0xC4, 0x64, 0x8F- },- {- 0xDF, 0x0A, 0x9D, 0x0C, 0x21, 0x28, 0x43, 0xA6,- 0xA9, 0x34, 0xE3, 0x90, 0x2B, 0x2D, 0xD3, 0x0D,- 0x17, 0xFB, 0xA5, 0xF9, 0x69, 0xD2, 0x03, 0x0B,- 0x12, 0xA5, 0x46, 0xD8, 0xA6, 0xA4, 0x5E, 0x80,- 0xCF, 0x56, 0x35, 0xF0, 0x71, 0xF0, 0x45, 0x2E,- 0x9C, 0x91, 0x92, 0x75, 0xDA, 0x99, 0xBE, 0xD5,- 0x1E, 0xB1, 0x17, 0x3C, 0x1A, 0xF0, 0x51, 0x87,- 0x26, 0xB7, 0x5B, 0x0E, 0xC3, 0xBA, 0xE2, 0xB5- },- {- 0xA3, 0xEB, 0x6E, 0x6C, 0x7B, 0xF2, 0xFB, 0x8B,- 0x28, 0xBF, 0xE8, 0xB1, 0x5E, 0x15, 0xBB, 0x50,- 0x0F, 0x78, 0x1E, 0xCC, 0x86, 0xF7, 0x78, 0xC3,- 0xA4, 0xE6, 0x55, 0xFC, 0x58, 0x69, 0xBF, 0x28,- 0x46, 0xA2, 0x45, 0xD4, 0xE3, 0x3B, 0x7B, 0x14,- 0x43, 0x6A, 0x17, 0xE6, 0x3B, 0xE7, 0x9B, 0x36,- 0x65, 0x5C, 0x22, 0x6A, 0x50, 0xFF, 0xBC, 0x71,- 0x24, 0x20, 0x7B, 0x02, 0x02, 0x34, 0x2D, 0xB5- },- {- 0x56, 0xD4, 0xCB, 0xCD, 0x07, 0x05, 0x63, 0x42,- 0x6A, 0x01, 0x70, 0x69, 0x42, 0x5C, 0x2C, 0xD2,- 0xAE, 0x54, 0x06, 0x68, 0x28, 0x7A, 0x5F, 0xB9,- 0xDA, 0xC4, 0x32, 0xEB, 0x8A, 0xB1, 0xA3, 0x53,- 0xA3, 0x0F, 0x2F, 0xE1, 0xF4, 0x0D, 0x83, 0x33,- 0x3A, 0xFE, 0x69, 0x6A, 0x26, 0x77, 0x95, 0x40,- 0x8A, 0x92, 0xFE, 0x7D, 0xA0, 0x7A, 0x0C, 0x18,- 0x14, 0xCF, 0x77, 0xF3, 0x6E, 0x10, 0x5E, 0xE8- },- {- 0xE5, 0x9B, 0x99, 0x87, 0xD4, 0x28, 0xB3, 0xED,- 0xA3, 0x7D, 0x80, 0xAB, 0xDB, 0x16, 0xCD, 0x2B,- 0x0A, 0xEF, 0x67, 0x4C, 0x2B, 0x1D, 0xDA, 0x44,- 0x32, 0xEA, 0x91, 0xEE, 0x6C, 0x93, 0x5C, 0x68,- 0x4B, 0x48, 0xB4, 0x42, 0x8A, 0x8C, 0xC7, 0x40,- 0xE5, 0x79, 0xA3, 0x0D, 0xEF, 0xF3, 0x5A, 0x80,- 0x30, 0x13, 0x82, 0x0D, 0xD2, 0x3F, 0x14, 0xAE,- 0x1D, 0x84, 0x13, 0xB5, 0xC8, 0x67, 0x2A, 0xEC- },- {- 0xCD, 0x9F, 0xCC, 0x99, 0xF9, 0x9D, 0x4C, 0xC1,- 0x6D, 0x03, 0x19, 0x00, 0xB2, 0xA7, 0x36, 0xE1,- 0x50, 0x8D, 0xB4, 0xB5, 0x86, 0x81, 0x4E, 0x63,- 0x45, 0x85, 0x7F, 0x35, 0x4A, 0x70, 0xCC, 0xEC,- 0xB1, 0xDF, 0x3B, 0x50, 0xA1, 0x9A, 0xDA, 0xF4,- 0x3C, 0x27, 0x8E, 0xFA, 0x42, 0x3F, 0xF4, 0xBB,- 0x6C, 0x52, 0x3E, 0xC7, 0xFD, 0x78, 0x59, 0xB9,- 0x7B, 0x16, 0x8A, 0x7E, 0xBF, 0xF8, 0x46, 0x7C- },- {- 0x06, 0x02, 0x18, 0x5D, 0x8C, 0x3A, 0x78, 0x73,- 0x8B, 0x99, 0x16, 0x4B, 0x8B, 0xC6, 0xFF, 0xB2,- 0x1C, 0x7D, 0xEB, 0xEB, 0xBF, 0x80, 0x63, 0x72,- 0xE0, 0xDA, 0x44, 0xD1, 0x21, 0x54, 0x55, 0x97,- 0xB9, 0xC6, 0x62, 0xA2, 0x55, 0xDC, 0x31, 0x54,- 0x2C, 0xF9, 0x95, 0xEC, 0xBE, 0x6A, 0x50, 0xFB,- 0x5E, 0x6E, 0x0E, 0xE4, 0xEF, 0x24, 0x0F, 0xE5,- 0x57, 0xED, 0xED, 0x11, 0x88, 0x08, 0x7E, 0x86- },- {- 0xC0, 0x8A, 0xFA, 0x5B, 0x92, 0x7B, 0xF0, 0x80,- 0x97, 0xAF, 0xC5, 0xFF, 0xF9, 0xCA, 0x4E, 0x78,- 0x00, 0x12, 0x5C, 0x1F, 0x52, 0xF2, 0xAF, 0x35,- 0x53, 0xFA, 0x2B, 0x89, 0xE1, 0xE3, 0x01, 0x5C,- 0x4F, 0x87, 0xD5, 0xE0, 0xA4, 0x89, 0x56, 0xAD,- 0x31, 0x45, 0x0B, 0x08, 0x3D, 0xAD, 0x14, 0x7F,- 0xFB, 0x5E, 0xC0, 0x34, 0x34, 0xA2, 0x68, 0x30,- 0xCF, 0x37, 0xD1, 0x03, 0xAB, 0x50, 0xC5, 0xDA- },- {- 0x36, 0xF1, 0xE1, 0xC1, 0x1D, 0x6E, 0xF6, 0xBC,- 0x3B, 0x53, 0x6D, 0x50, 0x5D, 0x54, 0x4A, 0x87,- 0x15, 0x22, 0xC5, 0xC2, 0xA2, 0x53, 0x06, 0x7E,- 0xC9, 0x93, 0x3B, 0x6E, 0xC2, 0x54, 0x64, 0xDA,- 0xF9, 0x85, 0x52, 0x5F, 0x5B, 0x95, 0x60, 0xA1,- 0x6D, 0x89, 0x02, 0x59, 0xAC, 0x1B, 0xB5, 0xCC,- 0x67, 0xC0, 0xC4, 0x69, 0xCD, 0xE1, 0x33, 0xDE,- 0xF0, 0x00, 0xEA, 0x1D, 0x68, 0x6F, 0x4F, 0x5D- },- {- 0xBF, 0x2A, 0xB2, 0xE2, 0x47, 0x0F, 0x54, 0x38,- 0xC3, 0xB6, 0x89, 0xE6, 0x6E, 0x76, 0x86, 0xFF,- 0xFA, 0x0C, 0xB1, 0xE1, 0x79, 0x8A, 0xD3, 0xA8,- 0x6F, 0xF9, 0x90, 0x75, 0xBF, 0x61, 0x38, 0xE3,- 0x3D, 0x9C, 0x0C, 0xE5, 0x9A, 0xFB, 0x24, 0xAC,- 0x67, 0xA0, 0x2A, 0xF3, 0x44, 0x28, 0x19, 0x1A,- 0x9A, 0x0A, 0x60, 0x41, 0xC0, 0x74, 0x71, 0xB7,- 0xC3, 0xB1, 0xA7, 0x52, 0xD6, 0xFC, 0x0B, 0x8B- },- {- 0xD4, 0x00, 0x60, 0x1F, 0x97, 0x28, 0xCC, 0xC4,- 0xC9, 0x23, 0x42, 0xD9, 0x78, 0x7D, 0x8D, 0x28,- 0xAB, 0x32, 0x3A, 0xF3, 0x75, 0xCA, 0x56, 0x24,- 0xB4, 0xBB, 0x91, 0xD1, 0x72, 0x71, 0xFB, 0xAE,- 0x86, 0x2E, 0x41, 0x3B, 0xE7, 0x3F, 0x1F, 0x68,- 0xE6, 0x15, 0xB8, 0xC5, 0xC3, 0x91, 0xBE, 0x0D,- 0xBD, 0x91, 0x44, 0x74, 0x6E, 0xB3, 0x39, 0xAD,- 0x54, 0x15, 0x47, 0xBA, 0x9C, 0x46, 0x8A, 0x17- },- {- 0x79, 0xFE, 0x2F, 0xE1, 0x57, 0xEB, 0x85, 0xA0,- 0x38, 0xAB, 0xB8, 0xEB, 0xBC, 0x64, 0x77, 0x31,- 0xD2, 0xC8, 0x3F, 0x51, 0xB0, 0xAC, 0x6E, 0xE1,- 0x4A, 0xA2, 0x84, 0xCB, 0x6A, 0x35, 0x49, 0xA4,- 0xDC, 0xCE, 0xB3, 0x00, 0x74, 0x0A, 0x82, 0x5F,- 0x52, 0xF5, 0xFB, 0x30, 0xB0, 0x3B, 0x8C, 0x4D,- 0x8B, 0x0F, 0x4A, 0xA6, 0x7A, 0x63, 0xF4, 0xA9,- 0x4E, 0x33, 0x03, 0xC4, 0xED, 0xA4, 0xC0, 0x2B- },- {- 0x75, 0x35, 0x13, 0x13, 0xB5, 0x2A, 0x85, 0x29,- 0x29, 0x8D, 0x8C, 0x18, 0x6B, 0x17, 0x68, 0x66,- 0x6D, 0xCC, 0xA8, 0x59, 0x53, 0x17, 0xD7, 0xA4,- 0x81, 0x6E, 0xB8, 0x8C, 0x06, 0x20, 0x20, 0xC0,- 0xC8, 0xEF, 0xC5, 0x54, 0xBB, 0x34, 0x1B, 0x64,- 0x68, 0x8D, 0xB5, 0xCC, 0xAF, 0xC3, 0x5F, 0x3C,- 0x3C, 0xD0, 0x9D, 0x65, 0x64, 0xB3, 0x6D, 0x7B,- 0x04, 0xA2, 0x48, 0xE1, 0x46, 0x98, 0x0D, 0x4B- },- {- 0xE3, 0x12, 0x8B, 0x1D, 0x31, 0x1D, 0x02, 0x17,- 0x9D, 0x7F, 0x25, 0xF9, 0x7A, 0x5A, 0x8B, 0xEE,- 0x2C, 0xC8, 0xC8, 0x63, 0x03, 0x64, 0x4F, 0xCD,- 0x66, 0x4E, 0x15, 0x7D, 0x1F, 0xEF, 0x00, 0xF2,- 0x3E, 0x46, 0xF9, 0xA5, 0xE8, 0xE5, 0xC8, 0x90,- 0xCE, 0x56, 0x5B, 0xB6, 0xAB, 0xD4, 0x30, 0x2C,- 0xE0, 0x64, 0x69, 0xD5, 0x2A, 0x5B, 0xD5, 0x3E,- 0x1C, 0x5A, 0x54, 0xD0, 0x46, 0x49, 0xDC, 0x03- },- {- 0xC2, 0x38, 0x2A, 0x72, 0xD2, 0xD3, 0xAC, 0xE9,- 0xD5, 0x93, 0x3D, 0x00, 0xB6, 0x08, 0x27, 0xED,- 0x38, 0x0C, 0xDA, 0x08, 0xD0, 0xBA, 0x5F, 0x6D,- 0xD4, 0x1E, 0x29, 0xEE, 0x6D, 0xBE, 0x8E, 0xCB,- 0x92, 0x35, 0xF0, 0x6B, 0xE9, 0x5D, 0x83, 0xB6,- 0x81, 0x6A, 0x2F, 0xB7, 0xA5, 0xAD, 0x47, 0x03,- 0x5E, 0x8A, 0x4B, 0x69, 0xA4, 0x88, 0x4B, 0x99,- 0xE4, 0xBE, 0xCE, 0x58, 0xCA, 0xB2, 0x5D, 0x44- },- {- 0x6B, 0x1C, 0x69, 0x46, 0x0B, 0xBD, 0x50, 0xAC,- 0x2E, 0xD6, 0xF3, 0x2E, 0x6E, 0x88, 0x7C, 0xFE,- 0xD4, 0x07, 0xD4, 0x7D, 0xCF, 0x0A, 0xAA, 0x60,- 0x38, 0x7F, 0xE3, 0x20, 0xD7, 0x80, 0xBD, 0x03,- 0xEA, 0xB6, 0xD7, 0xBA, 0xEB, 0x2A, 0x07, 0xD1,- 0x0C, 0xD5, 0x52, 0xA3, 0x00, 0x34, 0x13, 0x54,- 0xEA, 0x9A, 0x5F, 0x03, 0x18, 0x3A, 0x62, 0x3F,- 0x92, 0xA2, 0xD4, 0xD9, 0xF0, 0x09, 0x26, 0xAF- },- {- 0x6C, 0xDA, 0x20, 0x6C, 0x80, 0xCD, 0xC9, 0xC4,- 0x4B, 0xA9, 0x90, 0xE0, 0x32, 0x8C, 0x31, 0x4F,- 0x81, 0x9B, 0x14, 0x2D, 0x00, 0x63, 0x04, 0x04,- 0xC4, 0x8C, 0x05, 0xDC, 0x76, 0xD1, 0xB0, 0x0C,- 0xE4, 0xD7, 0x2F, 0xC6, 0xA4, 0x8E, 0x14, 0x69,- 0xDD, 0xEF, 0x60, 0x94, 0x12, 0xC3, 0x64, 0x82,- 0x08, 0x54, 0x21, 0x4B, 0x48, 0x69, 0xAF, 0x09,- 0x0F, 0x00, 0xD3, 0xC1, 0xBA, 0x44, 0x3E, 0x1B- },- {- 0x7F, 0xFC, 0x8C, 0x26, 0xFB, 0xD6, 0xA0, 0xF7,- 0xA6, 0x09, 0xE6, 0xE1, 0x93, 0x9F, 0x6A, 0x9E,- 0xDF, 0x1B, 0x0B, 0x06, 0x66, 0x41, 0xFB, 0x76,- 0xC4, 0xF9, 0x60, 0x2E, 0xD7, 0x48, 0xD1, 0x16,- 0x02, 0x49, 0x6B, 0x35, 0x35, 0x5B, 0x1A, 0xA2,- 0x55, 0x85, 0x0A, 0x50, 0x9D, 0x2F, 0x8E, 0xE1,- 0x8C, 0x8F, 0x3E, 0x1D, 0x7D, 0xCB, 0xC3, 0x7A,- 0x13, 0x65, 0x98, 0xF5, 0x6A, 0x59, 0xED, 0x17- },- {- 0x70, 0xDE, 0x1F, 0x08, 0xDD, 0x4E, 0x09, 0xD5,- 0xFC, 0x15, 0x1F, 0x17, 0xFC, 0x99, 0x1A, 0x23,- 0xAB, 0xFC, 0x05, 0x10, 0x42, 0x90, 0xD5, 0x04,- 0x68, 0x88, 0x2E, 0xFA, 0xF5, 0x82, 0xB6, 0xEC,- 0x2F, 0x14, 0xF5, 0x77, 0xC0, 0xD6, 0x8C, 0x3A,- 0xD0, 0x66, 0x26, 0x91, 0x6E, 0x3C, 0x86, 0xE6,- 0xDA, 0xAB, 0x6C, 0x53, 0xE5, 0x16, 0x3E, 0x82,- 0xB6, 0xBD, 0x0C, 0xE4, 0x9F, 0xC0, 0xD8, 0xDF- },- {- 0x4F, 0x81, 0x93, 0x57, 0x56, 0xED, 0x35, 0xEE,- 0x20, 0x58, 0xEE, 0x0C, 0x6A, 0x61, 0x10, 0xD6,- 0xFA, 0xC5, 0xCB, 0x6A, 0x4F, 0x46, 0xAA, 0x94,- 0x11, 0x60, 0x3F, 0x99, 0x96, 0x58, 0x23, 0xB6,- 0xDA, 0x48, 0x38, 0x27, 0x6C, 0x5C, 0x06, 0xBC,- 0x78, 0x80, 0xE3, 0x76, 0xD9, 0x27, 0x58, 0x36,- 0x9E, 0xE7, 0x30, 0x5B, 0xCE, 0xC8, 0xD3, 0xCF,- 0xD2, 0x8C, 0xCA, 0xBB, 0x7B, 0x4F, 0x05, 0x79- },- {- 0xAB, 0xCB, 0x61, 0xCB, 0x36, 0x83, 0xD1, 0x8F,- 0x27, 0xAD, 0x52, 0x79, 0x08, 0xED, 0x2D, 0x32,- 0xA0, 0x42, 0x6C, 0xB7, 0xBB, 0x4B, 0xF1, 0x80,- 0x61, 0x90, 0x3A, 0x7D, 0xC4, 0x2E, 0x7E, 0x76,- 0xF9, 0x82, 0x38, 0x23, 0x04, 0xD1, 0x8A, 0xF8,- 0xC8, 0x0D, 0x91, 0xDD, 0x58, 0xDD, 0x47, 0xAF,- 0x76, 0xF8, 0xE2, 0xC3, 0x6E, 0x28, 0xAF, 0x24,- 0x76, 0xB4, 0xBC, 0xCF, 0x82, 0xE8, 0x9F, 0xDF- },- {- 0x02, 0xD2, 0x61, 0xAD, 0x56, 0xA5, 0x26, 0x33,- 0x1B, 0x64, 0x3D, 0xD2, 0x18, 0x6D, 0xE9, 0xA8,- 0x2E, 0x72, 0xA5, 0x82, 0x23, 0xCD, 0x1E, 0x72,- 0x36, 0x86, 0xC5, 0x3D, 0x86, 0x9B, 0x83, 0xB9,- 0x46, 0x32, 0xB7, 0xB6, 0x47, 0xAB, 0x2A, 0xFC,- 0x0D, 0x52, 0x2E, 0x29, 0xDA, 0x3A, 0x56, 0x15,- 0xB7, 0x41, 0xD8, 0x28, 0x52, 0xE0, 0xDF, 0x41,- 0xB6, 0x60, 0x07, 0xDB, 0xCB, 0xA9, 0x05, 0x43- },- {- 0xC5, 0x83, 0x27, 0x41, 0xFA, 0x30, 0xC5, 0x43,- 0x68, 0x23, 0x01, 0x53, 0x83, 0xD2, 0x97, 0xFF,- 0x4C, 0x4A, 0x5D, 0x72, 0x76, 0xC3, 0xF9, 0x02,- 0x12, 0x20, 0x66, 0xE0, 0x4B, 0xE5, 0x43, 0x1B,- 0x1A, 0x85, 0xFA, 0xF7, 0x3B, 0x91, 0x84, 0x34,- 0xF9, 0x30, 0x09, 0x63, 0xD1, 0xDE, 0xA9, 0xE8,- 0xAC, 0x39, 0x24, 0xEF, 0x49, 0x02, 0x26, 0xED,- 0xEE, 0xA5, 0xF7, 0x43, 0xE4, 0x10, 0x66, 0x9F- },- {- 0xCF, 0xAE, 0xAB, 0x26, 0x8C, 0xD0, 0x75, 0xA5,- 0xA6, 0xAE, 0xD5, 0x15, 0x02, 0x3A, 0x03, 0x2D,- 0x54, 0xF2, 0xF2, 0xFF, 0x73, 0x3C, 0xE0, 0xCB,- 0xC7, 0x8D, 0xB5, 0x1D, 0xB4, 0x50, 0x4D, 0x67,- 0x59, 0x23, 0xF8, 0x27, 0x46, 0xD6, 0x59, 0x46,- 0x06, 0xAD, 0x5D, 0x67, 0x73, 0x4B, 0x11, 0xA6,- 0x7C, 0xC6, 0xA4, 0x68, 0xC2, 0x03, 0x2E, 0x43,- 0xCA, 0x1A, 0x94, 0xC6, 0x27, 0x3A, 0x98, 0x5E- },- {- 0x86, 0x08, 0x50, 0xF9, 0x2E, 0xB2, 0x68, 0x27,- 0x2B, 0x67, 0xD1, 0x33, 0x60, 0x9B, 0xD6, 0x4E,- 0x34, 0xF6, 0x1B, 0xF0, 0x3F, 0x4C, 0x17, 0x38,- 0x64, 0x5C, 0x17, 0xFE, 0xC8, 0x18, 0x46, 0x5D,- 0x7E, 0xCD, 0x2B, 0xE2, 0x90, 0x76, 0x41, 0x13,- 0x00, 0x25, 0xFD, 0xA7, 0x94, 0x70, 0xAB, 0x73,- 0x16, 0x46, 0xE7, 0xF6, 0x94, 0x40, 0xE8, 0x36,- 0x7E, 0xA7, 0x6A, 0xC4, 0xCE, 0xE8, 0xA1, 0xDF- },- {- 0x84, 0xB1, 0x54, 0xED, 0x29, 0xBB, 0xED, 0xEF,- 0xA6, 0x48, 0x28, 0x68, 0x39, 0x04, 0x6F, 0x4B,- 0x5A, 0xA3, 0x44, 0x30, 0xE2, 0xD6, 0x7F, 0x74,- 0x96, 0xE4, 0xC3, 0x9F, 0x2C, 0x7E, 0xA7, 0x89,- 0x95, 0xF6, 0x9E, 0x12, 0x92, 0x20, 0x00, 0x16,- 0xF1, 0x6A, 0xC3, 0xB3, 0x77, 0x00, 0xE6, 0xC7,- 0xE7, 0x86, 0x1A, 0xFC, 0x39, 0x6B, 0x64, 0xA5,- 0x9A, 0x1D, 0xBF, 0x47, 0xA5, 0x5C, 0x4B, 0xBC- },- {- 0xAE, 0xEE, 0xC2, 0x60, 0xA5, 0xD8, 0xEF, 0xF5,- 0xCC, 0xAB, 0x8B, 0x95, 0xDA, 0x43, 0x5A, 0x63,- 0xED, 0x7A, 0x21, 0xEA, 0x7F, 0xC7, 0x55, 0x94,- 0x13, 0xFD, 0x61, 0x7E, 0x33, 0x60, 0x9F, 0x8C,- 0x29, 0x0E, 0x64, 0xBB, 0xAC, 0xC5, 0x28, 0xF6,- 0xC0, 0x80, 0x26, 0x22, 0x88, 0xB0, 0xF0, 0xA3,- 0x21, 0x9B, 0xE2, 0x23, 0xC9, 0x91, 0xBE, 0xE9,- 0x2E, 0x72, 0x34, 0x95, 0x93, 0xE6, 0x76, 0x38- },- {- 0x8A, 0xD7, 0x8A, 0x9F, 0x26, 0x60, 0x1D, 0x12,- 0x7E, 0x8D, 0x2F, 0x2F, 0x97, 0x6E, 0x63, 0xD1,- 0x9A, 0x05, 0x4A, 0x17, 0xDC, 0xF5, 0x9E, 0x0F,- 0x01, 0x3A, 0xB5, 0x4A, 0x68, 0x87, 0xBB, 0xDF,- 0xFD, 0xE7, 0xAA, 0xAE, 0x11, 0x7E, 0x0F, 0xBF,- 0x32, 0x71, 0x01, 0x65, 0x95, 0xB9, 0xD9, 0xC7,- 0x12, 0xC0, 0x1B, 0x2C, 0x53, 0xE9, 0x65, 0x5A,- 0x38, 0x2B, 0xC4, 0x52, 0x2E, 0x61, 0x66, 0x45- },- {- 0x89, 0x34, 0x15, 0x9D, 0xAD, 0xE1, 0xAC, 0x74,- 0x14, 0x7D, 0xFA, 0x28, 0x2C, 0x75, 0x95, 0x4F,- 0xCE, 0xF4, 0x43, 0xEF, 0x25, 0xF8, 0x0D, 0xFE,- 0x9F, 0xB6, 0xEA, 0x63, 0x3B, 0x85, 0x45, 0x11,- 0x1D, 0x08, 0xB3, 0x4E, 0xF4, 0x3F, 0xFF, 0x17,- 0x02, 0x6C, 0x79, 0x64, 0xF5, 0xDE, 0xAC, 0x6D,- 0x2B, 0x3C, 0x29, 0xDA, 0xCF, 0x27, 0x47, 0xF0,- 0x22, 0xDF, 0x59, 0x67, 0xDF, 0xDC, 0x1A, 0x0A- },- {- 0xCD, 0x36, 0xDD, 0x0B, 0x24, 0x06, 0x14, 0xCF,- 0x2F, 0xA2, 0xB9, 0xE9, 0x59, 0x67, 0x9D, 0xCD,- 0xD7, 0x2E, 0xC0, 0xCD, 0x58, 0xA4, 0x3D, 0xA3,- 0x79, 0x0A, 0x92, 0xF6, 0xCD, 0xEB, 0x9E, 0x1E,- 0x79, 0x5E, 0x47, 0x8A, 0x0A, 0x47, 0xD3, 0x71,- 0x10, 0x0D, 0x34, 0x0C, 0x5C, 0xED, 0xCD, 0xBB,- 0xC9, 0xE6, 0x8B, 0x3F, 0x46, 0x08, 0x18, 0xE5,- 0xBD, 0xFF, 0x7B, 0x4C, 0xDA, 0x4C, 0x27, 0x44- },- {- 0x00, 0xDF, 0x4E, 0x09, 0x9B, 0x80, 0x71, 0x37,- 0xA8, 0x59, 0x90, 0xF4, 0x9D, 0x3A, 0x94, 0x31,- 0x5E, 0x5A, 0x5F, 0x7F, 0x7A, 0x60, 0x76, 0xB3,- 0x03, 0xE9, 0x6B, 0x05, 0x6F, 0xB9, 0x38, 0x00,- 0x11, 0x1F, 0x47, 0x96, 0x28, 0xE2, 0xF8, 0xDB,- 0x59, 0xAE, 0xB6, 0xAC, 0x70, 0xC3, 0xB6, 0x1F,- 0x51, 0xF9, 0xB4, 0x6E, 0x80, 0xFF, 0xDE, 0xAE,- 0x25, 0xEB, 0xDD, 0xB4, 0xAF, 0x6C, 0xB4, 0xEE- },- {- 0x2B, 0x9C, 0x95, 0x5E, 0x6C, 0xAE, 0xD4, 0xB7,- 0xC9, 0xE2, 0x46, 0xB8, 0x6F, 0x9A, 0x17, 0x26,- 0xE8, 0x10, 0xC5, 0x9D, 0x12, 0x6C, 0xEE, 0x66,- 0xED, 0x71, 0xBF, 0x01, 0x5B, 0x83, 0x55, 0x8A,- 0x4B, 0x6D, 0x84, 0xD1, 0x8D, 0xC3, 0xFF, 0x46,- 0x20, 0xC2, 0xFF, 0xB7, 0x22, 0x35, 0x9F, 0xDE,- 0xF8, 0x5B, 0xA0, 0xD4, 0xE2, 0xD2, 0x2E, 0xCB,- 0xE0, 0xED, 0x78, 0x4F, 0x99, 0xAF, 0xE5, 0x87- },- {- 0x18, 0x1D, 0xF0, 0xA2, 0x61, 0xA2, 0xF7, 0xD2,- 0x9E, 0xA5, 0xA1, 0x57, 0x72, 0x71, 0x51, 0x05,- 0xD4, 0x50, 0xA4, 0xB6, 0xC2, 0x36, 0xF6, 0x99,- 0xF4, 0x62, 0xD6, 0x0C, 0xA7, 0x64, 0x87, 0xFE,- 0xED, 0xFC, 0x9F, 0x5E, 0xB9, 0x2D, 0xF8, 0x38,- 0xE8, 0xFB, 0x5D, 0xC3, 0x69, 0x4E, 0x84, 0xC5,- 0xE0, 0xF4, 0xA1, 0x0B, 0x76, 0x1F, 0x50, 0x67,- 0x62, 0xBE, 0x05, 0x2C, 0x74, 0x5A, 0x6E, 0xE8- },- {- 0x21, 0xFB, 0x20, 0x34, 0x58, 0xBF, 0x3A, 0x7E,- 0x9A, 0x80, 0x43, 0x9F, 0x9A, 0x90, 0x28, 0x99,- 0xCD, 0x5D, 0xE0, 0x13, 0x9D, 0xFD, 0x56, 0xF7,- 0x11, 0x0C, 0x9D, 0xEC, 0x84, 0x37, 0xB2, 0x6B,- 0xDA, 0x63, 0xDE, 0x2F, 0x56, 0x59, 0x26, 0xD8,- 0x5E, 0xDB, 0x1D, 0x6C, 0x68, 0x25, 0x66, 0x97,- 0x43, 0xDD, 0x99, 0x92, 0x65, 0x3D, 0x13, 0x97,- 0x95, 0x44, 0xD5, 0xDC, 0x82, 0x28, 0xBF, 0xAA- },- {- 0xEF, 0x02, 0x1F, 0x29, 0xC5, 0xFF, 0xB8, 0x30,- 0xE6, 0x4B, 0x9A, 0xA9, 0x05, 0x8D, 0xD6, 0x60,- 0xFD, 0x2F, 0xCB, 0x81, 0xC4, 0x97, 0xA7, 0xE6,- 0x98, 0xBC, 0xFB, 0xF5, 0x9D, 0xE5, 0xAD, 0x4A,- 0x86, 0xFF, 0x93, 0xC1, 0x0A, 0x4B, 0x9D, 0x1A,- 0xE5, 0x77, 0x47, 0x25, 0xF9, 0x07, 0x2D, 0xCD,- 0xE9, 0xE1, 0xF1, 0x99, 0xBA, 0xB9, 0x1F, 0x8B,- 0xFF, 0x92, 0x18, 0x64, 0xAA, 0x50, 0x2E, 0xEE- },- {- 0xB3, 0xCF, 0xDA, 0x40, 0x52, 0x6B, 0x7F, 0x1D,- 0x37, 0x56, 0x9B, 0xDF, 0xCD, 0xF9, 0x11, 0xE5,- 0xA6, 0xEF, 0xE6, 0xB2, 0xEC, 0x90, 0xA0, 0x45,- 0x4C, 0x47, 0xB2, 0xC0, 0x46, 0xBF, 0x13, 0x0F,- 0xC3, 0xB3, 0x52, 0xB3, 0x4D, 0xF4, 0x81, 0x3D,- 0x48, 0xD3, 0x3A, 0xB8, 0xE2, 0x69, 0xB6, 0x9B,- 0x07, 0x56, 0x76, 0xCB, 0x6D, 0x00, 0xA8, 0xDC,- 0xF9, 0xE1, 0xF9, 0x67, 0xEC, 0x19, 0x1B, 0x2C- },- {- 0xB4, 0xC6, 0xC3, 0xB2, 0x67, 0x07, 0x1E, 0xEF,- 0xB9, 0xC8, 0xC7, 0x2E, 0x0E, 0x2B, 0x94, 0x12,- 0x93, 0x64, 0x1F, 0x86, 0x73, 0xCB, 0x70, 0xC1,- 0xCC, 0x26, 0xAD, 0x1E, 0x73, 0xCF, 0x14, 0x17,- 0x55, 0x86, 0x0A, 0xD1, 0x9B, 0x34, 0xC2, 0xF3,- 0x4E, 0xD3, 0x5B, 0xB5, 0x2E, 0xC4, 0x50, 0x7C,- 0xC1, 0xFE, 0x59, 0x04, 0x77, 0x43, 0xA5, 0xF0,- 0xC6, 0xFE, 0xBD, 0xE6, 0x25, 0xE2, 0x60, 0x91- },- {- 0x57, 0xA3, 0x4F, 0x2B, 0xCC, 0xA6, 0x0D, 0x4B,- 0x85, 0x10, 0x3B, 0x83, 0x0C, 0x9D, 0x79, 0x52,- 0xA4, 0x16, 0xBE, 0x52, 0x63, 0xAE, 0x42, 0x9C,- 0x9E, 0x5E, 0x53, 0xFE, 0x85, 0x90, 0xA8, 0xF7,- 0x8E, 0xC6, 0x5A, 0x51, 0x10, 0x9E, 0xA8, 0x5D,- 0xCD, 0xF7, 0xB6, 0x22, 0x3F, 0x9F, 0x2B, 0x34,- 0x05, 0x39, 0xFA, 0xD8, 0x19, 0x23, 0xDB, 0xF8,- 0xED, 0xAB, 0xF9, 0x51, 0x29, 0xE4, 0xDF, 0xF6- },- {- 0x9C, 0xF4, 0x66, 0x62, 0xFC, 0xD6, 0x1A, 0x23,- 0x22, 0x77, 0xB6, 0x85, 0x66, 0x3B, 0x8B, 0x5D,- 0xA8, 0x32, 0xDF, 0xD9, 0xA3, 0xB8, 0xCC, 0xFE,- 0xEC, 0x99, 0x3E, 0xC6, 0xAC, 0x41, 0x5A, 0xD0,- 0x7E, 0x04, 0x8A, 0xDF, 0xE4, 0x14, 0xDF, 0x27,- 0x27, 0x70, 0xDB, 0xA8, 0x67, 0xDA, 0x5C, 0x12,- 0x24, 0xC6, 0xFD, 0x0A, 0xA0, 0xC2, 0x18, 0x7D,- 0x42, 0x6A, 0xC6, 0x47, 0xE9, 0x88, 0x73, 0x61- },- {- 0x5C, 0xE1, 0x04, 0x2A, 0xB4, 0xD5, 0x42, 0xC2,- 0xF9, 0xEE, 0x9D, 0x17, 0x26, 0x2A, 0xF8, 0x16,- 0x40, 0x98, 0x93, 0x5B, 0xEF, 0x17, 0x3D, 0x0E,- 0x18, 0x48, 0x9B, 0x04, 0x84, 0x17, 0x46, 0xCD,- 0x2F, 0x2D, 0xF8, 0x66, 0xBD, 0x7D, 0xA6, 0xE5,- 0xEF, 0x90, 0x24, 0xC6, 0x48, 0x02, 0x3E, 0xC7,- 0x23, 0xAB, 0x9C, 0x62, 0xFD, 0x80, 0x28, 0x57,- 0x39, 0xD8, 0x4F, 0x15, 0xD2, 0xAB, 0x51, 0x5A- },- {- 0x84, 0x88, 0x39, 0x6B, 0xD4, 0xA8, 0x72, 0x9B,- 0x7A, 0x47, 0x31, 0x78, 0xF2, 0x32, 0xDA, 0xDF,- 0x3F, 0x0F, 0x8E, 0x22, 0x67, 0x8B, 0xA5, 0xA4,- 0x3E, 0x04, 0x1E, 0x72, 0xDA, 0x1E, 0x2C, 0xF8,- 0x21, 0x94, 0xC3, 0x07, 0x20, 0x7A, 0x54, 0xCB,- 0x81, 0x56, 0x29, 0x33, 0x39, 0xEA, 0xEC, 0x69,- 0x3F, 0xF6, 0x6B, 0xFC, 0xD5, 0xEF, 0xC6, 0x5E,- 0x95, 0xE4, 0xEC, 0xAF, 0x54, 0x53, 0x0A, 0xBD- },- {- 0xF5, 0x98, 0xDA, 0x90, 0x1C, 0x38, 0x35, 0xBC,- 0xA5, 0x60, 0x77, 0x90, 0x37, 0xDF, 0xDE, 0x9F,- 0x0C, 0x51, 0xDC, 0x61, 0xC0, 0xB7, 0x60, 0xFC,- 0x15, 0x22, 0xD7, 0xB4, 0x70, 0xEE, 0x63, 0xF5,- 0xBD, 0xC6, 0x49, 0x84, 0x76, 0xE8, 0x60, 0x49,- 0xAD, 0x86, 0xE4, 0xE2, 0x1A, 0xF2, 0x85, 0x4A,- 0x98, 0x4C, 0xC9, 0x05, 0x42, 0x7D, 0x2F, 0x17,- 0xF6, 0x6B, 0x1F, 0x41, 0xC3, 0xDA, 0x6F, 0x61- },- {- 0x5F, 0x93, 0x26, 0x97, 0x98, 0xCF, 0x02, 0x13,- 0x21, 0x07, 0x33, 0x76, 0x60, 0xA8, 0xD7, 0xA1,- 0x77, 0x35, 0x4C, 0x02, 0x12, 0xEB, 0x93, 0xE5,- 0x55, 0xE7, 0xC3, 0x7A, 0x08, 0xAE, 0xF3, 0xD8,- 0xDC, 0xE0, 0x12, 0x17, 0x01, 0x1C, 0xD9, 0x65,- 0xC0, 0x4D, 0xD2, 0xC1, 0x05, 0xF2, 0xE2, 0xB6,- 0xCA, 0xE5, 0xE4, 0xE6, 0xBC, 0xAF, 0x09, 0xDF,- 0xBE, 0xE3, 0xE0, 0xA6, 0xA6, 0x35, 0x7C, 0x37- },- {- 0x0E, 0xCF, 0x58, 0x1D, 0x47, 0xBA, 0xC9, 0x23,- 0x09, 0x86, 0xFA, 0xAB, 0xD7, 0x0C, 0x2F, 0x5B,- 0x80, 0xE9, 0x10, 0x66, 0xF0, 0xEC, 0x55, 0xA8,- 0x42, 0x93, 0x78, 0x82, 0x28, 0x6D, 0x2C, 0xA0,- 0x07, 0xBB, 0x4E, 0x97, 0x3B, 0x0B, 0x09, 0x1D,- 0x52, 0x16, 0x7F, 0xF7, 0xC4, 0x00, 0x9C, 0x7A,- 0xB4, 0xAD, 0x38, 0xFF, 0xF1, 0xDC, 0xEA, 0xCD,- 0xB7, 0xBE, 0x81, 0xEF, 0x4A, 0x45, 0x29, 0x52- },- {- 0x5A, 0xEC, 0xA8, 0xAB, 0xE1, 0x52, 0x85, 0x82,- 0xB2, 0xA3, 0x07, 0xB4, 0x00, 0x95, 0x85, 0x49,- 0x8A, 0x3D, 0x46, 0x7C, 0xA6, 0x10, 0x1C, 0xB0,- 0xC5, 0x12, 0x6F, 0x99, 0x76, 0x05, 0x6E, 0x9F,- 0xFC, 0x12, 0x3C, 0xC2, 0x0C, 0x30, 0x2B, 0x2A,- 0x73, 0x7F, 0x49, 0x2C, 0x75, 0xD2, 0x1F, 0x01,- 0x51, 0x2C, 0x90, 0xCA, 0x05, 0x41, 0xDF, 0xA5,- 0x6E, 0x95, 0x0A, 0x32, 0x1D, 0xCB, 0x28, 0xD8- },- {- 0x73, 0x2F, 0xBF, 0x8F, 0x1C, 0xB2, 0xB8, 0x32,- 0x92, 0x63, 0xED, 0xE2, 0x78, 0x58, 0xFE, 0x46,- 0xF8, 0xD3, 0x35, 0x4D, 0x37, 0x6B, 0xCD, 0xA0,- 0x54, 0x8E, 0x7C, 0xE1, 0xFA, 0x9D, 0xD1, 0x1F,- 0x85, 0xEB, 0x66, 0x1F, 0xE9, 0x50, 0xB5, 0x43,- 0xAA, 0x63, 0x5C, 0xA4, 0xD3, 0xF0, 0x4E, 0xDE,- 0x5B, 0x32, 0xD6, 0xB6, 0x56, 0xE5, 0xCE, 0x1C,- 0x44, 0xD3, 0x5C, 0x4A, 0x6C, 0x56, 0xCF, 0xF8- },- {- 0xD5, 0xE9, 0x38, 0x73, 0x5D, 0x63, 0x78, 0x8C,- 0x80, 0x10, 0x0A, 0xEF, 0xD1, 0x86, 0x48, 0xD1,- 0x8C, 0xF2, 0x72, 0xF6, 0x9F, 0x20, 0xFF, 0x24,- 0xCF, 0xE2, 0x89, 0x5C, 0x08, 0x8A, 0xD0, 0x8B,- 0x01, 0x04, 0xDA, 0x16, 0x72, 0xA4, 0xEB, 0x26,- 0xFC, 0x52, 0x54, 0x5C, 0xC7, 0xD7, 0xA0, 0x1B,- 0x26, 0x6C, 0xF5, 0x46, 0xC4, 0x03, 0xC4, 0x5B,- 0xD1, 0x29, 0xEB, 0x41, 0xBD, 0xD9, 0x20, 0x0B- },- {- 0x65, 0xA2, 0x45, 0xB4, 0x93, 0x52, 0xEE, 0x29,- 0x7D, 0x91, 0xAF, 0x8C, 0x8B, 0xE0, 0x05, 0x28,- 0xAC, 0x6E, 0x04, 0x6D, 0xD8, 0x3A, 0xC7, 0xBD,- 0x46, 0x5A, 0x98, 0x81, 0x6D, 0xD6, 0x8F, 0x3E,- 0x00, 0xE1, 0xAE, 0x8F, 0x89, 0x53, 0x27, 0xA7,- 0xE9, 0xA8, 0xC9, 0x32, 0x65, 0x98, 0x37, 0x9A,- 0x29, 0xC9, 0xFC, 0x91, 0xEC, 0x0C, 0x6E, 0xEF,- 0x08, 0xF3, 0xE2, 0xB2, 0x16, 0xC1, 0x10, 0x08- },- {- 0xC9, 0x56, 0x54, 0xB6, 0x30, 0x19, 0x13, 0x0A,- 0xB4, 0x5D, 0xD0, 0xFB, 0x49, 0x41, 0xB9, 0x8A,- 0xEB, 0x3A, 0xF2, 0xA1, 0x23, 0x91, 0x3E, 0xCA,- 0x2C, 0xE9, 0x9B, 0x3E, 0x97, 0x41, 0x0A, 0x7B,- 0xF8, 0x66, 0x1C, 0xC7, 0xFB, 0xAA, 0x2B, 0xC1,- 0xCF, 0x2B, 0x13, 0x11, 0x3B, 0x1E, 0xD4, 0x0A,- 0x01, 0x18, 0xB8, 0x8E, 0x5F, 0xFF, 0xC3, 0x54,- 0x27, 0x59, 0xEA, 0x00, 0x7E, 0xD4, 0xC5, 0x8D- },- {- 0x1E, 0xB2, 0x62, 0xF3, 0x8F, 0xA4, 0x94, 0x43,- 0x1F, 0x01, 0x7D, 0xAD, 0x44, 0xC0, 0xDF, 0xB6,- 0x93, 0x24, 0xAC, 0x03, 0x2F, 0x04, 0xB6, 0x57,- 0xFC, 0x91, 0xA8, 0x86, 0x47, 0xBB, 0x74, 0x76,- 0x0F, 0x24, 0xE7, 0xC9, 0x56, 0x51, 0x4F, 0x0C,- 0xF0, 0x02, 0x99, 0x0B, 0x18, 0x2C, 0x16, 0x42,- 0xB9, 0xB2, 0x42, 0x6E, 0x96, 0xA6, 0x11, 0x87,- 0xE4, 0xE0, 0x12, 0xF0, 0x0E, 0x21, 0x7D, 0x84- },- {- 0x3B, 0x95, 0x5A, 0xEE, 0xBF, 0xA5, 0x15, 0x1A,- 0xC1, 0xAB, 0x8E, 0x3F, 0x5C, 0xC1, 0xE3, 0x76,- 0x70, 0x84, 0xC8, 0x42, 0xA5, 0x75, 0xD3, 0x62,- 0x69, 0x83, 0x6E, 0x97, 0x35, 0x3D, 0x41, 0x62,- 0x2B, 0x73, 0x1D, 0xDD, 0xCD, 0x5F, 0x26, 0x95,- 0x50, 0xA3, 0xA5, 0xB8, 0x7B, 0xE1, 0xE9, 0x03,- 0x26, 0x34, 0x0B, 0x6E, 0x0E, 0x62, 0x55, 0x58,- 0x15, 0xD9, 0x60, 0x05, 0x97, 0xAC, 0x6E, 0xF9- },- {- 0x68, 0x28, 0x9F, 0x66, 0x05, 0x47, 0x3B, 0xA0,- 0xE4, 0xF2, 0x41, 0xBA, 0xF7, 0x47, 0x7A, 0x98,- 0x85, 0x42, 0x6A, 0x85, 0x8F, 0x19, 0xEF, 0x2A,- 0x18, 0xB0, 0xD4, 0x0E, 0xF8, 0xE4, 0x12, 0x82,- 0xED, 0x55, 0x26, 0xB5, 0x19, 0x79, 0x9E, 0x27,- 0x0F, 0x13, 0x88, 0x13, 0x27, 0x91, 0x82, 0x78,- 0x75, 0x57, 0x11, 0x07, 0x1D, 0x85, 0x11, 0xFE,- 0x96, 0x3E, 0x3B, 0x56, 0x06, 0xAA, 0x37, 0x16- },- {- 0x80, 0xA3, 0x37, 0x87, 0x54, 0x26, 0x12, 0xC3,- 0x8F, 0x6B, 0xCD, 0x7C, 0xD8, 0x6C, 0xAB, 0x46,- 0x02, 0x27, 0x50, 0x9B, 0x1C, 0xBA, 0xD5, 0xEC,- 0x40, 0x8A, 0x91, 0x41, 0x3D, 0x51, 0x15, 0x5A,- 0x04, 0x76, 0xDA, 0xDB, 0xF3, 0xA2, 0x51, 0x8E,- 0x4A, 0x6E, 0x77, 0xCC, 0x34, 0x66, 0x22, 0xE3,- 0x47, 0xA4, 0x69, 0xBF, 0x8B, 0xAA, 0x5F, 0x04,- 0xEB, 0x2D, 0x98, 0x70, 0x53, 0x55, 0xD0, 0x63- },- {- 0x34, 0x62, 0x9B, 0xC6, 0xD8, 0x31, 0x39, 0x1C,- 0x4C, 0xDF, 0x8A, 0xF1, 0xB4, 0xB7, 0xB6, 0xB8,- 0xE8, 0xEE, 0x17, 0xCF, 0x98, 0xC7, 0x0E, 0x5D,- 0xD5, 0x86, 0xCD, 0x99, 0xF1, 0x4B, 0x11, 0xDF,- 0x94, 0x51, 0x66, 0x23, 0x6A, 0x95, 0x71, 0xE6,- 0xD5, 0x91, 0xBB, 0x83, 0xEE, 0x4D, 0x16, 0x4D,- 0x46, 0xF6, 0xB9, 0xD8, 0xEF, 0x86, 0xFF, 0x86,- 0x5A, 0x81, 0xBF, 0xB9, 0x1B, 0x00, 0x42, 0x4B- },- {- 0x8B, 0x7C, 0xC3, 0x39, 0x16, 0x38, 0x63, 0xBB,- 0x43, 0x83, 0xE5, 0x42, 0xB0, 0xEF, 0x0E, 0x7C,- 0xF3, 0x6B, 0x84, 0xAD, 0x93, 0x2C, 0xDF, 0x5A,- 0x80, 0x41, 0x9E, 0xC9, 0xAD, 0x69, 0x2E, 0x7A,- 0x7E, 0x78, 0x4D, 0x2C, 0x7C, 0xB3, 0x79, 0x6A,- 0x18, 0xB8, 0xF8, 0x00, 0x03, 0x5F, 0x3A, 0xA0,- 0x6C, 0x82, 0x41, 0x00, 0x61, 0x11, 0x20, 0xA7,- 0xBD, 0xEB, 0x35, 0x61, 0x8C, 0xCB, 0x81, 0xB7- },- {- 0x4F, 0x08, 0x4E, 0x49, 0x39, 0xDD, 0x5A, 0x7F,- 0x5A, 0x65, 0x8F, 0xAD, 0x58, 0xA1, 0x8A, 0x15,- 0xC2, 0x5C, 0x32, 0xEC, 0x1C, 0x7F, 0xD5, 0xC5,- 0xC6, 0xC3, 0xE8, 0x92, 0xB3, 0x97, 0x1A, 0xEA,- 0xAC, 0x30, 0x83, 0x04, 0xEF, 0x17, 0xB1, 0xC4,- 0x72, 0x39, 0xEA, 0x4B, 0xB3, 0x98, 0xB3, 0xFD,- 0x6D, 0x45, 0x28, 0xD8, 0xDE, 0x8E, 0x76, 0x8A,- 0xE0, 0xF1, 0xA5, 0xA5, 0xC6, 0xB5, 0xC2, 0x97- },- {- 0x48, 0xF4, 0x07, 0xA1, 0xAF, 0x5B, 0x80, 0x09,- 0xB2, 0x05, 0x17, 0x42, 0xE8, 0xCF, 0x5C, 0xD5,- 0x65, 0x66, 0x69, 0xE7, 0xD7, 0x22, 0xEE, 0x8E,- 0x7B, 0xD2, 0x02, 0x06, 0x08, 0x49, 0x44, 0x21,- 0x68, 0xD8, 0xFA, 0xCC, 0x11, 0x7C, 0x01, 0x2B,- 0xFB, 0x7B, 0xF4, 0x49, 0xD9, 0x9B, 0xEF, 0xFF,- 0x6A, 0x34, 0xAE, 0xA2, 0x03, 0xF1, 0xD8, 0xD3,- 0x52, 0x72, 0x2B, 0xE5, 0x01, 0x4E, 0xC8, 0x18- },- {- 0xA6, 0xAA, 0x82, 0xCD, 0x1E, 0x42, 0x6F, 0x9A,- 0x73, 0xBF, 0xA3, 0x9A, 0x29, 0x03, 0x78, 0x76,- 0x11, 0x46, 0x55, 0xB8, 0xC2, 0x2D, 0x6D, 0x3F,- 0xF8, 0xB6, 0x38, 0xAE, 0x7D, 0xEA, 0x6B, 0x17,- 0x84, 0x3E, 0x09, 0xE5, 0x2E, 0xB6, 0x6F, 0xA1,- 0xE4, 0x75, 0xE4, 0xA8, 0xA3, 0xDE, 0x42, 0x9B,- 0x7D, 0x0F, 0x4A, 0x77, 0x6F, 0xCB, 0x8B, 0xDC,- 0x9B, 0x9F, 0xED, 0xE7, 0xD5, 0x2E, 0x81, 0x5F- },- {- 0x58, 0x17, 0x02, 0x7D, 0x6B, 0xDD, 0x00, 0xC5,- 0xDD, 0x10, 0xAC, 0x59, 0x3C, 0xD5, 0x60, 0x37,- 0x22, 0x70, 0x77, 0x5A, 0x18, 0x52, 0x6D, 0x7E,- 0x6F, 0x13, 0x87, 0x2A, 0x2E, 0x20, 0xEA, 0xB6,- 0x64, 0x62, 0x5B, 0xE7, 0x16, 0x8A, 0xC4, 0xBD,- 0x7C, 0x9E, 0x0C, 0xE7, 0xFC, 0x40, 0x99, 0xE0,- 0xF4, 0x84, 0x42, 0xE2, 0xC7, 0x67, 0x19, 0x1C,- 0x6E, 0x12, 0x84, 0xE9, 0xB2, 0xCC, 0xEA, 0x8C- },- {- 0x08, 0xE4, 0x10, 0x28, 0x34, 0x0A, 0x45, 0xC7,- 0x4E, 0x40, 0x52, 0xB3, 0xA8, 0xD6, 0x38, 0x9E,- 0x22, 0xE0, 0x43, 0xA1, 0xAD, 0xAB, 0x5E, 0x28,- 0xD9, 0x76, 0x19, 0x45, 0x0D, 0x72, 0x34, 0x69,- 0xB6, 0x20, 0xCA, 0xA5, 0x19, 0xB8, 0x1C, 0x14,- 0x52, 0x38, 0x54, 0xF6, 0x19, 0xFD, 0x30, 0x27,- 0xE3, 0x84, 0x7B, 0xD0, 0x32, 0x76, 0xE6, 0x06,- 0x04, 0xA8, 0x0D, 0xDB, 0x4D, 0xE8, 0x76, 0xD6- },- {- 0x13, 0x0B, 0x84, 0x20, 0x53, 0x7E, 0xB0, 0x7D,- 0x72, 0xAB, 0xDA, 0x07, 0xC8, 0x5A, 0xCB, 0xD8,- 0xB9, 0xA4, 0x4F, 0x16, 0x32, 0x1D, 0xD0, 0x42,- 0x21, 0x45, 0xF8, 0x09, 0x67, 0x3D, 0x30, 0xF2,- 0xB5, 0x32, 0x13, 0x26, 0xE2, 0xBF, 0xF3, 0x17,- 0xEF, 0x3F, 0xEF, 0x98, 0x3C, 0x51, 0xC4, 0xF8,- 0xAB, 0x24, 0xA3, 0x25, 0xD2, 0x98, 0xE3, 0x4A,- 0xFC, 0xE5, 0x69, 0xA8, 0x25, 0x55, 0x77, 0x4C- },- {- 0xAC, 0x49, 0xB8, 0x44, 0xAF, 0xAA, 0x01, 0x2E,- 0x31, 0xC4, 0x74, 0xCA, 0x26, 0x36, 0x48, 0x84,- 0x4F, 0xD2, 0xF6, 0x30, 0x79, 0x92, 0xC2, 0xF7,- 0x52, 0xAC, 0xA0, 0x2C, 0x38, 0x28, 0x96, 0x51,- 0x75, 0x79, 0x4D, 0xEE, 0xE2, 0xD2, 0xEE, 0x95,- 0xC6, 0x1C, 0xD2, 0x84, 0xF6, 0xB5, 0xA2, 0xD7,- 0x5E, 0x2E, 0xF2, 0xB2, 0x9E, 0xE8, 0x14, 0x9E,- 0x77, 0xFB, 0x81, 0x44, 0x7B, 0x2F, 0xD0, 0x4B- },- {- 0xB9, 0xD7, 0xCA, 0x81, 0xCC, 0x60, 0xBB, 0x95,- 0x78, 0xE4, 0x40, 0x24, 0xE5, 0xA0, 0xA0, 0xBE,- 0x80, 0xF2, 0x73, 0x36, 0xA6, 0xA9, 0xF4, 0xE5,- 0x3D, 0xF3, 0x99, 0x9C, 0xB1, 0x91, 0x28, 0x0B,- 0x09, 0x0E, 0x2A, 0xC2, 0xD2, 0x9C, 0x5B, 0xAA,- 0xD9, 0xD7, 0x14, 0x15, 0xBD, 0xC1, 0x29, 0xE6,- 0x9A, 0xA2, 0x66, 0x7A, 0xF6, 0xA7, 0xFD, 0x5E,- 0x18, 0x9F, 0xCC, 0xDC, 0xEE, 0x81, 0x73, 0x40- },- {- 0xA7, 0x55, 0xE1, 0x13, 0x38, 0x65, 0x72, 0xC7,- 0x5C, 0xED, 0x61, 0xD7, 0x19, 0x70, 0x60, 0x70,- 0xB9, 0x14, 0x60, 0x48, 0xE4, 0x2A, 0x9F, 0x8C,- 0xD3, 0x56, 0x67, 0xA0, 0x88, 0xB4, 0x2F, 0x08,- 0x80, 0x8A, 0xBD, 0xF7, 0x7E, 0x61, 0x8A, 0xBD,- 0x95, 0x9A, 0xFC, 0x75, 0x73, 0x79, 0xCA, 0x2C,- 0x00, 0xBC, 0xC1, 0xA4, 0x83, 0x90, 0xFA, 0x2B,- 0xFF, 0x61, 0x8B, 0x1E, 0x00, 0x78, 0xA6, 0x13- },- {- 0xA7, 0x3C, 0x7D, 0xEB, 0xED, 0x32, 0x6F, 0x1C,- 0x0D, 0xB0, 0x79, 0x5E, 0xE7, 0xD6, 0xE3, 0x94,- 0x68, 0x94, 0xB8, 0x26, 0xB1, 0xF8, 0x10, 0x1C,- 0x56, 0xC8, 0x23, 0xBA, 0x17, 0x16, 0x83, 0x12,- 0xE7, 0xF5, 0x3F, 0xC7, 0xDB, 0xE5, 0x2C, 0x3E,- 0x11, 0xE6, 0x98, 0x52, 0xC4, 0x04, 0x85, 0xE2,- 0xEF, 0x18, 0x24, 0x77, 0x86, 0x2E, 0xA6, 0xA3,- 0x4E, 0xC1, 0x36, 0xE2, 0xDF, 0xEE, 0xA6, 0xF4- },- {- 0x6C, 0xB8, 0xF9, 0xD5, 0x2C, 0x56, 0xD8, 0x2C,- 0xAC, 0x28, 0xF3, 0x9E, 0xA1, 0x59, 0x3E, 0x8B,- 0xB2, 0x50, 0x62, 0x93, 0xAC, 0x0D, 0x68, 0x37,- 0x6A, 0x17, 0x09, 0xB6, 0x2A, 0x46, 0xDF, 0x14,- 0xA4, 0xAE, 0x64, 0xB2, 0xD8, 0xFA, 0xB7, 0x67,- 0x33, 0xA1, 0xCE, 0xD2, 0xD5, 0x48, 0xE3, 0xF3,- 0xC6, 0xFC, 0xB4, 0x9D, 0x40, 0xC3, 0xD5, 0x80,- 0x8E, 0x44, 0x9C, 0xD8, 0x3D, 0x1C, 0x2A, 0xA2- },- {- 0x68, 0x3F, 0xA2, 0xB2, 0x36, 0x9A, 0x10, 0x16,- 0x2C, 0x1C, 0x1C, 0x7B, 0x24, 0xBC, 0x97, 0x0E,- 0xE6, 0x7D, 0xA2, 0x20, 0x56, 0x4F, 0x32, 0x20,- 0x3F, 0x62, 0x56, 0x96, 0xC0, 0x35, 0x2A, 0x0B,- 0x9A, 0xD9, 0x66, 0x24, 0x36, 0x2D, 0x95, 0x2D,- 0x84, 0x46, 0x3C, 0x11, 0x06, 0xA2, 0xDB, 0xA7,- 0xA0, 0x92, 0x59, 0x98, 0x84, 0xB3, 0x5A, 0x0B,- 0x89, 0xC8, 0xF1, 0xB6, 0xA9, 0xB5, 0xA6, 0x1E- },- {- 0xAA, 0xD9, 0xAD, 0x44, 0x61, 0x01, 0x18, 0xB7,- 0x7D, 0x50, 0x8A, 0xEB, 0x1B, 0xBC, 0xD1, 0xC1,- 0xB7, 0xD0, 0x17, 0x13, 0x97, 0xFB, 0x51, 0x0A,- 0x40, 0x1B, 0xBC, 0x0E, 0xC3, 0x46, 0x23, 0x67,- 0x0D, 0x86, 0xA2, 0xDC, 0x3C, 0x8F, 0x3A, 0xB5,- 0xA2, 0x04, 0x4D, 0xF7, 0x30, 0x25, 0x67, 0x27,- 0x54, 0x5F, 0x08, 0x60, 0xCE, 0x21, 0xA1, 0xEA,- 0xC7, 0x17, 0xDF, 0xC4, 0x8F, 0x5D, 0x22, 0x8E- },- {- 0xC4, 0x25, 0x78, 0xDE, 0x23, 0xB4, 0xC9, 0x87,- 0xD5, 0xE1, 0xAC, 0x4D, 0x68, 0x9E, 0xD5, 0xDE,- 0x4B, 0x04, 0x17, 0xF9, 0x70, 0x4B, 0xC6, 0xBC,- 0xE9, 0x69, 0xFA, 0x13, 0x47, 0x15, 0x85, 0xD6,- 0x2C, 0x2C, 0xB1, 0x21, 0x2A, 0x94, 0x4F, 0x39,- 0x7F, 0xC9, 0xCA, 0x2C, 0x37, 0x47, 0xC3, 0xBE,- 0xB6, 0x94, 0xEC, 0x4C, 0x5B, 0xE6, 0x88, 0x28,- 0xDD, 0xA5, 0x3E, 0xF4, 0x3F, 0xAE, 0xC6, 0xC0- },- {- 0x47, 0x0F, 0x00, 0x84, 0x1E, 0xE8, 0x24, 0x4E,- 0x63, 0xED, 0x2C, 0x7E, 0xA3, 0x0E, 0x2E, 0x41,- 0x98, 0x97, 0xC1, 0x97, 0x46, 0x2E, 0xCC, 0xCE,- 0xCF, 0x71, 0x3B, 0x42, 0xA5, 0x06, 0x5F, 0xFF,- 0x59, 0x14, 0xBC, 0x9B, 0x79, 0xAF, 0xFE, 0x8F,- 0x6B, 0x65, 0x78, 0x75, 0xE7, 0x89, 0xAE, 0x21,- 0x3B, 0xD9, 0x14, 0xCD, 0x35, 0xBD, 0x17, 0x4D,- 0x46, 0xE9, 0xD1, 0x8B, 0xD8, 0x43, 0x77, 0x3D- },- {- 0x34, 0xFC, 0x42, 0x13, 0x73, 0x0F, 0x47, 0xA5,- 0xE9, 0xA3, 0x58, 0x0F, 0x64, 0x3E, 0x12, 0x94,- 0x5C, 0xFC, 0xB3, 0x1B, 0xF2, 0x06, 0xF6, 0xAD,- 0x45, 0x0C, 0xE5, 0x28, 0xDA, 0x3F, 0xA4, 0x32,- 0xE0, 0x05, 0xD6, 0xB0, 0xEC, 0xCE, 0x10, 0xDC,- 0xA7, 0xC5, 0x99, 0x5F, 0x6A, 0xAC, 0xC5, 0x15,- 0x0E, 0x1B, 0x00, 0x9E, 0x19, 0x75, 0x1E, 0x83,- 0x09, 0xF8, 0x85, 0x95, 0x31, 0x84, 0x43, 0x74- },- {- 0xFB, 0x3C, 0x1F, 0x0F, 0x56, 0xA5, 0x6F, 0x8E,- 0x31, 0x6F, 0xDF, 0x5D, 0x85, 0x3C, 0x8C, 0x87,- 0x2C, 0x39, 0x63, 0x5D, 0x08, 0x36, 0x34, 0xC3,- 0x90, 0x4F, 0xC3, 0xAC, 0x07, 0xD1, 0xB5, 0x78,- 0xE8, 0x5F, 0xF0, 0xE4, 0x80, 0xE9, 0x2D, 0x44,- 0xAD, 0xE3, 0x3B, 0x62, 0xE8, 0x93, 0xEE, 0x32,- 0x34, 0x3E, 0x79, 0xDD, 0xF6, 0xEF, 0x29, 0x2E,- 0x89, 0xB5, 0x82, 0xD3, 0x12, 0x50, 0x23, 0x14- },- {- 0xC7, 0xC9, 0x7F, 0xC6, 0x5D, 0xD2, 0xB9, 0xE3,- 0xD3, 0xD6, 0x07, 0xD3, 0x15, 0x98, 0xD3, 0xF8,- 0x42, 0x61, 0xE9, 0x91, 0x92, 0x51, 0xE9, 0xC8,- 0xE5, 0x7B, 0xB5, 0xF8, 0x29, 0x37, 0x7D, 0x5F,- 0x73, 0xEA, 0xBB, 0xED, 0x55, 0xC6, 0xC3, 0x81,- 0x18, 0x0F, 0x29, 0xAD, 0x02, 0xE5, 0xBE, 0x79,- 0x7F, 0xFE, 0xC7, 0xE5, 0x7B, 0xDE, 0xCB, 0xC5,- 0x0A, 0xD3, 0xD0, 0x62, 0xF0, 0x99, 0x3A, 0xB0- },- {- 0xA5, 0x7A, 0x49, 0xCD, 0xBE, 0x67, 0xAE, 0x7D,- 0x9F, 0x79, 0x7B, 0xB5, 0xCC, 0x7E, 0xFC, 0x2D,- 0xF0, 0x7F, 0x4E, 0x1B, 0x15, 0x95, 0x5F, 0x85,- 0xDA, 0xE7, 0x4B, 0x76, 0xE2, 0xEC, 0xB8, 0x5A,- 0xFB, 0x6C, 0xD9, 0xEE, 0xED, 0x88, 0x88, 0xD5,- 0xCA, 0x3E, 0xC5, 0xAB, 0x65, 0xD2, 0x7A, 0x7B,- 0x19, 0xE5, 0x78, 0x47, 0x57, 0x60, 0xA0, 0x45,- 0xAC, 0x3C, 0x92, 0xE1, 0x3A, 0x93, 0x8E, 0x77- },- {- 0xC7, 0x14, 0x3F, 0xCE, 0x96, 0x14, 0xA1, 0x7F,- 0xD6, 0x53, 0xAE, 0xB1, 0x40, 0x72, 0x6D, 0xC9,- 0xC3, 0xDB, 0xB1, 0xDE, 0x6C, 0xC5, 0x81, 0xB2,- 0x72, 0x68, 0x97, 0xEC, 0x24, 0xB7, 0xA5, 0x03,- 0x59, 0xAD, 0x49, 0x22, 0x43, 0xBE, 0x66, 0xD9,- 0xED, 0xD8, 0xC9, 0x33, 0xB5, 0xB8, 0x0E, 0x0B,- 0x91, 0xBB, 0x61, 0xEA, 0x98, 0x05, 0x60, 0x06,- 0x51, 0x69, 0x76, 0xFA, 0xE8, 0xD9, 0x9A, 0x35- },- {- 0x65, 0xBB, 0x58, 0xD0, 0x7F, 0x93, 0x7E, 0x2D,- 0x3C, 0x7E, 0x65, 0x38, 0x5F, 0x9C, 0x54, 0x73,- 0x0B, 0x70, 0x41, 0x05, 0xCC, 0xDB, 0x69, 0x1F,- 0x6E, 0x14, 0x6D, 0x4E, 0xE8, 0xF6, 0xC0, 0x86,- 0xF4, 0x95, 0x11, 0x03, 0x51, 0x10, 0xA9, 0xAD,- 0x60, 0x31, 0xFD, 0xCE, 0xB9, 0x43, 0xE0, 0xF9,- 0x61, 0x3B, 0xCB, 0x27, 0x6D, 0xD4, 0x0F, 0x06,- 0x24, 0xEF, 0x0F, 0x92, 0x4F, 0x80, 0x97, 0x83- },- {- 0xE5, 0x40, 0x27, 0x7F, 0x68, 0x3B, 0x11, 0x86,- 0xDD, 0x3B, 0x5B, 0x3F, 0x61, 0x43, 0x33, 0x96,- 0x58, 0x1A, 0x35, 0xFE, 0xB1, 0x20, 0x02, 0xBE,- 0x8C, 0x6A, 0x62, 0x31, 0xFC, 0x40, 0xFF, 0xA7,- 0x0F, 0x08, 0x08, 0x1B, 0xC5, 0x8B, 0x2D, 0x94,- 0xF7, 0x64, 0x95, 0x43, 0x61, 0x4A, 0x43, 0x5F,- 0xAA, 0x2D, 0x62, 0x11, 0x0E, 0x13, 0xDA, 0xBC,- 0x7B, 0x86, 0x62, 0x9B, 0x63, 0xAF, 0x9C, 0x24- },- {- 0x41, 0x85, 0x00, 0x87, 0x8C, 0x5F, 0xBC, 0xB5,- 0x84, 0xC4, 0x32, 0xF4, 0x28, 0x5E, 0x05, 0xE4,- 0x9F, 0x2E, 0x3E, 0x07, 0x53, 0x99, 0xA0, 0xDB,- 0xFC, 0xF8, 0x74, 0xEB, 0xF8, 0xC0, 0x3D, 0x02,- 0xBF, 0x16, 0xBC, 0x69, 0x89, 0xD1, 0x61, 0xC7,- 0x7C, 0xA0, 0x78, 0x6B, 0x05, 0x05, 0x3C, 0x6C,- 0x70, 0x94, 0x33, 0x71, 0x23, 0x19, 0x19, 0x21,- 0x28, 0x83, 0x5C, 0xF0, 0xB6, 0x60, 0x59, 0x5B- },- {- 0x88, 0x90, 0x90, 0xDB, 0xB1, 0x94, 0x4B, 0xDC,- 0x94, 0x33, 0xEE, 0x5E, 0xF1, 0x01, 0x0C, 0x7A,- 0x4A, 0x24, 0xA8, 0xE7, 0x1E, 0xCE, 0xA8, 0xE1,- 0x2A, 0x31, 0x31, 0x8C, 0xE4, 0x9D, 0xCA, 0xB0,- 0xAC, 0xA5, 0xC3, 0x80, 0x23, 0x34, 0xAA, 0xB2,- 0xCC, 0x84, 0xB1, 0x4C, 0x6B, 0x93, 0x21, 0xFE,- 0x58, 0x6B, 0xF3, 0xF8, 0x76, 0xF1, 0x9C, 0xD4,- 0x06, 0xEB, 0x11, 0x27, 0xFB, 0x94, 0x48, 0x01- },- {- 0x53, 0xB6, 0xA2, 0x89, 0x10, 0xAA, 0x92, 0xE2,- 0x7E, 0x53, 0x6F, 0xB5, 0x49, 0xCF, 0x9B, 0x99,- 0x18, 0x79, 0x10, 0x60, 0x89, 0x8E, 0x0B, 0x9F,- 0xE1, 0x83, 0x57, 0x7F, 0xF4, 0x3B, 0x5E, 0x9C,- 0x76, 0x89, 0xC7, 0x45, 0xB3, 0x2E, 0x41, 0x22,- 0x69, 0x83, 0x7C, 0x31, 0xB8, 0x9E, 0x6C, 0xC1,- 0x2B, 0xF7, 0x6E, 0x13, 0xCA, 0xD3, 0x66, 0xB7,- 0x4E, 0xCE, 0x48, 0xBB, 0x85, 0xFD, 0x09, 0xE9- },- {- 0x7C, 0x09, 0x20, 0x80, 0xC6, 0xA8, 0x0D, 0x67,- 0x24, 0x09, 0xD0, 0x81, 0xD3, 0xD1, 0x77, 0x10,- 0x6B, 0xCD, 0x63, 0x56, 0x77, 0x85, 0x14, 0x07,- 0x19, 0x49, 0x09, 0x50, 0xAE, 0x07, 0xAE, 0x8F,- 0xCA, 0xAB, 0xBA, 0xAA, 0xB3, 0x30, 0xCF, 0xBC,- 0xF7, 0x37, 0x44, 0x82, 0xC2, 0x20, 0xAF, 0x2E,- 0xAD, 0xEE, 0xB7, 0x3D, 0xCB, 0xB3, 0x5E, 0xD8,- 0x23, 0x34, 0x4E, 0x14, 0x4E, 0x7D, 0x48, 0x99- },- {- 0x9C, 0xCD, 0xE5, 0x66, 0xD2, 0x40, 0x05, 0x09,- 0x18, 0x11, 0x11, 0xF3, 0x2D, 0xDE, 0x4C, 0xD6,- 0x32, 0x09, 0xFE, 0x59, 0xA3, 0x0C, 0x11, 0x45,- 0x46, 0xAD, 0x27, 0x76, 0xD8, 0x89, 0xA4, 0x1B,- 0xAD, 0x8F, 0xA1, 0xBB, 0x46, 0x8C, 0xB2, 0xF9,- 0xD4, 0x2C, 0xA9, 0x92, 0x8A, 0x77, 0x70, 0xFE,- 0xF8, 0xE8, 0xBA, 0x4D, 0x0C, 0x81, 0x2D, 0x9A,- 0x1E, 0x75, 0xC3, 0xD8, 0xD2, 0xCC, 0xD7, 0x5A- },- {- 0x6E, 0x29, 0x3B, 0xF5, 0xD0, 0x3F, 0xE4, 0x39,- 0x77, 0xCF, 0xE3, 0xF5, 0x7C, 0xCD, 0xB3, 0xAE,- 0x28, 0x2A, 0x85, 0x45, 0x5D, 0xCA, 0x33, 0xF3,- 0x7F, 0x4B, 0x74, 0xF8, 0x39, 0x8C, 0xC6, 0x12,- 0x43, 0x3D, 0x75, 0x5C, 0xBE, 0xC4, 0x12, 0xF8,- 0xF8, 0x2A, 0x3B, 0xD3, 0xBC, 0x4A, 0x27, 0x8F,- 0x7E, 0xCD, 0x0D, 0xFA, 0x9B, 0xBD, 0xC4, 0x0B,- 0xE7, 0xA7, 0x87, 0xC8, 0xF1, 0x59, 0xB2, 0xDF- },- {- 0xC5, 0x65, 0x46, 0xFB, 0x21, 0x78, 0x45, 0x6F,- 0x33, 0x61, 0x64, 0xC1, 0x8B, 0x90, 0xDE, 0xFF,- 0xC8, 0x3A, 0xE2, 0xB5, 0xA3, 0xAC, 0xA7, 0x7B,- 0x68, 0x84, 0xD3, 0x6D, 0x2C, 0x1D, 0xB3, 0x95,- 0x01, 0xB3, 0xE6, 0x5E, 0x36, 0xC7, 0x58, 0xC6,- 0x6E, 0x31, 0x88, 0x45, 0x1F, 0xDB, 0x35, 0x15,- 0xEE, 0x16, 0x2C, 0x00, 0x1F, 0x06, 0xC3, 0xE8,- 0xCB, 0x57, 0x3A, 0xDF, 0x30, 0xF7, 0xA1, 0x01- },- {- 0x6F, 0x82, 0xF8, 0x9F, 0x29, 0x9E, 0xBC, 0xA2,- 0xFE, 0x01, 0x4B, 0x59, 0xBF, 0xFE, 0x1A, 0xA8,- 0x4E, 0x88, 0xB1, 0x91, 0x5F, 0xE2, 0x56, 0xAF,- 0xB6, 0x46, 0xFD, 0x84, 0x48, 0xAF, 0x2B, 0x88,- 0x91, 0xA7, 0xFA, 0xB3, 0x7A, 0x4E, 0xA6, 0xF9,- 0xA5, 0x0E, 0x6C, 0x31, 0x70, 0x39, 0xD8, 0xCF,- 0x87, 0x8F, 0x4C, 0x8E, 0x1A, 0x0D, 0xD4, 0x64,- 0xF0, 0xB4, 0xD6, 0xFF, 0x1C, 0x7E, 0xA8, 0x53- },- {- 0x2B, 0x85, 0x99, 0xFF, 0x9C, 0x3D, 0x61, 0x98,- 0x63, 0x7A, 0xD5, 0x1E, 0x57, 0xD1, 0x99, 0x8B,- 0x0D, 0x75, 0x31, 0x3F, 0xE2, 0xDD, 0x61, 0xA5,- 0x33, 0xC9, 0x64, 0xA6, 0xDD, 0x96, 0x07, 0xC6,- 0xF7, 0x23, 0xE9, 0x45, 0x2C, 0xE4, 0x6E, 0x01,- 0x4B, 0x1C, 0x1D, 0x6D, 0xE7, 0x7B, 0xA5, 0xB8,- 0x8C, 0x91, 0x4D, 0x1C, 0x59, 0x7B, 0xF1, 0xEA,- 0xE1, 0x34, 0x74, 0xB4, 0x29, 0x0E, 0x89, 0xB2- },- {- 0x08, 0xBF, 0x34, 0x6D, 0x38, 0xE1, 0xDF, 0x06,- 0xC8, 0x26, 0x0E, 0xDB, 0x1D, 0xA7, 0x55, 0x79,- 0x27, 0x59, 0x48, 0xD5, 0xC0, 0xA0, 0xAA, 0x9E,- 0xD2, 0x88, 0x6F, 0x88, 0x56, 0xDE, 0x54, 0x17,- 0xA1, 0x56, 0x99, 0x87, 0x58, 0xF5, 0xB1, 0x7E,- 0x52, 0xF1, 0x01, 0xCA, 0x95, 0x7A, 0x71, 0x13,- 0x74, 0x73, 0xDF, 0xD1, 0x8D, 0x7D, 0x20, 0x9C,- 0x4C, 0x10, 0xD9, 0x23, 0x3C, 0x93, 0x69, 0x1D- },- {- 0x6D, 0xF2, 0x15, 0x6D, 0x77, 0x31, 0x14, 0xD3,- 0x10, 0xB6, 0x3D, 0xB9, 0xEE, 0x53, 0x50, 0xD7,- 0x7E, 0x6B, 0xCF, 0x25, 0xB0, 0x5F, 0xCD, 0x91,- 0x0F, 0x9B, 0x31, 0xBC, 0x42, 0xBB, 0x13, 0xFE,- 0x82, 0x25, 0xEB, 0xCB, 0x2A, 0x23, 0xA6, 0x22,- 0x80, 0x77, 0x7B, 0x6B, 0xF7, 0x4E, 0x2C, 0xD0,- 0x91, 0x7C, 0x76, 0x40, 0xB4, 0x3D, 0xEF, 0xE4,- 0x68, 0xCD, 0x1E, 0x18, 0xC9, 0x43, 0xC6, 0x6A- },- {- 0x7C, 0x70, 0x38, 0xBC, 0x13, 0xA9, 0x11, 0x51,- 0x82, 0x8A, 0x5B, 0xA8, 0x2B, 0x4A, 0x96, 0x04,- 0x0F, 0x25, 0x8A, 0x4D, 0xFB, 0x1B, 0x13, 0x73,- 0xF0, 0xD3, 0x59, 0x16, 0x8A, 0xFB, 0x05, 0x17,- 0xA2, 0x0B, 0x28, 0xA1, 0x2D, 0x36, 0x44, 0x04,- 0x6B, 0xE6, 0x6B, 0x8D, 0x08, 0xD8, 0xAE, 0x7F,- 0x6A, 0x92, 0x3E, 0xA1, 0xC0, 0x01, 0x87, 0xC6,- 0xD1, 0x1D, 0xC5, 0x02, 0xBA, 0xC7, 0x13, 0x05- },- {- 0xBC, 0xD1, 0xB3, 0x0D, 0x80, 0x8F, 0xB7, 0x39,- 0xB9, 0x87, 0xCB, 0xF1, 0x54, 0xBE, 0xA0, 0x0D,- 0xA9, 0xD4, 0x03, 0x80, 0xB8, 0x61, 0xD4, 0xC1,- 0xD6, 0x37, 0x71, 0x22, 0xDA, 0xDD, 0x61, 0xC0,- 0xE5, 0x90, 0x18, 0xB7, 0x19, 0x41, 0xCF, 0xB6,- 0x2E, 0x00, 0xDC, 0xD7, 0x0A, 0xEB, 0x9A, 0xBF,- 0x04, 0x73, 0xE8, 0x0F, 0x0A, 0x7E, 0xCA, 0x6B,- 0x6D, 0xEA, 0x24, 0x6A, 0xB2, 0x29, 0xDD, 0x2B- },- {- 0x7E, 0xD4, 0x46, 0x8D, 0x96, 0x85, 0x30, 0xFE,- 0x7A, 0xB2, 0xC3, 0x35, 0x40, 0xB2, 0x6D, 0x8C,- 0x3B, 0xD3, 0xED, 0x44, 0xB3, 0x4F, 0xBE, 0x8C,- 0x2A, 0x9D, 0x7F, 0x80, 0x5B, 0x5A, 0xDA, 0x0E,- 0xA2, 0x52, 0xEE, 0xAD, 0xE4, 0xFC, 0xE9, 0x7F,- 0x89, 0x72, 0x8A, 0xD8, 0x5B, 0xC8, 0xBB, 0x24,- 0x30, 0xB1, 0xBE, 0xF2, 0xCD, 0xDD, 0x32, 0xC8,- 0x44, 0x6E, 0x59, 0xB8, 0xE8, 0xBA, 0x3C, 0x67- },- {- 0x6D, 0x30, 0xB7, 0xC6, 0xCE, 0x8A, 0x32, 0x36,- 0xC0, 0xCA, 0x2F, 0x8D, 0x72, 0x8B, 0x10, 0x88,- 0xCA, 0x06, 0x98, 0x3A, 0x80, 0x43, 0xE6, 0x21,- 0xD5, 0xDC, 0xF0, 0xC5, 0x37, 0xD1, 0x3B, 0x08,- 0x79, 0x1E, 0xDE, 0xB0, 0x1A, 0x3C, 0xF0, 0x94,- 0x3E, 0xC1, 0xC8, 0x90, 0xAB, 0x6E, 0x29, 0xB1,- 0x46, 0xA2, 0x36, 0xCD, 0x46, 0xBC, 0xB9, 0xD9,- 0x3B, 0xF5, 0x16, 0xFB, 0x67, 0xC6, 0x3F, 0xE5- },- {- 0x97, 0xFE, 0x03, 0xCE, 0xF3, 0x14, 0x38, 0x50,- 0x89, 0x11, 0xBD, 0xED, 0x97, 0x59, 0x80, 0xA6,- 0x60, 0x29, 0x30, 0x5D, 0xC5, 0xE3, 0xFA, 0x8A,- 0xD1, 0xB4, 0xFB, 0x22, 0xFC, 0xDF, 0x5A, 0x19,- 0xA7, 0x33, 0x32, 0x03, 0x27, 0xD8, 0xF7, 0x1C,- 0xCF, 0x49, 0x6C, 0xB3, 0xA4, 0x4A, 0x77, 0xAF,- 0x56, 0xE3, 0xDD, 0xE7, 0x3D, 0x3A, 0x5F, 0x17,- 0x68, 0x96, 0xCC, 0x57, 0xC9, 0xA5, 0xAD, 0x99- },- {- 0x78, 0x5A, 0x9D, 0x0F, 0xBD, 0x21, 0x13, 0x6D,- 0xBC, 0xE8, 0xFA, 0x7E, 0xAF, 0xD6, 0x3C, 0x9D,- 0xAD, 0x22, 0x00, 0x52, 0x97, 0x84, 0x16, 0xB3,- 0x1D, 0x97, 0x53, 0xEA, 0xA1, 0x49, 0x09, 0x78,- 0x47, 0xED, 0x9B, 0x30, 0xA6, 0x5C, 0x70, 0x50,- 0x7E, 0xFF, 0x01, 0x87, 0x91, 0x49, 0xED, 0x5C,- 0xF0, 0x47, 0x1D, 0x37, 0x79, 0x8E, 0xDC, 0x05,- 0xAB, 0xD5, 0x6A, 0xD4, 0xA2, 0xCC, 0xCB, 0x1D- },- {- 0xAD, 0x40, 0x8D, 0x2A, 0xBD, 0xDF, 0xD3, 0x7B,- 0x3B, 0xF3, 0x47, 0x94, 0xC1, 0xA3, 0x37, 0x1D,- 0x92, 0x8E, 0xD7, 0xFC, 0x8D, 0x96, 0x62, 0x25,- 0x33, 0x35, 0x84, 0xC5, 0x66, 0x58, 0x17, 0x83,- 0x2A, 0x37, 0xC0, 0x7F, 0x0D, 0xC7, 0xCB, 0x5A,- 0xA8, 0x74, 0xCD, 0x7D, 0x20, 0xFE, 0x8F, 0xAB,- 0x8E, 0xAB, 0xCB, 0x9B, 0x33, 0xD2, 0xE0, 0x84,- 0x1F, 0x6E, 0x20, 0x09, 0x60, 0x89, 0x9D, 0x95- },- {- 0x97, 0x66, 0x8F, 0x74, 0x5B, 0x60, 0x32, 0xFC,- 0x81, 0x5D, 0x95, 0x79, 0x32, 0x27, 0x69, 0xDC,- 0xCD, 0x95, 0x01, 0xA5, 0x08, 0x00, 0x29, 0xB8,- 0xAE, 0x82, 0x6B, 0xEF, 0xB6, 0x74, 0x23, 0x31,- 0xBD, 0x9F, 0x76, 0xEF, 0xEB, 0x3E, 0x2B, 0x8E,- 0x81, 0xA9, 0x78, 0x6B, 0x28, 0x2F, 0x50, 0x68,- 0xA3, 0xA2, 0x42, 0x46, 0x97, 0xA7, 0x7C, 0x41,- 0x87, 0x6B, 0x7E, 0x75, 0x3F, 0x4C, 0x77, 0x67- },- {- 0x26, 0xBB, 0x98, 0x5F, 0x47, 0xE7, 0xFE, 0xE0,- 0xCF, 0xD2, 0x52, 0xD4, 0xEF, 0x96, 0xBE, 0xD4,- 0x2B, 0x9C, 0x37, 0x0C, 0x1C, 0x6A, 0x3E, 0x8C,- 0x9E, 0xB0, 0x4E, 0xF7, 0xF7, 0x81, 0x8B, 0x83,- 0x3A, 0x0D, 0x1F, 0x04, 0x3E, 0xBA, 0xFB, 0x91,- 0x1D, 0xC7, 0x79, 0xE0, 0x27, 0x40, 0xA0, 0x2A,- 0x44, 0xD3, 0xA1, 0xEA, 0x45, 0xED, 0x4A, 0xD5,- 0x5E, 0x68, 0x6C, 0x92, 0x7C, 0xAF, 0xE9, 0x7E- },- {- 0x5B, 0xFE, 0x2B, 0x1D, 0xCF, 0x7F, 0xE9, 0xB9,- 0x50, 0x88, 0xAC, 0xED, 0xB5, 0x75, 0xC1, 0x90,- 0x16, 0xC7, 0x43, 0xB2, 0xE7, 0x63, 0xBF, 0x58,- 0x51, 0xAC, 0x40, 0x7C, 0x9E, 0xDA, 0x43, 0x71,- 0x5E, 0xDF, 0xA4, 0x8B, 0x48, 0x25, 0x49, 0x2C,- 0x51, 0x79, 0x59, 0x3F, 0xFF, 0x21, 0x35, 0x1B,- 0x76, 0xE8, 0xB7, 0xE0, 0x34, 0xE4, 0xC5, 0x3C,- 0x79, 0xF6, 0x1F, 0x29, 0xC4, 0x79, 0xBD, 0x08- },- {- 0xC7, 0x65, 0x09, 0xEF, 0x72, 0xF4, 0xA6, 0xF9,- 0xC9, 0xC4, 0x06, 0x18, 0xED, 0x52, 0xB2, 0x08,- 0x4F, 0x83, 0x50, 0x22, 0x32, 0xE0, 0xAC, 0x8B,- 0xDA, 0xF3, 0x26, 0x43, 0x68, 0xE4, 0xD0, 0x18,- 0x0F, 0x68, 0x54, 0xC4, 0xAB, 0xF4, 0xF6, 0x50,- 0x9C, 0x79, 0xCA, 0xAF, 0xC4, 0x4C, 0xF3, 0x19,- 0x4A, 0xFC, 0x57, 0xBD, 0x07, 0x7B, 0xD7, 0xB3,- 0xC9, 0xBD, 0xA3, 0xD4, 0xB8, 0x77, 0x58, 0x16- },- {- 0xD6, 0x6F, 0x2B, 0xEA, 0xB9, 0x90, 0xE3, 0x54,- 0xCC, 0xB9, 0x10, 0xE4, 0xE9, 0xC7, 0xAC, 0x61,- 0x8C, 0x7B, 0x63, 0xEF, 0x29, 0x2A, 0x96, 0xB5,- 0x52, 0x34, 0x1D, 0xE7, 0x8D, 0xC4, 0x6D, 0x3E,- 0xC8, 0xCF, 0xAB, 0xC6, 0x99, 0xB5, 0x0A, 0xF4,- 0x1F, 0xDA, 0x39, 0xCF, 0x1B, 0x01, 0x73, 0x66,- 0x09, 0x23, 0x51, 0x0A, 0xD6, 0x7F, 0xAE, 0xDE,- 0xF5, 0x20, 0x7C, 0xFF, 0xE8, 0x64, 0x1D, 0x20- },- {- 0x7D, 0x8F, 0x06, 0x72, 0x99, 0x2B, 0x79, 0xBE,- 0x3A, 0x36, 0x4D, 0x8E, 0x59, 0x04, 0xF4, 0xAB,- 0x71, 0x3B, 0xBC, 0x8A, 0xB0, 0x1B, 0x4F, 0x30,- 0x9A, 0xD8, 0xCC, 0xF2, 0x23, 0xCE, 0x10, 0x34,- 0xA8, 0x60, 0xDC, 0xB0, 0xB0, 0x05, 0x50, 0x61,- 0x2C, 0xC2, 0xFA, 0x17, 0xF2, 0x96, 0x9E, 0x18,- 0xF2, 0x2E, 0x14, 0x27, 0xD2, 0x54, 0xB4, 0xA8,- 0x2B, 0x3A, 0x03, 0xA3, 0xEB, 0x39, 0x4A, 0xDF- },- {- 0xA5, 0x6D, 0x67, 0x25, 0xBF, 0xB3, 0xDE, 0x47,- 0xC1, 0x41, 0x4A, 0xDF, 0x25, 0xFC, 0x8F, 0x0F,- 0xC9, 0x84, 0x6F, 0x69, 0x87, 0x72, 0x2B, 0xC0,- 0x63, 0x66, 0xD5, 0xCA, 0x4E, 0x89, 0x72, 0x29,- 0x25, 0xEB, 0xBC, 0x88, 0x14, 0x18, 0x84, 0x40,- 0x75, 0x39, 0x7A, 0x0C, 0xA8, 0x98, 0x42, 0xC7,- 0xB9, 0xE9, 0xE0, 0x7E, 0x1D, 0x9D, 0x18, 0x3E,- 0xBE, 0xB3, 0x9E, 0x12, 0x0B, 0x48, 0x3B, 0xF7- },- {- 0xAF, 0x5E, 0x03, 0xD7, 0xFE, 0x60, 0xC6, 0x7E,- 0x10, 0x31, 0x33, 0x44, 0x43, 0x4E, 0x79, 0x48,- 0x5A, 0x03, 0xA7, 0x58, 0xD6, 0xDC, 0xE9, 0x85,- 0x57, 0x47, 0x45, 0x76, 0x3C, 0x1C, 0x5C, 0x77,- 0xD4, 0xFB, 0x3E, 0x6F, 0xB1, 0x22, 0x30, 0x36,- 0x83, 0x70, 0x99, 0x3B, 0xF9, 0x0F, 0xEE, 0xD0,- 0xC5, 0xD1, 0x60, 0x75, 0x24, 0x56, 0x2D, 0x7C,- 0x09, 0xC0, 0xC2, 0x10, 0xED, 0x39, 0x3D, 0x7C- },- {- 0x7A, 0x20, 0x54, 0x0C, 0xC0, 0x7B, 0xF7, 0x2B,- 0x58, 0x24, 0x21, 0xFC, 0x34, 0x2E, 0x82, 0xF5,- 0x21, 0x34, 0xB6, 0x98, 0x41, 0xEC, 0x28, 0xED,- 0x18, 0x9E, 0x2E, 0xA6, 0xA2, 0x9D, 0xD2, 0xF8,- 0x2A, 0x64, 0x03, 0x52, 0xD2, 0x22, 0xB5, 0x2F,- 0x29, 0x11, 0xDC, 0x72, 0xA7, 0xDA, 0xB3, 0x1C,- 0xAA, 0xDD, 0x80, 0xC6, 0x11, 0x8F, 0x13, 0xC5,- 0x6B, 0x2A, 0x1E, 0x43, 0x73, 0xBE, 0x0E, 0xA3- },- {- 0x48, 0x6F, 0x02, 0xC6, 0x3E, 0x54, 0x67, 0xEA,- 0x1F, 0xDD, 0xE7, 0xE8, 0x2B, 0xFA, 0xCC, 0x2C,- 0x1B, 0xA5, 0xD6, 0x36, 0xD9, 0xF3, 0xD0, 0x8B,- 0x21, 0x0D, 0xA3, 0xF3, 0x72, 0xF7, 0x06, 0xEC,- 0x21, 0x8C, 0xC1, 0x7F, 0xF6, 0x0A, 0xEF, 0x70,- 0x3B, 0xBE, 0x0C, 0x15, 0xC3, 0x8A, 0xE5, 0x5D,- 0x28, 0x6A, 0x68, 0x4F, 0x86, 0x4C, 0x78, 0x21,- 0x1C, 0xCA, 0xB4, 0x17, 0x8C, 0x92, 0xAD, 0xBA- },- {- 0x1C, 0x7A, 0x5C, 0x1D, 0xED, 0xCD, 0x04, 0xA9,- 0x21, 0x78, 0x8F, 0x7E, 0xB2, 0x33, 0x61, 0xCA,- 0x19, 0x53, 0xB0, 0x4B, 0x9C, 0x7A, 0xEC, 0x35,- 0xD6, 0x5E, 0xA3, 0xE4, 0x99, 0x6D, 0xB2, 0x6F,- 0x28, 0x12, 0x78, 0xEA, 0x4A, 0xE6, 0x66, 0xAD,- 0x81, 0x02, 0x7D, 0x98, 0xAF, 0x57, 0x26, 0x2C,- 0xDB, 0xFA, 0x4C, 0x08, 0x5F, 0x42, 0x10, 0x56,- 0x8C, 0x7E, 0x15, 0xEE, 0xC7, 0x80, 0x51, 0x14- },- {- 0x9C, 0xE3, 0xFA, 0x9A, 0x86, 0x0B, 0xDB, 0xD5,- 0x37, 0x8F, 0xD6, 0xD7, 0xB8, 0xB6, 0x71, 0xC6,- 0xCB, 0x76, 0x92, 0x91, 0x0C, 0xE8, 0xF9, 0xB6,- 0xCB, 0x41, 0x22, 0xCB, 0xCB, 0xE6, 0xAC, 0x06,- 0xCA, 0x04, 0x22, 0xCE, 0xF1, 0x22, 0x59, 0x35,- 0x05, 0x3B, 0x7D, 0x19, 0x3A, 0x81, 0xB9, 0xE9,- 0x72, 0xEB, 0x85, 0xA1, 0xD3, 0x07, 0x4F, 0x14,- 0xCB, 0xB5, 0xEC, 0x9F, 0x05, 0x73, 0x89, 0x2D- },- {- 0xA9, 0x11, 0x87, 0xBE, 0x5C, 0x37, 0x1C, 0x42,- 0x65, 0xC1, 0x74, 0xFD, 0x46, 0x53, 0xB8, 0xAB,- 0x70, 0x85, 0x51, 0xF8, 0x3D, 0x1F, 0xEE, 0x1C,- 0xC1, 0x47, 0x95, 0x81, 0xBC, 0x00, 0x6D, 0x6F,- 0xB7, 0x8F, 0xCC, 0x9A, 0x5D, 0xEE, 0x1D, 0xB3,- 0x66, 0x6F, 0x50, 0x8F, 0x97, 0x80, 0xA3, 0x75,- 0x93, 0xEB, 0xCC, 0xCF, 0x5F, 0xBE, 0xD3, 0x96,- 0x67, 0xDC, 0x63, 0x61, 0xE9, 0x21, 0xF7, 0x79- },- {- 0x46, 0x25, 0x76, 0x7D, 0x7B, 0x1D, 0x3D, 0x3E,- 0xD2, 0xFB, 0xC6, 0x74, 0xAF, 0x14, 0xE0, 0x24,- 0x41, 0x52, 0xF2, 0xA4, 0x02, 0x1F, 0xCF, 0x33,- 0x11, 0x50, 0x5D, 0x89, 0xBD, 0x81, 0xE2, 0xF9,- 0xF9, 0xA5, 0x00, 0xC3, 0xB1, 0x99, 0x91, 0x4D,- 0xB4, 0x95, 0x00, 0xB3, 0xC9, 0x8D, 0x03, 0xEA,- 0x93, 0x28, 0x67, 0x51, 0xA6, 0x86, 0xA3, 0xB8,- 0x75, 0xDA, 0xAB, 0x0C, 0xCD, 0x63, 0xB4, 0x4F- },- {- 0x43, 0xDF, 0xDF, 0xE1, 0xB0, 0x14, 0xFE, 0xD3,- 0xA2, 0xAC, 0xAB, 0xB7, 0xF3, 0xE9, 0xA1, 0x82,- 0xF2, 0xAA, 0x18, 0x01, 0x9D, 0x27, 0xE3, 0xE6,- 0xCD, 0xCF, 0x31, 0xA1, 0x5B, 0x42, 0x8E, 0x91,- 0xE7, 0xB0, 0x8C, 0xF5, 0xE5, 0xC3, 0x76, 0xFC,- 0xE2, 0xD8, 0xA2, 0x8F, 0xF8, 0x5A, 0xB0, 0xA0,- 0xA1, 0x65, 0x6E, 0xDB, 0x4A, 0x0A, 0x91, 0x53,- 0x26, 0x20, 0x09, 0x6D, 0x9A, 0x5A, 0x65, 0x2D- },- {- 0x27, 0x9E, 0x32, 0x02, 0xBE, 0x39, 0x89, 0xBA,- 0x31, 0x12, 0x77, 0x25, 0x85, 0x17, 0x74, 0x87,- 0xE4, 0xFE, 0x3E, 0xE3, 0xEA, 0xB4, 0x9C, 0x2F,- 0x7F, 0xA7, 0xFE, 0x87, 0xCF, 0xE7, 0xB8, 0x0D,- 0x3E, 0x03, 0x55, 0xED, 0xFF, 0x6D, 0x03, 0x1E,- 0x6C, 0x96, 0xC7, 0x95, 0xDB, 0x1C, 0x6F, 0x04,- 0x18, 0x80, 0xEC, 0x38, 0x24, 0xDE, 0xFA, 0xCF,- 0x92, 0x63, 0x82, 0x0A, 0x8E, 0x73, 0x27, 0xDE- },- {- 0xEA, 0x2D, 0x06, 0x6A, 0xC2, 0x29, 0xD4, 0xD4,- 0xB6, 0x16, 0xA8, 0xBE, 0xDE, 0xC7, 0x34, 0x32,- 0x52, 0x24, 0xE4, 0xB4, 0xE5, 0x8F, 0x1A, 0xE6,- 0xDA, 0xD7, 0xE4, 0x0C, 0x2D, 0xA2, 0x91, 0x96,- 0xC3, 0xB1, 0xEA, 0x95, 0x71, 0xDA, 0xCC, 0x81,- 0xE8, 0x73, 0x28, 0xCA, 0xA0, 0x21, 0x1E, 0x09,- 0x02, 0x7B, 0x05, 0x24, 0xAA, 0x3F, 0x4A, 0x84,- 0x99, 0x17, 0xB3, 0x58, 0x67, 0x47, 0xEB, 0xBB- },- {- 0x49, 0xF0, 0x14, 0xF5, 0xC6, 0x18, 0x22, 0xC8,- 0x99, 0xAB, 0x5C, 0xAE, 0x51, 0xBE, 0x40, 0x44,- 0xA4, 0x49, 0x5E, 0x77, 0x7D, 0xEB, 0x7D, 0xA9,- 0xB6, 0xD8, 0x49, 0x0E, 0xFB, 0xB8, 0x75, 0x30,- 0xAD, 0xF2, 0x93, 0xDA, 0xF0, 0x79, 0xF9, 0x4C,- 0x33, 0xB7, 0x04, 0x4E, 0xF6, 0x2E, 0x2E, 0x5B,- 0xB3, 0xEB, 0x11, 0xE1, 0x73, 0x04, 0xF8, 0x45,- 0x3E, 0xE6, 0xCE, 0x24, 0xF0, 0x33, 0xDD, 0xB0- },- {- 0x92, 0x33, 0x49, 0x03, 0x44, 0xE5, 0xB0, 0xDC,- 0x59, 0x12, 0x67, 0x1B, 0x7A, 0xE5, 0x4C, 0xEE,- 0x77, 0x30, 0xDB, 0xE1, 0xF4, 0xC7, 0xD9, 0x2A,- 0x4D, 0x3E, 0x3A, 0xAB, 0x50, 0x57, 0x17, 0x08,- 0xDB, 0x51, 0xDC, 0xF9, 0xC2, 0x94, 0x45, 0x91,- 0xDB, 0x65, 0x1D, 0xB3, 0x2D, 0x22, 0x93, 0x5B,- 0x86, 0x94, 0x49, 0x69, 0xBE, 0x77, 0xD5, 0xB5,- 0xFE, 0xAE, 0x6C, 0x38, 0x40, 0xA8, 0xDB, 0x26- },- {- 0xB6, 0xE7, 0x5E, 0x6F, 0x4C, 0x7F, 0x45, 0x3B,- 0x74, 0x65, 0xD2, 0x5B, 0x5A, 0xC8, 0xC7, 0x19,- 0x69, 0x02, 0xEA, 0xA9, 0x53, 0x87, 0x52, 0x28,- 0xC8, 0x63, 0x4E, 0x16, 0xE2, 0xAE, 0x1F, 0x38,- 0xBC, 0x32, 0x75, 0x30, 0x43, 0x35, 0xF5, 0x98,- 0x9E, 0xCC, 0xC1, 0xE3, 0x41, 0x67, 0xD4, 0xE6,- 0x8D, 0x77, 0x19, 0x96, 0x8F, 0xBA, 0x8E, 0x2F,- 0xE6, 0x79, 0x47, 0xC3, 0x5C, 0x48, 0xE8, 0x06- },- {- 0xCC, 0x14, 0xCA, 0x66, 0x5A, 0xF1, 0x48, 0x3E,- 0xFB, 0xC3, 0xAF, 0x80, 0x08, 0x0E, 0x65, 0x0D,- 0x50, 0x46, 0xA3, 0x93, 0x2F, 0x4F, 0x51, 0xF3,- 0xFE, 0x90, 0xA0, 0x70, 0x5E, 0xC2, 0x51, 0x04,- 0xAD, 0xF0, 0x78, 0x39, 0x26, 0x5D, 0xC5, 0x1D,- 0x43, 0x40, 0x14, 0x11, 0x24, 0x6E, 0x47, 0x4F,- 0x0D, 0x5E, 0x56, 0x37, 0xAF, 0x94, 0x76, 0x72,- 0x83, 0xD5, 0x3E, 0x06, 0x17, 0xE9, 0x81, 0xF4- },- {- 0x23, 0x0A, 0x1C, 0x85, 0x7C, 0xB2, 0xE7, 0x85,- 0x2E, 0x41, 0xB6, 0x47, 0xE9, 0x0E, 0x45, 0x85,- 0xD2, 0xD8, 0x81, 0xE1, 0x73, 0x4D, 0xC3, 0x89,- 0x55, 0x35, 0x6E, 0x8D, 0xD7, 0xBF, 0xF3, 0x90,- 0x53, 0x09, 0x2C, 0x6B, 0x38, 0xE2, 0x36, 0xE1,- 0x89, 0x95, 0x25, 0x64, 0x70, 0x73, 0xDD, 0xDF,- 0x68, 0x95, 0xD6, 0x42, 0x06, 0x32, 0x5E, 0x76,- 0x47, 0xF2, 0x75, 0x56, 0x7B, 0x25, 0x59, 0x09- },- {- 0xCB, 0xB6, 0x53, 0x21, 0xAC, 0x43, 0x6E, 0x2F,- 0xFD, 0xAB, 0x29, 0x36, 0x35, 0x9C, 0xE4, 0x90,- 0x23, 0xF7, 0xDE, 0xE7, 0x61, 0x4E, 0xF2, 0x8D,- 0x17, 0x3C, 0x3D, 0x27, 0xC5, 0xD1, 0xBF, 0xFA,- 0x51, 0x55, 0x3D, 0x43, 0x3F, 0x8E, 0xE3, 0xC9,- 0xE4, 0x9C, 0x05, 0xA2, 0xB8, 0x83, 0xCC, 0xE9,- 0x54, 0xC9, 0xA8, 0x09, 0x3B, 0x80, 0x61, 0x2A,- 0x0C, 0xDD, 0x47, 0x32, 0xE0, 0x41, 0xF9, 0x95- },- {- 0x3E, 0x7E, 0x57, 0x00, 0x74, 0x33, 0x72, 0x75,- 0xEF, 0xB5, 0x13, 0x15, 0x58, 0x80, 0x34, 0xC3,- 0xCF, 0x0D, 0xDD, 0xCA, 0x20, 0xB4, 0x61, 0x2E,- 0x0B, 0xD5, 0xB8, 0x81, 0xE7, 0xE5, 0x47, 0x6D,- 0x31, 0x9C, 0xE4, 0xFE, 0x9F, 0x19, 0x18, 0x6E,- 0x4C, 0x08, 0x26, 0xF4, 0x4F, 0x13, 0x1E, 0xB0,- 0x48, 0xE6, 0x5B, 0xE2, 0x42, 0xB1, 0x17, 0x2C,- 0x63, 0xBA, 0xDB, 0x12, 0x3A, 0xB0, 0xCB, 0xE8- },- {- 0xD3, 0x2E, 0x9E, 0xC0, 0x2D, 0x38, 0xD4, 0xE1,- 0xB8, 0x24, 0x9D, 0xF8, 0xDC, 0xB0, 0x0C, 0x5B,- 0x9C, 0x68, 0xEB, 0x89, 0x22, 0x67, 0x2E, 0x35,- 0x05, 0x39, 0x3B, 0x6A, 0x21, 0x0B, 0xA5, 0x6F,- 0x94, 0x96, 0xE5, 0xEE, 0x04, 0x90, 0xEF, 0x38,- 0x7C, 0x3C, 0xDE, 0xC0, 0x61, 0xF0, 0x6B, 0xC0,- 0x38, 0x2D, 0x93, 0x04, 0xCA, 0xFB, 0xB8, 0xE0,- 0xCD, 0x33, 0xD5, 0x70, 0x29, 0xE6, 0x2D, 0xF2- },- {- 0x8C, 0x15, 0x12, 0x46, 0x60, 0x89, 0xF0, 0x5B,- 0x37, 0x75, 0xC2, 0x62, 0xB6, 0x2D, 0x22, 0xB8,- 0x38, 0x54, 0xA8, 0x32, 0x18, 0x13, 0x0B, 0x4E,- 0xC9, 0x1B, 0x3C, 0xCB, 0xD2, 0x93, 0xD2, 0xA5,- 0x43, 0x02, 0xCE, 0xCA, 0xAB, 0x9B, 0x10, 0x0C,- 0x68, 0xD1, 0xE6, 0xDD, 0xC8, 0xF0, 0x7C, 0xDD,- 0xBD, 0xFE, 0x6F, 0xDA, 0xAA, 0xF0, 0x99, 0xCC,- 0x09, 0xD6, 0xB7, 0x25, 0x87, 0x9C, 0x63, 0x69- },- {- 0x91, 0xA7, 0xF6, 0x1C, 0x97, 0xC2, 0x91, 0x1E,- 0x4C, 0x81, 0x2E, 0xF7, 0x1D, 0x78, 0x0A, 0xD8,- 0xFA, 0x78, 0x87, 0x94, 0x56, 0x1D, 0x08, 0x30,- 0x3F, 0xD1, 0xC1, 0xCB, 0x60, 0x8A, 0x46, 0xA1,- 0x25, 0x63, 0x08, 0x6E, 0xC5, 0xB3, 0x9D, 0x47,- 0x1A, 0xED, 0x94, 0xFB, 0x0F, 0x6C, 0x67, 0x8A,- 0x43, 0xB8, 0x79, 0x29, 0x32, 0xF9, 0x02, 0x8D,- 0x77, 0x2A, 0x22, 0x76, 0x8E, 0xA2, 0x3A, 0x9B- },- {- 0x4F, 0x6B, 0xB2, 0x22, 0xA3, 0x95, 0xE8, 0xB1,- 0x8F, 0x6B, 0xA1, 0x55, 0x47, 0x7A, 0xED, 0x3F,- 0x07, 0x29, 0xAC, 0x9E, 0x83, 0xE1, 0x6D, 0x31,- 0xA2, 0xA8, 0xBC, 0x65, 0x54, 0x22, 0xB8, 0x37,- 0xC8, 0x91, 0xC6, 0x19, 0x9E, 0x6F, 0x0D, 0x75,- 0x79, 0x9E, 0x3B, 0x69, 0x15, 0x25, 0xC5, 0x81,- 0x95, 0x35, 0x17, 0xF2, 0x52, 0xC4, 0xB9, 0xE3,- 0xA2, 0x7A, 0x28, 0xFB, 0xAF, 0x49, 0x64, 0x4C- },- {- 0x5D, 0x06, 0xC0, 0x7E, 0x7A, 0x64, 0x6C, 0x41,- 0x3A, 0x50, 0x1C, 0x3F, 0x4B, 0xB2, 0xFC, 0x38,- 0x12, 0x7D, 0xE7, 0x50, 0x9B, 0x70, 0x77, 0xC4,- 0xD9, 0xB5, 0x61, 0x32, 0x01, 0xC1, 0xAA, 0x02,- 0xFD, 0x5F, 0x79, 0xD2, 0x74, 0x59, 0x15, 0xDD,- 0x57, 0xFB, 0xCB, 0x4C, 0xE0, 0x86, 0x95, 0xF6,- 0xEF, 0xC0, 0xCB, 0x3D, 0x2D, 0x33, 0x0E, 0x19,- 0xB4, 0xB0, 0xE6, 0x00, 0x4E, 0xA6, 0x47, 0x1E- },- {- 0xB9, 0x67, 0x56, 0xE5, 0x79, 0x09, 0x96, 0x8F,- 0x14, 0xB7, 0x96, 0xA5, 0xD3, 0x0F, 0x4C, 0x9D,- 0x67, 0x14, 0x72, 0xCF, 0x82, 0xC8, 0xCF, 0xB2,- 0xCA, 0xCA, 0x7A, 0xC7, 0xA4, 0x4C, 0xA0, 0xA1,- 0x4C, 0x98, 0x42, 0xD0, 0x0C, 0x82, 0xE3, 0x37,- 0x50, 0x2C, 0x94, 0xD5, 0x96, 0x0A, 0xCA, 0x4C,- 0x49, 0x2E, 0xA7, 0xB0, 0xDF, 0x91, 0x9D, 0xDF,- 0x1A, 0xAD, 0xA2, 0xA2, 0x75, 0xBB, 0x10, 0xD4- },- {- 0xFF, 0x0A, 0x01, 0x5E, 0x98, 0xDB, 0x9C, 0x99,- 0xF0, 0x39, 0x77, 0x71, 0x0A, 0xAC, 0x3E, 0x65,- 0x8C, 0x0D, 0x89, 0x6F, 0x6D, 0x71, 0xD6, 0x18,- 0xBA, 0x79, 0xDC, 0x6C, 0xF7, 0x2A, 0xC7, 0x5B,- 0x7C, 0x03, 0x8E, 0xB6, 0x86, 0x2D, 0xED, 0xE4,- 0x54, 0x3E, 0x14, 0x54, 0x13, 0xA6, 0x36, 0x8D,- 0x69, 0xF5, 0x72, 0x2C, 0x82, 0x7B, 0xA3, 0xEF,- 0x25, 0xB6, 0xAE, 0x64, 0x40, 0xD3, 0x92, 0x76- },- {- 0x5B, 0x21, 0xC5, 0xFD, 0x88, 0x68, 0x36, 0x76,- 0x12, 0x47, 0x4F, 0xA2, 0xE7, 0x0E, 0x9C, 0xFA,- 0x22, 0x01, 0xFF, 0xEE, 0xE8, 0xFA, 0xFA, 0xB5,- 0x79, 0x7A, 0xD5, 0x8F, 0xEF, 0xA1, 0x7C, 0x9B,- 0x5B, 0x10, 0x7D, 0xA4, 0xA3, 0xDB, 0x63, 0x20,- 0xBA, 0xAF, 0x2C, 0x86, 0x17, 0xD5, 0xA5, 0x1D,- 0xF9, 0x14, 0xAE, 0x88, 0xDA, 0x38, 0x67, 0xC2,- 0xD4, 0x1F, 0x0C, 0xC1, 0x4F, 0xA6, 0x79, 0x28- },-};-----static const uint8_t blake2b_keyed_kat[KAT_LENGTH][BLAKE2B_OUTBYTES] =-{- {- 0x10, 0xEB, 0xB6, 0x77, 0x00, 0xB1, 0x86, 0x8E,- 0xFB, 0x44, 0x17, 0x98, 0x7A, 0xCF, 0x46, 0x90,- 0xAE, 0x9D, 0x97, 0x2F, 0xB7, 0xA5, 0x90, 0xC2,- 0xF0, 0x28, 0x71, 0x79, 0x9A, 0xAA, 0x47, 0x86,- 0xB5, 0xE9, 0x96, 0xE8, 0xF0, 0xF4, 0xEB, 0x98,- 0x1F, 0xC2, 0x14, 0xB0, 0x05, 0xF4, 0x2D, 0x2F,- 0xF4, 0x23, 0x34, 0x99, 0x39, 0x16, 0x53, 0xDF,- 0x7A, 0xEF, 0xCB, 0xC1, 0x3F, 0xC5, 0x15, 0x68- },- {- 0x96, 0x1F, 0x6D, 0xD1, 0xE4, 0xDD, 0x30, 0xF6,- 0x39, 0x01, 0x69, 0x0C, 0x51, 0x2E, 0x78, 0xE4,- 0xB4, 0x5E, 0x47, 0x42, 0xED, 0x19, 0x7C, 0x3C,- 0x5E, 0x45, 0xC5, 0x49, 0xFD, 0x25, 0xF2, 0xE4,- 0x18, 0x7B, 0x0B, 0xC9, 0xFE, 0x30, 0x49, 0x2B,- 0x16, 0xB0, 0xD0, 0xBC, 0x4E, 0xF9, 0xB0, 0xF3,- 0x4C, 0x70, 0x03, 0xFA, 0xC0, 0x9A, 0x5E, 0xF1,- 0x53, 0x2E, 0x69, 0x43, 0x02, 0x34, 0xCE, 0xBD- },- {- 0xDA, 0x2C, 0xFB, 0xE2, 0xD8, 0x40, 0x9A, 0x0F,- 0x38, 0x02, 0x61, 0x13, 0x88, 0x4F, 0x84, 0xB5,- 0x01, 0x56, 0x37, 0x1A, 0xE3, 0x04, 0xC4, 0x43,- 0x01, 0x73, 0xD0, 0x8A, 0x99, 0xD9, 0xFB, 0x1B,- 0x98, 0x31, 0x64, 0xA3, 0x77, 0x07, 0x06, 0xD5,- 0x37, 0xF4, 0x9E, 0x0C, 0x91, 0x6D, 0x9F, 0x32,- 0xB9, 0x5C, 0xC3, 0x7A, 0x95, 0xB9, 0x9D, 0x85,- 0x74, 0x36, 0xF0, 0x23, 0x2C, 0x88, 0xA9, 0x65- },- {- 0x33, 0xD0, 0x82, 0x5D, 0xDD, 0xF7, 0xAD, 0xA9,- 0x9B, 0x0E, 0x7E, 0x30, 0x71, 0x04, 0xAD, 0x07,- 0xCA, 0x9C, 0xFD, 0x96, 0x92, 0x21, 0x4F, 0x15,- 0x61, 0x35, 0x63, 0x15, 0xE7, 0x84, 0xF3, 0xE5,- 0xA1, 0x7E, 0x36, 0x4A, 0xE9, 0xDB, 0xB1, 0x4C,- 0xB2, 0x03, 0x6D, 0xF9, 0x32, 0xB7, 0x7F, 0x4B,- 0x29, 0x27, 0x61, 0x36, 0x5F, 0xB3, 0x28, 0xDE,- 0x7A, 0xFD, 0xC6, 0xD8, 0x99, 0x8F, 0x5F, 0xC1- },- {- 0xBE, 0xAA, 0x5A, 0x3D, 0x08, 0xF3, 0x80, 0x71,- 0x43, 0xCF, 0x62, 0x1D, 0x95, 0xCD, 0x69, 0x05,- 0x14, 0xD0, 0xB4, 0x9E, 0xFF, 0xF9, 0xC9, 0x1D,- 0x24, 0xB5, 0x92, 0x41, 0xEC, 0x0E, 0xEF, 0xA5,- 0xF6, 0x01, 0x96, 0xD4, 0x07, 0x04, 0x8B, 0xBA,- 0x8D, 0x21, 0x46, 0x82, 0x8E, 0xBC, 0xB0, 0x48,- 0x8D, 0x88, 0x42, 0xFD, 0x56, 0xBB, 0x4F, 0x6D,- 0xF8, 0xE1, 0x9C, 0x4B, 0x4D, 0xAA, 0xB8, 0xAC- },- {- 0x09, 0x80, 0x84, 0xB5, 0x1F, 0xD1, 0x3D, 0xEA,- 0xE5, 0xF4, 0x32, 0x0D, 0xE9, 0x4A, 0x68, 0x8E,- 0xE0, 0x7B, 0xAE, 0xA2, 0x80, 0x04, 0x86, 0x68,- 0x9A, 0x86, 0x36, 0x11, 0x7B, 0x46, 0xC1, 0xF4,- 0xC1, 0xF6, 0xAF, 0x7F, 0x74, 0xAE, 0x7C, 0x85,- 0x76, 0x00, 0x45, 0x6A, 0x58, 0xA3, 0xAF, 0x25,- 0x1D, 0xC4, 0x72, 0x3A, 0x64, 0xCC, 0x7C, 0x0A,- 0x5A, 0xB6, 0xD9, 0xCA, 0xC9, 0x1C, 0x20, 0xBB- },- {- 0x60, 0x44, 0x54, 0x0D, 0x56, 0x08, 0x53, 0xEB,- 0x1C, 0x57, 0xDF, 0x00, 0x77, 0xDD, 0x38, 0x10,- 0x94, 0x78, 0x1C, 0xDB, 0x90, 0x73, 0xE5, 0xB1,- 0xB3, 0xD3, 0xF6, 0xC7, 0x82, 0x9E, 0x12, 0x06,- 0x6B, 0xBA, 0xCA, 0x96, 0xD9, 0x89, 0xA6, 0x90,- 0xDE, 0x72, 0xCA, 0x31, 0x33, 0xA8, 0x36, 0x52,- 0xBA, 0x28, 0x4A, 0x6D, 0x62, 0x94, 0x2B, 0x27,- 0x1F, 0xFA, 0x26, 0x20, 0xC9, 0xE7, 0x5B, 0x1F- },- {- 0x7A, 0x8C, 0xFE, 0x9B, 0x90, 0xF7, 0x5F, 0x7E,- 0xCB, 0x3A, 0xCC, 0x05, 0x3A, 0xAE, 0xD6, 0x19,- 0x31, 0x12, 0xB6, 0xF6, 0xA4, 0xAE, 0xEB, 0x3F,- 0x65, 0xD3, 0xDE, 0x54, 0x19, 0x42, 0xDE, 0xB9,- 0xE2, 0x22, 0x81, 0x52, 0xA3, 0xC4, 0xBB, 0xBE,- 0x72, 0xFC, 0x3B, 0x12, 0x62, 0x95, 0x28, 0xCF,- 0xBB, 0x09, 0xFE, 0x63, 0x0F, 0x04, 0x74, 0x33,- 0x9F, 0x54, 0xAB, 0xF4, 0x53, 0xE2, 0xED, 0x52- },- {- 0x38, 0x0B, 0xEA, 0xF6, 0xEA, 0x7C, 0xC9, 0x36,- 0x5E, 0x27, 0x0E, 0xF0, 0xE6, 0xF3, 0xA6, 0x4F,- 0xB9, 0x02, 0xAC, 0xAE, 0x51, 0xDD, 0x55, 0x12,- 0xF8, 0x42, 0x59, 0xAD, 0x2C, 0x91, 0xF4, 0xBC,- 0x41, 0x08, 0xDB, 0x73, 0x19, 0x2A, 0x5B, 0xBF,- 0xB0, 0xCB, 0xCF, 0x71, 0xE4, 0x6C, 0x3E, 0x21,- 0xAE, 0xE1, 0xC5, 0xE8, 0x60, 0xDC, 0x96, 0xE8,- 0xEB, 0x0B, 0x7B, 0x84, 0x26, 0xE6, 0xAB, 0xE9- },- {- 0x60, 0xFE, 0x3C, 0x45, 0x35, 0xE1, 0xB5, 0x9D,- 0x9A, 0x61, 0xEA, 0x85, 0x00, 0xBF, 0xAC, 0x41,- 0xA6, 0x9D, 0xFF, 0xB1, 0xCE, 0xAD, 0xD9, 0xAC,- 0xA3, 0x23, 0xE9, 0xA6, 0x25, 0xB6, 0x4D, 0xA5,- 0x76, 0x3B, 0xAD, 0x72, 0x26, 0xDA, 0x02, 0xB9,- 0xC8, 0xC4, 0xF1, 0xA5, 0xDE, 0x14, 0x0A, 0xC5,- 0xA6, 0xC1, 0x12, 0x4E, 0x4F, 0x71, 0x8C, 0xE0,- 0xB2, 0x8E, 0xA4, 0x73, 0x93, 0xAA, 0x66, 0x37- },- {- 0x4F, 0xE1, 0x81, 0xF5, 0x4A, 0xD6, 0x3A, 0x29,- 0x83, 0xFE, 0xAA, 0xF7, 0x7D, 0x1E, 0x72, 0x35,- 0xC2, 0xBE, 0xB1, 0x7F, 0xA3, 0x28, 0xB6, 0xD9,- 0x50, 0x5B, 0xDA, 0x32, 0x7D, 0xF1, 0x9F, 0xC3,- 0x7F, 0x02, 0xC4, 0xB6, 0xF0, 0x36, 0x8C, 0xE2,- 0x31, 0x47, 0x31, 0x3A, 0x8E, 0x57, 0x38, 0xB5,- 0xFA, 0x2A, 0x95, 0xB2, 0x9D, 0xE1, 0xC7, 0xF8,- 0x26, 0x4E, 0xB7, 0x7B, 0x69, 0xF5, 0x85, 0xCD- },- {- 0xF2, 0x28, 0x77, 0x3C, 0xE3, 0xF3, 0xA4, 0x2B,- 0x5F, 0x14, 0x4D, 0x63, 0x23, 0x7A, 0x72, 0xD9,- 0x96, 0x93, 0xAD, 0xB8, 0x83, 0x7D, 0x0E, 0x11,- 0x2A, 0x8A, 0x0F, 0x8F, 0xFF, 0xF2, 0xC3, 0x62,- 0x85, 0x7A, 0xC4, 0x9C, 0x11, 0xEC, 0x74, 0x0D,- 0x15, 0x00, 0x74, 0x9D, 0xAC, 0x9B, 0x1F, 0x45,- 0x48, 0x10, 0x8B, 0xF3, 0x15, 0x57, 0x94, 0xDC,- 0xC9, 0xE4, 0x08, 0x28, 0x49, 0xE2, 0xB8, 0x5B- },- {- 0x96, 0x24, 0x52, 0xA8, 0x45, 0x5C, 0xC5, 0x6C,- 0x85, 0x11, 0x31, 0x7E, 0x3B, 0x1F, 0x3B, 0x2C,- 0x37, 0xDF, 0x75, 0xF5, 0x88, 0xE9, 0x43, 0x25,- 0xFD, 0xD7, 0x70, 0x70, 0x35, 0x9C, 0xF6, 0x3A,- 0x9A, 0xE6, 0xE9, 0x30, 0x93, 0x6F, 0xDF, 0x8E,- 0x1E, 0x08, 0xFF, 0xCA, 0x44, 0x0C, 0xFB, 0x72,- 0xC2, 0x8F, 0x06, 0xD8, 0x9A, 0x21, 0x51, 0xD1,- 0xC4, 0x6C, 0xD5, 0xB2, 0x68, 0xEF, 0x85, 0x63- },- {- 0x43, 0xD4, 0x4B, 0xFA, 0x18, 0x76, 0x8C, 0x59,- 0x89, 0x6B, 0xF7, 0xED, 0x17, 0x65, 0xCB, 0x2D,- 0x14, 0xAF, 0x8C, 0x26, 0x02, 0x66, 0x03, 0x90,- 0x99, 0xB2, 0x5A, 0x60, 0x3E, 0x4D, 0xDC, 0x50,- 0x39, 0xD6, 0xEF, 0x3A, 0x91, 0x84, 0x7D, 0x10,- 0x88, 0xD4, 0x01, 0xC0, 0xC7, 0xE8, 0x47, 0x78,- 0x1A, 0x8A, 0x59, 0x0D, 0x33, 0xA3, 0xC6, 0xCB,- 0x4D, 0xF0, 0xFA, 0xB1, 0xC2, 0xF2, 0x23, 0x55- },- {- 0xDC, 0xFF, 0xA9, 0xD5, 0x8C, 0x2A, 0x4C, 0xA2,- 0xCD, 0xBB, 0x0C, 0x7A, 0xA4, 0xC4, 0xC1, 0xD4,- 0x51, 0x65, 0x19, 0x00, 0x89, 0xF4, 0xE9, 0x83,- 0xBB, 0x1C, 0x2C, 0xAB, 0x4A, 0xAE, 0xFF, 0x1F,- 0xA2, 0xB5, 0xEE, 0x51, 0x6F, 0xEC, 0xD7, 0x80,- 0x54, 0x02, 0x40, 0xBF, 0x37, 0xE5, 0x6C, 0x8B,- 0xCC, 0xA7, 0xFA, 0xB9, 0x80, 0xE1, 0xE6, 0x1C,- 0x94, 0x00, 0xD8, 0xA9, 0xA5, 0xB1, 0x4A, 0xC6- },- {- 0x6F, 0xBF, 0x31, 0xB4, 0x5A, 0xB0, 0xC0, 0xB8,- 0xDA, 0xD1, 0xC0, 0xF5, 0xF4, 0x06, 0x13, 0x79,- 0x91, 0x2D, 0xDE, 0x5A, 0xA9, 0x22, 0x09, 0x9A,- 0x03, 0x0B, 0x72, 0x5C, 0x73, 0x34, 0x6C, 0x52,- 0x42, 0x91, 0xAD, 0xEF, 0x89, 0xD2, 0xF6, 0xFD,- 0x8D, 0xFC, 0xDA, 0x6D, 0x07, 0xDA, 0xD8, 0x11,- 0xA9, 0x31, 0x45, 0x36, 0xC2, 0x91, 0x5E, 0xD4,- 0x5D, 0xA3, 0x49, 0x47, 0xE8, 0x3D, 0xE3, 0x4E- },- {- 0xA0, 0xC6, 0x5B, 0xDD, 0xDE, 0x8A, 0xDE, 0xF5,- 0x72, 0x82, 0xB0, 0x4B, 0x11, 0xE7, 0xBC, 0x8A,- 0xAB, 0x10, 0x5B, 0x99, 0x23, 0x1B, 0x75, 0x0C,- 0x02, 0x1F, 0x4A, 0x73, 0x5C, 0xB1, 0xBC, 0xFA,- 0xB8, 0x75, 0x53, 0xBB, 0xA3, 0xAB, 0xB0, 0xC3,- 0xE6, 0x4A, 0x0B, 0x69, 0x55, 0x28, 0x51, 0x85,- 0xA0, 0xBD, 0x35, 0xFB, 0x8C, 0xFD, 0xE5, 0x57,- 0x32, 0x9B, 0xEB, 0xB1, 0xF6, 0x29, 0xEE, 0x93- },- {- 0xF9, 0x9D, 0x81, 0x55, 0x50, 0x55, 0x8E, 0x81,- 0xEC, 0xA2, 0xF9, 0x67, 0x18, 0xAE, 0xD1, 0x0D,- 0x86, 0xF3, 0xF1, 0xCF, 0xB6, 0x75, 0xCC, 0xE0,- 0x6B, 0x0E, 0xFF, 0x02, 0xF6, 0x17, 0xC5, 0xA4,- 0x2C, 0x5A, 0xA7, 0x60, 0x27, 0x0F, 0x26, 0x79,- 0xDA, 0x26, 0x77, 0xC5, 0xAE, 0xB9, 0x4F, 0x11,- 0x42, 0x27, 0x7F, 0x21, 0xC7, 0xF7, 0x9F, 0x3C,- 0x4F, 0x0C, 0xCE, 0x4E, 0xD8, 0xEE, 0x62, 0xB1- },- {- 0x95, 0x39, 0x1D, 0xA8, 0xFC, 0x7B, 0x91, 0x7A,- 0x20, 0x44, 0xB3, 0xD6, 0xF5, 0x37, 0x4E, 0x1C,- 0xA0, 0x72, 0xB4, 0x14, 0x54, 0xD5, 0x72, 0xC7,- 0x35, 0x6C, 0x05, 0xFD, 0x4B, 0xC1, 0xE0, 0xF4,- 0x0B, 0x8B, 0xB8, 0xB4, 0xA9, 0xF6, 0xBC, 0xE9,- 0xBE, 0x2C, 0x46, 0x23, 0xC3, 0x99, 0xB0, 0xDC,- 0xA0, 0xDA, 0xB0, 0x5C, 0xB7, 0x28, 0x1B, 0x71,- 0xA2, 0x1B, 0x0E, 0xBC, 0xD9, 0xE5, 0x56, 0x70- },- {- 0x04, 0xB9, 0xCD, 0x3D, 0x20, 0xD2, 0x21, 0xC0,- 0x9A, 0xC8, 0x69, 0x13, 0xD3, 0xDC, 0x63, 0x04,- 0x19, 0x89, 0xA9, 0xA1, 0xE6, 0x94, 0xF1, 0xE6,- 0x39, 0xA3, 0xBA, 0x7E, 0x45, 0x18, 0x40, 0xF7,- 0x50, 0xC2, 0xFC, 0x19, 0x1D, 0x56, 0xAD, 0x61,- 0xF2, 0xE7, 0x93, 0x6B, 0xC0, 0xAC, 0x8E, 0x09,- 0x4B, 0x60, 0xCA, 0xEE, 0xD8, 0x78, 0xC1, 0x87,- 0x99, 0x04, 0x54, 0x02, 0xD6, 0x1C, 0xEA, 0xF9- },- {- 0xEC, 0x0E, 0x0E, 0xF7, 0x07, 0xE4, 0xED, 0x6C,- 0x0C, 0x66, 0xF9, 0xE0, 0x89, 0xE4, 0x95, 0x4B,- 0x05, 0x80, 0x30, 0xD2, 0xDD, 0x86, 0x39, 0x8F,- 0xE8, 0x40, 0x59, 0x63, 0x1F, 0x9E, 0xE5, 0x91,- 0xD9, 0xD7, 0x73, 0x75, 0x35, 0x51, 0x49, 0x17,- 0x8C, 0x0C, 0xF8, 0xF8, 0xE7, 0xC4, 0x9E, 0xD2,- 0xA5, 0xE4, 0xF9, 0x54, 0x88, 0xA2, 0x24, 0x70,- 0x67, 0xC2, 0x08, 0x51, 0x0F, 0xAD, 0xC4, 0x4C- },- {- 0x9A, 0x37, 0xCC, 0xE2, 0x73, 0xB7, 0x9C, 0x09,- 0x91, 0x36, 0x77, 0x51, 0x0E, 0xAF, 0x76, 0x88,- 0xE8, 0x9B, 0x33, 0x14, 0xD3, 0x53, 0x2F, 0xD2,- 0x76, 0x4C, 0x39, 0xDE, 0x02, 0x2A, 0x29, 0x45,- 0xB5, 0x71, 0x0D, 0x13, 0x51, 0x7A, 0xF8, 0xDD,- 0xC0, 0x31, 0x66, 0x24, 0xE7, 0x3B, 0xEC, 0x1C,- 0xE6, 0x7D, 0xF1, 0x52, 0x28, 0x30, 0x20, 0x36,- 0xF3, 0x30, 0xAB, 0x0C, 0xB4, 0xD2, 0x18, 0xDD- },- {- 0x4C, 0xF9, 0xBB, 0x8F, 0xB3, 0xD4, 0xDE, 0x8B,- 0x38, 0xB2, 0xF2, 0x62, 0xD3, 0xC4, 0x0F, 0x46,- 0xDF, 0xE7, 0x47, 0xE8, 0xFC, 0x0A, 0x41, 0x4C,- 0x19, 0x3D, 0x9F, 0xCF, 0x75, 0x31, 0x06, 0xCE,- 0x47, 0xA1, 0x8F, 0x17, 0x2F, 0x12, 0xE8, 0xA2,- 0xF1, 0xC2, 0x67, 0x26, 0x54, 0x53, 0x58, 0xE5,- 0xEE, 0x28, 0xC9, 0xE2, 0x21, 0x3A, 0x87, 0x87,- 0xAA, 0xFB, 0xC5, 0x16, 0xD2, 0x34, 0x31, 0x52- },- {- 0x64, 0xE0, 0xC6, 0x3A, 0xF9, 0xC8, 0x08, 0xFD,- 0x89, 0x31, 0x37, 0x12, 0x98, 0x67, 0xFD, 0x91,- 0x93, 0x9D, 0x53, 0xF2, 0xAF, 0x04, 0xBE, 0x4F,- 0xA2, 0x68, 0x00, 0x61, 0x00, 0x06, 0x9B, 0x2D,- 0x69, 0xDA, 0xA5, 0xC5, 0xD8, 0xED, 0x7F, 0xDD,- 0xCB, 0x2A, 0x70, 0xEE, 0xEC, 0xDF, 0x2B, 0x10,- 0x5D, 0xD4, 0x6A, 0x1E, 0x3B, 0x73, 0x11, 0x72,- 0x8F, 0x63, 0x9A, 0xB4, 0x89, 0x32, 0x6B, 0xC9- },- {- 0x5E, 0x9C, 0x93, 0x15, 0x8D, 0x65, 0x9B, 0x2D,- 0xEF, 0x06, 0xB0, 0xC3, 0xC7, 0x56, 0x50, 0x45,- 0x54, 0x26, 0x62, 0xD6, 0xEE, 0xE8, 0xA9, 0x6A,- 0x89, 0xB7, 0x8A, 0xDE, 0x09, 0xFE, 0x8B, 0x3D,- 0xCC, 0x09, 0x6D, 0x4F, 0xE4, 0x88, 0x15, 0xD8,- 0x8D, 0x8F, 0x82, 0x62, 0x01, 0x56, 0x60, 0x2A,- 0xF5, 0x41, 0x95, 0x5E, 0x1F, 0x6C, 0xA3, 0x0D,- 0xCE, 0x14, 0xE2, 0x54, 0xC3, 0x26, 0xB8, 0x8F- },- {- 0x77, 0x75, 0xDF, 0xF8, 0x89, 0x45, 0x8D, 0xD1,- 0x1A, 0xEF, 0x41, 0x72, 0x76, 0x85, 0x3E, 0x21,- 0x33, 0x5E, 0xB8, 0x8E, 0x4D, 0xEC, 0x9C, 0xFB,- 0x4E, 0x9E, 0xDB, 0x49, 0x82, 0x00, 0x88, 0x55,- 0x1A, 0x2C, 0xA6, 0x03, 0x39, 0xF1, 0x20, 0x66,- 0x10, 0x11, 0x69, 0xF0, 0xDF, 0xE8, 0x4B, 0x09,- 0x8F, 0xDD, 0xB1, 0x48, 0xD9, 0xDA, 0x6B, 0x3D,- 0x61, 0x3D, 0xF2, 0x63, 0x88, 0x9A, 0xD6, 0x4B- },- {- 0xF0, 0xD2, 0x80, 0x5A, 0xFB, 0xB9, 0x1F, 0x74,- 0x39, 0x51, 0x35, 0x1A, 0x6D, 0x02, 0x4F, 0x93,- 0x53, 0xA2, 0x3C, 0x7C, 0xE1, 0xFC, 0x2B, 0x05,- 0x1B, 0x3A, 0x8B, 0x96, 0x8C, 0x23, 0x3F, 0x46,- 0xF5, 0x0F, 0x80, 0x6E, 0xCB, 0x15, 0x68, 0xFF,- 0xAA, 0x0B, 0x60, 0x66, 0x1E, 0x33, 0x4B, 0x21,- 0xDD, 0xE0, 0x4F, 0x8F, 0xA1, 0x55, 0xAC, 0x74,- 0x0E, 0xEB, 0x42, 0xE2, 0x0B, 0x60, 0xD7, 0x64- },- {- 0x86, 0xA2, 0xAF, 0x31, 0x6E, 0x7D, 0x77, 0x54,- 0x20, 0x1B, 0x94, 0x2E, 0x27, 0x53, 0x64, 0xAC,- 0x12, 0xEA, 0x89, 0x62, 0xAB, 0x5B, 0xD8, 0xD7,- 0xFB, 0x27, 0x6D, 0xC5, 0xFB, 0xFF, 0xC8, 0xF9,- 0xA2, 0x8C, 0xAE, 0x4E, 0x48, 0x67, 0xDF, 0x67,- 0x80, 0xD9, 0xB7, 0x25, 0x24, 0x16, 0x09, 0x27,- 0xC8, 0x55, 0xDA, 0x5B, 0x60, 0x78, 0xE0, 0xB5,- 0x54, 0xAA, 0x91, 0xE3, 0x1C, 0xB9, 0xCA, 0x1D- },- {- 0x10, 0xBD, 0xF0, 0xCA, 0xA0, 0x80, 0x27, 0x05,- 0xE7, 0x06, 0x36, 0x9B, 0xAF, 0x8A, 0x3F, 0x79,- 0xD7, 0x2C, 0x0A, 0x03, 0xA8, 0x06, 0x75, 0xA7,- 0xBB, 0xB0, 0x0B, 0xE3, 0xA4, 0x5E, 0x51, 0x64,- 0x24, 0xD1, 0xEE, 0x88, 0xEF, 0xB5, 0x6F, 0x6D,- 0x57, 0x77, 0x54, 0x5A, 0xE6, 0xE2, 0x77, 0x65,- 0xC3, 0xA8, 0xF5, 0xE4, 0x93, 0xFC, 0x30, 0x89,- 0x15, 0x63, 0x89, 0x33, 0xA1, 0xDF, 0xEE, 0x55- },- {- 0xB0, 0x17, 0x81, 0x09, 0x2B, 0x17, 0x48, 0x45,- 0x9E, 0x2E, 0x4E, 0xC1, 0x78, 0x69, 0x66, 0x27,- 0xBF, 0x4E, 0xBA, 0xFE, 0xBB, 0xA7, 0x74, 0xEC,- 0xF0, 0x18, 0xB7, 0x9A, 0x68, 0xAE, 0xB8, 0x49,- 0x17, 0xBF, 0x0B, 0x84, 0xBB, 0x79, 0xD1, 0x7B,- 0x74, 0x31, 0x51, 0x14, 0x4C, 0xD6, 0x6B, 0x7B,- 0x33, 0xA4, 0xB9, 0xE5, 0x2C, 0x76, 0xC4, 0xE1,- 0x12, 0x05, 0x0F, 0xF5, 0x38, 0x5B, 0x7F, 0x0B- },- {- 0xC6, 0xDB, 0xC6, 0x1D, 0xEC, 0x6E, 0xAE, 0xAC,- 0x81, 0xE3, 0xD5, 0xF7, 0x55, 0x20, 0x3C, 0x8E,- 0x22, 0x05, 0x51, 0x53, 0x4A, 0x0B, 0x2F, 0xD1,- 0x05, 0xA9, 0x18, 0x89, 0x94, 0x5A, 0x63, 0x85,- 0x50, 0x20, 0x4F, 0x44, 0x09, 0x3D, 0xD9, 0x98,- 0xC0, 0x76, 0x20, 0x5D, 0xFF, 0xAD, 0x70, 0x3A,- 0x0E, 0x5C, 0xD3, 0xC7, 0xF4, 0x38, 0xA7, 0xE6,- 0x34, 0xCD, 0x59, 0xFE, 0xDE, 0xDB, 0x53, 0x9E- },- {- 0xEB, 0xA5, 0x1A, 0xCF, 0xFB, 0x4C, 0xEA, 0x31,- 0xDB, 0x4B, 0x8D, 0x87, 0xE9, 0xBF, 0x7D, 0xD4,- 0x8F, 0xE9, 0x7B, 0x02, 0x53, 0xAE, 0x67, 0xAA,- 0x58, 0x0F, 0x9A, 0xC4, 0xA9, 0xD9, 0x41, 0xF2,- 0xBE, 0xA5, 0x18, 0xEE, 0x28, 0x68, 0x18, 0xCC,- 0x9F, 0x63, 0x3F, 0x2A, 0x3B, 0x9F, 0xB6, 0x8E,- 0x59, 0x4B, 0x48, 0xCD, 0xD6, 0xD5, 0x15, 0xBF,- 0x1D, 0x52, 0xBA, 0x6C, 0x85, 0xA2, 0x03, 0xA7- },- {- 0x86, 0x22, 0x1F, 0x3A, 0xDA, 0x52, 0x03, 0x7B,- 0x72, 0x22, 0x4F, 0x10, 0x5D, 0x79, 0x99, 0x23,- 0x1C, 0x5E, 0x55, 0x34, 0xD0, 0x3D, 0xA9, 0xD9,- 0xC0, 0xA1, 0x2A, 0xCB, 0x68, 0x46, 0x0C, 0xD3,- 0x75, 0xDA, 0xF8, 0xE2, 0x43, 0x86, 0x28, 0x6F,- 0x96, 0x68, 0xF7, 0x23, 0x26, 0xDB, 0xF9, 0x9B,- 0xA0, 0x94, 0x39, 0x24, 0x37, 0xD3, 0x98, 0xE9,- 0x5B, 0xB8, 0x16, 0x1D, 0x71, 0x7F, 0x89, 0x91- },- {- 0x55, 0x95, 0xE0, 0x5C, 0x13, 0xA7, 0xEC, 0x4D,- 0xC8, 0xF4, 0x1F, 0xB7, 0x0C, 0xB5, 0x0A, 0x71,- 0xBC, 0xE1, 0x7C, 0x02, 0x4F, 0xF6, 0xDE, 0x7A,- 0xF6, 0x18, 0xD0, 0xCC, 0x4E, 0x9C, 0x32, 0xD9,- 0x57, 0x0D, 0x6D, 0x3E, 0xA4, 0x5B, 0x86, 0x52,- 0x54, 0x91, 0x03, 0x0C, 0x0D, 0x8F, 0x2B, 0x18,- 0x36, 0xD5, 0x77, 0x8C, 0x1C, 0xE7, 0x35, 0xC1,- 0x77, 0x07, 0xDF, 0x36, 0x4D, 0x05, 0x43, 0x47- },- {- 0xCE, 0x0F, 0x4F, 0x6A, 0xCA, 0x89, 0x59, 0x0A,- 0x37, 0xFE, 0x03, 0x4D, 0xD7, 0x4D, 0xD5, 0xFA,- 0x65, 0xEB, 0x1C, 0xBD, 0x0A, 0x41, 0x50, 0x8A,- 0xAD, 0xDC, 0x09, 0x35, 0x1A, 0x3C, 0xEA, 0x6D,- 0x18, 0xCB, 0x21, 0x89, 0xC5, 0x4B, 0x70, 0x0C,- 0x00, 0x9F, 0x4C, 0xBF, 0x05, 0x21, 0xC7, 0xEA,- 0x01, 0xBE, 0x61, 0xC5, 0xAE, 0x09, 0xCB, 0x54,- 0xF2, 0x7B, 0xC1, 0xB4, 0x4D, 0x65, 0x8C, 0x82- },- {- 0x7E, 0xE8, 0x0B, 0x06, 0xA2, 0x15, 0xA3, 0xBC,- 0xA9, 0x70, 0xC7, 0x7C, 0xDA, 0x87, 0x61, 0x82,- 0x2B, 0xC1, 0x03, 0xD4, 0x4F, 0xA4, 0xB3, 0x3F,- 0x4D, 0x07, 0xDC, 0xB9, 0x97, 0xE3, 0x6D, 0x55,- 0x29, 0x8B, 0xCE, 0xAE, 0x12, 0x24, 0x1B, 0x3F,- 0xA0, 0x7F, 0xA6, 0x3B, 0xE5, 0x57, 0x60, 0x68,- 0xDA, 0x38, 0x7B, 0x8D, 0x58, 0x59, 0xAE, 0xAB,- 0x70, 0x13, 0x69, 0x84, 0x8B, 0x17, 0x6D, 0x42- },- {- 0x94, 0x0A, 0x84, 0xB6, 0xA8, 0x4D, 0x10, 0x9A,- 0xAB, 0x20, 0x8C, 0x02, 0x4C, 0x6C, 0xE9, 0x64,- 0x76, 0x76, 0xBA, 0x0A, 0xAA, 0x11, 0xF8, 0x6D,- 0xBB, 0x70, 0x18, 0xF9, 0xFD, 0x22, 0x20, 0xA6,- 0xD9, 0x01, 0xA9, 0x02, 0x7F, 0x9A, 0xBC, 0xF9,- 0x35, 0x37, 0x27, 0x27, 0xCB, 0xF0, 0x9E, 0xBD,- 0x61, 0xA2, 0xA2, 0xEE, 0xB8, 0x76, 0x53, 0xE8,- 0xEC, 0xAD, 0x1B, 0xAB, 0x85, 0xDC, 0x83, 0x27- },- {- 0x20, 0x20, 0xB7, 0x82, 0x64, 0xA8, 0x2D, 0x9F,- 0x41, 0x51, 0x14, 0x1A, 0xDB, 0xA8, 0xD4, 0x4B,- 0xF2, 0x0C, 0x5E, 0xC0, 0x62, 0xEE, 0xE9, 0xB5,- 0x95, 0xA1, 0x1F, 0x9E, 0x84, 0x90, 0x1B, 0xF1,- 0x48, 0xF2, 0x98, 0xE0, 0xC9, 0xF8, 0x77, 0x7D,- 0xCD, 0xBC, 0x7C, 0xC4, 0x67, 0x0A, 0xAC, 0x35,- 0x6C, 0xC2, 0xAD, 0x8C, 0xCB, 0x16, 0x29, 0xF1,- 0x6F, 0x6A, 0x76, 0xBC, 0xEF, 0xBE, 0xE7, 0x60- },- {- 0xD1, 0xB8, 0x97, 0xB0, 0xE0, 0x75, 0xBA, 0x68,- 0xAB, 0x57, 0x2A, 0xDF, 0x9D, 0x9C, 0x43, 0x66,- 0x63, 0xE4, 0x3E, 0xB3, 0xD8, 0xE6, 0x2D, 0x92,- 0xFC, 0x49, 0xC9, 0xBE, 0x21, 0x4E, 0x6F, 0x27,- 0x87, 0x3F, 0xE2, 0x15, 0xA6, 0x51, 0x70, 0xE6,- 0xBE, 0xA9, 0x02, 0x40, 0x8A, 0x25, 0xB4, 0x95,- 0x06, 0xF4, 0x7B, 0xAB, 0xD0, 0x7C, 0xEC, 0xF7,- 0x11, 0x3E, 0xC1, 0x0C, 0x5D, 0xD3, 0x12, 0x52- },- {- 0xB1, 0x4D, 0x0C, 0x62, 0xAB, 0xFA, 0x46, 0x9A,- 0x35, 0x71, 0x77, 0xE5, 0x94, 0xC1, 0x0C, 0x19,- 0x42, 0x43, 0xED, 0x20, 0x25, 0xAB, 0x8A, 0xA5,- 0xAD, 0x2F, 0xA4, 0x1A, 0xD3, 0x18, 0xE0, 0xFF,- 0x48, 0xCD, 0x5E, 0x60, 0xBE, 0xC0, 0x7B, 0x13,- 0x63, 0x4A, 0x71, 0x1D, 0x23, 0x26, 0xE4, 0x88,- 0xA9, 0x85, 0xF3, 0x1E, 0x31, 0x15, 0x33, 0x99,- 0xE7, 0x30, 0x88, 0xEF, 0xC8, 0x6A, 0x5C, 0x55- },- {- 0x41, 0x69, 0xC5, 0xCC, 0x80, 0x8D, 0x26, 0x97,- 0xDC, 0x2A, 0x82, 0x43, 0x0D, 0xC2, 0x3E, 0x3C,- 0xD3, 0x56, 0xDC, 0x70, 0xA9, 0x45, 0x66, 0x81,- 0x05, 0x02, 0xB8, 0xD6, 0x55, 0xB3, 0x9A, 0xBF,- 0x9E, 0x7F, 0x90, 0x2F, 0xE7, 0x17, 0xE0, 0x38,- 0x92, 0x19, 0x85, 0x9E, 0x19, 0x45, 0xDF, 0x1A,- 0xF6, 0xAD, 0xA4, 0x2E, 0x4C, 0xCD, 0xA5, 0x5A,- 0x19, 0x7B, 0x71, 0x00, 0xA3, 0x0C, 0x30, 0xA1- },- {- 0x25, 0x8A, 0x4E, 0xDB, 0x11, 0x3D, 0x66, 0xC8,- 0x39, 0xC8, 0xB1, 0xC9, 0x1F, 0x15, 0xF3, 0x5A,- 0xDE, 0x60, 0x9F, 0x11, 0xCD, 0x7F, 0x86, 0x81,- 0xA4, 0x04, 0x5B, 0x9F, 0xEF, 0x7B, 0x0B, 0x24,- 0xC8, 0x2C, 0xDA, 0x06, 0xA5, 0xF2, 0x06, 0x7B,- 0x36, 0x88, 0x25, 0xE3, 0x91, 0x4E, 0x53, 0xD6,- 0x94, 0x8E, 0xDE, 0x92, 0xEF, 0xD6, 0xE8, 0x38,- 0x7F, 0xA2, 0xE5, 0x37, 0x23, 0x9B, 0x5B, 0xEE- },- {- 0x79, 0xD2, 0xD8, 0x69, 0x6D, 0x30, 0xF3, 0x0F,- 0xB3, 0x46, 0x57, 0x76, 0x11, 0x71, 0xA1, 0x1E,- 0x6C, 0x3F, 0x1E, 0x64, 0xCB, 0xE7, 0xBE, 0xBE,- 0xE1, 0x59, 0xCB, 0x95, 0xBF, 0xAF, 0x81, 0x2B,- 0x4F, 0x41, 0x1E, 0x2F, 0x26, 0xD9, 0xC4, 0x21,- 0xDC, 0x2C, 0x28, 0x4A, 0x33, 0x42, 0xD8, 0x23,- 0xEC, 0x29, 0x38, 0x49, 0xE4, 0x2D, 0x1E, 0x46,- 0xB0, 0xA4, 0xAC, 0x1E, 0x3C, 0x86, 0xAB, 0xAA- },- {- 0x8B, 0x94, 0x36, 0x01, 0x0D, 0xC5, 0xDE, 0xE9,- 0x92, 0xAE, 0x38, 0xAE, 0xA9, 0x7F, 0x2C, 0xD6,- 0x3B, 0x94, 0x6D, 0x94, 0xFE, 0xDD, 0x2E, 0xC9,- 0x67, 0x1D, 0xCD, 0xE3, 0xBD, 0x4C, 0xE9, 0x56,- 0x4D, 0x55, 0x5C, 0x66, 0xC1, 0x5B, 0xB2, 0xB9,- 0x00, 0xDF, 0x72, 0xED, 0xB6, 0xB8, 0x91, 0xEB,- 0xCA, 0xDF, 0xEF, 0xF6, 0x3C, 0x9E, 0xA4, 0x03,- 0x6A, 0x99, 0x8B, 0xE7, 0x97, 0x39, 0x81, 0xE7- },- {- 0xC8, 0xF6, 0x8E, 0x69, 0x6E, 0xD2, 0x82, 0x42,- 0xBF, 0x99, 0x7F, 0x5B, 0x3B, 0x34, 0x95, 0x95,- 0x08, 0xE4, 0x2D, 0x61, 0x38, 0x10, 0xF1, 0xE2,- 0xA4, 0x35, 0xC9, 0x6E, 0xD2, 0xFF, 0x56, 0x0C,- 0x70, 0x22, 0xF3, 0x61, 0xA9, 0x23, 0x4B, 0x98,- 0x37, 0xFE, 0xEE, 0x90, 0xBF, 0x47, 0x92, 0x2E,- 0xE0, 0xFD, 0x5F, 0x8D, 0xDF, 0x82, 0x37, 0x18,- 0xD8, 0x6D, 0x1E, 0x16, 0xC6, 0x09, 0x00, 0x71- },- {- 0xB0, 0x2D, 0x3E, 0xEE, 0x48, 0x60, 0xD5, 0x86,- 0x8B, 0x2C, 0x39, 0xCE, 0x39, 0xBF, 0xE8, 0x10,- 0x11, 0x29, 0x05, 0x64, 0xDD, 0x67, 0x8C, 0x85,- 0xE8, 0x78, 0x3F, 0x29, 0x30, 0x2D, 0xFC, 0x13,- 0x99, 0xBA, 0x95, 0xB6, 0xB5, 0x3C, 0xD9, 0xEB,- 0xBF, 0x40, 0x0C, 0xCA, 0x1D, 0xB0, 0xAB, 0x67,- 0xE1, 0x9A, 0x32, 0x5F, 0x2D, 0x11, 0x58, 0x12,- 0xD2, 0x5D, 0x00, 0x97, 0x8A, 0xD1, 0xBC, 0xA4- },- {- 0x76, 0x93, 0xEA, 0x73, 0xAF, 0x3A, 0xC4, 0xDA,- 0xD2, 0x1C, 0xA0, 0xD8, 0xDA, 0x85, 0xB3, 0x11,- 0x8A, 0x7D, 0x1C, 0x60, 0x24, 0xCF, 0xAF, 0x55,- 0x76, 0x99, 0x86, 0x82, 0x17, 0xBC, 0x0C, 0x2F,- 0x44, 0xA1, 0x99, 0xBC, 0x6C, 0x0E, 0xDD, 0x51,- 0x97, 0x98, 0xBA, 0x05, 0xBD, 0x5B, 0x1B, 0x44,- 0x84, 0x34, 0x6A, 0x47, 0xC2, 0xCA, 0xDF, 0x6B,- 0xF3, 0x0B, 0x78, 0x5C, 0xC8, 0x8B, 0x2B, 0xAF- },- {- 0xA0, 0xE5, 0xC1, 0xC0, 0x03, 0x1C, 0x02, 0xE4,- 0x8B, 0x7F, 0x09, 0xA5, 0xE8, 0x96, 0xEE, 0x9A,- 0xEF, 0x2F, 0x17, 0xFC, 0x9E, 0x18, 0xE9, 0x97,- 0xD7, 0xF6, 0xCA, 0xC7, 0xAE, 0x31, 0x64, 0x22,- 0xC2, 0xB1, 0xE7, 0x79, 0x84, 0xE5, 0xF3, 0xA7,- 0x3C, 0xB4, 0x5D, 0xEE, 0xD5, 0xD3, 0xF8, 0x46,- 0x00, 0x10, 0x5E, 0x6E, 0xE3, 0x8F, 0x2D, 0x09,- 0x0C, 0x7D, 0x04, 0x42, 0xEA, 0x34, 0xC4, 0x6D- },- {- 0x41, 0xDA, 0xA6, 0xAD, 0xCF, 0xDB, 0x69, 0xF1,- 0x44, 0x0C, 0x37, 0xB5, 0x96, 0x44, 0x01, 0x65,- 0xC1, 0x5A, 0xDA, 0x59, 0x68, 0x13, 0xE2, 0xE2,- 0x2F, 0x06, 0x0F, 0xCD, 0x55, 0x1F, 0x24, 0xDE,- 0xE8, 0xE0, 0x4B, 0xA6, 0x89, 0x03, 0x87, 0x88,- 0x6C, 0xEE, 0xC4, 0xA7, 0xA0, 0xD7, 0xFC, 0x6B,- 0x44, 0x50, 0x63, 0x92, 0xEC, 0x38, 0x22, 0xC0,- 0xD8, 0xC1, 0xAC, 0xFC, 0x7D, 0x5A, 0xEB, 0xE8- },- {- 0x14, 0xD4, 0xD4, 0x0D, 0x59, 0x84, 0xD8, 0x4C,- 0x5C, 0xF7, 0x52, 0x3B, 0x77, 0x98, 0xB2, 0x54,- 0xE2, 0x75, 0xA3, 0xA8, 0xCC, 0x0A, 0x1B, 0xD0,- 0x6E, 0xBC, 0x0B, 0xEE, 0x72, 0x68, 0x56, 0xAC,- 0xC3, 0xCB, 0xF5, 0x16, 0xFF, 0x66, 0x7C, 0xDA,- 0x20, 0x58, 0xAD, 0x5C, 0x34, 0x12, 0x25, 0x44,- 0x60, 0xA8, 0x2C, 0x92, 0x18, 0x70, 0x41, 0x36,- 0x3C, 0xC7, 0x7A, 0x4D, 0xC2, 0x15, 0xE4, 0x87- },- {- 0xD0, 0xE7, 0xA1, 0xE2, 0xB9, 0xA4, 0x47, 0xFE,- 0xE8, 0x3E, 0x22, 0x77, 0xE9, 0xFF, 0x80, 0x10,- 0xC2, 0xF3, 0x75, 0xAE, 0x12, 0xFA, 0x7A, 0xAA,- 0x8C, 0xA5, 0xA6, 0x31, 0x78, 0x68, 0xA2, 0x6A,- 0x36, 0x7A, 0x0B, 0x69, 0xFB, 0xC1, 0xCF, 0x32,- 0xA5, 0x5D, 0x34, 0xEB, 0x37, 0x06, 0x63, 0x01,- 0x6F, 0x3D, 0x21, 0x10, 0x23, 0x0E, 0xBA, 0x75,- 0x40, 0x28, 0xA5, 0x6F, 0x54, 0xAC, 0xF5, 0x7C- },- {- 0xE7, 0x71, 0xAA, 0x8D, 0xB5, 0xA3, 0xE0, 0x43,- 0xE8, 0x17, 0x8F, 0x39, 0xA0, 0x85, 0x7B, 0xA0,- 0x4A, 0x3F, 0x18, 0xE4, 0xAA, 0x05, 0x74, 0x3C,- 0xF8, 0xD2, 0x22, 0xB0, 0xB0, 0x95, 0x82, 0x53,- 0x50, 0xBA, 0x42, 0x2F, 0x63, 0x38, 0x2A, 0x23,- 0xD9, 0x2E, 0x41, 0x49, 0x07, 0x4E, 0x81, 0x6A,- 0x36, 0xC1, 0xCD, 0x28, 0x28, 0x4D, 0x14, 0x62,- 0x67, 0x94, 0x0B, 0x31, 0xF8, 0x81, 0x8E, 0xA2- },- {- 0xFE, 0xB4, 0xFD, 0x6F, 0x9E, 0x87, 0xA5, 0x6B,- 0xEF, 0x39, 0x8B, 0x32, 0x84, 0xD2, 0xBD, 0xA5,- 0xB5, 0xB0, 0xE1, 0x66, 0x58, 0x3A, 0x66, 0xB6,- 0x1E, 0x53, 0x84, 0x57, 0xFF, 0x05, 0x84, 0x87,- 0x2C, 0x21, 0xA3, 0x29, 0x62, 0xB9, 0x92, 0x8F,- 0xFA, 0xB5, 0x8D, 0xE4, 0xAF, 0x2E, 0xDD, 0x4E,- 0x15, 0xD8, 0xB3, 0x55, 0x70, 0x52, 0x32, 0x07,- 0xFF, 0x4E, 0x2A, 0x5A, 0xA7, 0x75, 0x4C, 0xAA- },- {- 0x46, 0x2F, 0x17, 0xBF, 0x00, 0x5F, 0xB1, 0xC1,- 0xB9, 0xE6, 0x71, 0x77, 0x9F, 0x66, 0x52, 0x09,- 0xEC, 0x28, 0x73, 0xE3, 0xE4, 0x11, 0xF9, 0x8D,- 0xAB, 0xF2, 0x40, 0xA1, 0xD5, 0xEC, 0x3F, 0x95,- 0xCE, 0x67, 0x96, 0xB6, 0xFC, 0x23, 0xFE, 0x17,- 0x19, 0x03, 0xB5, 0x02, 0x02, 0x34, 0x67, 0xDE,- 0xC7, 0x27, 0x3F, 0xF7, 0x48, 0x79, 0xB9, 0x29,- 0x67, 0xA2, 0xA4, 0x3A, 0x5A, 0x18, 0x3D, 0x33- },- {- 0xD3, 0x33, 0x81, 0x93, 0xB6, 0x45, 0x53, 0xDB,- 0xD3, 0x8D, 0x14, 0x4B, 0xEA, 0x71, 0xC5, 0x91,- 0x5B, 0xB1, 0x10, 0xE2, 0xD8, 0x81, 0x80, 0xDB,- 0xC5, 0xDB, 0x36, 0x4F, 0xD6, 0x17, 0x1D, 0xF3,- 0x17, 0xFC, 0x72, 0x68, 0x83, 0x1B, 0x5A, 0xEF,- 0x75, 0xE4, 0x34, 0x2B, 0x2F, 0xAD, 0x87, 0x97,- 0xBA, 0x39, 0xED, 0xDC, 0xEF, 0x80, 0xE6, 0xEC,- 0x08, 0x15, 0x93, 0x50, 0xB1, 0xAD, 0x69, 0x6D- },- {- 0xE1, 0x59, 0x0D, 0x58, 0x5A, 0x3D, 0x39, 0xF7,- 0xCB, 0x59, 0x9A, 0xBD, 0x47, 0x90, 0x70, 0x96,- 0x64, 0x09, 0xA6, 0x84, 0x6D, 0x43, 0x77, 0xAC,- 0xF4, 0x47, 0x1D, 0x06, 0x5D, 0x5D, 0xB9, 0x41,- 0x29, 0xCC, 0x9B, 0xE9, 0x25, 0x73, 0xB0, 0x5E,- 0xD2, 0x26, 0xBE, 0x1E, 0x9B, 0x7C, 0xB0, 0xCA,- 0xBE, 0x87, 0x91, 0x85, 0x89, 0xF8, 0x0D, 0xAD,- 0xD4, 0xEF, 0x5E, 0xF2, 0x5A, 0x93, 0xD2, 0x8E- },- {- 0xF8, 0xF3, 0x72, 0x6A, 0xC5, 0xA2, 0x6C, 0xC8,- 0x01, 0x32, 0x49, 0x3A, 0x6F, 0xED, 0xCB, 0x0E,- 0x60, 0x76, 0x0C, 0x09, 0xCF, 0xC8, 0x4C, 0xAD,- 0x17, 0x81, 0x75, 0x98, 0x68, 0x19, 0x66, 0x5E,- 0x76, 0x84, 0x2D, 0x7B, 0x9F, 0xED, 0xF7, 0x6D,- 0xDD, 0xEB, 0xF5, 0xD3, 0xF5, 0x6F, 0xAA, 0xAD,- 0x44, 0x77, 0x58, 0x7A, 0xF2, 0x16, 0x06, 0xD3,- 0x96, 0xAE, 0x57, 0x0D, 0x8E, 0x71, 0x9A, 0xF2- },- {- 0x30, 0x18, 0x60, 0x55, 0xC0, 0x79, 0x49, 0x94,- 0x81, 0x83, 0xC8, 0x50, 0xE9, 0xA7, 0x56, 0xCC,- 0x09, 0x93, 0x7E, 0x24, 0x7D, 0x9D, 0x92, 0x8E,- 0x86, 0x9E, 0x20, 0xBA, 0xFC, 0x3C, 0xD9, 0x72,- 0x17, 0x19, 0xD3, 0x4E, 0x04, 0xA0, 0x89, 0x9B,- 0x92, 0xC7, 0x36, 0x08, 0x45, 0x50, 0x18, 0x68,- 0x86, 0xEF, 0xBA, 0x2E, 0x79, 0x0D, 0x8B, 0xE6,- 0xEB, 0xF0, 0x40, 0xB2, 0x09, 0xC4, 0x39, 0xA4- },- {- 0xF3, 0xC4, 0x27, 0x6C, 0xB8, 0x63, 0x63, 0x77,- 0x12, 0xC2, 0x41, 0xC4, 0x44, 0xC5, 0xCC, 0x1E,- 0x35, 0x54, 0xE0, 0xFD, 0xDB, 0x17, 0x4D, 0x03,- 0x58, 0x19, 0xDD, 0x83, 0xEB, 0x70, 0x0B, 0x4C,- 0xE8, 0x8D, 0xF3, 0xAB, 0x38, 0x41, 0xBA, 0x02,- 0x08, 0x5E, 0x1A, 0x99, 0xB4, 0xE1, 0x73, 0x10,- 0xC5, 0x34, 0x10, 0x75, 0xC0, 0x45, 0x8B, 0xA3,- 0x76, 0xC9, 0x5A, 0x68, 0x18, 0xFB, 0xB3, 0xE2- },- {- 0x0A, 0xA0, 0x07, 0xC4, 0xDD, 0x9D, 0x58, 0x32,- 0x39, 0x30, 0x40, 0xA1, 0x58, 0x3C, 0x93, 0x0B,- 0xCA, 0x7D, 0xC5, 0xE7, 0x7E, 0xA5, 0x3A, 0xDD,- 0x7E, 0x2B, 0x3F, 0x7C, 0x8E, 0x23, 0x13, 0x68,- 0x04, 0x35, 0x20, 0xD4, 0xA3, 0xEF, 0x53, 0xC9,- 0x69, 0xB6, 0xBB, 0xFD, 0x02, 0x59, 0x46, 0xF6,- 0x32, 0xBD, 0x7F, 0x76, 0x5D, 0x53, 0xC2, 0x10,- 0x03, 0xB8, 0xF9, 0x83, 0xF7, 0x5E, 0x2A, 0x6A- },- {- 0x08, 0xE9, 0x46, 0x47, 0x20, 0x53, 0x3B, 0x23,- 0xA0, 0x4E, 0xC2, 0x4F, 0x7A, 0xE8, 0xC1, 0x03,- 0x14, 0x5F, 0x76, 0x53, 0x87, 0xD7, 0x38, 0x77,- 0x7D, 0x3D, 0x34, 0x34, 0x77, 0xFD, 0x1C, 0x58,- 0xDB, 0x05, 0x21, 0x42, 0xCA, 0xB7, 0x54, 0xEA,- 0x67, 0x43, 0x78, 0xE1, 0x87, 0x66, 0xC5, 0x35,- 0x42, 0xF7, 0x19, 0x70, 0x17, 0x1C, 0xC4, 0xF8,- 0x16, 0x94, 0x24, 0x6B, 0x71, 0x7D, 0x75, 0x64- },- {- 0xD3, 0x7F, 0xF7, 0xAD, 0x29, 0x79, 0x93, 0xE7,- 0xEC, 0x21, 0xE0, 0xF1, 0xB4, 0xB5, 0xAE, 0x71,- 0x9C, 0xDC, 0x83, 0xC5, 0xDB, 0x68, 0x75, 0x27,- 0xF2, 0x75, 0x16, 0xCB, 0xFF, 0xA8, 0x22, 0x88,- 0x8A, 0x68, 0x10, 0xEE, 0x5C, 0x1C, 0xA7, 0xBF,- 0xE3, 0x32, 0x11, 0x19, 0xBE, 0x1A, 0xB7, 0xBF,- 0xA0, 0xA5, 0x02, 0x67, 0x1C, 0x83, 0x29, 0x49,- 0x4D, 0xF7, 0xAD, 0x6F, 0x52, 0x2D, 0x44, 0x0F- },- {- 0xDD, 0x90, 0x42, 0xF6, 0xE4, 0x64, 0xDC, 0xF8,- 0x6B, 0x12, 0x62, 0xF6, 0xAC, 0xCF, 0xAF, 0xBD,- 0x8C, 0xFD, 0x90, 0x2E, 0xD3, 0xED, 0x89, 0xAB,- 0xF7, 0x8F, 0xFA, 0x48, 0x2D, 0xBD, 0xEE, 0xB6,- 0x96, 0x98, 0x42, 0x39, 0x4C, 0x9A, 0x11, 0x68,- 0xAE, 0x3D, 0x48, 0x1A, 0x01, 0x78, 0x42, 0xF6,- 0x60, 0x00, 0x2D, 0x42, 0x44, 0x7C, 0x6B, 0x22,- 0xF7, 0xB7, 0x2F, 0x21, 0xAA, 0xE0, 0x21, 0xC9- },- {- 0xBD, 0x96, 0x5B, 0xF3, 0x1E, 0x87, 0xD7, 0x03,- 0x27, 0x53, 0x6F, 0x2A, 0x34, 0x1C, 0xEB, 0xC4,- 0x76, 0x8E, 0xCA, 0x27, 0x5F, 0xA0, 0x5E, 0xF9,- 0x8F, 0x7F, 0x1B, 0x71, 0xA0, 0x35, 0x12, 0x98,- 0xDE, 0x00, 0x6F, 0xBA, 0x73, 0xFE, 0x67, 0x33,- 0xED, 0x01, 0xD7, 0x58, 0x01, 0xB4, 0xA9, 0x28,- 0xE5, 0x42, 0x31, 0xB3, 0x8E, 0x38, 0xC5, 0x62,- 0xB2, 0xE3, 0x3E, 0xA1, 0x28, 0x49, 0x92, 0xFA- },- {- 0x65, 0x67, 0x6D, 0x80, 0x06, 0x17, 0x97, 0x2F,- 0xBD, 0x87, 0xE4, 0xB9, 0x51, 0x4E, 0x1C, 0x67,- 0x40, 0x2B, 0x7A, 0x33, 0x10, 0x96, 0xD3, 0xBF,- 0xAC, 0x22, 0xF1, 0xAB, 0xB9, 0x53, 0x74, 0xAB,- 0xC9, 0x42, 0xF1, 0x6E, 0x9A, 0xB0, 0xEA, 0xD3,- 0x3B, 0x87, 0xC9, 0x19, 0x68, 0xA6, 0xE5, 0x09,- 0xE1, 0x19, 0xFF, 0x07, 0x78, 0x7B, 0x3E, 0xF4,- 0x83, 0xE1, 0xDC, 0xDC, 0xCF, 0x6E, 0x30, 0x22- },- {- 0x93, 0x9F, 0xA1, 0x89, 0x69, 0x9C, 0x5D, 0x2C,- 0x81, 0xDD, 0xD1, 0xFF, 0xC1, 0xFA, 0x20, 0x7C,- 0x97, 0x0B, 0x6A, 0x36, 0x85, 0xBB, 0x29, 0xCE,- 0x1D, 0x3E, 0x99, 0xD4, 0x2F, 0x2F, 0x74, 0x42,- 0xDA, 0x53, 0xE9, 0x5A, 0x72, 0x90, 0x73, 0x14,- 0xF4, 0x58, 0x83, 0x99, 0xA3, 0xFF, 0x5B, 0x0A,- 0x92, 0xBE, 0xB3, 0xF6, 0xBE, 0x26, 0x94, 0xF9,- 0xF8, 0x6E, 0xCF, 0x29, 0x52, 0xD5, 0xB4, 0x1C- },- {- 0xC5, 0x16, 0x54, 0x17, 0x01, 0x86, 0x3F, 0x91,- 0x00, 0x5F, 0x31, 0x41, 0x08, 0xCE, 0xEC, 0xE3,- 0xC6, 0x43, 0xE0, 0x4F, 0xC8, 0xC4, 0x2F, 0xD2,- 0xFF, 0x55, 0x62, 0x20, 0xE6, 0x16, 0xAA, 0xA6,- 0xA4, 0x8A, 0xEB, 0x97, 0xA8, 0x4B, 0xAD, 0x74,- 0x78, 0x2E, 0x8D, 0xFF, 0x96, 0xA1, 0xA2, 0xFA,- 0x94, 0x93, 0x39, 0xD7, 0x22, 0xED, 0xCA, 0xA3,- 0x2B, 0x57, 0x06, 0x70, 0x41, 0xDF, 0x88, 0xCC- },- {- 0x98, 0x7F, 0xD6, 0xE0, 0xD6, 0x85, 0x7C, 0x55,- 0x3E, 0xAE, 0xBB, 0x3D, 0x34, 0x97, 0x0A, 0x2C,- 0x2F, 0x6E, 0x89, 0xA3, 0x54, 0x8F, 0x49, 0x25,- 0x21, 0x72, 0x2B, 0x80, 0xA1, 0xC2, 0x1A, 0x15,- 0x38, 0x92, 0x34, 0x6D, 0x2C, 0xBA, 0x64, 0x44,- 0x21, 0x2D, 0x56, 0xDA, 0x9A, 0x26, 0xE3, 0x24,- 0xDC, 0xCB, 0xC0, 0xDC, 0xDE, 0x85, 0xD4, 0xD2,- 0xEE, 0x43, 0x99, 0xEE, 0xC5, 0xA6, 0x4E, 0x8F- },- {- 0xAE, 0x56, 0xDE, 0xB1, 0xC2, 0x32, 0x8D, 0x9C,- 0x40, 0x17, 0x70, 0x6B, 0xCE, 0x6E, 0x99, 0xD4,- 0x13, 0x49, 0x05, 0x3B, 0xA9, 0xD3, 0x36, 0xD6,- 0x77, 0xC4, 0xC2, 0x7D, 0x9F, 0xD5, 0x0A, 0xE6,- 0xAE, 0xE1, 0x7E, 0x85, 0x31, 0x54, 0xE1, 0xF4,- 0xFE, 0x76, 0x72, 0x34, 0x6D, 0xA2, 0xEA, 0xA3,- 0x1E, 0xEA, 0x53, 0xFC, 0xF2, 0x4A, 0x22, 0x80,- 0x4F, 0x11, 0xD0, 0x3D, 0xA6, 0xAB, 0xFC, 0x2B- },- {- 0x49, 0xD6, 0xA6, 0x08, 0xC9, 0xBD, 0xE4, 0x49,- 0x18, 0x70, 0x49, 0x85, 0x72, 0xAC, 0x31, 0xAA,- 0xC3, 0xFA, 0x40, 0x93, 0x8B, 0x38, 0xA7, 0x81,- 0x8F, 0x72, 0x38, 0x3E, 0xB0, 0x40, 0xAD, 0x39,- 0x53, 0x2B, 0xC0, 0x65, 0x71, 0xE1, 0x3D, 0x76,- 0x7E, 0x69, 0x45, 0xAB, 0x77, 0xC0, 0xBD, 0xC3,- 0xB0, 0x28, 0x42, 0x53, 0x34, 0x3F, 0x9F, 0x6C,- 0x12, 0x44, 0xEB, 0xF2, 0xFF, 0x0D, 0xF8, 0x66- },- {- 0xDA, 0x58, 0x2A, 0xD8, 0xC5, 0x37, 0x0B, 0x44,- 0x69, 0xAF, 0x86, 0x2A, 0xA6, 0x46, 0x7A, 0x22,- 0x93, 0xB2, 0xB2, 0x8B, 0xD8, 0x0A, 0xE0, 0xE9,- 0x1F, 0x42, 0x5A, 0xD3, 0xD4, 0x72, 0x49, 0xFD,- 0xF9, 0x88, 0x25, 0xCC, 0x86, 0xF1, 0x40, 0x28,- 0xC3, 0x30, 0x8C, 0x98, 0x04, 0xC7, 0x8B, 0xFE,- 0xEE, 0xEE, 0x46, 0x14, 0x44, 0xCE, 0x24, 0x36,- 0x87, 0xE1, 0xA5, 0x05, 0x22, 0x45, 0x6A, 0x1D- },- {- 0xD5, 0x26, 0x6A, 0xA3, 0x33, 0x11, 0x94, 0xAE,- 0xF8, 0x52, 0xEE, 0xD8, 0x6D, 0x7B, 0x5B, 0x26,- 0x33, 0xA0, 0xAF, 0x1C, 0x73, 0x59, 0x06, 0xF2,- 0xE1, 0x32, 0x79, 0xF1, 0x49, 0x31, 0xA9, 0xFC,- 0x3B, 0x0E, 0xAC, 0x5C, 0xE9, 0x24, 0x52, 0x73,- 0xBD, 0x1A, 0xA9, 0x29, 0x05, 0xAB, 0xE1, 0x62,- 0x78, 0xEF, 0x7E, 0xFD, 0x47, 0x69, 0x47, 0x89,- 0xA7, 0x28, 0x3B, 0x77, 0xDA, 0x3C, 0x70, 0xF8- },- {- 0x29, 0x62, 0x73, 0x4C, 0x28, 0x25, 0x21, 0x86,- 0xA9, 0xA1, 0x11, 0x1C, 0x73, 0x2A, 0xD4, 0xDE,- 0x45, 0x06, 0xD4, 0xB4, 0x48, 0x09, 0x16, 0x30,- 0x3E, 0xB7, 0x99, 0x1D, 0x65, 0x9C, 0xCD, 0xA0,- 0x7A, 0x99, 0x11, 0x91, 0x4B, 0xC7, 0x5C, 0x41,- 0x8A, 0xB7, 0xA4, 0x54, 0x17, 0x57, 0xAD, 0x05,- 0x47, 0x96, 0xE2, 0x67, 0x97, 0xFE, 0xAF, 0x36,- 0xE9, 0xF6, 0xAD, 0x43, 0xF1, 0x4B, 0x35, 0xA4- },- {- 0xE8, 0xB7, 0x9E, 0xC5, 0xD0, 0x6E, 0x11, 0x1B,- 0xDF, 0xAF, 0xD7, 0x1E, 0x9F, 0x57, 0x60, 0xF0,- 0x0A, 0xC8, 0xAC, 0x5D, 0x8B, 0xF7, 0x68, 0xF9,- 0xFF, 0x6F, 0x08, 0xB8, 0xF0, 0x26, 0x09, 0x6B,- 0x1C, 0xC3, 0xA4, 0xC9, 0x73, 0x33, 0x30, 0x19,- 0xF1, 0xE3, 0x55, 0x3E, 0x77, 0xDA, 0x3F, 0x98,- 0xCB, 0x9F, 0x54, 0x2E, 0x0A, 0x90, 0xE5, 0xF8,- 0xA9, 0x40, 0xCC, 0x58, 0xE5, 0x98, 0x44, 0xB3- },- {- 0xDF, 0xB3, 0x20, 0xC4, 0x4F, 0x9D, 0x41, 0xD1,- 0xEF, 0xDC, 0xC0, 0x15, 0xF0, 0x8D, 0xD5, 0x53,- 0x9E, 0x52, 0x6E, 0x39, 0xC8, 0x7D, 0x50, 0x9A,- 0xE6, 0x81, 0x2A, 0x96, 0x9E, 0x54, 0x31, 0xBF,- 0x4F, 0xA7, 0xD9, 0x1F, 0xFD, 0x03, 0xB9, 0x81,- 0xE0, 0xD5, 0x44, 0xCF, 0x72, 0xD7, 0xB1, 0xC0,- 0x37, 0x4F, 0x88, 0x01, 0x48, 0x2E, 0x6D, 0xEA,- 0x2E, 0xF9, 0x03, 0x87, 0x7E, 0xBA, 0x67, 0x5E- },- {- 0xD8, 0x86, 0x75, 0x11, 0x8F, 0xDB, 0x55, 0xA5,- 0xFB, 0x36, 0x5A, 0xC2, 0xAF, 0x1D, 0x21, 0x7B,- 0xF5, 0x26, 0xCE, 0x1E, 0xE9, 0xC9, 0x4B, 0x2F,- 0x00, 0x90, 0xB2, 0xC5, 0x8A, 0x06, 0xCA, 0x58,- 0x18, 0x7D, 0x7F, 0xE5, 0x7C, 0x7B, 0xED, 0x9D,- 0x26, 0xFC, 0xA0, 0x67, 0xB4, 0x11, 0x0E, 0xEF,- 0xCD, 0x9A, 0x0A, 0x34, 0x5D, 0xE8, 0x72, 0xAB,- 0xE2, 0x0D, 0xE3, 0x68, 0x00, 0x1B, 0x07, 0x45- },- {- 0xB8, 0x93, 0xF2, 0xFC, 0x41, 0xF7, 0xB0, 0xDD,- 0x6E, 0x2F, 0x6A, 0xA2, 0xE0, 0x37, 0x0C, 0x0C,- 0xFF, 0x7D, 0xF0, 0x9E, 0x3A, 0xCF, 0xCC, 0x0E,- 0x92, 0x0B, 0x6E, 0x6F, 0xAD, 0x0E, 0xF7, 0x47,- 0xC4, 0x06, 0x68, 0x41, 0x7D, 0x34, 0x2B, 0x80,- 0xD2, 0x35, 0x1E, 0x8C, 0x17, 0x5F, 0x20, 0x89,- 0x7A, 0x06, 0x2E, 0x97, 0x65, 0xE6, 0xC6, 0x7B,- 0x53, 0x9B, 0x6B, 0xA8, 0xB9, 0x17, 0x05, 0x45- },- {- 0x6C, 0x67, 0xEC, 0x56, 0x97, 0xAC, 0xCD, 0x23,- 0x5C, 0x59, 0xB4, 0x86, 0xD7, 0xB7, 0x0B, 0xAE,- 0xED, 0xCB, 0xD4, 0xAA, 0x64, 0xEB, 0xD4, 0xEE,- 0xF3, 0xC7, 0xEA, 0xC1, 0x89, 0x56, 0x1A, 0x72,- 0x62, 0x50, 0xAE, 0xC4, 0xD4, 0x8C, 0xAD, 0xCA,- 0xFB, 0xBE, 0x2C, 0xE3, 0xC1, 0x6C, 0xE2, 0xD6,- 0x91, 0xA8, 0xCC, 0xE0, 0x6E, 0x88, 0x79, 0x55,- 0x6D, 0x44, 0x83, 0xED, 0x71, 0x65, 0xC0, 0x63- },- {- 0xF1, 0xAA, 0x2B, 0x04, 0x4F, 0x8F, 0x0C, 0x63,- 0x8A, 0x3F, 0x36, 0x2E, 0x67, 0x7B, 0x5D, 0x89,- 0x1D, 0x6F, 0xD2, 0xAB, 0x07, 0x65, 0xF6, 0xEE,- 0x1E, 0x49, 0x87, 0xDE, 0x05, 0x7E, 0xAD, 0x35,- 0x78, 0x83, 0xD9, 0xB4, 0x05, 0xB9, 0xD6, 0x09,- 0xEE, 0xA1, 0xB8, 0x69, 0xD9, 0x7F, 0xB1, 0x6D,- 0x9B, 0x51, 0x01, 0x7C, 0x55, 0x3F, 0x3B, 0x93,- 0xC0, 0xA1, 0xE0, 0xF1, 0x29, 0x6F, 0xED, 0xCD- },- {- 0xCB, 0xAA, 0x25, 0x95, 0x72, 0xD4, 0xAE, 0xBF,- 0xC1, 0x91, 0x7A, 0xCD, 0xDC, 0x58, 0x2B, 0x9F,- 0x8D, 0xFA, 0xA9, 0x28, 0xA1, 0x98, 0xCA, 0x7A,- 0xCD, 0x0F, 0x2A, 0xA7, 0x6A, 0x13, 0x4A, 0x90,- 0x25, 0x2E, 0x62, 0x98, 0xA6, 0x5B, 0x08, 0x18,- 0x6A, 0x35, 0x0D, 0x5B, 0x76, 0x26, 0x69, 0x9F,- 0x8C, 0xB7, 0x21, 0xA3, 0xEA, 0x59, 0x21, 0xB7,- 0x53, 0xAE, 0x3A, 0x2D, 0xCE, 0x24, 0xBA, 0x3A- },- {- 0xFA, 0x15, 0x49, 0xC9, 0x79, 0x6C, 0xD4, 0xD3,- 0x03, 0xDC, 0xF4, 0x52, 0xC1, 0xFB, 0xD5, 0x74,- 0x4F, 0xD9, 0xB9, 0xB4, 0x70, 0x03, 0xD9, 0x20,- 0xB9, 0x2D, 0xE3, 0x48, 0x39, 0xD0, 0x7E, 0xF2,- 0xA2, 0x9D, 0xED, 0x68, 0xF6, 0xFC, 0x9E, 0x6C,- 0x45, 0xE0, 0x71, 0xA2, 0xE4, 0x8B, 0xD5, 0x0C,- 0x50, 0x84, 0xE9, 0x6B, 0x65, 0x7D, 0xD0, 0x40,- 0x40, 0x45, 0xA1, 0xDD, 0xEF, 0xE2, 0x82, 0xED- },- {- 0x5C, 0xF2, 0xAC, 0x89, 0x7A, 0xB4, 0x44, 0xDC,- 0xB5, 0xC8, 0xD8, 0x7C, 0x49, 0x5D, 0xBD, 0xB3,- 0x4E, 0x18, 0x38, 0xB6, 0xB6, 0x29, 0x42, 0x7C,- 0xAA, 0x51, 0x70, 0x2A, 0xD0, 0xF9, 0x68, 0x85,- 0x25, 0xF1, 0x3B, 0xEC, 0x50, 0x3A, 0x3C, 0x3A,- 0x2C, 0x80, 0xA6, 0x5E, 0x0B, 0x57, 0x15, 0xE8,- 0xAF, 0xAB, 0x00, 0xFF, 0xA5, 0x6E, 0xC4, 0x55,- 0xA4, 0x9A, 0x1A, 0xD3, 0x0A, 0xA2, 0x4F, 0xCD- },- {- 0x9A, 0xAF, 0x80, 0x20, 0x7B, 0xAC, 0xE1, 0x7B,- 0xB7, 0xAB, 0x14, 0x57, 0x57, 0xD5, 0x69, 0x6B,- 0xDE, 0x32, 0x40, 0x6E, 0xF2, 0x2B, 0x44, 0x29,- 0x2E, 0xF6, 0x5D, 0x45, 0x19, 0xC3, 0xBB, 0x2A,- 0xD4, 0x1A, 0x59, 0xB6, 0x2C, 0xC3, 0xE9, 0x4B,- 0x6F, 0xA9, 0x6D, 0x32, 0xA7, 0xFA, 0xAD, 0xAE,- 0x28, 0xAF, 0x7D, 0x35, 0x09, 0x72, 0x19, 0xAA,- 0x3F, 0xD8, 0xCD, 0xA3, 0x1E, 0x40, 0xC2, 0x75- },- {- 0xAF, 0x88, 0xB1, 0x63, 0x40, 0x2C, 0x86, 0x74,- 0x5C, 0xB6, 0x50, 0xC2, 0x98, 0x8F, 0xB9, 0x52,- 0x11, 0xB9, 0x4B, 0x03, 0xEF, 0x29, 0x0E, 0xED,- 0x96, 0x62, 0x03, 0x42, 0x41, 0xFD, 0x51, 0xCF,- 0x39, 0x8F, 0x80, 0x73, 0xE3, 0x69, 0x35, 0x4C,- 0x43, 0xEA, 0xE1, 0x05, 0x2F, 0x9B, 0x63, 0xB0,- 0x81, 0x91, 0xCA, 0xA1, 0x38, 0xAA, 0x54, 0xFE,- 0xA8, 0x89, 0xCC, 0x70, 0x24, 0x23, 0x68, 0x97- },- {- 0x48, 0xFA, 0x7D, 0x64, 0xE1, 0xCE, 0xEE, 0x27,- 0xB9, 0x86, 0x4D, 0xB5, 0xAD, 0xA4, 0xB5, 0x3D,- 0x00, 0xC9, 0xBC, 0x76, 0x26, 0x55, 0x58, 0x13,- 0xD3, 0xCD, 0x67, 0x30, 0xAB, 0x3C, 0xC0, 0x6F,- 0xF3, 0x42, 0xD7, 0x27, 0x90, 0x5E, 0x33, 0x17,- 0x1B, 0xDE, 0x6E, 0x84, 0x76, 0xE7, 0x7F, 0xB1,- 0x72, 0x08, 0x61, 0xE9, 0x4B, 0x73, 0xA2, 0xC5,- 0x38, 0xD2, 0x54, 0x74, 0x62, 0x85, 0xF4, 0x30- },- {- 0x0E, 0x6F, 0xD9, 0x7A, 0x85, 0xE9, 0x04, 0xF8,- 0x7B, 0xFE, 0x85, 0xBB, 0xEB, 0x34, 0xF6, 0x9E,- 0x1F, 0x18, 0x10, 0x5C, 0xF4, 0xED, 0x4F, 0x87,- 0xAE, 0xC3, 0x6C, 0x6E, 0x8B, 0x5F, 0x68, 0xBD,- 0x2A, 0x6F, 0x3D, 0xC8, 0xA9, 0xEC, 0xB2, 0xB6,- 0x1D, 0xB4, 0xEE, 0xDB, 0x6B, 0x2E, 0xA1, 0x0B,- 0xF9, 0xCB, 0x02, 0x51, 0xFB, 0x0F, 0x8B, 0x34,- 0x4A, 0xBF, 0x7F, 0x36, 0x6B, 0x6D, 0xE5, 0xAB- },- {- 0x06, 0x62, 0x2D, 0xA5, 0x78, 0x71, 0x76, 0x28,- 0x7F, 0xDC, 0x8F, 0xED, 0x44, 0x0B, 0xAD, 0x18,- 0x7D, 0x83, 0x00, 0x99, 0xC9, 0x4E, 0x6D, 0x04,- 0xC8, 0xE9, 0xC9, 0x54, 0xCD, 0xA7, 0x0C, 0x8B,- 0xB9, 0xE1, 0xFC, 0x4A, 0x6D, 0x0B, 0xAA, 0x83,- 0x1B, 0x9B, 0x78, 0xEF, 0x66, 0x48, 0x68, 0x1A,- 0x48, 0x67, 0xA1, 0x1D, 0xA9, 0x3E, 0xE3, 0x6E,- 0x5E, 0x6A, 0x37, 0xD8, 0x7F, 0xC6, 0x3F, 0x6F- },- {- 0x1D, 0xA6, 0x77, 0x2B, 0x58, 0xFA, 0xBF, 0x9C,- 0x61, 0xF6, 0x8D, 0x41, 0x2C, 0x82, 0xF1, 0x82,- 0xC0, 0x23, 0x6D, 0x7D, 0x57, 0x5E, 0xF0, 0xB5,- 0x8D, 0xD2, 0x24, 0x58, 0xD6, 0x43, 0xCD, 0x1D,- 0xFC, 0x93, 0xB0, 0x38, 0x71, 0xC3, 0x16, 0xD8,- 0x43, 0x0D, 0x31, 0x29, 0x95, 0xD4, 0x19, 0x7F,- 0x08, 0x74, 0xC9, 0x91, 0x72, 0xBA, 0x00, 0x4A,- 0x01, 0xEE, 0x29, 0x5A, 0xBA, 0xC2, 0x4E, 0x46- },- {- 0x3C, 0xD2, 0xD9, 0x32, 0x0B, 0x7B, 0x1D, 0x5F,- 0xB9, 0xAA, 0xB9, 0x51, 0xA7, 0x60, 0x23, 0xFA,- 0x66, 0x7B, 0xE1, 0x4A, 0x91, 0x24, 0xE3, 0x94,- 0x51, 0x39, 0x18, 0xA3, 0xF4, 0x40, 0x96, 0xAE,- 0x49, 0x04, 0xBA, 0x0F, 0xFC, 0x15, 0x0B, 0x63,- 0xBC, 0x7A, 0xB1, 0xEE, 0xB9, 0xA6, 0xE2, 0x57,- 0xE5, 0xC8, 0xF0, 0x00, 0xA7, 0x03, 0x94, 0xA5,- 0xAF, 0xD8, 0x42, 0x71, 0x5D, 0xE1, 0x5F, 0x29- },- {- 0x04, 0xCD, 0xC1, 0x4F, 0x74, 0x34, 0xE0, 0xB4,- 0xBE, 0x70, 0xCB, 0x41, 0xDB, 0x4C, 0x77, 0x9A,- 0x88, 0xEA, 0xEF, 0x6A, 0xCC, 0xEB, 0xCB, 0x41,- 0xF2, 0xD4, 0x2F, 0xFF, 0xE7, 0xF3, 0x2A, 0x8E,- 0x28, 0x1B, 0x5C, 0x10, 0x3A, 0x27, 0x02, 0x1D,- 0x0D, 0x08, 0x36, 0x22, 0x50, 0x75, 0x3C, 0xDF,- 0x70, 0x29, 0x21, 0x95, 0xA5, 0x3A, 0x48, 0x72,- 0x8C, 0xEB, 0x58, 0x44, 0xC2, 0xD9, 0x8B, 0xAB- },- {- 0x90, 0x71, 0xB7, 0xA8, 0xA0, 0x75, 0xD0, 0x09,- 0x5B, 0x8F, 0xB3, 0xAE, 0x51, 0x13, 0x78, 0x57,- 0x35, 0xAB, 0x98, 0xE2, 0xB5, 0x2F, 0xAF, 0x91,- 0xD5, 0xB8, 0x9E, 0x44, 0xAA, 0xC5, 0xB5, 0xD4,- 0xEB, 0xBF, 0x91, 0x22, 0x3B, 0x0F, 0xF4, 0xC7,- 0x19, 0x05, 0xDA, 0x55, 0x34, 0x2E, 0x64, 0x65,- 0x5D, 0x6E, 0xF8, 0xC8, 0x9A, 0x47, 0x68, 0xC3,- 0xF9, 0x3A, 0x6D, 0xC0, 0x36, 0x6B, 0x5B, 0xC8- },- {- 0xEB, 0xB3, 0x02, 0x40, 0xDD, 0x96, 0xC7, 0xBC,- 0x8D, 0x0A, 0xBE, 0x49, 0xAA, 0x4E, 0xDC, 0xBB,- 0x4A, 0xFD, 0xC5, 0x1F, 0xF9, 0xAA, 0xF7, 0x20,- 0xD3, 0xF9, 0xE7, 0xFB, 0xB0, 0xF9, 0xC6, 0xD6,- 0x57, 0x13, 0x50, 0x50, 0x17, 0x69, 0xFC, 0x4E,- 0xBD, 0x0B, 0x21, 0x41, 0x24, 0x7F, 0xF4, 0x00,- 0xD4, 0xFD, 0x4B, 0xE4, 0x14, 0xED, 0xF3, 0x77,- 0x57, 0xBB, 0x90, 0xA3, 0x2A, 0xC5, 0xC6, 0x5A- },- {- 0x85, 0x32, 0xC5, 0x8B, 0xF3, 0xC8, 0x01, 0x5D,- 0x9D, 0x1C, 0xBE, 0x00, 0xEE, 0xF1, 0xF5, 0x08,- 0x2F, 0x8F, 0x36, 0x32, 0xFB, 0xE9, 0xF1, 0xED,- 0x4F, 0x9D, 0xFB, 0x1F, 0xA7, 0x9E, 0x82, 0x83,- 0x06, 0x6D, 0x77, 0xC4, 0x4C, 0x4A, 0xF9, 0x43,- 0xD7, 0x6B, 0x30, 0x03, 0x64, 0xAE, 0xCB, 0xD0,- 0x64, 0x8C, 0x8A, 0x89, 0x39, 0xBD, 0x20, 0x41,- 0x23, 0xF4, 0xB5, 0x62, 0x60, 0x42, 0x2D, 0xEC- },- {- 0xFE, 0x98, 0x46, 0xD6, 0x4F, 0x7C, 0x77, 0x08,- 0x69, 0x6F, 0x84, 0x0E, 0x2D, 0x76, 0xCB, 0x44,- 0x08, 0xB6, 0x59, 0x5C, 0x2F, 0x81, 0xEC, 0x6A,- 0x28, 0xA7, 0xF2, 0xF2, 0x0C, 0xB8, 0x8C, 0xFE,- 0x6A, 0xC0, 0xB9, 0xE9, 0xB8, 0x24, 0x4F, 0x08,- 0xBD, 0x70, 0x95, 0xC3, 0x50, 0xC1, 0xD0, 0x84,- 0x2F, 0x64, 0xFB, 0x01, 0xBB, 0x7F, 0x53, 0x2D,- 0xFC, 0xD4, 0x73, 0x71, 0xB0, 0xAE, 0xEB, 0x79- },- {- 0x28, 0xF1, 0x7E, 0xA6, 0xFB, 0x6C, 0x42, 0x09,- 0x2D, 0xC2, 0x64, 0x25, 0x7E, 0x29, 0x74, 0x63,- 0x21, 0xFB, 0x5B, 0xDA, 0xEA, 0x98, 0x73, 0xC2,- 0xA7, 0xFA, 0x9D, 0x8F, 0x53, 0x81, 0x8E, 0x89,- 0x9E, 0x16, 0x1B, 0xC7, 0x7D, 0xFE, 0x80, 0x90,- 0xAF, 0xD8, 0x2B, 0xF2, 0x26, 0x6C, 0x5C, 0x1B,- 0xC9, 0x30, 0xA8, 0xD1, 0x54, 0x76, 0x24, 0x43,- 0x9E, 0x66, 0x2E, 0xF6, 0x95, 0xF2, 0x6F, 0x24- },- {- 0xEC, 0x6B, 0x7D, 0x7F, 0x03, 0x0D, 0x48, 0x50,- 0xAC, 0xAE, 0x3C, 0xB6, 0x15, 0xC2, 0x1D, 0xD2,- 0x52, 0x06, 0xD6, 0x3E, 0x84, 0xD1, 0xDB, 0x8D,- 0x95, 0x73, 0x70, 0x73, 0x7B, 0xA0, 0xE9, 0x84,- 0x67, 0xEA, 0x0C, 0xE2, 0x74, 0xC6, 0x61, 0x99,- 0x90, 0x1E, 0xAE, 0xC1, 0x8A, 0x08, 0x52, 0x57,- 0x15, 0xF5, 0x3B, 0xFD, 0xB0, 0xAA, 0xCB, 0x61,- 0x3D, 0x34, 0x2E, 0xBD, 0xCE, 0xED, 0xDC, 0x3B- },- {- 0xB4, 0x03, 0xD3, 0x69, 0x1C, 0x03, 0xB0, 0xD3,- 0x41, 0x8D, 0xF3, 0x27, 0xD5, 0x86, 0x0D, 0x34,- 0xBB, 0xFC, 0xC4, 0x51, 0x9B, 0xFB, 0xCE, 0x36,- 0xBF, 0x33, 0xB2, 0x08, 0x38, 0x5F, 0xAD, 0xB9,- 0x18, 0x6B, 0xC7, 0x8A, 0x76, 0xC4, 0x89, 0xD8,- 0x9F, 0xD5, 0x7E, 0x7D, 0xC7, 0x54, 0x12, 0xD2,- 0x3B, 0xCD, 0x1D, 0xAE, 0x84, 0x70, 0xCE, 0x92,- 0x74, 0x75, 0x4B, 0xB8, 0x58, 0x5B, 0x13, 0xC5- },- {- 0x31, 0xFC, 0x79, 0x73, 0x8B, 0x87, 0x72, 0xB3,- 0xF5, 0x5C, 0xD8, 0x17, 0x88, 0x13, 0xB3, 0xB5,- 0x2D, 0x0D, 0xB5, 0xA4, 0x19, 0xD3, 0x0B, 0xA9,- 0x49, 0x5C, 0x4B, 0x9D, 0xA0, 0x21, 0x9F, 0xAC,- 0x6D, 0xF8, 0xE7, 0xC2, 0x3A, 0x81, 0x15, 0x51,- 0xA6, 0x2B, 0x82, 0x7F, 0x25, 0x6E, 0xCD, 0xB8,- 0x12, 0x4A, 0xC8, 0xA6, 0x79, 0x2C, 0xCF, 0xEC,- 0xC3, 0xB3, 0x01, 0x27, 0x22, 0xE9, 0x44, 0x63- },- {- 0xBB, 0x20, 0x39, 0xEC, 0x28, 0x70, 0x91, 0xBC,- 0xC9, 0x64, 0x2F, 0xC9, 0x00, 0x49, 0xE7, 0x37,- 0x32, 0xE0, 0x2E, 0x57, 0x7E, 0x28, 0x62, 0xB3,- 0x22, 0x16, 0xAE, 0x9B, 0xED, 0xCD, 0x73, 0x0C,- 0x4C, 0x28, 0x4E, 0xF3, 0x96, 0x8C, 0x36, 0x8B,- 0x7D, 0x37, 0x58, 0x4F, 0x97, 0xBD, 0x4B, 0x4D,- 0xC6, 0xEF, 0x61, 0x27, 0xAC, 0xFE, 0x2E, 0x6A,- 0xE2, 0x50, 0x91, 0x24, 0xE6, 0x6C, 0x8A, 0xF4- },- {- 0xF5, 0x3D, 0x68, 0xD1, 0x3F, 0x45, 0xED, 0xFC,- 0xB9, 0xBD, 0x41, 0x5E, 0x28, 0x31, 0xE9, 0x38,- 0x35, 0x0D, 0x53, 0x80, 0xD3, 0x43, 0x22, 0x78,- 0xFC, 0x1C, 0x0C, 0x38, 0x1F, 0xCB, 0x7C, 0x65,- 0xC8, 0x2D, 0xAF, 0xE0, 0x51, 0xD8, 0xC8, 0xB0,- 0xD4, 0x4E, 0x09, 0x74, 0xA0, 0xE5, 0x9E, 0xC7,- 0xBF, 0x7E, 0xD0, 0x45, 0x9F, 0x86, 0xE9, 0x6F,- 0x32, 0x9F, 0xC7, 0x97, 0x52, 0x51, 0x0F, 0xD3- },- {- 0x8D, 0x56, 0x8C, 0x79, 0x84, 0xF0, 0xEC, 0xDF,- 0x76, 0x40, 0xFB, 0xC4, 0x83, 0xB5, 0xD8, 0xC9,- 0xF8, 0x66, 0x34, 0xF6, 0xF4, 0x32, 0x91, 0x84,- 0x1B, 0x30, 0x9A, 0x35, 0x0A, 0xB9, 0xC1, 0x13,- 0x7D, 0x24, 0x06, 0x6B, 0x09, 0xDA, 0x99, 0x44,- 0xBA, 0xC5, 0x4D, 0x5B, 0xB6, 0x58, 0x0D, 0x83,- 0x60, 0x47, 0xAA, 0xC7, 0x4A, 0xB7, 0x24, 0xB8,- 0x87, 0xEB, 0xF9, 0x3D, 0x4B, 0x32, 0xEC, 0xA9- },- {- 0xC0, 0xB6, 0x5C, 0xE5, 0xA9, 0x6F, 0xF7, 0x74,- 0xC4, 0x56, 0xCA, 0xC3, 0xB5, 0xF2, 0xC4, 0xCD,- 0x35, 0x9B, 0x4F, 0xF5, 0x3E, 0xF9, 0x3A, 0x3D,- 0xA0, 0x77, 0x8B, 0xE4, 0x90, 0x0D, 0x1E, 0x8D,- 0xA1, 0x60, 0x1E, 0x76, 0x9E, 0x8F, 0x1B, 0x02,- 0xD2, 0xA2, 0xF8, 0xC5, 0xB9, 0xFA, 0x10, 0xB4,- 0x4F, 0x1C, 0x18, 0x69, 0x85, 0x46, 0x8F, 0xEE,- 0xB0, 0x08, 0x73, 0x02, 0x83, 0xA6, 0x65, 0x7D- },- {- 0x49, 0x00, 0xBB, 0xA6, 0xF5, 0xFB, 0x10, 0x3E,- 0xCE, 0x8E, 0xC9, 0x6A, 0xDA, 0x13, 0xA5, 0xC3,- 0xC8, 0x54, 0x88, 0xE0, 0x55, 0x51, 0xDA, 0x6B,- 0x6B, 0x33, 0xD9, 0x88, 0xE6, 0x11, 0xEC, 0x0F,- 0xE2, 0xE3, 0xC2, 0xAA, 0x48, 0xEA, 0x6A, 0xE8,- 0x98, 0x6A, 0x3A, 0x23, 0x1B, 0x22, 0x3C, 0x5D,- 0x27, 0xCE, 0xC2, 0xEA, 0xDD, 0xE9, 0x1C, 0xE0,- 0x79, 0x81, 0xEE, 0x65, 0x28, 0x62, 0xD1, 0xE4- },- {- 0xC7, 0xF5, 0xC3, 0x7C, 0x72, 0x85, 0xF9, 0x27,- 0xF7, 0x64, 0x43, 0x41, 0x4D, 0x43, 0x57, 0xFF,- 0x78, 0x96, 0x47, 0xD7, 0xA0, 0x05, 0xA5, 0xA7,- 0x87, 0xE0, 0x3C, 0x34, 0x6B, 0x57, 0xF4, 0x9F,- 0x21, 0xB6, 0x4F, 0xA9, 0xCF, 0x4B, 0x7E, 0x45,- 0x57, 0x3E, 0x23, 0x04, 0x90, 0x17, 0x56, 0x71,- 0x21, 0xA9, 0xC3, 0xD4, 0xB2, 0xB7, 0x3E, 0xC5,- 0xE9, 0x41, 0x35, 0x77, 0x52, 0x5D, 0xB4, 0x5A- },- {- 0xEC, 0x70, 0x96, 0x33, 0x07, 0x36, 0xFD, 0xB2,- 0xD6, 0x4B, 0x56, 0x53, 0xE7, 0x47, 0x5D, 0xA7,- 0x46, 0xC2, 0x3A, 0x46, 0x13, 0xA8, 0x26, 0x87,- 0xA2, 0x80, 0x62, 0xD3, 0x23, 0x63, 0x64, 0x28,- 0x4A, 0xC0, 0x17, 0x20, 0xFF, 0xB4, 0x06, 0xCF,- 0xE2, 0x65, 0xC0, 0xDF, 0x62, 0x6A, 0x18, 0x8C,- 0x9E, 0x59, 0x63, 0xAC, 0xE5, 0xD3, 0xD5, 0xBB,- 0x36, 0x3E, 0x32, 0xC3, 0x8C, 0x21, 0x90, 0xA6- },- {- 0x82, 0xE7, 0x44, 0xC7, 0x5F, 0x46, 0x49, 0xEC,- 0x52, 0xB8, 0x07, 0x71, 0xA7, 0x7D, 0x47, 0x5A,- 0x3B, 0xC0, 0x91, 0x98, 0x95, 0x56, 0x96, 0x0E,- 0x27, 0x6A, 0x5F, 0x9E, 0xAD, 0x92, 0xA0, 0x3F,- 0x71, 0x87, 0x42, 0xCD, 0xCF, 0xEA, 0xEE, 0x5C,- 0xB8, 0x5C, 0x44, 0xAF, 0x19, 0x8A, 0xDC, 0x43,- 0xA4, 0xA4, 0x28, 0xF5, 0xF0, 0xC2, 0xDD, 0xB0,- 0xBE, 0x36, 0x05, 0x9F, 0x06, 0xD7, 0xDF, 0x73- },- {- 0x28, 0x34, 0xB7, 0xA7, 0x17, 0x0F, 0x1F, 0x5B,- 0x68, 0x55, 0x9A, 0xB7, 0x8C, 0x10, 0x50, 0xEC,- 0x21, 0xC9, 0x19, 0x74, 0x0B, 0x78, 0x4A, 0x90,- 0x72, 0xF6, 0xE5, 0xD6, 0x9F, 0x82, 0x8D, 0x70,- 0xC9, 0x19, 0xC5, 0x03, 0x9F, 0xB1, 0x48, 0xE3,- 0x9E, 0x2C, 0x8A, 0x52, 0x11, 0x83, 0x78, 0xB0,- 0x64, 0xCA, 0x8D, 0x50, 0x01, 0xCD, 0x10, 0xA5,- 0x47, 0x83, 0x87, 0xB9, 0x66, 0x71, 0x5E, 0xD6- },- {- 0x16, 0xB4, 0xAD, 0xA8, 0x83, 0xF7, 0x2F, 0x85,- 0x3B, 0xB7, 0xEF, 0x25, 0x3E, 0xFC, 0xAB, 0x0C,- 0x3E, 0x21, 0x61, 0x68, 0x7A, 0xD6, 0x15, 0x43,- 0xA0, 0xD2, 0x82, 0x4F, 0x91, 0xC1, 0xF8, 0x13,- 0x47, 0xD8, 0x6B, 0xE7, 0x09, 0xB1, 0x69, 0x96,- 0xE1, 0x7F, 0x2D, 0xD4, 0x86, 0x92, 0x7B, 0x02,- 0x88, 0xAD, 0x38, 0xD1, 0x30, 0x63, 0xC4, 0xA9,- 0x67, 0x2C, 0x39, 0x39, 0x7D, 0x37, 0x89, 0xB6- },- {- 0x78, 0xD0, 0x48, 0xF3, 0xA6, 0x9D, 0x8B, 0x54,- 0xAE, 0x0E, 0xD6, 0x3A, 0x57, 0x3A, 0xE3, 0x50,- 0xD8, 0x9F, 0x7C, 0x6C, 0xF1, 0xF3, 0x68, 0x89,- 0x30, 0xDE, 0x89, 0x9A, 0xFA, 0x03, 0x76, 0x97,- 0x62, 0x9B, 0x31, 0x4E, 0x5C, 0xD3, 0x03, 0xAA,- 0x62, 0xFE, 0xEA, 0x72, 0xA2, 0x5B, 0xF4, 0x2B,- 0x30, 0x4B, 0x6C, 0x6B, 0xCB, 0x27, 0xFA, 0xE2,- 0x1C, 0x16, 0xD9, 0x25, 0xE1, 0xFB, 0xDA, 0xC3- },- {- 0x0F, 0x74, 0x6A, 0x48, 0x74, 0x92, 0x87, 0xAD,- 0xA7, 0x7A, 0x82, 0x96, 0x1F, 0x05, 0xA4, 0xDA,- 0x4A, 0xBD, 0xB7, 0xD7, 0x7B, 0x12, 0x20, 0xF8,- 0x36, 0xD0, 0x9E, 0xC8, 0x14, 0x35, 0x9C, 0x0E,- 0xC0, 0x23, 0x9B, 0x8C, 0x7B, 0x9F, 0xF9, 0xE0,- 0x2F, 0x56, 0x9D, 0x1B, 0x30, 0x1E, 0xF6, 0x7C,- 0x46, 0x12, 0xD1, 0xDE, 0x4F, 0x73, 0x0F, 0x81,- 0xC1, 0x2C, 0x40, 0xCC, 0x06, 0x3C, 0x5C, 0xAA- },- {- 0xF0, 0xFC, 0x85, 0x9D, 0x3B, 0xD1, 0x95, 0xFB,- 0xDC, 0x2D, 0x59, 0x1E, 0x4C, 0xDA, 0xC1, 0x51,- 0x79, 0xEC, 0x0F, 0x1D, 0xC8, 0x21, 0xC1, 0x1D,- 0xF1, 0xF0, 0xC1, 0xD2, 0x6E, 0x62, 0x60, 0xAA,- 0xA6, 0x5B, 0x79, 0xFA, 0xFA, 0xCA, 0xFD, 0x7D,- 0x3A, 0xD6, 0x1E, 0x60, 0x0F, 0x25, 0x09, 0x05,- 0xF5, 0x87, 0x8C, 0x87, 0x45, 0x28, 0x97, 0x64,- 0x7A, 0x35, 0xB9, 0x95, 0xBC, 0xAD, 0xC3, 0xA3- },- {- 0x26, 0x20, 0xF6, 0x87, 0xE8, 0x62, 0x5F, 0x6A,- 0x41, 0x24, 0x60, 0xB4, 0x2E, 0x2C, 0xEF, 0x67,- 0x63, 0x42, 0x08, 0xCE, 0x10, 0xA0, 0xCB, 0xD4,- 0xDF, 0xF7, 0x04, 0x4A, 0x41, 0xB7, 0x88, 0x00,- 0x77, 0xE9, 0xF8, 0xDC, 0x3B, 0x8D, 0x12, 0x16,- 0xD3, 0x37, 0x6A, 0x21, 0xE0, 0x15, 0xB5, 0x8F,- 0xB2, 0x79, 0xB5, 0x21, 0xD8, 0x3F, 0x93, 0x88,- 0xC7, 0x38, 0x2C, 0x85, 0x05, 0x59, 0x0B, 0x9B- },- {- 0x22, 0x7E, 0x3A, 0xED, 0x8D, 0x2C, 0xB1, 0x0B,- 0x91, 0x8F, 0xCB, 0x04, 0xF9, 0xDE, 0x3E, 0x6D,- 0x0A, 0x57, 0xE0, 0x84, 0x76, 0xD9, 0x37, 0x59,- 0xCD, 0x7B, 0x2E, 0xD5, 0x4A, 0x1C, 0xBF, 0x02,- 0x39, 0xC5, 0x28, 0xFB, 0x04, 0xBB, 0xF2, 0x88,- 0x25, 0x3E, 0x60, 0x1D, 0x3B, 0xC3, 0x8B, 0x21,- 0x79, 0x4A, 0xFE, 0xF9, 0x0B, 0x17, 0x09, 0x4A,- 0x18, 0x2C, 0xAC, 0x55, 0x77, 0x45, 0xE7, 0x5F- },- {- 0x1A, 0x92, 0x99, 0x01, 0xB0, 0x9C, 0x25, 0xF2,- 0x7D, 0x6B, 0x35, 0xBE, 0x7B, 0x2F, 0x1C, 0x47,- 0x45, 0x13, 0x1F, 0xDE, 0xBC, 0xA7, 0xF3, 0xE2,- 0x45, 0x19, 0x26, 0x72, 0x04, 0x34, 0xE0, 0xDB,- 0x6E, 0x74, 0xFD, 0x69, 0x3A, 0xD2, 0x9B, 0x77,- 0x7D, 0xC3, 0x35, 0x5C, 0x59, 0x2A, 0x36, 0x1C,- 0x48, 0x73, 0xB0, 0x11, 0x33, 0xA5, 0x7C, 0x2E,- 0x3B, 0x70, 0x75, 0xCB, 0xDB, 0x86, 0xF4, 0xFC- },- {- 0x5F, 0xD7, 0x96, 0x8B, 0xC2, 0xFE, 0x34, 0xF2,- 0x20, 0xB5, 0xE3, 0xDC, 0x5A, 0xF9, 0x57, 0x17,- 0x42, 0xD7, 0x3B, 0x7D, 0x60, 0x81, 0x9F, 0x28,- 0x88, 0xB6, 0x29, 0x07, 0x2B, 0x96, 0xA9, 0xD8,- 0xAB, 0x2D, 0x91, 0xB8, 0x2D, 0x0A, 0x9A, 0xAB,- 0xA6, 0x1B, 0xBD, 0x39, 0x95, 0x81, 0x32, 0xFC,- 0xC4, 0x25, 0x70, 0x23, 0xD1, 0xEC, 0xA5, 0x91,- 0xB3, 0x05, 0x4E, 0x2D, 0xC8, 0x1C, 0x82, 0x00- },- {- 0xDF, 0xCC, 0xE8, 0xCF, 0x32, 0x87, 0x0C, 0xC6,- 0xA5, 0x03, 0xEA, 0xDA, 0xFC, 0x87, 0xFD, 0x6F,- 0x78, 0x91, 0x8B, 0x9B, 0x4D, 0x07, 0x37, 0xDB,- 0x68, 0x10, 0xBE, 0x99, 0x6B, 0x54, 0x97, 0xE7,- 0xE5, 0xCC, 0x80, 0xE3, 0x12, 0xF6, 0x1E, 0x71,- 0xFF, 0x3E, 0x96, 0x24, 0x43, 0x60, 0x73, 0x15,- 0x64, 0x03, 0xF7, 0x35, 0xF5, 0x6B, 0x0B, 0x01,- 0x84, 0x5C, 0x18, 0xF6, 0xCA, 0xF7, 0x72, 0xE6- },- {- 0x02, 0xF7, 0xEF, 0x3A, 0x9C, 0xE0, 0xFF, 0xF9,- 0x60, 0xF6, 0x70, 0x32, 0xB2, 0x96, 0xEF, 0xCA,- 0x30, 0x61, 0xF4, 0x93, 0x4D, 0x69, 0x07, 0x49,- 0xF2, 0xD0, 0x1C, 0x35, 0xC8, 0x1C, 0x14, 0xF3,- 0x9A, 0x67, 0xFA, 0x35, 0x0B, 0xC8, 0xA0, 0x35,- 0x9B, 0xF1, 0x72, 0x4B, 0xFF, 0xC3, 0xBC, 0xA6,- 0xD7, 0xC7, 0xBB, 0xA4, 0x79, 0x1F, 0xD5, 0x22,- 0xA3, 0xAD, 0x35, 0x3C, 0x02, 0xEC, 0x5A, 0xA8- },- {- 0x64, 0xBE, 0x5C, 0x6A, 0xBA, 0x65, 0xD5, 0x94,- 0x84, 0x4A, 0xE7, 0x8B, 0xB0, 0x22, 0xE5, 0xBE,- 0xBE, 0x12, 0x7F, 0xD6, 0xB6, 0xFF, 0xA5, 0xA1,- 0x37, 0x03, 0x85, 0x5A, 0xB6, 0x3B, 0x62, 0x4D,- 0xCD, 0x1A, 0x36, 0x3F, 0x99, 0x20, 0x3F, 0x63,- 0x2E, 0xC3, 0x86, 0xF3, 0xEA, 0x76, 0x7F, 0xC9,- 0x92, 0xE8, 0xED, 0x96, 0x86, 0x58, 0x6A, 0xA2,- 0x75, 0x55, 0xA8, 0x59, 0x9D, 0x5B, 0x80, 0x8F- },- {- 0xF7, 0x85, 0x85, 0x50, 0x5C, 0x4E, 0xAA, 0x54,- 0xA8, 0xB5, 0xBE, 0x70, 0xA6, 0x1E, 0x73, 0x5E,- 0x0F, 0xF9, 0x7A, 0xF9, 0x44, 0xDD, 0xB3, 0x00,- 0x1E, 0x35, 0xD8, 0x6C, 0x4E, 0x21, 0x99, 0xD9,- 0x76, 0x10, 0x4B, 0x6A, 0xE3, 0x17, 0x50, 0xA3,- 0x6A, 0x72, 0x6E, 0xD2, 0x85, 0x06, 0x4F, 0x59,- 0x81, 0xB5, 0x03, 0x88, 0x9F, 0xEF, 0x82, 0x2F,- 0xCD, 0xC2, 0x89, 0x8D, 0xDD, 0xB7, 0x88, 0x9A- },- {- 0xE4, 0xB5, 0x56, 0x60, 0x33, 0x86, 0x95, 0x72,- 0xED, 0xFD, 0x87, 0x47, 0x9A, 0x5B, 0xB7, 0x3C,- 0x80, 0xE8, 0x75, 0x9B, 0x91, 0x23, 0x28, 0x79,- 0xD9, 0x6B, 0x1D, 0xDA, 0x36, 0xC0, 0x12, 0x07,- 0x6E, 0xE5, 0xA2, 0xED, 0x7A, 0xE2, 0xDE, 0x63,- 0xEF, 0x84, 0x06, 0xA0, 0x6A, 0xEA, 0x82, 0xC1,- 0x88, 0x03, 0x1B, 0x56, 0x0B, 0xEA, 0xFB, 0x58,- 0x3F, 0xB3, 0xDE, 0x9E, 0x57, 0x95, 0x2A, 0x7E- },- {- 0xE1, 0xB3, 0xE7, 0xED, 0x86, 0x7F, 0x6C, 0x94,- 0x84, 0xA2, 0xA9, 0x7F, 0x77, 0x15, 0xF2, 0x5E,- 0x25, 0x29, 0x4E, 0x99, 0x2E, 0x41, 0xF6, 0xA7,- 0xC1, 0x61, 0xFF, 0xC2, 0xAD, 0xC6, 0xDA, 0xAE,- 0xB7, 0x11, 0x31, 0x02, 0xD5, 0xE6, 0x09, 0x02,- 0x87, 0xFE, 0x6A, 0xD9, 0x4C, 0xE5, 0xD6, 0xB7,- 0x39, 0xC6, 0xCA, 0x24, 0x0B, 0x05, 0xC7, 0x6F,- 0xB7, 0x3F, 0x25, 0xDD, 0x02, 0x4B, 0xF9, 0x35- },- {- 0x85, 0xFD, 0x08, 0x5F, 0xDC, 0x12, 0xA0, 0x80,- 0x98, 0x3D, 0xF0, 0x7B, 0xD7, 0x01, 0x2B, 0x0D,- 0x40, 0x2A, 0x0F, 0x40, 0x43, 0xFC, 0xB2, 0x77,- 0x5A, 0xDF, 0x0B, 0xAD, 0x17, 0x4F, 0x9B, 0x08,- 0xD1, 0x67, 0x6E, 0x47, 0x69, 0x85, 0x78, 0x5C,- 0x0A, 0x5D, 0xCC, 0x41, 0xDB, 0xFF, 0x6D, 0x95,- 0xEF, 0x4D, 0x66, 0xA3, 0xFB, 0xDC, 0x4A, 0x74,- 0xB8, 0x2B, 0xA5, 0x2D, 0xA0, 0x51, 0x2B, 0x74- },- {- 0xAE, 0xD8, 0xFA, 0x76, 0x4B, 0x0F, 0xBF, 0xF8,- 0x21, 0xE0, 0x52, 0x33, 0xD2, 0xF7, 0xB0, 0x90,- 0x0E, 0xC4, 0x4D, 0x82, 0x6F, 0x95, 0xE9, 0x3C,- 0x34, 0x3C, 0x1B, 0xC3, 0xBA, 0x5A, 0x24, 0x37,- 0x4B, 0x1D, 0x61, 0x6E, 0x7E, 0x7A, 0xBA, 0x45,- 0x3A, 0x0A, 0xDA, 0x5E, 0x4F, 0xAB, 0x53, 0x82,- 0x40, 0x9E, 0x0D, 0x42, 0xCE, 0x9C, 0x2B, 0xC7,- 0xFB, 0x39, 0xA9, 0x9C, 0x34, 0x0C, 0x20, 0xF0- },- {- 0x7B, 0xA3, 0xB2, 0xE2, 0x97, 0x23, 0x35, 0x22,- 0xEE, 0xB3, 0x43, 0xBD, 0x3E, 0xBC, 0xFD, 0x83,- 0x5A, 0x04, 0x00, 0x77, 0x35, 0xE8, 0x7F, 0x0C,- 0xA3, 0x00, 0xCB, 0xEE, 0x6D, 0x41, 0x65, 0x65,- 0x16, 0x21, 0x71, 0x58, 0x1E, 0x40, 0x20, 0xFF,- 0x4C, 0xF1, 0x76, 0x45, 0x0F, 0x12, 0x91, 0xEA,- 0x22, 0x85, 0xCB, 0x9E, 0xBF, 0xFE, 0x4C, 0x56,- 0x66, 0x06, 0x27, 0x68, 0x51, 0x45, 0x05, 0x1C- },- {- 0xDE, 0x74, 0x8B, 0xCF, 0x89, 0xEC, 0x88, 0x08,- 0x47, 0x21, 0xE1, 0x6B, 0x85, 0xF3, 0x0A, 0xDB,- 0x1A, 0x61, 0x34, 0xD6, 0x64, 0xB5, 0x84, 0x35,- 0x69, 0xBA, 0xBC, 0x5B, 0xBD, 0x1A, 0x15, 0xCA,- 0x9B, 0x61, 0x80, 0x3C, 0x90, 0x1A, 0x4F, 0xEF,- 0x32, 0x96, 0x5A, 0x17, 0x49, 0xC9, 0xF3, 0xA4,- 0xE2, 0x43, 0xE1, 0x73, 0x93, 0x9D, 0xC5, 0xA8,- 0xDC, 0x49, 0x5C, 0x67, 0x1A, 0xB5, 0x21, 0x45- },- {- 0xAA, 0xF4, 0xD2, 0xBD, 0xF2, 0x00, 0xA9, 0x19,- 0x70, 0x6D, 0x98, 0x42, 0xDC, 0xE1, 0x6C, 0x98,- 0x14, 0x0D, 0x34, 0xBC, 0x43, 0x3D, 0xF3, 0x20,- 0xAB, 0xA9, 0xBD, 0x42, 0x9E, 0x54, 0x9A, 0xA7,- 0xA3, 0x39, 0x76, 0x52, 0xA4, 0xD7, 0x68, 0x27,- 0x77, 0x86, 0xCF, 0x99, 0x3C, 0xDE, 0x23, 0x38,- 0x67, 0x3E, 0xD2, 0xE6, 0xB6, 0x6C, 0x96, 0x1F,- 0xEF, 0xB8, 0x2C, 0xD2, 0x0C, 0x93, 0x33, 0x8F- },- {- 0xC4, 0x08, 0x21, 0x89, 0x68, 0xB7, 0x88, 0xBF,- 0x86, 0x4F, 0x09, 0x97, 0xE6, 0xBC, 0x4C, 0x3D,- 0xBA, 0x68, 0xB2, 0x76, 0xE2, 0x12, 0x5A, 0x48,- 0x43, 0x29, 0x60, 0x52, 0xFF, 0x93, 0xBF, 0x57,- 0x67, 0xB8, 0xCD, 0xCE, 0x71, 0x31, 0xF0, 0x87,- 0x64, 0x30, 0xC1, 0x16, 0x5F, 0xEC, 0x6C, 0x4F,- 0x47, 0xAD, 0xAA, 0x4F, 0xD8, 0xBC, 0xFA, 0xCE,- 0xF4, 0x63, 0xB5, 0xD3, 0xD0, 0xFA, 0x61, 0xA0- },- {- 0x76, 0xD2, 0xD8, 0x19, 0xC9, 0x2B, 0xCE, 0x55,- 0xFA, 0x8E, 0x09, 0x2A, 0xB1, 0xBF, 0x9B, 0x9E,- 0xAB, 0x23, 0x7A, 0x25, 0x26, 0x79, 0x86, 0xCA,- 0xCF, 0x2B, 0x8E, 0xE1, 0x4D, 0x21, 0x4D, 0x73,- 0x0D, 0xC9, 0xA5, 0xAA, 0x2D, 0x7B, 0x59, 0x6E,- 0x86, 0xA1, 0xFD, 0x8F, 0xA0, 0x80, 0x4C, 0x77,- 0x40, 0x2D, 0x2F, 0xCD, 0x45, 0x08, 0x36, 0x88,- 0xB2, 0x18, 0xB1, 0xCD, 0xFA, 0x0D, 0xCB, 0xCB- },- {- 0x72, 0x06, 0x5E, 0xE4, 0xDD, 0x91, 0xC2, 0xD8,- 0x50, 0x9F, 0xA1, 0xFC, 0x28, 0xA3, 0x7C, 0x7F,- 0xC9, 0xFA, 0x7D, 0x5B, 0x3F, 0x8A, 0xD3, 0xD0,- 0xD7, 0xA2, 0x56, 0x26, 0xB5, 0x7B, 0x1B, 0x44,- 0x78, 0x8D, 0x4C, 0xAF, 0x80, 0x62, 0x90, 0x42,- 0x5F, 0x98, 0x90, 0xA3, 0xA2, 0xA3, 0x5A, 0x90,- 0x5A, 0xB4, 0xB3, 0x7A, 0xCF, 0xD0, 0xDA, 0x6E,- 0x45, 0x17, 0xB2, 0x52, 0x5C, 0x96, 0x51, 0xE4- },- {- 0x64, 0x47, 0x5D, 0xFE, 0x76, 0x00, 0xD7, 0x17,- 0x1B, 0xEA, 0x0B, 0x39, 0x4E, 0x27, 0xC9, 0xB0,- 0x0D, 0x8E, 0x74, 0xDD, 0x1E, 0x41, 0x6A, 0x79,- 0x47, 0x36, 0x82, 0xAD, 0x3D, 0xFD, 0xBB, 0x70,- 0x66, 0x31, 0x55, 0x80, 0x55, 0xCF, 0xC8, 0xA4,- 0x0E, 0x07, 0xBD, 0x01, 0x5A, 0x45, 0x40, 0xDC,- 0xDE, 0xA1, 0x58, 0x83, 0xCB, 0xBF, 0x31, 0x41,- 0x2D, 0xF1, 0xDE, 0x1C, 0xD4, 0x15, 0x2B, 0x91- },- {- 0x12, 0xCD, 0x16, 0x74, 0xA4, 0x48, 0x8A, 0x5D,- 0x7C, 0x2B, 0x31, 0x60, 0xD2, 0xE2, 0xC4, 0xB5,- 0x83, 0x71, 0xBE, 0xDA, 0xD7, 0x93, 0x41, 0x8D,- 0x6F, 0x19, 0xC6, 0xEE, 0x38, 0x5D, 0x70, 0xB3,- 0xE0, 0x67, 0x39, 0x36, 0x9D, 0x4D, 0xF9, 0x10,- 0xED, 0xB0, 0xB0, 0xA5, 0x4C, 0xBF, 0xF4, 0x3D,- 0x54, 0x54, 0x4C, 0xD3, 0x7A, 0xB3, 0xA0, 0x6C,- 0xFA, 0x0A, 0x3D, 0xDA, 0xC8, 0xB6, 0x6C, 0x89- },- {- 0x60, 0x75, 0x69, 0x66, 0x47, 0x9D, 0xED, 0xC6,- 0xDD, 0x4B, 0xCF, 0xF8, 0xEA, 0x7D, 0x1D, 0x4C,- 0xE4, 0xD4, 0xAF, 0x2E, 0x7B, 0x09, 0x7E, 0x32,- 0xE3, 0x76, 0x35, 0x18, 0x44, 0x11, 0x47, 0xCC,- 0x12, 0xB3, 0xC0, 0xEE, 0x6D, 0x2E, 0xCA, 0xBF,- 0x11, 0x98, 0xCE, 0xC9, 0x2E, 0x86, 0xA3, 0x61,- 0x6F, 0xBA, 0x4F, 0x4E, 0x87, 0x2F, 0x58, 0x25,- 0x33, 0x0A, 0xDB, 0xB4, 0xC1, 0xDE, 0xE4, 0x44- },- {- 0xA7, 0x80, 0x3B, 0xCB, 0x71, 0xBC, 0x1D, 0x0F,- 0x43, 0x83, 0xDD, 0xE1, 0xE0, 0x61, 0x2E, 0x04,- 0xF8, 0x72, 0xB7, 0x15, 0xAD, 0x30, 0x81, 0x5C,- 0x22, 0x49, 0xCF, 0x34, 0xAB, 0xB8, 0xB0, 0x24,- 0x91, 0x5C, 0xB2, 0xFC, 0x9F, 0x4E, 0x7C, 0xC4,- 0xC8, 0xCF, 0xD4, 0x5B, 0xE2, 0xD5, 0xA9, 0x1E,- 0xAB, 0x09, 0x41, 0xC7, 0xD2, 0x70, 0xE2, 0xDA,- 0x4C, 0xA4, 0xA9, 0xF7, 0xAC, 0x68, 0x66, 0x3A- },- {- 0xB8, 0x4E, 0xF6, 0xA7, 0x22, 0x9A, 0x34, 0xA7,- 0x50, 0xD9, 0xA9, 0x8E, 0xE2, 0x52, 0x98, 0x71,- 0x81, 0x6B, 0x87, 0xFB, 0xE3, 0xBC, 0x45, 0xB4,- 0x5F, 0xA5, 0xAE, 0x82, 0xD5, 0x14, 0x15, 0x40,- 0x21, 0x11, 0x65, 0xC3, 0xC5, 0xD7, 0xA7, 0x47,- 0x6B, 0xA5, 0xA4, 0xAA, 0x06, 0xD6, 0x64, 0x76,- 0xF0, 0xD9, 0xDC, 0x49, 0xA3, 0xF1, 0xEE, 0x72,- 0xC3, 0xAC, 0xAB, 0xD4, 0x98, 0x96, 0x74, 0x14- },- {- 0xFA, 0xE4, 0xB6, 0xD8, 0xEF, 0xC3, 0xF8, 0xC8,- 0xE6, 0x4D, 0x00, 0x1D, 0xAB, 0xEC, 0x3A, 0x21,- 0xF5, 0x44, 0xE8, 0x27, 0x14, 0x74, 0x52, 0x51,- 0xB2, 0xB4, 0xB3, 0x93, 0xF2, 0xF4, 0x3E, 0x0D,- 0xA3, 0xD4, 0x03, 0xC6, 0x4D, 0xB9, 0x5A, 0x2C,- 0xB6, 0xE2, 0x3E, 0xBB, 0x7B, 0x9E, 0x94, 0xCD,- 0xD5, 0xDD, 0xAC, 0x54, 0xF0, 0x7C, 0x4A, 0x61,- 0xBD, 0x3C, 0xB1, 0x0A, 0xA6, 0xF9, 0x3B, 0x49- },- {- 0x34, 0xF7, 0x28, 0x66, 0x05, 0xA1, 0x22, 0x36,- 0x95, 0x40, 0x14, 0x1D, 0xED, 0x79, 0xB8, 0x95,- 0x72, 0x55, 0xDA, 0x2D, 0x41, 0x55, 0xAB, 0xBF,- 0x5A, 0x8D, 0xBB, 0x89, 0xC8, 0xEB, 0x7E, 0xDE,- 0x8E, 0xEE, 0xF1, 0xDA, 0xA4, 0x6D, 0xC2, 0x9D,- 0x75, 0x1D, 0x04, 0x5D, 0xC3, 0xB1, 0xD6, 0x58,- 0xBB, 0x64, 0xB8, 0x0F, 0xF8, 0x58, 0x9E, 0xDD,- 0xB3, 0x82, 0x4B, 0x13, 0xDA, 0x23, 0x5A, 0x6B- },- {- 0x3B, 0x3B, 0x48, 0x43, 0x4B, 0xE2, 0x7B, 0x9E,- 0xAB, 0xAB, 0xBA, 0x43, 0xBF, 0x6B, 0x35, 0xF1,- 0x4B, 0x30, 0xF6, 0xA8, 0x8D, 0xC2, 0xE7, 0x50,- 0xC3, 0x58, 0x47, 0x0D, 0x6B, 0x3A, 0xA3, 0xC1,- 0x8E, 0x47, 0xDB, 0x40, 0x17, 0xFA, 0x55, 0x10,- 0x6D, 0x82, 0x52, 0xF0, 0x16, 0x37, 0x1A, 0x00,- 0xF5, 0xF8, 0xB0, 0x70, 0xB7, 0x4B, 0xA5, 0xF2,- 0x3C, 0xFF, 0xC5, 0x51, 0x1C, 0x9F, 0x09, 0xF0- },- {- 0xBA, 0x28, 0x9E, 0xBD, 0x65, 0x62, 0xC4, 0x8C,- 0x3E, 0x10, 0xA8, 0xAD, 0x6C, 0xE0, 0x2E, 0x73,- 0x43, 0x3D, 0x1E, 0x93, 0xD7, 0xC9, 0x27, 0x9D,- 0x4D, 0x60, 0xA7, 0xE8, 0x79, 0xEE, 0x11, 0xF4,- 0x41, 0xA0, 0x00, 0xF4, 0x8E, 0xD9, 0xF7, 0xC4,- 0xED, 0x87, 0xA4, 0x51, 0x36, 0xD7, 0xDC, 0xCD,- 0xCA, 0x48, 0x21, 0x09, 0xC7, 0x8A, 0x51, 0x06,- 0x2B, 0x3B, 0xA4, 0x04, 0x4A, 0xDA, 0x24, 0x69- },- {- 0x02, 0x29, 0x39, 0xE2, 0x38, 0x6C, 0x5A, 0x37,- 0x04, 0x98, 0x56, 0xC8, 0x50, 0xA2, 0xBB, 0x10,- 0xA1, 0x3D, 0xFE, 0xA4, 0x21, 0x2B, 0x4C, 0x73,- 0x2A, 0x88, 0x40, 0xA9, 0xFF, 0xA5, 0xFA, 0xF5,- 0x48, 0x75, 0xC5, 0x44, 0x88, 0x16, 0xB2, 0x78,- 0x5A, 0x00, 0x7D, 0xA8, 0xA8, 0xD2, 0xBC, 0x7D,- 0x71, 0xA5, 0x4E, 0x4E, 0x65, 0x71, 0xF1, 0x0B,- 0x60, 0x0C, 0xBD, 0xB2, 0x5D, 0x13, 0xED, 0xE3- },- {- 0xE6, 0xFE, 0xC1, 0x9D, 0x89, 0xCE, 0x87, 0x17,- 0xB1, 0xA0, 0x87, 0x02, 0x46, 0x70, 0xFE, 0x02,- 0x6F, 0x6C, 0x7C, 0xBD, 0xA1, 0x1C, 0xAE, 0xF9,- 0x59, 0xBB, 0x2D, 0x35, 0x1B, 0xF8, 0x56, 0xF8,- 0x05, 0x5D, 0x1C, 0x0E, 0xBD, 0xAA, 0xA9, 0xD1,- 0xB1, 0x78, 0x86, 0xFC, 0x2C, 0x56, 0x2B, 0x5E,- 0x99, 0x64, 0x2F, 0xC0, 0x64, 0x71, 0x0C, 0x0D,- 0x34, 0x88, 0xA0, 0x2B, 0x5E, 0xD7, 0xF6, 0xFD- },- {- 0x94, 0xC9, 0x6F, 0x02, 0xA8, 0xF5, 0x76, 0xAC,- 0xA3, 0x2B, 0xA6, 0x1C, 0x2B, 0x20, 0x6F, 0x90,- 0x72, 0x85, 0xD9, 0x29, 0x9B, 0x83, 0xAC, 0x17,- 0x5C, 0x20, 0x9A, 0x8D, 0x43, 0xD5, 0x3B, 0xFE,- 0x68, 0x3D, 0xD1, 0xD8, 0x3E, 0x75, 0x49, 0xCB,- 0x90, 0x6C, 0x28, 0xF5, 0x9A, 0xB7, 0xC4, 0x6F,- 0x87, 0x51, 0x36, 0x6A, 0x28, 0xC3, 0x9D, 0xD5,- 0xFE, 0x26, 0x93, 0xC9, 0x01, 0x96, 0x66, 0xC8- },- {- 0x31, 0xA0, 0xCD, 0x21, 0x5E, 0xBD, 0x2C, 0xB6,- 0x1D, 0xE5, 0xB9, 0xED, 0xC9, 0x1E, 0x61, 0x95,- 0xE3, 0x1C, 0x59, 0xA5, 0x64, 0x8D, 0x5C, 0x9F,- 0x73, 0x7E, 0x12, 0x5B, 0x26, 0x05, 0x70, 0x8F,- 0x2E, 0x32, 0x5A, 0xB3, 0x38, 0x1C, 0x8D, 0xCE,- 0x1A, 0x3E, 0x95, 0x88, 0x86, 0xF1, 0xEC, 0xDC,- 0x60, 0x31, 0x8F, 0x88, 0x2C, 0xFE, 0x20, 0xA2,- 0x41, 0x91, 0x35, 0x2E, 0x61, 0x7B, 0x0F, 0x21- },- {- 0x91, 0xAB, 0x50, 0x4A, 0x52, 0x2D, 0xCE, 0x78,- 0x77, 0x9F, 0x4C, 0x6C, 0x6B, 0xA2, 0xE6, 0xB6,- 0xDB, 0x55, 0x65, 0xC7, 0x6D, 0x3E, 0x7E, 0x7C,- 0x92, 0x0C, 0xAF, 0x7F, 0x75, 0x7E, 0xF9, 0xDB,- 0x7C, 0x8F, 0xCF, 0x10, 0xE5, 0x7F, 0x03, 0x37,- 0x9E, 0xA9, 0xBF, 0x75, 0xEB, 0x59, 0x89, 0x5D,- 0x96, 0xE1, 0x49, 0x80, 0x0B, 0x6A, 0xAE, 0x01,- 0xDB, 0x77, 0x8B, 0xB9, 0x0A, 0xFB, 0xC9, 0x89- },- {- 0xD8, 0x5C, 0xAB, 0xC6, 0xBD, 0x5B, 0x1A, 0x01,- 0xA5, 0xAF, 0xD8, 0xC6, 0x73, 0x47, 0x40, 0xDA,- 0x9F, 0xD1, 0xC1, 0xAC, 0xC6, 0xDB, 0x29, 0xBF,- 0xC8, 0xA2, 0xE5, 0xB6, 0x68, 0xB0, 0x28, 0xB6,- 0xB3, 0x15, 0x4B, 0xFB, 0x87, 0x03, 0xFA, 0x31,- 0x80, 0x25, 0x1D, 0x58, 0x9A, 0xD3, 0x80, 0x40,- 0xCE, 0xB7, 0x07, 0xC4, 0xBA, 0xD1, 0xB5, 0x34,- 0x3C, 0xB4, 0x26, 0xB6, 0x1E, 0xAA, 0x49, 0xC1- },- {- 0xD6, 0x2E, 0xFB, 0xEC, 0x2C, 0xA9, 0xC1, 0xF8,- 0xBD, 0x66, 0xCE, 0x8B, 0x3F, 0x6A, 0x89, 0x8C,- 0xB3, 0xF7, 0x56, 0x6B, 0xA6, 0x56, 0x8C, 0x61,- 0x8A, 0xD1, 0xFE, 0xB2, 0xB6, 0x5B, 0x76, 0xC3,- 0xCE, 0x1D, 0xD2, 0x0F, 0x73, 0x95, 0x37, 0x2F,- 0xAF, 0x28, 0x42, 0x7F, 0x61, 0xC9, 0x27, 0x80,- 0x49, 0xCF, 0x01, 0x40, 0xDF, 0x43, 0x4F, 0x56,- 0x33, 0x04, 0x8C, 0x86, 0xB8, 0x1E, 0x03, 0x99- },- {- 0x7C, 0x8F, 0xDC, 0x61, 0x75, 0x43, 0x9E, 0x2C,- 0x3D, 0xB1, 0x5B, 0xAF, 0xA7, 0xFB, 0x06, 0x14,- 0x3A, 0x6A, 0x23, 0xBC, 0x90, 0xF4, 0x49, 0xE7,- 0x9D, 0xEE, 0xF7, 0x3C, 0x3D, 0x49, 0x2A, 0x67,- 0x17, 0x15, 0xC1, 0x93, 0xB6, 0xFE, 0xA9, 0xF0,- 0x36, 0x05, 0x0B, 0x94, 0x60, 0x69, 0x85, 0x6B,- 0x89, 0x7E, 0x08, 0xC0, 0x07, 0x68, 0xF5, 0xEE,- 0x5D, 0xDC, 0xF7, 0x0B, 0x7C, 0xD6, 0xD0, 0xE0- },- {- 0x58, 0x60, 0x2E, 0xE7, 0x46, 0x8E, 0x6B, 0xC9,- 0xDF, 0x21, 0xBD, 0x51, 0xB2, 0x3C, 0x00, 0x5F,- 0x72, 0xD6, 0xCB, 0x01, 0x3F, 0x0A, 0x1B, 0x48,- 0xCB, 0xEC, 0x5E, 0xCA, 0x29, 0x92, 0x99, 0xF9,- 0x7F, 0x09, 0xF5, 0x4A, 0x9A, 0x01, 0x48, 0x3E,- 0xAE, 0xB3, 0x15, 0xA6, 0x47, 0x8B, 0xAD, 0x37,- 0xBA, 0x47, 0xCA, 0x13, 0x47, 0xC7, 0xC8, 0xFC,- 0x9E, 0x66, 0x95, 0x59, 0x2C, 0x91, 0xD7, 0x23- },- {- 0x27, 0xF5, 0xB7, 0x9E, 0xD2, 0x56, 0xB0, 0x50,- 0x99, 0x3D, 0x79, 0x34, 0x96, 0xED, 0xF4, 0x80,- 0x7C, 0x1D, 0x85, 0xA7, 0xB0, 0xA6, 0x7C, 0x9C,- 0x4F, 0xA9, 0x98, 0x60, 0x75, 0x0B, 0x0A, 0xE6,- 0x69, 0x89, 0x67, 0x0A, 0x8F, 0xFD, 0x78, 0x56,- 0xD7, 0xCE, 0x41, 0x15, 0x99, 0xE5, 0x8C, 0x4D,- 0x77, 0xB2, 0x32, 0xA6, 0x2B, 0xEF, 0x64, 0xD1,- 0x52, 0x75, 0xBE, 0x46, 0xA6, 0x82, 0x35, 0xFF- },- {- 0x39, 0x57, 0xA9, 0x76, 0xB9, 0xF1, 0x88, 0x7B,- 0xF0, 0x04, 0xA8, 0xDC, 0xA9, 0x42, 0xC9, 0x2D,- 0x2B, 0x37, 0xEA, 0x52, 0x60, 0x0F, 0x25, 0xE0,- 0xC9, 0xBC, 0x57, 0x07, 0xD0, 0x27, 0x9C, 0x00,- 0xC6, 0xE8, 0x5A, 0x83, 0x9B, 0x0D, 0x2D, 0x8E,- 0xB5, 0x9C, 0x51, 0xD9, 0x47, 0x88, 0xEB, 0xE6,- 0x24, 0x74, 0xA7, 0x91, 0xCA, 0xDF, 0x52, 0xCC,- 0xCF, 0x20, 0xF5, 0x07, 0x0B, 0x65, 0x73, 0xFC- },- {- 0xEA, 0xA2, 0x37, 0x6D, 0x55, 0x38, 0x0B, 0xF7,- 0x72, 0xEC, 0xCA, 0x9C, 0xB0, 0xAA, 0x46, 0x68,- 0xC9, 0x5C, 0x70, 0x71, 0x62, 0xFA, 0x86, 0xD5,- 0x18, 0xC8, 0xCE, 0x0C, 0xA9, 0xBF, 0x73, 0x62,- 0xB9, 0xF2, 0xA0, 0xAD, 0xC3, 0xFF, 0x59, 0x92,- 0x2D, 0xF9, 0x21, 0xB9, 0x45, 0x67, 0xE8, 0x1E,- 0x45, 0x2F, 0x6C, 0x1A, 0x07, 0xFC, 0x81, 0x7C,- 0xEB, 0xE9, 0x96, 0x04, 0xB3, 0x50, 0x5D, 0x38- },- {- 0xC1, 0xE2, 0xC7, 0x8B, 0x6B, 0x27, 0x34, 0xE2,- 0x48, 0x0E, 0xC5, 0x50, 0x43, 0x4C, 0xB5, 0xD6,- 0x13, 0x11, 0x1A, 0xDC, 0xC2, 0x1D, 0x47, 0x55,- 0x45, 0xC3, 0xB1, 0xB7, 0xE6, 0xFF, 0x12, 0x44,- 0x44, 0x76, 0xE5, 0xC0, 0x55, 0x13, 0x2E, 0x22,- 0x29, 0xDC, 0x0F, 0x80, 0x70, 0x44, 0xBB, 0x91,- 0x9B, 0x1A, 0x56, 0x62, 0xDD, 0x38, 0xA9, 0xEE,- 0x65, 0xE2, 0x43, 0xA3, 0x91, 0x1A, 0xED, 0x1A- },- {- 0x8A, 0xB4, 0x87, 0x13, 0x38, 0x9D, 0xD0, 0xFC,- 0xF9, 0xF9, 0x65, 0xD3, 0xCE, 0x66, 0xB1, 0xE5,- 0x59, 0xA1, 0xF8, 0xC5, 0x87, 0x41, 0xD6, 0x76,- 0x83, 0xCD, 0x97, 0x13, 0x54, 0xF4, 0x52, 0xE6,- 0x2D, 0x02, 0x07, 0xA6, 0x5E, 0x43, 0x6C, 0x5D,- 0x5D, 0x8F, 0x8E, 0xE7, 0x1C, 0x6A, 0xBF, 0xE5,- 0x0E, 0x66, 0x90, 0x04, 0xC3, 0x02, 0xB3, 0x1A,- 0x7E, 0xA8, 0x31, 0x1D, 0x4A, 0x91, 0x60, 0x51- },- {- 0x24, 0xCE, 0x0A, 0xDD, 0xAA, 0x4C, 0x65, 0x03,- 0x8B, 0xD1, 0xB1, 0xC0, 0xF1, 0x45, 0x2A, 0x0B,- 0x12, 0x87, 0x77, 0xAA, 0xBC, 0x94, 0xA2, 0x9D,- 0xF2, 0xFD, 0x6C, 0x7E, 0x2F, 0x85, 0xF8, 0xAB,- 0x9A, 0xC7, 0xEF, 0xF5, 0x16, 0xB0, 0xE0, 0xA8,- 0x25, 0xC8, 0x4A, 0x24, 0xCF, 0xE4, 0x92, 0xEA,- 0xAD, 0x0A, 0x63, 0x08, 0xE4, 0x6D, 0xD4, 0x2F,- 0xE8, 0x33, 0x3A, 0xB9, 0x71, 0xBB, 0x30, 0xCA- },- {- 0x51, 0x54, 0xF9, 0x29, 0xEE, 0x03, 0x04, 0x5B,- 0x6B, 0x0C, 0x00, 0x04, 0xFA, 0x77, 0x8E, 0xDE,- 0xE1, 0xD1, 0x39, 0x89, 0x32, 0x67, 0xCC, 0x84,- 0x82, 0x5A, 0xD7, 0xB3, 0x6C, 0x63, 0xDE, 0x32,- 0x79, 0x8E, 0x4A, 0x16, 0x6D, 0x24, 0x68, 0x65,- 0x61, 0x35, 0x4F, 0x63, 0xB0, 0x07, 0x09, 0xA1,- 0x36, 0x4B, 0x3C, 0x24, 0x1D, 0xE3, 0xFE, 0xBF,- 0x07, 0x54, 0x04, 0x58, 0x97, 0x46, 0x7C, 0xD4- },- {- 0xE7, 0x4E, 0x90, 0x79, 0x20, 0xFD, 0x87, 0xBD,- 0x5A, 0xD6, 0x36, 0xDD, 0x11, 0x08, 0x5E, 0x50,- 0xEE, 0x70, 0x45, 0x9C, 0x44, 0x3E, 0x1C, 0xE5,- 0x80, 0x9A, 0xF2, 0xBC, 0x2E, 0xBA, 0x39, 0xF9,- 0xE6, 0xD7, 0x12, 0x8E, 0x0E, 0x37, 0x12, 0xC3,- 0x16, 0xDA, 0x06, 0xF4, 0x70, 0x5D, 0x78, 0xA4,- 0x83, 0x8E, 0x28, 0x12, 0x1D, 0x43, 0x44, 0xA2,- 0xC7, 0x9C, 0x5E, 0x0D, 0xB3, 0x07, 0xA6, 0x77- },- {- 0xBF, 0x91, 0xA2, 0x23, 0x34, 0xBA, 0xC2, 0x0F,- 0x3F, 0xD8, 0x06, 0x63, 0xB3, 0xCD, 0x06, 0xC4,- 0xE8, 0x80, 0x2F, 0x30, 0xE6, 0xB5, 0x9F, 0x90,- 0xD3, 0x03, 0x5C, 0xC9, 0x79, 0x8A, 0x21, 0x7E,- 0xD5, 0xA3, 0x1A, 0xBB, 0xDA, 0x7F, 0xA6, 0x84,- 0x28, 0x27, 0xBD, 0xF2, 0xA7, 0xA1, 0xC2, 0x1F,- 0x6F, 0xCF, 0xCC, 0xBB, 0x54, 0xC6, 0xC5, 0x29,- 0x26, 0xF3, 0x2D, 0xA8, 0x16, 0x26, 0x9B, 0xE1- },- {- 0xD9, 0xD5, 0xC7, 0x4B, 0xE5, 0x12, 0x1B, 0x0B,- 0xD7, 0x42, 0xF2, 0x6B, 0xFF, 0xB8, 0xC8, 0x9F,- 0x89, 0x17, 0x1F, 0x3F, 0x93, 0x49, 0x13, 0x49,- 0x2B, 0x09, 0x03, 0xC2, 0x71, 0xBB, 0xE2, 0xB3,- 0x39, 0x5E, 0xF2, 0x59, 0x66, 0x9B, 0xEF, 0x43,- 0xB5, 0x7F, 0x7F, 0xCC, 0x30, 0x27, 0xDB, 0x01,- 0x82, 0x3F, 0x6B, 0xAE, 0xE6, 0x6E, 0x4F, 0x9F,- 0xEA, 0xD4, 0xD6, 0x72, 0x6C, 0x74, 0x1F, 0xCE- },- {- 0x50, 0xC8, 0xB8, 0xCF, 0x34, 0xCD, 0x87, 0x9F,- 0x80, 0xE2, 0xFA, 0xAB, 0x32, 0x30, 0xB0, 0xC0,- 0xE1, 0xCC, 0x3E, 0x9D, 0xCA, 0xDE, 0xB1, 0xB9,- 0xD9, 0x7A, 0xB9, 0x23, 0x41, 0x5D, 0xD9, 0xA1,- 0xFE, 0x38, 0xAD, 0xDD, 0x5C, 0x11, 0x75, 0x6C,- 0x67, 0x99, 0x0B, 0x25, 0x6E, 0x95, 0xAD, 0x6D,- 0x8F, 0x9F, 0xED, 0xCE, 0x10, 0xBF, 0x1C, 0x90,- 0x67, 0x9C, 0xDE, 0x0E, 0xCF, 0x1B, 0xE3, 0x47- },- {- 0x0A, 0x38, 0x6E, 0x7C, 0xD5, 0xDD, 0x9B, 0x77,- 0xA0, 0x35, 0xE0, 0x9F, 0xE6, 0xFE, 0xE2, 0xC8,- 0xCE, 0x61, 0xB5, 0x38, 0x3C, 0x87, 0xEA, 0x43,- 0x20, 0x50, 0x59, 0xC5, 0xE4, 0xCD, 0x4F, 0x44,- 0x08, 0x31, 0x9B, 0xB0, 0xA8, 0x23, 0x60, 0xF6,- 0xA5, 0x8E, 0x6C, 0x9C, 0xE3, 0xF4, 0x87, 0xC4,- 0x46, 0x06, 0x3B, 0xF8, 0x13, 0xBC, 0x6B, 0xA5,- 0x35, 0xE1, 0x7F, 0xC1, 0x82, 0x6C, 0xFC, 0x91- },- {- 0x1F, 0x14, 0x59, 0xCB, 0x6B, 0x61, 0xCB, 0xAC,- 0x5F, 0x0E, 0xFE, 0x8F, 0xC4, 0x87, 0x53, 0x8F,- 0x42, 0x54, 0x89, 0x87, 0xFC, 0xD5, 0x62, 0x21,- 0xCF, 0xA7, 0xBE, 0xB2, 0x25, 0x04, 0x76, 0x9E,- 0x79, 0x2C, 0x45, 0xAD, 0xFB, 0x1D, 0x6B, 0x3D,- 0x60, 0xD7, 0xB7, 0x49, 0xC8, 0xA7, 0x5B, 0x0B,- 0xDF, 0x14, 0xE8, 0xEA, 0x72, 0x1B, 0x95, 0xDC,- 0xA5, 0x38, 0xCA, 0x6E, 0x25, 0x71, 0x12, 0x09- },- {- 0xE5, 0x8B, 0x38, 0x36, 0xB7, 0xD8, 0xFE, 0xDB,- 0xB5, 0x0C, 0xA5, 0x72, 0x5C, 0x65, 0x71, 0xE7,- 0x4C, 0x07, 0x85, 0xE9, 0x78, 0x21, 0xDA, 0xB8,- 0xB6, 0x29, 0x8C, 0x10, 0xE4, 0xC0, 0x79, 0xD4,- 0xA6, 0xCD, 0xF2, 0x2F, 0x0F, 0xED, 0xB5, 0x50,- 0x32, 0x92, 0x5C, 0x16, 0x74, 0x81, 0x15, 0xF0,- 0x1A, 0x10, 0x5E, 0x77, 0xE0, 0x0C, 0xEE, 0x3D,- 0x07, 0x92, 0x4D, 0xC0, 0xD8, 0xF9, 0x06, 0x59- },- {- 0xB9, 0x29, 0xCC, 0x65, 0x05, 0xF0, 0x20, 0x15,- 0x86, 0x72, 0xDE, 0xDA, 0x56, 0xD0, 0xDB, 0x08,- 0x1A, 0x2E, 0xE3, 0x4C, 0x00, 0xC1, 0x10, 0x00,- 0x29, 0xBD, 0xF8, 0xEA, 0x98, 0x03, 0x4F, 0xA4,- 0xBF, 0x3E, 0x86, 0x55, 0xEC, 0x69, 0x7F, 0xE3,- 0x6F, 0x40, 0x55, 0x3C, 0x5B, 0xB4, 0x68, 0x01,- 0x64, 0x4A, 0x62, 0x7D, 0x33, 0x42, 0xF4, 0xFC,- 0x92, 0xB6, 0x1F, 0x03, 0x29, 0x0F, 0xB3, 0x81- },- {- 0x72, 0xD3, 0x53, 0x99, 0x4B, 0x49, 0xD3, 0xE0,- 0x31, 0x53, 0x92, 0x9A, 0x1E, 0x4D, 0x4F, 0x18,- 0x8E, 0xE5, 0x8A, 0xB9, 0xE7, 0x2E, 0xE8, 0xE5,- 0x12, 0xF2, 0x9B, 0xC7, 0x73, 0x91, 0x38, 0x19,- 0xCE, 0x05, 0x7D, 0xDD, 0x70, 0x02, 0xC0, 0x43,- 0x3E, 0xE0, 0xA1, 0x61, 0x14, 0xE3, 0xD1, 0x56,- 0xDD, 0x2C, 0x4A, 0x7E, 0x80, 0xEE, 0x53, 0x37,- 0x8B, 0x86, 0x70, 0xF2, 0x3E, 0x33, 0xEF, 0x56- },- {- 0xC7, 0x0E, 0xF9, 0xBF, 0xD7, 0x75, 0xD4, 0x08,- 0x17, 0x67, 0x37, 0xA0, 0x73, 0x6D, 0x68, 0x51,- 0x7C, 0xE1, 0xAA, 0xAD, 0x7E, 0x81, 0xA9, 0x3C,- 0x8C, 0x1E, 0xD9, 0x67, 0xEA, 0x21, 0x4F, 0x56,- 0xC8, 0xA3, 0x77, 0xB1, 0x76, 0x3E, 0x67, 0x66,- 0x15, 0xB6, 0x0F, 0x39, 0x88, 0x24, 0x1E, 0xAE,- 0x6E, 0xAB, 0x96, 0x85, 0xA5, 0x12, 0x49, 0x29,- 0xD2, 0x81, 0x88, 0xF2, 0x9E, 0xAB, 0x06, 0xF7- },- {- 0xC2, 0x30, 0xF0, 0x80, 0x26, 0x79, 0xCB, 0x33,- 0x82, 0x2E, 0xF8, 0xB3, 0xB2, 0x1B, 0xF7, 0xA9,- 0xA2, 0x89, 0x42, 0x09, 0x29, 0x01, 0xD7, 0xDA,- 0xC3, 0x76, 0x03, 0x00, 0x83, 0x10, 0x26, 0xCF,- 0x35, 0x4C, 0x92, 0x32, 0xDF, 0x3E, 0x08, 0x4D,- 0x99, 0x03, 0x13, 0x0C, 0x60, 0x1F, 0x63, 0xC1,- 0xF4, 0xA4, 0xA4, 0xB8, 0x10, 0x6E, 0x46, 0x8C,- 0xD4, 0x43, 0xBB, 0xE5, 0xA7, 0x34, 0xF4, 0x5F- },- {- 0x6F, 0x43, 0x09, 0x4C, 0xAF, 0xB5, 0xEB, 0xF1,- 0xF7, 0xA4, 0x93, 0x7E, 0xC5, 0x0F, 0x56, 0xA4,- 0xC9, 0xDA, 0x30, 0x3C, 0xBB, 0x55, 0xAC, 0x1F,- 0x27, 0xF1, 0xF1, 0x97, 0x6C, 0xD9, 0x6B, 0xED,- 0xA9, 0x46, 0x4F, 0x0E, 0x7B, 0x9C, 0x54, 0x62,- 0x0B, 0x8A, 0x9F, 0xBA, 0x98, 0x31, 0x64, 0xB8,- 0xBE, 0x35, 0x78, 0x42, 0x5A, 0x02, 0x4F, 0x5F,- 0xE1, 0x99, 0xC3, 0x63, 0x56, 0xB8, 0x89, 0x72- },- {- 0x37, 0x45, 0x27, 0x3F, 0x4C, 0x38, 0x22, 0x5D,- 0xB2, 0x33, 0x73, 0x81, 0x87, 0x1A, 0x0C, 0x6A,- 0xAF, 0xD3, 0xAF, 0x9B, 0x01, 0x8C, 0x88, 0xAA,- 0x02, 0x02, 0x58, 0x50, 0xA5, 0xDC, 0x3A, 0x42,- 0xA1, 0xA3, 0xE0, 0x3E, 0x56, 0xCB, 0xF1, 0xB0,- 0x87, 0x6D, 0x63, 0xA4, 0x41, 0xF1, 0xD2, 0x85,- 0x6A, 0x39, 0xB8, 0x80, 0x1E, 0xB5, 0xAF, 0x32,- 0x52, 0x01, 0xC4, 0x15, 0xD6, 0x5E, 0x97, 0xFE- },- {- 0xC5, 0x0C, 0x44, 0xCC, 0xA3, 0xEC, 0x3E, 0xDA,- 0xAE, 0x77, 0x9A, 0x7E, 0x17, 0x94, 0x50, 0xEB,- 0xDD, 0xA2, 0xF9, 0x70, 0x67, 0xC6, 0x90, 0xAA,- 0x6C, 0x5A, 0x4A, 0xC7, 0xC3, 0x01, 0x39, 0xBB,- 0x27, 0xC0, 0xDF, 0x4D, 0xB3, 0x22, 0x0E, 0x63,- 0xCB, 0x11, 0x0D, 0x64, 0xF3, 0x7F, 0xFE, 0x07,- 0x8D, 0xB7, 0x26, 0x53, 0xE2, 0xDA, 0xAC, 0xF9,- 0x3A, 0xE3, 0xF0, 0xA2, 0xD1, 0xA7, 0xEB, 0x2E- },- {- 0x8A, 0xEF, 0x26, 0x3E, 0x38, 0x5C, 0xBC, 0x61,- 0xE1, 0x9B, 0x28, 0x91, 0x42, 0x43, 0x26, 0x2A,- 0xF5, 0xAF, 0xE8, 0x72, 0x6A, 0xF3, 0xCE, 0x39,- 0xA7, 0x9C, 0x27, 0x02, 0x8C, 0xF3, 0xEC, 0xD3,- 0xF8, 0xD2, 0xDF, 0xD9, 0xCF, 0xC9, 0xAD, 0x91,- 0xB5, 0x8F, 0x6F, 0x20, 0x77, 0x8F, 0xD5, 0xF0,- 0x28, 0x94, 0xA3, 0xD9, 0x1C, 0x7D, 0x57, 0xD1,- 0xE4, 0xB8, 0x66, 0xA7, 0xF3, 0x64, 0xB6, 0xBE- },- {- 0x28, 0x69, 0x61, 0x41, 0xDE, 0x6E, 0x2D, 0x9B,- 0xCB, 0x32, 0x35, 0x57, 0x8A, 0x66, 0x16, 0x6C,- 0x14, 0x48, 0xD3, 0xE9, 0x05, 0xA1, 0xB4, 0x82,- 0xD4, 0x23, 0xBE, 0x4B, 0xC5, 0x36, 0x9B, 0xC8,- 0xC7, 0x4D, 0xAE, 0x0A, 0xCC, 0x9C, 0xC1, 0x23,- 0xE1, 0xD8, 0xDD, 0xCE, 0x9F, 0x97, 0x91, 0x7E,- 0x8C, 0x01, 0x9C, 0x55, 0x2D, 0xA3, 0x2D, 0x39,- 0xD2, 0x21, 0x9B, 0x9A, 0xBF, 0x0F, 0xA8, 0xC8- },- {- 0x2F, 0xB9, 0xEB, 0x20, 0x85, 0x83, 0x01, 0x81,- 0x90, 0x3A, 0x9D, 0xAF, 0xE3, 0xDB, 0x42, 0x8E,- 0xE1, 0x5B, 0xE7, 0x66, 0x22, 0x24, 0xEF, 0xD6,- 0x43, 0x37, 0x1F, 0xB2, 0x56, 0x46, 0xAE, 0xE7,- 0x16, 0xE5, 0x31, 0xEC, 0xA6, 0x9B, 0x2B, 0xDC,- 0x82, 0x33, 0xF1, 0xA8, 0x08, 0x1F, 0xA4, 0x3D,- 0xA1, 0x50, 0x03, 0x02, 0x97, 0x5A, 0x77, 0xF4,- 0x2F, 0xA5, 0x92, 0x13, 0x67, 0x10, 0xE9, 0xDC- },- {- 0x66, 0xF9, 0xA7, 0x14, 0x3F, 0x7A, 0x33, 0x14,- 0xA6, 0x69, 0xBF, 0x2E, 0x24, 0xBB, 0xB3, 0x50,- 0x14, 0x26, 0x1D, 0x63, 0x9F, 0x49, 0x5B, 0x6C,- 0x9C, 0x1F, 0x10, 0x4F, 0xE8, 0xE3, 0x20, 0xAC,- 0xA6, 0x0D, 0x45, 0x50, 0xD6, 0x9D, 0x52, 0xED,- 0xBD, 0x5A, 0x3C, 0xDE, 0xB4, 0x01, 0x4A, 0xE6,- 0x5B, 0x1D, 0x87, 0xAA, 0x77, 0x0B, 0x69, 0xAE,- 0x5C, 0x15, 0xF4, 0x33, 0x0B, 0x0B, 0x0A, 0xD8- },- {- 0xF4, 0xC4, 0xDD, 0x1D, 0x59, 0x4C, 0x35, 0x65,- 0xE3, 0xE2, 0x5C, 0xA4, 0x3D, 0xAD, 0x82, 0xF6,- 0x2A, 0xBE, 0xA4, 0x83, 0x5E, 0xD4, 0xCD, 0x81,- 0x1B, 0xCD, 0x97, 0x5E, 0x46, 0x27, 0x98, 0x28,- 0xD4, 0x4D, 0x4C, 0x62, 0xC3, 0x67, 0x9F, 0x1B,- 0x7F, 0x7B, 0x9D, 0xD4, 0x57, 0x1D, 0x7B, 0x49,- 0x55, 0x73, 0x47, 0xB8, 0xC5, 0x46, 0x0C, 0xBD,- 0xC1, 0xBE, 0xF6, 0x90, 0xFB, 0x2A, 0x08, 0xC0- },- {- 0x8F, 0x1D, 0xC9, 0x64, 0x9C, 0x3A, 0x84, 0x55,- 0x1F, 0x8F, 0x6E, 0x91, 0xCA, 0xC6, 0x82, 0x42,- 0xA4, 0x3B, 0x1F, 0x8F, 0x32, 0x8E, 0xE9, 0x22,- 0x80, 0x25, 0x73, 0x87, 0xFA, 0x75, 0x59, 0xAA,- 0x6D, 0xB1, 0x2E, 0x4A, 0xEA, 0xDC, 0x2D, 0x26,- 0x09, 0x91, 0x78, 0x74, 0x9C, 0x68, 0x64, 0xB3,- 0x57, 0xF3, 0xF8, 0x3B, 0x2F, 0xB3, 0xEF, 0xA8,- 0xD2, 0xA8, 0xDB, 0x05, 0x6B, 0xED, 0x6B, 0xCC- },- {- 0x31, 0x39, 0xC1, 0xA7, 0xF9, 0x7A, 0xFD, 0x16,- 0x75, 0xD4, 0x60, 0xEB, 0xBC, 0x07, 0xF2, 0x72,- 0x8A, 0xA1, 0x50, 0xDF, 0x84, 0x96, 0x24, 0x51,- 0x1E, 0xE0, 0x4B, 0x74, 0x3B, 0xA0, 0xA8, 0x33,- 0x09, 0x2F, 0x18, 0xC1, 0x2D, 0xC9, 0x1B, 0x4D,- 0xD2, 0x43, 0xF3, 0x33, 0x40, 0x2F, 0x59, 0xFE,- 0x28, 0xAB, 0xDB, 0xBB, 0xAE, 0x30, 0x1E, 0x7B,- 0x65, 0x9C, 0x7A, 0x26, 0xD5, 0xC0, 0xF9, 0x79- },- {- 0x06, 0xF9, 0x4A, 0x29, 0x96, 0x15, 0x8A, 0x81,- 0x9F, 0xE3, 0x4C, 0x40, 0xDE, 0x3C, 0xF0, 0x37,- 0x9F, 0xD9, 0xFB, 0x85, 0xB3, 0xE3, 0x63, 0xBA,- 0x39, 0x26, 0xA0, 0xE7, 0xD9, 0x60, 0xE3, 0xF4,- 0xC2, 0xE0, 0xC7, 0x0C, 0x7C, 0xE0, 0xCC, 0xB2,- 0xA6, 0x4F, 0xC2, 0x98, 0x69, 0xF6, 0xE7, 0xAB,- 0x12, 0xBD, 0x4D, 0x3F, 0x14, 0xFC, 0xE9, 0x43,- 0x27, 0x90, 0x27, 0xE7, 0x85, 0xFB, 0x5C, 0x29- },- {- 0xC2, 0x9C, 0x39, 0x9E, 0xF3, 0xEE, 0xE8, 0x96,- 0x1E, 0x87, 0x56, 0x5C, 0x1C, 0xE2, 0x63, 0x92,- 0x5F, 0xC3, 0xD0, 0xCE, 0x26, 0x7D, 0x13, 0xE4,- 0x8D, 0xD9, 0xE7, 0x32, 0xEE, 0x67, 0xB0, 0xF6,- 0x9F, 0xAD, 0x56, 0x40, 0x1B, 0x0F, 0x10, 0xFC,- 0xAA, 0xC1, 0x19, 0x20, 0x10, 0x46, 0xCC, 0xA2,- 0x8C, 0x5B, 0x14, 0xAB, 0xDE, 0xA3, 0x21, 0x2A,- 0xE6, 0x55, 0x62, 0xF7, 0xF1, 0x38, 0xDB, 0x3D- },- {- 0x4C, 0xEC, 0x4C, 0x9D, 0xF5, 0x2E, 0xEF, 0x05,- 0xC3, 0xF6, 0xFA, 0xAA, 0x97, 0x91, 0xBC, 0x74,- 0x45, 0x93, 0x71, 0x83, 0x22, 0x4E, 0xCC, 0x37,- 0xA1, 0xE5, 0x8D, 0x01, 0x32, 0xD3, 0x56, 0x17,- 0x53, 0x1D, 0x7E, 0x79, 0x5F, 0x52, 0xAF, 0x7B,- 0x1E, 0xB9, 0xD1, 0x47, 0xDE, 0x12, 0x92, 0xD3,- 0x45, 0xFE, 0x34, 0x18, 0x23, 0xF8, 0xE6, 0xBC,- 0x1E, 0x5B, 0xAD, 0xCA, 0x5C, 0x65, 0x61, 0x08- },- {- 0x89, 0x8B, 0xFB, 0xAE, 0x93, 0xB3, 0xE1, 0x8D,- 0x00, 0x69, 0x7E, 0xAB, 0x7D, 0x97, 0x04, 0xFA,- 0x36, 0xEC, 0x33, 0x9D, 0x07, 0x61, 0x31, 0xCE,- 0xFD, 0xF3, 0x0E, 0xDB, 0xE8, 0xD9, 0xCC, 0x81,- 0xC3, 0xA8, 0x0B, 0x12, 0x96, 0x59, 0xB1, 0x63,- 0xA3, 0x23, 0xBA, 0xB9, 0x79, 0x3D, 0x4F, 0xEE,- 0xD9, 0x2D, 0x54, 0xDA, 0xE9, 0x66, 0xC7, 0x75,- 0x29, 0x76, 0x4A, 0x09, 0xBE, 0x88, 0xDB, 0x45- },- {- 0xEE, 0x9B, 0xD0, 0x46, 0x9D, 0x3A, 0xAF, 0x4F,- 0x14, 0x03, 0x5B, 0xE4, 0x8A, 0x2C, 0x3B, 0x84,- 0xD9, 0xB4, 0xB1, 0xFF, 0xF1, 0xD9, 0x45, 0xE1,- 0xF1, 0xC1, 0xD3, 0x89, 0x80, 0xA9, 0x51, 0xBE,- 0x19, 0x7B, 0x25, 0xFE, 0x22, 0xC7, 0x31, 0xF2,- 0x0A, 0xEA, 0xCC, 0x93, 0x0B, 0xA9, 0xC4, 0xA1,- 0xF4, 0x76, 0x22, 0x27, 0x61, 0x7A, 0xD3, 0x50,- 0xFD, 0xAB, 0xB4, 0xE8, 0x02, 0x73, 0xA0, 0xF4- },- {- 0x3D, 0x4D, 0x31, 0x13, 0x30, 0x05, 0x81, 0xCD,- 0x96, 0xAC, 0xBF, 0x09, 0x1C, 0x3D, 0x0F, 0x3C,- 0x31, 0x01, 0x38, 0xCD, 0x69, 0x79, 0xE6, 0x02,- 0x6C, 0xDE, 0x62, 0x3E, 0x2D, 0xD1, 0xB2, 0x4D,- 0x4A, 0x86, 0x38, 0xBE, 0xD1, 0x07, 0x33, 0x44,- 0x78, 0x3A, 0xD0, 0x64, 0x9C, 0xC6, 0x30, 0x5C,- 0xCE, 0xC0, 0x4B, 0xEB, 0x49, 0xF3, 0x1C, 0x63,- 0x30, 0x88, 0xA9, 0x9B, 0x65, 0x13, 0x02, 0x67- },- {- 0x95, 0xC0, 0x59, 0x1A, 0xD9, 0x1F, 0x92, 0x1A,- 0xC7, 0xBE, 0x6D, 0x9C, 0xE3, 0x7E, 0x06, 0x63,- 0xED, 0x80, 0x11, 0xC1, 0xCF, 0xD6, 0xD0, 0x16,- 0x2A, 0x55, 0x72, 0xE9, 0x43, 0x68, 0xBA, 0xC0,- 0x20, 0x24, 0x48, 0x5E, 0x6A, 0x39, 0x85, 0x4A,- 0xA4, 0x6F, 0xE3, 0x8E, 0x97, 0xD6, 0xC6, 0xB1,- 0x94, 0x7C, 0xD2, 0x72, 0xD8, 0x6B, 0x06, 0xBB,- 0x5B, 0x2F, 0x78, 0xB9, 0xB6, 0x8D, 0x55, 0x9D- },- {- 0x22, 0x7B, 0x79, 0xDE, 0xD3, 0x68, 0x15, 0x3B,- 0xF4, 0x6C, 0x0A, 0x3C, 0xA9, 0x78, 0xBF, 0xDB,- 0xEF, 0x31, 0xF3, 0x02, 0x4A, 0x56, 0x65, 0x84,- 0x24, 0x68, 0x49, 0x0B, 0x0F, 0xF7, 0x48, 0xAE,- 0x04, 0xE7, 0x83, 0x2E, 0xD4, 0xC9, 0xF4, 0x9D,- 0xE9, 0xB1, 0x70, 0x67, 0x09, 0xD6, 0x23, 0xE5,- 0xC8, 0xC1, 0x5E, 0x3C, 0xAE, 0xCA, 0xE8, 0xD5,- 0xE4, 0x33, 0x43, 0x0F, 0xF7, 0x2F, 0x20, 0xEB- },- {- 0x5D, 0x34, 0xF3, 0x95, 0x2F, 0x01, 0x05, 0xEE,- 0xF8, 0x8A, 0xE8, 0xB6, 0x4C, 0x6C, 0xE9, 0x5E,- 0xBF, 0xAD, 0xE0, 0xE0, 0x2C, 0x69, 0xB0, 0x87,- 0x62, 0xA8, 0x71, 0x2D, 0x2E, 0x49, 0x11, 0xAD,- 0x3F, 0x94, 0x1F, 0xC4, 0x03, 0x4D, 0xC9, 0xB2,- 0xE4, 0x79, 0xFD, 0xBC, 0xD2, 0x79, 0xB9, 0x02,- 0xFA, 0xF5, 0xD8, 0x38, 0xBB, 0x2E, 0x0C, 0x64,- 0x95, 0xD3, 0x72, 0xB5, 0xB7, 0x02, 0x98, 0x13- },- {- 0x7F, 0x93, 0x9B, 0xF8, 0x35, 0x3A, 0xBC, 0xE4,- 0x9E, 0x77, 0xF1, 0x4F, 0x37, 0x50, 0xAF, 0x20,- 0xB7, 0xB0, 0x39, 0x02, 0xE1, 0xA1, 0xE7, 0xFB,- 0x6A, 0xAF, 0x76, 0xD0, 0x25, 0x9C, 0xD4, 0x01,- 0xA8, 0x31, 0x90, 0xF1, 0x56, 0x40, 0xE7, 0x4F,- 0x3E, 0x6C, 0x5A, 0x90, 0xE8, 0x39, 0xC7, 0x82,- 0x1F, 0x64, 0x74, 0x75, 0x7F, 0x75, 0xC7, 0xBF,- 0x90, 0x02, 0x08, 0x4D, 0xDC, 0x7A, 0x62, 0xDC- },- {- 0x06, 0x2B, 0x61, 0xA2, 0xF9, 0xA3, 0x3A, 0x71,- 0xD7, 0xD0, 0xA0, 0x61, 0x19, 0x64, 0x4C, 0x70,- 0xB0, 0x71, 0x6A, 0x50, 0x4D, 0xE7, 0xE5, 0xE1,- 0xBE, 0x49, 0xBD, 0x7B, 0x86, 0xE7, 0xED, 0x68,- 0x17, 0x71, 0x4F, 0x9F, 0x0F, 0xC3, 0x13, 0xD0,- 0x61, 0x29, 0x59, 0x7E, 0x9A, 0x22, 0x35, 0xEC,- 0x85, 0x21, 0xDE, 0x36, 0xF7, 0x29, 0x0A, 0x90,- 0xCC, 0xFC, 0x1F, 0xFA, 0x6D, 0x0A, 0xEE, 0x29- },- {- 0xF2, 0x9E, 0x01, 0xEE, 0xAE, 0x64, 0x31, 0x1E,- 0xB7, 0xF1, 0xC6, 0x42, 0x2F, 0x94, 0x6B, 0xF7,- 0xBE, 0xA3, 0x63, 0x79, 0x52, 0x3E, 0x7B, 0x2B,- 0xBA, 0xBA, 0x7D, 0x1D, 0x34, 0xA2, 0x2D, 0x5E,- 0xA5, 0xF1, 0xC5, 0xA0, 0x9D, 0x5C, 0xE1, 0xFE,- 0x68, 0x2C, 0xCE, 0xD9, 0xA4, 0x79, 0x8D, 0x1A,- 0x05, 0xB4, 0x6C, 0xD7, 0x2D, 0xFF, 0x5C, 0x1B,- 0x35, 0x54, 0x40, 0xB2, 0xA2, 0xD4, 0x76, 0xBC- },- {- 0xEC, 0x38, 0xCD, 0x3B, 0xBA, 0xB3, 0xEF, 0x35,- 0xD7, 0xCB, 0x6D, 0x5C, 0x91, 0x42, 0x98, 0x35,- 0x1D, 0x8A, 0x9D, 0xC9, 0x7F, 0xCE, 0xE0, 0x51,- 0xA8, 0xA0, 0x2F, 0x58, 0xE3, 0xED, 0x61, 0x84,- 0xD0, 0xB7, 0x81, 0x0A, 0x56, 0x15, 0x41, 0x1A,- 0xB1, 0xB9, 0x52, 0x09, 0xC3, 0xC8, 0x10, 0x11,- 0x4F, 0xDE, 0xB2, 0x24, 0x52, 0x08, 0x4E, 0x77,- 0xF3, 0xF8, 0x47, 0xC6, 0xDB, 0xAA, 0xFE, 0x16- },- {- 0xC2, 0xAE, 0xF5, 0xE0, 0xCA, 0x43, 0xE8, 0x26,- 0x41, 0x56, 0x5B, 0x8C, 0xB9, 0x43, 0xAA, 0x8B,- 0xA5, 0x35, 0x50, 0xCA, 0xEF, 0x79, 0x3B, 0x65,- 0x32, 0xFA, 0xFA, 0xD9, 0x4B, 0x81, 0x60, 0x82,- 0xF0, 0x11, 0x3A, 0x3E, 0xA2, 0xF6, 0x36, 0x08,- 0xAB, 0x40, 0x43, 0x7E, 0xCC, 0x0F, 0x02, 0x29,- 0xCB, 0x8F, 0xA2, 0x24, 0xDC, 0xF1, 0xC4, 0x78,- 0xA6, 0x7D, 0x9B, 0x64, 0x16, 0x2B, 0x92, 0xD1- },- {- 0x15, 0xF5, 0x34, 0xEF, 0xFF, 0x71, 0x05, 0xCD,- 0x1C, 0x25, 0x4D, 0x07, 0x4E, 0x27, 0xD5, 0x89,- 0x8B, 0x89, 0x31, 0x3B, 0x7D, 0x36, 0x6D, 0xC2,- 0xD7, 0xD8, 0x71, 0x13, 0xFA, 0x7D, 0x53, 0xAA,- 0xE1, 0x3F, 0x6D, 0xBA, 0x48, 0x7A, 0xD8, 0x10,- 0x3D, 0x5E, 0x85, 0x4C, 0x91, 0xFD, 0xB6, 0xE1,- 0xE7, 0x4B, 0x2E, 0xF6, 0xD1, 0x43, 0x17, 0x69,- 0xC3, 0x07, 0x67, 0xDD, 0xE0, 0x67, 0xA3, 0x5C- },- {- 0x89, 0xAC, 0xBC, 0xA0, 0xB1, 0x69, 0x89, 0x7A,- 0x0A, 0x27, 0x14, 0xC2, 0xDF, 0x8C, 0x95, 0xB5,- 0xB7, 0x9C, 0xB6, 0x93, 0x90, 0x14, 0x2B, 0x7D,- 0x60, 0x18, 0xBB, 0x3E, 0x30, 0x76, 0xB0, 0x99,- 0xB7, 0x9A, 0x96, 0x41, 0x52, 0xA9, 0xD9, 0x12,- 0xB1, 0xB8, 0x64, 0x12, 0xB7, 0xE3, 0x72, 0xE9,- 0xCE, 0xCA, 0xD7, 0xF2, 0x5D, 0x4C, 0xBA, 0xB8,- 0xA3, 0x17, 0xBE, 0x36, 0x49, 0x2A, 0x67, 0xD7- },- {- 0xE3, 0xC0, 0x73, 0x91, 0x90, 0xED, 0x84, 0x9C,- 0x9C, 0x96, 0x2F, 0xD9, 0xDB, 0xB5, 0x5E, 0x20,- 0x7E, 0x62, 0x4F, 0xCA, 0xC1, 0xEB, 0x41, 0x76,- 0x91, 0x51, 0x54, 0x99, 0xEE, 0xA8, 0xD8, 0x26,- 0x7B, 0x7E, 0x8F, 0x12, 0x87, 0xA6, 0x36, 0x33,- 0xAF, 0x50, 0x11, 0xFD, 0xE8, 0xC4, 0xDD, 0xF5,- 0x5B, 0xFD, 0xF7, 0x22, 0xED, 0xF8, 0x88, 0x31,- 0x41, 0x4F, 0x2C, 0xFA, 0xED, 0x59, 0xCB, 0x9A- },- {- 0x8D, 0x6C, 0xF8, 0x7C, 0x08, 0x38, 0x0D, 0x2D,- 0x15, 0x06, 0xEE, 0xE4, 0x6F, 0xD4, 0x22, 0x2D,- 0x21, 0xD8, 0xC0, 0x4E, 0x58, 0x5F, 0xBF, 0xD0,- 0x82, 0x69, 0xC9, 0x8F, 0x70, 0x28, 0x33, 0xA1,- 0x56, 0x32, 0x6A, 0x07, 0x24, 0x65, 0x64, 0x00,- 0xEE, 0x09, 0x35, 0x1D, 0x57, 0xB4, 0x40, 0x17,- 0x5E, 0x2A, 0x5D, 0xE9, 0x3C, 0xC5, 0xF8, 0x0D,- 0xB6, 0xDA, 0xF8, 0x35, 0x76, 0xCF, 0x75, 0xFA- },- {- 0xDA, 0x24, 0xBE, 0xDE, 0x38, 0x36, 0x66, 0xD5,- 0x63, 0xEE, 0xED, 0x37, 0xF6, 0x31, 0x9B, 0xAF,- 0x20, 0xD5, 0xC7, 0x5D, 0x16, 0x35, 0xA6, 0xBA,- 0x5E, 0xF4, 0xCF, 0xA1, 0xAC, 0x95, 0x48, 0x7E,- 0x96, 0xF8, 0xC0, 0x8A, 0xF6, 0x00, 0xAA, 0xB8,- 0x7C, 0x98, 0x6E, 0xBA, 0xD4, 0x9F, 0xC7, 0x0A,- 0x58, 0xB4, 0x89, 0x0B, 0x9C, 0x87, 0x6E, 0x09,- 0x10, 0x16, 0xDA, 0xF4, 0x9E, 0x1D, 0x32, 0x2E- },- {- 0xF9, 0xD1, 0xD1, 0xB1, 0xE8, 0x7E, 0xA7, 0xAE,- 0x75, 0x3A, 0x02, 0x97, 0x50, 0xCC, 0x1C, 0xF3,- 0xD0, 0x15, 0x7D, 0x41, 0x80, 0x5E, 0x24, 0x5C,- 0x56, 0x17, 0xBB, 0x93, 0x4E, 0x73, 0x2F, 0x0A,- 0xE3, 0x18, 0x0B, 0x78, 0xE0, 0x5B, 0xFE, 0x76,- 0xC7, 0xC3, 0x05, 0x1E, 0x3E, 0x3A, 0xC7, 0x8B,- 0x9B, 0x50, 0xC0, 0x51, 0x42, 0x65, 0x7E, 0x1E,- 0x03, 0x21, 0x5D, 0x6E, 0xC7, 0xBF, 0xD0, 0xFC- },- {- 0x11, 0xB7, 0xBC, 0x16, 0x68, 0x03, 0x20, 0x48,- 0xAA, 0x43, 0x34, 0x3D, 0xE4, 0x76, 0x39, 0x5E,- 0x81, 0x4B, 0xBB, 0xC2, 0x23, 0x67, 0x8D, 0xB9,- 0x51, 0xA1, 0xB0, 0x3A, 0x02, 0x1E, 0xFA, 0xC9,- 0x48, 0xCF, 0xBE, 0x21, 0x5F, 0x97, 0xFE, 0x9A,- 0x72, 0xA2, 0xF6, 0xBC, 0x03, 0x9E, 0x39, 0x56,- 0xBF, 0xA4, 0x17, 0xC1, 0xA9, 0xF1, 0x0D, 0x6D,- 0x7B, 0xA5, 0xD3, 0xD3, 0x2F, 0xF3, 0x23, 0xE5- },- {- 0xB8, 0xD9, 0x00, 0x0E, 0x4F, 0xC2, 0xB0, 0x66,- 0xED, 0xB9, 0x1A, 0xFE, 0xE8, 0xE7, 0xEB, 0x0F,- 0x24, 0xE3, 0xA2, 0x01, 0xDB, 0x8B, 0x67, 0x93,- 0xC0, 0x60, 0x85, 0x81, 0xE6, 0x28, 0xED, 0x0B,- 0xCC, 0x4E, 0x5A, 0xA6, 0x78, 0x79, 0x92, 0xA4,- 0xBC, 0xC4, 0x4E, 0x28, 0x80, 0x93, 0xE6, 0x3E,- 0xE8, 0x3A, 0xBD, 0x0B, 0xC3, 0xEC, 0x6D, 0x09,- 0x34, 0xA6, 0x74, 0xA4, 0xDA, 0x13, 0x83, 0x8A- },- {- 0xCE, 0x32, 0x5E, 0x29, 0x4F, 0x9B, 0x67, 0x19,- 0xD6, 0xB6, 0x12, 0x78, 0x27, 0x6A, 0xE0, 0x6A,- 0x25, 0x64, 0xC0, 0x3B, 0xB0, 0xB7, 0x83, 0xFA,- 0xFE, 0x78, 0x5B, 0xDF, 0x89, 0xC7, 0xD5, 0xAC,- 0xD8, 0x3E, 0x78, 0x75, 0x6D, 0x30, 0x1B, 0x44,- 0x56, 0x99, 0x02, 0x4E, 0xAE, 0xB7, 0x7B, 0x54,- 0xD4, 0x77, 0x33, 0x6E, 0xC2, 0xA4, 0xF3, 0x32,- 0xF2, 0xB3, 0xF8, 0x87, 0x65, 0xDD, 0xB0, 0xC3- },- {- 0x29, 0xAC, 0xC3, 0x0E, 0x96, 0x03, 0xAE, 0x2F,- 0xCC, 0xF9, 0x0B, 0xF9, 0x7E, 0x6C, 0xC4, 0x63,- 0xEB, 0xE2, 0x8C, 0x1B, 0x2F, 0x9B, 0x4B, 0x76,- 0x5E, 0x70, 0x53, 0x7C, 0x25, 0xC7, 0x02, 0xA2,- 0x9D, 0xCB, 0xFB, 0xF1, 0x4C, 0x99, 0xC5, 0x43,- 0x45, 0xBA, 0x2B, 0x51, 0xF1, 0x7B, 0x77, 0xB5,- 0xF1, 0x5D, 0xB9, 0x2B, 0xBA, 0xD8, 0xFA, 0x95,- 0xC4, 0x71, 0xF5, 0xD0, 0x70, 0xA1, 0x37, 0xCC- },- {- 0x33, 0x79, 0xCB, 0xAA, 0xE5, 0x62, 0xA8, 0x7B,- 0x4C, 0x04, 0x25, 0x55, 0x0F, 0xFD, 0xD6, 0xBF,- 0xE1, 0x20, 0x3F, 0x0D, 0x66, 0x6C, 0xC7, 0xEA,- 0x09, 0x5B, 0xE4, 0x07, 0xA5, 0xDF, 0xE6, 0x1E,- 0xE9, 0x14, 0x41, 0xCD, 0x51, 0x54, 0xB3, 0xE5,- 0x3B, 0x4F, 0x5F, 0xB3, 0x1A, 0xD4, 0xC7, 0xA9,- 0xAD, 0x5C, 0x7A, 0xF4, 0xAE, 0x67, 0x9A, 0xA5,- 0x1A, 0x54, 0x00, 0x3A, 0x54, 0xCA, 0x6B, 0x2D- },- {- 0x30, 0x95, 0xA3, 0x49, 0xD2, 0x45, 0x70, 0x8C,- 0x7C, 0xF5, 0x50, 0x11, 0x87, 0x03, 0xD7, 0x30,- 0x2C, 0x27, 0xB6, 0x0A, 0xF5, 0xD4, 0xE6, 0x7F,- 0xC9, 0x78, 0xF8, 0xA4, 0xE6, 0x09, 0x53, 0xC7,- 0xA0, 0x4F, 0x92, 0xFC, 0xF4, 0x1A, 0xEE, 0x64,- 0x32, 0x1C, 0xCB, 0x70, 0x7A, 0x89, 0x58, 0x51,- 0x55, 0x2B, 0x1E, 0x37, 0xB0, 0x0B, 0xC5, 0xE6,- 0xB7, 0x2F, 0xA5, 0xBC, 0xEF, 0x9E, 0x3F, 0xFF- },- {- 0x07, 0x26, 0x2D, 0x73, 0x8B, 0x09, 0x32, 0x1F,- 0x4D, 0xBC, 0xCE, 0xC4, 0xBB, 0x26, 0xF4, 0x8C,- 0xB0, 0xF0, 0xED, 0x24, 0x6C, 0xE0, 0xB3, 0x1B,- 0x9A, 0x6E, 0x7B, 0xC6, 0x83, 0x04, 0x9F, 0x1F,- 0x3E, 0x55, 0x45, 0xF2, 0x8C, 0xE9, 0x32, 0xDD,- 0x98, 0x5C, 0x5A, 0xB0, 0xF4, 0x3B, 0xD6, 0xDE,- 0x07, 0x70, 0x56, 0x0A, 0xF3, 0x29, 0x06, 0x5E,- 0xD2, 0xE4, 0x9D, 0x34, 0x62, 0x4C, 0x2C, 0xBB- },- {- 0xB6, 0x40, 0x5E, 0xCA, 0x8E, 0xE3, 0x31, 0x6C,- 0x87, 0x06, 0x1C, 0xC6, 0xEC, 0x18, 0xDB, 0xA5,- 0x3E, 0x6C, 0x25, 0x0C, 0x63, 0xBA, 0x1F, 0x3B,- 0xAE, 0x9E, 0x55, 0xDD, 0x34, 0x98, 0x03, 0x6A,- 0xF0, 0x8C, 0xD2, 0x72, 0xAA, 0x24, 0xD7, 0x13,- 0xC6, 0x02, 0x0D, 0x77, 0xAB, 0x2F, 0x39, 0x19,- 0xAF, 0x1A, 0x32, 0xF3, 0x07, 0x42, 0x06, 0x18,- 0xAB, 0x97, 0xE7, 0x39, 0x53, 0x99, 0x4F, 0xB4- },- {- 0x7E, 0xE6, 0x82, 0xF6, 0x31, 0x48, 0xEE, 0x45,- 0xF6, 0xE5, 0x31, 0x5D, 0xA8, 0x1E, 0x5C, 0x6E,- 0x55, 0x7C, 0x2C, 0x34, 0x64, 0x1F, 0xC5, 0x09,- 0xC7, 0xA5, 0x70, 0x10, 0x88, 0xC3, 0x8A, 0x74,- 0x75, 0x61, 0x68, 0xE2, 0xCD, 0x8D, 0x35, 0x1E,- 0x88, 0xFD, 0x1A, 0x45, 0x1F, 0x36, 0x0A, 0x01,- 0xF5, 0xB2, 0x58, 0x0F, 0x9B, 0x5A, 0x2E, 0x8C,- 0xFC, 0x13, 0x8F, 0x3D, 0xD5, 0x9A, 0x3F, 0xFC- },- {- 0x1D, 0x26, 0x3C, 0x17, 0x9D, 0x6B, 0x26, 0x8F,- 0x6F, 0xA0, 0x16, 0xF3, 0xA4, 0xF2, 0x9E, 0x94,- 0x38, 0x91, 0x12, 0x5E, 0xD8, 0x59, 0x3C, 0x81,- 0x25, 0x60, 0x59, 0xF5, 0xA7, 0xB4, 0x4A, 0xF2,- 0xDC, 0xB2, 0x03, 0x0D, 0x17, 0x5C, 0x00, 0xE6,- 0x2E, 0xCA, 0xF7, 0xEE, 0x96, 0x68, 0x2A, 0xA0,- 0x7A, 0xB2, 0x0A, 0x61, 0x10, 0x24, 0xA2, 0x85,- 0x32, 0xB1, 0xC2, 0x5B, 0x86, 0x65, 0x79, 0x02- },- {- 0x10, 0x6D, 0x13, 0x2C, 0xBD, 0xB4, 0xCD, 0x25,- 0x97, 0x81, 0x28, 0x46, 0xE2, 0xBC, 0x1B, 0xF7,- 0x32, 0xFE, 0xC5, 0xF0, 0xA5, 0xF6, 0x5D, 0xBB,- 0x39, 0xEC, 0x4E, 0x6D, 0xC6, 0x4A, 0xB2, 0xCE,- 0x6D, 0x24, 0x63, 0x0D, 0x0F, 0x15, 0xA8, 0x05,- 0xC3, 0x54, 0x00, 0x25, 0xD8, 0x4A, 0xFA, 0x98,- 0xE3, 0x67, 0x03, 0xC3, 0xDB, 0xEE, 0x71, 0x3E,- 0x72, 0xDD, 0xE8, 0x46, 0x5B, 0xC1, 0xBE, 0x7E- },- {- 0x0E, 0x79, 0x96, 0x82, 0x26, 0x65, 0x06, 0x67,- 0xA8, 0xD8, 0x62, 0xEA, 0x8D, 0xA4, 0x89, 0x1A,- 0xF5, 0x6A, 0x4E, 0x3A, 0x8B, 0x6D, 0x17, 0x50,- 0xE3, 0x94, 0xF0, 0xDE, 0xA7, 0x6D, 0x64, 0x0D,- 0x85, 0x07, 0x7B, 0xCE, 0xC2, 0xCC, 0x86, 0x88,- 0x6E, 0x50, 0x67, 0x51, 0xB4, 0xF6, 0xA5, 0x83,- 0x8F, 0x7F, 0x0B, 0x5F, 0xEF, 0x76, 0x5D, 0x9D,- 0xC9, 0x0D, 0xCD, 0xCB, 0xAF, 0x07, 0x9F, 0x08- },- {- 0x52, 0x11, 0x56, 0xA8, 0x2A, 0xB0, 0xC4, 0xE5,- 0x66, 0xE5, 0x84, 0x4D, 0x5E, 0x31, 0xAD, 0x9A,- 0xAF, 0x14, 0x4B, 0xBD, 0x5A, 0x46, 0x4F, 0xDC,- 0xA3, 0x4D, 0xBD, 0x57, 0x17, 0xE8, 0xFF, 0x71,- 0x1D, 0x3F, 0xFE, 0xBB, 0xFA, 0x08, 0x5D, 0x67,- 0xFE, 0x99, 0x6A, 0x34, 0xF6, 0xD3, 0xE4, 0xE6,- 0x0B, 0x13, 0x96, 0xBF, 0x4B, 0x16, 0x10, 0xC2,- 0x63, 0xBD, 0xBB, 0x83, 0x4D, 0x56, 0x08, 0x16- },- {- 0x1A, 0xBA, 0x88, 0xBE, 0xFC, 0x55, 0xBC, 0x25,- 0xEF, 0xBC, 0xE0, 0x2D, 0xB8, 0xB9, 0x93, 0x3E,- 0x46, 0xF5, 0x76, 0x61, 0xBA, 0xEA, 0xBE, 0xB2,- 0x1C, 0xC2, 0x57, 0x4D, 0x2A, 0x51, 0x8A, 0x3C,- 0xBA, 0x5D, 0xC5, 0xA3, 0x8E, 0x49, 0x71, 0x34,- 0x40, 0xB2, 0x5F, 0x9C, 0x74, 0x4E, 0x75, 0xF6,- 0xB8, 0x5C, 0x9D, 0x8F, 0x46, 0x81, 0xF6, 0x76,- 0x16, 0x0F, 0x61, 0x05, 0x35, 0x7B, 0x84, 0x06- },- {- 0x5A, 0x99, 0x49, 0xFC, 0xB2, 0xC4, 0x73, 0xCD,- 0xA9, 0x68, 0xAC, 0x1B, 0x5D, 0x08, 0x56, 0x6D,- 0xC2, 0xD8, 0x16, 0xD9, 0x60, 0xF5, 0x7E, 0x63,- 0xB8, 0x98, 0xFA, 0x70, 0x1C, 0xF8, 0xEB, 0xD3,- 0xF5, 0x9B, 0x12, 0x4D, 0x95, 0xBF, 0xBB, 0xED,- 0xC5, 0xF1, 0xCF, 0x0E, 0x17, 0xD5, 0xEA, 0xED,- 0x0C, 0x02, 0xC5, 0x0B, 0x69, 0xD8, 0xA4, 0x02,- 0xCA, 0xBC, 0xCA, 0x44, 0x33, 0xB5, 0x1F, 0xD4- },- {- 0xB0, 0xCE, 0xAD, 0x09, 0x80, 0x7C, 0x67, 0x2A,- 0xF2, 0xEB, 0x2B, 0x0F, 0x06, 0xDD, 0xE4, 0x6C,- 0xF5, 0x37, 0x0E, 0x15, 0xA4, 0x09, 0x6B, 0x1A,- 0x7D, 0x7C, 0xBB, 0x36, 0xEC, 0x31, 0xC2, 0x05,- 0xFB, 0xEF, 0xCA, 0x00, 0xB7, 0xA4, 0x16, 0x2F,- 0xA8, 0x9F, 0xB4, 0xFB, 0x3E, 0xB7, 0x8D, 0x79,- 0x77, 0x0C, 0x23, 0xF4, 0x4E, 0x72, 0x06, 0x66,- 0x4C, 0xE3, 0xCD, 0x93, 0x1C, 0x29, 0x1E, 0x5D- },- {- 0xBB, 0x66, 0x64, 0x93, 0x1E, 0xC9, 0x70, 0x44,- 0xE4, 0x5B, 0x2A, 0xE4, 0x20, 0xAE, 0x1C, 0x55,- 0x1A, 0x88, 0x74, 0xBC, 0x93, 0x7D, 0x08, 0xE9,- 0x69, 0x39, 0x9C, 0x39, 0x64, 0xEB, 0xDB, 0xA8,- 0x34, 0x6C, 0xDD, 0x5D, 0x09, 0xCA, 0xAF, 0xE4,- 0xC2, 0x8B, 0xA7, 0xEC, 0x78, 0x81, 0x91, 0xCE,- 0xCA, 0x65, 0xDD, 0xD6, 0xF9, 0x5F, 0x18, 0x58,- 0x3E, 0x04, 0x0D, 0x0F, 0x30, 0xD0, 0x36, 0x4D- },- {- 0x65, 0xBC, 0x77, 0x0A, 0x5F, 0xAA, 0x37, 0x92,- 0x36, 0x98, 0x03, 0x68, 0x3E, 0x84, 0x4B, 0x0B,- 0xE7, 0xEE, 0x96, 0xF2, 0x9F, 0x6D, 0x6A, 0x35,- 0x56, 0x80, 0x06, 0xBD, 0x55, 0x90, 0xF9, 0xA4,- 0xEF, 0x63, 0x9B, 0x7A, 0x80, 0x61, 0xC7, 0xB0,- 0x42, 0x4B, 0x66, 0xB6, 0x0A, 0xC3, 0x4A, 0xF3,- 0x11, 0x99, 0x05, 0xF3, 0x3A, 0x9D, 0x8C, 0x3A,- 0xE1, 0x83, 0x82, 0xCA, 0x9B, 0x68, 0x99, 0x00- },- {- 0xEA, 0x9B, 0x4D, 0xCA, 0x33, 0x33, 0x36, 0xAA,- 0xF8, 0x39, 0xA4, 0x5C, 0x6E, 0xAA, 0x48, 0xB8,- 0xCB, 0x4C, 0x7D, 0xDA, 0xBF, 0xFE, 0xA4, 0xF6,- 0x43, 0xD6, 0x35, 0x7E, 0xA6, 0x62, 0x8A, 0x48,- 0x0A, 0x5B, 0x45, 0xF2, 0xB0, 0x52, 0xC1, 0xB0,- 0x7D, 0x1F, 0xED, 0xCA, 0x91, 0x8B, 0x6F, 0x11,- 0x39, 0xD8, 0x0F, 0x74, 0xC2, 0x45, 0x10, 0xDC,- 0xBA, 0xA4, 0xBE, 0x70, 0xEA, 0xCC, 0x1B, 0x06- },- {- 0xE6, 0x34, 0x2F, 0xB4, 0xA7, 0x80, 0xAD, 0x97,- 0x5D, 0x0E, 0x24, 0xBC, 0xE1, 0x49, 0x98, 0x9B,- 0x91, 0xD3, 0x60, 0x55, 0x7E, 0x87, 0x99, 0x4F,- 0x6B, 0x45, 0x7B, 0x89, 0x55, 0x75, 0xCC, 0x02,- 0xD0, 0xC1, 0x5B, 0xAD, 0x3C, 0xE7, 0x57, 0x7F,- 0x4C, 0x63, 0x92, 0x7F, 0xF1, 0x3F, 0x3E, 0x38,- 0x1F, 0xF7, 0xE7, 0x2B, 0xDB, 0xE7, 0x45, 0x32,- 0x48, 0x44, 0xA9, 0xD2, 0x7E, 0x3F, 0x1C, 0x01- },- {- 0x3E, 0x20, 0x9C, 0x9B, 0x33, 0xE8, 0xE4, 0x61,- 0x17, 0x8A, 0xB4, 0x6B, 0x1C, 0x64, 0xB4, 0x9A,- 0x07, 0xFB, 0x74, 0x5F, 0x1C, 0x8B, 0xC9, 0x5F,- 0xBF, 0xB9, 0x4C, 0x6B, 0x87, 0xC6, 0x95, 0x16,- 0x65, 0x1B, 0x26, 0x4E, 0xF9, 0x80, 0x93, 0x7F,- 0xAD, 0x41, 0x23, 0x8B, 0x91, 0xDD, 0xC0, 0x11,- 0xA5, 0xDD, 0x77, 0x7C, 0x7E, 0xFD, 0x44, 0x94,- 0xB4, 0xB6, 0xEC, 0xD3, 0xA9, 0xC2, 0x2A, 0xC0- },- {- 0xFD, 0x6A, 0x3D, 0x5B, 0x18, 0x75, 0xD8, 0x04,- 0x86, 0xD6, 0xE6, 0x96, 0x94, 0xA5, 0x6D, 0xBB,- 0x04, 0xA9, 0x9A, 0x4D, 0x05, 0x1F, 0x15, 0xDB,- 0x26, 0x89, 0x77, 0x6B, 0xA1, 0xC4, 0x88, 0x2E,- 0x6D, 0x46, 0x2A, 0x60, 0x3B, 0x70, 0x15, 0xDC,- 0x9F, 0x4B, 0x74, 0x50, 0xF0, 0x53, 0x94, 0x30,- 0x3B, 0x86, 0x52, 0xCF, 0xB4, 0x04, 0xA2, 0x66,- 0x96, 0x2C, 0x41, 0xBA, 0xE6, 0xE1, 0x8A, 0x94- },- {- 0x95, 0x1E, 0x27, 0x51, 0x7E, 0x6B, 0xAD, 0x9E,- 0x41, 0x95, 0xFC, 0x86, 0x71, 0xDE, 0xE3, 0xE7,- 0xE9, 0xBE, 0x69, 0xCE, 0xE1, 0x42, 0x2C, 0xB9,- 0xFE, 0xCF, 0xCE, 0x0D, 0xBA, 0x87, 0x5F, 0x7B,- 0x31, 0x0B, 0x93, 0xEE, 0x3A, 0x3D, 0x55, 0x8F,- 0x94, 0x1F, 0x63, 0x5F, 0x66, 0x8F, 0xF8, 0x32,- 0xD2, 0xC1, 0xD0, 0x33, 0xC5, 0xE2, 0xF0, 0x99,- 0x7E, 0x4C, 0x66, 0xF1, 0x47, 0x34, 0x4E, 0x02- },- {- 0x8E, 0xBA, 0x2F, 0x87, 0x4F, 0x1A, 0xE8, 0x40,- 0x41, 0x90, 0x3C, 0x7C, 0x42, 0x53, 0xC8, 0x22,- 0x92, 0x53, 0x0F, 0xC8, 0x50, 0x95, 0x50, 0xBF,- 0xDC, 0x34, 0xC9, 0x5C, 0x7E, 0x28, 0x89, 0xD5,- 0x65, 0x0B, 0x0A, 0xD8, 0xCB, 0x98, 0x8E, 0x5C,- 0x48, 0x94, 0xCB, 0x87, 0xFB, 0xFB, 0xB1, 0x96,- 0x12, 0xEA, 0x93, 0xCC, 0xC4, 0xC5, 0xCA, 0xD1,- 0x71, 0x58, 0xB9, 0x76, 0x34, 0x64, 0xB4, 0x92- },- {- 0x16, 0xF7, 0x12, 0xEA, 0xA1, 0xB7, 0xC6, 0x35,- 0x47, 0x19, 0xA8, 0xE7, 0xDB, 0xDF, 0xAF, 0x55,- 0xE4, 0x06, 0x3A, 0x4D, 0x27, 0x7D, 0x94, 0x75,- 0x50, 0x01, 0x9B, 0x38, 0xDF, 0xB5, 0x64, 0x83,- 0x09, 0x11, 0x05, 0x7D, 0x50, 0x50, 0x61, 0x36,- 0xE2, 0x39, 0x4C, 0x3B, 0x28, 0x94, 0x5C, 0xC9,- 0x64, 0x96, 0x7D, 0x54, 0xE3, 0x00, 0x0C, 0x21,- 0x81, 0x62, 0x6C, 0xFB, 0x9B, 0x73, 0xEF, 0xD2- },- {- 0xC3, 0x96, 0x39, 0xE7, 0xD5, 0xC7, 0xFB, 0x8C,- 0xDD, 0x0F, 0xD3, 0xE6, 0xA5, 0x20, 0x96, 0x03,- 0x94, 0x37, 0x12, 0x2F, 0x21, 0xC7, 0x8F, 0x16,- 0x79, 0xCE, 0xA9, 0xD7, 0x8A, 0x73, 0x4C, 0x56,- 0xEC, 0xBE, 0xB2, 0x86, 0x54, 0xB4, 0xF1, 0x8E,- 0x34, 0x2C, 0x33, 0x1F, 0x6F, 0x72, 0x29, 0xEC,- 0x4B, 0x4B, 0xC2, 0x81, 0xB2, 0xD8, 0x0A, 0x6E,- 0xB5, 0x00, 0x43, 0xF3, 0x17, 0x96, 0xC8, 0x8C- },- {- 0x72, 0xD0, 0x81, 0xAF, 0x99, 0xF8, 0xA1, 0x73,- 0xDC, 0xC9, 0xA0, 0xAC, 0x4E, 0xB3, 0x55, 0x74,- 0x05, 0x63, 0x9A, 0x29, 0x08, 0x4B, 0x54, 0xA4,- 0x01, 0x72, 0x91, 0x2A, 0x2F, 0x8A, 0x39, 0x51,- 0x29, 0xD5, 0x53, 0x6F, 0x09, 0x18, 0xE9, 0x02,- 0xF9, 0xE8, 0xFA, 0x60, 0x00, 0x99, 0x5F, 0x41,- 0x68, 0xDD, 0xC5, 0xF8, 0x93, 0x01, 0x1B, 0xE6,- 0xA0, 0xDB, 0xC9, 0xB8, 0xA1, 0xA3, 0xF5, 0xBB- },- {- 0xC1, 0x1A, 0xA8, 0x1E, 0x5E, 0xFD, 0x24, 0xD5,- 0xFC, 0x27, 0xEE, 0x58, 0x6C, 0xFD, 0x88, 0x47,- 0xFB, 0xB0, 0xE2, 0x76, 0x01, 0xCC, 0xEC, 0xE5,- 0xEC, 0xCA, 0x01, 0x98, 0xE3, 0xC7, 0x76, 0x53,- 0x93, 0xBB, 0x74, 0x45, 0x7C, 0x7E, 0x7A, 0x27,- 0xEB, 0x91, 0x70, 0x35, 0x0E, 0x1F, 0xB5, 0x38,- 0x57, 0x17, 0x75, 0x06, 0xBE, 0x3E, 0x76, 0x2C,- 0xC0, 0xF1, 0x4D, 0x8C, 0x3A, 0xFE, 0x90, 0x77- },- {- 0xC2, 0x8F, 0x21, 0x50, 0xB4, 0x52, 0xE6, 0xC0,- 0xC4, 0x24, 0xBC, 0xDE, 0x6F, 0x8D, 0x72, 0x00,- 0x7F, 0x93, 0x10, 0xFE, 0xD7, 0xF2, 0xF8, 0x7D,- 0xE0, 0xDB, 0xB6, 0x4F, 0x44, 0x79, 0xD6, 0xC1,- 0x44, 0x1B, 0xA6, 0x6F, 0x44, 0xB2, 0xAC, 0xCE,- 0xE6, 0x16, 0x09, 0x17, 0x7E, 0xD3, 0x40, 0x12,- 0x8B, 0x40, 0x7E, 0xCE, 0xC7, 0xC6, 0x4B, 0xBE,- 0x50, 0xD6, 0x3D, 0x22, 0xD8, 0x62, 0x77, 0x27- },- {- 0xF6, 0x3D, 0x88, 0x12, 0x28, 0x77, 0xEC, 0x30,- 0xB8, 0xC8, 0xB0, 0x0D, 0x22, 0xE8, 0x90, 0x00,- 0xA9, 0x66, 0x42, 0x61, 0x12, 0xBD, 0x44, 0x16,- 0x6E, 0x2F, 0x52, 0x5B, 0x76, 0x9C, 0xCB, 0xE9,- 0xB2, 0x86, 0xD4, 0x37, 0xA0, 0x12, 0x91, 0x30,- 0xDD, 0xE1, 0xA8, 0x6C, 0x43, 0xE0, 0x4B, 0xED,- 0xB5, 0x94, 0xE6, 0x71, 0xD9, 0x82, 0x83, 0xAF,- 0xE6, 0x4C, 0xE3, 0x31, 0xDE, 0x98, 0x28, 0xFD- },- {- 0x34, 0x8B, 0x05, 0x32, 0x88, 0x0B, 0x88, 0xA6,- 0x61, 0x4A, 0x8D, 0x74, 0x08, 0xC3, 0xF9, 0x13,- 0x35, 0x7F, 0xBB, 0x60, 0xE9, 0x95, 0xC6, 0x02,- 0x05, 0xBE, 0x91, 0x39, 0xE7, 0x49, 0x98, 0xAE,- 0xDE, 0x7F, 0x45, 0x81, 0xE4, 0x2F, 0x6B, 0x52,- 0x69, 0x8F, 0x7F, 0xA1, 0x21, 0x97, 0x08, 0xC1,- 0x44, 0x98, 0x06, 0x7F, 0xD1, 0xE0, 0x95, 0x02,- 0xDE, 0x83, 0xA7, 0x7D, 0xD2, 0x81, 0x15, 0x0C- },- {- 0x51, 0x33, 0xDC, 0x8B, 0xEF, 0x72, 0x53, 0x59,- 0xDF, 0xF5, 0x97, 0x92, 0xD8, 0x5E, 0xAF, 0x75,- 0xB7, 0xE1, 0xDC, 0xD1, 0x97, 0x8B, 0x01, 0xC3,- 0x5B, 0x1B, 0x85, 0xFC, 0xEB, 0xC6, 0x33, 0x88,- 0xAD, 0x99, 0xA1, 0x7B, 0x63, 0x46, 0xA2, 0x17,- 0xDC, 0x1A, 0x96, 0x22, 0xEB, 0xD1, 0x22, 0xEC,- 0xF6, 0x91, 0x3C, 0x4D, 0x31, 0xA6, 0xB5, 0x2A,- 0x69, 0x5B, 0x86, 0xAF, 0x00, 0xD7, 0x41, 0xA0- },- {- 0x27, 0x53, 0xC4, 0xC0, 0xE9, 0x8E, 0xCA, 0xD8,- 0x06, 0xE8, 0x87, 0x80, 0xEC, 0x27, 0xFC, 0xCD,- 0x0F, 0x5C, 0x1A, 0xB5, 0x47, 0xF9, 0xE4, 0xBF,- 0x16, 0x59, 0xD1, 0x92, 0xC2, 0x3A, 0xA2, 0xCC,- 0x97, 0x1B, 0x58, 0xB6, 0x80, 0x25, 0x80, 0xBA,- 0xEF, 0x8A, 0xDC, 0x3B, 0x77, 0x6E, 0xF7, 0x08,- 0x6B, 0x25, 0x45, 0xC2, 0x98, 0x7F, 0x34, 0x8E,- 0xE3, 0x71, 0x9C, 0xDE, 0xF2, 0x58, 0xC4, 0x03- },- {- 0xB1, 0x66, 0x35, 0x73, 0xCE, 0x4B, 0x9D, 0x8C,- 0xAE, 0xFC, 0x86, 0x50, 0x12, 0xF3, 0xE3, 0x97,- 0x14, 0xB9, 0x89, 0x8A, 0x5D, 0xA6, 0xCE, 0x17,- 0xC2, 0x5A, 0x6A, 0x47, 0x93, 0x1A, 0x9D, 0xDB,- 0x9B, 0xBE, 0x98, 0xAD, 0xAA, 0x55, 0x3B, 0xEE,- 0xD4, 0x36, 0xE8, 0x95, 0x78, 0x45, 0x54, 0x16,- 0xC2, 0xA5, 0x2A, 0x52, 0x5C, 0xF2, 0x86, 0x2B,- 0x8D, 0x1D, 0x49, 0xA2, 0x53, 0x1B, 0x73, 0x91- },- {- 0x64, 0xF5, 0x8B, 0xD6, 0xBF, 0xC8, 0x56, 0xF5,- 0xE8, 0x73, 0xB2, 0xA2, 0x95, 0x6E, 0xA0, 0xED,- 0xA0, 0xD6, 0xDB, 0x0D, 0xA3, 0x9C, 0x8C, 0x7F,- 0xC6, 0x7C, 0x9F, 0x9F, 0xEE, 0xFC, 0xFF, 0x30,- 0x72, 0xCD, 0xF9, 0xE6, 0xEA, 0x37, 0xF6, 0x9A,- 0x44, 0xF0, 0xC6, 0x1A, 0xA0, 0xDA, 0x36, 0x93,- 0xC2, 0xDB, 0x5B, 0x54, 0x96, 0x0C, 0x02, 0x81,- 0xA0, 0x88, 0x15, 0x1D, 0xB4, 0x2B, 0x11, 0xE8- },- {- 0x07, 0x64, 0xC7, 0xBE, 0x28, 0x12, 0x5D, 0x90,- 0x65, 0xC4, 0xB9, 0x8A, 0x69, 0xD6, 0x0A, 0xED,- 0xE7, 0x03, 0x54, 0x7C, 0x66, 0xA1, 0x2E, 0x17,- 0xE1, 0xC6, 0x18, 0x99, 0x41, 0x32, 0xF5, 0xEF,- 0x82, 0x48, 0x2C, 0x1E, 0x3F, 0xE3, 0x14, 0x6C,- 0xC6, 0x53, 0x76, 0xCC, 0x10, 0x9F, 0x01, 0x38,- 0xED, 0x9A, 0x80, 0xE4, 0x9F, 0x1F, 0x3C, 0x7D,- 0x61, 0x0D, 0x2F, 0x24, 0x32, 0xF2, 0x06, 0x05- },- {- 0xF7, 0x48, 0x78, 0x43, 0x98, 0xA2, 0xFF, 0x03,- 0xEB, 0xEB, 0x07, 0xE1, 0x55, 0xE6, 0x61, 0x16,- 0xA8, 0x39, 0x74, 0x1A, 0x33, 0x6E, 0x32, 0xDA,- 0x71, 0xEC, 0x69, 0x60, 0x01, 0xF0, 0xAD, 0x1B,- 0x25, 0xCD, 0x48, 0xC6, 0x9C, 0xFC, 0xA7, 0x26,- 0x5E, 0xCA, 0x1D, 0xD7, 0x19, 0x04, 0xA0, 0xCE,- 0x74, 0x8A, 0xC4, 0x12, 0x4F, 0x35, 0x71, 0x07,- 0x6D, 0xFA, 0x71, 0x16, 0xA9, 0xCF, 0x00, 0xE9- },- {- 0x3F, 0x0D, 0xBC, 0x01, 0x86, 0xBC, 0xEB, 0x6B,- 0x78, 0x5B, 0xA7, 0x8D, 0x2A, 0x2A, 0x01, 0x3C,- 0x91, 0x0B, 0xE1, 0x57, 0xBD, 0xAF, 0xFA, 0xE8,- 0x1B, 0xB6, 0x66, 0x3B, 0x1A, 0x73, 0x72, 0x2F,- 0x7F, 0x12, 0x28, 0x79, 0x5F, 0x3E, 0xCA, 0xDA,- 0x87, 0xCF, 0x6E, 0xF0, 0x07, 0x84, 0x74, 0xAF,- 0x73, 0xF3, 0x1E, 0xCA, 0x0C, 0xC2, 0x00, 0xED,- 0x97, 0x5B, 0x68, 0x93, 0xF7, 0x61, 0xCB, 0x6D- },- {- 0xD4, 0x76, 0x2C, 0xD4, 0x59, 0x98, 0x76, 0xCA,- 0x75, 0xB2, 0xB8, 0xFE, 0x24, 0x99, 0x44, 0xDB,- 0xD2, 0x7A, 0xCE, 0x74, 0x1F, 0xDA, 0xB9, 0x36,- 0x16, 0xCB, 0xC6, 0xE4, 0x25, 0x46, 0x0F, 0xEB,- 0x51, 0xD4, 0xE7, 0xAD, 0xCC, 0x38, 0x18, 0x0E,- 0x7F, 0xC4, 0x7C, 0x89, 0x02, 0x4A, 0x7F, 0x56,- 0x19, 0x1A, 0xDB, 0x87, 0x8D, 0xFD, 0xE4, 0xEA,- 0xD6, 0x22, 0x23, 0xF5, 0xA2, 0x61, 0x0E, 0xFE- },- {- 0xCD, 0x36, 0xB3, 0xD5, 0xB4, 0xC9, 0x1B, 0x90,- 0xFC, 0xBB, 0xA7, 0x95, 0x13, 0xCF, 0xEE, 0x19,- 0x07, 0xD8, 0x64, 0x5A, 0x16, 0x2A, 0xFD, 0x0C,- 0xD4, 0xCF, 0x41, 0x92, 0xD4, 0xA5, 0xF4, 0xC8,- 0x92, 0x18, 0x3A, 0x8E, 0xAC, 0xDB, 0x2B, 0x6B,- 0x6A, 0x9D, 0x9A, 0xA8, 0xC1, 0x1A, 0xC1, 0xB2,- 0x61, 0xB3, 0x80, 0xDB, 0xEE, 0x24, 0xCA, 0x46,- 0x8F, 0x1B, 0xFD, 0x04, 0x3C, 0x58, 0xEE, 0xFE- },- {- 0x98, 0x59, 0x34, 0x52, 0x28, 0x16, 0x61, 0xA5,- 0x3C, 0x48, 0xA9, 0xD8, 0xCD, 0x79, 0x08, 0x26,- 0xC1, 0xA1, 0xCE, 0x56, 0x77, 0x38, 0x05, 0x3D,- 0x0B, 0xEE, 0x4A, 0x91, 0xA3, 0xD5, 0xBD, 0x92,- 0xEE, 0xFD, 0xBA, 0xBE, 0xBE, 0x32, 0x04, 0xF2,- 0x03, 0x1C, 0xA5, 0xF7, 0x81, 0xBD, 0xA9, 0x9E,- 0xF5, 0xD8, 0xAE, 0x56, 0xE5, 0xB0, 0x4A, 0x9E,- 0x1E, 0xCD, 0x21, 0xB0, 0xEB, 0x05, 0xD3, 0xE1- },- {- 0x77, 0x1F, 0x57, 0xDD, 0x27, 0x75, 0xCC, 0xDA,- 0xB5, 0x59, 0x21, 0xD3, 0xE8, 0xE3, 0x0C, 0xCF,- 0x48, 0x4D, 0x61, 0xFE, 0x1C, 0x1B, 0x9C, 0x2A,- 0xE8, 0x19, 0xD0, 0xFB, 0x2A, 0x12, 0xFA, 0xB9,- 0xBE, 0x70, 0xC4, 0xA7, 0xA1, 0x38, 0xDA, 0x84,- 0xE8, 0x28, 0x04, 0x35, 0xDA, 0xAD, 0xE5, 0xBB,- 0xE6, 0x6A, 0xF0, 0x83, 0x6A, 0x15, 0x4F, 0x81,- 0x7F, 0xB1, 0x7F, 0x33, 0x97, 0xE7, 0x25, 0xA3- },- {- 0xC6, 0x08, 0x97, 0xC6, 0xF8, 0x28, 0xE2, 0x1F,- 0x16, 0xFB, 0xB5, 0xF1, 0x5B, 0x32, 0x3F, 0x87,- 0xB6, 0xC8, 0x95, 0x5E, 0xAB, 0xF1, 0xD3, 0x80,- 0x61, 0xF7, 0x07, 0xF6, 0x08, 0xAB, 0xDD, 0x99,- 0x3F, 0xAC, 0x30, 0x70, 0x63, 0x3E, 0x28, 0x6C,- 0xF8, 0x33, 0x9C, 0xE2, 0x95, 0xDD, 0x35, 0x2D,- 0xF4, 0xB4, 0xB4, 0x0B, 0x2F, 0x29, 0xDA, 0x1D,- 0xD5, 0x0B, 0x3A, 0x05, 0xD0, 0x79, 0xE6, 0xBB- },- {- 0x82, 0x10, 0xCD, 0x2C, 0x2D, 0x3B, 0x13, 0x5C,- 0x2C, 0xF0, 0x7F, 0xA0, 0xD1, 0x43, 0x3C, 0xD7,- 0x71, 0xF3, 0x25, 0xD0, 0x75, 0xC6, 0x46, 0x9D,- 0x9C, 0x7F, 0x1B, 0xA0, 0x94, 0x3C, 0xD4, 0xAB,- 0x09, 0x80, 0x8C, 0xAB, 0xF4, 0xAC, 0xB9, 0xCE,- 0x5B, 0xB8, 0x8B, 0x49, 0x89, 0x29, 0xB4, 0xB8,- 0x47, 0xF6, 0x81, 0xAD, 0x2C, 0x49, 0x0D, 0x04,- 0x2D, 0xB2, 0xAE, 0xC9, 0x42, 0x14, 0xB0, 0x6B- },- {- 0x1D, 0x4E, 0xDF, 0xFF, 0xD8, 0xFD, 0x80, 0xF7,- 0xE4, 0x10, 0x78, 0x40, 0xFA, 0x3A, 0xA3, 0x1E,- 0x32, 0x59, 0x84, 0x91, 0xE4, 0xAF, 0x70, 0x13,- 0xC1, 0x97, 0xA6, 0x5B, 0x7F, 0x36, 0xDD, 0x3A,- 0xC4, 0xB4, 0x78, 0x45, 0x61, 0x11, 0xCD, 0x43,- 0x09, 0xD9, 0x24, 0x35, 0x10, 0x78, 0x2F, 0xA3,- 0x1B, 0x7C, 0x4C, 0x95, 0xFA, 0x95, 0x15, 0x20,- 0xD0, 0x20, 0xEB, 0x7E, 0x5C, 0x36, 0xE4, 0xEF- },- {- 0xAF, 0x8E, 0x6E, 0x91, 0xFA, 0xB4, 0x6C, 0xE4,- 0x87, 0x3E, 0x1A, 0x50, 0xA8, 0xEF, 0x44, 0x8C,- 0xC2, 0x91, 0x21, 0xF7, 0xF7, 0x4D, 0xEE, 0xF3,- 0x4A, 0x71, 0xEF, 0x89, 0xCC, 0x00, 0xD9, 0x27,- 0x4B, 0xC6, 0xC2, 0x45, 0x4B, 0xBB, 0x32, 0x30,- 0xD8, 0xB2, 0xEC, 0x94, 0xC6, 0x2B, 0x1D, 0xEC,- 0x85, 0xF3, 0x59, 0x3B, 0xFA, 0x30, 0xEA, 0x6F,- 0x7A, 0x44, 0xD7, 0xC0, 0x94, 0x65, 0xA2, 0x53- },- {- 0x29, 0xFD, 0x38, 0x4E, 0xD4, 0x90, 0x6F, 0x2D,- 0x13, 0xAA, 0x9F, 0xE7, 0xAF, 0x90, 0x59, 0x90,- 0x93, 0x8B, 0xED, 0x80, 0x7F, 0x18, 0x32, 0x45,- 0x4A, 0x37, 0x2A, 0xB4, 0x12, 0xEE, 0xA1, 0xF5,- 0x62, 0x5A, 0x1F, 0xCC, 0x9A, 0xC8, 0x34, 0x3B,- 0x7C, 0x67, 0xC5, 0xAB, 0xA6, 0xE0, 0xB1, 0xCC,- 0x46, 0x44, 0x65, 0x49, 0x13, 0x69, 0x2C, 0x6B,- 0x39, 0xEB, 0x91, 0x87, 0xCE, 0xAC, 0xD3, 0xEC- },- {- 0xA2, 0x68, 0xC7, 0x88, 0x5D, 0x98, 0x74, 0xA5,- 0x1C, 0x44, 0xDF, 0xFE, 0xD8, 0xEA, 0x53, 0xE9,- 0x4F, 0x78, 0x45, 0x6E, 0x0B, 0x2E, 0xD9, 0x9F,- 0xF5, 0xA3, 0x92, 0x47, 0x60, 0x81, 0x38, 0x26,- 0xD9, 0x60, 0xA1, 0x5E, 0xDB, 0xED, 0xBB, 0x5D,- 0xE5, 0x22, 0x6B, 0xA4, 0xB0, 0x74, 0xE7, 0x1B,- 0x05, 0xC5, 0x5B, 0x97, 0x56, 0xBB, 0x79, 0xE5,- 0x5C, 0x02, 0x75, 0x4C, 0x2C, 0x7B, 0x6C, 0x8A- },- {- 0x0C, 0xF8, 0x54, 0x54, 0x88, 0xD5, 0x6A, 0x86,- 0x81, 0x7C, 0xD7, 0xEC, 0xB1, 0x0F, 0x71, 0x16,- 0xB7, 0xEA, 0x53, 0x0A, 0x45, 0xB6, 0xEA, 0x49,- 0x7B, 0x6C, 0x72, 0xC9, 0x97, 0xE0, 0x9E, 0x3D,- 0x0D, 0xA8, 0x69, 0x8F, 0x46, 0xBB, 0x00, 0x6F,- 0xC9, 0x77, 0xC2, 0xCD, 0x3D, 0x11, 0x77, 0x46,- 0x3A, 0xC9, 0x05, 0x7F, 0xDD, 0x16, 0x62, 0xC8,- 0x5D, 0x0C, 0x12, 0x64, 0x43, 0xC1, 0x04, 0x73- },- {- 0xB3, 0x96, 0x14, 0x26, 0x8F, 0xDD, 0x87, 0x81,- 0x51, 0x5E, 0x2C, 0xFE, 0xBF, 0x89, 0xB4, 0xD5,- 0x40, 0x2B, 0xAB, 0x10, 0xC2, 0x26, 0xE6, 0x34,- 0x4E, 0x6B, 0x9A, 0xE0, 0x00, 0xFB, 0x0D, 0x6C,- 0x79, 0xCB, 0x2F, 0x3E, 0xC8, 0x0E, 0x80, 0xEA,- 0xEB, 0x19, 0x80, 0xD2, 0xF8, 0x69, 0x89, 0x16,- 0xBD, 0x2E, 0x9F, 0x74, 0x72, 0x36, 0x65, 0x51,- 0x16, 0x64, 0x9C, 0xD3, 0xCA, 0x23, 0xA8, 0x37- },- {- 0x74, 0xBE, 0xF0, 0x92, 0xFC, 0x6F, 0x1E, 0x5D,- 0xBA, 0x36, 0x63, 0xA3, 0xFB, 0x00, 0x3B, 0x2A,- 0x5B, 0xA2, 0x57, 0x49, 0x65, 0x36, 0xD9, 0x9F,- 0x62, 0xB9, 0xD7, 0x3F, 0x8F, 0x9E, 0xB3, 0xCE,- 0x9F, 0xF3, 0xEE, 0xC7, 0x09, 0xEB, 0x88, 0x36,- 0x55, 0xEC, 0x9E, 0xB8, 0x96, 0xB9, 0x12, 0x8F,- 0x2A, 0xFC, 0x89, 0xCF, 0x7D, 0x1A, 0xB5, 0x8A,- 0x72, 0xF4, 0xA3, 0xBF, 0x03, 0x4D, 0x2B, 0x4A- },- {- 0x3A, 0x98, 0x8D, 0x38, 0xD7, 0x56, 0x11, 0xF3,- 0xEF, 0x38, 0xB8, 0x77, 0x49, 0x80, 0xB3, 0x3E,- 0x57, 0x3B, 0x6C, 0x57, 0xBE, 0xE0, 0x46, 0x9B,- 0xA5, 0xEE, 0xD9, 0xB4, 0x4F, 0x29, 0x94, 0x5E,- 0x73, 0x47, 0x96, 0x7F, 0xBA, 0x2C, 0x16, 0x2E,- 0x1C, 0x3B, 0xE7, 0xF3, 0x10, 0xF2, 0xF7, 0x5E,- 0xE2, 0x38, 0x1E, 0x7B, 0xFD, 0x6B, 0x3F, 0x0B,- 0xAE, 0xA8, 0xD9, 0x5D, 0xFB, 0x1D, 0xAF, 0xB1- },- {- 0x58, 0xAE, 0xDF, 0xCE, 0x6F, 0x67, 0xDD, 0xC8,- 0x5A, 0x28, 0xC9, 0x92, 0xF1, 0xC0, 0xBD, 0x09,- 0x69, 0xF0, 0x41, 0xE6, 0x6F, 0x1E, 0xE8, 0x80,- 0x20, 0xA1, 0x25, 0xCB, 0xFC, 0xFE, 0xBC, 0xD6,- 0x17, 0x09, 0xC9, 0xC4, 0xEB, 0xA1, 0x92, 0xC1,- 0x5E, 0x69, 0xF0, 0x20, 0xD4, 0x62, 0x48, 0x60,- 0x19, 0xFA, 0x8D, 0xEA, 0x0C, 0xD7, 0xA4, 0x29,- 0x21, 0xA1, 0x9D, 0x2F, 0xE5, 0x46, 0xD4, 0x3D- },- {- 0x93, 0x47, 0xBD, 0x29, 0x14, 0x73, 0xE6, 0xB4,- 0xE3, 0x68, 0x43, 0x7B, 0x8E, 0x56, 0x1E, 0x06,- 0x5F, 0x64, 0x9A, 0x6D, 0x8A, 0xDA, 0x47, 0x9A,- 0xD0, 0x9B, 0x19, 0x99, 0xA8, 0xF2, 0x6B, 0x91,- 0xCF, 0x61, 0x20, 0xFD, 0x3B, 0xFE, 0x01, 0x4E,- 0x83, 0xF2, 0x3A, 0xCF, 0xA4, 0xC0, 0xAD, 0x7B,- 0x37, 0x12, 0xB2, 0xC3, 0xC0, 0x73, 0x32, 0x70,- 0x66, 0x31, 0x12, 0xCC, 0xD9, 0x28, 0x5C, 0xD9- },- {- 0xB3, 0x21, 0x63, 0xE7, 0xC5, 0xDB, 0xB5, 0xF5,- 0x1F, 0xDC, 0x11, 0xD2, 0xEA, 0xC8, 0x75, 0xEF,- 0xBB, 0xCB, 0x7E, 0x76, 0x99, 0x09, 0x0A, 0x7E,- 0x7F, 0xF8, 0xA8, 0xD5, 0x07, 0x95, 0xAF, 0x5D,- 0x74, 0xD9, 0xFF, 0x98, 0x54, 0x3E, 0xF8, 0xCD,- 0xF8, 0x9A, 0xC1, 0x3D, 0x04, 0x85, 0x27, 0x87,- 0x56, 0xE0, 0xEF, 0x00, 0xC8, 0x17, 0x74, 0x56,- 0x61, 0xE1, 0xD5, 0x9F, 0xE3, 0x8E, 0x75, 0x37- },- {- 0x10, 0x85, 0xD7, 0x83, 0x07, 0xB1, 0xC4, 0xB0,- 0x08, 0xC5, 0x7A, 0x2E, 0x7E, 0x5B, 0x23, 0x46,- 0x58, 0xA0, 0xA8, 0x2E, 0x4F, 0xF1, 0xE4, 0xAA,- 0xAC, 0x72, 0xB3, 0x12, 0xFD, 0xA0, 0xFE, 0x27,- 0xD2, 0x33, 0xBC, 0x5B, 0x10, 0xE9, 0xCC, 0x17,- 0xFD, 0xC7, 0x69, 0x7B, 0x54, 0x0C, 0x7D, 0x95,- 0xEB, 0x21, 0x5A, 0x19, 0xA1, 0xA0, 0xE2, 0x0E,- 0x1A, 0xBF, 0xA1, 0x26, 0xEF, 0xD5, 0x68, 0xC7- },- {- 0x4E, 0x5C, 0x73, 0x4C, 0x7D, 0xDE, 0x01, 0x1D,- 0x83, 0xEA, 0xC2, 0xB7, 0x34, 0x7B, 0x37, 0x35,- 0x94, 0xF9, 0x2D, 0x70, 0x91, 0xB9, 0xCA, 0x34,- 0xCB, 0x9C, 0x6F, 0x39, 0xBD, 0xF5, 0xA8, 0xD2,- 0xF1, 0x34, 0x37, 0x9E, 0x16, 0xD8, 0x22, 0xF6,- 0x52, 0x21, 0x70, 0xCC, 0xF2, 0xDD, 0xD5, 0x5C,- 0x84, 0xB9, 0xE6, 0xC6, 0x4F, 0xC9, 0x27, 0xAC,- 0x4C, 0xF8, 0xDF, 0xB2, 0xA1, 0x77, 0x01, 0xF2- },- {- 0x69, 0x5D, 0x83, 0xBD, 0x99, 0x0A, 0x11, 0x17,- 0xB3, 0xD0, 0xCE, 0x06, 0xCC, 0x88, 0x80, 0x27,- 0xD1, 0x2A, 0x05, 0x4C, 0x26, 0x77, 0xFD, 0x82,- 0xF0, 0xD4, 0xFB, 0xFC, 0x93, 0x57, 0x55, 0x23,- 0xE7, 0x99, 0x1A, 0x5E, 0x35, 0xA3, 0x75, 0x2E,- 0x9B, 0x70, 0xCE, 0x62, 0x99, 0x2E, 0x26, 0x8A,- 0x87, 0x77, 0x44, 0xCD, 0xD4, 0x35, 0xF5, 0xF1,- 0x30, 0x86, 0x9C, 0x9A, 0x20, 0x74, 0xB3, 0x38- },- {- 0xA6, 0x21, 0x37, 0x43, 0x56, 0x8E, 0x3B, 0x31,- 0x58, 0xB9, 0x18, 0x43, 0x01, 0xF3, 0x69, 0x08,- 0x47, 0x55, 0x4C, 0x68, 0x45, 0x7C, 0xB4, 0x0F,- 0xC9, 0xA4, 0xB8, 0xCF, 0xD8, 0xD4, 0xA1, 0x18,- 0xC3, 0x01, 0xA0, 0x77, 0x37, 0xAE, 0xDA, 0x0F,- 0x92, 0x9C, 0x68, 0x91, 0x3C, 0x5F, 0x51, 0xC8,- 0x03, 0x94, 0xF5, 0x3B, 0xFF, 0x1C, 0x3E, 0x83,- 0xB2, 0xE4, 0x0C, 0xA9, 0x7E, 0xBA, 0x9E, 0x15- },- {- 0xD4, 0x44, 0xBF, 0xA2, 0x36, 0x2A, 0x96, 0xDF,- 0x21, 0x3D, 0x07, 0x0E, 0x33, 0xFA, 0x84, 0x1F,- 0x51, 0x33, 0x4E, 0x4E, 0x76, 0x86, 0x6B, 0x81,- 0x39, 0xE8, 0xAF, 0x3B, 0xB3, 0x39, 0x8B, 0xE2,- 0xDF, 0xAD, 0xDC, 0xBC, 0x56, 0xB9, 0x14, 0x6D,- 0xE9, 0xF6, 0x81, 0x18, 0xDC, 0x58, 0x29, 0xE7,- 0x4B, 0x0C, 0x28, 0xD7, 0x71, 0x19, 0x07, 0xB1,- 0x21, 0xF9, 0x16, 0x1C, 0xB9, 0x2B, 0x69, 0xA9- },- {- 0x14, 0x27, 0x09, 0xD6, 0x2E, 0x28, 0xFC, 0xCC,- 0xD0, 0xAF, 0x97, 0xFA, 0xD0, 0xF8, 0x46, 0x5B,- 0x97, 0x1E, 0x82, 0x20, 0x1D, 0xC5, 0x10, 0x70,- 0xFA, 0xA0, 0x37, 0x2A, 0xA4, 0x3E, 0x92, 0x48,- 0x4B, 0xE1, 0xC1, 0xE7, 0x3B, 0xA1, 0x09, 0x06,- 0xD5, 0xD1, 0x85, 0x3D, 0xB6, 0xA4, 0x10, 0x6E,- 0x0A, 0x7B, 0xF9, 0x80, 0x0D, 0x37, 0x3D, 0x6D,- 0xEE, 0x2D, 0x46, 0xD6, 0x2E, 0xF2, 0xA4, 0x61- },-};-----static const uint8_t blake2sp_kat[KAT_LENGTH][BLAKE2S_OUTBYTES] =-{- {- 0xDD, 0x0E, 0x89, 0x17, 0x76, 0x93, 0x3F, 0x43,- 0xC7, 0xD0, 0x32, 0xB0, 0x8A, 0x91, 0x7E, 0x25,- 0x74, 0x1F, 0x8A, 0xA9, 0xA1, 0x2C, 0x12, 0xE1,- 0xCA, 0xC8, 0x80, 0x15, 0x00, 0xF2, 0xCA, 0x4F- },- {- 0xA6, 0xB9, 0xEE, 0xCC, 0x25, 0x22, 0x7A, 0xD7,- 0x88, 0xC9, 0x9D, 0x3F, 0x23, 0x6D, 0xEB, 0xC8,- 0xDA, 0x40, 0x88, 0x49, 0xE9, 0xA5, 0x17, 0x89,- 0x78, 0x72, 0x7A, 0x81, 0x45, 0x7F, 0x72, 0x39- },- {- 0xDA, 0xCA, 0xDE, 0xCE, 0x7A, 0x8E, 0x6B, 0xF3,- 0xAB, 0xFE, 0x32, 0x4C, 0xA6, 0x95, 0x43, 0x69,- 0x84, 0xB8, 0x19, 0x5D, 0x29, 0xF6, 0xBB, 0xD8,- 0x96, 0xE4, 0x1E, 0x18, 0xE2, 0x1C, 0x91, 0x45- },- {- 0xED, 0x14, 0x41, 0x3B, 0x40, 0xDA, 0x68, 0x9F,- 0x1F, 0x7F, 0xED, 0x2B, 0x08, 0xDF, 0xF4, 0x5B,- 0x80, 0x92, 0xDB, 0x5E, 0xC2, 0xC3, 0x61, 0x0E,- 0x02, 0x72, 0x4D, 0x20, 0x2F, 0x42, 0x3C, 0x46- },- {- 0x9B, 0x8A, 0x52, 0x7B, 0x52, 0x72, 0x25, 0x0A,- 0x1E, 0xC3, 0x97, 0x38, 0x8F, 0x04, 0x09, 0x14,- 0x95, 0x48, 0x06, 0xE7, 0x94, 0xDB, 0x04, 0xB7,- 0x0A, 0x46, 0x11, 0xBC, 0x59, 0x58, 0x6A, 0x83- },- {- 0x2B, 0xB6, 0x33, 0x37, 0x29, 0x00, 0x0B, 0xE3,- 0xD5, 0xA2, 0x1B, 0x98, 0xF8, 0xE7, 0xEA, 0xD0,- 0x77, 0xF1, 0x51, 0xA5, 0x39, 0x39, 0x19, 0xEB,- 0x67, 0xC8, 0x76, 0xEE, 0x00, 0xBB, 0xBB, 0x04- },- {- 0x63, 0xC0, 0x14, 0x08, 0x15, 0x4A, 0xD1, 0x9D,- 0x7F, 0xB7, 0x39, 0xF3, 0x11, 0x78, 0x17, 0x80,- 0x46, 0x2C, 0xF2, 0xEE, 0xCC, 0xE6, 0x0F, 0x06,- 0x4E, 0x85, 0x34, 0x87, 0xC2, 0x72, 0xE3, 0xEB- },- {- 0x3D, 0x05, 0x1A, 0x11, 0x76, 0x01, 0x9C, 0xA3,- 0x7B, 0xF3, 0x3D, 0x60, 0x42, 0x7F, 0x8D, 0x9D,- 0x1C, 0x3A, 0xBD, 0x59, 0x82, 0x97, 0xCF, 0xB4,- 0x23, 0x5F, 0x74, 0x7D, 0x7C, 0x7C, 0x7F, 0xEC- },- {- 0x39, 0x1E, 0xA9, 0x12, 0xDF, 0x4D, 0x4D, 0x79,- 0xA4, 0x64, 0x6D, 0x9D, 0xA2, 0x54, 0x9A, 0x44,- 0x6D, 0x22, 0x40, 0xF6, 0x24, 0x15, 0xD0, 0x70,- 0xA2, 0xE0, 0x93, 0x99, 0x2B, 0x47, 0x1F, 0xBA- },- {- 0x32, 0x46, 0x40, 0x44, 0x0E, 0xA5, 0xC3, 0x08,- 0x2D, 0xDC, 0x30, 0x9E, 0x78, 0x09, 0xD7, 0x41,- 0xD6, 0xCC, 0x1B, 0x2D, 0x49, 0x0F, 0xF8, 0xC0,- 0x52, 0x12, 0x8A, 0x6E, 0xEB, 0x40, 0x9D, 0x62- },- {- 0xAB, 0x85, 0x5E, 0x6F, 0xA3, 0x9A, 0x5E, 0x8F,- 0xC9, 0x0E, 0xAC, 0xB9, 0x99, 0xC7, 0xF7, 0x8A,- 0xE7, 0x1E, 0x59, 0xC3, 0xD9, 0x7D, 0x60, 0xAF,- 0xE5, 0x17, 0xD5, 0x87, 0x92, 0x3B, 0x77, 0x11- },- {- 0x2A, 0x39, 0xDA, 0x45, 0x86, 0xEF, 0xC4, 0x77,- 0x85, 0xA7, 0xA8, 0xDA, 0x85, 0x68, 0x3A, 0x51,- 0x72, 0x4C, 0xDE, 0xF5, 0x41, 0x3B, 0x35, 0x6D,- 0xC4, 0xFB, 0x50, 0x05, 0x13, 0xF8, 0xFA, 0x2E- },- {- 0x8A, 0x00, 0x57, 0xC1, 0xF7, 0x8A, 0xD6, 0x21,- 0x45, 0x55, 0xC0, 0x67, 0x07, 0x33, 0xE2, 0x9A,- 0x4C, 0x7E, 0x95, 0x62, 0x27, 0x66, 0x0E, 0xFE,- 0xB1, 0xD7, 0xFC, 0x79, 0xF5, 0x8E, 0xC6, 0xF2- },- {- 0x07, 0x64, 0xB0, 0x01, 0x7F, 0x5B, 0xD9, 0x51,- 0xF0, 0x1D, 0x9F, 0xDF, 0x95, 0xC0, 0xCB, 0x41,- 0x38, 0x98, 0x5D, 0x84, 0x79, 0x9C, 0xD4, 0x29,- 0x84, 0xE2, 0x5B, 0x51, 0x28, 0x00, 0xE7, 0x3C- },- {- 0xCC, 0x02, 0x49, 0x56, 0x93, 0xC8, 0xE1, 0x84,- 0xAD, 0x2E, 0xD0, 0x9D, 0x53, 0x3D, 0xC3, 0x3B,- 0x76, 0xA7, 0x78, 0x3D, 0x62, 0x07, 0xFC, 0xAC,- 0xCB, 0x64, 0xF3, 0xED, 0x2C, 0x6D, 0x66, 0xE0- },- {- 0xC0, 0xDF, 0x49, 0xC2, 0x06, 0xA3, 0x42, 0x88,- 0x14, 0x32, 0x16, 0x84, 0x7D, 0xF3, 0x34, 0xD4,- 0x56, 0x9D, 0xAD, 0x73, 0xC2, 0xB1, 0xFF, 0x62,- 0x84, 0x88, 0x4F, 0xD3, 0x89, 0x41, 0xFB, 0x95- },- {- 0xB9, 0x19, 0x45, 0x19, 0xE4, 0x97, 0x8A, 0x9D,- 0xC8, 0x93, 0xB2, 0x8B, 0xD8, 0x08, 0xCD, 0xFA,- 0xBB, 0x1B, 0xD5, 0x10, 0xD8, 0x62, 0xB3, 0x17,- 0x1F, 0xF6, 0xE0, 0x17, 0xA4, 0x1B, 0x80, 0x4C- },- {- 0xBB, 0xA9, 0x27, 0xAC, 0xF1, 0x1B, 0xEB, 0xD3,- 0x62, 0xA3, 0xA3, 0xEB, 0x78, 0xC4, 0xBB, 0x65,- 0xE6, 0x02, 0xA8, 0x70, 0x9F, 0xCE, 0xF3, 0x8D,- 0xC6, 0xC8, 0xB7, 0xBD, 0xA6, 0x64, 0xC3, 0x2C- },- {- 0xEC, 0xB4, 0x90, 0x0A, 0x63, 0x92, 0x4E, 0x72,- 0x0D, 0x40, 0xF2, 0xD2, 0xB1, 0x4D, 0x1B, 0xB3,- 0x9C, 0x37, 0x01, 0xAD, 0x73, 0x46, 0xBD, 0x0B,- 0x67, 0x23, 0x42, 0x70, 0xBF, 0xBE, 0x7E, 0x70- },- {- 0xF8, 0x31, 0x5A, 0x21, 0xB2, 0x5E, 0x6B, 0xA8,- 0xBF, 0x59, 0xB1, 0x7B, 0x05, 0x91, 0x3B, 0x8C,- 0xA4, 0x65, 0x9F, 0x1C, 0xD8, 0x38, 0xFC, 0xC7,- 0x73, 0xC9, 0xEB, 0x12, 0xE7, 0x00, 0x4E, 0x09- },- {- 0x4B, 0x77, 0xAF, 0x67, 0xA9, 0x23, 0x2B, 0xF1,- 0x18, 0x4E, 0x57, 0x81, 0x82, 0x94, 0x03, 0x1E,- 0x55, 0xF1, 0xF8, 0x53, 0xC9, 0x4D, 0xBA, 0xB5,- 0x57, 0x75, 0x47, 0x33, 0x0D, 0x65, 0xAA, 0x61- },- {- 0x76, 0x85, 0x68, 0x39, 0x0F, 0xD2, 0xB8, 0x70,- 0x94, 0x11, 0x4E, 0xD4, 0xCF, 0x72, 0x3E, 0xA3,- 0x20, 0xFE, 0x97, 0x7B, 0x53, 0x18, 0x03, 0x05,- 0xC3, 0x84, 0x33, 0x54, 0x79, 0xF0, 0xB5, 0x9B- },- {- 0xA4, 0x31, 0xCB, 0x27, 0x0F, 0x3E, 0x2C, 0x9B,- 0x7A, 0x95, 0x93, 0xB1, 0x55, 0xCC, 0xEC, 0xFF,- 0x5B, 0x5C, 0x4A, 0x2D, 0xCD, 0x5D, 0x6B, 0xB1,- 0xC4, 0x85, 0xAA, 0x28, 0x69, 0x97, 0xF9, 0x15- },- {- 0xD6, 0x91, 0xFA, 0x6A, 0x79, 0x0B, 0x1A, 0x51,- 0x79, 0x80, 0x08, 0x7F, 0x50, 0xB0, 0x3D, 0xED,- 0x8C, 0x6E, 0xD4, 0x86, 0xD0, 0x84, 0x22, 0x1C,- 0x82, 0x7D, 0x9B, 0xD9, 0x22, 0xBE, 0xB8, 0xC0- },- {- 0x8F, 0x97, 0x8A, 0x49, 0x32, 0xF4, 0x45, 0x98,- 0x13, 0xE8, 0xFE, 0x15, 0x68, 0x6E, 0x4E, 0xFA,- 0x25, 0xC2, 0xC5, 0xFF, 0x5A, 0x3A, 0x4F, 0x8C,- 0x9B, 0x14, 0x96, 0x5D, 0x2F, 0x0B, 0xE4, 0x61- },- {- 0x1E, 0xFB, 0xD0, 0xC1, 0x31, 0x44, 0x91, 0x42,- 0xF2, 0x29, 0x5F, 0x2D, 0x42, 0x41, 0x1D, 0xFE,- 0x0F, 0x48, 0xD4, 0xAC, 0xAE, 0x76, 0x2D, 0x8D,- 0xF6, 0x7A, 0x57, 0x0B, 0xF7, 0xB1, 0xDC, 0xD5- },- {- 0xD5, 0x3B, 0xA9, 0x33, 0x46, 0x14, 0x3A, 0xB8,- 0xE0, 0xD3, 0xD1, 0xBF, 0x27, 0x27, 0x06, 0xD1,- 0x69, 0xE6, 0x6C, 0x69, 0xC7, 0xB8, 0xF4, 0xA5,- 0xE8, 0x2F, 0xEF, 0x44, 0x07, 0x02, 0xBC, 0xF2- },- {- 0xF7, 0x1A, 0x3E, 0xC0, 0x1A, 0xA3, 0x82, 0xEA,- 0x76, 0x99, 0x2B, 0x43, 0x0A, 0x7F, 0x42, 0xC7,- 0xAD, 0x2A, 0x86, 0xAE, 0xA9, 0xC1, 0x9E, 0x76,- 0xCD, 0x17, 0x32, 0xEC, 0x68, 0x30, 0xDE, 0x6F- },- {- 0x80, 0xA6, 0xAB, 0x7B, 0x71, 0x04, 0x64, 0xF9,- 0x3E, 0x6C, 0xBA, 0x96, 0x86, 0x4A, 0xA6, 0x40,- 0x9B, 0xCA, 0xFC, 0x1B, 0xF4, 0xB3, 0x2A, 0x30,- 0x93, 0x72, 0xE8, 0x57, 0xE8, 0x04, 0x06, 0x8C- },- {- 0xDB, 0xDE, 0x81, 0xE5, 0x1A, 0x52, 0x17, 0x4B,- 0x10, 0x14, 0x90, 0x1B, 0x53, 0xBE, 0xF8, 0x8D,- 0xE9, 0x3B, 0x29, 0xE2, 0x74, 0x34, 0x7E, 0x8E,- 0x9A, 0x7B, 0x03, 0x74, 0x56, 0x62, 0x9F, 0x35- },- {- 0x75, 0xF2, 0x74, 0x46, 0x6B, 0x1A, 0x2D, 0x0F,- 0xD8, 0x45, 0xBB, 0xB5, 0x7C, 0x38, 0xC9, 0x89,- 0x51, 0x6E, 0x15, 0x68, 0x32, 0x0A, 0xB5, 0x17,- 0xB1, 0x63, 0xEA, 0xF7, 0x09, 0x23, 0x4C, 0xC7- },- {- 0xAF, 0xE1, 0xA0, 0x59, 0x1C, 0x49, 0x1D, 0x41,- 0x6E, 0xB6, 0x4F, 0x62, 0x86, 0xF3, 0xBA, 0x29,- 0xD4, 0xC9, 0x99, 0x82, 0x14, 0xA3, 0x83, 0x1C,- 0x39, 0x01, 0x4A, 0xC0, 0x30, 0x55, 0x79, 0x45- },- {- 0x67, 0xFF, 0x6A, 0xCD, 0xBE, 0x8A, 0x99, 0xA1,- 0x66, 0xA5, 0xD9, 0xCF, 0x32, 0x13, 0x65, 0x06,- 0xB5, 0x48, 0xD6, 0xC9, 0x47, 0xC2, 0x4C, 0x69,- 0x9C, 0xEA, 0x3A, 0xFD, 0x92, 0xAD, 0xFA, 0xCA- },- {- 0xBF, 0xB4, 0xD0, 0xC7, 0x11, 0x20, 0x75, 0x26,- 0x2C, 0x2D, 0xD2, 0x48, 0xF3, 0x34, 0xB2, 0xEF,- 0x15, 0x40, 0x08, 0x7E, 0xCC, 0x73, 0x82, 0xBC,- 0x2A, 0x27, 0x25, 0x75, 0xC5, 0x00, 0x9F, 0x70- },- {- 0x17, 0xC9, 0x4B, 0x9C, 0x53, 0x72, 0x43, 0xF2,- 0x33, 0x5B, 0x86, 0x39, 0x49, 0xB2, 0xB9, 0x1C,- 0x98, 0xA6, 0x95, 0x6D, 0x7C, 0x10, 0xAA, 0x98,- 0x99, 0x59, 0xA8, 0x0F, 0x91, 0x0C, 0x25, 0x22- },- {- 0xF6, 0x33, 0x8F, 0x43, 0x4D, 0x31, 0x94, 0x10,- 0x19, 0x6D, 0x95, 0x19, 0xAB, 0xCA, 0xEF, 0xF7,- 0xD5, 0x54, 0x39, 0xFD, 0x2A, 0xA5, 0xBA, 0xBF,- 0x7A, 0x7E, 0x79, 0x13, 0xB2, 0x94, 0xED, 0x4D- },- {- 0x08, 0xEF, 0x7D, 0x65, 0xF9, 0xBB, 0xF3, 0xDA,- 0x1F, 0x78, 0x84, 0xAE, 0x9B, 0x75, 0x90, 0x1F,- 0xD8, 0x52, 0x95, 0x66, 0x2A, 0x6E, 0xA7, 0x1D,- 0xE0, 0x8B, 0xEE, 0x38, 0x34, 0x57, 0x62, 0x78- },- {- 0x16, 0x47, 0xEC, 0xC2, 0xBA, 0x13, 0xF8, 0xB9,- 0x3B, 0x2F, 0xBC, 0xDC, 0x4E, 0x8F, 0x1D, 0xFA,- 0x47, 0xFE, 0x3B, 0xE1, 0x2A, 0xAA, 0x0E, 0x45,- 0x9B, 0x0E, 0x5A, 0x87, 0xF3, 0xA6, 0x9B, 0xB0- },- {- 0xFF, 0x92, 0x7A, 0x71, 0x78, 0x81, 0xF6, 0xFD,- 0x8E, 0xD8, 0xBF, 0x5D, 0x5E, 0x35, 0xBD, 0x80,- 0x16, 0x15, 0x73, 0xE5, 0x82, 0x94, 0x04, 0xC3,- 0x2D, 0x2A, 0x27, 0x6A, 0x01, 0xF4, 0xB9, 0x06- },- {- 0xC8, 0xCA, 0xF1, 0x36, 0xFF, 0x20, 0x9C, 0x82,- 0xE0, 0x24, 0x0C, 0x1E, 0x62, 0xA3, 0xBC, 0x7E,- 0x9C, 0xAC, 0x87, 0x3B, 0x01, 0x1C, 0xF7, 0xC5,- 0xE6, 0x7E, 0xC1, 0x87, 0xA5, 0xFB, 0xCD, 0x96- },- {- 0xD9, 0xAC, 0xC7, 0x3E, 0x3F, 0x42, 0x1E, 0x18,- 0x83, 0xB5, 0xED, 0x53, 0xD8, 0x2A, 0x9A, 0xEC,- 0x8F, 0x5D, 0xC9, 0x80, 0xC4, 0x2B, 0xCA, 0xEB,- 0x0E, 0x7D, 0x89, 0x76, 0xA3, 0x38, 0xEF, 0x51- },- {- 0x9F, 0x17, 0x3F, 0xCF, 0x08, 0xA5, 0x36, 0x21,- 0x93, 0xF3, 0x52, 0xC8, 0x25, 0x6A, 0xE5, 0x34,- 0xAE, 0x9C, 0xE7, 0xBF, 0xA4, 0xBC, 0x09, 0xFA,- 0xC9, 0x00, 0x98, 0xF9, 0x8A, 0x71, 0x62, 0x94- },- {- 0x0A, 0x72, 0x45, 0x79, 0xDC, 0x80, 0xBC, 0x0C,- 0x90, 0x04, 0xE5, 0x1B, 0xE7, 0xEF, 0xF3, 0xAF,- 0xA5, 0x30, 0x75, 0xAB, 0x4A, 0x32, 0x55, 0x77,- 0x33, 0x58, 0x6E, 0x82, 0x0F, 0xD3, 0x64, 0x23- },- {- 0x38, 0xF7, 0xC3, 0x40, 0xF4, 0xB1, 0x59, 0xB1,- 0xE5, 0x94, 0xF6, 0xEB, 0x83, 0x28, 0x49, 0x17,- 0xB7, 0xAA, 0x19, 0xC7, 0x4F, 0x57, 0x11, 0x7A,- 0x4E, 0x08, 0xCF, 0x7C, 0x4E, 0x32, 0xA2, 0x3C- },- {- 0x1C, 0x67, 0x4B, 0xE2, 0x57, 0xE9, 0xB3, 0x31,- 0x34, 0xD4, 0x16, 0x8F, 0x15, 0x2F, 0x8B, 0x63,- 0xDF, 0xD7, 0x80, 0xC9, 0x7D, 0xC4, 0xDC, 0x37,- 0xAC, 0x26, 0xCC, 0x0A, 0xEF, 0xB7, 0x9C, 0x1A- },- {- 0x2F, 0x0C, 0x59, 0x76, 0x16, 0xD5, 0x75, 0x17,- 0x14, 0xA5, 0xFB, 0x4E, 0xBF, 0x3C, 0x48, 0x1A,- 0x96, 0xC3, 0xAD, 0x14, 0x5E, 0xBD, 0xE0, 0x65,- 0x09, 0xF3, 0xA2, 0xE5, 0xF2, 0xC1, 0x3F, 0xC8- },- {- 0xFD, 0xDC, 0x69, 0xE0, 0xC9, 0x83, 0xCD, 0x82,- 0x83, 0xED, 0x81, 0x88, 0xBE, 0xC4, 0xE5, 0xF4,- 0x1D, 0xEA, 0x3D, 0x01, 0xB9, 0xE7, 0x4C, 0x4B,- 0xAF, 0x73, 0x41, 0xD8, 0xB4, 0xBF, 0x55, 0x3D- },- {- 0x24, 0xD0, 0x83, 0xCB, 0xA0, 0x38, 0xC8, 0x7E,- 0x9A, 0xCB, 0x86, 0x81, 0x82, 0x02, 0x08, 0xB7,- 0x5C, 0xB3, 0x29, 0x3A, 0x96, 0xC9, 0xEF, 0xA7,- 0x5D, 0x2C, 0x63, 0xF1, 0x6B, 0x85, 0xFE, 0x1E- },- {- 0x7F, 0x6A, 0x64, 0x9C, 0xCA, 0x89, 0xB2, 0x53,- 0xFF, 0xBD, 0x20, 0xC0, 0x16, 0x98, 0x01, 0x00,- 0xA8, 0x7C, 0x16, 0x81, 0x09, 0x62, 0x8F, 0xCC,- 0x66, 0x52, 0x5D, 0x8B, 0xAA, 0xFE, 0x50, 0x5F- },- {- 0x6D, 0xA3, 0x73, 0xB4, 0xC1, 0x87, 0x92, 0xB3,- 0x20, 0x9A, 0xDD, 0x15, 0xA5, 0x07, 0x4A, 0x1D,- 0x70, 0xC1, 0x0B, 0xB3, 0x94, 0x80, 0xCA, 0x3F,- 0xE5, 0xC4, 0x39, 0xD9, 0x5F, 0xC2, 0x86, 0xCA- },- {- 0x27, 0x0A, 0xFF, 0xA6, 0x42, 0x6F, 0x1A, 0x51,- 0x5C, 0x9B, 0x76, 0xDF, 0xC2, 0x7D, 0x18, 0x1F,- 0xC2, 0xFD, 0x57, 0xD0, 0x82, 0xA3, 0xBA, 0x2C,- 0x1E, 0xEF, 0x07, 0x15, 0x33, 0xA6, 0xDF, 0xB7- },- {- 0xC2, 0x2E, 0x15, 0xCF, 0xC5, 0xA3, 0xD1, 0x4B,- 0x64, 0xD1, 0x31, 0xF3, 0x5F, 0xB3, 0x5D, 0xD5,- 0xE6, 0xC5, 0x7D, 0xC4, 0xAF, 0xC5, 0x52, 0x27,- 0x75, 0x01, 0xEC, 0xA7, 0x64, 0xDA, 0x74, 0xBF- },- {- 0xAD, 0x68, 0x3E, 0x96, 0xB8, 0xAC, 0x65, 0x8C,- 0x4F, 0x3F, 0x10, 0xAD, 0x22, 0xD9, 0x9B, 0x07,- 0xCB, 0x5E, 0xF9, 0xE3, 0x1C, 0xBE, 0x11, 0xE7,- 0xF7, 0xDC, 0x29, 0xF2, 0xAE, 0xE5, 0x02, 0x4C- },- {- 0x78, 0xD3, 0xCE, 0xDA, 0x1C, 0xE0, 0x52, 0x93,- 0xF4, 0x30, 0xF6, 0x16, 0x7B, 0x33, 0xC9, 0x9F,- 0x0B, 0x1D, 0x6D, 0xAD, 0xE5, 0x21, 0x43, 0xC2,- 0x92, 0x55, 0x77, 0xC0, 0xBA, 0x82, 0x53, 0xEB- },- {- 0xE0, 0x06, 0x45, 0x63, 0x44, 0xF9, 0x0F, 0x50,- 0x1C, 0x25, 0x81, 0x3F, 0x9B, 0xE2, 0xA3, 0xF4,- 0x0B, 0x98, 0x74, 0xFA, 0x05, 0x63, 0x98, 0x1C,- 0xD4, 0x56, 0xEE, 0x8D, 0x44, 0x80, 0x7C, 0x93- },- {- 0x39, 0x08, 0xE8, 0xD5, 0x47, 0xC0, 0xAF, 0xB1,- 0x13, 0x49, 0x49, 0x46, 0x63, 0x04, 0xA1, 0x45,- 0x02, 0x7E, 0x6B, 0xB7, 0xA7, 0x4D, 0xD1, 0xC1,- 0x62, 0xCD, 0xF0, 0xBC, 0xF7, 0x72, 0x37, 0xE8- },- {- 0x1B, 0x6C, 0x87, 0xA3, 0x48, 0x38, 0xC7, 0xCD,- 0x5F, 0xD0, 0x89, 0x14, 0x22, 0x4E, 0x90, 0xC2,- 0x2A, 0xBF, 0x5A, 0x97, 0xB1, 0x06, 0x46, 0xD9,- 0x8C, 0x49, 0x16, 0xD3, 0xA8, 0x93, 0x9E, 0x62- },- {- 0xB0, 0xD3, 0x8F, 0x82, 0xF2, 0x48, 0x91, 0x69,- 0x52, 0xB3, 0x16, 0xB6, 0xD3, 0x6D, 0x9E, 0x02,- 0x2D, 0xF6, 0xEE, 0xCC, 0x26, 0xC7, 0x62, 0xA6,- 0x55, 0xCF, 0x5F, 0x0A, 0xE6, 0x49, 0xE2, 0xBD- },- {- 0x8D, 0x66, 0xFC, 0x9C, 0xED, 0xA5, 0xED, 0xDF,- 0xB1, 0xE0, 0x4D, 0x09, 0x6C, 0xA7, 0x0E, 0xF5,- 0x06, 0x50, 0xFB, 0x87, 0xCC, 0x6A, 0x9F, 0xFB,- 0xB3, 0xD2, 0x0B, 0xCE, 0x7B, 0x5A, 0x60, 0x74- },- {- 0x06, 0x43, 0x54, 0xE8, 0xE1, 0x1C, 0xF7, 0x13,- 0xB2, 0xC7, 0x2B, 0xA6, 0x7A, 0xC7, 0xD7, 0x6E,- 0x41, 0xBA, 0x61, 0xDB, 0x9C, 0x2D, 0xEA, 0x52,- 0x2E, 0x0B, 0xDA, 0x17, 0xCB, 0xA5, 0xE3, 0x92- },- {- 0xC8, 0xEF, 0x5F, 0x49, 0x8B, 0xD1, 0xBC, 0x70,- 0x7F, 0xBC, 0x7B, 0x5C, 0xBC, 0x2D, 0xFF, 0x04,- 0x93, 0x14, 0x4A, 0xC5, 0x27, 0x86, 0xDB, 0x3C,- 0x79, 0x3E, 0xF4, 0xAE, 0x8A, 0x83, 0x88, 0x47- },- {- 0x8A, 0x23, 0x97, 0xDF, 0x31, 0xE7, 0xF0, 0xCC,- 0x29, 0x0D, 0xA9, 0xA8, 0xBB, 0xE4, 0xF5, 0xF7,- 0xA3, 0xA1, 0x37, 0x50, 0x73, 0x0D, 0xB6, 0x2D,- 0xC2, 0x54, 0x0F, 0xDB, 0xD6, 0x18, 0x85, 0x89- },- {- 0xF1, 0x2D, 0x0B, 0x13, 0xC6, 0xAD, 0xFB, 0x3B,- 0xE5, 0x0A, 0x51, 0xEB, 0x6B, 0xAF, 0x65, 0xAB,- 0xFB, 0x17, 0x00, 0xBA, 0xA8, 0x7E, 0x52, 0x7D,- 0xBE, 0x3E, 0x67, 0x5A, 0x7A, 0x99, 0x46, 0x61- },- {- 0x10, 0x24, 0xC9, 0x40, 0xBE, 0x73, 0x41, 0x44,- 0x9B, 0x50, 0x10, 0x52, 0x2B, 0x50, 0x9F, 0x65,- 0xBB, 0xDC, 0x12, 0x87, 0xB4, 0x55, 0xC2, 0xBB,- 0x7F, 0x72, 0xB2, 0xC9, 0x2F, 0xD0, 0xD1, 0x89- },- {- 0x52, 0x60, 0x3B, 0x6C, 0xBF, 0xAD, 0x49, 0x66,- 0xCB, 0x04, 0x4C, 0xB2, 0x67, 0x56, 0x83, 0x85,- 0xCF, 0x35, 0xF2, 0x1E, 0x6C, 0x45, 0xCF, 0x30,- 0xAE, 0xD1, 0x98, 0x32, 0xCB, 0x51, 0xE9, 0xF5- },- {- 0xFF, 0xF2, 0x4D, 0x3C, 0xC7, 0x29, 0xD3, 0x95,- 0xDA, 0xF9, 0x78, 0xB0, 0x15, 0x73, 0x06, 0xCB,- 0x49, 0x57, 0x97, 0xE6, 0xC8, 0xDC, 0xA1, 0x73,- 0x1D, 0x2F, 0x6F, 0x81, 0xB8, 0x49, 0xBA, 0xAE- },- {- 0x41, 0xEE, 0xE9, 0x0D, 0x47, 0xEC, 0x27, 0x72,- 0xCD, 0x35, 0x2D, 0xFD, 0x67, 0xE0, 0x60, 0x5F,- 0xBD, 0xFC, 0x5F, 0xD6, 0xD8, 0x26, 0x45, 0x1E,- 0x3D, 0x06, 0x4D, 0x38, 0x28, 0xBD, 0x3B, 0xAE- },- {- 0x30, 0x0B, 0x6B, 0x36, 0xE5, 0x9F, 0x85, 0x1D,- 0xDD, 0xC2, 0x9B, 0xFA, 0x93, 0x08, 0x25, 0x20,- 0xCD, 0x77, 0xC5, 0x1E, 0x00, 0x7E, 0x00, 0xD2,- 0xD7, 0x8B, 0x26, 0xF4, 0xAF, 0x96, 0x15, 0x32- },- {- 0x9E, 0xF3, 0x03, 0x14, 0x83, 0x4E, 0x40, 0x1C,- 0x87, 0x1A, 0x20, 0x04, 0xE3, 0x8D, 0x5C, 0xE3,- 0x2E, 0xD2, 0x8E, 0x11, 0x37, 0xF1, 0x97, 0x0F,- 0x4F, 0x43, 0x78, 0xC7, 0x37, 0x06, 0x76, 0x3D- },- {- 0x3F, 0xBD, 0xCD, 0xE7, 0xB6, 0x43, 0x04, 0x02,- 0x5E, 0xC0, 0x58, 0x26, 0x09, 0x03, 0x1E, 0xC2,- 0x66, 0xD5, 0x0F, 0x56, 0x83, 0x5A, 0xE0, 0xCB,- 0x72, 0xD8, 0xCD, 0xB4, 0xCF, 0xAF, 0x44, 0x19- },- {- 0xE9, 0x0E, 0xAD, 0x3B, 0x98, 0x2B, 0x43, 0x5B,- 0x66, 0x36, 0x6A, 0x49, 0x6C, 0x3F, 0x8A, 0xE6,- 0x5B, 0x17, 0x61, 0x37, 0x00, 0xF5, 0x47, 0x67,- 0x3F, 0x62, 0x15, 0x35, 0x41, 0x91, 0x28, 0x64- },- {- 0xAB, 0xE3, 0x54, 0x7B, 0x33, 0x6D, 0x6E, 0x24,- 0x0D, 0x7F, 0xE6, 0x82, 0xD7, 0x4B, 0x9C, 0xC7,- 0xE8, 0xD7, 0xF9, 0xB5, 0x66, 0x48, 0x58, 0xB9,- 0x4D, 0xF5, 0x9E, 0x9F, 0xC3, 0x30, 0xD9, 0xE5- },- {- 0xB2, 0x99, 0x64, 0x20, 0x95, 0xB8, 0x28, 0x6C,- 0x52, 0x1C, 0xDB, 0x21, 0xED, 0x0F, 0xE0, 0x57,- 0x27, 0x80, 0x21, 0xBB, 0x40, 0x38, 0xEB, 0x5A,- 0x3D, 0x79, 0x54, 0x2F, 0x5D, 0x75, 0x1F, 0x54- },- {- 0xE4, 0xD7, 0x58, 0x35, 0x9F, 0x08, 0x67, 0x93,- 0xA8, 0x37, 0x54, 0xAC, 0xA6, 0x96, 0x8C, 0x3E,- 0x9F, 0xD9, 0x4B, 0x40, 0x49, 0x7F, 0x2E, 0xC2,- 0x24, 0xA2, 0x91, 0x60, 0x63, 0xA2, 0x14, 0xA3- },- {- 0x59, 0xA3, 0x04, 0xFC, 0x03, 0xAB, 0x75, 0xD5,- 0x57, 0xDB, 0x04, 0xEB, 0xD0, 0x2D, 0xD4, 0xC6,- 0xB8, 0x10, 0xA1, 0x38, 0xBB, 0xFE, 0xEA, 0x5D,- 0xFC, 0xEE, 0xAA, 0x2B, 0x75, 0xB0, 0x64, 0x91- },- {- 0x39, 0x95, 0x10, 0x22, 0x15, 0xF5, 0xFE, 0x92,- 0x10, 0xEB, 0x30, 0xD9, 0x52, 0xD8, 0xC9, 0x19,- 0x58, 0x9E, 0x71, 0x45, 0xFC, 0xD4, 0x95, 0xEA,- 0x78, 0xD0, 0x2B, 0x9C, 0x14, 0x8F, 0xAF, 0x09- },- {- 0x47, 0x2E, 0xE7, 0x11, 0x56, 0x35, 0x06, 0xA5,- 0xF0, 0x08, 0x3F, 0xE8, 0x2B, 0x08, 0xB9, 0x92,- 0x3C, 0xF6, 0xC8, 0x40, 0x4D, 0x0C, 0xBA, 0xCB,- 0xF8, 0x48, 0x64, 0xF6, 0x48, 0x54, 0x2A, 0xC0- },- {- 0x68, 0xFD, 0xB8, 0x2A, 0xDA, 0xE7, 0x9B, 0xEF,- 0x59, 0x0A, 0xBA, 0x62, 0xD7, 0xAC, 0x55, 0x32,- 0x12, 0x06, 0x1C, 0x36, 0xE3, 0x6F, 0x12, 0xC0,- 0xEF, 0xA2, 0x9A, 0x17, 0x62, 0xDE, 0x3B, 0x6A- },- {- 0x75, 0x85, 0xC0, 0x77, 0x33, 0x83, 0xF1, 0x74,- 0xFD, 0x66, 0x65, 0x49, 0xA8, 0x35, 0x2B, 0x30,- 0x5B, 0xF6, 0x85, 0x5B, 0xC9, 0x8B, 0xEA, 0x28,- 0xC3, 0x91, 0xB3, 0xC0, 0x34, 0xDA, 0x5A, 0x5A- },- {- 0xAC, 0xC5, 0x75, 0xFE, 0x2C, 0xD7, 0xBA, 0x2A,- 0x31, 0xFC, 0x7D, 0x67, 0x0A, 0x92, 0x34, 0xAF,- 0x68, 0x50, 0x33, 0x86, 0xE9, 0x59, 0x07, 0x3D,- 0x16, 0xA8, 0x1B, 0x33, 0xB9, 0x22, 0xB5, 0x0E- },- {- 0x9E, 0xC7, 0xD2, 0x99, 0x59, 0x43, 0xD3, 0x9D,- 0x6B, 0x97, 0x14, 0x93, 0xB8, 0x97, 0xA0, 0xEE,- 0x2D, 0x33, 0x92, 0xA7, 0x2D, 0xB8, 0x75, 0xC2,- 0x40, 0x5D, 0x35, 0x71, 0x78, 0xFB, 0x69, 0x11- },- {- 0x2D, 0x7E, 0xF1, 0x94, 0x01, 0x42, 0x5A, 0xBA,- 0x45, 0x0E, 0x82, 0xD3, 0x6D, 0x0F, 0xE7, 0xB2,- 0x08, 0x5E, 0xA0, 0xAF, 0x60, 0x45, 0xA5, 0x99,- 0x4C, 0xF4, 0x31, 0xEA, 0x59, 0x93, 0x9C, 0xC9- },- {- 0xF3, 0x2F, 0xD8, 0x55, 0xF0, 0x11, 0xC7, 0x18,- 0x02, 0x7F, 0x2E, 0xBE, 0x37, 0x7D, 0x69, 0x39,- 0xF1, 0x23, 0x70, 0xCA, 0xFF, 0x15, 0x1C, 0x1E,- 0x5A, 0xCE, 0x43, 0x8D, 0x70, 0x3C, 0x6D, 0x9F- },- {- 0xB2, 0xBD, 0x83, 0xD2, 0x31, 0x0D, 0x3D, 0x7B,- 0x1D, 0x2D, 0x5A, 0xAF, 0x43, 0x59, 0xFA, 0xE2,- 0x86, 0x12, 0x96, 0x27, 0x19, 0xFD, 0xDE, 0x4D,- 0xDA, 0xF6, 0x9E, 0x78, 0x20, 0xF3, 0x3F, 0x61- },- {- 0x1A, 0x7A, 0x9D, 0x0F, 0x44, 0xDD, 0xFA, 0x7F,- 0xC2, 0xF4, 0x77, 0x0C, 0xAD, 0x74, 0x22, 0xFA,- 0x6C, 0x4E, 0x37, 0xE6, 0xCB, 0x03, 0x6D, 0x89,- 0x9E, 0x10, 0x27, 0x50, 0xE5, 0x94, 0xFF, 0xCD- },- {- 0xDC, 0x69, 0xF6, 0x14, 0x1C, 0x8E, 0x10, 0x3F,- 0xF6, 0x1F, 0x62, 0x98, 0xA2, 0xC4, 0x4F, 0x52,- 0xD1, 0x47, 0x36, 0x6D, 0xDB, 0xD9, 0xC7, 0x9C,- 0xC3, 0x08, 0xFE, 0x84, 0x33, 0x6A, 0x95, 0x64- },- {- 0xE3, 0x4E, 0xD4, 0x17, 0xB0, 0x79, 0x1D, 0x9A,- 0x77, 0xEE, 0x1E, 0x50, 0xCC, 0x2C, 0x20, 0x7E,- 0x54, 0x0C, 0x77, 0x14, 0x04, 0x21, 0xC4, 0x6C,- 0xE0, 0x86, 0x28, 0x78, 0xAA, 0xEB, 0x27, 0x09- },- {- 0x21, 0x74, 0x42, 0x5C, 0x8C, 0xCA, 0xE3, 0x98,- 0xC4, 0xFF, 0x06, 0xF8, 0x48, 0x99, 0x1C, 0x5E,- 0x9B, 0xC0, 0xF3, 0x46, 0x11, 0x11, 0x70, 0x6F,- 0xB9, 0x5D, 0x0B, 0xE1, 0xC6, 0x8E, 0x47, 0x60- },- {- 0x18, 0x94, 0x58, 0x2A, 0x8A, 0x25, 0xFE, 0x8F,- 0x84, 0x7A, 0x4A, 0x03, 0x25, 0x74, 0xB7, 0x7B,- 0x8B, 0x36, 0xBF, 0x19, 0x99, 0x75, 0x26, 0xBB,- 0x4B, 0xC8, 0x5F, 0x38, 0x24, 0x53, 0x7F, 0xEB- },- {- 0x17, 0xED, 0x18, 0x8A, 0xE3, 0xC9, 0x53, 0xD6,- 0x55, 0x44, 0x59, 0x83, 0xB8, 0x32, 0x5B, 0xAF,- 0xFF, 0x32, 0xE2, 0x22, 0xB2, 0xDF, 0xEB, 0x16,- 0xE8, 0x61, 0x7A, 0xBF, 0x86, 0xEE, 0x7C, 0xC5- },- {- 0xF1, 0x48, 0x9A, 0xD1, 0xC3, 0x54, 0xCD, 0xE9,- 0x78, 0x92, 0x37, 0xEA, 0x6D, 0xBF, 0x67, 0xFC,- 0x1E, 0x44, 0xD1, 0xAC, 0xC8, 0xDC, 0x66, 0xAD,- 0x83, 0x87, 0x27, 0xF4, 0x7D, 0x9A, 0x91, 0xFE- },- {- 0x36, 0x7F, 0x22, 0x16, 0x5B, 0x8B, 0x66, 0xE9,- 0x7F, 0x66, 0x70, 0xF3, 0x4E, 0xBA, 0x27, 0x49,- 0xD2, 0x64, 0x3B, 0x21, 0xBE, 0xAD, 0xAD, 0xFE,- 0xFE, 0xA2, 0x57, 0x4B, 0x7C, 0x9B, 0x21, 0x96- },- {- 0x3D, 0x8D, 0xFE, 0xA1, 0x7E, 0xEA, 0x5D, 0x64,- 0x5A, 0xC1, 0xD4, 0x1A, 0x5B, 0x59, 0x22, 0x6C,- 0x48, 0x6C, 0x36, 0xBD, 0x77, 0xED, 0x44, 0xBB,- 0x34, 0x91, 0x70, 0xD0, 0x80, 0xE3, 0x0E, 0x68- },- {- 0x41, 0x15, 0xF8, 0x9E, 0x0B, 0x3B, 0x5C, 0x8F,- 0x61, 0x22, 0xC0, 0x25, 0x00, 0x17, 0x1D, 0xCF,- 0xFB, 0xCE, 0xA4, 0x66, 0x2A, 0x8C, 0x5F, 0x8C,- 0x1C, 0x01, 0xA9, 0xCA, 0x7B, 0x10, 0x27, 0xBB- },- {- 0xED, 0x6E, 0x91, 0x0B, 0x96, 0x02, 0x55, 0xD7,- 0xD7, 0x92, 0xEB, 0xE6, 0x7F, 0x26, 0x0A, 0x14,- 0x3C, 0xFA, 0xC1, 0x05, 0x1D, 0xFC, 0x05, 0x90,- 0x25, 0xEE, 0x0C, 0x1B, 0xFC, 0xBC, 0x56, 0x81- },- {- 0x55, 0x8F, 0xA8, 0xAF, 0xA1, 0x2B, 0xBE, 0xE5,- 0x4A, 0xF7, 0x8F, 0x6B, 0x74, 0x45, 0xF9, 0x96,- 0x65, 0xD4, 0xE3, 0x56, 0xBC, 0x07, 0xD3, 0xEF,- 0xFD, 0x8F, 0xD6, 0x5A, 0xB9, 0xC7, 0x47, 0x16- },- {- 0x5B, 0x60, 0x12, 0x76, 0x20, 0x53, 0xB8, 0x73,- 0x4A, 0xF0, 0xE5, 0x55, 0xE6, 0xA2, 0xBB, 0x4F,- 0xD4, 0x84, 0x0A, 0xF3, 0xB0, 0x4F, 0xCF, 0x63,- 0x50, 0xA2, 0xB8, 0xA5, 0x1B, 0x67, 0x96, 0xAD- },- {- 0xAB, 0x7A, 0xCC, 0xA5, 0xD7, 0x77, 0x10, 0xBA,- 0xD3, 0x7B, 0xA0, 0xFF, 0x4C, 0xEA, 0xE2, 0x7E,- 0x84, 0x71, 0x79, 0xF7, 0xFD, 0x7A, 0xEC, 0x88,- 0x69, 0xC6, 0x49, 0xB3, 0x3F, 0x8D, 0x25, 0x77- },- {- 0xFF, 0x77, 0x30, 0xB4, 0x74, 0xEC, 0x21, 0x45,- 0xA9, 0x2D, 0xD1, 0xCF, 0xFE, 0x45, 0xC3, 0x42,- 0xC6, 0xFD, 0x6B, 0xAC, 0x58, 0x0F, 0xF9, 0x5A,- 0x75, 0xED, 0xA3, 0xBF, 0x90, 0xEB, 0x4F, 0x01- },- {- 0xD1, 0x0F, 0x06, 0x1D, 0x5B, 0x9C, 0xB4, 0x4E,- 0xE0, 0x78, 0xA9, 0x6B, 0x33, 0x18, 0x57, 0x9E,- 0x5E, 0xF5, 0x0A, 0xEF, 0x3E, 0xD9, 0x6E, 0x4F,- 0x62, 0x14, 0x9B, 0x2E, 0x9F, 0x7C, 0x66, 0x0C- },- {- 0x67, 0xD2, 0x2B, 0x8E, 0xDF, 0x20, 0x01, 0xD8,- 0x64, 0x22, 0x13, 0x6A, 0xC6, 0x51, 0x6C, 0xF3,- 0x9F, 0x7F, 0xC6, 0xA7, 0x02, 0x98, 0x92, 0xFD,- 0x75, 0xC9, 0x87, 0x90, 0x96, 0x4A, 0x72, 0x0B- },- {- 0x7A, 0x5E, 0xC5, 0xBA, 0x76, 0x25, 0x9B, 0x07,- 0xB4, 0xDA, 0x03, 0xF3, 0x81, 0xFE, 0x7B, 0xEA,- 0x48, 0x65, 0xC8, 0x6C, 0x42, 0x4A, 0xBA, 0xA0,- 0xDD, 0x1E, 0xCF, 0x74, 0xF8, 0x7D, 0x2A, 0xC0- },- {- 0xE0, 0xFF, 0x60, 0xD6, 0x90, 0x29, 0xE6, 0xBD,- 0x1C, 0x15, 0x95, 0x3E, 0x91, 0x50, 0x9C, 0x0C,- 0x59, 0xED, 0x5D, 0xA5, 0x00, 0x01, 0x99, 0xF2,- 0x16, 0xD2, 0x9F, 0x96, 0x07, 0x9C, 0x2F, 0xEF- },- {- 0xFC, 0x13, 0xEA, 0xD8, 0x41, 0x01, 0x8F, 0x59,- 0x90, 0x3B, 0x40, 0xF2, 0x02, 0x0C, 0x66, 0x38,- 0xA6, 0x6A, 0x54, 0xC3, 0xA3, 0x38, 0x41, 0x4D,- 0x97, 0xA5, 0xC3, 0x94, 0xF3, 0x26, 0x6F, 0x33- },- {- 0x0C, 0x2F, 0x62, 0xB8, 0x98, 0xFB, 0x2F, 0x63,- 0x61, 0x7E, 0x78, 0x73, 0x45, 0x26, 0x3C, 0xB9,- 0xCF, 0x60, 0x65, 0x4B, 0x55, 0x3B, 0x20, 0x3E,- 0xE4, 0x9D, 0xCB, 0xB8, 0xF2, 0xA6, 0xAF, 0xAC- },- {- 0xD7, 0xD6, 0xCB, 0x55, 0x2A, 0xEB, 0x36, 0xEB,- 0x96, 0xB1, 0xD5, 0xE0, 0x52, 0xF8, 0xD9, 0x21,- 0xC3, 0x24, 0x5A, 0x97, 0x0D, 0x0B, 0xC8, 0x41,- 0x0C, 0xD6, 0x5E, 0xA1, 0x04, 0xC8, 0xE7, 0x79- },- {- 0xB7, 0x14, 0x1F, 0x30, 0x5E, 0xFD, 0xFE, 0xE5,- 0x56, 0xBD, 0x13, 0xE0, 0x40, 0x0D, 0x1E, 0x8C,- 0xFD, 0x65, 0x48, 0xBF, 0x81, 0xEE, 0x5D, 0x15,- 0x32, 0x7E, 0x49, 0x95, 0xCA, 0x8A, 0xD6, 0xFD- },- {- 0xB6, 0xB6, 0x38, 0xD2, 0x2B, 0x7A, 0x12, 0x82,- 0x53, 0x74, 0xF7, 0x03, 0x48, 0xD7, 0x44, 0x8D,- 0x4E, 0x7D, 0x90, 0x8C, 0xF6, 0xE7, 0xBB, 0xEF,- 0x8C, 0x93, 0xEF, 0x67, 0x9B, 0x2A, 0x54, 0x78- },- {- 0x0D, 0xF4, 0x58, 0x56, 0x41, 0xFA, 0x09, 0xF6,- 0xCB, 0xA4, 0xCC, 0x16, 0x5A, 0x10, 0xAD, 0xDE,- 0x34, 0xF8, 0x0D, 0x42, 0x5A, 0x70, 0xDB, 0x67,- 0xE2, 0xFD, 0x23, 0x7B, 0x62, 0x7F, 0x43, 0x8A- },- {- 0x10, 0x6B, 0x2B, 0x35, 0x4D, 0x95, 0xAC, 0xEC,- 0xD0, 0xD9, 0x58, 0x8F, 0xBC, 0x23, 0x1F, 0x8B,- 0xEA, 0x2E, 0x94, 0xEA, 0x66, 0x2D, 0xDD, 0x3F,- 0x13, 0x9E, 0x1B, 0x67, 0x87, 0x46, 0x1E, 0xED- },- {- 0xAE, 0x5C, 0x69, 0xEE, 0xFE, 0x90, 0x89, 0xB2,- 0x9C, 0x6C, 0x1A, 0x23, 0x70, 0xD2, 0x05, 0x52,- 0xBA, 0x40, 0xC3, 0xD5, 0xE3, 0x71, 0x3C, 0x12,- 0xDE, 0xFC, 0xAE, 0x99, 0x7F, 0x43, 0x3E, 0xCD- },- {- 0x1A, 0xAE, 0xF5, 0x5D, 0x4F, 0xA8, 0x92, 0xB6,- 0x35, 0xFB, 0x2A, 0x7A, 0x25, 0xF9, 0xA8, 0xE0,- 0x3B, 0x9F, 0xFB, 0x08, 0x2A, 0xE9, 0xC0, 0x7C,- 0x20, 0x42, 0xA0, 0x49, 0xC6, 0x51, 0x5E, 0x45- },- {- 0x29, 0x7D, 0xAA, 0xC4, 0xD5, 0x4D, 0xC4, 0x1C,- 0x83, 0xE3, 0x23, 0x94, 0x59, 0x9F, 0x17, 0x1C,- 0xDA, 0xA9, 0xDD, 0xB7, 0x17, 0x26, 0xDA, 0x4E,- 0xCE, 0x3C, 0xCF, 0x95, 0xC1, 0x1F, 0x56, 0xDF- },- {- 0x2C, 0x45, 0xAC, 0xF4, 0x91, 0xEC, 0x2F, 0x4B,- 0x7E, 0x30, 0x9E, 0x7E, 0xDD, 0x81, 0x5B, 0xE5,- 0xA5, 0x4C, 0x44, 0x58, 0xD1, 0xA5, 0x7C, 0x4F,- 0x9B, 0x76, 0x3B, 0x0C, 0x67, 0x18, 0xD4, 0x3E- },- {- 0x2F, 0x92, 0xF9, 0x01, 0x70, 0xD3, 0xAE, 0x95,- 0xAB, 0xFA, 0xC3, 0xA6, 0x98, 0x9A, 0x2A, 0x60,- 0xCB, 0x28, 0xB8, 0x58, 0x78, 0x2B, 0xE7, 0xEA,- 0x17, 0x9B, 0x48, 0xA7, 0x27, 0x6D, 0xD8, 0x60- },- {- 0xB4, 0x01, 0xE8, 0x4B, 0x15, 0xAC, 0xC4, 0x70,- 0x93, 0x6D, 0x6E, 0x37, 0xF7, 0x88, 0x83, 0x33,- 0x09, 0x27, 0x31, 0x13, 0x3B, 0x25, 0x1B, 0xEA,- 0x22, 0x16, 0x58, 0xCA, 0x19, 0xA7, 0x56, 0x69- },- {- 0xF8, 0xB3, 0x40, 0xD2, 0xB9, 0xB3, 0x3D, 0x43,- 0xA0, 0xA6, 0x6F, 0x34, 0x97, 0x82, 0x0A, 0xFA,- 0xAE, 0xE4, 0x34, 0xC4, 0xE3, 0xC0, 0xC1, 0x7E,- 0x89, 0x8B, 0x83, 0x01, 0xC5, 0x7A, 0x26, 0xBD- },- {- 0x56, 0x6D, 0xA2, 0x83, 0x99, 0x03, 0x89, 0x13,- 0x8A, 0xA6, 0xF2, 0xAA, 0xA3, 0xB9, 0xE4, 0x0C,- 0xBF, 0x90, 0x84, 0x0E, 0xC7, 0x62, 0xBD, 0x96,- 0xB7, 0xE3, 0x3A, 0x31, 0x13, 0xB1, 0x01, 0x08- },- {- 0x34, 0x06, 0x72, 0xB7, 0x04, 0x67, 0x60, 0x42,- 0xC9, 0xBF, 0x3F, 0x33, 0x7B, 0xA7, 0x9F, 0x11,- 0x33, 0x6A, 0xEB, 0xB5, 0xEC, 0x5D, 0x31, 0xDF,- 0x54, 0xEB, 0x6A, 0xD3, 0xB0, 0x43, 0x04, 0x42- },- {- 0x50, 0x50, 0xB7, 0x3B, 0x93, 0x16, 0xEE, 0xA2,- 0xF1, 0x49, 0xBF, 0xFD, 0x22, 0xAE, 0xE3, 0x84,- 0xDC, 0x54, 0x03, 0xB1, 0x8E, 0x16, 0xFA, 0x88,- 0x82, 0x5E, 0x18, 0x16, 0x09, 0x49, 0x6F, 0xD2- },- {- 0x13, 0x65, 0xCC, 0x6F, 0xB9, 0x26, 0x0E, 0x86,- 0x88, 0x9B, 0x3A, 0xFB, 0xD1, 0xC8, 0xBC, 0x12,- 0x92, 0x31, 0x97, 0x71, 0x5D, 0xB2, 0x66, 0xCC,- 0x7A, 0x01, 0xCA, 0x57, 0x15, 0x9F, 0x75, 0x96- },- {- 0x29, 0x46, 0x6F, 0x51, 0xC0, 0x11, 0xFD, 0x10,- 0x18, 0x14, 0x94, 0xA9, 0x37, 0x9B, 0x61, 0x59,- 0xB8, 0x08, 0xAE, 0x0F, 0xCB, 0x01, 0x61, 0xF8,- 0xF0, 0x79, 0x09, 0xFF, 0x04, 0x1B, 0x19, 0x65- },- {- 0x65, 0x91, 0xA3, 0xC3, 0xC7, 0x67, 0xB3, 0x8D,- 0x80, 0x5E, 0xD3, 0xF7, 0xEB, 0x67, 0x63, 0xE8,- 0xB3, 0xD2, 0xD6, 0x42, 0xE7, 0x30, 0x77, 0x45,- 0xCD, 0x34, 0x18, 0xEF, 0xF6, 0x9A, 0x19, 0xED- },- {- 0x1D, 0x84, 0xB0, 0x4B, 0x13, 0x38, 0xB0, 0xD2,- 0xE3, 0xC9, 0x8F, 0x7A, 0xEA, 0x3E, 0x98, 0xEF,- 0xFC, 0x53, 0x0A, 0x50, 0x44, 0xB9, 0x3B, 0x96,- 0xC6, 0x7E, 0xE3, 0x79, 0xD6, 0x2E, 0x81, 0x5F- },- {- 0x6F, 0xA2, 0x95, 0x27, 0x25, 0x32, 0xE9, 0x83,- 0xE1, 0x66, 0xB1, 0x2E, 0x49, 0x99, 0xC0, 0x52,- 0xF8, 0x9D, 0x9F, 0x30, 0xAE, 0x14, 0x81, 0xF3,- 0xD6, 0x0E, 0xAE, 0x85, 0xF8, 0xEE, 0x17, 0x8A- },- {- 0x4E, 0xD8, 0xCA, 0xA9, 0x8E, 0xC3, 0x9F, 0x6A,- 0x62, 0x9F, 0x9A, 0x65, 0x4A, 0x44, 0x7E, 0x7E,- 0x3E, 0x4F, 0xAE, 0xEC, 0xF3, 0x4D, 0xCF, 0x65,- 0x8D, 0x2D, 0x4B, 0x98, 0xB7, 0xA2, 0xEC, 0x1A- },- {- 0xCF, 0xAB, 0x82, 0x99, 0xA0, 0xDA, 0x0C, 0x2A,- 0x7E, 0x8F, 0xF5, 0x4D, 0x0A, 0x67, 0x6D, 0x14,- 0x1A, 0xB2, 0x6B, 0xC0, 0x01, 0x2E, 0x5F, 0x66,- 0x8E, 0x85, 0xD8, 0x14, 0xBC, 0x98, 0x88, 0xB0- },- {- 0xA6, 0x26, 0x54, 0x3C, 0x27, 0x1F, 0xCC, 0xC3,- 0xE4, 0x45, 0x0B, 0x48, 0xD6, 0x6B, 0xC9, 0xCB,- 0xDE, 0xB2, 0x5E, 0x5D, 0x07, 0x7A, 0x62, 0x13,- 0xCD, 0x90, 0xCB, 0xBD, 0x0F, 0xD2, 0x20, 0x76- },- {- 0x05, 0xCF, 0x3A, 0x90, 0x04, 0x91, 0x16, 0xDC,- 0x60, 0xEF, 0xC3, 0x15, 0x36, 0xAA, 0xA3, 0xD1,- 0x67, 0x76, 0x29, 0x94, 0x89, 0x28, 0x76, 0xDC,- 0xB7, 0xEF, 0x3F, 0xBE, 0xCD, 0x74, 0x49, 0xC0- },- {- 0xCC, 0xD6, 0x1C, 0x92, 0x6C, 0xC1, 0xE5, 0xE9,- 0x12, 0x8C, 0x02, 0x1C, 0x0C, 0x6E, 0x92, 0xAE,- 0xFC, 0x4F, 0xFB, 0xDE, 0x39, 0x4D, 0xD6, 0xF3,- 0xB7, 0xD8, 0x7A, 0x8C, 0xED, 0x89, 0x60, 0x14- },- {- 0x3F, 0xFA, 0x4F, 0x6D, 0xAF, 0xA5, 0x7F, 0x1C,- 0x50, 0xF1, 0xAF, 0xA4, 0xF8, 0x12, 0x92, 0xAE,- 0x71, 0xA0, 0x6F, 0xE4, 0xF8, 0xFF, 0x46, 0xC5,- 0x1D, 0x32, 0xFF, 0x26, 0x13, 0x48, 0x9F, 0x2B- },- {- 0x19, 0xD3, 0x92, 0x1C, 0xFC, 0x0F, 0x1A, 0x2B,- 0xB8, 0x13, 0xB3, 0xDF, 0xA9, 0x6D, 0xF9, 0x0E,- 0x2C, 0x6B, 0x87, 0xD7, 0x8E, 0x92, 0x38, 0xF8,- 0x5B, 0xBC, 0x77, 0xAE, 0x9A, 0x73, 0xF9, 0x8F- },- {- 0xF5, 0xC9, 0x16, 0xFF, 0x2B, 0xAD, 0xDE, 0x3E,- 0x29, 0xA5, 0xF9, 0x40, 0x23, 0x3E, 0xA3, 0x40,- 0x07, 0xD8, 0xF1, 0x82, 0xA4, 0x8A, 0x80, 0x8B,- 0x46, 0xBB, 0x80, 0x58, 0x00, 0x3F, 0x19, 0x03- },- {- 0x6B, 0xA0, 0x7A, 0x1A, 0xF7, 0x58, 0xE6, 0x82,- 0xD3, 0xE0, 0x9A, 0xDD, 0x2D, 0x3D, 0xCD, 0xF3,- 0x5D, 0x95, 0x53, 0xF6, 0x79, 0x98, 0x54, 0xA2,- 0x7E, 0x53, 0x60, 0x63, 0xC5, 0x7F, 0x81, 0xA5- },- {- 0xB7, 0x83, 0x78, 0xFB, 0x44, 0x6C, 0x54, 0x4B,- 0x04, 0xD4, 0xA1, 0x52, 0xAC, 0x49, 0x57, 0x31,- 0x61, 0xB3, 0xDD, 0xEB, 0xF6, 0x93, 0x86, 0x77,- 0x0A, 0x55, 0xA7, 0xD4, 0x7B, 0x88, 0x0E, 0x5D- },- {- 0xB5, 0x19, 0x53, 0x8F, 0xE1, 0x62, 0x6F, 0x0C,- 0x59, 0x59, 0x45, 0xAD, 0xA5, 0x8A, 0x34, 0x4F,- 0xAA, 0xC0, 0x06, 0x17, 0x61, 0xCC, 0x9D, 0x4A,- 0x84, 0x14, 0x19, 0xBD, 0x32, 0xEE, 0xC0, 0xD9- },- {- 0x96, 0xE4, 0x88, 0xB0, 0x27, 0x89, 0x64, 0x13,- 0xF4, 0x03, 0x4B, 0x03, 0x54, 0xF4, 0x84, 0x84,- 0xF6, 0xCF, 0xC1, 0x0F, 0x8E, 0xC5, 0x7B, 0x02,- 0x6F, 0xD2, 0x1A, 0x3B, 0x88, 0x36, 0x1A, 0x74- },- {- 0x77, 0x0C, 0x8A, 0x5F, 0x47, 0xBF, 0xD7, 0x69,- 0xCE, 0xD3, 0x5A, 0x71, 0xAF, 0xC3, 0xCA, 0x1F,- 0xF4, 0xC1, 0xF1, 0xE7, 0xCC, 0x3D, 0x23, 0x56,- 0xDE, 0x94, 0x50, 0x04, 0x36, 0x8D, 0x81, 0x45- },- {- 0x6D, 0xF9, 0xD8, 0xD0, 0xD3, 0xA8, 0xD9, 0x8C,- 0x83, 0x50, 0xD7, 0x16, 0x2B, 0xD1, 0x55, 0x79,- 0xD5, 0x70, 0x7A, 0xDD, 0x76, 0x11, 0xA0, 0x0E,- 0xEB, 0x6C, 0xA5, 0x74, 0x3E, 0xD7, 0x8C, 0xB7- },- {- 0x4F, 0x0F, 0xE8, 0xFC, 0x17, 0x90, 0x15, 0x91,- 0xCF, 0x34, 0x87, 0x30, 0xE1, 0x87, 0xDE, 0x52,- 0x3D, 0x6D, 0x75, 0x68, 0xC1, 0xFB, 0xD8, 0x24,- 0x85, 0x91, 0x39, 0x85, 0xEB, 0x67, 0x97, 0x1C- },- {- 0x0E, 0xF3, 0xBB, 0x35, 0xCF, 0x37, 0x2B, 0xD9,- 0x4E, 0x3F, 0x80, 0xEE, 0xCE, 0xBD, 0x50, 0xEF,- 0x0D, 0x03, 0x08, 0xE0, 0x1E, 0x0E, 0xD6, 0xDE,- 0x0F, 0x5A, 0x8A, 0x8C, 0x81, 0x8A, 0x00, 0x74- },- {- 0xC0, 0x38, 0xD3, 0xE8, 0x09, 0xA5, 0xE3, 0xA5,- 0x8D, 0xB2, 0xF9, 0x1C, 0x15, 0xAE, 0x12, 0x43,- 0x95, 0x78, 0xF7, 0x54, 0x85, 0xCD, 0x84, 0xF5,- 0x56, 0xC6, 0x97, 0x1E, 0x8E, 0x25, 0x06, 0x20- },- {- 0xCE, 0x39, 0x9A, 0x0F, 0x08, 0x27, 0x7D, 0x8D,- 0x48, 0x16, 0x09, 0x50, 0x60, 0xEB, 0xBF, 0x33,- 0xDA, 0x01, 0x6F, 0xB4, 0x3A, 0x6C, 0x35, 0x6D,- 0x5A, 0x3F, 0xE4, 0xBB, 0x57, 0x4C, 0x5E, 0x7B- },- {- 0x86, 0x9F, 0x7E, 0x31, 0x6B, 0x19, 0x4F, 0x95,- 0x31, 0xBC, 0xAF, 0x33, 0xF7, 0x91, 0x3F, 0x1B,- 0x9C, 0xFC, 0x6B, 0xB5, 0xDC, 0xF8, 0x6B, 0x69,- 0x2B, 0xF8, 0xCA, 0xB2, 0x9B, 0x8A, 0xA9, 0x6F- },- {- 0x32, 0x7D, 0xFA, 0x46, 0x44, 0x59, 0xD9, 0xE4,- 0x8F, 0x5E, 0x55, 0xC7, 0xF5, 0xBA, 0xA6, 0x8F,- 0xC4, 0xA2, 0x5A, 0xD6, 0x22, 0xBC, 0x7B, 0xF0,- 0x1A, 0xCA, 0x82, 0xFD, 0x5E, 0x72, 0x31, 0x4C- },- {- 0xE0, 0x0D, 0xAD, 0x31, 0x51, 0xB9, 0x08, 0x5E,- 0xAE, 0x78, 0x69, 0x84, 0xFE, 0x20, 0x73, 0x52,- 0x32, 0xB7, 0xFF, 0x7F, 0x1B, 0x1D, 0xB7, 0x96,- 0x1F, 0xD0, 0xD0, 0xE0, 0xF6, 0x05, 0xDB, 0x9A- },- {- 0x07, 0x6F, 0x64, 0x45, 0x20, 0xD0, 0xB4, 0x73,- 0x2D, 0x6C, 0x53, 0x1C, 0x93, 0x49, 0x08, 0x90,- 0x26, 0x93, 0x6D, 0x99, 0x82, 0x04, 0x61, 0xDA,- 0x87, 0x74, 0x9A, 0x52, 0x0F, 0xBE, 0x90, 0xCE- },- {- 0xB4, 0x41, 0x4C, 0xA1, 0x37, 0x3B, 0xE4, 0x6F,- 0x15, 0xCE, 0xA6, 0xB1, 0x25, 0x5A, 0x7D, 0x18,- 0x86, 0xC6, 0xFD, 0xB0, 0x8E, 0xD5, 0xAF, 0x96,- 0x57, 0xD5, 0xAA, 0xC3, 0x17, 0xDE, 0x3A, 0x29- },- {- 0x8D, 0x1A, 0xB0, 0x26, 0x3D, 0xAB, 0x7B, 0x86,- 0xEC, 0xEE, 0x21, 0x91, 0x62, 0xD9, 0x99, 0xA0,- 0x12, 0x45, 0x57, 0x22, 0x69, 0xDE, 0x31, 0x10,- 0x0E, 0x5D, 0x88, 0xFC, 0x1B, 0x1E, 0xAA, 0x69- },- {- 0xB4, 0x8D, 0x1C, 0x1F, 0x83, 0x92, 0x4A, 0x02,- 0xA2, 0x3E, 0x5E, 0x0F, 0x97, 0x1E, 0x16, 0xE8,- 0x7F, 0xC4, 0x88, 0x48, 0x53, 0x83, 0x34, 0x85,- 0x19, 0x1A, 0x2B, 0x60, 0x72, 0x2F, 0xE2, 0x69- },- {- 0xF2, 0xED, 0xD5, 0xF7, 0x50, 0xA2, 0x0A, 0x54,- 0x1D, 0x3F, 0x6B, 0xD5, 0xDF, 0x80, 0x83, 0x8F,- 0x11, 0x82, 0x5B, 0x25, 0xA9, 0x8F, 0x3D, 0xA5,- 0xE1, 0x52, 0x3B, 0xFF, 0x81, 0x3B, 0xB5, 0x60- },- {- 0x07, 0x16, 0x60, 0x04, 0xEF, 0x88, 0xE1, 0x61,- 0x4E, 0xBD, 0xC8, 0x87, 0xDF, 0xC7, 0xDA, 0x42,- 0xEB, 0xCD, 0xA0, 0x2D, 0x92, 0xC1, 0x2F, 0x18,- 0xD1, 0x18, 0x6C, 0xE3, 0xC9, 0x87, 0x10, 0xE4- },- {- 0x69, 0xF8, 0x3A, 0xA1, 0x01, 0xD6, 0x9B, 0x8F,- 0x12, 0x20, 0xDC, 0x1C, 0x53, 0x8D, 0x89, 0x34,- 0x45, 0x84, 0x20, 0xBE, 0x33, 0x5F, 0xEB, 0x46,- 0xFF, 0xC4, 0x7A, 0x2C, 0x8E, 0x2E, 0x6A, 0x8A- },- {- 0xE1, 0x46, 0x9F, 0x16, 0xC6, 0xFC, 0xA1, 0x51,- 0x19, 0xA2, 0x72, 0xE5, 0x85, 0xC7, 0xF5, 0x04,- 0x21, 0xBC, 0x8A, 0x41, 0x4C, 0x86, 0x4F, 0xC7,- 0x6B, 0x01, 0x04, 0x8D, 0x4C, 0x6F, 0xC5, 0xD2- },- {- 0x67, 0x63, 0x34, 0x3A, 0x1C, 0x80, 0xF1, 0x92,- 0x83, 0xA8, 0x0A, 0xF8, 0x54, 0xE7, 0xE9, 0x06,- 0x5C, 0x2A, 0x83, 0x49, 0xEF, 0x11, 0xF1, 0x1B,- 0xFB, 0x76, 0xBA, 0x9F, 0x97, 0x04, 0x85, 0x39- },- {- 0x1A, 0xE3, 0xA0, 0xB8, 0xB2, 0xC7, 0x88, 0x5B,- 0xA3, 0x18, 0xAD, 0x6F, 0xD4, 0x49, 0xFC, 0x4D,- 0x7F, 0x84, 0x04, 0xB5, 0x9C, 0xF3, 0x27, 0x5F,- 0xCD, 0xEA, 0x13, 0x56, 0x34, 0x25, 0x77, 0x2D- },- {- 0x3A, 0x71, 0x18, 0x4C, 0xBE, 0x8E, 0xB5, 0x8E,- 0x68, 0x12, 0xBA, 0x7A, 0x7A, 0x1D, 0xCA, 0x0C,- 0xA2, 0x8E, 0xEC, 0x63, 0x78, 0x2F, 0x2E, 0x6E,- 0x3C, 0x0B, 0x87, 0x07, 0x3F, 0x53, 0x3F, 0xFD- },- {- 0x18, 0x4C, 0xCF, 0x2A, 0x52, 0xF3, 0x88, 0xC9,- 0xF8, 0x97, 0xA8, 0x57, 0xFE, 0x7C, 0xCE, 0xC2,- 0x95, 0x99, 0x11, 0xA8, 0xD1, 0xE0, 0x9E, 0xE8,- 0x80, 0x4D, 0x8D, 0x5D, 0x50, 0x8D, 0xD9, 0x18- },- {- 0xA6, 0x6D, 0x40, 0x9A, 0xF7, 0xAF, 0xD7, 0x5B,- 0xE8, 0x31, 0xDD, 0x49, 0x8C, 0x19, 0x6E, 0xF1,- 0x2C, 0x73, 0xC3, 0x11, 0x29, 0xEC, 0x02, 0xD5,- 0xF1, 0x2A, 0xB0, 0x2A, 0x2C, 0x63, 0xA2, 0x5E- },- {- 0x58, 0xB3, 0x74, 0x97, 0xFC, 0xF0, 0xBE, 0x0E,- 0x0C, 0xF1, 0x73, 0x40, 0x45, 0xC2, 0x95, 0xB2,- 0x86, 0xC7, 0x6A, 0x7C, 0x04, 0x8E, 0x87, 0xC5,- 0x40, 0x28, 0xED, 0x36, 0x91, 0x5B, 0x5D, 0xF3- },- {- 0x2C, 0x73, 0x33, 0x54, 0x0A, 0x83, 0x2D, 0x64,- 0x45, 0x6E, 0x43, 0x05, 0x8C, 0x50, 0xD9, 0x3C,- 0x93, 0x2A, 0xD9, 0xB1, 0x8B, 0x3F, 0xC3, 0xA0,- 0x59, 0x92, 0x07, 0xCD, 0xA3, 0xB3, 0xC7, 0xA6- },- {- 0x3D, 0xC0, 0x62, 0xFF, 0xB5, 0x7D, 0x83, 0x5F,- 0xE3, 0xAA, 0x40, 0x94, 0x66, 0x82, 0x2F, 0x91,- 0x86, 0x91, 0x84, 0x23, 0x94, 0x75, 0x05, 0x16,- 0x5F, 0xDC, 0xDF, 0xB7, 0x30, 0x6F, 0x72, 0x59- },- {- 0x89, 0x20, 0x48, 0x44, 0xAC, 0xB9, 0x2F, 0x35,- 0x3B, 0xFC, 0x89, 0xA3, 0xCE, 0x8A, 0x98, 0x17,- 0x21, 0x9C, 0x10, 0x13, 0x85, 0xC5, 0x93, 0xCF,- 0x60, 0xE0, 0xBE, 0xFA, 0x96, 0x38, 0xE1, 0x4E- },- {- 0x78, 0x2B, 0xA9, 0x02, 0xE9, 0x12, 0x32, 0x94,- 0x1C, 0x78, 0xC4, 0x9C, 0xD9, 0x77, 0x1A, 0x5D,- 0x99, 0x92, 0xF9, 0xB0, 0x7D, 0x9C, 0x0A, 0x2D,- 0xF8, 0x2D, 0x38, 0x5D, 0x15, 0xC4, 0x2B, 0xB3- },- {- 0x0D, 0xC3, 0xFF, 0x7D, 0xF0, 0xDF, 0xC0, 0x23,- 0x76, 0x3D, 0x76, 0x34, 0xE1, 0x8D, 0xA2, 0x73,- 0x93, 0xFC, 0x9F, 0xDB, 0x1C, 0x15, 0x46, 0x46,- 0x86, 0x10, 0x75, 0xF0, 0xA8, 0x7D, 0x0E, 0x90- },- {- 0xB9, 0x5C, 0x65, 0xFB, 0x6F, 0x25, 0x4E, 0xDB,- 0xDE, 0x8C, 0x03, 0x7D, 0x5C, 0x8B, 0x20, 0x39,- 0x34, 0x0F, 0x4A, 0xC2, 0xB0, 0x23, 0xA6, 0xAA,- 0x28, 0xA8, 0xFC, 0xD2, 0xD2, 0x68, 0x9C, 0xF4- },- {- 0x87, 0xE8, 0xF5, 0x15, 0x72, 0xA5, 0xD6, 0xA2,- 0x39, 0xF8, 0x5B, 0xC5, 0x3E, 0x11, 0x74, 0xE1,- 0x5B, 0xE1, 0x2F, 0xCD, 0xF1, 0x51, 0xA0, 0xB9,- 0xA2, 0xB4, 0x36, 0x40, 0xCA, 0xF7, 0x4C, 0x1D- },- {- 0x2A, 0x6F, 0x3E, 0x46, 0x2C, 0x40, 0x5C, 0x35,- 0x4F, 0xE8, 0x0F, 0xCC, 0xCE, 0xD1, 0xC9, 0xBE,- 0x44, 0x32, 0x5D, 0x29, 0xE0, 0x7D, 0xA3, 0x09,- 0x60, 0xB6, 0x25, 0xA7, 0x6E, 0xA4, 0x2F, 0x83- },- {- 0x20, 0xB4, 0x6C, 0x8F, 0xBF, 0xCA, 0x97, 0x45,- 0x32, 0x62, 0x46, 0x0F, 0x84, 0x98, 0xA7, 0xE2,- 0xAF, 0x15, 0xAC, 0x79, 0xB5, 0x9D, 0xDF, 0xB0,- 0x27, 0xBB, 0x52, 0xF2, 0xD6, 0x8E, 0x8F, 0x51- },- {- 0x31, 0xB0, 0x76, 0x3C, 0xB9, 0xBA, 0x92, 0x40,- 0x3D, 0xCA, 0x1A, 0xBD, 0xD7, 0x34, 0x2D, 0x7D,- 0xE9, 0x4C, 0x58, 0x1E, 0x76, 0xF7, 0xC9, 0xA6,- 0x1E, 0x51, 0x59, 0x28, 0xE1, 0x0B, 0x4E, 0x77- },- {- 0xE1, 0x91, 0xE1, 0x17, 0x06, 0x3C, 0xFA, 0xC9,- 0x64, 0x2C, 0xD9, 0x3C, 0xB4, 0x2B, 0x39, 0xED,- 0xDD, 0x9E, 0x4A, 0xB6, 0x5F, 0x1D, 0x03, 0x97,- 0xE3, 0xE1, 0x7D, 0xD0, 0x4C, 0xAB, 0x11, 0x80- },- {- 0x22, 0x5A, 0x20, 0x21, 0x07, 0xA7, 0x47, 0x03,- 0xE0, 0x41, 0xC6, 0xCC, 0xA4, 0xEA, 0xCF, 0x4F,- 0x21, 0xEE, 0xA6, 0xF2, 0x2A, 0x14, 0x6D, 0x8D,- 0xA2, 0xAB, 0x8C, 0xF6, 0x19, 0x72, 0x29, 0xA5- },- {- 0xEF, 0xC4, 0x83, 0x6B, 0xE4, 0xAC, 0x3E, 0x97,- 0x91, 0xD2, 0xEC, 0x62, 0x22, 0x6E, 0x7D, 0xF6,- 0x41, 0x18, 0xF4, 0x56, 0x5C, 0x19, 0xE6, 0xC9,- 0xE8, 0x40, 0x63, 0xF5, 0x66, 0x1C, 0x7B, 0x2F- },- {- 0x3A, 0x76, 0xB0, 0x15, 0x2C, 0x0E, 0x1D, 0x1F,- 0xD7, 0xAC, 0x9D, 0x91, 0xA2, 0x8A, 0x18, 0xE1,- 0xA4, 0xC0, 0x60, 0x80, 0xF2, 0xB7, 0xEC, 0xEF,- 0xB6, 0xEF, 0xFE, 0x28, 0xB8, 0xCF, 0xC7, 0x65- },- {- 0x0D, 0x46, 0xAD, 0x03, 0x90, 0x70, 0x11, 0x58,- 0x28, 0xF9, 0x4E, 0xB6, 0xB7, 0x29, 0x63, 0xE6,- 0x0A, 0x7D, 0x2D, 0xB7, 0xCA, 0x89, 0x91, 0xD2,- 0x25, 0xC3, 0x87, 0x7B, 0x14, 0x9B, 0x0A, 0x8A- },- {- 0xE4, 0x4C, 0xFC, 0x42, 0x11, 0x8F, 0x09, 0x6B,- 0xFC, 0x51, 0x52, 0x1C, 0xB1, 0x8D, 0x5D, 0x65,- 0x25, 0x58, 0x6B, 0x98, 0x9F, 0x4E, 0xE2, 0xB8,- 0x28, 0xC5, 0x19, 0x9F, 0xEA, 0xB9, 0x4B, 0x82- },- {- 0x6D, 0x4B, 0xD2, 0xE0, 0x73, 0xEC, 0x49, 0x66,- 0x84, 0x7F, 0x5C, 0xBE, 0x88, 0xDD, 0xFA, 0xBA,- 0x2B, 0xE4, 0xCA, 0xF2, 0xF3, 0x33, 0x55, 0x2B,- 0x85, 0x53, 0xDA, 0x53, 0x34, 0x87, 0xC2, 0x5B- },- {- 0xBB, 0xC4, 0x6D, 0xB4, 0x37, 0xD1, 0x07, 0xC9,- 0x67, 0xCA, 0x6D, 0x91, 0x45, 0x5B, 0xBD, 0xFE,- 0x05, 0x21, 0x18, 0xAB, 0xD1, 0xD0, 0x69, 0xF0,- 0x43, 0x59, 0x48, 0x7E, 0x13, 0xAE, 0xA0, 0xE1- },- {- 0xB9, 0x74, 0xC1, 0x4D, 0xB7, 0xD3, 0x17, 0x4D,- 0xD0, 0x60, 0x84, 0xBB, 0x30, 0x31, 0x08, 0xB2,- 0xF0, 0xDA, 0xF5, 0x0E, 0xCC, 0xC3, 0x29, 0x35,- 0x43, 0x79, 0x5C, 0x96, 0x36, 0xC6, 0x24, 0x82- },- {- 0x0E, 0xEE, 0x23, 0x5B, 0x06, 0x93, 0x6A, 0xED,- 0x71, 0x73, 0xC8, 0xC1, 0x9A, 0xA7, 0xC2, 0x17,- 0xB9, 0xEE, 0xDA, 0xEB, 0x1A, 0x88, 0xF3, 0x05,- 0x52, 0xE9, 0x22, 0x51, 0x45, 0x14, 0x9E, 0x82- },- {- 0x36, 0xD0, 0x89, 0xE0, 0x25, 0xB5, 0x68, 0x69,- 0x37, 0x74, 0x28, 0x25, 0xE6, 0xEE, 0x3D, 0x83,- 0xE7, 0xD7, 0xA5, 0x0C, 0x82, 0x3C, 0x82, 0x88,- 0x34, 0x60, 0xF3, 0x85, 0x14, 0x7D, 0xC1, 0x7B- },- {- 0x77, 0xEE, 0x4F, 0xFC, 0x9F, 0x5D, 0xD6, 0x05,- 0x47, 0x0D, 0xC0, 0xE7, 0x4D, 0x6B, 0x17, 0xC5,- 0x13, 0x0D, 0x8B, 0x73, 0x91, 0x3F, 0x36, 0xD5,- 0xF8, 0x78, 0x7E, 0x61, 0x9A, 0x94, 0x7C, 0xA0- },- {- 0x0F, 0xE6, 0xC2, 0xAB, 0x75, 0x42, 0x33, 0x36,- 0x0D, 0x68, 0xB9, 0xAC, 0x80, 0xCD, 0x61, 0x18,- 0x4B, 0xFA, 0xA7, 0xD3, 0x56, 0x29, 0x41, 0x80,- 0x02, 0x5F, 0xE4, 0x06, 0x39, 0xC7, 0x6C, 0x36- },- {- 0x99, 0x60, 0x88, 0xC7, 0x94, 0x56, 0xEC, 0xDD,- 0xA1, 0xFB, 0xC0, 0x2E, 0xE1, 0xBA, 0x42, 0xD9,- 0x1D, 0x85, 0x8C, 0x31, 0x0A, 0x5A, 0x8B, 0x46,- 0x74, 0xFE, 0x6A, 0x7C, 0x14, 0x44, 0x14, 0xA1- },- {- 0x9E, 0x33, 0x8A, 0xED, 0x0B, 0xC7, 0x1C, 0x0C,- 0x97, 0xF1, 0x98, 0x55, 0xBF, 0x49, 0x17, 0x4F,- 0x70, 0xA9, 0xD7, 0x70, 0x14, 0x87, 0x36, 0x63,- 0x21, 0x34, 0x27, 0x50, 0x2B, 0xD8, 0x5D, 0x9F- },- {- 0x4A, 0x84, 0x3D, 0x26, 0xAD, 0xEC, 0x52, 0x0E,- 0x4B, 0x5D, 0xBF, 0x01, 0x45, 0xCC, 0x4F, 0x50,- 0x24, 0xFA, 0xFC, 0xDC, 0x20, 0x25, 0x82, 0x4A,- 0x8C, 0x64, 0x65, 0x06, 0x17, 0x68, 0x7E, 0xE7- },- {- 0xC9, 0x16, 0x78, 0xC4, 0xA6, 0x4E, 0x2F, 0xA4,- 0xB7, 0x4D, 0xE6, 0x1A, 0xD0, 0xC0, 0x6F, 0xF0,- 0x6B, 0x5D, 0x67, 0x2F, 0xA7, 0xC6, 0x87, 0x7A,- 0x40, 0x14, 0xCE, 0x9E, 0x91, 0xBE, 0x38, 0xD7- },- {- 0xFF, 0x77, 0x77, 0x40, 0x5D, 0x32, 0x7A, 0xDB,- 0x58, 0x30, 0x1C, 0x71, 0x1E, 0xCD, 0xC2, 0xBC,- 0xE1, 0xBF, 0xA8, 0x29, 0xFF, 0xC9, 0xB1, 0x17,- 0xF2, 0x1A, 0x2B, 0x19, 0x8D, 0x0D, 0x68, 0x84- },- {- 0x0A, 0x8D, 0xDA, 0xF1, 0x72, 0x8C, 0x5C, 0xD9,- 0x3A, 0x25, 0x5D, 0x56, 0x23, 0xC3, 0xDA, 0xDA,- 0x2D, 0x3D, 0x05, 0x71, 0xBF, 0x14, 0x38, 0xAD,- 0xC8, 0xC9, 0x64, 0xA9, 0xAA, 0xD1, 0x18, 0xCB- },- {- 0xC1, 0x33, 0xAB, 0xBD, 0x0D, 0x2D, 0x80, 0x8A,- 0x67, 0xB6, 0x74, 0x5B, 0x4B, 0x36, 0x50, 0xB4,- 0xA6, 0x4D, 0xC2, 0x76, 0xCF, 0x98, 0xE3, 0x03,- 0x57, 0xB6, 0xAB, 0xD5, 0xC1, 0xD2, 0x2A, 0x9B- },- {- 0xC5, 0x9E, 0xE5, 0xC1, 0x96, 0xBA, 0x3C, 0xFE,- 0xF9, 0x40, 0x87, 0x79, 0x82, 0x07, 0xBD, 0xCE,- 0xF1, 0x39, 0xCE, 0x2C, 0xF7, 0x8D, 0xCE, 0xD6,- 0x19, 0x8F, 0x0F, 0xA3, 0xA4, 0x09, 0x13, 0x1C- },- {- 0xC7, 0xFD, 0xAD, 0xE5, 0x9C, 0x46, 0x99, 0x38,- 0x5E, 0xBA, 0x59, 0xE7, 0x56, 0xC2, 0xB1, 0x71,- 0xB0, 0x23, 0xDE, 0xAE, 0x08, 0x2E, 0x5A, 0x6E,- 0x3B, 0xFB, 0xDC, 0x10, 0x73, 0xA3, 0x20, 0x03- },- {- 0x97, 0x53, 0x27, 0xC5, 0xF4, 0xDE, 0xC6, 0x41,- 0x4B, 0x6E, 0x00, 0xCB, 0x04, 0x23, 0x37, 0xB8,- 0xD2, 0xA6, 0x56, 0x46, 0x37, 0xA7, 0x44, 0x2A,- 0xEC, 0x7B, 0xE8, 0xF8, 0xC8, 0x9A, 0x2F, 0x1C- },- {- 0xA2, 0xF7, 0x24, 0x6D, 0xF4, 0xA2, 0x4E, 0xFB,- 0xAC, 0xD3, 0xFD, 0x60, 0x68, 0x3A, 0xBC, 0x86,- 0x8B, 0xEF, 0x25, 0x32, 0x70, 0x52, 0xCF, 0x2F,- 0x1D, 0x93, 0xEC, 0xE4, 0xFF, 0xCD, 0x73, 0xC6- },- {- 0x49, 0x7F, 0xB2, 0xAC, 0xAC, 0xF1, 0x23, 0xF3,- 0x59, 0x5E, 0x40, 0xFC, 0x51, 0xA7, 0xBD, 0x24,- 0x45, 0x8B, 0xBC, 0xBA, 0x4A, 0x29, 0x40, 0xA5,- 0xCB, 0x03, 0xD6, 0x08, 0xFB, 0xDF, 0x28, 0x25- },- {- 0x0E, 0x97, 0xD2, 0x27, 0x93, 0xCE, 0x6F, 0x28,- 0x3D, 0x5C, 0x74, 0x0D, 0x30, 0x8A, 0x27, 0xAD,- 0x7C, 0x3B, 0x0D, 0x9A, 0xFC, 0xD3, 0xD9, 0xE9,- 0xB9, 0xCA, 0xC5, 0x6B, 0x10, 0x29, 0x0C, 0x8F- },- {- 0x66, 0x30, 0xB3, 0x56, 0x18, 0xE7, 0x00, 0xD9,- 0x10, 0x68, 0x38, 0x93, 0x79, 0x5E, 0xF7, 0x0B,- 0xF0, 0x7E, 0xB1, 0x56, 0xF5, 0x5F, 0xFE, 0x3B,- 0x69, 0xAD, 0x88, 0xA4, 0xB8, 0xB0, 0xBF, 0xA1- },- {- 0x02, 0xF7, 0x42, 0xC6, 0xE9, 0x52, 0x78, 0x12,- 0x1A, 0x05, 0xE4, 0x42, 0x05, 0x44, 0x4F, 0xC5,- 0xEA, 0x6A, 0xF5, 0xE7, 0x41, 0xC5, 0x35, 0xBC,- 0x2C, 0xBC, 0x3B, 0x23, 0x5A, 0x2E, 0xA2, 0xB0- },- {- 0x46, 0x22, 0xF3, 0x6E, 0xB8, 0x98, 0x38, 0x3F,- 0x60, 0xD5, 0xBE, 0xD8, 0x09, 0xAC, 0x5C, 0x47,- 0x45, 0xC5, 0xD6, 0xAB, 0x84, 0xBC, 0xAD, 0xF7,- 0x9C, 0xF2, 0xA9, 0x6D, 0x4E, 0xC8, 0x88, 0x18- },- {- 0xCC, 0xD1, 0x1F, 0xAA, 0xA0, 0x58, 0x1E, 0xC3,- 0x2C, 0x3A, 0x40, 0x3F, 0x92, 0xEF, 0x43, 0xD5,- 0xDC, 0xF1, 0x95, 0xC1, 0xA1, 0x01, 0xDB, 0xFD,- 0x49, 0x5D, 0xBB, 0x4D, 0xCE, 0x80, 0x69, 0xE0- },- {- 0x06, 0x02, 0x4D, 0x6B, 0x07, 0xE0, 0x00, 0xBC,- 0xE6, 0x13, 0x47, 0x0A, 0x28, 0x80, 0x51, 0x9B,- 0x8B, 0xE4, 0xA3, 0x6B, 0xF3, 0x3C, 0x99, 0xC9,- 0x17, 0x89, 0x3E, 0xC7, 0x5D, 0xD9, 0x0F, 0xE3- },- {- 0xD9, 0x3A, 0xF9, 0x47, 0xB1, 0x46, 0x3A, 0x81,- 0x7D, 0xB4, 0x41, 0xA4, 0x74, 0x58, 0x8D, 0x6F,- 0x99, 0x6D, 0x24, 0x39, 0x83, 0xE8, 0x3C, 0x7E,- 0xEE, 0x90, 0xE1, 0xEF, 0xA4, 0x40, 0xD9, 0xBA- },- {- 0x94, 0x89, 0x89, 0x45, 0xA7, 0xDB, 0x25, 0x9E,- 0x1B, 0x2E, 0x7C, 0xBE, 0xA4, 0x8A, 0xA0, 0xC6,- 0xD6, 0x57, 0x0D, 0x18, 0x17, 0x9F, 0x06, 0x18,- 0x47, 0x1C, 0x88, 0xF3, 0xEC, 0x3B, 0x0F, 0xC3- },- {- 0x4C, 0x2D, 0x93, 0x52, 0x56, 0x39, 0x2A, 0xA2,- 0xBE, 0x6E, 0x10, 0x78, 0xC0, 0x59, 0x38, 0x15,- 0xAB, 0xEF, 0x46, 0x9D, 0xE9, 0x69, 0xB5, 0x7B,- 0x88, 0x1B, 0x93, 0xAF, 0x55, 0x84, 0x65, 0xFA- },- {- 0xAA, 0xC7, 0xBE, 0x16, 0xE5, 0x2F, 0x79, 0x0E,- 0x4F, 0xF7, 0x0B, 0x24, 0x01, 0x5C, 0xB1, 0x1B,- 0x40, 0x61, 0x6E, 0x94, 0xDB, 0x13, 0x88, 0x2B,- 0x41, 0xD3, 0xDD, 0x8C, 0x8C, 0x19, 0x52, 0xB7- },- {- 0x04, 0x34, 0xB4, 0x7C, 0x0E, 0xE7, 0xE6, 0xF5,- 0x39, 0x06, 0x79, 0x9A, 0x43, 0x20, 0x9D, 0x3F,- 0xC3, 0x7D, 0x3F, 0xD1, 0xF7, 0x45, 0x55, 0xDE,- 0x67, 0xAB, 0xAC, 0xB9, 0x51, 0xB0, 0x06, 0xF4- },- {- 0x04, 0x42, 0xFB, 0xDD, 0x5B, 0x58, 0x49, 0x6E,- 0xC7, 0x81, 0x59, 0xCC, 0xAA, 0x88, 0x7C, 0x88,- 0xA8, 0x61, 0xFC, 0xCA, 0x70, 0xE7, 0xAB, 0xC9,- 0x76, 0xF2, 0x4C, 0x11, 0x58, 0x8B, 0xE6, 0xEE- },- {- 0xA7, 0x3E, 0x68, 0xBB, 0x18, 0xB0, 0x07, 0x64,- 0x8E, 0x76, 0xB5, 0x52, 0x8D, 0x1E, 0x50, 0xE7,- 0xFA, 0x65, 0x4D, 0xA3, 0x97, 0x0E, 0xC3, 0x49,- 0xBF, 0x59, 0x1A, 0x30, 0xD9, 0x32, 0xC8, 0xF6- },- {- 0x84, 0x9C, 0xF8, 0x73, 0x16, 0x2B, 0xA7, 0x2C,- 0x4B, 0x80, 0x08, 0xE6, 0x8F, 0x93, 0x2F, 0xB3,- 0xA0, 0x15, 0xA7, 0x4F, 0xCF, 0x95, 0x71, 0x98,- 0xD5, 0x6A, 0x0D, 0xC4, 0x62, 0x5A, 0x74, 0xF5- },- {- 0xA6, 0xDE, 0xC6, 0xFC, 0x89, 0x49, 0x34, 0x9C,- 0x4E, 0x9A, 0x9C, 0x62, 0x36, 0x87, 0xFB, 0xA4,- 0xC9, 0xB2, 0x75, 0xBD, 0xB2, 0x30, 0x50, 0x9B,- 0x72, 0xE3, 0xD6, 0x71, 0x19, 0x14, 0xE2, 0xD8- },- {- 0x58, 0xAF, 0xC2, 0xB2, 0x4A, 0x19, 0xFD, 0xBF,- 0x76, 0xA0, 0x9B, 0x70, 0xB1, 0xE3, 0xB7, 0x7F,- 0xCB, 0xD4, 0x06, 0x50, 0x01, 0xD9, 0x63, 0x66,- 0x40, 0xEB, 0x5A, 0x26, 0x28, 0xF4, 0x42, 0xCC- },- {- 0x47, 0x3A, 0x43, 0xAA, 0x1D, 0x6A, 0x02, 0x87,- 0x67, 0x43, 0x2A, 0x83, 0x0A, 0xD1, 0x22, 0x1E,- 0x02, 0x9C, 0x58, 0x9A, 0xF9, 0xFD, 0x4D, 0x68,- 0xD5, 0x6C, 0x4F, 0xB8, 0x20, 0x25, 0x93, 0x52- },- {- 0xA0, 0xAE, 0xB4, 0xA5, 0xAD, 0x89, 0x9A, 0xF2,- 0xE2, 0x91, 0xB2, 0xE7, 0x9D, 0xBB, 0x6B, 0x0B,- 0xF5, 0x6B, 0x58, 0x44, 0x67, 0x6B, 0x95, 0x5D,- 0x94, 0x5B, 0x6C, 0x4A, 0xE1, 0xC0, 0x1E, 0xED- },- {- 0xCF, 0xC3, 0x02, 0x9A, 0x9E, 0xEB, 0x15, 0x22,- 0x22, 0xD9, 0x66, 0x53, 0x49, 0x2E, 0x46, 0xCA,- 0x64, 0xCA, 0x4F, 0x0D, 0x64, 0x68, 0x30, 0x28,- 0xD3, 0xAE, 0xE5, 0xA4, 0x9C, 0xB4, 0x71, 0x63- },- {- 0x74, 0x67, 0xCF, 0x77, 0x61, 0xCD, 0x9F, 0x55,- 0x61, 0x8D, 0x30, 0xC9, 0xD8, 0xC5, 0xB4, 0x1E,- 0x47, 0x01, 0x51, 0x0C, 0x7D, 0x16, 0xAB, 0x4E,- 0x5D, 0x89, 0xA5, 0xD7, 0x71, 0x46, 0xB0, 0x92- },- {- 0xC0, 0x16, 0xD8, 0x42, 0x4E, 0x53, 0x1E, 0xFC,- 0x57, 0x37, 0xC0, 0x3F, 0xC9, 0x0A, 0x5E, 0xFC,- 0x9F, 0x90, 0x22, 0xE4, 0xD5, 0xBA, 0x3B, 0x06,- 0x95, 0xF7, 0xAE, 0x53, 0x82, 0x60, 0xC2, 0xEE- },- {- 0x5D, 0x38, 0x11, 0x89, 0xE6, 0x00, 0x0F, 0xC1,- 0x17, 0xC7, 0x1F, 0x59, 0xF7, 0x86, 0xFB, 0x4B,- 0x79, 0xFD, 0xD4, 0xEC, 0x5D, 0x4C, 0xD3, 0x0A,- 0xAC, 0x21, 0x57, 0xF7, 0x5D, 0xEA, 0xD7, 0x78- },- {- 0x7C, 0x9C, 0xDD, 0x15, 0xC4, 0xC9, 0xAB, 0xCA,- 0xCB, 0xFE, 0x6F, 0x66, 0x4A, 0x7F, 0x5F, 0x8B,- 0x2E, 0x25, 0x91, 0x83, 0x29, 0x1A, 0xE5, 0xCC,- 0x91, 0x30, 0xA0, 0xB2, 0x41, 0xE5, 0x73, 0x7F- },- {- 0xB8, 0x81, 0x31, 0x72, 0xF5, 0x21, 0x8A, 0xC3,- 0xEB, 0x68, 0x7B, 0xC4, 0xAF, 0xAF, 0xF8, 0x3F,- 0xBC, 0xA4, 0xE9, 0xC1, 0xA4, 0x62, 0x96, 0x33,- 0x01, 0xDD, 0x44, 0x59, 0x85, 0x01, 0x50, 0xA2- },- {- 0xE3, 0xD1, 0x30, 0xE3, 0x6A, 0x02, 0x8E, 0xA8,- 0x0C, 0x57, 0xA2, 0xAA, 0x48, 0x19, 0xFD, 0x34,- 0xE4, 0xDB, 0xBE, 0xB1, 0x4A, 0x49, 0x58, 0x94,- 0xB1, 0x5A, 0x87, 0x87, 0xDB, 0x1A, 0x9F, 0x9C- },- {- 0xFF, 0xF1, 0xB4, 0x40, 0x0F, 0x48, 0x9E, 0x07,- 0xD2, 0x23, 0x51, 0xC1, 0xF0, 0x95, 0x65, 0xE2,- 0x65, 0xB6, 0x8A, 0xD2, 0x9F, 0x63, 0x29, 0x87,- 0x9E, 0x6B, 0x5F, 0x7F, 0x6B, 0x41, 0x93, 0x50- },- {- 0x55, 0x9E, 0xD5, 0xBB, 0x3E, 0x5F, 0x39, 0x85,- 0xFB, 0x57, 0x82, 0x28, 0xBF, 0x8C, 0x0F, 0x0B,- 0x17, 0x3F, 0x8D, 0x11, 0x53, 0xFA, 0xEB, 0x9F,- 0xEC, 0x75, 0x6F, 0xFD, 0x18, 0xA8, 0x72, 0x38- },- {- 0x88, 0x13, 0x12, 0x53, 0x01, 0x4D, 0x23, 0xC5,- 0xE3, 0x8E, 0x78, 0xBD, 0xA1, 0x94, 0x55, 0xD8,- 0xA0, 0x23, 0xBD, 0x7A, 0x7E, 0x72, 0x74, 0x57,- 0xA1, 0x52, 0xA8, 0x1D, 0x0B, 0x17, 0x18, 0xA7- },- {- 0xF4, 0xD3, 0xFA, 0xE7, 0xCD, 0xE6, 0xBB, 0x66,- 0x71, 0x5A, 0x19, 0x8F, 0xA4, 0x8D, 0x21, 0x0C,- 0x10, 0xF8, 0xDF, 0x32, 0x04, 0xAE, 0x5E, 0x33,- 0xA6, 0x02, 0x46, 0x7F, 0x1B, 0x62, 0x26, 0x85- },- {- 0xE6, 0x2B, 0x62, 0x2A, 0xC8, 0xA2, 0x13, 0x66,- 0xBF, 0x2D, 0xED, 0x30, 0xF4, 0x08, 0x2A, 0x53,- 0xE7, 0x7A, 0x9A, 0xA6, 0x96, 0xB1, 0xF3, 0xEE,- 0x8C, 0xFE, 0x99, 0xC5, 0x93, 0x12, 0xD9, 0xC7- },- {- 0x3D, 0x39, 0xFF, 0xA8, 0x55, 0x12, 0xC3, 0xC8,- 0x89, 0x0D, 0x4B, 0xDF, 0x31, 0x88, 0x9C, 0xA6,- 0x6E, 0x5C, 0xEC, 0xB6, 0x3C, 0xFE, 0xED, 0x57,- 0xB9, 0x26, 0x37, 0x08, 0xE7, 0x4C, 0x55, 0x0B- },- {- 0xB1, 0x70, 0x3B, 0x8A, 0x00, 0xE2, 0x61, 0x24,- 0x97, 0xD1, 0x1C, 0x64, 0x9D, 0x15, 0x0A, 0x6C,- 0x96, 0x3B, 0xF4, 0xFD, 0x38, 0xFE, 0xB1, 0xC3,- 0x81, 0xFE, 0x0D, 0x9B, 0x04, 0xC0, 0x2B, 0x22- },- {- 0x12, 0xFB, 0xAD, 0x9D, 0x37, 0x82, 0x81, 0x2D,- 0x71, 0x17, 0x9A, 0x50, 0xFB, 0xD9, 0xB4, 0x56,- 0x6C, 0x7B, 0x06, 0xF5, 0xD7, 0x7C, 0x6F, 0x32,- 0x97, 0x17, 0xFB, 0x4A, 0xE2, 0xC5, 0xB4, 0xEC- },- {- 0x76, 0x8B, 0x65, 0x9A, 0x82, 0x4B, 0x43, 0xF9,- 0xCA, 0x56, 0x60, 0xB9, 0xDD, 0xF0, 0x5F, 0x8B,- 0xA2, 0xBC, 0x49, 0x93, 0x86, 0x6B, 0x7C, 0x9B,- 0xE6, 0x87, 0x91, 0xF5, 0xB2, 0x46, 0x44, 0xB3- },- {- 0xC0, 0x20, 0x4E, 0x23, 0xCA, 0x86, 0xBE, 0x20,- 0x5E, 0xED, 0x0C, 0xC3, 0xDD, 0x72, 0x25, 0xCE,- 0x5F, 0xFE, 0x1E, 0xE1, 0x2D, 0xAC, 0xB9, 0x3C,- 0x5D, 0x06, 0x29, 0xB7, 0x69, 0x9C, 0xD7, 0x33- },- {- 0xF4, 0x32, 0x96, 0x96, 0x1F, 0x8E, 0xAE, 0xCC,- 0xD8, 0x54, 0x41, 0x3D, 0xC5, 0xAD, 0xDA, 0x62,- 0x39, 0x3A, 0x34, 0x46, 0x27, 0xE8, 0x6C, 0x06,- 0x6E, 0x79, 0x07, 0x55, 0x00, 0x40, 0x74, 0x4F- },- {- 0x82, 0xF4, 0x46, 0x9E, 0x80, 0x78, 0x90, 0x21,- 0xC6, 0x1D, 0xB7, 0xE3, 0x2F, 0x36, 0xAC, 0xBE,- 0x59, 0x1A, 0x64, 0xF2, 0x60, 0x59, 0x26, 0x57,- 0x70, 0xAE, 0x65, 0x8D, 0x62, 0xBD, 0xE7, 0xEF- },- {- 0x2A, 0x85, 0x67, 0x1A, 0x55, 0xC8, 0x9F, 0xA1,- 0x56, 0xE2, 0x96, 0xF7, 0x5D, 0xF1, 0xC7, 0xDB,- 0xAB, 0x17, 0x8E, 0xBB, 0xA6, 0x52, 0x04, 0xA7,- 0xE8, 0x17, 0x8C, 0x91, 0x6A, 0xD0, 0x87, 0xF8- },- {- 0x33, 0xE2, 0x45, 0x00, 0x28, 0x08, 0xF6, 0x93,- 0x4B, 0x9B, 0xE3, 0xA6, 0xFA, 0x8E, 0x86, 0x70,- 0xC9, 0x0B, 0xAA, 0x62, 0x57, 0x17, 0xB9, 0x20,- 0x1E, 0xB9, 0xB9, 0xDD, 0x91, 0x2F, 0x5C, 0xE2- },- {- 0x58, 0xEE, 0x5E, 0x79, 0x91, 0x84, 0xAD, 0x9D,- 0xA9, 0xA1, 0x7C, 0x5B, 0x46, 0xA4, 0x81, 0x0E,- 0x28, 0xBD, 0xD0, 0x8C, 0x35, 0x81, 0x63, 0x4C,- 0x83, 0x50, 0x30, 0x53, 0x9B, 0x79, 0x54, 0x4D- },- {- 0x26, 0xD8, 0xFA, 0x08, 0xDB, 0x30, 0x8E, 0xDF,- 0x2F, 0x96, 0xF8, 0x2A, 0xF6, 0xB6, 0x0C, 0x17,- 0xD8, 0xF1, 0xFF, 0x85, 0x8C, 0x52, 0xF2, 0xD0,- 0xF3, 0x83, 0x10, 0x78, 0x12, 0x75, 0x26, 0xA3- },- {- 0x25, 0xA5, 0x8D, 0xF4, 0x03, 0x92, 0x47, 0xA2,- 0x2F, 0x68, 0xFF, 0x2B, 0x71, 0x76, 0x6B, 0x7B,- 0x56, 0x00, 0xDD, 0xF4, 0x01, 0xD9, 0x9F, 0xF2,- 0xC1, 0x95, 0x5A, 0xE7, 0xBB, 0x43, 0xE5, 0x6A- },- {- 0xBE, 0x43, 0xE8, 0x68, 0x61, 0x60, 0xE9, 0x07,- 0xBA, 0x54, 0x7D, 0x5A, 0x87, 0x9D, 0x10, 0xF7,- 0x88, 0xAF, 0xC8, 0x42, 0xB8, 0xEB, 0xB9, 0xF3,- 0xF7, 0x88, 0x53, 0x25, 0x15, 0x91, 0x2A, 0xE4- },- {- 0xAA, 0x4A, 0xCB, 0x95, 0xD8, 0x79, 0x19, 0x2A,- 0x69, 0x08, 0xE8, 0x8A, 0xE3, 0xD6, 0x58, 0x9F,- 0x4E, 0x3E, 0xB3, 0xD4, 0xE0, 0x3A, 0x80, 0x6C,- 0xCD, 0xB9, 0xB5, 0xD6, 0xA9, 0x58, 0x6F, 0xDF- },- {- 0x84, 0x66, 0xD5, 0xE4, 0x4C, 0xE9, 0x5B, 0x4F,- 0xA1, 0x79, 0x99, 0x24, 0x44, 0xB8, 0xC2, 0x48,- 0x5B, 0x88, 0x64, 0x48, 0xA6, 0xDC, 0xCF, 0xCF,- 0x0B, 0xC3, 0x0B, 0xC5, 0xF0, 0xF5, 0x6B, 0x01- },- {- 0x00, 0x56, 0xD7, 0xE0, 0xAC, 0x33, 0x35, 0x57,- 0x83, 0x65, 0x9B, 0x38, 0xEC, 0x8B, 0xEC, 0xCB,- 0xF7, 0x83, 0x93, 0x99, 0x67, 0xFE, 0x37, 0xAE,- 0xAC, 0xF3, 0x69, 0xDD, 0xB6, 0x70, 0xAD, 0xA0- },- {- 0x90, 0x4F, 0x42, 0xF3, 0x45, 0x53, 0x0A, 0xC8,- 0xA3, 0x52, 0xD0, 0x9B, 0x68, 0x72, 0xC5, 0xBC,- 0xA3, 0x66, 0x1A, 0xBC, 0xA6, 0xCA, 0x64, 0xC8,- 0x09, 0x9F, 0x2F, 0xB6, 0x86, 0x7C, 0x30, 0xFE- },- {- 0xA8, 0xC3, 0xBF, 0x46, 0xF0, 0xB8, 0x8B, 0xBD,- 0x16, 0xFD, 0xA4, 0xA8, 0xB5, 0xCA, 0x81, 0xF5,- 0x24, 0x35, 0x20, 0xC3, 0x85, 0xD3, 0x8C, 0x0B,- 0x4D, 0x23, 0x52, 0xAB, 0x34, 0xEA, 0x35, 0xE6- },- {- 0x8D, 0x33, 0x17, 0xFC, 0x60, 0x6E, 0x56, 0x6D,- 0x30, 0x2E, 0xDA, 0xB5, 0x5E, 0x80, 0x16, 0x11,- 0xD8, 0xC1, 0x3F, 0x4A, 0x9A, 0x19, 0xD1, 0x85,- 0x97, 0x8D, 0xEF, 0x72, 0x83, 0x9C, 0xDA, 0xA3- },- {- 0x97, 0x38, 0x80, 0x11, 0xF5, 0x7A, 0x49, 0x86,- 0x90, 0xEC, 0x79, 0x88, 0xEF, 0xF9, 0x03, 0xFF,- 0x9B, 0x23, 0x58, 0xF5, 0xB6, 0x1B, 0xAA, 0x20,- 0xF7, 0x32, 0x90, 0xD6, 0x29, 0x6C, 0x1C, 0x0B- },- {- 0xCF, 0xB8, 0x0C, 0xAB, 0x89, 0x90, 0x95, 0x08,- 0x09, 0x12, 0x3F, 0xBF, 0x85, 0xE9, 0x76, 0x45,- 0x47, 0x08, 0xE0, 0xAF, 0xED, 0x69, 0x8E, 0x33,- 0x52, 0xA3, 0x16, 0x35, 0x90, 0x9D, 0xB3, 0xE5- },- {- 0x0D, 0xAA, 0xCA, 0x55, 0x13, 0x2A, 0x23, 0x5B,- 0x83, 0x1A, 0x5E, 0xFF, 0x4E, 0xA4, 0x67, 0xCD,- 0x10, 0xAF, 0x44, 0x20, 0x08, 0x47, 0x73, 0x5A,- 0x1F, 0xFD, 0x51, 0xFA, 0x37, 0xEA, 0xA2, 0xA2- },- {- 0x69, 0xB2, 0x14, 0x97, 0xEB, 0xB8, 0x24, 0xBA,- 0x66, 0x53, 0x68, 0x18, 0x88, 0x25, 0xE6, 0xF6,- 0xF1, 0x4C, 0xF2, 0xC3, 0xF7, 0xB5, 0x53, 0x0B,- 0xB3, 0x4F, 0xA6, 0x58, 0xEE, 0xD9, 0xA7, 0x39- },- {- 0xB9, 0xA1, 0x9F, 0x50, 0x9B, 0xE0, 0x3F, 0xBC,- 0x40, 0xE2, 0x43, 0xA5, 0x8A, 0x3D, 0xED, 0x11,- 0xF0, 0xD5, 0x1F, 0x80, 0xE3, 0xE2, 0x9A, 0x50,- 0x56, 0x44, 0xCC, 0x05, 0x74, 0x38, 0x14, 0xEC- },- {- 0xC4, 0xBC, 0xB2, 0x00, 0x25, 0x55, 0xD5, 0x44,- 0xFD, 0x0B, 0x02, 0x77, 0x06, 0x23, 0x89, 0x1E,- 0x70, 0xEE, 0xEC, 0x77, 0x44, 0x86, 0x5D, 0xD6,- 0x45, 0x5A, 0xD6, 0x65, 0xCC, 0x82, 0xE8, 0x61- },- {- 0x91, 0x2D, 0x24, 0xDC, 0x3D, 0x69, 0x23, 0xA4,- 0x83, 0xC2, 0x63, 0xEB, 0xA8, 0x1B, 0x7A, 0x87,- 0x97, 0xF2, 0x3C, 0xBF, 0x2F, 0x78, 0xB5, 0x1E,- 0x22, 0x26, 0x63, 0x9F, 0x84, 0xA5, 0x90, 0x47- },- {- 0x56, 0x82, 0x7A, 0x18, 0x88, 0x3A, 0xFD, 0xF9,- 0xCE, 0xEC, 0x56, 0x2B, 0x20, 0x66, 0xD8, 0xAC,- 0xB2, 0xC1, 0x95, 0x05, 0xEC, 0xE6, 0xF7, 0xA8,- 0x3E, 0x9F, 0x33, 0x46, 0xCB, 0xB8, 0x28, 0xC9- },- {- 0x25, 0x1D, 0x8D, 0x09, 0xFC, 0x48, 0xDD, 0x1D,- 0x6A, 0xF8, 0xFF, 0xDF, 0x39, 0x50, 0x91, 0xA4,- 0x6E, 0x05, 0xB8, 0xB7, 0xC5, 0xEC, 0x0C, 0x79,- 0xB6, 0x8A, 0x89, 0x04, 0xC8, 0x27, 0xBD, 0xEA- },- {- 0xC2, 0xD1, 0x4D, 0x69, 0xFD, 0x0B, 0xBD, 0x1C,- 0x0F, 0xE8, 0xC8, 0x45, 0xD5, 0xFD, 0x6A, 0x8F,- 0x74, 0x01, 0x51, 0xB1, 0xD8, 0xEB, 0x4D, 0x26,- 0x36, 0x4B, 0xB0, 0x2D, 0xAE, 0x0C, 0x13, 0xBC- },- {- 0x2E, 0x5F, 0xE2, 0x1F, 0x8F, 0x1B, 0x63, 0x97,- 0xA3, 0x8A, 0x60, 0x3D, 0x60, 0xB6, 0xF5, 0x3C,- 0x3B, 0x5D, 0xB2, 0x0A, 0xA5, 0x6C, 0x6D, 0x44,- 0xBE, 0xBD, 0x48, 0x28, 0xCE, 0x28, 0xF9, 0x0F- },- {- 0x25, 0x05, 0x9F, 0x10, 0x60, 0x5E, 0x67, 0xAD,- 0xFE, 0x68, 0x13, 0x50, 0x66, 0x6E, 0x15, 0xAE,- 0x97, 0x6A, 0x5A, 0x57, 0x1C, 0x13, 0xCF, 0x5B,- 0xC8, 0x05, 0x3F, 0x43, 0x0E, 0x12, 0x0A, 0x52- },-};-----static const uint8_t blake2sp_keyed_kat[KAT_LENGTH][BLAKE2S_OUTBYTES] =-{- {- 0x71, 0x5C, 0xB1, 0x38, 0x95, 0xAE, 0xB6, 0x78,- 0xF6, 0x12, 0x41, 0x60, 0xBF, 0xF2, 0x14, 0x65,- 0xB3, 0x0F, 0x4F, 0x68, 0x74, 0x19, 0x3F, 0xC8,- 0x51, 0xB4, 0x62, 0x10, 0x43, 0xF0, 0x9C, 0xC6- },- {- 0x40, 0x57, 0x8F, 0xFA, 0x52, 0xBF, 0x51, 0xAE,- 0x18, 0x66, 0xF4, 0x28, 0x4D, 0x3A, 0x15, 0x7F,- 0xC1, 0xBC, 0xD3, 0x6A, 0xC1, 0x3C, 0xBD, 0xCB,- 0x03, 0x77, 0xE4, 0xD0, 0xCD, 0x0B, 0x66, 0x03- },- {- 0x67, 0xE3, 0x09, 0x75, 0x45, 0xBA, 0xD7, 0xE8,- 0x52, 0xD7, 0x4D, 0x4E, 0xB5, 0x48, 0xEC, 0xA7,- 0xC2, 0x19, 0xC2, 0x02, 0xA7, 0xD0, 0x88, 0xDB,- 0x0E, 0xFE, 0xAC, 0x0E, 0xAC, 0x30, 0x42, 0x49- },- {- 0x8D, 0xBC, 0xC0, 0x58, 0x9A, 0x3D, 0x17, 0x29,- 0x6A, 0x7A, 0x58, 0xE2, 0xF1, 0xEF, 0xF0, 0xE2,- 0xAA, 0x42, 0x10, 0xB5, 0x8D, 0x1F, 0x88, 0xB8,- 0x6D, 0x7B, 0xA5, 0xF2, 0x9D, 0xD3, 0xB5, 0x83- },- {- 0xA9, 0xA9, 0x65, 0x2C, 0x8C, 0x67, 0x75, 0x94,- 0xC8, 0x72, 0x12, 0xD8, 0x9D, 0x5A, 0x75, 0xFB,- 0x31, 0xEF, 0x4F, 0x47, 0xC6, 0x58, 0x2C, 0xDE,- 0x5F, 0x1E, 0xF6, 0x6B, 0xD4, 0x94, 0x53, 0x3A- },- {- 0x05, 0xA7, 0x18, 0x0E, 0x59, 0x50, 0x54, 0x73,- 0x99, 0x48, 0xC5, 0xE3, 0x38, 0xC9, 0x5F, 0xE0,- 0xB7, 0xFC, 0x61, 0xAC, 0x58, 0xA7, 0x35, 0x74,- 0x74, 0x56, 0x33, 0xBB, 0xC1, 0xF7, 0x70, 0x31- },- {- 0x81, 0x4D, 0xE8, 0x31, 0x53, 0xB8, 0xD7, 0x5D,- 0xFA, 0xDE, 0x29, 0xFD, 0x39, 0xAC, 0x72, 0xDD,- 0x09, 0xCA, 0x0F, 0x9B, 0xC8, 0xB7, 0xAB, 0x6A,- 0x06, 0xBA, 0xEE, 0x7D, 0xD0, 0xF9, 0xF0, 0x83- },- {- 0xDF, 0xD4, 0x19, 0x44, 0x91, 0x29, 0xFF, 0x60,- 0x4F, 0x0A, 0x14, 0x8B, 0x4C, 0x7D, 0x68, 0xF1,- 0x17, 0x4F, 0x7D, 0x0F, 0x8C, 0x8D, 0x2C, 0xE7,- 0x7F, 0x44, 0x8F, 0xD3, 0x41, 0x9C, 0x6F, 0xB0- },- {- 0xB9, 0xED, 0x22, 0xE7, 0xDD, 0x8D, 0xD1, 0x4E,- 0xE8, 0xC9, 0x5B, 0x20, 0xE7, 0x63, 0x2E, 0x85,- 0x53, 0xA2, 0x68, 0xD9, 0xFF, 0x86, 0x33, 0xED,- 0x3C, 0x21, 0xD1, 0xB8, 0xC9, 0xA7, 0x0B, 0xE1- },- {- 0x95, 0xF0, 0x31, 0x67, 0x1A, 0x4E, 0x3C, 0x54,- 0x44, 0x1C, 0xEE, 0x9D, 0xBE, 0xF4, 0xB7, 0xAC,- 0xA4, 0x46, 0x18, 0xA3, 0xA3, 0x33, 0xAD, 0x74,- 0x06, 0xD1, 0x97, 0xAC, 0x5B, 0xA0, 0x79, 0x1A- },- {- 0xE2, 0x92, 0x5B, 0x9D, 0x5C, 0xA0, 0xFF, 0x62,- 0x88, 0xC5, 0xEA, 0x1A, 0xF2, 0xD2, 0x2B, 0x0A,- 0x6B, 0x79, 0xE2, 0xDA, 0xE0, 0x8B, 0xFD, 0x36,- 0xC3, 0xBE, 0x10, 0xBB, 0x8D, 0x71, 0xD8, 0x39- },- {- 0x16, 0x24, 0x9C, 0x74, 0x4E, 0x49, 0x51, 0x45,- 0x1D, 0x4C, 0x89, 0x4F, 0xB5, 0x9A, 0x3E, 0xCB,- 0x3F, 0xBF, 0xB7, 0xA4, 0x5F, 0x96, 0xF8, 0x5D,- 0x15, 0x80, 0xAC, 0x0B, 0x84, 0x2D, 0x96, 0xDA- },- {- 0x43, 0x2B, 0xC9, 0x1C, 0x52, 0xAC, 0xEB, 0x9D,- 0xAE, 0xD8, 0x83, 0x28, 0x81, 0x64, 0x86, 0x50,- 0xC1, 0xB8, 0x1D, 0x11, 0x7A, 0xBD, 0x68, 0xE0,- 0x84, 0x51, 0x50, 0x8A, 0x63, 0xBE, 0x00, 0x81- },- {- 0xCD, 0xE8, 0x20, 0x2B, 0xCF, 0xA3, 0xF3, 0xE9,- 0x5D, 0x79, 0xBA, 0xCC, 0x16, 0x5D, 0x52, 0x70,- 0x0E, 0xF7, 0x1D, 0x87, 0x4A, 0x3C, 0x63, 0x7E,- 0x63, 0x4F, 0x64, 0x44, 0x73, 0x72, 0x0D, 0x6B- },- {- 0x16, 0x21, 0x62, 0x1F, 0x5C, 0x3E, 0xE4, 0x46,- 0x89, 0x9D, 0x3C, 0x8A, 0xAE, 0x49, 0x17, 0xB1,- 0xE6, 0xDB, 0x4A, 0x0E, 0xD0, 0x42, 0x31, 0x5F,- 0xB2, 0xC1, 0x74, 0x82, 0x5E, 0x0A, 0x18, 0x19- },- {- 0x33, 0x6E, 0x8E, 0xBC, 0x71, 0xE2, 0x09, 0x5C,- 0x27, 0xF8, 0x64, 0xA3, 0x12, 0x1E, 0xFD, 0x0F,- 0xAA, 0x7A, 0x41, 0x28, 0x57, 0x25, 0xA5, 0x92,- 0xF6, 0x1B, 0xED, 0xED, 0x9D, 0xDE, 0x86, 0xED- },- {- 0x07, 0x9B, 0xE0, 0x41, 0x0E, 0x78, 0x9B, 0x36,- 0xEE, 0x7F, 0x55, 0xC1, 0x9F, 0xAA, 0xC6, 0x91,- 0x65, 0x6E, 0xB0, 0x52, 0x1F, 0x42, 0x94, 0x9B,- 0x84, 0xEE, 0x29, 0xFE, 0x2A, 0x0E, 0x7F, 0x36- },- {- 0x17, 0x27, 0x0C, 0x4F, 0x34, 0x88, 0x08, 0x2D,- 0x9F, 0xF9, 0x93, 0x7E, 0xAB, 0x3C, 0xA9, 0x9C,- 0x97, 0xC5, 0xB4, 0x59, 0x61, 0x47, 0x37, 0x2D,- 0xD4, 0xE9, 0x8A, 0xCF, 0x13, 0xDB, 0x28, 0x10- },- {- 0x18, 0x3C, 0x38, 0x75, 0x4D, 0x03, 0x41, 0xCE,- 0x07, 0xC1, 0x7A, 0x6C, 0xB6, 0xC2, 0xFD, 0x8B,- 0xBC, 0xC1, 0x40, 0x4F, 0xDD, 0x01, 0x41, 0x99,- 0xC7, 0x8B, 0xE1, 0xA9, 0x75, 0x59, 0xA9, 0x28- },- {- 0x6E, 0x52, 0xD7, 0x28, 0xA4, 0x05, 0xA6, 0xE1,- 0xF8, 0x75, 0x87, 0xBB, 0xC2, 0xAC, 0x91, 0xC5,- 0xC0, 0x9B, 0x2D, 0x82, 0x8A, 0xC8, 0x1E, 0x5C,- 0x4A, 0x81, 0xD0, 0x3D, 0xD4, 0xAA, 0x8D, 0x5C- },- {- 0xF4, 0xE0, 0x8E, 0x05, 0x9B, 0x74, 0x14, 0x4B,- 0xF9, 0x48, 0x14, 0x6D, 0x14, 0xA2, 0xC8, 0x1E,- 0x46, 0xDC, 0x15, 0xFF, 0x26, 0xEB, 0x52, 0x34,- 0x4C, 0xDD, 0x47, 0x4A, 0xBE, 0xA1, 0x4B, 0xC0- },- {- 0x0F, 0x2E, 0x0A, 0x10, 0x0E, 0xD8, 0xA1, 0x17,- 0x85, 0x96, 0x2A, 0xD4, 0x59, 0x6A, 0xF9, 0x55,- 0xE3, 0x0B, 0x9A, 0xEF, 0x93, 0x0A, 0x24, 0x8D,- 0xA9, 0x32, 0x2B, 0x70, 0x2D, 0x4B, 0x68, 0x72- },- {- 0x51, 0x90, 0xFC, 0xC7, 0x32, 0xF4, 0x04, 0xAA,- 0xD4, 0x36, 0x4A, 0xC7, 0x96, 0x0C, 0xFD, 0x5B,- 0x4E, 0x34, 0x86, 0x29, 0xC3, 0x72, 0xEE, 0xB3,- 0x25, 0xB5, 0xC6, 0xC7, 0xCB, 0xCE, 0x59, 0xAB- },- {- 0xC0, 0xC4, 0xCB, 0x86, 0xEA, 0x25, 0xEA, 0x95,- 0x7E, 0xEC, 0x5B, 0x22, 0xD2, 0x55, 0x0A, 0x16,- 0x49, 0xE6, 0xDF, 0xFA, 0x31, 0x6B, 0xB8, 0xF4,- 0xC9, 0x1B, 0x8F, 0xF7, 0xA2, 0x4B, 0x25, 0x31- },- {- 0x2C, 0x9E, 0xDA, 0x13, 0x5A, 0x30, 0xAE, 0xCA,- 0xF3, 0xAC, 0xB3, 0xD2, 0x3A, 0x30, 0x35, 0xFB,- 0xAB, 0xBA, 0x98, 0x33, 0x31, 0x65, 0xD8, 0x7F,- 0xCB, 0xF8, 0xFE, 0x10, 0x33, 0x6E, 0xCF, 0x20- },- {- 0x3C, 0xD6, 0x69, 0xE8, 0xD5, 0x62, 0x62, 0xA2,- 0x37, 0x13, 0x67, 0x22, 0x4D, 0xAE, 0x6D, 0x75,- 0x9E, 0xE1, 0x52, 0xC3, 0x15, 0x33, 0xB2, 0x63,- 0xFA, 0x2E, 0x64, 0x92, 0x08, 0x77, 0xB2, 0xA7- },- {- 0x18, 0xA9, 0xA0, 0xC2, 0xD0, 0xEA, 0x6C, 0x3B,- 0xB3, 0x32, 0x83, 0x0F, 0x89, 0x18, 0xB0, 0x68,- 0x4F, 0x5D, 0x39, 0x94, 0xDF, 0x48, 0x67, 0x46,- 0x2D, 0xD0, 0x6E, 0xF0, 0x86, 0x24, 0x24, 0xCC- },- {- 0x73, 0x90, 0xEA, 0x41, 0x04, 0xA9, 0xF4, 0xEE,- 0xA9, 0x0F, 0x81, 0xE2, 0x6A, 0x12, 0x9D, 0xCF,- 0x9F, 0x4A, 0xF3, 0x83, 0x52, 0xD9, 0xCB, 0x6A,- 0x81, 0x2C, 0xC8, 0x05, 0x69, 0x09, 0x05, 0x0E- },- {- 0xE4, 0x9E, 0x01, 0x14, 0xC6, 0x29, 0xB4, 0x94,- 0xB1, 0x1E, 0xA9, 0x8E, 0xCD, 0x40, 0x32, 0x73,- 0x1F, 0x15, 0x3B, 0x46, 0x50, 0xAC, 0xAC, 0xD7,- 0xE0, 0xF6, 0xE7, 0xDE, 0x3D, 0xF0, 0x19, 0x77- },- {- 0x27, 0xC5, 0x70, 0x2B, 0xE1, 0x04, 0xB3, 0xA9,- 0x4F, 0xC4, 0x34, 0x23, 0xAE, 0xEE, 0x83, 0xAC,- 0x3C, 0xA7, 0x3B, 0x7F, 0x87, 0x83, 0x9A, 0x6B,- 0x2E, 0x29, 0x60, 0x79, 0x03, 0xB7, 0xF2, 0x87- },- {- 0x81, 0xD2, 0xE1, 0x2E, 0xB2, 0xF4, 0x27, 0x60,- 0xC6, 0xE3, 0xBA, 0xA7, 0x8F, 0x84, 0x07, 0x3A,- 0xE6, 0xF5, 0x61, 0x60, 0x70, 0xFE, 0x25, 0xBE,- 0xDE, 0x7C, 0x7C, 0x82, 0x48, 0xAB, 0x1F, 0xBA- },- {- 0xFA, 0xB2, 0x35, 0xD5, 0x93, 0x48, 0xAB, 0x8C,- 0xE4, 0x9B, 0xEC, 0x77, 0xC0, 0xF1, 0x93, 0x28,- 0xFD, 0x04, 0x5D, 0xFD, 0x60, 0x8A, 0x53, 0x03,- 0x36, 0xDF, 0x4F, 0x94, 0xE1, 0x72, 0xA5, 0xC8- },- {- 0x8A, 0xAA, 0x8D, 0x80, 0x5C, 0x58, 0x88, 0x1F,- 0xF3, 0x79, 0xFB, 0xD4, 0x2C, 0x6B, 0xF6, 0xF1,- 0x4C, 0x6C, 0x73, 0xDF, 0x80, 0x71, 0xB3, 0xB2,- 0x28, 0x98, 0x11, 0x09, 0xCC, 0xC0, 0x15, 0xF9- },- {- 0x91, 0xFD, 0xD2, 0x62, 0x20, 0x39, 0x16, 0x39,- 0x47, 0x40, 0x95, 0x2B, 0xCE, 0x72, 0xB6, 0x4B,- 0xAB, 0xB6, 0xF7, 0x21, 0x34, 0x4D, 0xEE, 0x82,- 0x50, 0xBF, 0x0E, 0x46, 0xF1, 0xBA, 0x18, 0x8F- },- {- 0xF7, 0xE5, 0x7B, 0x8F, 0x85, 0xF4, 0x7D, 0x59,- 0x03, 0xAD, 0x4C, 0xCB, 0x8A, 0xF6, 0x2A, 0x3E,- 0x85, 0x8A, 0xAB, 0x2B, 0x8C, 0xC2, 0x26, 0x49,- 0x4F, 0x7B, 0x00, 0xBE, 0xDB, 0xF5, 0xB0, 0xD0- },- {- 0xF7, 0x6F, 0x21, 0xAD, 0xDA, 0xE9, 0x6A, 0x96,- 0x46, 0xFC, 0x06, 0xF9, 0xBF, 0x52, 0xAE, 0x08,- 0x48, 0xF1, 0x8C, 0x35, 0x26, 0xB1, 0x29, 0xE1,- 0x5B, 0x2C, 0x35, 0x5E, 0x2E, 0x79, 0xE5, 0xDA- },- {- 0x8A, 0xEB, 0x1C, 0x79, 0x5F, 0x34, 0x90, 0x01,- 0x5E, 0xF4, 0xCD, 0x61, 0xA2, 0x80, 0x7B, 0x23,- 0x0E, 0xFD, 0xC8, 0x46, 0x01, 0x73, 0xDA, 0xD0,- 0x26, 0xA4, 0xA0, 0xFC, 0xC2, 0xFB, 0xF2, 0x2A- },- {- 0xC5, 0x64, 0xFF, 0xC6, 0x23, 0x07, 0x77, 0x65,- 0xBB, 0x97, 0x87, 0x58, 0x56, 0x54, 0xCE, 0x74,- 0x5D, 0xBD, 0x10, 0x8C, 0xEF, 0x24, 0x8A, 0xB0,- 0x0A, 0xD1, 0xA2, 0x64, 0x7D, 0x99, 0x03, 0x87- },- {- 0xFE, 0x89, 0x42, 0xA3, 0xE5, 0xF5, 0xE8, 0xCD,- 0x70, 0x51, 0x04, 0xF8, 0x82, 0x10, 0x72, 0x6E,- 0x53, 0xDD, 0x7E, 0xB3, 0xF9, 0xA2, 0x02, 0xBF,- 0x93, 0x14, 0xB3, 0xB9, 0x06, 0x5E, 0xB7, 0x12- },- {- 0xDC, 0x29, 0x53, 0x59, 0xD4, 0x36, 0xEE, 0xA7,- 0x80, 0x84, 0xE7, 0xB0, 0x77, 0xFE, 0x09, 0xB1,- 0x9C, 0x5B, 0xF3, 0xD2, 0xA7, 0x96, 0xDA, 0xB0,- 0x19, 0xE4, 0x20, 0x05, 0x99, 0xFD, 0x82, 0x02- },- {- 0x70, 0xB3, 0xF7, 0x2F, 0x74, 0x90, 0x32, 0xE2,- 0x5E, 0x38, 0x3B, 0x96, 0x43, 0x78, 0xEA, 0x1C,- 0x54, 0x3E, 0x9C, 0x15, 0xDE, 0x3A, 0x27, 0xD8,- 0x6D, 0x2A, 0x9D, 0x22, 0x31, 0xEF, 0xF4, 0x8A- },- {- 0x79, 0x82, 0xB5, 0x4C, 0x08, 0xDB, 0x2B, 0xFB,- 0x6F, 0x45, 0xF3, 0x5B, 0xC3, 0x23, 0xBC, 0x09,- 0x37, 0x79, 0xB6, 0xBB, 0x0E, 0x3E, 0xEA, 0x3E,- 0x8C, 0x98, 0xB1, 0xDE, 0x99, 0xD3, 0xC5, 0x5E- },- {- 0x75, 0xE4, 0x16, 0x22, 0x57, 0x01, 0x4B, 0xED,- 0xCC, 0x05, 0xC2, 0x94, 0x4D, 0xCE, 0x0D, 0xF0,- 0xC3, 0x5E, 0xBA, 0x13, 0x19, 0x54, 0x06, 0x4F,- 0x6E, 0x4E, 0x09, 0x5F, 0xD0, 0x84, 0x45, 0xEE- },- {- 0x4A, 0x12, 0x9E, 0xA6, 0xCD, 0xBA, 0xBC, 0x2D,- 0x39, 0x24, 0x79, 0x37, 0x2F, 0x97, 0x5B, 0x9C,- 0xF5, 0xA1, 0xB7, 0xDE, 0xB6, 0x9A, 0x32, 0x66,- 0xF0, 0x3E, 0xBC, 0x6D, 0x11, 0x13, 0x93, 0xC4- },- {- 0x8F, 0xED, 0x70, 0xF2, 0x79, 0x55, 0xDC, 0x8A,- 0xD9, 0xF1, 0xB7, 0xB3, 0xF6, 0xF5, 0xDF, 0xBD,- 0x96, 0x2A, 0x33, 0x59, 0x2B, 0x42, 0xDE, 0x85,- 0x6D, 0x42, 0x1E, 0x29, 0x12, 0xBA, 0xB8, 0x6B- },- {- 0xE2, 0xF2, 0x06, 0x60, 0x37, 0x6F, 0x2B, 0x18,- 0x39, 0x66, 0x7C, 0xBF, 0xE5, 0xE1, 0x6E, 0xF0,- 0x75, 0xAC, 0x39, 0x43, 0x64, 0x4F, 0x35, 0x32,- 0x28, 0x2F, 0x8B, 0xB0, 0x72, 0x3B, 0x99, 0x86- },- {- 0xAB, 0xF8, 0x4C, 0x91, 0x3A, 0x83, 0xDF, 0x98,- 0xC7, 0x00, 0x29, 0x81, 0x9C, 0x06, 0x5F, 0x6D,- 0x6D, 0xE4, 0xF6, 0xD4, 0x3A, 0xBF, 0x60, 0x0D,- 0xAD, 0xE0, 0x35, 0xB2, 0x3B, 0xED, 0x7B, 0xAA- },- {- 0x45, 0x9C, 0x15, 0xD4, 0x85, 0x6C, 0x7E, 0xCF,- 0x82, 0x62, 0x03, 0x51, 0xC3, 0xC1, 0xC7, 0x6C,- 0x40, 0x3F, 0x3E, 0x97, 0x07, 0x74, 0x13, 0x87,- 0xE2, 0x99, 0x07, 0x3F, 0xB1, 0x70, 0x4B, 0x2B- },- {- 0x9A, 0xB9, 0x12, 0xED, 0xA0, 0x76, 0x8A, 0xBD,- 0xF8, 0x26, 0xB6, 0xE0, 0x5D, 0x0D, 0x73, 0x58,- 0x39, 0xE6, 0xA5, 0xF0, 0x2E, 0x04, 0xC4, 0xCC,- 0x75, 0x65, 0x0B, 0x2C, 0x8C, 0xAB, 0x67, 0x49- },- {- 0x47, 0x40, 0xEB, 0xEC, 0xAC, 0x90, 0x03, 0x1B,- 0xB7, 0xE6, 0x8E, 0x51, 0xC5, 0x53, 0x91, 0xAF,- 0xB1, 0x89, 0xB3, 0x17, 0xF2, 0xDE, 0x55, 0x87,- 0x66, 0xF7, 0x8F, 0x5C, 0xB7, 0x1F, 0x81, 0xB6- },- {- 0x3C, 0xC4, 0x7F, 0x0E, 0xF6, 0x48, 0x21, 0x58,- 0x7C, 0x93, 0x7C, 0xDD, 0xBA, 0x85, 0xC9, 0x93,- 0xD3, 0xCE, 0x2D, 0xD0, 0xCE, 0xD4, 0x0D, 0x3B,- 0xE3, 0x3C, 0xB7, 0xDC, 0x7E, 0xDA, 0xBC, 0xF1- },- {- 0x9F, 0x47, 0x6A, 0x22, 0xDB, 0x54, 0xD6, 0xBB,- 0x9B, 0xEF, 0xDB, 0x26, 0x0C, 0x66, 0x57, 0x8A,- 0xE1, 0xD8, 0xA5, 0xF8, 0x7D, 0x3D, 0x8C, 0x01,- 0x7F, 0xDB, 0x74, 0x75, 0x08, 0x0F, 0xA8, 0xE1- },- {- 0x8B, 0x68, 0xC6, 0xFB, 0x07, 0x06, 0xA7, 0x95,- 0xF3, 0xA8, 0x39, 0xD6, 0xFE, 0x25, 0xFD, 0x4A,- 0xA7, 0xF9, 0x2E, 0x66, 0x4F, 0x76, 0x2D, 0x61,- 0x53, 0x81, 0xBC, 0x85, 0x9A, 0xFA, 0x29, 0x2C- },- {- 0xF6, 0x40, 0xD2, 0x25, 0xA6, 0xBC, 0xD2, 0xFC,- 0x8A, 0xCC, 0xAF, 0xBE, 0xD5, 0xA8, 0x4B, 0x5B,- 0xBB, 0x5D, 0x8A, 0xE5, 0xDB, 0x06, 0xA1, 0x0B,- 0x6D, 0x9D, 0x93, 0x16, 0x0B, 0x39, 0x2E, 0xE0- },- {- 0x70, 0x48, 0x60, 0xA7, 0xF5, 0xBA, 0x68, 0xDB,- 0x27, 0x03, 0x1C, 0x15, 0xF2, 0x25, 0x50, 0x0D,- 0x69, 0x2A, 0xB2, 0x47, 0x53, 0x42, 0x81, 0xC4,- 0xF6, 0x84, 0xF6, 0xC6, 0xC8, 0xCD, 0x88, 0xC7- },- {- 0xC1, 0xA7, 0x5B, 0xDD, 0xA1, 0x2B, 0x8B, 0x2A,- 0xB1, 0xB9, 0x24, 0x84, 0x38, 0x58, 0x18, 0x3A,- 0x09, 0xD2, 0x02, 0x42, 0x1F, 0xDB, 0xCD, 0xF0,- 0xE6, 0x3E, 0xAE, 0x46, 0xF3, 0x7D, 0x91, 0xED- },- {- 0x9A, 0x8C, 0xAB, 0x7A, 0x5F, 0x2E, 0x57, 0x62,- 0x21, 0xA6, 0xA8, 0x5E, 0x5F, 0xDD, 0xEE, 0x75,- 0x67, 0x8E, 0x06, 0x53, 0x24, 0xA6, 0x1D, 0xB0,- 0x3A, 0x39, 0x26, 0x1D, 0xDF, 0x75, 0xE3, 0xF4- },- {- 0x05, 0xC2, 0xB2, 0x6B, 0x03, 0xCE, 0x6C, 0xA5,- 0x87, 0x1B, 0xE0, 0xDE, 0x84, 0xEE, 0x27, 0x86,- 0xA7, 0x9B, 0xCD, 0x9F, 0x30, 0x03, 0x3E, 0x81,- 0x9B, 0x4A, 0x87, 0xCC, 0xA2, 0x7A, 0xFC, 0x6A- },- {- 0xB0, 0xB0, 0x99, 0x3C, 0x6D, 0x0C, 0x6E, 0xD5,- 0xC3, 0x59, 0x04, 0x80, 0xF8, 0x65, 0xF4, 0x67,- 0xF4, 0x33, 0x1A, 0x58, 0xDD, 0x8E, 0x47, 0xBD,- 0x98, 0xEB, 0xBC, 0xDB, 0x8E, 0xB4, 0xF9, 0x4D- },- {- 0xE5, 0x7C, 0x10, 0x3C, 0xF7, 0xB6, 0xBB, 0xEB,- 0x8A, 0x0D, 0xC8, 0xF0, 0x48, 0x62, 0x5C, 0x3F,- 0x4C, 0xE4, 0xF1, 0xA5, 0xAD, 0x4D, 0x07, 0x9C,- 0x11, 0x87, 0xBF, 0xE9, 0xEE, 0x3B, 0x8A, 0x5F- },- {- 0xF1, 0x00, 0x23, 0xE1, 0x5F, 0x3B, 0x72, 0xB7,- 0x38, 0xAD, 0x61, 0xAE, 0x65, 0xAB, 0x9A, 0x07,- 0xE7, 0x77, 0x4E, 0x2D, 0x7A, 0xB0, 0x2D, 0xBA,- 0x4E, 0x0C, 0xAF, 0x56, 0x02, 0xC8, 0x01, 0x78- },- {- 0x9A, 0x8F, 0xB3, 0xB5, 0x38, 0xC1, 0xD6, 0xC4,- 0x50, 0x51, 0xFA, 0x9E, 0xD9, 0xB0, 0x7D, 0x3E,- 0x89, 0xB4, 0x43, 0x03, 0x30, 0x01, 0x4A, 0x1E,- 0xFA, 0x28, 0x23, 0xC0, 0x82, 0x3C, 0xF2, 0x37- },- {- 0x30, 0x75, 0xC5, 0xBC, 0x7C, 0x3A, 0xD7, 0xE3,- 0x92, 0x01, 0x01, 0xBC, 0x68, 0x99, 0xC5, 0x8E,- 0xA7, 0x01, 0x67, 0xA7, 0x77, 0x2C, 0xA2, 0x8E,- 0x38, 0xE2, 0xC1, 0xB0, 0xD3, 0x25, 0xE5, 0xA0- },- {- 0xE8, 0x55, 0x94, 0x70, 0x0E, 0x39, 0x22, 0xA1,- 0xE8, 0xE4, 0x1E, 0xB8, 0xB0, 0x64, 0xE7, 0xAC,- 0x6D, 0x94, 0x9D, 0x13, 0xB5, 0xA3, 0x45, 0x23,- 0xE5, 0xA6, 0xBE, 0xAC, 0x03, 0xC8, 0xAB, 0x29- },- {- 0x1D, 0x37, 0x01, 0xA5, 0x66, 0x1B, 0xD3, 0x1A,- 0xB2, 0x05, 0x62, 0xBD, 0x07, 0xB7, 0x4D, 0xD1,- 0x9A, 0xC8, 0xF3, 0x52, 0x4B, 0x73, 0xCE, 0x7B,- 0xC9, 0x96, 0xB7, 0x88, 0xAF, 0xD2, 0xF3, 0x17- },- {- 0x87, 0x4E, 0x19, 0x38, 0x03, 0x3D, 0x7D, 0x38,- 0x35, 0x97, 0xA2, 0xA6, 0x5F, 0x58, 0xB5, 0x54,- 0xE4, 0x11, 0x06, 0xF6, 0xD1, 0xD5, 0x0E, 0x9B,- 0xA0, 0xEB, 0x68, 0x5F, 0x6B, 0x6D, 0xA0, 0x71- },- {- 0x93, 0xF2, 0xF3, 0xD6, 0x9B, 0x2D, 0x36, 0x52,- 0x95, 0x56, 0xEC, 0xCA, 0xF9, 0xF9, 0x9A, 0xDB,- 0xE8, 0x95, 0xE1, 0x57, 0x22, 0x31, 0xE6, 0x49,- 0xB5, 0x05, 0x84, 0xB5, 0xD7, 0xD0, 0x8A, 0xF8- },- {- 0x06, 0xE0, 0x6D, 0x61, 0x0F, 0x2E, 0xEB, 0xBA,- 0x36, 0x76, 0x82, 0x3E, 0x77, 0x44, 0xD7, 0x51,- 0xAF, 0xF7, 0x30, 0x76, 0xED, 0x65, 0xF3, 0xCF,- 0xF5, 0xE7, 0x2F, 0xD2, 0x27, 0x99, 0x9C, 0x77- },- {- 0x8D, 0xF7, 0x57, 0xB3, 0xA1, 0xE0, 0xF4, 0x80,- 0xFA, 0x76, 0xC7, 0xF3, 0x58, 0xED, 0x03, 0x98,- 0xBE, 0x3F, 0x2A, 0x8F, 0x7B, 0x90, 0xEA, 0x8C,- 0x80, 0x75, 0x99, 0xDE, 0xDA, 0x1D, 0x05, 0x34- },- {- 0xEE, 0xC9, 0xC5, 0xC6, 0x3C, 0xC5, 0x16, 0x9D,- 0x96, 0x7B, 0xB1, 0x62, 0x4E, 0x9E, 0xE5, 0xCE,- 0xD9, 0x28, 0x97, 0x73, 0x6E, 0xFB, 0xD1, 0x57,- 0x54, 0x8D, 0x82, 0xE8, 0x7C, 0xC7, 0x2F, 0x25- },- {- 0xCC, 0x2B, 0x58, 0x32, 0xAD, 0x27, 0x2C, 0xC5,- 0x5C, 0x10, 0xD4, 0xF8, 0xC7, 0xF8, 0xBB, 0x38,- 0xE6, 0xE4, 0xEB, 0x92, 0x2F, 0x93, 0x86, 0x83,- 0x0F, 0x90, 0xB1, 0xE3, 0xDA, 0x39, 0x37, 0xD5- },- {- 0x36, 0x89, 0x85, 0xD5, 0x38, 0x7C, 0x0B, 0xFC,- 0x92, 0x8A, 0xC2, 0x54, 0xFA, 0x6D, 0x16, 0x67,- 0x3E, 0x70, 0x94, 0x75, 0x66, 0x96, 0x1B, 0x5F,- 0xB3, 0x32, 0x5A, 0x58, 0x8A, 0xB3, 0x17, 0x3A- },- {- 0xF1, 0xE4, 0x42, 0xAF, 0xB8, 0x72, 0x15, 0x1F,- 0x81, 0x34, 0x95, 0x6C, 0x54, 0x8A, 0xE3, 0x24,- 0x0D, 0x07, 0xE6, 0xE3, 0x38, 0xD4, 0xA7, 0xA6,- 0xAF, 0x8D, 0xA4, 0x11, 0x9A, 0xB0, 0xE2, 0xB0- },- {- 0xB0, 0x12, 0xC7, 0x54, 0x6A, 0x39, 0xC4, 0x0C,- 0xAD, 0xEC, 0xE4, 0xE0, 0x4E, 0x7F, 0x33, 0xC5,- 0x93, 0xAD, 0x18, 0x2E, 0xBC, 0x5A, 0x46, 0xD2,- 0xDB, 0xF4, 0xAD, 0x1A, 0x92, 0xF5, 0x9E, 0x7B- },- {- 0x6C, 0x60, 0x97, 0xCD, 0x20, 0x33, 0x09, 0x6B,- 0x4D, 0xF3, 0x17, 0xDE, 0x8A, 0x90, 0x8B, 0x7D,- 0x0C, 0x72, 0x94, 0x39, 0x0C, 0x5A, 0x39, 0x9C,- 0x30, 0x1B, 0xF2, 0xA2, 0x65, 0x2E, 0x82, 0x62- },- {- 0xBA, 0x83, 0xFE, 0xB5, 0x10, 0xB4, 0x9A, 0xDE,- 0x4F, 0xAE, 0xFB, 0xE9, 0x42, 0x78, 0x1E, 0xAF,- 0xD4, 0x1A, 0xD5, 0xD4, 0x36, 0x88, 0x85, 0x31,- 0xB6, 0x88, 0x59, 0xF2, 0x2C, 0x2D, 0x16, 0x4A- },- {- 0x5A, 0x06, 0x9E, 0x43, 0x92, 0x19, 0x5A, 0xC9,- 0xD2, 0x84, 0xA4, 0x7F, 0x3B, 0xD8, 0x54, 0xAF,- 0x8F, 0xD0, 0xD7, 0xFD, 0xC3, 0x48, 0x3D, 0x2C,- 0x5F, 0x34, 0x24, 0xCC, 0xFD, 0xA1, 0x5C, 0x8E- },- {- 0x7E, 0x88, 0xD6, 0x4B, 0xBB, 0xE2, 0x02, 0x4F,- 0x44, 0x54, 0xBA, 0x13, 0x98, 0xB3, 0xD8, 0x65,- 0x2D, 0xCE, 0xC8, 0x20, 0xB1, 0x4C, 0x3B, 0x0A,- 0xBF, 0xBF, 0x0F, 0x4F, 0x33, 0x06, 0xBB, 0x5E- },- {- 0xF8, 0x74, 0x2F, 0xF4, 0x6D, 0xFD, 0xF3, 0xEC,- 0x82, 0x64, 0xF9, 0x94, 0x5B, 0x20, 0x41, 0x94,- 0x62, 0xF0, 0x69, 0xE8, 0x33, 0xC5, 0x94, 0xEC,- 0x80, 0xFF, 0xAC, 0x5E, 0x7E, 0x51, 0x34, 0xF9- },- {- 0xD3, 0xE0, 0xB7, 0x38, 0xD2, 0xE9, 0x2F, 0x3C,- 0x47, 0xC7, 0x94, 0x66, 0x66, 0x09, 0xC0, 0xF5,- 0x50, 0x4F, 0x67, 0xEC, 0x4E, 0x76, 0x0E, 0xEE,- 0xCC, 0xF8, 0x64, 0x4E, 0x68, 0x33, 0x34, 0x11- },- {- 0x0C, 0x90, 0xCE, 0x10, 0xED, 0xF0, 0xCE, 0x1D,- 0x47, 0xEE, 0xB5, 0x0B, 0x5B, 0x7A, 0xFF, 0x8E,- 0xE8, 0xA4, 0x3B, 0x64, 0xA8, 0x89, 0xC1, 0xC6,- 0xC6, 0xB8, 0xE3, 0x1A, 0x3C, 0xFC, 0x45, 0xEE- },- {- 0x83, 0x91, 0x7A, 0xC1, 0xCD, 0xAD, 0xE8, 0xF0,- 0xE3, 0xBF, 0x42, 0x6F, 0xEA, 0xC1, 0x38, 0x8B,- 0x3F, 0xCB, 0xE3, 0xE1, 0xBF, 0x98, 0x79, 0x8C,- 0x81, 0x58, 0xBF, 0x75, 0x8E, 0x8D, 0x5D, 0x4E- },- {- 0xDC, 0x8E, 0xB0, 0xC0, 0x13, 0xFA, 0x9D, 0x06,- 0x4E, 0xE3, 0x76, 0x23, 0x36, 0x9F, 0xB3, 0x94,- 0xAF, 0x97, 0x4B, 0x1A, 0xAC, 0x82, 0x40, 0x5B,- 0x88, 0x97, 0x6C, 0xD8, 0xFC, 0xA1, 0x25, 0x30- },- {- 0x9A, 0xF4, 0xFC, 0x92, 0xEA, 0x8D, 0x6B, 0x5F,- 0xE7, 0x99, 0x0E, 0x3A, 0x02, 0x70, 0x1E, 0xC2,- 0x2B, 0x2D, 0xFD, 0x71, 0x00, 0xB9, 0x0D, 0x05,- 0x51, 0x86, 0x94, 0x17, 0x95, 0x5E, 0x44, 0xC8- },- {- 0xC7, 0x22, 0xCE, 0xC1, 0x31, 0xBA, 0xA1, 0x63,- 0xF4, 0x7E, 0x4B, 0x33, 0x9E, 0x1F, 0xB9, 0xB4,- 0xAC, 0xA2, 0x48, 0xC4, 0x75, 0x93, 0x45, 0xEA,- 0xDB, 0xD6, 0xC6, 0xA7, 0xDD, 0xB5, 0x04, 0x77- },- {- 0x18, 0x37, 0xB1, 0x20, 0xD4, 0xE4, 0x04, 0x6C,- 0x6D, 0xE8, 0xCC, 0xAF, 0x09, 0xF1, 0xCA, 0xF3,- 0x02, 0xAD, 0x56, 0x23, 0x4E, 0x6B, 0x42, 0x2C,- 0xE9, 0x0A, 0x61, 0xBF, 0x06, 0xAE, 0xE4, 0x3D- },- {- 0x87, 0xAC, 0x9D, 0x0F, 0x8A, 0x0B, 0x11, 0xBF,- 0xED, 0xD6, 0x99, 0x1A, 0x6D, 0xAF, 0x34, 0xC8,- 0xAA, 0x5D, 0x7E, 0x8A, 0xE1, 0xB9, 0xDF, 0x4A,- 0xF7, 0x38, 0x00, 0x5F, 0xE7, 0x8C, 0xE9, 0x3C- },- {- 0xE2, 0x1F, 0xB6, 0x68, 0xEB, 0xB8, 0xBF, 0x2D,- 0x82, 0x08, 0x6D, 0xED, 0xCB, 0x3A, 0x53, 0x71,- 0xC2, 0xC4, 0x6F, 0xA1, 0xAC, 0x11, 0xD2, 0xE2,- 0xC5, 0x66, 0xD1, 0x4A, 0xD3, 0xC3, 0x65, 0x3F- },- {- 0x5A, 0x9A, 0x69, 0x81, 0x5E, 0x4D, 0x3E, 0xB7,- 0x72, 0xED, 0x90, 0x8F, 0xE6, 0x58, 0xCE, 0x50,- 0x87, 0x31, 0x0E, 0xC1, 0xD5, 0x0C, 0xB9, 0x4F,- 0x56, 0x28, 0x33, 0x9A, 0x61, 0xDC, 0xD9, 0xEE- },- {- 0xAA, 0xC2, 0x85, 0xF1, 0x20, 0x8F, 0x70, 0xA6,- 0x47, 0x97, 0xD0, 0xA9, 0x40, 0x0D, 0xA6, 0x46,- 0x53, 0x30, 0x18, 0x38, 0xFE, 0xF6, 0x69, 0x0B,- 0x87, 0xCD, 0xA9, 0x15, 0x9E, 0xE0, 0x7E, 0xF4- },- {- 0x05, 0x64, 0x3C, 0x1C, 0x6F, 0x26, 0x59, 0x25,- 0xA6, 0x50, 0x93, 0xF9, 0xDE, 0x8A, 0x19, 0x1C,- 0x4F, 0x6F, 0xD1, 0x41, 0x8F, 0xBF, 0x66, 0xBE,- 0x80, 0x59, 0xA9, 0x1B, 0xA8, 0xDC, 0xDA, 0x61- },- {- 0x1C, 0x6C, 0xDE, 0x5B, 0x78, 0x10, 0x3C, 0x9E,- 0x6F, 0x04, 0x6D, 0xFE, 0x30, 0xF5, 0x12, 0x1C,- 0xF9, 0xD4, 0x03, 0x9E, 0xFE, 0x22, 0x25, 0x40,- 0xA4, 0x1B, 0xBC, 0x06, 0xE4, 0x69, 0xFE, 0xB6- },- {- 0xB4, 0x9B, 0xB4, 0x6D, 0x1B, 0x19, 0x3B, 0x04,- 0x5E, 0x74, 0x12, 0x05, 0x9F, 0xE7, 0x2D, 0x55,- 0x25, 0x52, 0xA8, 0xFB, 0x6C, 0x36, 0x41, 0x07,- 0x23, 0xDC, 0x7D, 0x05, 0xFC, 0xCE, 0xDE, 0xD3- },- {- 0xB6, 0x12, 0xD3, 0xD2, 0x1F, 0xC4, 0xDE, 0x3C,- 0x79, 0x1A, 0xF7, 0x35, 0xE5, 0x9F, 0xB7, 0x17,- 0xD8, 0x39, 0x72, 0x3B, 0x42, 0x50, 0x8E, 0x9E,- 0xBF, 0x78, 0x06, 0xD9, 0x3E, 0x9C, 0x83, 0x7F- },- {- 0x7C, 0x33, 0x90, 0xA3, 0xE5, 0xCB, 0x27, 0xD1,- 0x86, 0x8B, 0xA4, 0x55, 0xCF, 0xEB, 0x32, 0x22,- 0xFD, 0xE2, 0x7B, 0xCD, 0xA4, 0xBF, 0x24, 0x8E,- 0x3D, 0x29, 0xCF, 0x1F, 0x34, 0x32, 0x9F, 0x25- },- {- 0xBD, 0x42, 0xEE, 0xA7, 0xB3, 0x54, 0x86, 0xCD,- 0xD0, 0x90, 0x7C, 0xB4, 0x71, 0x2E, 0xDE, 0x2F,- 0x4D, 0xEE, 0xCC, 0xBC, 0xA1, 0x91, 0x60, 0x38,- 0x65, 0xA1, 0xCC, 0x80, 0x9F, 0x12, 0xB4, 0x46- },- {- 0xD1, 0xDD, 0x62, 0x01, 0x74, 0x0C, 0xFA, 0xAD,- 0x53, 0xCE, 0xCC, 0xB7, 0x56, 0xB1, 0x10, 0xF3,- 0xD5, 0x0F, 0x81, 0x7B, 0x43, 0xD7, 0x55, 0x95,- 0x57, 0xE5, 0x7A, 0xAD, 0x14, 0x3A, 0x85, 0xD9- },- {- 0x58, 0x29, 0x64, 0x3C, 0x1B, 0x10, 0xE1, 0xC8,- 0xCC, 0xF2, 0x0C, 0x9B, 0x4A, 0xF8, 0x21, 0xEA,- 0x05, 0x2D, 0x7F, 0x0F, 0x7C, 0x22, 0xF7, 0x38,- 0x0B, 0xBB, 0xCF, 0xAF, 0xB9, 0x77, 0xE2, 0x1F- },- {- 0xFC, 0x4C, 0xF2, 0xA7, 0xFB, 0xE0, 0xB1, 0xE8,- 0xAE, 0xFB, 0xE4, 0xB4, 0xB7, 0x9E, 0xD8, 0x4E,- 0xC9, 0x7B, 0x03, 0x4F, 0x51, 0xB4, 0xE9, 0x7F,- 0x76, 0x0B, 0x20, 0x63, 0x97, 0x65, 0xB9, 0x33- },- {- 0x4D, 0x7C, 0x3B, 0x34, 0x38, 0xA0, 0xBD, 0xA2,- 0x8E, 0x7A, 0x96, 0xE4, 0x20, 0x27, 0xD8, 0x13,- 0xE8, 0x8A, 0xE6, 0x28, 0x85, 0x49, 0x98, 0x33,- 0xD3, 0xC5, 0xF6, 0x35, 0x9E, 0xF7, 0xED, 0xBC- },- {- 0x34, 0xCB, 0xD3, 0x20, 0x68, 0xEF, 0x7E, 0x82,- 0x09, 0x9E, 0x58, 0x0B, 0xF9, 0xE2, 0x64, 0x23,- 0xE9, 0x81, 0xE3, 0x1B, 0x1B, 0xBC, 0xE6, 0x1A,- 0xEA, 0xB1, 0x4C, 0x32, 0xA2, 0x73, 0xE4, 0xCB- },- {- 0xA0, 0x5D, 0xDA, 0x7D, 0x0D, 0xA9, 0xE0, 0x94,- 0xAE, 0x22, 0x53, 0x3F, 0x79, 0xE7, 0xDC, 0xCD,- 0x26, 0xB1, 0x75, 0x7C, 0xEF, 0xB9, 0x5B, 0xCF,- 0x62, 0xC4, 0xFF, 0x9C, 0x26, 0x92, 0xE1, 0xC0- },- {- 0x22, 0x4C, 0xCF, 0xFA, 0x7C, 0xCA, 0x4C, 0xE3,- 0x4A, 0xFD, 0x47, 0xF6, 0x2A, 0xDE, 0x53, 0xC5,- 0xE8, 0x48, 0x9B, 0x04, 0xAC, 0x9C, 0x41, 0xF7,- 0xFA, 0xD0, 0xC8, 0xED, 0xEB, 0x89, 0xE9, 0x41- },- {- 0x6B, 0xC6, 0x07, 0x64, 0x83, 0xAA, 0x11, 0xC0,- 0x7F, 0xBA, 0x55, 0xC0, 0xF9, 0xA1, 0xB5, 0xDA,- 0x87, 0xEC, 0xBF, 0xFE, 0xA7, 0x55, 0x98, 0xCC,- 0x31, 0x8A, 0x51, 0x4C, 0xEC, 0x7B, 0x3B, 0x6A- },- {- 0x9A, 0x03, 0x60, 0xE2, 0x3A, 0x22, 0xF4, 0xF7,- 0x6C, 0x0E, 0x95, 0x28, 0xDA, 0xFD, 0x12, 0x9B,- 0xB4, 0x67, 0x5F, 0xB8, 0x8D, 0x44, 0xEA, 0xF8,- 0x57, 0x77, 0x30, 0x0C, 0xEC, 0x9B, 0xCC, 0x79- },- {- 0x79, 0x01, 0x99, 0xB4, 0xCA, 0x90, 0xDE, 0xDC,- 0xCF, 0xE3, 0x24, 0x74, 0xE8, 0x5B, 0x17, 0x4F,- 0x06, 0x9E, 0x35, 0x42, 0xBE, 0x31, 0x04, 0xC1,- 0x12, 0x5C, 0x2F, 0xDB, 0xD6, 0x9D, 0x32, 0xC7- },- {- 0x55, 0x83, 0x99, 0x25, 0x83, 0x4C, 0xA3, 0xE8,- 0x25, 0xE9, 0x92, 0x41, 0x87, 0x4D, 0x16, 0xD6,- 0xC2, 0x62, 0x36, 0x29, 0xC4, 0xC2, 0xAD, 0xDD,- 0xF0, 0xDB, 0xA0, 0x1E, 0x6C, 0xE8, 0xA0, 0xDC- },- {- 0x61, 0x5F, 0xF8, 0x46, 0xD9, 0x93, 0x00, 0x7D,- 0x38, 0xDE, 0x1A, 0xEC, 0xB3, 0x17, 0x82, 0x89,- 0xDE, 0xD0, 0x9E, 0x6B, 0xB5, 0xCB, 0xD6, 0x0F,- 0x69, 0xC6, 0xAA, 0x36, 0x38, 0x30, 0x20, 0xF7- },- {- 0xF0, 0xE4, 0x0B, 0x4E, 0xD4, 0x0D, 0x34, 0x85,- 0x1E, 0x72, 0xB4, 0xEE, 0x4D, 0x00, 0xEA, 0x6A,- 0x40, 0xEA, 0x1C, 0x1B, 0xF9, 0xE5, 0xC2, 0x69,- 0x71, 0x0C, 0x9D, 0x51, 0xCB, 0xB8, 0xA3, 0xC9- },- {- 0x0B, 0x07, 0xB2, 0x33, 0x3B, 0x08, 0xD0, 0x8C,- 0x11, 0xCA, 0x34, 0xAB, 0x44, 0x9B, 0x71, 0xD2,- 0x9A, 0x0F, 0x43, 0xE1, 0xF7, 0x78, 0xE0, 0x73,- 0xE7, 0x90, 0x06, 0xCC, 0xB7, 0x30, 0xED, 0x62- },- {- 0xD1, 0xF4, 0xC2, 0x9D, 0x9F, 0x23, 0xEA, 0x35,- 0xEC, 0x40, 0x35, 0xB3, 0x77, 0xD5, 0x06, 0x53,- 0x8E, 0x72, 0x8B, 0xC7, 0x39, 0xC1, 0x45, 0x96,- 0x80, 0xCF, 0x1C, 0xC6, 0x94, 0x24, 0x92, 0x4D- },- {- 0x12, 0x79, 0xCF, 0x6F, 0x66, 0x9F, 0x92, 0xF6,- 0xBF, 0xC2, 0x5D, 0x60, 0x5B, 0x94, 0x40, 0xC7,- 0xDC, 0xCB, 0xD2, 0x5D, 0xF2, 0x8D, 0xC7, 0x35,- 0x3A, 0xBC, 0x1C, 0x05, 0x30, 0x40, 0x5D, 0xC4- },- {- 0x1F, 0xA0, 0xAF, 0x00, 0x77, 0x5D, 0xC2, 0xCE,- 0x76, 0x50, 0x6D, 0x32, 0x80, 0xF4, 0x72, 0xD2,- 0xF6, 0xFF, 0x97, 0xA2, 0x15, 0x1F, 0xAA, 0x82,- 0x79, 0x42, 0xFE, 0xA4, 0x4A, 0xD0, 0xBA, 0x1F- },- {- 0x3E, 0x1A, 0xD5, 0x4A, 0x5F, 0x83, 0x5B, 0x98,- 0x3B, 0xD2, 0xAA, 0xB0, 0xED, 0x2A, 0x4C, 0x0B,- 0xDD, 0x72, 0x16, 0x20, 0x9C, 0x36, 0xA7, 0x9E,- 0x9E, 0x2A, 0xAB, 0xB9, 0x9F, 0xAF, 0x35, 0x12- },- {- 0xC6, 0xED, 0x39, 0xE2, 0xD8, 0xB6, 0x36, 0xEC,- 0xCB, 0xA2, 0x45, 0xEF, 0x4E, 0x88, 0x64, 0xF4,- 0xCD, 0x94, 0x6B, 0xE2, 0x16, 0xB9, 0xBE, 0x48,- 0x30, 0x3E, 0x08, 0xB9, 0x2D, 0xD0, 0x94, 0x34- },- {- 0xE2, 0x47, 0x36, 0xC1, 0x3E, 0xCB, 0x9F, 0x36,- 0xA0, 0xD8, 0x29, 0xD4, 0x79, 0x8D, 0x76, 0x99,- 0xC1, 0x4C, 0xC6, 0x5B, 0x6D, 0xC4, 0x4E, 0xD6,- 0xF1, 0x0C, 0xD4, 0x85, 0x3D, 0x6E, 0x07, 0x57- },- {- 0x38, 0x9B, 0xE8, 0x80, 0x52, 0xA3, 0x81, 0x27,- 0x2C, 0x6D, 0xF7, 0x41, 0xA8, 0x8A, 0xD3, 0x49,- 0xB7, 0x12, 0x71, 0x84, 0x35, 0x48, 0x0A, 0x81,- 0x90, 0xB7, 0x04, 0x77, 0x1D, 0x2D, 0xE6, 0x37- },- {- 0x88, 0x9F, 0x2D, 0x57, 0x8A, 0x5D, 0xAE, 0xFD,- 0x34, 0x1C, 0x21, 0x09, 0x84, 0xE1, 0x26, 0xD1,- 0xD9, 0x6D, 0xA2, 0xDE, 0xE3, 0xC8, 0x1F, 0x7A,- 0x60, 0x80, 0xBF, 0x84, 0x56, 0x9B, 0x31, 0x14- },- {- 0xE9, 0x36, 0x09, 0x5B, 0x9B, 0x98, 0x2F, 0xFC,- 0x85, 0x6D, 0x2F, 0x52, 0x76, 0xA4, 0xE5, 0x29,- 0xEC, 0x73, 0x95, 0xDA, 0x31, 0x6D, 0x62, 0x87,- 0x02, 0xFB, 0x28, 0x1A, 0xDA, 0x6F, 0x38, 0x99- },- {- 0xEF, 0x89, 0xCE, 0x1D, 0x6F, 0x8B, 0x48, 0xEA,- 0x5C, 0xD6, 0xAE, 0xAB, 0x6A, 0x83, 0xD0, 0xCC,- 0x98, 0xC9, 0xA3, 0xA2, 0x07, 0xA1, 0x08, 0x57,- 0x32, 0xF0, 0x47, 0xD9, 0x40, 0x38, 0xC2, 0x88- },- {- 0xF9, 0x25, 0x01, 0x6D, 0x79, 0xF2, 0xAC, 0xA8,- 0xC4, 0x9E, 0xDF, 0xCD, 0x66, 0x21, 0xD5, 0xBE,- 0x3C, 0x8C, 0xEC, 0x61, 0xBD, 0x58, 0x71, 0xD8,- 0xC1, 0xD3, 0xA5, 0x65, 0xF3, 0x5E, 0x0C, 0x9F- },- {- 0x63, 0xE8, 0x63, 0x4B, 0x75, 0x7A, 0x38, 0xF9,- 0x2B, 0x92, 0xFD, 0x23, 0x89, 0x3B, 0xA2, 0x99,- 0x85, 0x3A, 0x86, 0x13, 0x67, 0x9F, 0xDF, 0x7E,- 0x05, 0x11, 0x09, 0x5C, 0x0F, 0x04, 0x7B, 0xCA- },- {- 0xCF, 0x2C, 0xCA, 0x07, 0x72, 0xB7, 0x05, 0xEB,- 0x57, 0xD2, 0x89, 0x43, 0xF8, 0x3D, 0x35, 0x3F,- 0xE2, 0x91, 0xE5, 0xB3, 0x77, 0x78, 0x0B, 0x37,- 0x4C, 0x8B, 0xA4, 0x66, 0x58, 0x30, 0xBE, 0x87- },- {- 0x46, 0xDF, 0x5B, 0x87, 0xC8, 0x0E, 0x7E, 0x40,- 0x74, 0xAE, 0xE6, 0x85, 0x59, 0x42, 0x47, 0x42,- 0x84, 0x5B, 0x9B, 0x35, 0x0F, 0x51, 0xBA, 0x55,- 0xB0, 0x74, 0xBB, 0xAE, 0x4C, 0x62, 0x6A, 0xAB- },- {- 0x65, 0x8A, 0xA4, 0xF9, 0xD2, 0xBC, 0xBD, 0x4F,- 0x7F, 0x8E, 0xB6, 0x3E, 0x68, 0xF5, 0x36, 0x7E,- 0xDB, 0xC5, 0x00, 0xA0, 0xB1, 0xFB, 0xB4, 0x1E,- 0x9D, 0xF1, 0x41, 0xBC, 0xBA, 0x8F, 0xCD, 0x53- },- {- 0xEE, 0x80, 0x55, 0x50, 0x08, 0xA7, 0x16, 0x55,- 0xE0, 0x81, 0x09, 0x2B, 0xBA, 0x6F, 0x67, 0x0E,- 0xD9, 0x8A, 0xF9, 0xA0, 0x9F, 0xB5, 0xAF, 0xB9,- 0x4C, 0xBC, 0x5C, 0x75, 0x48, 0x14, 0xDB, 0x4F- },- {- 0x2C, 0x5F, 0x9D, 0x04, 0x82, 0x20, 0xB0, 0x41,- 0xB6, 0xD4, 0x52, 0x4B, 0x44, 0x90, 0xCF, 0x8C,- 0x66, 0xFC, 0xB8, 0xE1, 0x4B, 0x0D, 0x64, 0x88,- 0x7A, 0xA1, 0xE4, 0x76, 0x1A, 0x60, 0x2B, 0x39- },- {- 0x44, 0xCB, 0x63, 0x11, 0xD0, 0x75, 0x0B, 0x7E,- 0x33, 0xF7, 0x33, 0x3A, 0xA7, 0x8A, 0xAC, 0xA9,- 0xC3, 0x4A, 0xD5, 0xF7, 0x9C, 0x1B, 0x15, 0x91,- 0xEC, 0x33, 0x95, 0x1E, 0x69, 0xC4, 0xC4, 0x61- },- {- 0x0C, 0x6C, 0xE3, 0x2A, 0x3E, 0xA0, 0x56, 0x12,- 0xC5, 0xF8, 0x09, 0x0F, 0x6A, 0x7E, 0x87, 0xF5,- 0xAB, 0x30, 0xE4, 0x1B, 0x70, 0x7D, 0xCB, 0xE5,- 0x41, 0x55, 0x62, 0x0A, 0xD7, 0x70, 0xA3, 0x40- },- {- 0xC6, 0x59, 0x38, 0xDD, 0x3A, 0x05, 0x3C, 0x72,- 0x9C, 0xF5, 0xB7, 0xC8, 0x9F, 0x39, 0x0B, 0xFE,- 0xBB, 0x51, 0x12, 0x76, 0x6B, 0xB0, 0x0A, 0xA5,- 0xFA, 0x31, 0x64, 0xDF, 0xDF, 0x3B, 0x56, 0x47- },- {- 0x7D, 0xE7, 0xF0, 0xD5, 0x9A, 0x90, 0x39, 0xAF,- 0xF3, 0xAA, 0xF3, 0x2C, 0x3E, 0xE5, 0x2E, 0x79,- 0x17, 0x53, 0x57, 0x29, 0x06, 0x21, 0x68, 0xD2,- 0x49, 0x0B, 0x6B, 0x6C, 0xE2, 0x44, 0xB3, 0x80- },- {- 0x89, 0x58, 0x98, 0xF5, 0x3A, 0x8F, 0x39, 0xE4,- 0x24, 0x10, 0xDA, 0x77, 0xB6, 0xC4, 0x81, 0x5B,- 0x0B, 0xB2, 0x39, 0x5E, 0x39, 0x22, 0xF5, 0xBE,- 0xD0, 0xE1, 0xFB, 0xF2, 0xA4, 0xC6, 0xDF, 0xEB- },- {- 0xC9, 0x05, 0xA8, 0x49, 0x84, 0x34, 0x8A, 0x64,- 0xDB, 0x1F, 0x54, 0x20, 0x83, 0x74, 0x8A, 0xD9,- 0x0A, 0x4B, 0xAD, 0x98, 0x33, 0xCB, 0x6D, 0xA3,- 0x87, 0x29, 0x34, 0x31, 0xF1, 0x9E, 0x7C, 0x9C- },- {- 0xED, 0x37, 0xD1, 0xA4, 0xD0, 0x6C, 0x90, 0xD1,- 0x95, 0x78, 0x48, 0x66, 0x7E, 0x95, 0x48, 0xFE,- 0xBB, 0x5D, 0x42, 0x3E, 0xAB, 0x4F, 0x56, 0x78,- 0x5C, 0xC4, 0xB5, 0x41, 0x6B, 0x78, 0x00, 0x08- },- {- 0x0B, 0xC6, 0x5D, 0x99, 0x97, 0xFB, 0x73, 0x4A,- 0x56, 0x1F, 0xB1, 0xE9, 0xF8, 0xC0, 0x95, 0x8A,- 0x02, 0xC7, 0xA4, 0xDB, 0xD0, 0x96, 0xEB, 0xEF,- 0x1A, 0x17, 0x51, 0xAE, 0xD9, 0x59, 0xEE, 0xD7- },- {- 0x7C, 0x5F, 0x43, 0x2E, 0xB8, 0xB7, 0x35, 0x2A,- 0x94, 0x94, 0xDE, 0xA4, 0xD5, 0x3C, 0x21, 0x38,- 0x70, 0x31, 0xCE, 0x70, 0xE8, 0x5D, 0x94, 0x08,- 0xFC, 0x6F, 0x8C, 0xD9, 0x8A, 0x6A, 0xAA, 0x1E- },- {- 0xB8, 0xBF, 0x8E, 0x2C, 0x34, 0xE0, 0x33, 0x98,- 0x36, 0x39, 0x90, 0x9E, 0xAA, 0x37, 0x64, 0x0D,- 0x87, 0x7B, 0x04, 0x8F, 0xE2, 0x99, 0xB4, 0x70,- 0xAF, 0x2D, 0x0B, 0xA8, 0x2A, 0x5F, 0x14, 0xC0- },- {- 0x88, 0xA9, 0xDD, 0x13, 0xD5, 0xDA, 0xDB, 0xDE,- 0xE6, 0xBF, 0xF7, 0xEE, 0x1E, 0xF8, 0xC7, 0x1C,- 0xC1, 0x93, 0xAA, 0x4B, 0xF3, 0xE8, 0x4F, 0x8F,- 0xE8, 0x0C, 0xB0, 0x75, 0x68, 0x3C, 0x07, 0x79- },- {- 0x9A, 0xED, 0xB8, 0x87, 0x6D, 0xD2, 0x1C, 0x8C,- 0x84, 0xD2, 0xE7, 0x02, 0xA1, 0x36, 0x25, 0x98,- 0x04, 0x62, 0xF6, 0x8B, 0xF0, 0xA1, 0xB7, 0x25,- 0x4A, 0xD8, 0x06, 0xC3, 0x84, 0x03, 0xC9, 0xDE- },- {- 0xD0, 0x97, 0x57, 0x3D, 0xF2, 0xD6, 0xB2, 0x48,- 0x9A, 0x47, 0x94, 0x84, 0x86, 0x98, 0x00, 0xA1,- 0xF8, 0x33, 0xEA, 0x16, 0x9E, 0xFF, 0x32, 0xAE,- 0x3C, 0xE6, 0x3A, 0x20, 0x79, 0x54, 0x8D, 0x78- },- {- 0xD1, 0x8F, 0x27, 0xA3, 0xE5, 0x55, 0xD7, 0xF9,- 0x1A, 0x00, 0x7C, 0x67, 0xAC, 0xEE, 0xDE, 0x39,- 0x1F, 0x75, 0xA6, 0x1F, 0xA4, 0x2A, 0x0B, 0x45,- 0x66, 0xEB, 0x58, 0x2C, 0xA0, 0x5E, 0xBC, 0xE7- },- {- 0xDF, 0x1D, 0xAA, 0x90, 0xB1, 0x70, 0x23, 0x13,- 0xE6, 0xA5, 0x90, 0x1C, 0x7A, 0xFC, 0x5E, 0xD9,- 0x65, 0x77, 0x17, 0xA7, 0x15, 0xFA, 0x53, 0xA4,- 0x18, 0x9E, 0xC1, 0xE5, 0xDF, 0x29, 0x3A, 0x68- },- {- 0x04, 0xE3, 0xA4, 0x96, 0xB6, 0x69, 0x96, 0xC6,- 0x6E, 0x32, 0x91, 0x9E, 0xD1, 0xF9, 0x4C, 0x36,- 0xEE, 0xBB, 0xF2, 0x40, 0x63, 0x3A, 0x2F, 0x73,- 0x98, 0x45, 0xF0, 0x29, 0x5D, 0x34, 0xAF, 0xBA- },- {- 0x8C, 0x45, 0xD8, 0x8C, 0x4E, 0x9C, 0x9D, 0x0C,- 0x8C, 0x67, 0x7F, 0xE4, 0x8F, 0xA5, 0x44, 0x9B,- 0xA3, 0x01, 0x78, 0xD4, 0x0A, 0xF0, 0xF0, 0x21,- 0x79, 0x21, 0xC6, 0x2E, 0x4B, 0x60, 0xCD, 0xD3- },- {- 0xE1, 0x49, 0xA6, 0xB1, 0x3B, 0xDE, 0xDE, 0xA2,- 0xEE, 0xEE, 0x00, 0x9C, 0xE9, 0x44, 0x5E, 0x8D,- 0xCF, 0x76, 0xB7, 0x6E, 0x55, 0xA5, 0x01, 0xD8,- 0xF5, 0xB4, 0x3F, 0xF8, 0x96, 0x79, 0x6A, 0xD1- },- {- 0xA8, 0x37, 0xC4, 0xC7, 0xC6, 0xF5, 0xCF, 0xB9,- 0x9E, 0x10, 0x85, 0xFD, 0x43, 0x28, 0x7A, 0x41,- 0x05, 0xCB, 0x28, 0xB7, 0x6F, 0xC3, 0x8B, 0x60,- 0x55, 0xC5, 0xDC, 0xFF, 0x78, 0xB8, 0x25, 0x65- },- {- 0x42, 0x41, 0x1F, 0x28, 0x78, 0x0B, 0x4F, 0x16,- 0x38, 0x54, 0x0B, 0x87, 0x05, 0x21, 0xEC, 0x45,- 0xBC, 0xEB, 0x1E, 0x0C, 0x71, 0x31, 0xF7, 0xE1,- 0xC4, 0x67, 0x2E, 0x43, 0x6C, 0x88, 0xC8, 0xE9- },- {- 0x34, 0xB4, 0xE8, 0x76, 0x76, 0x94, 0x71, 0xDF,- 0x55, 0x2E, 0x55, 0x22, 0xCE, 0xA7, 0x84, 0xFA,- 0x53, 0xAC, 0x61, 0xBE, 0xDE, 0x8C, 0xFE, 0x29,- 0x14, 0x09, 0xE6, 0x8B, 0x69, 0xE8, 0x77, 0x6F- },- {- 0x8F, 0x31, 0xD6, 0x37, 0xA9, 0x1D, 0xBD, 0x0E,- 0xCB, 0x0B, 0xA0, 0xE6, 0x94, 0xBE, 0xC1, 0x44,- 0x76, 0x58, 0xCE, 0x6C, 0x27, 0xEA, 0x9B, 0x95,- 0xFF, 0x36, 0x70, 0x1C, 0xAF, 0x36, 0xF0, 0x01- },- {- 0xB5, 0xC8, 0x95, 0xEB, 0x07, 0x1E, 0x3D, 0x38,- 0x52, 0x8D, 0x47, 0x5D, 0x3B, 0xB0, 0xBA, 0x88,- 0xB7, 0x17, 0x95, 0xE4, 0x0A, 0x98, 0x2E, 0x2A,- 0xC2, 0xD8, 0x44, 0x22, 0xA0, 0xF2, 0x68, 0x5D- },- {- 0xE9, 0x06, 0x25, 0x7C, 0x41, 0x9D, 0x94, 0x1E,- 0xD2, 0xB8, 0xA9, 0xC1, 0x27, 0x81, 0xDB, 0x97,- 0x59, 0xA3, 0xFC, 0xF3, 0xDC, 0x7C, 0xDB, 0x03,- 0x15, 0x99, 0xE1, 0x08, 0x6B, 0x67, 0x2F, 0x10- },- {- 0x98, 0xAD, 0x24, 0x39, 0x7C, 0x6E, 0xAE, 0x4C,- 0xF7, 0x3E, 0xA8, 0xBB, 0xEF, 0x5A, 0x0B, 0x74,- 0xD2, 0x1A, 0xD1, 0x5F, 0x33, 0x92, 0x0F, 0x44,- 0x07, 0x0A, 0x98, 0xBD, 0xF5, 0x3D, 0x0B, 0x3A- },- {- 0xDD, 0x51, 0x0C, 0xA5, 0x5B, 0x11, 0x70, 0xF9,- 0xCE, 0xFD, 0xBB, 0x16, 0xFC, 0x14, 0x52, 0x62,- 0xAA, 0x36, 0x3A, 0x87, 0x0A, 0x01, 0xE1, 0xBC,- 0x4F, 0xBE, 0x40, 0x23, 0x4B, 0x4B, 0x6F, 0x2F- },- {- 0xF2, 0xD8, 0xD9, 0x31, 0xB9, 0x2E, 0x1C, 0xB6,- 0x98, 0xE5, 0x6E, 0xD0, 0x28, 0x19, 0xEA, 0x11,- 0xD2, 0x66, 0x19, 0xB8, 0x3A, 0x62, 0x09, 0xAD,- 0x67, 0x22, 0x53, 0x68, 0xFE, 0x11, 0x95, 0x71- },- {- 0xE4, 0x63, 0x70, 0x55, 0xDB, 0x91, 0xF9, 0x43,- 0x7C, 0xF4, 0x60, 0xEF, 0x40, 0xB5, 0x14, 0x5F,- 0x69, 0x98, 0x26, 0x6A, 0x5E, 0x74, 0xE9, 0x6A,- 0x00, 0x78, 0x2C, 0x62, 0xCF, 0x30, 0xCF, 0x1C- },- {- 0x35, 0x63, 0x53, 0x0A, 0x89, 0xD3, 0x2B, 0x75,- 0xF7, 0x8D, 0x83, 0xE9, 0x87, 0x2A, 0xD4, 0xC5,- 0x75, 0xF5, 0x20, 0x39, 0x9D, 0x65, 0x03, 0x5D,- 0xED, 0x99, 0xE5, 0xEE, 0xC5, 0x80, 0x71, 0x50- },- {- 0x8E, 0x79, 0xF9, 0x2C, 0x86, 0x5B, 0xEB, 0x3E,- 0x1C, 0xDB, 0xF0, 0x8F, 0x75, 0x4A, 0x26, 0x06,- 0xE8, 0x53, 0x49, 0x05, 0x3D, 0x66, 0xD6, 0x16,- 0x02, 0x4A, 0x81, 0x3F, 0xCA, 0x54, 0x1A, 0x4D- },- {- 0x86, 0x42, 0x26, 0xF2, 0x83, 0x9C, 0x76, 0xB1,- 0xD5, 0xF7, 0xC1, 0x3D, 0x98, 0xC2, 0xA5, 0x15,- 0x8C, 0x2A, 0xBB, 0x71, 0xD9, 0xD8, 0xF0, 0xFA,- 0x1F, 0x7C, 0x3F, 0x74, 0x68, 0x00, 0x16, 0x03- },- {- 0xD3, 0xE3, 0xF5, 0xB8, 0xCE, 0xEB, 0xB1, 0x11,- 0x84, 0x80, 0x35, 0x35, 0x90, 0x0B, 0x6E, 0xED,- 0xDA, 0x60, 0x6E, 0xEB, 0x36, 0x97, 0x51, 0xA7,- 0xCD, 0xA3, 0x6C, 0xA3, 0x02, 0x29, 0xFB, 0x02- },- {- 0x8C, 0x7D, 0x6B, 0x98, 0x72, 0x69, 0x16, 0x90,- 0x31, 0xF7, 0x1F, 0xD7, 0xE4, 0xC4, 0x45, 0x01,- 0x2D, 0x3E, 0x6A, 0x3C, 0x88, 0x09, 0xF6, 0x47,- 0x9B, 0xD6, 0x67, 0xCF, 0x31, 0x1E, 0x27, 0x6E- },- {- 0xB9, 0x04, 0xB5, 0x71, 0x1B, 0xF1, 0x9E, 0x85,- 0x32, 0xF7, 0xAD, 0x64, 0x27, 0x41, 0x0A, 0x62,- 0xA1, 0xF7, 0x7F, 0x77, 0xB9, 0xB6, 0xD7, 0x1D,- 0x2F, 0xC4, 0x3B, 0xC9, 0x0F, 0x73, 0x23, 0x5A- },- {- 0x45, 0x36, 0x63, 0x43, 0x15, 0xC8, 0x67, 0x28,- 0xF5, 0xAB, 0x74, 0x49, 0xEB, 0x2D, 0x04, 0x02,- 0x0E, 0x9E, 0xAE, 0x8D, 0xD6, 0x79, 0x55, 0x00,- 0xE9, 0xEC, 0x9A, 0x00, 0x66, 0x38, 0x6E, 0x69- },- {- 0xFD, 0x5E, 0x49, 0xFE, 0xD4, 0x9D, 0xC4, 0x4B,- 0xDE, 0x89, 0xF4, 0x60, 0xA9, 0x50, 0x19, 0x1E,- 0xBB, 0x06, 0x7C, 0x69, 0x8A, 0x3F, 0x21, 0xEA,- 0x14, 0x30, 0x8C, 0x74, 0x13, 0xB9, 0x16, 0x81- },- {- 0x31, 0xF0, 0x1D, 0x03, 0x0B, 0x9B, 0x22, 0xD0,- 0x0A, 0x0F, 0x71, 0xED, 0x2C, 0xEB, 0x5D, 0x2D,- 0xC8, 0x1A, 0xF2, 0xC2, 0x4B, 0xF5, 0x67, 0x0F,- 0xDE, 0x19, 0xA6, 0x85, 0xE8, 0xD1, 0x39, 0x2E- },- {- 0x5F, 0x84, 0xD9, 0xDE, 0x28, 0x4B, 0x1E, 0x4F,- 0x67, 0x8E, 0x31, 0xAB, 0x6A, 0x76, 0xF5, 0x66,- 0x1B, 0x5A, 0xEA, 0xA7, 0x68, 0x53, 0x93, 0x84,- 0xAA, 0x38, 0xF9, 0xE4, 0x9C, 0xCE, 0x6E, 0x6E- },- {- 0xB2, 0x07, 0x9E, 0x59, 0x97, 0xA4, 0xEA, 0xD3,- 0xA7, 0x1F, 0xEF, 0xC0, 0x2F, 0x90, 0xA7, 0x48,- 0x3A, 0x10, 0xFD, 0x2E, 0x6F, 0x31, 0xBD, 0xA9,- 0xD2, 0x08, 0x44, 0x85, 0xCC, 0x01, 0x6B, 0xBD- },- {- 0xE0, 0xF8, 0x4D, 0x7F, 0x52, 0x5B, 0x6F, 0xED,- 0x79, 0x1F, 0x77, 0x28, 0x9A, 0xE5, 0x8F, 0x7D,- 0x50, 0xA2, 0x94, 0x32, 0xD4, 0x2C, 0x25, 0xC1,- 0xE8, 0x39, 0x29, 0xB8, 0x38, 0x89, 0x1D, 0x79- },- {- 0x70, 0x46, 0x96, 0x90, 0x95, 0x6D, 0x79, 0x18,- 0xAC, 0xE7, 0xBA, 0x5F, 0x41, 0x30, 0x2D, 0xA1,- 0x38, 0xC9, 0xB5, 0x6E, 0xCD, 0x41, 0x55, 0x44,- 0xFA, 0xCE, 0x8D, 0x99, 0x8C, 0x21, 0xAB, 0xEB- },- {- 0x45, 0xC9, 0x1A, 0x62, 0x24, 0x9B, 0x39, 0xCD,- 0xA9, 0x4E, 0x50, 0x82, 0x95, 0xBE, 0xC7, 0x66,- 0x71, 0x19, 0x44, 0x77, 0x65, 0xEF, 0x80, 0xEF,- 0xA8, 0x2D, 0x1E, 0x92, 0xD5, 0x70, 0x67, 0xD8- },- {- 0x1D, 0x9E, 0x00, 0x73, 0xEE, 0xD0, 0x73, 0x15,- 0x54, 0xC3, 0xBE, 0xAA, 0x47, 0x46, 0x0D, 0x51,- 0x1A, 0xD2, 0x61, 0xDD, 0x4D, 0x4A, 0x3B, 0xED,- 0x9D, 0x8D, 0x20, 0x2F, 0x22, 0xF2, 0x15, 0x89- },- {- 0x40, 0x82, 0x62, 0x73, 0x6D, 0x8A, 0xEC, 0x0B,- 0x84, 0x7D, 0xBA, 0x25, 0x02, 0x58, 0x60, 0x8A,- 0x43, 0x45, 0xA6, 0x3A, 0x1E, 0xB1, 0x95, 0xE5,- 0xC7, 0xAE, 0x2E, 0xE8, 0x74, 0xC3, 0x4D, 0xA8- },- {- 0x23, 0xD2, 0xB7, 0x04, 0x39, 0x46, 0x99, 0x49,- 0x98, 0x23, 0x90, 0x53, 0x8D, 0x7E, 0x5A, 0xDE,- 0x9F, 0x18, 0xC8, 0xE3, 0xBB, 0xF6, 0x60, 0x5A,- 0xFC, 0xF4, 0x9B, 0x00, 0xC0, 0x61, 0xE8, 0x37- },- {- 0x23, 0x2F, 0xB1, 0x87, 0xD2, 0x71, 0xBE, 0xA9,- 0x12, 0xEF, 0xD4, 0x07, 0xFF, 0xE0, 0x80, 0x56,- 0xD6, 0xA4, 0x2E, 0x53, 0x21, 0xEC, 0x79, 0x2D,- 0xF3, 0xD5, 0x84, 0xA9, 0x4F, 0x63, 0x0A, 0xB2- },- {- 0x13, 0x8E, 0x19, 0x44, 0xE4, 0xB5, 0x4D, 0xE8,- 0x68, 0x1D, 0x7E, 0x48, 0xC4, 0xF0, 0x81, 0x48,- 0xE4, 0x0A, 0x56, 0x7E, 0x5C, 0xAD, 0x94, 0x6A,- 0x6A, 0xF4, 0xE8, 0xD5, 0xD2, 0x6F, 0x75, 0xC7- },- {- 0x80, 0xC1, 0x51, 0x32, 0x5F, 0xBF, 0xC6, 0x78,- 0xB7, 0xBE, 0x4E, 0x40, 0xB3, 0x0F, 0x29, 0xFE,- 0x31, 0xCD, 0xBE, 0x1C, 0x84, 0x12, 0x6E, 0x00,- 0x6D, 0xF3, 0xC1, 0x85, 0x24, 0xBD, 0x2D, 0x6C- },- {- 0xA6, 0x42, 0x26, 0x73, 0x01, 0x66, 0x9D, 0xF2,- 0x61, 0xB8, 0x39, 0xF8, 0x73, 0x65, 0x76, 0x29,- 0x05, 0xFF, 0x32, 0x0A, 0x0A, 0x2F, 0xC4, 0xBD,- 0xC4, 0x8E, 0x5A, 0x8E, 0x15, 0xD1, 0x32, 0x33- },- {- 0x0F, 0x8B, 0x10, 0x99, 0x38, 0x60, 0x93, 0x7A,- 0x74, 0xCC, 0x2D, 0xE4, 0x0A, 0x27, 0x31, 0xDD,- 0x99, 0x54, 0xB6, 0x54, 0xBB, 0x94, 0xC3, 0x4E,- 0x87, 0x66, 0x52, 0xE9, 0x8D, 0x4B, 0xBD, 0x16- },- {- 0xE6, 0x34, 0xA5, 0x85, 0x12, 0x49, 0x32, 0x73,- 0x26, 0x0F, 0x10, 0xD4, 0x49, 0x53, 0xCD, 0x99,- 0x8E, 0x34, 0xCB, 0x82, 0x81, 0xC4, 0x1B, 0xF4,- 0x2E, 0x0A, 0xE2, 0xF2, 0x5C, 0xBD, 0x1F, 0x75- },- {- 0xBD, 0xE6, 0xAF, 0x9B, 0xAF, 0x3C, 0x07, 0xE9,- 0x54, 0x23, 0xCA, 0xB5, 0x04, 0xDE, 0xE7, 0x0E,- 0xDC, 0xC3, 0x31, 0x8B, 0x22, 0xDD, 0x1E, 0xB6,- 0xFD, 0x85, 0xBE, 0x44, 0x7A, 0xC9, 0xF2, 0x09- },- {- 0x91, 0x4B, 0x37, 0xAB, 0x5B, 0x8C, 0xFD, 0xE6,- 0xA4, 0x80, 0x46, 0x6A, 0x0D, 0x82, 0x43, 0x2C,- 0x7D, 0x76, 0x32, 0x8E, 0x9A, 0x88, 0xEF, 0x5B,- 0x4F, 0x52, 0x42, 0x9F, 0x7A, 0x3F, 0xFC, 0x7D- },- {- 0x55, 0xBE, 0x66, 0xE9, 0xA5, 0xAA, 0x67, 0x1A,- 0x23, 0x88, 0x2E, 0xF3, 0xE7, 0xD9, 0xD3, 0x6E,- 0xA9, 0x54, 0x87, 0xDC, 0x71, 0xB7, 0x25, 0xA5,- 0xAD, 0x4B, 0x79, 0x8A, 0x87, 0x91, 0x43, 0xD0- },- {- 0x3F, 0xD0, 0x45, 0x89, 0x4B, 0x83, 0x6E, 0x44,- 0xE9, 0xCA, 0x75, 0xFB, 0xE3, 0xEA, 0xDC, 0x48,- 0x6C, 0xBB, 0xD0, 0xD8, 0xCE, 0xE1, 0xB3, 0xCF,- 0x14, 0xF7, 0x6E, 0x7F, 0x1E, 0x77, 0xAE, 0xF3- },- {- 0xCE, 0x60, 0x34, 0x3D, 0xC4, 0x87, 0x4B, 0x66,- 0x04, 0xE1, 0xFB, 0x23, 0x1E, 0x37, 0xEC, 0x1E,- 0xEC, 0x3F, 0x06, 0x56, 0x6E, 0x42, 0x8A, 0xE7,- 0x64, 0xEF, 0xFF, 0xA2, 0x30, 0xAD, 0xD4, 0x85- },- {- 0xE3, 0x8C, 0x9D, 0xF0, 0x24, 0xDE, 0x21, 0x53,- 0xD2, 0x26, 0x73, 0x8A, 0x0E, 0x5B, 0xA9, 0xB8,- 0xC6, 0x78, 0x4D, 0xAC, 0xA6, 0x5C, 0x22, 0xA7,- 0x62, 0x8E, 0xB5, 0x8E, 0xA0, 0xD4, 0x95, 0xA7- },- {- 0x8D, 0xFE, 0xC0, 0xD4, 0xF3, 0x65, 0x8A, 0x20,- 0xA0, 0xBA, 0xD6, 0x6F, 0x21, 0x60, 0x83, 0x2B,- 0x16, 0x4E, 0x70, 0x0A, 0x21, 0xEC, 0x5A, 0x01,- 0x65, 0xC3, 0x67, 0x72, 0xB2, 0x08, 0x61, 0x11- },- {- 0x44, 0x01, 0xB5, 0x0E, 0x09, 0x86, 0x5F, 0x42,- 0x38, 0x24, 0x3B, 0x82, 0x25, 0xCA, 0x40, 0xA0,- 0x8D, 0xBB, 0x46, 0x85, 0xF5, 0xF8, 0x62, 0xFB,- 0xDD, 0x72, 0x98, 0x04, 0x31, 0xA8, 0x5D, 0x3F- },- {- 0x86, 0x68, 0x94, 0x27, 0x88, 0xC4, 0xCE, 0x8A,- 0x33, 0x19, 0x0F, 0xFC, 0xFA, 0xD1, 0xC6, 0x78,- 0xC4, 0xFA, 0x41, 0xE9, 0x94, 0x17, 0x09, 0x4E,- 0x24, 0x0F, 0x4A, 0x43, 0xF3, 0x87, 0xA3, 0xB6- },- {- 0xA7, 0x28, 0x8D, 0x5E, 0x09, 0x80, 0x9B, 0x69,- 0x69, 0x84, 0xEC, 0xD5, 0x32, 0x6C, 0xDD, 0x84,- 0xFB, 0xE3, 0x5F, 0xCF, 0x67, 0x23, 0x5D, 0x81,- 0x1C, 0x82, 0x00, 0x25, 0x36, 0xA3, 0xC5, 0xE1- },- {- 0x8E, 0x92, 0x5C, 0x3C, 0x14, 0x6B, 0xAC, 0xF3,- 0x35, 0x1E, 0xC5, 0x32, 0x41, 0xAC, 0xE5, 0xF7,- 0x3E, 0x8F, 0xC9, 0xBD, 0x8C, 0x61, 0xCA, 0xD9,- 0x7F, 0xD7, 0x72, 0xB0, 0x7E, 0x1B, 0x83, 0x73- },- {- 0xC7, 0xEB, 0x9E, 0x6D, 0xED, 0x2F, 0x99, 0x3D,- 0x48, 0xB0, 0x17, 0x0D, 0xA2, 0x7C, 0x5B, 0x75,- 0x3B, 0x12, 0x17, 0x6B, 0xE1, 0x26, 0xC7, 0xBA,- 0x2D, 0x6A, 0xF8, 0x5F, 0x85, 0x93, 0xB7, 0x52- },- {- 0xCA, 0x27, 0xF1, 0x6F, 0x94, 0xE4, 0xEC, 0x0E,- 0x62, 0x8E, 0x7F, 0x8A, 0xEF, 0xC6, 0x65, 0x7B,- 0xED, 0xC9, 0x37, 0x42, 0x96, 0x59, 0x40, 0xAE,- 0x78, 0x6A, 0x73, 0xB5, 0xFD, 0x59, 0x3B, 0x97- },- {- 0x8C, 0x21, 0xE6, 0x56, 0x8B, 0xC6, 0xDC, 0x00,- 0xE3, 0xD6, 0xEB, 0xC0, 0x9E, 0xA9, 0xC2, 0xCE,- 0x00, 0x6C, 0xD3, 0x11, 0xD3, 0xB3, 0xE9, 0xCC,- 0x9D, 0x8D, 0xDB, 0xFB, 0x3C, 0x5A, 0x77, 0x76- },- {- 0x52, 0x56, 0x66, 0x96, 0x8B, 0x3B, 0x7D, 0x00,- 0x7B, 0xB9, 0x26, 0xB6, 0xEF, 0xDC, 0x7E, 0x21,- 0x2A, 0x31, 0x15, 0x4C, 0x9A, 0xE1, 0x8D, 0x43,- 0xEE, 0x0E, 0xB7, 0xE6, 0xB1, 0xA9, 0x38, 0xD3- },- {- 0xE0, 0x9A, 0x4F, 0xA5, 0xC2, 0x8B, 0xDC, 0xD7,- 0xC8, 0x39, 0x84, 0x0E, 0x0A, 0x38, 0x3E, 0x4F,- 0x7A, 0x10, 0x2D, 0x0B, 0x1B, 0xC8, 0x49, 0xC9,- 0x49, 0x62, 0x7C, 0x41, 0x00, 0xC1, 0x7D, 0xD3- },- {- 0xC1, 0x9F, 0x3E, 0x29, 0x5D, 0xB2, 0xFC, 0x0E,- 0x74, 0x81, 0xC4, 0xF1, 0x6A, 0xF0, 0x11, 0x55,- 0xDD, 0xB0, 0xD7, 0xD1, 0x38, 0x3D, 0x4A, 0x1F,- 0xF1, 0x69, 0x9D, 0xB7, 0x11, 0x77, 0x34, 0x0C- },- {- 0x76, 0x9E, 0x67, 0x8C, 0x0A, 0x09, 0x09, 0xA2,- 0x02, 0x1C, 0x4D, 0xC2, 0x6B, 0x1A, 0x3C, 0x9B,- 0xC5, 0x57, 0xAD, 0xB2, 0x1A, 0x50, 0x83, 0x4C,- 0xDC, 0x5C, 0x92, 0x93, 0xF7, 0x53, 0x65, 0xF8- },- {- 0xB6, 0x48, 0x74, 0xAD, 0xAB, 0x6B, 0xCB, 0x85,- 0xB9, 0x4B, 0xD9, 0xA6, 0xC5, 0x65, 0xD0, 0xD2,- 0xBC, 0x35, 0x44, 0x5D, 0x75, 0x28, 0xBC, 0x85,- 0xB4, 0x1F, 0xDC, 0x79, 0xDC, 0x76, 0xE3, 0x4F- },- {- 0xFA, 0xF2, 0x50, 0xDE, 0x15, 0x82, 0x0F, 0x7F,- 0xC6, 0x10, 0xDD, 0x53, 0xEE, 0xAE, 0x44, 0x60,- 0x1C, 0x3E, 0xFF, 0xA3, 0xAC, 0xCD, 0x08, 0x8E,- 0xB6, 0x69, 0x05, 0xBB, 0x26, 0x53, 0xBE, 0x8C- },- {- 0x1E, 0x20, 0x38, 0x73, 0x9B, 0x2C, 0x01, 0x8B,- 0x0E, 0x9E, 0x0E, 0x1E, 0x52, 0x2F, 0xD9, 0x65,- 0x12, 0x87, 0xEE, 0x6E, 0x36, 0x65, 0x91, 0x9B,- 0x24, 0xC2, 0x12, 0x4F, 0x0C, 0x1A, 0x3F, 0x3A- },- {- 0x5F, 0xEC, 0x3A, 0xA0, 0x08, 0x61, 0xDE, 0x1A,- 0xC5, 0xDA, 0xB3, 0xC1, 0x37, 0x06, 0x5D, 0x1E,- 0x01, 0xBB, 0x03, 0xF6, 0x9D, 0xCC, 0x7D, 0x1C,- 0xF7, 0xCA, 0x4F, 0x43, 0x56, 0xAE, 0xC9, 0xA3- },- {- 0x44, 0x51, 0xFE, 0x6B, 0xBE, 0xF3, 0x93, 0x43,- 0x91, 0x92, 0x44, 0xC5, 0x1D, 0xAE, 0x1E, 0xA9,- 0xA9, 0x54, 0xCF, 0x2C, 0x09, 0x66, 0xAB, 0x04,- 0x5B, 0x15, 0x52, 0x1E, 0xCF, 0x35, 0x00, 0x81- },- {- 0x8C, 0x62, 0x2F, 0xA2, 0x16, 0x0E, 0x8E, 0x99,- 0x18, 0x13, 0xF1, 0x80, 0xBF, 0xEC, 0x0B, 0x43,- 0x1C, 0x6D, 0xBF, 0xA2, 0x95, 0x6D, 0x91, 0x75,- 0x81, 0x6A, 0x23, 0xC3, 0x82, 0xC4, 0xF2, 0x00- },- {- 0x81, 0x7D, 0x5C, 0x8F, 0x92, 0xE7, 0xB5, 0xCA,- 0x57, 0xF5, 0xE1, 0x63, 0x90, 0x16, 0xAD, 0x57,- 0x60, 0xE4, 0x46, 0xD6, 0xE9, 0xCA, 0xA7, 0x49,- 0x84, 0x14, 0xAC, 0xE8, 0x22, 0x80, 0xB5, 0xCD- },- {- 0xA6, 0xA1, 0xAD, 0x58, 0xCE, 0xE5, 0x4E, 0x69,- 0xCB, 0xBC, 0xAA, 0x87, 0xDF, 0x07, 0xA6, 0x70,- 0x7E, 0xB2, 0x24, 0x73, 0x9C, 0x21, 0x76, 0x13,- 0x46, 0x0A, 0xB4, 0x54, 0xB4, 0x59, 0xCA, 0x9C- },- {- 0x63, 0xB8, 0x47, 0x27, 0x52, 0x26, 0x60, 0x5B,- 0xE6, 0x76, 0x81, 0x25, 0x8F, 0x7D, 0x00, 0xBB,- 0xB3, 0x07, 0xC6, 0x6F, 0x19, 0x59, 0xBF, 0x2E,- 0x46, 0x7A, 0x41, 0xAE, 0xE7, 0x14, 0xE5, 0x5C- },- {- 0xFE, 0x52, 0xEB, 0xE5, 0xCF, 0xCF, 0xE6, 0xA2,- 0x29, 0x7B, 0x53, 0x9F, 0xA3, 0xDA, 0xDB, 0xD6,- 0xEB, 0xD2, 0x01, 0xAA, 0x2C, 0xA1, 0x35, 0x63,- 0xE3, 0xD7, 0xF1, 0x4D, 0x15, 0xAB, 0xFF, 0x63- },- {- 0xB7, 0xBE, 0xF9, 0xFA, 0x5A, 0x3D, 0x10, 0x42,- 0x62, 0x46, 0xB5, 0xF6, 0x58, 0xC0, 0x8F, 0xDF,- 0x80, 0x66, 0xEA, 0xA3, 0xE5, 0x5A, 0x2F, 0x7D,- 0xA1, 0x59, 0x1E, 0x05, 0xC8, 0x7D, 0xF8, 0xC7- },- {- 0xDE, 0xD1, 0xD6, 0xCA, 0xA9, 0xF8, 0xF3, 0xBD,- 0xA9, 0x2C, 0xEA, 0x7F, 0x65, 0x49, 0xB1, 0xFB,- 0x86, 0xA2, 0x21, 0x14, 0x78, 0xC4, 0xEC, 0x28,- 0x9B, 0x83, 0x7E, 0xFC, 0x2B, 0x5C, 0x27, 0xD7- },- {- 0x9F, 0x30, 0x00, 0x8A, 0x2E, 0xB0, 0x50, 0xF1,- 0x8E, 0x56, 0xA7, 0x6B, 0xE9, 0x20, 0x91, 0xB2,- 0xFD, 0xC1, 0x64, 0xD5, 0x6E, 0x32, 0xC8, 0x7D,- 0xD6, 0x4C, 0x9E, 0x3A, 0x61, 0x10, 0x41, 0xB1- },- {- 0x01, 0x0B, 0x6A, 0x3B, 0x11, 0x86, 0x00, 0x88,- 0xF0, 0xAB, 0xC8, 0x0A, 0x89, 0x72, 0xCB, 0xBC,- 0x32, 0x9D, 0x52, 0x75, 0x34, 0x29, 0x50, 0xEB,- 0x9A, 0x04, 0x5A, 0xFD, 0xC8, 0xBB, 0xED, 0x24- },- {- 0x0C, 0xD2, 0x10, 0xAA, 0xC1, 0x1F, 0x1C, 0x1C,- 0xED, 0x49, 0x7F, 0x67, 0x3E, 0x53, 0xDB, 0x68,- 0xC3, 0xEC, 0x36, 0x07, 0xF0, 0xC5, 0x78, 0x7D,- 0xDC, 0x60, 0xA3, 0x55, 0xDF, 0xE5, 0x6C, 0x25- },- {- 0x0E, 0x56, 0xFD, 0x01, 0xDA, 0x3B, 0x4F, 0x8B,- 0xE2, 0xC9, 0x90, 0x55, 0x2A, 0xAC, 0x8D, 0x1E,- 0x8D, 0xA2, 0x09, 0xBC, 0xF4, 0xAA, 0xD4, 0xFF,- 0xB5, 0x42, 0x7F, 0xD6, 0x31, 0x72, 0x46, 0x3E- },- {- 0xD6, 0xD5, 0xCD, 0xB1, 0x14, 0x40, 0xE3, 0x4A,- 0xCA, 0x3A, 0x2F, 0xCF, 0x30, 0xF5, 0x9E, 0x08,- 0xB1, 0x1A, 0x2A, 0x3D, 0xE5, 0x39, 0xE3, 0xE6,- 0x51, 0x3E, 0xD7, 0x8A, 0x4F, 0xEE, 0x51, 0x3B- },- {- 0xAA, 0x35, 0xAC, 0x90, 0x68, 0x06, 0x70, 0xC7,- 0x32, 0xED, 0x1E, 0xF3, 0x7E, 0x8C, 0xBA, 0xAE,- 0x49, 0xA4, 0xD8, 0x8E, 0xCF, 0x4D, 0xF2, 0xB6,- 0x89, 0xA0, 0xF1, 0x01, 0xB7, 0x56, 0xAE, 0x47- },- {- 0x27, 0x8E, 0x56, 0x12, 0x88, 0x72, 0x26, 0x30,- 0xE2, 0x6A, 0x5F, 0xC9, 0x54, 0xBF, 0x2D, 0xCD,- 0x6A, 0x65, 0x81, 0x67, 0x39, 0xAB, 0xEE, 0x7B,- 0xE1, 0x43, 0x07, 0xA9, 0x61, 0x74, 0xE5, 0xB0- },- {- 0xAB, 0x4B, 0x2C, 0xA1, 0xA2, 0xB3, 0x49, 0x98,- 0x15, 0x24, 0xB6, 0x15, 0x54, 0x62, 0xF0, 0xFF,- 0x10, 0x60, 0xBF, 0x9B, 0xFA, 0x07, 0xFB, 0x9E,- 0xC6, 0x9C, 0xA4, 0x71, 0x64, 0x5B, 0x6A, 0x18- },- {- 0x18, 0xA9, 0xBB, 0xEC, 0x3C, 0x8E, 0x1F, 0x8E,- 0xE9, 0x57, 0x12, 0x97, 0xA9, 0x34, 0x36, 0xDE,- 0x42, 0x7C, 0xD2, 0x70, 0xEC, 0x69, 0xDF, 0xE8,- 0x88, 0xDB, 0x7D, 0xBF, 0x10, 0xB6, 0x49, 0x93- },- {- 0xBA, 0xFC, 0x7E, 0x43, 0xD2, 0x65, 0xA1, 0x73,- 0x02, 0x1A, 0x9D, 0x9E, 0x58, 0x3D, 0x60, 0xED,- 0x42, 0xA8, 0x03, 0xFA, 0xCD, 0x6B, 0x83, 0x60,- 0xDE, 0x1F, 0x91, 0x68, 0x35, 0x38, 0x9B, 0xF0- },- {- 0xA5, 0xB6, 0x7B, 0xE9, 0x50, 0xFB, 0xC2, 0xF0,- 0xDD, 0x32, 0x3A, 0x79, 0xA1, 0x9E, 0x3E, 0xD1,- 0xF4, 0xAE, 0x4B, 0xA7, 0x89, 0x4F, 0x93, 0x0E,- 0xA5, 0xEF, 0x73, 0x4D, 0xE7, 0xDB, 0x83, 0xAE- },- {- 0xBF, 0x1E, 0x65, 0xF3, 0xCD, 0x84, 0x98, 0x88,- 0x4D, 0x9D, 0x5C, 0x19, 0xEB, 0xF7, 0xB9, 0x16,- 0x06, 0x76, 0x37, 0x60, 0x4E, 0x26, 0xDB, 0xE2,- 0xB7, 0x28, 0x8E, 0xCB, 0x11, 0x42, 0x60, 0x68- },- {- 0xC3, 0x34, 0x2C, 0xF9, 0xCB, 0xBF, 0x29, 0xD4,- 0x06, 0xD7, 0x89, 0x5D, 0xD4, 0xD9, 0x54, 0x8D,- 0x4A, 0xC7, 0x8B, 0x4D, 0x00, 0xE9, 0xB6, 0x3E,- 0x20, 0x3E, 0x5E, 0x19, 0xE9, 0x97, 0x46, 0x20- },- {- 0x1C, 0x0B, 0xE6, 0x02, 0x77, 0x43, 0x4B, 0x0E,- 0x00, 0x4B, 0x7B, 0x38, 0x8A, 0x37, 0x55, 0x9F,- 0x84, 0xB3, 0x0C, 0x6C, 0xF8, 0x60, 0x0F, 0x52,- 0x8B, 0xFC, 0xD3, 0x3C, 0xAF, 0x52, 0xCB, 0x1E- },- {- 0x73, 0x95, 0x45, 0x30, 0xD0, 0x3F, 0x10, 0xBE,- 0xF5, 0x2A, 0xD5, 0xBC, 0x7F, 0xB4, 0xC0, 0x76,- 0xF8, 0x3F, 0x63, 0x31, 0xC8, 0xBD, 0x1E, 0xEE,- 0xC3, 0x88, 0x7F, 0x4A, 0xA2, 0x06, 0x92, 0x40- },- {- 0x69, 0xC1, 0x1E, 0xE0, 0x49, 0x44, 0xDE, 0xA9,- 0x85, 0xAC, 0x9F, 0x13, 0x96, 0x0E, 0x73, 0x98,- 0x0E, 0x1B, 0xB0, 0xE3, 0x09, 0xF4, 0x38, 0x4A,- 0x16, 0x76, 0xF8, 0xEF, 0xAB, 0x38, 0x42, 0x88- },- {- 0x36, 0xFB, 0x8F, 0xDE, 0x0E, 0xC2, 0x8C, 0xE8,- 0x53, 0xFB, 0x71, 0x75, 0xC1, 0xB7, 0x9D, 0xA3,- 0xB5, 0xE8, 0xC3, 0x91, 0x86, 0xE7, 0x8A, 0xAE,- 0xCE, 0x54, 0x64, 0xDB, 0xD9, 0xFE, 0x2A, 0xA2- },- {- 0x6B, 0xB2, 0xA0, 0x9D, 0xFC, 0xAF, 0x96, 0x96,- 0x2D, 0xE0, 0x0C, 0x8A, 0x08, 0x2D, 0x6D, 0xF9,- 0x32, 0x2B, 0x49, 0x66, 0xAE, 0x8D, 0x2E, 0xCF,- 0x73, 0x24, 0x11, 0xA7, 0x6A, 0x1A, 0x0E, 0xE6- },- {- 0x74, 0x12, 0xE7, 0xDD, 0x1B, 0xF1, 0xAA, 0x93,- 0x97, 0x41, 0x1B, 0xBA, 0x4D, 0x3E, 0x02, 0x76,- 0xD2, 0xE7, 0xA1, 0xA2, 0x9A, 0x24, 0x77, 0x15,- 0x7A, 0xD6, 0x03, 0x60, 0xD3, 0x3D, 0x4E, 0x76- },- {- 0xDD, 0xDE, 0xAF, 0xCF, 0xC7, 0x23, 0x21, 0xC8,- 0x49, 0xFB, 0x25, 0x94, 0x7A, 0xB4, 0x2C, 0x1A,- 0xF2, 0xA5, 0xE4, 0x3F, 0xEF, 0x68, 0x1B, 0xE4,- 0x2C, 0x7E, 0xAF, 0x36, 0x60, 0x08, 0x0A, 0xD3- },- {- 0x9D, 0xEF, 0xEB, 0xAD, 0xBD, 0xCB, 0x0A, 0x0E,- 0x7F, 0xF9, 0x92, 0xF9, 0x47, 0xCE, 0xD3, 0xD0,- 0xA4, 0xC8, 0x99, 0xE6, 0x4F, 0xE7, 0x73, 0x60,- 0xE8, 0x1E, 0x1F, 0x0E, 0x97, 0xF8, 0xC1, 0xA2- },- {- 0x84, 0x4C, 0x59, 0xFB, 0xE6, 0x47, 0x6F, 0xD1,- 0x89, 0x23, 0x99, 0x54, 0xF1, 0x7E, 0x36, 0xE1,- 0xF6, 0x9E, 0x24, 0xAA, 0xED, 0x5D, 0x5C, 0x8B,- 0x84, 0x05, 0xEF, 0x2A, 0x83, 0x0C, 0xC2, 0xA0- },- {- 0xFF, 0x3F, 0xAF, 0xB6, 0x77, 0x86, 0xE0, 0x1A,- 0x0C, 0x38, 0xEA, 0xDF, 0x99, 0xC4, 0xCA, 0xE8,- 0x02, 0x9D, 0xA8, 0xCF, 0x29, 0x87, 0x5F, 0xC4,- 0x19, 0xBF, 0x68, 0x00, 0x09, 0xB3, 0xBD, 0xB3- },- {- 0xCA, 0x67, 0x60, 0xF3, 0x45, 0x67, 0x8F, 0x30,- 0xA2, 0x8D, 0x62, 0x82, 0x94, 0x27, 0x2A, 0x19,- 0xE3, 0x07, 0x2E, 0xBC, 0x61, 0xB1, 0x9F, 0xF1,- 0x3B, 0x31, 0x89, 0x73, 0xE9, 0x7C, 0x27, 0x38- },- {- 0xC0, 0x8E, 0x1A, 0x90, 0x47, 0xC5, 0x05, 0x26,- 0x4A, 0x16, 0x44, 0x7C, 0x9E, 0xD9, 0x81, 0xA7,- 0x19, 0xD3, 0x81, 0xF2, 0x8E, 0x60, 0x5F, 0xD7,- 0xCA, 0xA9, 0xE8, 0xBD, 0xBB, 0x42, 0x99, 0x6A- },- {- 0xF1, 0x73, 0xBA, 0x9D, 0x45, 0x84, 0xCD, 0x12,- 0x60, 0x50, 0xC6, 0x9F, 0xC2, 0x19, 0xA9, 0x19,- 0x0A, 0x0B, 0xF0, 0xAE, 0xCE, 0xCB, 0xE6, 0x11,- 0xBE, 0xED, 0x19, 0x3D, 0xA6, 0xCA, 0x4D, 0xE7- },- {- 0xB1, 0x84, 0x87, 0x65, 0x20, 0xDE, 0xD8, 0xBD,- 0x7D, 0xE2, 0x5E, 0xAE, 0xFB, 0xD3, 0xE0, 0x36,- 0x88, 0xC3, 0xBE, 0x39, 0xC1, 0x9F, 0xB7, 0x3E,- 0x1F, 0x0E, 0xCC, 0xAC, 0x7C, 0xC0, 0xF0, 0x14- },- {- 0x90, 0x25, 0xDB, 0x07, 0x58, 0xBD, 0xFB, 0x48,- 0xF0, 0x66, 0x7E, 0xBD, 0x7E, 0x12, 0x02, 0x46,- 0x59, 0x8F, 0xED, 0x01, 0xC2, 0x58, 0x76, 0x4F,- 0xA0, 0xFA, 0xE3, 0x34, 0xA2, 0xA0, 0x0A, 0x97- },- {- 0xE8, 0x3D, 0x80, 0x86, 0xFA, 0xBC, 0x46, 0x0D,- 0x5E, 0xFC, 0x45, 0x9F, 0x95, 0xA2, 0x68, 0xF5,- 0xDC, 0x4A, 0xC2, 0x84, 0x09, 0x3C, 0x24, 0x7C,- 0xA6, 0xEC, 0x84, 0x1A, 0xD6, 0x18, 0x3F, 0xE1- },- {- 0xCC, 0x9D, 0xF4, 0x1D, 0x35, 0xAA, 0x75, 0x92,- 0x8C, 0x18, 0x5F, 0x73, 0x93, 0x66, 0x61, 0x10,- 0xB8, 0x0F, 0x09, 0x86, 0xA2, 0x21, 0xC3, 0x70,- 0xF4, 0x5C, 0x2E, 0xB9, 0x01, 0x6C, 0x9A, 0x3B- },- {- 0x92, 0xF9, 0xA5, 0x94, 0x95, 0x45, 0x90, 0xFA,- 0x81, 0x98, 0x17, 0xE5, 0xD1, 0xC2, 0x8A, 0xAB,- 0x2B, 0x1C, 0xC5, 0x04, 0xD8, 0x6D, 0xBA, 0x44,- 0x36, 0x76, 0xBD, 0xF8, 0x66, 0x79, 0x68, 0x11- },- {- 0x72, 0x95, 0x62, 0xA1, 0xE0, 0x7B, 0x0E, 0x26,- 0x05, 0x49, 0x48, 0x09, 0xBD, 0x48, 0x0F, 0x15,- 0x37, 0xCE, 0xA1, 0x0D, 0xCA, 0xD4, 0x3E, 0xF9,- 0xF6, 0x8C, 0x66, 0xE8, 0x25, 0xDC, 0x46, 0xB1- },- {- 0x26, 0xF1, 0x60, 0xAB, 0x96, 0xF5, 0x58, 0x20,- 0x45, 0x14, 0x6E, 0xAF, 0xF2, 0xE2, 0xA8, 0xD4,- 0xDA, 0xB2, 0x98, 0xB4, 0xC5, 0x7E, 0x11, 0x7C,- 0xDF, 0xC5, 0xD0, 0x25, 0xC9, 0x2A, 0x22, 0x68- },- {- 0x87, 0xEB, 0xE7, 0x21, 0x38, 0x38, 0x73, 0xD2,- 0x47, 0xF8, 0x61, 0x82, 0xE3, 0xF5, 0x99, 0xA7,- 0x63, 0x4F, 0xCA, 0xEC, 0x5E, 0x07, 0xB1, 0xE8,- 0x3E, 0xBB, 0x79, 0x62, 0x5B, 0xA3, 0x54, 0xE6- },- {- 0xE0, 0x8D, 0x38, 0x9F, 0x75, 0x69, 0x4A, 0xDC,- 0x99, 0x6C, 0x22, 0xF5, 0x5D, 0x4F, 0x85, 0x9F,- 0xFD, 0x0C, 0x13, 0x19, 0xFF, 0x9C, 0xED, 0xF7,- 0x8C, 0x31, 0xBE, 0x84, 0xB6, 0xF2, 0x1A, 0xBC- },- {- 0x13, 0x63, 0xE2, 0x29, 0x13, 0xC6, 0xE1, 0x8E,- 0x7A, 0xA6, 0x5B, 0x83, 0xE7, 0x51, 0xC8, 0xA2,- 0xC6, 0x1B, 0x0F, 0x30, 0x71, 0x55, 0x86, 0x5A,- 0x57, 0xDB, 0xA5, 0x69, 0xA9, 0x9C, 0x7B, 0x0E- },- {- 0x88, 0x78, 0x08, 0x8E, 0xB2, 0xD1, 0xF6, 0xD0,- 0xBB, 0x48, 0x1B, 0x4B, 0xB1, 0x87, 0xDA, 0x04,- 0xBC, 0xD8, 0xC2, 0xC6, 0x39, 0xF0, 0x05, 0xB0,- 0x80, 0x54, 0xCC, 0x41, 0x75, 0x39, 0x05, 0xFB- },- {- 0x04, 0x18, 0xD6, 0x0D, 0x05, 0xB4, 0xE1, 0x24,- 0x64, 0x6E, 0xE5, 0x0E, 0x77, 0x49, 0xA1, 0xD2,- 0x09, 0x45, 0x7B, 0xC5, 0x43, 0xE3, 0xCC, 0x11,- 0x30, 0x27, 0x4A, 0xEA, 0x0F, 0x7B, 0xF3, 0xC1- },- {- 0x7A, 0x39, 0x7E, 0x50, 0x3F, 0x29, 0x3B, 0xC4,- 0x2D, 0x5F, 0x7E, 0xF5, 0xEC, 0x37, 0x87, 0x24,- 0x60, 0xA4, 0xF5, 0xB5, 0xCC, 0xDE, 0x77, 0xFB,- 0x4D, 0x47, 0xAC, 0x06, 0x81, 0xE5, 0xA0, 0x49- },- {- 0x5C, 0x0D, 0x29, 0x83, 0xE7, 0x2A, 0x6D, 0xD4,- 0xE6, 0x52, 0xD7, 0x23, 0xC1, 0xDF, 0xC1, 0x2B,- 0x41, 0x4C, 0x87, 0x3D, 0x4A, 0xB4, 0xA0, 0xA1,- 0x50, 0x40, 0x8E, 0xB3, 0x43, 0x47, 0xE9, 0x95- },- {- 0x56, 0x23, 0x36, 0x54, 0x53, 0xC0, 0x49, 0x89,- 0xC7, 0xCF, 0x33, 0x63, 0x5E, 0x0F, 0xC4, 0xCD,- 0xDD, 0x68, 0x6F, 0xC9, 0x5A, 0x33, 0xDF, 0xED,- 0xCF, 0x33, 0x35, 0x79, 0x4C, 0x7D, 0xC3, 0x44- },- {- 0x11, 0xF6, 0xDA, 0xD1, 0x88, 0x02, 0x8F, 0xDF,- 0x13, 0x78, 0xA2, 0x56, 0xE4, 0x57, 0x0E, 0x90,- 0x63, 0x10, 0x7B, 0x8F, 0x79, 0xDC, 0x66, 0x3F,- 0xA5, 0x55, 0x6F, 0x56, 0xFD, 0x44, 0xA0, 0xF0- },- {- 0x0E, 0xD8, 0x16, 0x17, 0x97, 0xEC, 0xEE, 0x88,- 0x1E, 0x7D, 0x0E, 0x3F, 0x4C, 0x5F, 0xB8, 0x39,- 0xC8, 0x4E, 0xB7, 0xA9, 0x24, 0x26, 0x57, 0xCC,- 0x48, 0x30, 0x68, 0x07, 0xB3, 0x2B, 0xEF, 0xDE- },- {- 0x73, 0x66, 0x67, 0xC9, 0x36, 0x4C, 0xE1, 0x2D,- 0xB8, 0xF6, 0xB1, 0x43, 0xC6, 0xC1, 0x78, 0xCD,- 0xEF, 0x1E, 0x14, 0x45, 0xBC, 0x5A, 0x2F, 0x26,- 0x34, 0xF0, 0x8E, 0x99, 0x32, 0x27, 0x3C, 0xAA- },- {- 0xE1, 0x5F, 0x36, 0x8B, 0x44, 0x06, 0xC1, 0xF6,- 0x55, 0x57, 0xC8, 0x35, 0x5C, 0xBE, 0x69, 0x4B,- 0x63, 0x3E, 0x26, 0xF1, 0x55, 0xF5, 0x2B, 0x7D,- 0xA9, 0x4C, 0xFB, 0x23, 0xFD, 0x4A, 0x5D, 0x96- },- {- 0x43, 0x7A, 0xB2, 0xD7, 0x4F, 0x50, 0xCA, 0x86,- 0xCC, 0x3D, 0xE9, 0xBE, 0x70, 0xE4, 0x55, 0x48,- 0x25, 0xE3, 0x3D, 0x82, 0x4B, 0x3A, 0x49, 0x23,- 0x62, 0xE2, 0xE9, 0xD6, 0x11, 0xBC, 0x57, 0x9D- },- {- 0x2B, 0x91, 0x58, 0xC7, 0x22, 0x89, 0x8E, 0x52,- 0x6D, 0x2C, 0xDD, 0x3F, 0xC0, 0x88, 0xE9, 0xFF,- 0xA7, 0x9A, 0x9B, 0x73, 0xB7, 0xD2, 0xD2, 0x4B,- 0xC4, 0x78, 0xE2, 0x1C, 0xDB, 0x3B, 0x67, 0x63- },- {- 0x0C, 0x8A, 0x36, 0x59, 0x7D, 0x74, 0x61, 0xC6,- 0x3A, 0x94, 0x73, 0x28, 0x21, 0xC9, 0x41, 0x85,- 0x6C, 0x66, 0x83, 0x76, 0x60, 0x6C, 0x86, 0xA5,- 0x2D, 0xE0, 0xEE, 0x41, 0x04, 0xC6, 0x15, 0xDB- },-};-----static const uint8_t blake2bp_kat[KAT_LENGTH][BLAKE2B_OUTBYTES] =-{- {- 0xB5, 0xEF, 0x81, 0x1A, 0x80, 0x38, 0xF7, 0x0B,- 0x62, 0x8F, 0xA8, 0xB2, 0x94, 0xDA, 0xAE, 0x74,- 0x92, 0xB1, 0xEB, 0xE3, 0x43, 0xA8, 0x0E, 0xAA,- 0xBB, 0xF1, 0xF6, 0xAE, 0x66, 0x4D, 0xD6, 0x7B,- 0x9D, 0x90, 0xB0, 0x12, 0x07, 0x91, 0xEA, 0xB8,- 0x1D, 0xC9, 0x69, 0x85, 0xF2, 0x88, 0x49, 0xF6,- 0xA3, 0x05, 0x18, 0x6A, 0x85, 0x50, 0x1B, 0x40,- 0x51, 0x14, 0xBF, 0xA6, 0x78, 0xDF, 0x93, 0x80- },- {- 0xA1, 0x39, 0x28, 0x0E, 0x72, 0x75, 0x7B, 0x72,- 0x3E, 0x64, 0x73, 0xD5, 0xBE, 0x59, 0xF3, 0x6E,- 0x9D, 0x50, 0xFC, 0x5C, 0xD7, 0xD4, 0x58, 0x5C,- 0xBC, 0x09, 0x80, 0x48, 0x95, 0xA3, 0x6C, 0x52,- 0x12, 0x42, 0xFB, 0x27, 0x89, 0xF8, 0x5C, 0xB9,- 0xE3, 0x54, 0x91, 0xF3, 0x1D, 0x4A, 0x69, 0x52,- 0xF9, 0xD8, 0xE0, 0x97, 0xAE, 0xF9, 0x4F, 0xA1,- 0xCA, 0x0B, 0x12, 0x52, 0x57, 0x21, 0xF0, 0x3D- },- {- 0xEF, 0x8C, 0xDA, 0x96, 0x35, 0xD5, 0x06, 0x3A,- 0xF8, 0x11, 0x15, 0xDA, 0x3C, 0x52, 0x32, 0x5A,- 0x86, 0xE8, 0x40, 0x74, 0xF9, 0xF7, 0x24, 0xB7,- 0xCB, 0xD0, 0xB0, 0x85, 0x6F, 0xF0, 0x01, 0x77,- 0xCD, 0xD2, 0x83, 0xC2, 0x98, 0x32, 0x6C, 0xD0,- 0x91, 0x77, 0x54, 0xC5, 0x24, 0x1F, 0x14, 0x80,- 0xFB, 0x50, 0x9C, 0xF2, 0xD2, 0xC4, 0x49, 0x81,- 0x80, 0x77, 0xAE, 0x35, 0xFC, 0x33, 0x07, 0x37- },- {- 0x8C, 0xF9, 0x33, 0xA2, 0xD3, 0x61, 0xA3, 0xE6,- 0xA1, 0x36, 0xDB, 0xE4, 0xA0, 0x1E, 0x79, 0x03,- 0x79, 0x7A, 0xD6, 0xCE, 0x76, 0x6E, 0x2B, 0x91,- 0xB9, 0xB4, 0xA4, 0x03, 0x51, 0x27, 0xD6, 0x5F,- 0x4B, 0xE8, 0x65, 0x50, 0x11, 0x94, 0x18, 0xE2,- 0x2D, 0xA0, 0x0F, 0xD0, 0x6B, 0xF2, 0xB2, 0x75,- 0x96, 0xB3, 0x7F, 0x06, 0xBE, 0x0A, 0x15, 0x4A,- 0xAF, 0x7E, 0xCA, 0x54, 0xC4, 0x52, 0x0B, 0x97- },- {- 0x24, 0xDC, 0x1E, 0x6D, 0xC4, 0xE5, 0x1A, 0x3A,- 0x3C, 0x8D, 0xA6, 0x7A, 0xAC, 0xB4, 0xC5, 0x41,- 0xE4, 0x18, 0x18, 0xD1, 0x80, 0xE5, 0xBB, 0x69,- 0x75, 0x3D, 0xBB, 0xFF, 0x2F, 0x44, 0xD0, 0xE7,- 0xDA, 0x83, 0x03, 0x86, 0xBF, 0xC8, 0x3B, 0x27,- 0xA5, 0x9D, 0xBB, 0x62, 0xB9, 0x64, 0xFC, 0x8E,- 0xA6, 0xCB, 0xDF, 0x30, 0x49, 0xBF, 0xF8, 0x1F,- 0x24, 0xF3, 0x48, 0xDB, 0x4E, 0xFD, 0x0D, 0x07- },- {- 0xBC, 0x23, 0xF5, 0xAB, 0xDF, 0xFD, 0x6A, 0x32,- 0xA5, 0xD4, 0x08, 0x11, 0x26, 0x2E, 0xD4, 0x47,- 0x9E, 0xF7, 0x0B, 0x42, 0x33, 0xCA, 0x20, 0x5B,- 0xC5, 0xB9, 0xBF, 0x85, 0x96, 0x73, 0x19, 0x82,- 0xD0, 0x41, 0x69, 0xA9, 0x04, 0xDD, 0x43, 0xB0,- 0xE0, 0xF9, 0x48, 0x99, 0xF7, 0x33, 0x02, 0x2D,- 0x24, 0xD8, 0x4F, 0xAD, 0x0A, 0x99, 0x16, 0x00,- 0xF1, 0x97, 0x9B, 0x27, 0x2A, 0xD6, 0x20, 0x73- },- {- 0xEF, 0x10, 0x7F, 0xCD, 0x0D, 0x92, 0xD8, 0x4E,- 0xF5, 0xEF, 0x94, 0x63, 0xE6, 0xE9, 0x62, 0x41,- 0x25, 0x45, 0x29, 0xD2, 0xB9, 0x7F, 0xDB, 0xE5,- 0x64, 0x19, 0x07, 0x0A, 0xDB, 0xC7, 0xD5, 0x70,- 0x6F, 0xEB, 0x8F, 0x44, 0x95, 0x79, 0x81, 0x9E,- 0xD4, 0xBE, 0x61, 0x97, 0x85, 0xFF, 0xFA, 0xAF,- 0x0D, 0x97, 0x89, 0xCF, 0xE7, 0x26, 0x24, 0x9A,- 0xB0, 0x8C, 0x94, 0x68, 0xCB, 0x5F, 0xDE, 0x22- },- {- 0x23, 0x1F, 0xBF, 0xB7, 0xA1, 0xDD, 0xC5, 0xB7,- 0x49, 0x33, 0xA2, 0x85, 0xA4, 0x22, 0x4C, 0x04,- 0x9C, 0xBA, 0x14, 0x85, 0xCE, 0x35, 0x64, 0x0D,- 0x9C, 0x51, 0x6E, 0xD7, 0x8E, 0xAA, 0x22, 0x6D,- 0x36, 0xF6, 0x5B, 0x25, 0x89, 0xB8, 0x26, 0xC4,- 0x59, 0xFA, 0x6A, 0x91, 0xC4, 0x26, 0xFD, 0x2A,- 0x8A, 0xB4, 0x61, 0xC9, 0x76, 0x7E, 0x7B, 0xDD,- 0x99, 0x6B, 0xEF, 0x5A, 0x78, 0xF4, 0x81, 0xB7- },- {- 0x3A, 0x83, 0x1F, 0x2D, 0xA9, 0x69, 0xB9, 0xB7,- 0x36, 0x0E, 0x74, 0xEE, 0x53, 0xB5, 0x18, 0x98,- 0x0A, 0x5E, 0xBC, 0xDF, 0xD4, 0xEE, 0x23, 0xED,- 0x80, 0x5C, 0x26, 0x39, 0x4D, 0x18, 0x24, 0x20,- 0x8D, 0x7E, 0x8F, 0x63, 0x27, 0xD4, 0xEC, 0x87,- 0x97, 0x9C, 0xE4, 0xAF, 0x8A, 0xB0, 0x97, 0xD6,- 0x9E, 0x26, 0x1C, 0xA3, 0x2D, 0xB0, 0xEE, 0xFD,- 0xBC, 0x18, 0xD1, 0x63, 0x77, 0xA6, 0xBD, 0x20- },- {- 0x83, 0x49, 0xA2, 0x0F, 0xDD, 0xBA, 0xE1, 0xD8,- 0x47, 0x2B, 0x67, 0xF0, 0x34, 0x7A, 0xA0, 0xFD,- 0x40, 0x4D, 0x65, 0xC6, 0xFA, 0x14, 0x72, 0xB3,- 0x10, 0x39, 0x0D, 0x75, 0x65, 0xBA, 0x6B, 0xC1,- 0x02, 0x60, 0xD3, 0xDC, 0xE6, 0xA1, 0x4F, 0x4D,- 0xD9, 0xB8, 0xB3, 0xE0, 0xA0, 0xC4, 0x7F, 0x6D,- 0xB7, 0xE7, 0x10, 0x0A, 0x7A, 0x9B, 0x64, 0xA8,- 0x44, 0xF0, 0x10, 0x64, 0xD0, 0x79, 0x05, 0xC5- },- {- 0x23, 0x9A, 0xE3, 0xD6, 0x85, 0x9C, 0x7C, 0x97,- 0x2A, 0x5D, 0xC8, 0xB9, 0xC5, 0x5A, 0xEB, 0x93,- 0x85, 0x90, 0xCF, 0xB8, 0x55, 0x2A, 0xA3, 0x05,- 0xA6, 0xF6, 0xF3, 0x1F, 0xFA, 0x95, 0xA8, 0x40,- 0xF4, 0xEC, 0x36, 0xF6, 0xFB, 0x8F, 0x83, 0xB6,- 0x9C, 0x1D, 0xA9, 0x81, 0xFC, 0x9B, 0xA1, 0x63,- 0x60, 0xDB, 0x0F, 0x4F, 0x7C, 0x68, 0xEB, 0x54,- 0x3E, 0xD5, 0x8B, 0x28, 0x75, 0x6A, 0x1E, 0x0D- },- {- 0x7C, 0x56, 0x73, 0x28, 0x63, 0x08, 0x40, 0x8F,- 0xBC, 0x62, 0x24, 0x0E, 0x07, 0x47, 0x28, 0xB2,- 0x7A, 0x57, 0x5C, 0xAD, 0x2A, 0x15, 0x6E, 0x00,- 0xB5, 0xC0, 0x8B, 0x21, 0x8D, 0x88, 0x87, 0x79,- 0x1E, 0x47, 0xBF, 0x10, 0xB0, 0xBC, 0x61, 0xA5,- 0x82, 0x54, 0x5A, 0x24, 0x69, 0x63, 0x9C, 0xE6,- 0x28, 0xC4, 0x0F, 0x20, 0xEA, 0x8B, 0x84, 0x9C,- 0xD0, 0x05, 0x44, 0x5F, 0x29, 0xA0, 0x8C, 0xCE- },- {- 0xDD, 0x07, 0x7E, 0x76, 0x9E, 0x0D, 0xEF, 0x78,- 0xDD, 0x7A, 0xAD, 0xD5, 0x7D, 0x58, 0x42, 0x1B,- 0xDA, 0x3A, 0x1A, 0x4E, 0x69, 0x72, 0x05, 0x9F,- 0x8E, 0x64, 0x9C, 0xD6, 0xBC, 0xA4, 0x4A, 0x13,- 0xAB, 0x71, 0xEB, 0x53, 0x5D, 0x24, 0x49, 0x22,- 0x94, 0x84, 0x65, 0xD7, 0x3B, 0xD6, 0x4E, 0xFB,- 0x09, 0x10, 0x46, 0x94, 0x90, 0x66, 0x65, 0x36,- 0x03, 0x57, 0x5A, 0x2E, 0x89, 0x1E, 0xBD, 0x54- },- {- 0xB3, 0x6C, 0xEF, 0x28, 0x53, 0x2B, 0x40, 0xD8,- 0x17, 0x86, 0x28, 0xF0, 0xFA, 0xB5, 0xE5, 0xB4,- 0xA1, 0xDE, 0xC0, 0xC0, 0xE9, 0x11, 0xD7, 0x27,- 0xBF, 0x09, 0x49, 0x0F, 0x5E, 0x8D, 0x9F, 0xAC,- 0x57, 0x21, 0x3F, 0xD2, 0xA2, 0xD1, 0x2E, 0xD3,- 0xD7, 0x7A, 0x41, 0xF5, 0xE2, 0xFE, 0xCC, 0x40,- 0xE4, 0xEE, 0xCA, 0x16, 0x12, 0xF5, 0x1C, 0x45,- 0x23, 0x31, 0xAE, 0x93, 0x96, 0x62, 0x35, 0xBC- },- {- 0xDE, 0x73, 0x7D, 0xBC, 0x61, 0x2E, 0xBD, 0x31,- 0xBC, 0x49, 0xA2, 0xD7, 0xC6, 0x44, 0xD4, 0xB1,- 0x37, 0x81, 0x74, 0x19, 0x42, 0x1C, 0x32, 0xF4,- 0xE7, 0x51, 0x14, 0xD8, 0x99, 0xE3, 0x13, 0x1D,- 0x45, 0xCA, 0x54, 0x51, 0x24, 0x8F, 0x24, 0x16,- 0x9F, 0xBF, 0x17, 0xEE, 0x60, 0xA9, 0xB7, 0x07,- 0x98, 0xA4, 0xB9, 0x37, 0xCE, 0xA6, 0x27, 0x95,- 0x28, 0x96, 0x39, 0xD1, 0x8F, 0xCD, 0x89, 0xE4- },- {- 0xB4, 0xC1, 0xBB, 0xCB, 0xBC, 0xCD, 0xFC, 0xE4,- 0xD2, 0xBE, 0x9D, 0xCD, 0xB9, 0x83, 0xC1, 0xB0,- 0x20, 0xC5, 0xF7, 0x20, 0xDA, 0x5B, 0xEC, 0xF4,- 0xCB, 0x2A, 0x9A, 0x3D, 0x1B, 0x8D, 0x23, 0xCE,- 0xA7, 0xA9, 0xF5, 0xFD, 0x70, 0xD3, 0x74, 0x0E,- 0xCD, 0x67, 0xCE, 0x7D, 0x1E, 0x9C, 0x5E, 0x31,- 0xA3, 0x30, 0x2D, 0xF6, 0x6A, 0x9B, 0x5D, 0x54,- 0x30, 0x44, 0x90, 0xFB, 0xE1, 0xC4, 0xA8, 0xB9- },- {- 0xB1, 0xD6, 0x5E, 0x70, 0xC6, 0x9B, 0xA7, 0xE3,- 0xA7, 0x28, 0xE8, 0xB6, 0x44, 0x94, 0x93, 0xF2,- 0x37, 0x51, 0x0B, 0x23, 0xB6, 0xE7, 0x7D, 0x95,- 0x84, 0xD0, 0x5F, 0xF4, 0xD3, 0xF0, 0x87, 0x80,- 0x92, 0x9D, 0x74, 0xFA, 0x5B, 0xED, 0x9B, 0x75,- 0xD4, 0xD6, 0xD1, 0xCA, 0x91, 0xAB, 0x8D, 0x26,- 0x37, 0xDC, 0x2E, 0x79, 0xBA, 0x0F, 0xE0, 0x59,- 0x4A, 0xCD, 0x68, 0xFB, 0x3C, 0xC6, 0x60, 0xB9- },- {- 0xDA, 0x79, 0xF7, 0x29, 0xEA, 0xB9, 0x8C, 0x04,- 0xF3, 0x7F, 0xCC, 0x85, 0x4B, 0x69, 0xA8, 0x4E,- 0x46, 0x7D, 0xEA, 0x1E, 0x77, 0x82, 0xE7, 0xAF,- 0x02, 0xCB, 0x44, 0xA4, 0x9D, 0x21, 0x0D, 0x25,- 0x23, 0x68, 0x3D, 0x42, 0x0A, 0xC1, 0xDE, 0xC8,- 0xAD, 0x1F, 0xB4, 0x0E, 0x65, 0xAB, 0x3F, 0xE2,- 0x51, 0xA8, 0x51, 0xE2, 0x83, 0xD8, 0x58, 0x38,- 0x08, 0x42, 0x61, 0x30, 0x1E, 0xCD, 0x08, 0x9B- },- {- 0x71, 0x40, 0x40, 0x40, 0x39, 0x21, 0xAE, 0x55,- 0x48, 0xA2, 0x03, 0x39, 0xD6, 0x9E, 0x09, 0x3F,- 0x60, 0x9A, 0xA9, 0x9C, 0x22, 0xDB, 0x72, 0x59,- 0x1D, 0x1E, 0xF4, 0xFC, 0xB0, 0xAF, 0x01, 0x61,- 0x73, 0xE5, 0x77, 0xD8, 0xC1, 0xA3, 0x06, 0x3B,- 0x44, 0x3A, 0x0E, 0x48, 0xF3, 0x13, 0xCF, 0x2E,- 0x0F, 0x9B, 0x0C, 0x2E, 0xF9, 0x6A, 0x96, 0xC4,- 0x24, 0x32, 0x2C, 0xCC, 0x0C, 0xD5, 0x30, 0x4C- },- {- 0x8B, 0x2E, 0x8C, 0x3F, 0x0E, 0x3C, 0x31, 0x9B,- 0xA6, 0x7E, 0x86, 0x01, 0x4B, 0xDA, 0x68, 0x3E,- 0x53, 0x57, 0xA0, 0x40, 0x37, 0xB4, 0x56, 0x32,- 0x86, 0xAC, 0x89, 0xCD, 0xDB, 0x7E, 0xE0, 0x4C,- 0xF6, 0x67, 0x5F, 0x9A, 0xB6, 0x1F, 0xC8, 0x33,- 0x2D, 0x21, 0x8D, 0x2B, 0xCA, 0x97, 0x15, 0xE7,- 0xDB, 0xE5, 0x83, 0x72, 0xD1, 0xEE, 0xBF, 0x6B,- 0xC2, 0x94, 0x84, 0x71, 0xCF, 0xCE, 0xBB, 0x77- },- {- 0x32, 0xEE, 0x95, 0x49, 0xD4, 0xE3, 0x2F, 0x4B,- 0xE9, 0xC5, 0x00, 0xBD, 0x85, 0x43, 0xAF, 0xD0,- 0xB6, 0x97, 0x82, 0xD0, 0xB3, 0xFF, 0x7E, 0xD4,- 0x7A, 0x88, 0x1A, 0x0E, 0x49, 0x1F, 0x37, 0x65,- 0x0A, 0x21, 0xB2, 0x6C, 0x3F, 0x5D, 0x0A, 0x64,- 0xE0, 0x90, 0x58, 0xB3, 0x00, 0x4A, 0x23, 0x68,- 0xB9, 0x50, 0xE4, 0x72, 0x30, 0xC2, 0x29, 0x66,- 0xD3, 0xF7, 0x9D, 0xA7, 0xBA, 0xA0, 0xB8, 0x7F- },- {- 0xCA, 0xE7, 0xF2, 0x92, 0x71, 0x37, 0x82, 0xC4,- 0x71, 0xFE, 0x31, 0x78, 0xA9, 0x42, 0x0C, 0xD4,- 0xC1, 0x1F, 0xCD, 0x3F, 0x6D, 0xBE, 0x5D, 0x15,- 0xC8, 0x4A, 0xB7, 0x35, 0x3C, 0x73, 0x9E, 0xF0,- 0x64, 0x16, 0x39, 0xA2, 0xF9, 0x2A, 0xED, 0x31,- 0xC5, 0x6A, 0x20, 0x21, 0xCC, 0x5E, 0x58, 0xCB,- 0xEA, 0xD3, 0x74, 0xE2, 0xDC, 0x8A, 0x0D, 0xBC,- 0xE5, 0x45, 0x0F, 0xE7, 0xA0, 0x18, 0xCF, 0xA4- },- {- 0xF1, 0x7F, 0xEF, 0xAE, 0xAE, 0x7D, 0x40, 0xCD,- 0x88, 0x5D, 0xAC, 0x0B, 0xC3, 0x50, 0xC0, 0x27,- 0x36, 0x68, 0xEA, 0x02, 0x22, 0xDF, 0x5C, 0x75,- 0x69, 0x4F, 0x5C, 0xB3, 0xA3, 0x21, 0x51, 0x9F,- 0x6E, 0x0E, 0xC4, 0x3B, 0xA0, 0xC8, 0x59, 0x3D,- 0xC7, 0x34, 0x13, 0x41, 0xE5, 0x19, 0x48, 0x8F,- 0x20, 0xAB, 0xD5, 0xB8, 0x12, 0x4D, 0xFA, 0xCE,- 0xA5, 0xCD, 0xE0, 0x96, 0x5B, 0x69, 0x70, 0xF9- },- {- 0xE2, 0xCF, 0x86, 0xDD, 0xC8, 0x42, 0x4E, 0xE5,- 0x47, 0xEB, 0x72, 0x45, 0xB7, 0x32, 0x5E, 0x02,- 0xF2, 0xE3, 0xAC, 0x01, 0x3C, 0x8D, 0x38, 0x6B,- 0x3D, 0x2E, 0x09, 0x20, 0x8A, 0x9B, 0xCC, 0x0B,- 0x44, 0xC4, 0xC4, 0x38, 0xEA, 0xAF, 0x52, 0xD2,- 0x07, 0x7E, 0x91, 0x77, 0xEB, 0x8E, 0xE1, 0xD5,- 0x90, 0x75, 0xB5, 0x25, 0x92, 0x20, 0x20, 0x62,- 0x22, 0x93, 0x54, 0xBF, 0x23, 0xC9, 0x62, 0x39- },- {- 0x38, 0xF2, 0x6A, 0x11, 0x02, 0xCB, 0x16, 0x2D,- 0x35, 0x1F, 0x84, 0x3B, 0x3C, 0x49, 0xF6, 0xFF,- 0x85, 0x44, 0x16, 0x33, 0xB6, 0x70, 0x4A, 0x28,- 0x6A, 0xF8, 0x1C, 0xCB, 0xAE, 0x5A, 0x67, 0xD3,- 0x01, 0x5C, 0xC0, 0xEF, 0xAF, 0xB7, 0x05, 0x7D,- 0xC2, 0xB2, 0x8D, 0x67, 0x66, 0xE8, 0x2A, 0x06,- 0x8A, 0x4C, 0x0B, 0x52, 0x4B, 0x66, 0xD0, 0xA6,- 0x32, 0x77, 0x5D, 0x93, 0x06, 0x15, 0x75, 0xF9- },- {- 0xA2, 0xC4, 0x30, 0x2D, 0xAC, 0xA7, 0xA7, 0xC6,- 0x32, 0xF6, 0x76, 0x30, 0x4E, 0x62, 0x75, 0xC1,- 0xC1, 0xF0, 0xDB, 0xFE, 0x38, 0xDC, 0x57, 0x1C,- 0xB2, 0x3E, 0x1F, 0x7B, 0xA5, 0xDC, 0x18, 0x18,- 0x0F, 0xC4, 0x8A, 0x01, 0x5F, 0x92, 0x7C, 0x89,- 0x96, 0x7C, 0x1E, 0x10, 0x4E, 0x66, 0xF5, 0xEA,- 0x5B, 0x2D, 0xD3, 0x1D, 0x78, 0x1C, 0x38, 0x49,- 0xBF, 0xC6, 0x49, 0x22, 0x0C, 0x38, 0x5C, 0x82- },- {- 0xC1, 0x9C, 0x6B, 0x3F, 0xB5, 0x35, 0x2B, 0xB3,- 0x94, 0xC2, 0x68, 0x46, 0x52, 0x3C, 0x25, 0xE8,- 0x26, 0x5D, 0x50, 0x5F, 0x50, 0x1F, 0x96, 0x03,- 0xA4, 0xF8, 0xBD, 0x55, 0x38, 0x6C, 0xF4, 0xCC,- 0x9F, 0x4D, 0x71, 0xF3, 0x8F, 0xF4, 0x45, 0xF4,- 0xEF, 0xC8, 0x30, 0x98, 0xD4, 0x79, 0x69, 0x33,- 0x4E, 0x79, 0xA2, 0xBC, 0xB4, 0x02, 0x6B, 0xC6,- 0x3B, 0x79, 0x59, 0xDE, 0xDB, 0x62, 0xB7, 0xBD- },- {- 0x1F, 0x4A, 0xB9, 0x84, 0x0A, 0x1C, 0xFA, 0x8F,- 0xE6, 0xC5, 0x62, 0x2D, 0x9B, 0x53, 0x8B, 0xEC,- 0xB8, 0x80, 0x7A, 0x87, 0x78, 0xB6, 0x9D, 0x93,- 0x05, 0xF9, 0x08, 0x57, 0x65, 0x73, 0xB2, 0x0C,- 0xA3, 0x70, 0x4E, 0x89, 0x12, 0x97, 0x26, 0xD5,- 0x02, 0xE1, 0x98, 0x58, 0x8D, 0x07, 0x26, 0x68,- 0xBF, 0x03, 0x63, 0x0B, 0x5B, 0x5A, 0x92, 0x32,- 0xFF, 0x39, 0x25, 0x27, 0x24, 0x9D, 0xF9, 0x9B- },- {- 0xFE, 0x03, 0x17, 0x7B, 0x58, 0xB4, 0x88, 0x83,- 0xA8, 0x6D, 0x42, 0x68, 0x33, 0x4B, 0x95, 0x91,- 0xD9, 0xFB, 0xD8, 0xBF, 0x7C, 0xC2, 0xAA, 0xCC,- 0x50, 0x25, 0xEF, 0x47, 0x6B, 0x45, 0x33, 0xBA,- 0x7B, 0xD7, 0x81, 0xDF, 0x01, 0x11, 0x47, 0xB3,- 0xCF, 0x51, 0x1D, 0x8B, 0x3D, 0xCD, 0x8C, 0x78,- 0x0D, 0x30, 0xD7, 0xDA, 0x71, 0x8C, 0x22, 0x44,- 0x23, 0x19, 0x81, 0x7B, 0xE3, 0x18, 0x6B, 0xC5- },- {- 0xF4, 0xC3, 0xB0, 0x59, 0x10, 0x5B, 0x6A, 0xA5,- 0xFE, 0x78, 0x84, 0x3A, 0x07, 0xD9, 0x4F, 0x71,- 0x20, 0x62, 0xCB, 0x5A, 0x4D, 0xD6, 0x05, 0x9F,- 0x97, 0x90, 0x4D, 0x0C, 0x57, 0x97, 0x3B, 0xA8,- 0xDF, 0x71, 0xD1, 0x5A, 0x51, 0x1A, 0x06, 0x68,- 0x64, 0xFE, 0x45, 0x5E, 0xDC, 0x9E, 0x5F, 0x16,- 0x52, 0x4C, 0xEC, 0x7E, 0xE2, 0x48, 0xEE, 0x3E,- 0xC9, 0x29, 0x06, 0x3B, 0xD1, 0x07, 0x98, 0xDA- },- {- 0x57, 0xA1, 0x6F, 0x96, 0x4B, 0x18, 0x1B, 0x12,- 0x03, 0xA5, 0x80, 0x3B, 0x73, 0x81, 0x7D, 0x77,- 0x44, 0x83, 0x82, 0x6C, 0xEA, 0x11, 0x3B, 0x9C,- 0xCF, 0xCF, 0x0E, 0xB8, 0x7C, 0xB2, 0x30, 0x64,- 0x28, 0x49, 0x62, 0xD8, 0x47, 0xBB, 0x1F, 0xAE,- 0x8C, 0xBF, 0x5C, 0xC6, 0x3B, 0x3C, 0xEA, 0xA1,- 0x24, 0x1E, 0xA4, 0x2C, 0x63, 0xF8, 0x98, 0x01,- 0x1F, 0xC4, 0xDB, 0xCA, 0xE6, 0xF5, 0xE8, 0xC5- },- {- 0x79, 0x52, 0xFC, 0x83, 0xAC, 0xF1, 0x3A, 0x95,- 0xCA, 0x9C, 0x27, 0xA2, 0x15, 0x6D, 0x9C, 0x1B,- 0x63, 0x00, 0xB0, 0xEF, 0x79, 0x0F, 0x57, 0x2B,- 0xC3, 0x94, 0xC6, 0x77, 0xF7, 0xC1, 0x46, 0x29,- 0xEB, 0xD8, 0xE7, 0xD5, 0xD7, 0xC7, 0xF1, 0xA5,- 0xEB, 0xBD, 0xC3, 0x90, 0xCC, 0x08, 0xCD, 0x58,- 0xC2, 0x00, 0x89, 0x00, 0xCB, 0x55, 0xEB, 0x05,- 0xE4, 0x44, 0xA6, 0x8C, 0x3B, 0x39, 0x3E, 0x60- },- {- 0x2C, 0x22, 0x40, 0xD6, 0xB5, 0x41, 0xF4, 0x29,- 0x4F, 0xF9, 0x76, 0x79, 0x1D, 0x35, 0xE6, 0xA2,- 0xD4, 0x92, 0xF5, 0x7A, 0x91, 0x5F, 0xBA, 0xC5,- 0x83, 0x26, 0x60, 0xC1, 0x0E, 0x9C, 0x96, 0x46,- 0x5C, 0x7B, 0xD5, 0xFC, 0xA7, 0x51, 0xBF, 0x68,- 0xE2, 0x67, 0x3A, 0x63, 0x8E, 0x3A, 0xF7, 0x35,- 0xB0, 0x20, 0x91, 0xD7, 0x5D, 0x1A, 0x7F, 0x89,- 0xE3, 0xF7, 0x61, 0xC5, 0xDF, 0x82, 0x1A, 0x6B- },- {- 0x59, 0xDC, 0x84, 0x6D, 0x34, 0x05, 0xCC, 0xD8,- 0x06, 0xF8, 0xFA, 0x20, 0xC8, 0x96, 0x9E, 0xF6,- 0x8A, 0x43, 0x85, 0xEF, 0x6C, 0x27, 0x4E, 0xEE,- 0x6D, 0xC0, 0x69, 0x2C, 0x3E, 0xCF, 0xB1, 0xA8,- 0x34, 0xCE, 0x64, 0x43, 0x76, 0xC5, 0x2B, 0x80,- 0x42, 0x1B, 0xAE, 0x94, 0xD6, 0xC7, 0xFD, 0xCC,- 0xA5, 0xA8, 0xF1, 0x85, 0x9C, 0x45, 0xA1, 0x0C,- 0x4E, 0xB2, 0x74, 0x82, 0x6F, 0x1F, 0x08, 0x9F- },- {- 0xB7, 0x52, 0x96, 0x27, 0x07, 0xA1, 0x7B, 0x66,- 0x4F, 0xAE, 0xB3, 0x13, 0xE2, 0xB9, 0x52, 0xDC,- 0x03, 0xE7, 0x4A, 0x7E, 0x94, 0x47, 0x09, 0x8A,- 0xA6, 0xD4, 0xEA, 0x5B, 0xD2, 0x87, 0xD0, 0x7A,- 0x12, 0x25, 0xEC, 0xED, 0xA9, 0x81, 0x15, 0x70,- 0x58, 0x0A, 0x51, 0x2B, 0x2B, 0x20, 0xB3, 0xFC,- 0xFC, 0xA7, 0x0B, 0x44, 0xF6, 0x45, 0x4E, 0xF3,- 0xC3, 0x52, 0x4C, 0xCA, 0x6B, 0x69, 0x47, 0x5B- },- {- 0xDA, 0x0D, 0x8E, 0x54, 0x61, 0xF8, 0x10, 0x24,- 0xEF, 0xFE, 0xED, 0x5D, 0x70, 0x76, 0xA0, 0x4F,- 0xED, 0xED, 0xAC, 0x57, 0xE7, 0xC9, 0x8A, 0x59,- 0x45, 0xBF, 0xDE, 0x66, 0x75, 0x58, 0x18, 0x85,- 0x1B, 0xE1, 0x13, 0x6B, 0x71, 0xF4, 0x33, 0xA5,- 0x6B, 0xDA, 0x18, 0x41, 0xAE, 0x71, 0x39, 0x2C,- 0x4B, 0x82, 0x90, 0x82, 0x63, 0x59, 0xF5, 0x87,- 0x22, 0x3C, 0x3E, 0xF7, 0x37, 0xFF, 0x73, 0x2A- },- {- 0xED, 0xB8, 0x6A, 0x23, 0x7C, 0x6F, 0x13, 0x7D,- 0xFB, 0xB3, 0x47, 0x01, 0x1E, 0xDB, 0x4C, 0x6E,- 0x86, 0x1F, 0x4D, 0x58, 0x14, 0x60, 0x85, 0x46,- 0x34, 0x41, 0x04, 0x2F, 0xA3, 0x63, 0x16, 0xF1,- 0xFA, 0xF8, 0x87, 0x11, 0xBB, 0x0F, 0x18, 0x11,- 0xDF, 0xBB, 0xBF, 0xA7, 0xB5, 0x1F, 0x9C, 0xE2,- 0xD4, 0x96, 0x05, 0x24, 0x3E, 0xD0, 0x16, 0xCB,- 0xAD, 0x68, 0x85, 0xEA, 0xE2, 0x03, 0x67, 0x4F- },- {- 0xE6, 0xD8, 0xE0, 0xFB, 0xAA, 0x29, 0xDB, 0xEB,- 0x60, 0xF3, 0xC7, 0xF9, 0x85, 0xBA, 0xD7, 0x54,- 0xD7, 0x21, 0xAA, 0xC6, 0x3D, 0xA6, 0xF4, 0x49,- 0x0C, 0x9D, 0x7E, 0xA2, 0x31, 0xD2, 0x62, 0x2F,- 0xDF, 0xDE, 0xF1, 0x48, 0xD0, 0xCA, 0x44, 0x2B,- 0x8D, 0x59, 0xCF, 0x3E, 0x4F, 0x98, 0x35, 0xCB,- 0xC2, 0x40, 0xAF, 0x40, 0xFB, 0xA6, 0x3A, 0x2E,- 0xA5, 0xA2, 0x35, 0xD4, 0x6E, 0xEA, 0x6E, 0xAC- },- {- 0xD4, 0xE4, 0x63, 0xC4, 0x88, 0x29, 0x87, 0xEB,- 0x44, 0xA5, 0xED, 0x0C, 0x82, 0x1D, 0x68, 0xB0,- 0xFE, 0xF9, 0x9D, 0x6F, 0x53, 0xA5, 0x7B, 0xF3,- 0x19, 0xBD, 0xAC, 0x25, 0xAC, 0x38, 0xEB, 0x0B,- 0x23, 0xE1, 0x13, 0x8C, 0x00, 0x12, 0xF5, 0xF3,- 0x83, 0x46, 0xA1, 0xDE, 0x9D, 0x4A, 0x99, 0x2A,- 0x64, 0xB9, 0x42, 0x83, 0x4A, 0x85, 0x6E, 0xFB,- 0xAA, 0x06, 0x20, 0xBD, 0xA2, 0x9F, 0x6A, 0x86- },- {- 0x42, 0xD8, 0x10, 0xD0, 0x1C, 0x2D, 0xA2, 0x47,- 0x35, 0xF0, 0x4A, 0x5E, 0x90, 0x13, 0x38, 0xFD,- 0xFC, 0x2D, 0xE1, 0x71, 0x5F, 0xF6, 0x64, 0x3A,- 0x37, 0x2F, 0x88, 0x0E, 0x6C, 0x5C, 0x6C, 0x13,- 0xD2, 0xB3, 0xAD, 0x70, 0x77, 0x46, 0x9D, 0x64,- 0x33, 0x54, 0x05, 0x4D, 0x32, 0xDD, 0x80, 0x49,- 0xEA, 0x63, 0x73, 0x2B, 0x57, 0x45, 0xBD, 0xB2,- 0x3B, 0xE2, 0xB5, 0x8E, 0x48, 0xC1, 0x01, 0x3A- },- {- 0xCF, 0xBF, 0x54, 0x30, 0x07, 0x6F, 0x82, 0x5A,- 0x3B, 0xBB, 0x88, 0xC1, 0xBC, 0x0A, 0xEF, 0x61,- 0x25, 0x9E, 0x8F, 0x4D, 0x5F, 0xA3, 0x3C, 0x39,- 0x82, 0x50, 0x62, 0xF1, 0x5D, 0x19, 0xFD, 0x4A,- 0x01, 0x82, 0xCD, 0x97, 0x36, 0xD2, 0xAE, 0xC9,- 0x74, 0x9C, 0xCF, 0x83, 0x18, 0x6C, 0x35, 0x74,- 0xAB, 0x94, 0x42, 0x65, 0x40, 0x66, 0x0A, 0x9D,- 0xB8, 0xC3, 0xAA, 0xBB, 0xCB, 0xDD, 0x9D, 0x0F- },- {- 0x6C, 0x24, 0x34, 0xA1, 0xAF, 0xA1, 0x57, 0xAC,- 0xCC, 0x34, 0xA5, 0xC4, 0x87, 0x2D, 0xFF, 0x69,- 0xFE, 0x7F, 0x31, 0x96, 0xCB, 0x1A, 0x75, 0x0C,- 0x54, 0x1D, 0x8B, 0x73, 0x92, 0x28, 0x88, 0xBA,- 0xBE, 0x89, 0xB1, 0xC3, 0x82, 0x02, 0x21, 0x86,- 0x20, 0xD8, 0x8D, 0x77, 0xDA, 0xD9, 0xDF, 0xBA,- 0xB3, 0xFB, 0xF7, 0x40, 0xB2, 0xD1, 0xD8, 0xF3,- 0x7E, 0xAD, 0x25, 0x8E, 0x2E, 0xF1, 0x06, 0x52- },- {- 0x48, 0xB7, 0x26, 0x8A, 0xA4, 0x34, 0x2F, 0xAB,- 0x02, 0x1D, 0x14, 0x72, 0xE9, 0x25, 0x7F, 0x76,- 0x58, 0x5C, 0xC5, 0x68, 0x10, 0xC8, 0xF2, 0xA6,- 0xE1, 0xD4, 0xA8, 0x94, 0x6B, 0x77, 0x71, 0x42,- 0xD4, 0x4A, 0xE5, 0x13, 0xA8, 0x80, 0x9F, 0x2D,- 0x6D, 0xC7, 0x26, 0x30, 0x5F, 0x79, 0x44, 0x60,- 0x4D, 0x95, 0x2D, 0x4A, 0x9F, 0x08, 0x5C, 0x5C,- 0x10, 0x50, 0xBA, 0xFD, 0xD2, 0x1D, 0x1E, 0x60- },- {- 0xCE, 0xCF, 0xCE, 0x4B, 0x12, 0xC6, 0xCF, 0x53,- 0xD1, 0xB1, 0xB2, 0xD4, 0x18, 0xA4, 0x93, 0xE3,- 0xF4, 0x29, 0x17, 0x03, 0x21, 0xE8, 0x1A, 0xA2,- 0x52, 0x63, 0xAA, 0xA7, 0x15, 0xD5, 0xCA, 0x38,- 0x9F, 0x65, 0xC3, 0xAC, 0xF9, 0x9B, 0x18, 0x0E,- 0x44, 0x6B, 0x50, 0xE6, 0x01, 0xFC, 0xBF, 0x44,- 0x61, 0xD0, 0x42, 0x6A, 0x85, 0x92, 0xA0, 0x77,- 0x42, 0x20, 0x18, 0x57, 0x12, 0x5F, 0x71, 0xEE- },- {- 0x38, 0x5A, 0x75, 0x22, 0x42, 0xEB, 0x9E, 0xD5,- 0x6B, 0x07, 0x4B, 0x70, 0x2C, 0x91, 0xE7, 0x5A,- 0xEC, 0x0B, 0xE9, 0x06, 0x4B, 0xD9, 0xCF, 0x88,- 0x03, 0x04, 0xC2, 0x13, 0x27, 0x0C, 0xB2, 0xEA,- 0xE8, 0xE2, 0x1D, 0x9A, 0xE8, 0xC6, 0x08, 0x15,- 0x19, 0xF7, 0x5D, 0xFA, 0xBB, 0x00, 0x3B, 0x24,- 0x32, 0xB0, 0x47, 0x55, 0xB8, 0xC3, 0x2C, 0x97,- 0xAC, 0x29, 0x14, 0xE8, 0xBF, 0x45, 0xB2, 0x34- },- {- 0xD8, 0x9A, 0x12, 0x4A, 0x9B, 0x95, 0x8B, 0xA2,- 0x3D, 0x09, 0x20, 0x7A, 0xCF, 0xA6, 0x2A, 0x33,- 0xB8, 0x70, 0x89, 0xB2, 0x86, 0xE8, 0x43, 0x8B,- 0xDC, 0x01, 0xE2, 0x33, 0xAB, 0x2A, 0x86, 0x30,- 0xA1, 0xEE, 0xB6, 0xB2, 0xB9, 0xBA, 0x6B, 0x7D,- 0x21, 0x00, 0x10, 0x77, 0x33, 0xDE, 0xAF, 0x4C,- 0x20, 0x47, 0x8C, 0x26, 0xF2, 0x49, 0xC6, 0x89,- 0xC5, 0x26, 0x84, 0x73, 0xE2, 0xE9, 0xFA, 0x60- },- {- 0x43, 0xDE, 0x10, 0x92, 0xFF, 0x9F, 0xF5, 0x28,- 0x20, 0x6C, 0x6F, 0xCF, 0x81, 0x32, 0x2E, 0xAD,- 0x3D, 0x22, 0xEA, 0xA4, 0xC8, 0x54, 0x52, 0x15,- 0x77, 0xDF, 0x33, 0x62, 0x47, 0x49, 0x5C, 0xE1,- 0x72, 0xFC, 0x87, 0x39, 0x95, 0x30, 0x0B, 0x21,- 0xB9, 0x46, 0x10, 0xC9, 0xD2, 0xF6, 0x33, 0xB5,- 0x33, 0xBD, 0xE4, 0x56, 0x8C, 0xA0, 0x9C, 0x38,- 0x0E, 0x84, 0x68, 0xFE, 0x6A, 0xD8, 0xD8, 0x1D- },- {- 0x86, 0x8B, 0x60, 0x11, 0x99, 0xEF, 0x00, 0x0B,- 0x70, 0x5C, 0xD6, 0x4D, 0x39, 0x30, 0x26, 0x2A,- 0x5A, 0xB9, 0x10, 0xE3, 0x4E, 0x2D, 0x78, 0xE8,- 0x58, 0x7B, 0x4E, 0x01, 0x0D, 0x37, 0x6D, 0xD4,- 0xA0, 0x0D, 0xE4, 0x48, 0x67, 0xD0, 0xE9, 0x33,- 0xEE, 0x39, 0xA1, 0xFA, 0x91, 0x47, 0xD4, 0x99,- 0xD1, 0x84, 0xF3, 0xA9, 0xCF, 0x35, 0x4F, 0x2D,- 0x3C, 0x51, 0x14, 0x6F, 0xF7, 0x15, 0x2D, 0x68- },- {- 0x15, 0x17, 0xF8, 0xF0, 0x44, 0x2F, 0x0D, 0x50,- 0xBB, 0xC0, 0xAA, 0xB6, 0x84, 0x6F, 0xDC, 0xE3,- 0xB7, 0x0F, 0xAE, 0xA4, 0xBB, 0x51, 0x13, 0xAC,- 0xB2, 0x3A, 0xBE, 0x10, 0x1D, 0x99, 0xA4, 0x0A,- 0x1B, 0x76, 0xC1, 0xE8, 0xDC, 0x2E, 0xA1, 0x93,- 0x62, 0x94, 0x82, 0x3A, 0xD8, 0x35, 0x4C, 0x11,- 0xE2, 0xE9, 0x6C, 0x67, 0x12, 0xBE, 0x4C, 0xF7,- 0x7C, 0x58, 0x3F, 0xD0, 0x6B, 0x5E, 0x5C, 0x55- },- {- 0xAF, 0x4C, 0x6C, 0x67, 0xC5, 0xCA, 0x38, 0x38,- 0x73, 0x48, 0xCA, 0x3E, 0xC2, 0xBE, 0xD7, 0xFB,- 0xA8, 0xC2, 0xB3, 0xD2, 0x2D, 0xE1, 0x48, 0xD0,- 0x8A, 0x61, 0x8C, 0x29, 0x70, 0x23, 0xFB, 0x7B,- 0x6D, 0x2C, 0x15, 0x3D, 0x5E, 0xFC, 0xD1, 0x68,- 0x89, 0x99, 0x91, 0x0B, 0x20, 0xE1, 0xEA, 0xC7,- 0xC1, 0x00, 0xA2, 0xC5, 0xA6, 0xC1, 0xAC, 0xF5,- 0xE9, 0x8F, 0x14, 0x3B, 0x41, 0xDC, 0x8A, 0x12- },- {- 0xA2, 0xAD, 0x94, 0x24, 0x3B, 0x8E, 0xEA, 0x68,- 0xF5, 0xFA, 0xDD, 0x69, 0x08, 0xAD, 0xB0, 0xDA,- 0xCD, 0xAA, 0x6A, 0x6D, 0x24, 0xC2, 0x50, 0xD3,- 0x39, 0x40, 0x3D, 0xBA, 0x82, 0x31, 0xBD, 0x51,- 0xE8, 0x87, 0xCB, 0x5B, 0x1B, 0x7B, 0xDE, 0x27,- 0x74, 0xC6, 0xB0, 0x8A, 0xCC, 0xE0, 0xF7, 0x49,- 0x56, 0x48, 0xDA, 0x3B, 0xEB, 0xC7, 0xB1, 0xC2,- 0x82, 0x15, 0x08, 0xC4, 0xD3, 0x82, 0xF7, 0x30- },- {- 0x28, 0xF8, 0x8C, 0xDB, 0xE9, 0x03, 0xAD, 0x63,- 0xA0, 0x23, 0x31, 0xDE, 0x1A, 0x32, 0xAF, 0x6D,- 0xBB, 0xA8, 0x2D, 0x7F, 0xC0, 0x79, 0x87, 0x02,- 0x72, 0x49, 0x33, 0xDA, 0x77, 0x38, 0x07, 0xBC,- 0x80, 0x42, 0x78, 0x13, 0x47, 0x81, 0xF1, 0x26,- 0x23, 0x32, 0x20, 0xE3, 0x07, 0x92, 0x81, 0x31,- 0xB2, 0x47, 0x10, 0xB4, 0x67, 0x4E, 0xD7, 0x05,- 0x11, 0x2F, 0x95, 0xD1, 0xAA, 0x37, 0xA2, 0xDC- },- {- 0x5B, 0xB2, 0x92, 0x65, 0xE2, 0x46, 0xB8, 0x84,- 0xFF, 0x40, 0x91, 0x4F, 0xFA, 0x93, 0xD9, 0xA1,- 0x2E, 0xDC, 0x19, 0xEE, 0xE9, 0xCC, 0x8A, 0x83,- 0x63, 0x1D, 0x68, 0xBD, 0x46, 0xAA, 0xD3, 0x35,- 0x4B, 0xA6, 0x67, 0x4B, 0x91, 0x3F, 0x4F, 0x82,- 0x3E, 0x79, 0x1F, 0x0C, 0xB1, 0x9E, 0xA6, 0xA6,- 0x7C, 0x6E, 0x32, 0xE9, 0xBE, 0x0D, 0x0F, 0xF5,- 0x76, 0x0F, 0x16, 0xDD, 0x75, 0xA8, 0x7B, 0x5D- },- {- 0xBF, 0x3C, 0x06, 0xDC, 0x6D, 0x94, 0xE3, 0x85,- 0x9A, 0x4D, 0xAA, 0x50, 0xEC, 0xA1, 0xAF, 0x53,- 0x57, 0xE3, 0x45, 0x79, 0xE5, 0x99, 0xF8, 0x20,- 0x49, 0xE1, 0xCC, 0xA7, 0xA7, 0xD4, 0xF3, 0x3F,- 0xEA, 0x44, 0x3B, 0x44, 0x69, 0x1B, 0xD4, 0x36,- 0x88, 0xF5, 0x55, 0x05, 0x31, 0xCF, 0x22, 0xB7,- 0x12, 0x77, 0x89, 0x0B, 0xFF, 0xAE, 0x1E, 0xCE,- 0x78, 0x3F, 0x56, 0x63, 0xA1, 0xC4, 0xD7, 0x1A- },- {- 0xC9, 0x0D, 0xF5, 0x32, 0xF2, 0xF1, 0x49, 0x3A,- 0x11, 0x55, 0xBE, 0x8C, 0x2A, 0x44, 0x00, 0x92,- 0x20, 0x49, 0x97, 0x4E, 0x7D, 0x4F, 0x4B, 0x54,- 0xF8, 0x20, 0xC2, 0x26, 0x9D, 0x3B, 0x16, 0x1B,- 0x6E, 0x88, 0xEB, 0x77, 0x6B, 0x85, 0x9B, 0x89,- 0xB8, 0x56, 0x7F, 0xBC, 0x55, 0x0C, 0x4F, 0x54,- 0xAA, 0xD2, 0x7A, 0x16, 0x10, 0x65, 0x6D, 0x62,- 0x5C, 0x32, 0x7F, 0x66, 0x5D, 0xCA, 0x70, 0x7C- },- {- 0x3D, 0x39, 0xEE, 0xCC, 0x9E, 0x90, 0x42, 0x36,- 0xDC, 0x85, 0x7B, 0xA4, 0x9D, 0x55, 0xD3, 0xBA,- 0xD7, 0x65, 0x72, 0xA9, 0x1A, 0x75, 0x95, 0x03,- 0x37, 0x6B, 0x77, 0x08, 0xD6, 0x2D, 0x5A, 0x78,- 0x5C, 0x23, 0x06, 0x80, 0x59, 0xCF, 0x68, 0x89,- 0x7F, 0x23, 0xEE, 0xC5, 0x07, 0x21, 0x9B, 0x0A,- 0x02, 0xED, 0xA2, 0xD8, 0xBC, 0x94, 0xFA, 0x69,- 0x89, 0xA5, 0x14, 0x82, 0x22, 0x03, 0xC8, 0xD1- },- {- 0xE0, 0x8C, 0x54, 0xD9, 0x98, 0xF9, 0x2B, 0x7A,- 0x54, 0xA2, 0x4C, 0xA6, 0xAE, 0xB1, 0x53, 0xA6,- 0x4F, 0x9C, 0x9F, 0x1F, 0xC3, 0x36, 0x58, 0xB3,- 0xED, 0xAC, 0x2C, 0x4B, 0xB5, 0x26, 0x31, 0x58,- 0xDA, 0xDF, 0x00, 0xD3, 0x51, 0x9A, 0x11, 0x9A,- 0x56, 0x14, 0xC7, 0xF3, 0x79, 0x40, 0xE5, 0x5D,- 0x13, 0xCC, 0xE4, 0x66, 0xCB, 0x71, 0xA4, 0x07,- 0xC3, 0x9F, 0xC5, 0x1E, 0x1E, 0xFE, 0x18, 0xDA- },- {- 0x74, 0x76, 0x76, 0x07, 0x04, 0x1D, 0xD4, 0xB7,- 0xC5, 0x6B, 0x18, 0x9E, 0xE8, 0xF2, 0x77, 0x31,- 0xA5, 0x16, 0x72, 0x23, 0xEB, 0x7A, 0xF9, 0xB9,- 0x39, 0xE1, 0x18, 0xF8, 0x7D, 0x80, 0xB4, 0x9E,- 0xA8, 0xD0, 0xD0, 0x1F, 0x74, 0xF3, 0x98, 0xB1,- 0x72, 0xA8, 0xAD, 0x0D, 0xBF, 0x99, 0x41, 0x4F,- 0x08, 0xD2, 0xB7, 0xD8, 0xD7, 0x52, 0x16, 0xA1,- 0x82, 0x25, 0x27, 0x3D, 0x8D, 0x7F, 0xD0, 0x5D- },- {- 0xFE, 0xE8, 0x9A, 0x92, 0xCC, 0xF9, 0xF1, 0xEB,- 0x08, 0x4A, 0xAB, 0xA9, 0x54, 0x97, 0xEF, 0x0F,- 0x30, 0x13, 0x4C, 0x19, 0x1C, 0xF9, 0x0A, 0x49,- 0xD2, 0x2C, 0x7D, 0x2F, 0x66, 0x14, 0x99, 0x3C,- 0xBE, 0x1A, 0x4B, 0x65, 0x13, 0xED, 0xC1, 0x53,- 0x86, 0x8A, 0x3D, 0x56, 0x2B, 0x5B, 0x02, 0x26,- 0xBA, 0x8E, 0x1B, 0x0D, 0xCB, 0x69, 0xED, 0x45,- 0xAF, 0x47, 0xCE, 0x4F, 0x86, 0xBA, 0x47, 0x4A- },- {- 0xCD, 0xAE, 0x94, 0xB6, 0xD1, 0xD8, 0x35, 0xF6,- 0xC7, 0x4C, 0x76, 0xEC, 0x3A, 0x2D, 0xB6, 0x5B,- 0xBD, 0xFA, 0xE1, 0x9D, 0x7B, 0x05, 0x0D, 0xC9,- 0x5D, 0x65, 0x87, 0x33, 0xB8, 0xB2, 0x2C, 0x6F,- 0x9E, 0x0B, 0x63, 0xCC, 0x90, 0x5A, 0x29, 0xEA,- 0x88, 0x78, 0xCA, 0x39, 0x45, 0x56, 0xB3, 0x67,- 0x3C, 0x62, 0x79, 0x15, 0x46, 0xA9, 0xA1, 0xF0,- 0xD1, 0x56, 0x5F, 0xAD, 0xC5, 0x35, 0x36, 0xC1- },- {- 0xC7, 0x22, 0x8B, 0x6F, 0x00, 0x00, 0x17, 0xD2,- 0xBE, 0x4B, 0xF2, 0xAE, 0x48, 0xAD, 0xDB, 0x78,- 0x5E, 0x27, 0x35, 0xBF, 0x3C, 0x61, 0x4D, 0x3C,- 0x34, 0x23, 0x1F, 0x1D, 0x0C, 0x88, 0x7D, 0x3A,- 0x8E, 0x88, 0x88, 0x0B, 0x67, 0xAD, 0x3B, 0x2F,- 0x65, 0x23, 0xDD, 0x67, 0x19, 0x34, 0x2C, 0xD4,- 0xF0, 0x59, 0x35, 0xD2, 0xE5, 0x26, 0x7F, 0x36,- 0x80, 0xE7, 0x73, 0xBD, 0x5E, 0xAD, 0xFE, 0x1D- },- {- 0x12, 0x27, 0x44, 0xFE, 0x3F, 0xFF, 0x9A, 0x05,- 0x5F, 0x0F, 0x3B, 0xDE, 0x01, 0xEB, 0x2F, 0x44,- 0x6B, 0x0C, 0xDA, 0xF3, 0xAE, 0xD7, 0x2C, 0xAA,- 0x29, 0x40, 0x74, 0x19, 0x20, 0x12, 0x0A, 0x96,- 0x4F, 0xCF, 0xF8, 0x70, 0x99, 0xB0, 0x8E, 0xF3,- 0x34, 0x96, 0xE3, 0x99, 0x03, 0x2A, 0x82, 0xDA,- 0xAD, 0x4F, 0xED, 0x30, 0x31, 0x17, 0x2F, 0x77,- 0x47, 0x92, 0x58, 0xFA, 0x39, 0xDB, 0x92, 0xFD- },- {- 0x1F, 0xB4, 0xE3, 0x67, 0xEA, 0xB6, 0x42, 0xB7,- 0x2E, 0x43, 0xAD, 0x4A, 0xBD, 0xFC, 0xAD, 0x74,- 0x62, 0x0C, 0x3F, 0x6C, 0x63, 0xA8, 0x91, 0x31,- 0x28, 0xD2, 0x22, 0x6E, 0xB1, 0x92, 0xF9, 0x99,- 0x2E, 0xB9, 0xC8, 0xF7, 0x6A, 0xE2, 0x06, 0xD3,- 0xF5, 0xDE, 0xC7, 0x26, 0xA5, 0xA6, 0x86, 0xB4,- 0xAE, 0x37, 0xB5, 0x57, 0xAB, 0x57, 0xF9, 0x56,- 0x48, 0x53, 0x34, 0xF7, 0x3D, 0xCE, 0x02, 0xE0- },- {- 0x04, 0x25, 0xCA, 0xAA, 0x92, 0x3B, 0x47, 0xB3,- 0x50, 0x45, 0xEB, 0x50, 0x82, 0x9C, 0x04, 0x8B,- 0xC8, 0x90, 0x44, 0x4A, 0xFE, 0xEF, 0xC0, 0xAF,- 0xC9, 0xD1, 0x87, 0x7B, 0x82, 0x1E, 0x04, 0x3C,- 0x9C, 0x7B, 0x9D, 0x6D, 0xC3, 0x3F, 0xBB, 0xDF,- 0xA5, 0x37, 0xC1, 0xEC, 0xE3, 0x11, 0x96, 0x5B,- 0x2F, 0xEE, 0x89, 0x82, 0xBC, 0x46, 0xA2, 0xA7,- 0x50, 0xBF, 0xC7, 0x1D, 0x79, 0xDB, 0xEA, 0x04- },- {- 0x6B, 0x9D, 0x86, 0xF1, 0x5C, 0x09, 0x0A, 0x00,- 0xFC, 0x3D, 0x90, 0x7F, 0x90, 0x6C, 0x5E, 0xB7,- 0x92, 0x65, 0xE5, 0x8B, 0x88, 0xEB, 0x64, 0x29,- 0x4B, 0x4C, 0xC4, 0xE2, 0xB8, 0x9B, 0x1A, 0x7C,- 0x5E, 0xE3, 0x12, 0x7E, 0xD2, 0x1B, 0x45, 0x68,- 0x62, 0xDE, 0x6B, 0x2A, 0xBD, 0xA5, 0x9E, 0xAA,- 0xCF, 0x2D, 0xCB, 0xE9, 0x22, 0xCA, 0x75, 0x5E,- 0x40, 0x73, 0x5B, 0xE8, 0x1D, 0x9C, 0x88, 0xA5- },- {- 0x14, 0x6A, 0x18, 0x7A, 0x99, 0xE8, 0xA2, 0xD2,- 0x33, 0xE0, 0xEB, 0x37, 0x3D, 0x43, 0x7B, 0x02,- 0xBF, 0xA8, 0xD6, 0x51, 0x5B, 0x3C, 0xA1, 0xDE,- 0x48, 0xA6, 0xB6, 0xAC, 0xF7, 0x43, 0x7E, 0xB7,- 0xE7, 0xAC, 0x3F, 0x2D, 0x19, 0xEF, 0x3B, 0xB9,- 0xB8, 0x33, 0xCC, 0x57, 0x61, 0xDB, 0xA2, 0x2D,- 0x1A, 0xD0, 0x60, 0xBE, 0x76, 0xCD, 0xCB, 0x81,- 0x2D, 0x64, 0xD5, 0x78, 0xE9, 0x89, 0xA5, 0xA4- },- {- 0x25, 0x75, 0x4C, 0xA6, 0x66, 0x9C, 0x48, 0x70,- 0x84, 0x03, 0x88, 0xEA, 0x64, 0xE9, 0x5B, 0xD2,- 0xE0, 0x81, 0x0D, 0x36, 0x3C, 0x4C, 0xF6, 0xA1,- 0x6E, 0xA1, 0xBD, 0x06, 0x68, 0x6A, 0x93, 0xC8,- 0xA1, 0x25, 0xF2, 0x30, 0x22, 0x9D, 0x94, 0x84,- 0x85, 0xE1, 0xA8, 0x2D, 0xE4, 0x82, 0x00, 0x35,- 0x8F, 0x3E, 0x02, 0xB5, 0x05, 0xDA, 0xBC, 0x4F,- 0x13, 0x9C, 0x03, 0x79, 0xDC, 0x2B, 0x30, 0x80- },- {- 0x0E, 0x26, 0xCB, 0xC7, 0x8D, 0xC7, 0x54, 0xEC,- 0xA0, 0x6C, 0xF8, 0xCB, 0x31, 0xFC, 0xBA, 0xBB,- 0x18, 0x88, 0x92, 0xC1, 0x04, 0x50, 0x89, 0x05,- 0x49, 0xB2, 0xD4, 0x03, 0xA2, 0xA3, 0xC4, 0x57,- 0x70, 0x01, 0xF7, 0x4A, 0x76, 0xBD, 0x38, 0x99,- 0x0D, 0x75, 0x5B, 0xAE, 0x05, 0x26, 0x64, 0x83,- 0x29, 0xF6, 0x35, 0x45, 0xED, 0x16, 0x99, 0x5C,- 0xB1, 0xE6, 0x34, 0x3F, 0x18, 0x9F, 0x8E, 0x6F- },- {- 0x58, 0xE7, 0x98, 0x0B, 0x8B, 0x1A, 0x0B, 0x88,- 0xDA, 0x9D, 0xA8, 0x64, 0x0F, 0x2B, 0x96, 0xE3,- 0xE0, 0x48, 0x36, 0x61, 0x30, 0xC2, 0x66, 0x21,- 0x7D, 0xDC, 0x79, 0x53, 0x50, 0x8F, 0x4A, 0x40,- 0xD1, 0x67, 0x4D, 0xAB, 0xD3, 0x92, 0x89, 0xE3,- 0xF1, 0x0C, 0x61, 0x19, 0x68, 0xCC, 0xD1, 0xE9,- 0xCC, 0xC1, 0x8C, 0xAD, 0xC7, 0x77, 0x4A, 0x99,- 0x7D, 0xD1, 0xFA, 0x94, 0xE8, 0x35, 0x47, 0x07- },- {- 0x69, 0x6F, 0xB8, 0x47, 0x63, 0xE0, 0x23, 0x58,- 0x4B, 0x35, 0x90, 0x7A, 0x8B, 0x8A, 0xAA, 0x9E,- 0x0E, 0x78, 0x6F, 0x2C, 0xA5, 0x91, 0x45, 0x41,- 0x91, 0x58, 0x48, 0xFB, 0x6D, 0xDA, 0xB8, 0xD3,- 0xD2, 0xEA, 0xB6, 0x00, 0xC1, 0x38, 0xCE, 0x67,- 0x17, 0xB0, 0xC7, 0x02, 0x59, 0xD3, 0x19, 0x3E,- 0xA1, 0x56, 0x95, 0xC8, 0x50, 0x53, 0x7F, 0x2C,- 0x70, 0x6C, 0xA4, 0xAF, 0x15, 0x8E, 0x95, 0x7E- },- {- 0x23, 0xDE, 0x6E, 0x73, 0x07, 0x9C, 0x8C, 0x20,- 0x47, 0xA7, 0x84, 0x6A, 0x83, 0xCC, 0xAC, 0xAB,- 0xD3, 0x71, 0x16, 0x3B, 0x7B, 0x6D, 0x54, 0xEB,- 0x03, 0x2B, 0xC4, 0x9B, 0x66, 0x97, 0x42, 0xBE,- 0x71, 0x7B, 0x99, 0xDA, 0x12, 0xC6, 0x46, 0xAD,- 0x52, 0x57, 0x06, 0xF2, 0x22, 0xE1, 0xDF, 0x4A,- 0x91, 0xDD, 0x0C, 0xC6, 0x4D, 0xF1, 0x82, 0xDA,- 0x00, 0x73, 0x1D, 0x43, 0x9C, 0x46, 0xF8, 0xD2- },- {- 0xBB, 0x74, 0xF3, 0x6A, 0x9D, 0xB6, 0x96, 0xC9,- 0x33, 0x35, 0xE6, 0xC4, 0x6A, 0xAB, 0x58, 0xDB,- 0x10, 0xCB, 0x07, 0xEA, 0x4F, 0x1B, 0x71, 0x93,- 0x63, 0x05, 0x22, 0x83, 0x90, 0x95, 0x94, 0x78,- 0xF8, 0x73, 0x4E, 0x21, 0x54, 0x90, 0xE9, 0xAE,- 0x2A, 0x3E, 0xC8, 0xF7, 0xF7, 0x67, 0x33, 0xAE,- 0x3F, 0x8B, 0x9A, 0x3F, 0xD7, 0xC4, 0x06, 0xC6,- 0xCA, 0xC7, 0x09, 0x97, 0x5C, 0x40, 0xF8, 0x56- },- {- 0xEC, 0x63, 0x04, 0xD3, 0x8E, 0x23, 0x2C, 0x09,- 0x6A, 0xB5, 0x86, 0xCA, 0xDF, 0x27, 0x02, 0x6D,- 0xC5, 0xE5, 0x32, 0x17, 0xD0, 0xE8, 0xB0, 0xC6,- 0x0A, 0xDA, 0xAE, 0x22, 0xF4, 0xE8, 0xC2, 0x2D,- 0x30, 0xBC, 0x51, 0x77, 0xF1, 0xC8, 0x3A, 0xCD,- 0x92, 0x5E, 0x02, 0xA2, 0xDA, 0x89, 0x59, 0x5F,- 0xC1, 0x06, 0x09, 0x0E, 0x2E, 0x53, 0xED, 0xB3,- 0x1C, 0xDB, 0x76, 0xFF, 0x37, 0xEB, 0x61, 0x80- },- {- 0x92, 0xF9, 0xFC, 0x6B, 0xC5, 0x9A, 0x54, 0x3F,- 0x0D, 0xC9, 0xA1, 0x79, 0x8F, 0xB1, 0xE5, 0xD5,- 0x23, 0x47, 0x4E, 0x48, 0xFF, 0x3E, 0x29, 0x49,- 0x7F, 0x72, 0x80, 0xD1, 0xC4, 0x08, 0xC8, 0x66,- 0x33, 0x48, 0xFE, 0x2A, 0xF7, 0x8F, 0x6C, 0x4E,- 0x5E, 0xF5, 0xC0, 0xA0, 0x17, 0xF3, 0xD3, 0xF2,- 0x15, 0xEC, 0xDD, 0x7A, 0x40, 0x0A, 0xC5, 0x77,- 0x3B, 0x9E, 0x25, 0x60, 0x68, 0x84, 0x5A, 0x92- },- {- 0x4A, 0x25, 0xB5, 0x62, 0xF2, 0xFA, 0x01, 0xDD,- 0xEE, 0x7E, 0xA2, 0xE9, 0xFB, 0xF5, 0x2F, 0x8C,- 0x75, 0x6D, 0x28, 0xDB, 0x4A, 0x8B, 0xF7, 0x0E,- 0x74, 0x0E, 0x90, 0x27, 0x42, 0x6E, 0x51, 0x63,- 0x9D, 0xF8, 0x78, 0x8D, 0x13, 0x38, 0x56, 0x85,- 0x8D, 0x01, 0xFD, 0xDB, 0xDD, 0x5B, 0x98, 0x79,- 0x44, 0xC3, 0x00, 0xDC, 0x7F, 0x82, 0x41, 0xFB,- 0xCE, 0xFA, 0x4F, 0x12, 0x94, 0x8A, 0xFE, 0xAE- },- {- 0x34, 0x21, 0x2D, 0xD9, 0xF0, 0x65, 0x1F, 0x81,- 0x80, 0x9A, 0x14, 0xED, 0xBC, 0xF7, 0xF3, 0xAC,- 0xDE, 0xDE, 0x78, 0x72, 0xC7, 0xA4, 0x84, 0x7B,- 0xEA, 0x9F, 0x7A, 0xB7, 0x59, 0x73, 0x82, 0x47,- 0x7A, 0x4C, 0xB8, 0x47, 0x9A, 0x27, 0x63, 0x21,- 0x23, 0x5E, 0x90, 0x21, 0x57, 0x94, 0x46, 0xA4,- 0x38, 0x8A, 0x99, 0xE5, 0x60, 0xA3, 0x90, 0x7A,- 0xEE, 0xF2, 0xB4, 0x38, 0xFE, 0x6B, 0x90, 0xC4- },- {- 0xD6, 0x2C, 0xF7, 0xAB, 0xBC, 0x7D, 0x7B, 0xCD,- 0x5B, 0xEB, 0x1E, 0xE4, 0x8C, 0x43, 0xB8, 0x04,- 0xFD, 0x0D, 0xB4, 0x55, 0xE7, 0xF4, 0xFE, 0xBB,- 0xCF, 0xF1, 0x4B, 0x05, 0xBE, 0x90, 0x47, 0xE2,- 0x7E, 0x51, 0x8D, 0x6D, 0x3A, 0x6A, 0xDA, 0x4D,- 0x58, 0x63, 0xB7, 0xEC, 0x7F, 0x84, 0x92, 0x45,- 0x89, 0x40, 0xAC, 0x6B, 0xDD, 0xB5, 0x06, 0x59,- 0x2C, 0xCB, 0xC8, 0x96, 0xAF, 0xBB, 0x77, 0xA3- },- {- 0x33, 0xA3, 0xA2, 0x63, 0x6F, 0x91, 0x98, 0xD3,- 0x7A, 0x5F, 0xF1, 0xBF, 0xF9, 0xEB, 0x10, 0x02,- 0x4B, 0x28, 0x46, 0x80, 0x39, 0xF4, 0x91, 0x40,- 0x2D, 0x39, 0xB7, 0x08, 0xC5, 0x5D, 0x27, 0xE5,- 0xE8, 0xDF, 0x5E, 0x3E, 0x19, 0x49, 0x95, 0x82,- 0x35, 0xCA, 0xD9, 0x80, 0x74, 0x20, 0x96, 0xF2,- 0x77, 0x9A, 0x1D, 0x71, 0xDA, 0xD5, 0x8F, 0xAF,- 0xA3, 0xCD, 0x02, 0xCB, 0x5E, 0xAA, 0x98, 0xC5- },- {- 0xB7, 0xA3, 0x89, 0x90, 0xE6, 0xF4, 0x56, 0x4A,- 0xA3, 0xD9, 0x3A, 0x79, 0x37, 0x10, 0x0C, 0x29,- 0xF9, 0x40, 0xAF, 0xF7, 0xCB, 0x20, 0x86, 0x5A,- 0x1C, 0x21, 0x89, 0x81, 0xA5, 0x42, 0x04, 0x86,- 0x08, 0x17, 0x81, 0xF8, 0xD5, 0x0C, 0x86, 0x62,- 0x5C, 0xC5, 0xD7, 0x6D, 0x0F, 0x5C, 0xCC, 0x4E,- 0xB6, 0x5D, 0x43, 0x66, 0x09, 0x62, 0x4F, 0x21,- 0xD0, 0x53, 0x39, 0xAB, 0x0C, 0xF7, 0x9F, 0x4C- },- {- 0x9D, 0x66, 0x5A, 0x3F, 0xDD, 0x10, 0x45, 0x9E,- 0x77, 0xF0, 0x3A, 0xC8, 0xC0, 0xE2, 0x39, 0x01,- 0x94, 0x89, 0x69, 0x3C, 0xC9, 0x31, 0x5A, 0xA3,- 0xFF, 0x11, 0x29, 0x11, 0xD2, 0xAC, 0xF0, 0xB7,- 0xD2, 0x76, 0xAC, 0x76, 0x9B, 0xED, 0xFD, 0x85,- 0x2D, 0x28, 0x89, 0xDD, 0x12, 0xDB, 0x91, 0x39,- 0x8B, 0x01, 0xC4, 0xF4, 0xA5, 0xDA, 0x27, 0x80,- 0xB1, 0xDE, 0xFE, 0x0D, 0x95, 0xB6, 0x32, 0x70- },- {- 0x70, 0xFB, 0x9E, 0xFD, 0x5B, 0xCA, 0x7F, 0x19,- 0xB6, 0xE3, 0x1D, 0x64, 0x0D, 0xCF, 0x88, 0xD7,- 0x7E, 0x76, 0x8A, 0xE2, 0x27, 0xEC, 0xB3, 0xFD,- 0x6B, 0x47, 0x13, 0x78, 0x94, 0xF5, 0x49, 0xBF,- 0x1C, 0xF0, 0x6E, 0x5D, 0xB4, 0x54, 0x60, 0x44,- 0xDD, 0x9F, 0x46, 0x5C, 0x9C, 0x85, 0xF7, 0x28,- 0x4F, 0xE5, 0x4D, 0x2B, 0x71, 0x52, 0x69, 0x9B,- 0xE4, 0xBD, 0x55, 0x5A, 0x90, 0x9A, 0x88, 0xA9- },- {- 0x7A, 0xFD, 0xB0, 0x19, 0x30, 0x87, 0xE0, 0xC9,- 0xF8, 0xB4, 0xDD, 0x8B, 0x48, 0xD9, 0xF2, 0x0A,- 0xCE, 0x27, 0x13, 0xAF, 0xC7, 0x1B, 0xCC, 0x93,- 0x82, 0xB5, 0x42, 0x90, 0xAE, 0xBF, 0xFE, 0xB2,- 0xD1, 0x38, 0xF4, 0xDC, 0xF0, 0x28, 0xF9, 0xC4,- 0x3C, 0xC1, 0x80, 0x89, 0x84, 0x77, 0xA3, 0x9E,- 0x3F, 0x53, 0xA8, 0xD1, 0xBF, 0x67, 0xCE, 0xB6,- 0x08, 0x26, 0x1F, 0xAE, 0x6D, 0xDB, 0x1A, 0xBC- },- {- 0x05, 0x99, 0x0D, 0x7D, 0x7D, 0xF1, 0xD4, 0x84,- 0xF5, 0xB1, 0xCA, 0xE9, 0xEE, 0x5D, 0xFC, 0xB4,- 0x3F, 0x2C, 0xBE, 0x18, 0x6C, 0x1A, 0x5B, 0x18,- 0x1A, 0x37, 0x31, 0xD4, 0xB1, 0x54, 0x8E, 0xBF,- 0xF5, 0xBF, 0x61, 0xCB, 0x0F, 0x6D, 0x9F, 0xC2,- 0x30, 0xF2, 0x5E, 0x86, 0x78, 0xB7, 0x99, 0xE0,- 0xE8, 0x30, 0x26, 0xA0, 0x86, 0x6B, 0xF0, 0xAC,- 0xAB, 0x08, 0x9E, 0x10, 0x2E, 0x67, 0xAB, 0x6B- },- {- 0x1A, 0xF7, 0xA5, 0xCE, 0x58, 0x7C, 0x8D, 0x87,- 0xC7, 0xB7, 0x9F, 0xA3, 0xE7, 0x23, 0xD7, 0x4C,- 0xE0, 0x26, 0xB5, 0x28, 0x67, 0x52, 0xFD, 0x0C,- 0x37, 0x42, 0xC6, 0xF0, 0x41, 0x8E, 0xD7, 0x85,- 0x99, 0x0D, 0x21, 0xF2, 0x8D, 0xA8, 0x39, 0xCE,- 0x82, 0x12, 0xED, 0x55, 0x0C, 0x37, 0x3E, 0x6D,- 0x3A, 0x75, 0xD5, 0x5C, 0x31, 0x77, 0x04, 0x41,- 0xEE, 0xAF, 0xF2, 0xD5, 0x0F, 0x6E, 0x61, 0xB6- },- {- 0xDD, 0xEE, 0x0C, 0x76, 0xC9, 0xBD, 0xD3, 0x2D,- 0x70, 0x49, 0x35, 0x4C, 0xFC, 0x85, 0xDC, 0x68,- 0x67, 0xE2, 0x49, 0x2E, 0x47, 0xFE, 0xB0, 0x8E,- 0x39, 0x83, 0xD0, 0xB6, 0x78, 0x84, 0x5D, 0x7E,- 0xC6, 0xC9, 0x79, 0x3C, 0x33, 0x26, 0xBF, 0xDC,- 0x1E, 0x11, 0x32, 0x76, 0xD1, 0x77, 0xFE, 0x38,- 0x82, 0x52, 0x04, 0xDD, 0x00, 0x07, 0x39, 0x89,- 0xC0, 0x81, 0xCC, 0x3B, 0x71, 0xC6, 0x8D, 0x5F- },- {- 0xDE, 0x07, 0x06, 0x48, 0xB3, 0x7C, 0x47, 0xDC,- 0x9F, 0x2F, 0x6D, 0x2A, 0xB2, 0x07, 0x73, 0xCD,- 0x82, 0xFA, 0x57, 0x25, 0xA6, 0x90, 0x0E, 0xB7,- 0x1C, 0xDD, 0xB0, 0xC9, 0xF3, 0x9B, 0x31, 0xDF,- 0x6D, 0x07, 0x73, 0x24, 0x6E, 0x8E, 0xF9, 0x03,- 0x49, 0x67, 0x75, 0x2D, 0xB7, 0xED, 0x22, 0x73,- 0x3F, 0x43, 0x79, 0x94, 0x8D, 0xC3, 0x96, 0xDC,- 0x35, 0xAD, 0xBB, 0xE9, 0xF6, 0x53, 0x77, 0x40- },- {- 0xA6, 0x45, 0x6F, 0xBC, 0xFF, 0x9E, 0x3D, 0x5B,- 0x11, 0x6A, 0x0E, 0x33, 0x1A, 0x1F, 0x97, 0x4F,- 0x07, 0x0E, 0x95, 0x56, 0x09, 0x78, 0x1F, 0xA5,- 0x99, 0xD6, 0x08, 0xA3, 0x1D, 0xA7, 0x6A, 0xD8,- 0xAB, 0xFE, 0x34, 0x66, 0x17, 0xC2, 0x57, 0x86,- 0x51, 0x3B, 0x2C, 0x44, 0xBF, 0xE2, 0xCB, 0x45,- 0x7C, 0x43, 0xFA, 0x6F, 0x45, 0x36, 0x1C, 0xA9,- 0xC6, 0x34, 0x13, 0x11, 0xB7, 0xDD, 0xFB, 0xD5- },- {- 0x5C, 0x95, 0xD3, 0x82, 0x02, 0x18, 0x91, 0x04,- 0x8B, 0x5E, 0xC8, 0x1C, 0xC8, 0x8E, 0x66, 0xB1,- 0xB4, 0xD8, 0x0A, 0x00, 0xB5, 0xEE, 0x66, 0xB3,- 0xC0, 0x30, 0x77, 0x49, 0xE6, 0xF2, 0x4D, 0x17,- 0x0D, 0x23, 0xFA, 0xCC, 0x8E, 0xB2, 0x53, 0xB3,- 0x56, 0x2B, 0xF8, 0xA4, 0x5C, 0x37, 0x99, 0x0C,- 0xD2, 0xD3, 0xE4, 0x43, 0xB1, 0x8C, 0x68, 0xBB,- 0xCC, 0x6C, 0x83, 0x1D, 0xFD, 0xE2, 0xF8, 0xE5- },- {- 0xE3, 0x74, 0x00, 0xDB, 0xD9, 0x21, 0x0F, 0x31,- 0x37, 0xAC, 0xAF, 0x49, 0x24, 0x2F, 0xA1, 0x23,- 0xA0, 0x52, 0x95, 0x8A, 0x4C, 0x0D, 0x98, 0x90,- 0x62, 0x47, 0xD5, 0x35, 0xA3, 0x51, 0xFD, 0x52,- 0x29, 0x6E, 0x70, 0x10, 0x32, 0x5B, 0xDA, 0x84,- 0x1F, 0xA2, 0xAA, 0xB4, 0x47, 0x63, 0x76, 0x3C,- 0x55, 0x04, 0xD7, 0xB3, 0x0C, 0x6D, 0x79, 0xFC,- 0x1D, 0xC8, 0xCF, 0x10, 0x24, 0x46, 0x6D, 0xB0- },- {- 0x52, 0x73, 0xA3, 0xA1, 0x3C, 0xF0, 0xEC, 0x72,- 0x00, 0x44, 0x2C, 0xBD, 0x7B, 0x37, 0x44, 0x66,- 0xA7, 0x19, 0x0D, 0xDC, 0xA1, 0x31, 0xD9, 0x63,- 0xF8, 0xF8, 0x39, 0x65, 0xAE, 0xD3, 0xDD, 0x86,- 0xE9, 0xD4, 0x5A, 0xB4, 0x89, 0xB9, 0xC5, 0x62,- 0x47, 0xC9, 0xF2, 0xAA, 0x69, 0xFD, 0x7E, 0x31,- 0x87, 0xB8, 0xFA, 0x0D, 0xAC, 0x77, 0xC4, 0x7C,- 0xB2, 0x95, 0xBA, 0x62, 0x96, 0x78, 0x43, 0x94- },- {- 0x2A, 0xDB, 0x93, 0x49, 0xA9, 0xEC, 0x37, 0xFF,- 0x49, 0x62, 0xF4, 0x21, 0x7E, 0x80, 0xEB, 0xDC,- 0xD3, 0x60, 0x96, 0x7B, 0x51, 0x3D, 0x12, 0x02,- 0xD9, 0x98, 0x28, 0x31, 0x15, 0x5D, 0x2F, 0x43,- 0xEB, 0x9A, 0xDD, 0x63, 0xB5, 0xEC, 0x10, 0xD3,- 0xD0, 0x43, 0x0D, 0xC9, 0xCF, 0x76, 0x48, 0x11,- 0x7F, 0xC6, 0x0B, 0xAB, 0xBF, 0x8E, 0xBF, 0x19,- 0xFA, 0xCE, 0xE5, 0x50, 0x45, 0x5B, 0x60, 0xC9- },- {- 0xAC, 0xAA, 0xDA, 0x3E, 0x47, 0x37, 0xC6, 0x63,- 0xEB, 0xF0, 0x3C, 0x02, 0x49, 0xCC, 0xA6, 0xF3,- 0x17, 0x9A, 0x03, 0x84, 0xEA, 0x2A, 0xB1, 0x35,- 0xD4, 0xD7, 0xA2, 0xBB, 0x8A, 0x2F, 0x40, 0x53,- 0x9C, 0xDC, 0xE8, 0xA3, 0x76, 0x0F, 0xD1, 0x3D,- 0xEE, 0xEC, 0xD1, 0x60, 0x61, 0x7F, 0x72, 0xDE,- 0x63, 0x75, 0x4E, 0x21, 0x57, 0xCA, 0xDC, 0xF0,- 0x67, 0x32, 0x9C, 0x2A, 0x51, 0x98, 0xF8, 0xE0- },- {- 0xEF, 0x15, 0xE6, 0xDB, 0x96, 0xE6, 0xD0, 0xC1,- 0x8C, 0x70, 0xAD, 0xC3, 0xCD, 0xB3, 0x2B, 0x28,- 0x67, 0x74, 0x02, 0xE8, 0xEA, 0x44, 0x11, 0xEA,- 0x2F, 0x34, 0x68, 0xED, 0x93, 0x82, 0xE1, 0x9B,- 0xFE, 0xCA, 0xF5, 0xAC, 0xB8, 0x28, 0xA5, 0x2B,- 0xE1, 0x6B, 0x98, 0x1E, 0x48, 0x7E, 0x5B, 0xB4,- 0xA1, 0x43, 0x08, 0x65, 0x35, 0x8E, 0x97, 0x9F,- 0xB1, 0x07, 0x1F, 0xB9, 0x51, 0x14, 0xFF, 0xDD- },- {- 0x05, 0x7E, 0xAB, 0x8F, 0xA6, 0x1C, 0x23, 0x09,- 0x67, 0xD9, 0x5D, 0xFB, 0x75, 0x45, 0x57, 0x0E,- 0x34, 0x1A, 0xE3, 0xC6, 0x73, 0x7C, 0x7D, 0xB2,- 0xA2, 0x27, 0xD9, 0x0F, 0xF3, 0x15, 0xD0, 0x98,- 0xD4, 0x76, 0xF7, 0x15, 0x77, 0x9E, 0x67, 0x72,- 0xB4, 0xED, 0x37, 0x54, 0x82, 0x66, 0xE6, 0x59,- 0x8C, 0x6F, 0x09, 0x69, 0x13, 0xC2, 0xFD, 0xD8,- 0xD6, 0xE4, 0x4F, 0xE2, 0xB5, 0x4D, 0x97, 0x80- },- {- 0xED, 0xE6, 0x8D, 0x1B, 0x13, 0xE7, 0xEF, 0x78,- 0xD9, 0xC4, 0xEE, 0x10, 0xEC, 0xEB, 0x1D, 0x2A,- 0xEE, 0xC3, 0xB8, 0x15, 0x7F, 0xDB, 0x91, 0x41,- 0x8C, 0x22, 0x19, 0xF6, 0x41, 0x49, 0x74, 0x70,- 0x17, 0xAC, 0xA7, 0xD4, 0x65, 0xB8, 0xB4, 0x7F,- 0xFA, 0x53, 0x64, 0x4B, 0x8B, 0xC6, 0xDA, 0x12,- 0xDD, 0x45, 0xD1, 0x05, 0x5E, 0x47, 0xB4, 0xD8,- 0x39, 0x0E, 0xB2, 0xBD, 0x60, 0x2B, 0xA0, 0x30- },- {- 0x27, 0xF8, 0x56, 0xE6, 0x3E, 0xB9, 0x4D, 0x08,- 0xFB, 0xBE, 0x50, 0x22, 0xB0, 0xED, 0xDB, 0xC7,- 0xD8, 0xDB, 0x86, 0x5E, 0xF4, 0xFE, 0xC2, 0x05,- 0x86, 0xDF, 0x3D, 0xD9, 0x02, 0xA0, 0x5B, 0x26,- 0x35, 0x9E, 0x26, 0x7C, 0x78, 0x8D, 0x7C, 0x88,- 0x03, 0x2E, 0x76, 0x6B, 0x11, 0x87, 0x40, 0x20,- 0x0F, 0x49, 0xCB, 0x4D, 0x6E, 0xDB, 0x15, 0x61,- 0xB2, 0xDE, 0x7D, 0xC6, 0x5E, 0xE6, 0x42, 0x3B- },- {- 0xE9, 0xE9, 0x8D, 0x6D, 0xE0, 0xEF, 0x53, 0xFD,- 0x24, 0x27, 0x66, 0x1E, 0x1A, 0xCF, 0x10, 0x3D,- 0x4C, 0xAA, 0x4D, 0xC6, 0x10, 0x03, 0x62, 0x09,- 0xEC, 0x99, 0x74, 0x19, 0xC1, 0x20, 0x63, 0x1C,- 0x2C, 0x09, 0x4A, 0x8E, 0xE7, 0x82, 0x2D, 0x43,- 0xF8, 0x77, 0x80, 0x11, 0xC6, 0x03, 0x11, 0x1F,- 0x26, 0x28, 0xF8, 0x97, 0xC9, 0xB4, 0x31, 0x31,- 0x54, 0x77, 0x75, 0x6B, 0x03, 0x2E, 0x1F, 0x8D- },- {- 0x52, 0xEB, 0x1E, 0x6C, 0x8A, 0x54, 0x49, 0x2C,- 0xA7, 0x60, 0xB5, 0x6C, 0xA8, 0x7D, 0xA3, 0xE1,- 0xA9, 0xA6, 0xD8, 0xA4, 0x21, 0x92, 0x19, 0x35,- 0x1D, 0x18, 0x71, 0x5A, 0x9A, 0x2C, 0x26, 0x70,- 0x8B, 0xB7, 0x12, 0xCD, 0xAC, 0x04, 0x34, 0x48,- 0x2E, 0x55, 0x1C, 0xB0, 0x9E, 0x3F, 0x16, 0x33,- 0x8D, 0xE2, 0x9B, 0xE2, 0xC6, 0x67, 0x40, 0xC3,- 0x44, 0xDF, 0x54, 0x88, 0xC5, 0xC2, 0xBB, 0x26- },- {- 0x47, 0x3F, 0xA6, 0xC5, 0x1A, 0x48, 0x10, 0x5F,- 0x72, 0x1C, 0x5C, 0xB8, 0xDB, 0xA6, 0x1C, 0x64,- 0xA1, 0xE3, 0xDD, 0xCC, 0xC3, 0x25, 0x0E, 0x68,- 0x22, 0x62, 0xF2, 0x12, 0xC0, 0x1A, 0xB4, 0x87,- 0x4A, 0xFF, 0x68, 0x8F, 0xEA, 0x96, 0x37, 0x73,- 0x9E, 0x2A, 0x25, 0xD2, 0xEE, 0x88, 0xDB, 0xDC,- 0xC4, 0xF0, 0x4D, 0x01, 0x47, 0x9B, 0x30, 0x17,- 0x17, 0x53, 0x3A, 0x64, 0x32, 0xB8, 0x50, 0xCD- },- {- 0x6B, 0x76, 0x60, 0xD4, 0x10, 0xEA, 0xE5, 0xF3,- 0x5A, 0xD0, 0xAE, 0x85, 0xE6, 0x3D, 0xA4, 0x53,- 0xEB, 0xB0, 0x57, 0xE4, 0x3F, 0x42, 0xE8, 0x42,- 0xCB, 0xF6, 0x25, 0x0D, 0xA6, 0x78, 0x66, 0xB4,- 0x24, 0x0D, 0x57, 0xC8, 0x3B, 0x77, 0x1B, 0x0F,- 0x70, 0x66, 0x3E, 0x17, 0xFB, 0xD9, 0x08, 0x7F,- 0x76, 0xB4, 0xCE, 0x6B, 0xCD, 0x0B, 0x50, 0x2E,- 0x33, 0x74, 0xB1, 0x50, 0x9B, 0xBA, 0x55, 0xA8- },- {- 0xA4, 0xD0, 0x8A, 0xCA, 0x7A, 0x9E, 0xA6, 0x43,- 0x99, 0x99, 0xEA, 0x21, 0xE4, 0xCF, 0xE9, 0x86,- 0x9B, 0xB9, 0x0E, 0x3A, 0x01, 0x48, 0x71, 0xAD,- 0x88, 0xED, 0x3A, 0x97, 0xAA, 0x89, 0x15, 0x95,- 0x1C, 0x3F, 0xD0, 0xB3, 0x93, 0x3A, 0x50, 0x85,- 0x88, 0x93, 0x8A, 0xF7, 0x54, 0x49, 0x44, 0xEF,- 0x43, 0xC4, 0x40, 0xAA, 0x8F, 0xF1, 0xE5, 0xA8,- 0x18, 0xA4, 0x66, 0x43, 0x5D, 0xE7, 0x0F, 0xA8- },- {- 0x85, 0xE0, 0xE9, 0xB5, 0x0D, 0x2D, 0xB0, 0x22,- 0xC2, 0x39, 0xD7, 0x23, 0x2A, 0xE4, 0x7C, 0x02,- 0x59, 0x22, 0xE4, 0xF0, 0x7E, 0x2A, 0xFC, 0x65,- 0x6C, 0xDC, 0x55, 0x53, 0xA2, 0x7D, 0x95, 0xBF,- 0xA5, 0x8A, 0x57, 0x4D, 0x4E, 0xC3, 0xA9, 0x73,- 0x28, 0x1A, 0x8F, 0x4E, 0x46, 0xA7, 0x1A, 0xB0,- 0x34, 0x1C, 0x25, 0x77, 0x28, 0x74, 0x63, 0xE2,- 0x51, 0x04, 0x4D, 0xB2, 0x39, 0x8D, 0x55, 0xE2- },- {- 0x81, 0xA0, 0xD0, 0x24, 0x42, 0x90, 0x51, 0x91,- 0x16, 0x33, 0x70, 0xAE, 0x29, 0xC7, 0xF8, 0x9C,- 0x0F, 0x48, 0xBC, 0x1A, 0x1E, 0xB2, 0x94, 0x70,- 0x47, 0xDA, 0x1C, 0x62, 0x2B, 0x86, 0x77, 0xE9,- 0xEA, 0x9B, 0xEC, 0xED, 0x55, 0xD3, 0x3A, 0xDB,- 0x15, 0x53, 0xBD, 0x58, 0x4A, 0xD2, 0xF8, 0x6A,- 0x62, 0x07, 0xE8, 0x4E, 0x40, 0xE4, 0x60, 0x7E,- 0x11, 0x65, 0x0E, 0xE2, 0x87, 0x9F, 0x4E, 0x0B- },- {- 0x87, 0x79, 0x0D, 0xF6, 0xCF, 0x73, 0x94, 0x45,- 0x1B, 0xCC, 0x73, 0x0E, 0x53, 0xFC, 0x57, 0xBE,- 0x56, 0x45, 0x22, 0x77, 0x1E, 0x14, 0x43, 0x2A,- 0x80, 0xAB, 0x0B, 0x06, 0xB7, 0xB1, 0xD2, 0x09,- 0xAD, 0x69, 0x89, 0x95, 0x12, 0x53, 0x85, 0xDB,- 0x8B, 0x3C, 0x09, 0x59, 0xB8, 0xA5, 0x33, 0x9E,- 0xDA, 0x0A, 0xE6, 0x78, 0x59, 0xD8, 0x47, 0xF4,- 0x4C, 0x81, 0x59, 0x72, 0x72, 0xCB, 0xF1, 0x95- },- {- 0xCC, 0x06, 0x4E, 0xA8, 0x53, 0xDC, 0x01, 0x52,- 0xCC, 0x03, 0xFE, 0xB5, 0xFB, 0x5D, 0xE7, 0x8B,- 0x9B, 0x88, 0xE9, 0x61, 0x55, 0xD5, 0x35, 0x8B,- 0xCE, 0x84, 0xA5, 0x4C, 0x0E, 0x0C, 0x42, 0xFB,- 0xDA, 0x09, 0x2F, 0x22, 0xD0, 0x56, 0xDF, 0x99,- 0x93, 0x26, 0x2E, 0x2B, 0xA4, 0x4A, 0x5B, 0x2D,- 0x53, 0xC3, 0x75, 0x9D, 0x09, 0x45, 0xFE, 0xBA,- 0xA6, 0xFD, 0x51, 0xB8, 0xFF, 0x38, 0xD8, 0x39- },- {- 0x7E, 0x51, 0x7F, 0xC3, 0x83, 0xEE, 0x8C, 0x9F,- 0x0A, 0x01, 0x68, 0x1D, 0x39, 0xE7, 0x3B, 0xEB,- 0xA5, 0x96, 0x95, 0x95, 0xCE, 0x77, 0x92, 0x7F,- 0x91, 0x69, 0x1F, 0x33, 0xBB, 0x3E, 0x13, 0x07,- 0xEE, 0x03, 0x61, 0x6C, 0x27, 0xE6, 0x79, 0x51,- 0x86, 0xF6, 0x94, 0x0F, 0xED, 0xD9, 0xD5, 0xC7,- 0xF2, 0x1B, 0x6D, 0x2A, 0xAF, 0x70, 0x29, 0x9C,- 0xDD, 0x83, 0x51, 0x25, 0x05, 0x0A, 0x8B, 0x3C- },- {- 0x84, 0x5F, 0xCF, 0xA6, 0x7F, 0x6E, 0x06, 0x55,- 0x10, 0xD2, 0x62, 0xF1, 0xDD, 0x69, 0x39, 0xEA,- 0x4C, 0x0A, 0x4A, 0x59, 0xC8, 0xEE, 0x39, 0x77,- 0xDB, 0x70, 0x05, 0xE1, 0xAE, 0xE4, 0x20, 0xBD,- 0x3F, 0x38, 0x26, 0xEC, 0xFE, 0x59, 0x01, 0x5B,- 0x4D, 0xFA, 0x0B, 0xD5, 0xBB, 0xF8, 0xD8, 0xA4,- 0x34, 0x48, 0x5D, 0xC1, 0x1C, 0xB9, 0xCC, 0x85,- 0x97, 0xCB, 0x8C, 0x95, 0x66, 0x11, 0x5F, 0x31- },- {- 0x17, 0xCF, 0x2C, 0x23, 0x21, 0x5B, 0xCD, 0xFC,- 0x24, 0x3D, 0x8A, 0x94, 0x5F, 0x3C, 0x5C, 0x25,- 0x1D, 0x27, 0x18, 0xA3, 0xF7, 0x5F, 0xED, 0x6F,- 0x33, 0x20, 0xBC, 0xC6, 0xFD, 0x92, 0x73, 0x86,- 0xD5, 0x6F, 0x87, 0x19, 0xCC, 0xA0, 0x2E, 0xC5,- 0xE9, 0x9C, 0xDA, 0xC4, 0xEA, 0x10, 0x95, 0xB4,- 0x65, 0xBA, 0x9A, 0x29, 0x8B, 0x1D, 0x23, 0x8E,- 0x38, 0xB3, 0xFA, 0x15, 0xE8, 0xB1, 0x4E, 0xE4- },- {- 0xD7, 0x89, 0xCE, 0xC7, 0xD7, 0x52, 0x0F, 0x10,- 0xE8, 0xB8, 0xB6, 0xC8, 0x40, 0x95, 0x89, 0xDF,- 0x57, 0xB8, 0x56, 0xB8, 0x24, 0x55, 0x68, 0xF6,- 0x4E, 0x2D, 0x21, 0x83, 0xE3, 0x59, 0xA7, 0x84,- 0xC8, 0xD2, 0x6C, 0xF9, 0xB7, 0x20, 0xF5, 0xDF,- 0x56, 0x7B, 0x01, 0xF3, 0xF4, 0x8D, 0xE6, 0x4D,- 0x4F, 0x0D, 0xB1, 0x56, 0xBE, 0x52, 0x5D, 0x7C,- 0x7A, 0x66, 0x5A, 0xAD, 0xC5, 0x91, 0xF0, 0xB6- },- {- 0xB5, 0xE2, 0x46, 0xA9, 0x02, 0x77, 0x10, 0xC0,- 0xB0, 0x55, 0xC7, 0x1F, 0x11, 0x67, 0xE0, 0xEE,- 0x36, 0xEB, 0xC4, 0x32, 0xCF, 0x5D, 0x14, 0x27,- 0x75, 0xA7, 0xAE, 0xCC, 0xCE, 0xA7, 0x83, 0x25,- 0xED, 0x8C, 0x12, 0xF5, 0x0F, 0xBE, 0x64, 0x8A,- 0xDD, 0xF0, 0x59, 0xB8, 0xC0, 0x2A, 0x61, 0x49,- 0x2F, 0x83, 0x57, 0xBE, 0xE1, 0x42, 0xE7, 0xF7,- 0xDE, 0x04, 0x33, 0x78, 0xDB, 0xCF, 0x2D, 0x33- },- {- 0xB5, 0x23, 0xFD, 0x77, 0xAB, 0x9E, 0xEE, 0x42,- 0x48, 0x72, 0xBC, 0x2E, 0x83, 0xFC, 0x0A, 0x77,- 0xFF, 0x8A, 0x90, 0xC9, 0xA0, 0xCE, 0x9E, 0x8C,- 0x87, 0x68, 0x0A, 0x0F, 0x62, 0x86, 0x33, 0x1F,- 0x15, 0xC9, 0x3A, 0x2A, 0xFE, 0xCF, 0x75, 0x66,- 0x65, 0x3F, 0x24, 0xD9, 0x30, 0xC3, 0x23, 0x19,- 0x2D, 0x30, 0x43, 0xB9, 0x05, 0x72, 0x1C, 0xBD,- 0xB6, 0x31, 0x11, 0xCA, 0x42, 0xF2, 0x8F, 0x4E- },- {- 0x43, 0x59, 0xA4, 0x58, 0x76, 0xBF, 0x6A, 0xCC,- 0x0A, 0xEC, 0xE7, 0xB9, 0xB4, 0xB4, 0xA8, 0x38,- 0xB9, 0xDB, 0xA5, 0x77, 0x6A, 0x3B, 0x14, 0xDA,- 0x2F, 0xBA, 0x91, 0x02, 0xE7, 0x8B, 0xF6, 0x48,- 0xFF, 0xB4, 0xD8, 0x67, 0xBA, 0xE8, 0x5F, 0xD9,- 0xB7, 0x13, 0x12, 0xDC, 0x46, 0x02, 0xD0, 0xD4,- 0x9C, 0x90, 0x7B, 0xB9, 0x28, 0x9B, 0x22, 0x95,- 0x96, 0x1E, 0x54, 0x13, 0x81, 0x23, 0xF5, 0x4A- },- {- 0xD3, 0xF2, 0xC8, 0xE7, 0x4F, 0x34, 0x3A, 0x4E,- 0x71, 0x90, 0xD4, 0x75, 0xCF, 0x9A, 0xF7, 0x54,- 0xEE, 0xD5, 0x57, 0x72, 0x62, 0xB3, 0x5B, 0xD9,- 0xA9, 0xC4, 0x2B, 0x58, 0xCE, 0x88, 0x26, 0x2E,- 0x31, 0x14, 0x91, 0x7F, 0xB9, 0xE6, 0x83, 0xC6,- 0x2D, 0x9F, 0x89, 0x47, 0xB5, 0x8A, 0x29, 0x4D,- 0xA5, 0x06, 0xFB, 0x86, 0xB3, 0xED, 0xF2, 0x5C,- 0xB9, 0xE2, 0xD2, 0xDF, 0x61, 0x1C, 0xD4, 0x48- },- {- 0x41, 0xB8, 0x90, 0xF8, 0xE8, 0x45, 0x0D, 0xAD,- 0xB6, 0x95, 0x9A, 0xCC, 0xBA, 0x19, 0x49, 0x17,- 0xE0, 0x2F, 0x30, 0x67, 0x82, 0x1D, 0x4E, 0x99,- 0x5A, 0x37, 0xAC, 0x18, 0xBA, 0x3E, 0x47, 0xC7,- 0x50, 0x6E, 0x7A, 0x3D, 0xD1, 0xE1, 0x12, 0xE6,- 0xEC, 0x41, 0xBE, 0xF5, 0x30, 0x85, 0x11, 0x20,- 0x89, 0x4A, 0x7B, 0x34, 0xB3, 0xDB, 0xCD, 0xAE,- 0x40, 0x73, 0x27, 0xF0, 0xC5, 0x73, 0x6E, 0xDF- },- {- 0x19, 0xD7, 0x14, 0x4F, 0x0C, 0x85, 0x1E, 0xB8,- 0xB0, 0x53, 0xA3, 0xA4, 0x35, 0x86, 0x52, 0x6D,- 0xC5, 0xC7, 0x73, 0xE4, 0x97, 0x97, 0x51, 0x64,- 0xD1, 0x11, 0x51, 0x36, 0x43, 0x68, 0xDF, 0x24,- 0xBC, 0x44, 0xD5, 0x36, 0x07, 0x23, 0x04, 0xD7,- 0x06, 0x31, 0xA8, 0x40, 0xB6, 0x36, 0xB9, 0x66,- 0xFD, 0x02, 0x8F, 0x61, 0x06, 0x2B, 0xFC, 0x52,- 0x85, 0x67, 0x01, 0x53, 0xA6, 0x36, 0x3A, 0x0A- },- {- 0xC2, 0x18, 0x4C, 0x1A, 0x81, 0xE9, 0x83, 0xBE,- 0x2C, 0x96, 0xE4, 0xCF, 0xD6, 0x5A, 0xFB, 0xDA,- 0x1A, 0xC6, 0xEF, 0x35, 0x26, 0x6E, 0xE4, 0xB3,- 0xAB, 0x1F, 0xB0, 0x3A, 0xBA, 0xDD, 0xFD, 0xD4,- 0x03, 0xFF, 0xFC, 0xAF, 0xB4, 0xAD, 0xE0, 0xE9,- 0x2D, 0xA3, 0x82, 0xDA, 0x8C, 0x40, 0x22, 0x2E,- 0x10, 0xE9, 0xFD, 0xE8, 0x56, 0xC5, 0x1B, 0xDA,- 0xCD, 0xE7, 0x41, 0xA6, 0x49, 0xF7, 0x33, 0x5D- },- {- 0x48, 0x8C, 0x0D, 0x65, 0x2E, 0x42, 0xFD, 0x78,- 0xAB, 0x3A, 0x2D, 0xC2, 0x8C, 0xF3, 0xEB, 0x35,- 0xFC, 0xDD, 0xC8, 0xDE, 0xF7, 0xEA, 0xD4, 0x81,- 0x7B, 0xFF, 0xB6, 0x4C, 0x1A, 0xE0, 0xF2, 0x08,- 0xF7, 0x8C, 0xF4, 0x09, 0x76, 0xF7, 0xE2, 0xA2,- 0xCB, 0x2D, 0xD3, 0x0F, 0x1C, 0x99, 0x13, 0x02,- 0x08, 0xCE, 0xB6, 0x92, 0xC6, 0x68, 0x80, 0xD9,- 0x52, 0x8C, 0xD6, 0xD3, 0x8A, 0xD2, 0x9D, 0xB2- },- {- 0x51, 0x5B, 0x65, 0xBF, 0x65, 0x68, 0x83, 0x99,- 0x57, 0x5F, 0x0E, 0x06, 0x77, 0xBB, 0x6A, 0x91,- 0x9B, 0x66, 0x33, 0x55, 0x46, 0xD6, 0xCA, 0xE3,- 0x36, 0xF5, 0xC6, 0xFE, 0xAE, 0x5E, 0x2B, 0xF7,- 0x45, 0xE3, 0xA7, 0xB1, 0x3C, 0x32, 0x05, 0xDD,- 0x8B, 0x5B, 0x92, 0xCF, 0x05, 0x3B, 0xE9, 0x69,- 0xDF, 0x71, 0x20, 0xFC, 0xEF, 0x77, 0xE3, 0x89,- 0x5F, 0x56, 0x0F, 0xD2, 0x32, 0xFB, 0x89, 0x50- },- {- 0x3F, 0xDB, 0xC7, 0xD6, 0x9F, 0x4B, 0x53, 0xC2,- 0x25, 0x66, 0x3D, 0xA3, 0x0D, 0x80, 0xF7, 0x2E,- 0x54, 0x28, 0x10, 0x44, 0xA2, 0x2B, 0x98, 0x82,- 0xC6, 0x63, 0x8F, 0x55, 0x26, 0x83, 0x4B, 0xD3,- 0x16, 0x01, 0xCA, 0x5E, 0xB2, 0xCC, 0xA4, 0xF5,- 0xFF, 0xCF, 0x67, 0x5D, 0xCB, 0xCF, 0xCA, 0x60,- 0xC8, 0xA3, 0x61, 0x2D, 0x1A, 0xA9, 0xDA, 0xB6,- 0x93, 0xB2, 0x35, 0x60, 0x69, 0x60, 0x3A, 0x0E- },- {- 0x4F, 0xF6, 0xC3, 0x1A, 0x8F, 0xC0, 0x01, 0xAC,- 0x3B, 0x7A, 0xE0, 0x20, 0xC5, 0xF7, 0xC4, 0x5E,- 0xFB, 0x62, 0x71, 0xA2, 0xD7, 0xCC, 0xAB, 0x87,- 0x13, 0xE5, 0x48, 0xB7, 0x29, 0xF0, 0xFF, 0xF9,- 0xC8, 0x2F, 0xD4, 0xDB, 0x5C, 0xF6, 0x56, 0x43,- 0xD4, 0x07, 0x6A, 0x3F, 0xB1, 0x7B, 0x3E, 0x89,- 0x3C, 0x30, 0x2D, 0xC7, 0x5B, 0x61, 0x22, 0xFF,- 0x86, 0x81, 0xD0, 0x37, 0x12, 0x0E, 0x27, 0x6A- },- {- 0x43, 0xDF, 0xF2, 0x60, 0xDF, 0xEF, 0x1C, 0xB2,- 0xD6, 0x16, 0x00, 0xE2, 0x40, 0xAA, 0xD6, 0xB7,- 0x20, 0xE5, 0xF4, 0xF8, 0x30, 0x86, 0xE2, 0x6A,- 0x49, 0xA0, 0xCE, 0x3E, 0x0C, 0xA4, 0x4B, 0x9A,- 0x60, 0xFC, 0xF4, 0x6A, 0x8C, 0x3F, 0x1B, 0xB1,- 0xA6, 0xF5, 0x76, 0x2B, 0x66, 0x51, 0x3F, 0xE3,- 0xF7, 0xC5, 0xB0, 0xBC, 0x15, 0x0C, 0x08, 0x49,- 0x1A, 0xCB, 0xC4, 0x36, 0x1C, 0xAB, 0xCF, 0xDF- },- {- 0xB4, 0xDE, 0xA9, 0x4C, 0x9D, 0x36, 0x75, 0xBE,- 0x05, 0x12, 0xEF, 0xDE, 0xA8, 0x16, 0x38, 0x70,- 0xFE, 0x34, 0x25, 0xDC, 0xD7, 0x61, 0xF3, 0x63,- 0xC4, 0x3A, 0x0C, 0xA5, 0x71, 0x6B, 0x76, 0x54,- 0x06, 0x63, 0xFB, 0x2B, 0xE4, 0x9E, 0x2D, 0xB1,- 0x06, 0x48, 0x5C, 0x9C, 0xDD, 0x3C, 0x16, 0x48,- 0x98, 0xA9, 0x54, 0xB5, 0x87, 0x48, 0xC4, 0x2F,- 0xEA, 0x16, 0xA4, 0x0F, 0xC4, 0x53, 0xD2, 0x10- },- {- 0xE5, 0x27, 0x7B, 0x6F, 0x93, 0xEA, 0x1D, 0xE3,- 0xE2, 0xD9, 0xFC, 0xD8, 0xC6, 0x79, 0x79, 0x3C,- 0x6C, 0xCB, 0x8A, 0x3B, 0xE2, 0x6E, 0x8E, 0x31,- 0x14, 0xF3, 0x5D, 0xA4, 0xF2, 0xAC, 0x01, 0x4F,- 0x55, 0xC2, 0xF1, 0x5E, 0x09, 0xE9, 0x4A, 0xA0,- 0x71, 0x29, 0x81, 0x67, 0xA2, 0xFB, 0x9B, 0xE3,- 0x11, 0x70, 0x1F, 0xFB, 0xA9, 0xD3, 0xEE, 0xFF,- 0x8F, 0xFC, 0x79, 0x93, 0xA3, 0xCE, 0xCE, 0x18- },- {- 0xF0, 0x95, 0xA7, 0xC6, 0xE2, 0xB9, 0x16, 0x64,- 0x73, 0x4F, 0x3E, 0x23, 0xF1, 0x8E, 0xB2, 0xBA,- 0x9B, 0x00, 0xE7, 0x1F, 0xBF, 0xCB, 0x99, 0x31,- 0xC0, 0xA6, 0x14, 0x79, 0x2A, 0x9D, 0x86, 0x75,- 0x62, 0x2A, 0x87, 0x4C, 0x1B, 0xF5, 0x24, 0x1A,- 0x2A, 0x87, 0x41, 0xED, 0x1C, 0x89, 0x3B, 0xDF,- 0xA8, 0xE2, 0x8C, 0x2E, 0x20, 0xBB, 0x1C, 0x58,- 0xEB, 0x4D, 0xE7, 0xD8, 0x01, 0x11, 0x6C, 0x78- },- {- 0xDF, 0xA1, 0xFD, 0x80, 0x3A, 0x1D, 0x4A, 0x3E,- 0x66, 0x1D, 0xF0, 0x1F, 0x49, 0x43, 0xEA, 0x66,- 0x26, 0x0A, 0x18, 0xFE, 0xCE, 0x13, 0x4D, 0x62,- 0xF9, 0x7D, 0xAC, 0xDB, 0x8B, 0x3B, 0xF9, 0xC8,- 0x00, 0xAF, 0xE5, 0x79, 0xCF, 0xD1, 0x3F, 0xC0,- 0x14, 0x8B, 0xDE, 0xFB, 0xFF, 0x4E, 0x76, 0x83,- 0x56, 0x1C, 0x06, 0xA6, 0xF7, 0x22, 0x5E, 0x47,- 0x81, 0x99, 0x3B, 0x4F, 0x4F, 0x2B, 0xCB, 0xFA- },- {- 0x2B, 0x86, 0xCE, 0xB2, 0x70, 0xF6, 0x90, 0x8D,- 0x8B, 0x16, 0x00, 0x75, 0xEA, 0x7F, 0x57, 0x16,- 0x3A, 0xF5, 0xD5, 0xC6, 0xF8, 0xAA, 0xC5, 0x20,- 0x40, 0xCC, 0x68, 0x7C, 0x17, 0xAB, 0xF3, 0xC7,- 0x78, 0xC1, 0x39, 0x06, 0xE0, 0xE6, 0xF2, 0x9A,- 0x6A, 0xB1, 0x23, 0xDE, 0xEB, 0xCE, 0x39, 0x1F,- 0x90, 0x7D, 0x75, 0xD3, 0xA2, 0xCE, 0xFA, 0x0E,- 0xFC, 0xB8, 0x80, 0xA0, 0xE7, 0x0D, 0x71, 0x96- },- {- 0x32, 0x46, 0x6B, 0xCB, 0xDE, 0xD5, 0x38, 0xE5,- 0x68, 0x79, 0x54, 0x30, 0x35, 0x25, 0x36, 0xFE,- 0xB9, 0x19, 0xBF, 0x4D, 0x97, 0xCC, 0x44, 0xAB,- 0x1D, 0x80, 0x50, 0x40, 0xF4, 0xBC, 0x4C, 0x2E,- 0x79, 0x52, 0x72, 0x10, 0x18, 0x95, 0x8B, 0x4E,- 0xE7, 0x83, 0x03, 0x59, 0x0E, 0xF6, 0xAC, 0x45,- 0x0D, 0xF9, 0x2E, 0xC7, 0x7F, 0x47, 0x70, 0x54,- 0xBF, 0xF8, 0x67, 0xB8, 0x89, 0x71, 0xD4, 0x21- },- {- 0xEA, 0x64, 0xB0, 0x03, 0xA1, 0x35, 0x76, 0x61,- 0x21, 0xCF, 0xBC, 0xCB, 0xDC, 0x08, 0xDC, 0xA2,- 0x40, 0x29, 0x26, 0xBE, 0x78, 0xCE, 0xA3, 0xD0,- 0xA7, 0x25, 0x3D, 0x9E, 0xC9, 0xE6, 0x3B, 0x8A,- 0xCD, 0xD9, 0x94, 0x55, 0x99, 0x17, 0xE0, 0xE0,- 0x3B, 0x5E, 0x15, 0x5F, 0x94, 0x4D, 0x71, 0x98,- 0xD9, 0x92, 0x45, 0xA7, 0x94, 0xCE, 0x19, 0xC9,- 0xB4, 0xDF, 0x4D, 0xA4, 0xA3, 0x39, 0x93, 0x34- },- {- 0x05, 0xAD, 0x0F, 0x27, 0x1F, 0xAF, 0x7E, 0x36,- 0x13, 0x20, 0x51, 0x84, 0x52, 0x81, 0x3F, 0xF9,- 0xFB, 0x99, 0x76, 0xAC, 0x37, 0x80, 0x50, 0xB6,- 0xEE, 0xFB, 0x05, 0xF7, 0x86, 0x7B, 0x57, 0x7B,- 0x8F, 0x14, 0x47, 0x57, 0x94, 0xCF, 0xF6, 0x1B,- 0x2B, 0xC0, 0x62, 0xD3, 0x46, 0xA7, 0xC6, 0x5C,- 0x6E, 0x00, 0x67, 0xC6, 0x0A, 0x37, 0x4A, 0xF7,- 0x94, 0x0F, 0x10, 0xAA, 0x44, 0x9D, 0x5F, 0xB9- },- {- 0xB5, 0x45, 0x88, 0x02, 0x94, 0xAF, 0xA1, 0x53,- 0xF8, 0xB9, 0xF4, 0x9C, 0x73, 0xD9, 0x52, 0xB5,- 0xD1, 0x22, 0x8F, 0x1A, 0x1A, 0xB5, 0xEB, 0xCB,- 0x05, 0xFF, 0x79, 0xE5, 0x60, 0xC0, 0x30, 0xF7,- 0x50, 0x0F, 0xE2, 0x56, 0xA4, 0x0B, 0x6A, 0x0E,- 0x6C, 0xB3, 0xD4, 0x2A, 0xCD, 0x4B, 0x98, 0x59,- 0x5C, 0x5B, 0x51, 0xEA, 0xEC, 0x5A, 0xD6, 0x9C,- 0xD4, 0x0F, 0x1F, 0xC1, 0x6D, 0x2D, 0x5F, 0x50- },- {- 0xBB, 0xFB, 0x94, 0x77, 0xEC, 0x6A, 0x9F, 0x0C,- 0x25, 0x40, 0x5A, 0xCD, 0x8A, 0x30, 0xD5, 0xDD,- 0x7C, 0x73, 0x57, 0x1F, 0x1D, 0x1A, 0x6E, 0x8C,- 0xE7, 0x2F, 0x8B, 0x9C, 0x94, 0x1C, 0xF7, 0x79,- 0xB7, 0x64, 0x03, 0xAC, 0x7F, 0x04, 0x50, 0x05,- 0x25, 0x84, 0x39, 0x0A, 0x14, 0xEA, 0xA3, 0x7C,- 0x20, 0xB5, 0xBD, 0xB0, 0x38, 0x10, 0x54, 0xA9,- 0xA4, 0x95, 0x34, 0xF8, 0x14, 0x66, 0xBA, 0x9D- },- {- 0xC8, 0x28, 0x7E, 0x93, 0x3D, 0x95, 0x04, 0xBF,- 0xFD, 0x7B, 0xE2, 0xAC, 0x02, 0x2B, 0x32, 0xF3,- 0xF4, 0x6D, 0x87, 0xA7, 0xA0, 0xE7, 0x9B, 0xB2,- 0xA1, 0xCB, 0xAA, 0xCC, 0x2E, 0x84, 0xCD, 0x70,- 0x84, 0x5D, 0x0D, 0x42, 0x78, 0x48, 0xA6, 0xD7,- 0x88, 0xD3, 0x96, 0x22, 0xE1, 0x0F, 0x43, 0x42,- 0x23, 0x7E, 0xEF, 0xA6, 0xD3, 0xC0, 0x12, 0xDA,- 0xE9, 0x6C, 0xC8, 0xA6, 0x50, 0xCC, 0x2E, 0x30- },- {- 0xC4, 0x59, 0x6F, 0xCB, 0x0A, 0x28, 0xD2, 0x4A,- 0xAD, 0x70, 0xCF, 0x18, 0x53, 0xEC, 0x29, 0xDA,- 0xC0, 0xFB, 0x20, 0x2D, 0x8E, 0xC1, 0x40, 0xDA,- 0x30, 0x00, 0x88, 0xBB, 0x85, 0xB9, 0x2C, 0x30,- 0x29, 0x19, 0x46, 0xAD, 0x30, 0x7C, 0x09, 0x6E,- 0x3B, 0x28, 0x66, 0x33, 0x5C, 0x93, 0x17, 0xAF,- 0xE2, 0x8C, 0xAD, 0xAB, 0x5D, 0x62, 0xC3, 0x54,- 0x32, 0x9C, 0x98, 0xD9, 0x93, 0xC5, 0xBE, 0x1C- },- {- 0xE8, 0x8C, 0x38, 0xE6, 0x7E, 0x8D, 0x19, 0x83,- 0x58, 0x08, 0x85, 0x46, 0x70, 0x77, 0x9E, 0xCA,- 0x60, 0xBA, 0xD8, 0x54, 0xC5, 0x77, 0x87, 0x90,- 0xA0, 0x72, 0x54, 0xA3, 0x0A, 0x14, 0xAE, 0x82,- 0xB6, 0x1B, 0xB1, 0x69, 0x11, 0xFE, 0x57, 0x77,- 0x1D, 0x19, 0xE9, 0xB7, 0xF5, 0x02, 0x3C, 0x0D,- 0x4E, 0x8A, 0x8D, 0x37, 0x2E, 0x3D, 0x85, 0xE4,- 0x3B, 0x03, 0xE5, 0xE0, 0x0E, 0x6E, 0xBA, 0x4B- },- {- 0x2D, 0x66, 0x3E, 0x03, 0xE6, 0xF3, 0x55, 0x2C,- 0xCD, 0xFB, 0xA4, 0x96, 0xA1, 0x4C, 0xC6, 0x22,- 0x4C, 0xEB, 0x1E, 0xB6, 0x1A, 0xA2, 0x65, 0xE6,- 0xA7, 0xD4, 0xA2, 0x6E, 0x54, 0x10, 0x61, 0x04,- 0xA9, 0x6E, 0x33, 0x09, 0x59, 0xF9, 0x71, 0x3B,- 0x34, 0x87, 0xC1, 0xB9, 0x49, 0x7C, 0xCF, 0x82,- 0x61, 0x1D, 0xBF, 0xA3, 0x4F, 0xF1, 0x1D, 0x31,- 0x33, 0xB5, 0xB5, 0xD1, 0xF1, 0xE4, 0xF8, 0xD0- },- {- 0x70, 0x7D, 0x6A, 0x58, 0x42, 0x1B, 0x8F, 0x7E,- 0x44, 0xFF, 0x1F, 0x83, 0x62, 0xBC, 0x70, 0x0F,- 0x71, 0xEF, 0x7C, 0x39, 0x35, 0xE0, 0x76, 0x4B,- 0xD1, 0x4D, 0x39, 0x0C, 0x1C, 0x72, 0x79, 0x2A,- 0xF9, 0xC2, 0xC0, 0x2F, 0xB7, 0x2A, 0x2B, 0x9D,- 0x9A, 0x07, 0x29, 0xCB, 0x3E, 0x99, 0x62, 0x6C,- 0xF0, 0x34, 0xDF, 0x54, 0xB5, 0x06, 0xB5, 0xB1,- 0x64, 0x64, 0xF4, 0x75, 0x86, 0x4F, 0x25, 0x90- },- {- 0x9D, 0x88, 0xF8, 0xBA, 0xA4, 0xEB, 0x0F, 0x9A,- 0xB2, 0x29, 0x2E, 0x49, 0x82, 0xAC, 0x80, 0x44,- 0x53, 0x58, 0x22, 0x7D, 0x7F, 0x9C, 0xE7, 0xA4,- 0xA6, 0x29, 0xF1, 0x80, 0xF7, 0x14, 0x1E, 0x08,- 0xFE, 0x63, 0x55, 0xC6, 0x45, 0x21, 0xA6, 0x9B,- 0xA2, 0xBF, 0xBD, 0x1C, 0x4A, 0x3E, 0xA0, 0x48,- 0xD0, 0xBC, 0x8A, 0xB3, 0x70, 0x1F, 0x30, 0xEA,- 0x83, 0xFB, 0xE0, 0x24, 0x74, 0xD8, 0x92, 0xBF- },- {- 0x65, 0xEA, 0x4D, 0xB0, 0x4A, 0x75, 0x81, 0xC1,- 0x81, 0x94, 0xA8, 0x92, 0x1A, 0xFD, 0xFA, 0x4F,- 0x8D, 0x9A, 0xF6, 0x29, 0xDE, 0xD2, 0x77, 0x2C,- 0x65, 0x8E, 0x08, 0x48, 0x5F, 0x67, 0xAD, 0x2C,- 0xE2, 0x1A, 0x98, 0xCD, 0x29, 0x3F, 0xF2, 0x8D,- 0x4D, 0xFC, 0xDF, 0x65, 0x8C, 0xDC, 0x7A, 0xE6,- 0x70, 0x27, 0x84, 0x8E, 0x71, 0xCC, 0xC1, 0x15,- 0xA3, 0xFF, 0xBA, 0xC4, 0xFA, 0x61, 0xBB, 0x73- },- {- 0x0B, 0x4A, 0x68, 0x92, 0x9E, 0x7F, 0x15, 0xCA,- 0x91, 0xBB, 0x44, 0x39, 0xF2, 0x40, 0x37, 0x02,- 0x03, 0x4C, 0xD4, 0x74, 0x8E, 0x46, 0x92, 0x7A,- 0xBA, 0x95, 0xCB, 0xEF, 0x80, 0x04, 0x8B, 0x25,- 0xA6, 0x75, 0x97, 0x0F, 0xAC, 0x33, 0xC8, 0x74,- 0xAB, 0xD3, 0xD8, 0x3A, 0xA0, 0xF3, 0x7B, 0xE2,- 0x30, 0x83, 0x10, 0xE8, 0xDD, 0x79, 0x4F, 0x81,- 0x92, 0x93, 0x0E, 0xD5, 0x6E, 0x70, 0xA8, 0xE4- },- {- 0xC1, 0xC5, 0xD8, 0xAC, 0xFE, 0x3F, 0xDE, 0x67,- 0x4E, 0xDD, 0x36, 0x20, 0x15, 0x7A, 0x8B, 0x6B,- 0x4C, 0x8E, 0x67, 0xC6, 0xA7, 0xA9, 0x72, 0x67,- 0x41, 0xD9, 0xC3, 0x05, 0xE2, 0xA5, 0x2A, 0x87,- 0x97, 0xFD, 0xA0, 0xB2, 0xF1, 0x3A, 0xC7, 0x87,- 0x34, 0xDB, 0x2F, 0x4F, 0xC8, 0x3E, 0xF3, 0x24,- 0x14, 0xD9, 0x31, 0xEB, 0xAE, 0xAE, 0xCD, 0x82,- 0x6D, 0x7C, 0x2B, 0xE2, 0x03, 0xBD, 0xC2, 0xD1- },- {- 0x2D, 0xAD, 0xC8, 0xC9, 0xF7, 0x42, 0x5A, 0x01,- 0x14, 0x49, 0x12, 0x87, 0xBD, 0xC6, 0x8E, 0xAE,- 0x4F, 0xB6, 0x19, 0x4D, 0x1A, 0x10, 0x9D, 0xB9,- 0xB6, 0xE8, 0xA2, 0xAC, 0x94, 0xD4, 0xE4, 0x40,- 0x90, 0x99, 0x85, 0xC4, 0x29, 0x1F, 0xE8, 0x9F,- 0xD8, 0x28, 0x1F, 0x8F, 0xCE, 0xF6, 0xF6, 0xBC,- 0x32, 0x55, 0x0E, 0x53, 0xCB, 0x7A, 0x49, 0x42,- 0x89, 0x81, 0xE8, 0xD5, 0x3C, 0xF5, 0xA2, 0x12- },- {- 0xE5, 0x55, 0xF2, 0xA5, 0x8A, 0xCA, 0xC5, 0x50,- 0x3F, 0x9E, 0x2D, 0x97, 0xB2, 0x46, 0x87, 0x2B,- 0x4C, 0xA7, 0x8B, 0xD5, 0x6D, 0x47, 0xB7, 0x65,- 0xF0, 0x52, 0xAA, 0xB3, 0xDC, 0x77, 0xDB, 0xE9,- 0x93, 0x93, 0x6F, 0x22, 0x52, 0xF0, 0xAB, 0x2E,- 0x01, 0xFB, 0x08, 0x74, 0x72, 0xCC, 0xB5, 0xA1,- 0x21, 0xDD, 0xFF, 0xDE, 0x53, 0x1D, 0x3D, 0xC4,- 0x02, 0x2A, 0x7D, 0x19, 0x56, 0xCE, 0x0E, 0x20- },- {- 0x9B, 0x4E, 0xAE, 0x12, 0x95, 0x00, 0x0A, 0xEA,- 0x79, 0x83, 0xEC, 0x3B, 0xCB, 0x48, 0x57, 0xCC,- 0x71, 0x25, 0xFD, 0x73, 0x06, 0x78, 0x7C, 0x63,- 0x13, 0x24, 0x73, 0xCF, 0xE8, 0xF4, 0xEB, 0x45,- 0x31, 0x8A, 0x60, 0xDA, 0xAD, 0x64, 0x6D, 0x63,- 0xA2, 0x7C, 0x4B, 0x9D, 0x1F, 0x50, 0x73, 0x70,- 0x0A, 0x30, 0x57, 0xDE, 0x22, 0xA7, 0xFD, 0xF0,- 0x9A, 0x87, 0xAA, 0xC6, 0x6E, 0xBE, 0x47, 0x58- },- {- 0x96, 0x64, 0xAC, 0xC2, 0xDC, 0x72, 0x98, 0xB9,- 0x86, 0x8D, 0xB4, 0x95, 0xEE, 0xBC, 0x6B, 0x59,- 0x65, 0x7D, 0x13, 0x9A, 0x6A, 0xF0, 0x60, 0xA7,- 0x2F, 0xB6, 0x91, 0x24, 0xBD, 0xD3, 0xA6, 0x59,- 0x18, 0x88, 0xF0, 0x35, 0x4F, 0x70, 0x2B, 0x1B,- 0x88, 0x86, 0x84, 0x41, 0x10, 0x58, 0xA3, 0x75,- 0x9F, 0x7F, 0xD3, 0x7F, 0x06, 0xEA, 0xFB, 0x3B,- 0x58, 0xEC, 0xF2, 0x6F, 0x45, 0x53, 0xBE, 0x27- },- {- 0xFC, 0x16, 0xE0, 0x92, 0x5A, 0x35, 0xAA, 0xD4,- 0x7A, 0xD6, 0x95, 0x54, 0xB2, 0x57, 0x96, 0xFC,- 0xF9, 0x26, 0x0C, 0xB5, 0x0E, 0x6C, 0xC3, 0x74,- 0x75, 0x35, 0x55, 0x9E, 0x99, 0xC8, 0x58, 0x81,- 0xC7, 0x58, 0x89, 0xAC, 0x79, 0x3A, 0xB7, 0x8B,- 0x88, 0xB0, 0x5F, 0xB1, 0x60, 0x89, 0x56, 0x55,- 0xE4, 0xD6, 0x63, 0xA2, 0xA0, 0x9B, 0xA9, 0xFA,- 0x61, 0x4A, 0x10, 0xC2, 0x29, 0x47, 0x21, 0x0D- },- {- 0x22, 0x5E, 0x73, 0x41, 0xF8, 0x57, 0x52, 0x4F,- 0x78, 0x90, 0x37, 0x6C, 0x50, 0xE6, 0x35, 0x4B,- 0x16, 0xC1, 0xCD, 0xFB, 0xF5, 0x8F, 0xE5, 0xF3,- 0xA4, 0x03, 0x94, 0x93, 0xB5, 0xDD, 0x40, 0x8D,- 0x79, 0xD4, 0x8C, 0x56, 0xE1, 0xF8, 0x9B, 0x68,- 0x7F, 0xBE, 0x33, 0x62, 0xA7, 0x7F, 0xA7, 0x5A,- 0x54, 0x37, 0x4B, 0x7A, 0x48, 0x5E, 0x91, 0xB1,- 0x89, 0xAF, 0x2E, 0x2F, 0x74, 0x9E, 0x2A, 0xDB- },- {- 0xA0, 0x7A, 0x4C, 0x02, 0x3A, 0xC7, 0x04, 0xCE,- 0x7C, 0x09, 0xDD, 0x6C, 0x92, 0xC6, 0xF1, 0x84,- 0xF5, 0x3E, 0x8D, 0xD9, 0x6F, 0xE3, 0xBE, 0x9E,- 0x93, 0xC3, 0x9C, 0x53, 0x44, 0x85, 0xB6, 0x4B,- 0x39, 0xD5, 0xBE, 0x7F, 0x7B, 0x71, 0x70, 0x60,- 0x4D, 0xE7, 0x7C, 0xE5, 0xA4, 0x37, 0xA9, 0x8E,- 0x71, 0x2C, 0xC4, 0x4F, 0x19, 0xE2, 0x1D, 0x41,- 0xF0, 0xE6, 0xE3, 0xEC, 0x1E, 0x00, 0xAC, 0x55- },- {- 0x62, 0x85, 0x84, 0x63, 0x58, 0x2D, 0x22, 0xE6,- 0x8E, 0x52, 0x27, 0xBF, 0xBA, 0xB5, 0x40, 0x04,- 0x8F, 0x65, 0xED, 0xD6, 0xA6, 0x75, 0x5F, 0x6F,- 0xAB, 0x53, 0xC0, 0x25, 0xB6, 0x63, 0xCA, 0x37,- 0x7A, 0x0E, 0xD5, 0xEF, 0xD6, 0xAF, 0x16, 0x6C,- 0xA5, 0x5A, 0x9C, 0x73, 0x3F, 0xCA, 0x80, 0x5A,- 0xC4, 0xE4, 0x09, 0xCA, 0x56, 0x17, 0x7A, 0xA7,- 0x49, 0x40, 0xDB, 0x9F, 0x40, 0xC3, 0xB9, 0xFF- },- {- 0xA1, 0xAC, 0x53, 0x9D, 0x1A, 0xBB, 0xC2, 0xB0,- 0x96, 0xFF, 0xAB, 0x81, 0x3B, 0x64, 0x45, 0x7F,- 0xE6, 0xEB, 0x3B, 0x50, 0xFC, 0xD8, 0x89, 0x53,- 0xD0, 0xCD, 0x9F, 0x65, 0x02, 0xF6, 0x89, 0x62,- 0x0A, 0xD4, 0x42, 0xB5, 0x51, 0x70, 0x90, 0xB5,- 0x0C, 0xFF, 0xB9, 0x58, 0x86, 0x6D, 0x7C, 0x16,- 0x1D, 0x8A, 0x7D, 0x75, 0x60, 0xC8, 0x93, 0xE1,- 0xDE, 0xF6, 0xAE, 0xC4, 0x37, 0xAD, 0x6D, 0x06- },- {- 0xB5, 0x86, 0xB7, 0x5D, 0xA7, 0x0F, 0x6C, 0xC0,- 0x62, 0x7E, 0xF3, 0xCF, 0x12, 0x37, 0xC9, 0x4B,- 0x12, 0xD0, 0xF7, 0x4D, 0xCB, 0xA2, 0x6A, 0x9E,- 0x7C, 0x7B, 0xC6, 0xC2, 0x1A, 0x33, 0x53, 0x37,- 0xBF, 0x9F, 0x5B, 0x83, 0x0C, 0x63, 0x24, 0xAF,- 0xA6, 0xEF, 0x64, 0x9E, 0x95, 0xAF, 0x87, 0x90,- 0x87, 0x52, 0x34, 0xC6, 0xE6, 0x61, 0xD3, 0xF5,- 0xE9, 0x8C, 0xA0, 0x12, 0xAE, 0x81, 0x48, 0x8A- },- {- 0x56, 0x68, 0xA2, 0x98, 0x21, 0x37, 0xCB, 0xC6,- 0x22, 0xEF, 0x8D, 0x06, 0xCF, 0x4E, 0x86, 0x16,- 0x8C, 0xDD, 0x4A, 0x89, 0x9C, 0xD4, 0x46, 0x2A,- 0xF6, 0xC3, 0xD4, 0x15, 0x42, 0x61, 0x56, 0xA5,- 0xD8, 0xDD, 0x67, 0xC9, 0x60, 0x4F, 0x31, 0xB5,- 0x7D, 0x6C, 0x9D, 0x59, 0x72, 0x50, 0x45, 0x7E,- 0x4A, 0xB5, 0x2A, 0x58, 0x11, 0x55, 0x42, 0xAC,- 0xF2, 0x7F, 0x92, 0x59, 0x30, 0xF6, 0xA1, 0x12- },- {- 0xF2, 0xB1, 0xBD, 0x16, 0xD8, 0x8E, 0x37, 0xF3,- 0xA5, 0x18, 0xD1, 0x93, 0xED, 0x06, 0x1A, 0x1D,- 0xF7, 0xB4, 0x43, 0xA1, 0x8C, 0xE9, 0xF8, 0x44,- 0x45, 0xEF, 0x86, 0xEF, 0xFB, 0xDF, 0xF1, 0x60,- 0x55, 0x02, 0x3C, 0xD4, 0xE7, 0x8D, 0x03, 0x4D,- 0xE4, 0x03, 0x2A, 0x77, 0xDD, 0xC1, 0xD3, 0x43,- 0x52, 0xFE, 0x61, 0x7F, 0x82, 0x56, 0x24, 0x45,- 0x9B, 0xC3, 0x26, 0x9F, 0x70, 0x4F, 0x34, 0x5B- },- {- 0xF0, 0x85, 0xF3, 0xD8, 0xBD, 0x13, 0x8E, 0x05,- 0x69, 0x24, 0x3F, 0x74, 0x52, 0x3E, 0x87, 0xFF,- 0x37, 0x6F, 0x04, 0xEA, 0xBD, 0x5A, 0x2F, 0x6E,- 0x53, 0xDF, 0x38, 0x99, 0x00, 0x0E, 0x2E, 0x94,- 0xAF, 0x0D, 0x2B, 0xC7, 0x1C, 0x3F, 0x71, 0x10,- 0x25, 0xC5, 0x38, 0xA6, 0xC8, 0xB1, 0x0B, 0x09,- 0x04, 0xDF, 0xC3, 0x46, 0xAD, 0xAD, 0x7E, 0xF3,- 0x6B, 0x1A, 0xE8, 0x8A, 0x6C, 0xFE, 0xAB, 0xBD- },- {- 0x82, 0x91, 0xA4, 0xAF, 0xD2, 0xE4, 0xB7, 0x16,- 0x61, 0x77, 0x3A, 0x46, 0xB3, 0xD4, 0x45, 0x5A,- 0x8D, 0x33, 0xA7, 0x26, 0xD9, 0xD3, 0x87, 0x30,- 0x83, 0xAB, 0x33, 0x70, 0x20, 0xC2, 0x7B, 0x4D,- 0xD6, 0x43, 0xE2, 0x8C, 0x2F, 0xE4, 0x7A, 0xB2,- 0xFB, 0xF5, 0xD1, 0x40, 0x81, 0xA3, 0xFC, 0x1C,- 0x83, 0x9B, 0x12, 0xEA, 0x31, 0xD1, 0x3C, 0xF4,- 0x9E, 0xEE, 0x97, 0xEF, 0x2E, 0xD7, 0xFA, 0x3E- },- {- 0xB1, 0x26, 0xAE, 0x46, 0xA7, 0xA4, 0x59, 0x5E,- 0x31, 0x60, 0x7E, 0xF8, 0x07, 0xA5, 0x60, 0x1F,- 0x4E, 0xCD, 0x9E, 0x7D, 0x66, 0xC8, 0x2D, 0xAE,- 0xB9, 0x71, 0x5F, 0x8D, 0xA1, 0xC1, 0x7D, 0x7D,- 0x71, 0xC3, 0xE6, 0x82, 0x50, 0xC9, 0xDC, 0x01,- 0xAC, 0x40, 0xA3, 0x6D, 0x2E, 0x63, 0x8B, 0xEF,- 0x3D, 0x7B, 0xC7, 0x0E, 0xA2, 0xD0, 0xE3, 0x31,- 0xE3, 0xD3, 0x3E, 0x17, 0x04, 0xEB, 0xA9, 0x2D- },- {- 0x63, 0xB1, 0x4D, 0x8E, 0xD2, 0x47, 0x9C, 0xAA,- 0x17, 0xC3, 0xE4, 0xCF, 0x20, 0x3B, 0x23, 0x3A,- 0x7E, 0x37, 0x3E, 0xDB, 0x0C, 0x2F, 0x19, 0x71,- 0x29, 0xA9, 0xA3, 0x6C, 0x5B, 0x3E, 0x1F, 0x38,- 0x38, 0xF2, 0xE8, 0x2A, 0xC2, 0xC2, 0xAD, 0x9D,- 0x52, 0xB3, 0x35, 0x79, 0x0B, 0xFF, 0x57, 0x73,- 0x04, 0xA3, 0x78, 0xE3, 0x8E, 0xB6, 0xBB, 0x41,- 0x62, 0x03, 0x0C, 0xE2, 0xA8, 0xBA, 0x29, 0x3C- },- {- 0x34, 0x42, 0x2A, 0x32, 0x29, 0x66, 0x99, 0x28,- 0xC4, 0x90, 0xF5, 0x7B, 0x8E, 0x76, 0x88, 0x52,- 0xE5, 0xB7, 0xC0, 0x0D, 0xCA, 0xD6, 0x0B, 0x01,- 0x2A, 0x5D, 0xB3, 0x9A, 0x2D, 0x59, 0x7C, 0x3D,- 0x0A, 0x63, 0xBE, 0x6A, 0x26, 0x3E, 0xA5, 0x36,- 0x08, 0xB7, 0x06, 0x92, 0xD7, 0x8E, 0x1B, 0x42,- 0x7E, 0xAC, 0xEC, 0x01, 0xF4, 0xBE, 0xE0, 0xBD,- 0xBB, 0x8F, 0x08, 0x81, 0x48, 0x8E, 0xFC, 0x28- },- {- 0xE2, 0x6B, 0x7E, 0xD6, 0xB9, 0x07, 0xB5, 0x4C,- 0xA2, 0x65, 0x67, 0xF1, 0x1E, 0xE5, 0xBB, 0x6D,- 0x73, 0x9A, 0x00, 0x08, 0xA5, 0x34, 0x37, 0xAD,- 0x75, 0x90, 0xA3, 0x13, 0x4C, 0xEB, 0x95, 0x19,- 0x6E, 0x49, 0xB3, 0x44, 0x3F, 0x32, 0x49, 0x22,- 0x51, 0x75, 0x23, 0xC0, 0xCD, 0x5A, 0x00, 0xD7,- 0x7E, 0x4C, 0x4D, 0xE7, 0xA0, 0xDE, 0x96, 0x8A,- 0x84, 0xFB, 0x1B, 0x3B, 0xE7, 0xB3, 0xB9, 0x63- },- {- 0x26, 0x01, 0x97, 0xCA, 0xFB, 0xF4, 0x56, 0xB4,- 0x11, 0xFA, 0x26, 0xD3, 0x83, 0xD6, 0x4D, 0x61,- 0xE8, 0x1E, 0x5E, 0x52, 0xF8, 0x4C, 0xD9, 0xD5,- 0x73, 0x86, 0xC7, 0x76, 0x23, 0x0C, 0x65, 0xA2,- 0x68, 0x1C, 0xD2, 0xFD, 0xFD, 0x28, 0x67, 0x9F,- 0x67, 0xFE, 0x1B, 0xD7, 0x46, 0x9C, 0xF7, 0x26,- 0x95, 0x85, 0xFC, 0xCB, 0xAE, 0xCC, 0x22, 0xF5,- 0x03, 0xD6, 0xE3, 0xFC, 0x39, 0x30, 0x14, 0x36- },- {- 0xCB, 0xD5, 0xAB, 0xE3, 0x7B, 0xCC, 0x4F, 0x9A,- 0x12, 0x70, 0xAD, 0xD0, 0xA5, 0x27, 0x0F, 0x42,- 0x83, 0x9C, 0x7D, 0x24, 0x93, 0x20, 0xD1, 0xF1,- 0xD8, 0x85, 0x53, 0xD0, 0x5F, 0xAF, 0x9A, 0x26,- 0x79, 0xF4, 0x9B, 0x49, 0xC9, 0xE2, 0x0C, 0x1C,- 0x85, 0xC6, 0x29, 0xAA, 0x0F, 0x09, 0x0C, 0xAE,- 0x8F, 0x6E, 0x32, 0xC6, 0xCA, 0xD7, 0x17, 0x21,- 0xFD, 0x06, 0x23, 0xE4, 0xED, 0x25, 0xB2, 0x56- },- {- 0x78, 0x0E, 0x31, 0x4F, 0xD6, 0x97, 0xD2, 0xA9,- 0x7D, 0x22, 0x1A, 0x22, 0xC3, 0x90, 0x11, 0xE2,- 0x50, 0x69, 0x16, 0x3C, 0xD0, 0x8F, 0x00, 0x70,- 0xD0, 0x67, 0xE8, 0xCD, 0xB0, 0xBC, 0x86, 0x73,- 0xFD, 0xB0, 0xEC, 0x4F, 0x46, 0xE3, 0x1D, 0x74,- 0x8C, 0xD3, 0xBB, 0x3D, 0x61, 0xB9, 0x01, 0x0A,- 0x66, 0x12, 0xF3, 0x41, 0xD4, 0x71, 0xD9, 0xC5,- 0xA2, 0xDE, 0x6B, 0x6D, 0xD5, 0x38, 0xA6, 0xB5- },- {- 0x40, 0x8F, 0x16, 0xCE, 0x86, 0xF8, 0x01, 0xD0,- 0x8B, 0xD0, 0x51, 0x36, 0x4B, 0x3E, 0xCD, 0x9A,- 0x39, 0x45, 0x71, 0x58, 0x88, 0xDF, 0x46, 0x63,- 0x21, 0x9A, 0x19, 0x0B, 0x35, 0x04, 0xE4, 0x61,- 0x8E, 0x7B, 0xF5, 0x51, 0x71, 0x17, 0x8B, 0x04,- 0x00, 0xFB, 0xEB, 0xFA, 0xA0, 0x1F, 0x6E, 0xEA,- 0xB5, 0x4F, 0xF5, 0xE3, 0x1E, 0x6D, 0x7A, 0x55,- 0xB8, 0x4A, 0xDB, 0x9E, 0x03, 0xDF, 0x48, 0x36- },- {- 0x0B, 0xF9, 0x88, 0x69, 0xEC, 0x05, 0x80, 0x19,- 0x9C, 0xA3, 0x70, 0x8E, 0xC9, 0xC4, 0x2C, 0x37,- 0x6C, 0x5C, 0x36, 0xE0, 0xFB, 0x74, 0x92, 0x42,- 0x57, 0x23, 0x98, 0xA0, 0xDA, 0x57, 0xF9, 0x8D,- 0x1C, 0x4C, 0xD2, 0x96, 0x3B, 0x37, 0xC3, 0xC6,- 0x5A, 0x10, 0xF1, 0x06, 0xB5, 0x6D, 0xCB, 0x96,- 0xDC, 0xDD, 0x32, 0x57, 0x96, 0x29, 0x7A, 0xDB,- 0xF6, 0xEE, 0x62, 0x70, 0xED, 0xD4, 0x59, 0x2A- },- {- 0x05, 0x2C, 0x32, 0x98, 0x43, 0x87, 0xB1, 0x93,- 0x0D, 0x3A, 0x96, 0xBE, 0x72, 0x36, 0x85, 0x35,- 0x44, 0x4F, 0x13, 0x07, 0x57, 0xBF, 0x87, 0xE0,- 0x76, 0x2D, 0x8B, 0x1C, 0x4F, 0x65, 0x70, 0xF4,- 0xDC, 0x67, 0x4C, 0x4E, 0x6F, 0x5E, 0x21, 0xAB,- 0xD0, 0xB3, 0x5E, 0x1C, 0xA1, 0x9D, 0xB8, 0x40,- 0x68, 0x8D, 0x1B, 0x6E, 0x9E, 0xC9, 0x1F, 0x37,- 0x30, 0xE8, 0xB2, 0x88, 0x0E, 0xC2, 0xC3, 0xDF- },- {- 0x4B, 0xB7, 0x14, 0x09, 0xC1, 0x5A, 0x0D, 0x39,- 0x32, 0xC5, 0x99, 0xEF, 0x0F, 0xF3, 0xEF, 0xF5,- 0xC7, 0x60, 0x2D, 0x70, 0x00, 0xCD, 0xA9, 0x74,- 0x08, 0x2C, 0x4A, 0x46, 0x82, 0x24, 0x9A, 0x19,- 0xD4, 0x3A, 0x5C, 0x14, 0xE0, 0xAE, 0xEF, 0x89,- 0x78, 0x21, 0x05, 0x63, 0x80, 0xAF, 0xF2, 0x75,- 0x20, 0x1D, 0x74, 0x59, 0x14, 0x84, 0x96, 0xEA,- 0xE9, 0x42, 0x0E, 0x71, 0x82, 0x88, 0xB4, 0x14- },- {- 0x47, 0x95, 0xB2, 0x51, 0xCC, 0x7B, 0x35, 0xE6,- 0x96, 0x92, 0xDB, 0x7F, 0xB4, 0x0E, 0xFD, 0x34,- 0xF2, 0x94, 0xF5, 0x1A, 0xEC, 0x15, 0xD6, 0xC8,- 0x67, 0x3E, 0x59, 0xF2, 0x04, 0xBE, 0xCF, 0x4C,- 0xF9, 0xDF, 0x84, 0x95, 0x23, 0xF1, 0xDB, 0x73,- 0xBE, 0x2A, 0x66, 0xC8, 0x39, 0xD8, 0x01, 0x97,- 0x4D, 0x43, 0x3B, 0x47, 0x80, 0x67, 0x01, 0xA1,- 0x63, 0xA7, 0x94, 0xB2, 0x6A, 0x84, 0x6B, 0x06- },- {- 0xDD, 0x50, 0xF9, 0x65, 0xB6, 0x0B, 0xAF, 0x16,- 0x8F, 0x5E, 0xA0, 0x5A, 0xC2, 0x0B, 0x8A, 0x78,- 0xF4, 0x47, 0x5C, 0x18, 0x61, 0x0B, 0x9D, 0x9F,- 0xC2, 0xB7, 0xC3, 0xAD, 0x5C, 0x6F, 0x97, 0xA4,- 0xCF, 0x5E, 0xA4, 0x8E, 0xE4, 0x0A, 0x3C, 0xA2,- 0x29, 0x3C, 0xC4, 0x21, 0x40, 0x82, 0xCF, 0x0F,- 0x8E, 0xC8, 0x95, 0x55, 0x32, 0x69, 0xE1, 0x4D,- 0xA9, 0xBD, 0x1A, 0x19, 0x65, 0x62, 0xCA, 0x59- },- {- 0xE0, 0xB5, 0x4B, 0x61, 0x7F, 0x44, 0x92, 0x2C,- 0x7F, 0x61, 0xC6, 0xA5, 0x4C, 0x98, 0xC6, 0x1E,- 0x93, 0x2D, 0xED, 0x1F, 0xA9, 0x34, 0x02, 0x66,- 0xEE, 0xA2, 0x5F, 0x01, 0xE8, 0x18, 0x0D, 0x1D,- 0xDC, 0x6A, 0xD8, 0xDD, 0x6A, 0x0B, 0x8F, 0xAB,- 0x8C, 0x73, 0xAE, 0xBB, 0x97, 0x73, 0x17, 0x1B,- 0xBA, 0x04, 0xA7, 0x81, 0xB1, 0x13, 0x14, 0xD5,- 0xA3, 0x0A, 0x9D, 0x1C, 0x28, 0x12, 0xCA, 0x7C- },- {- 0x2D, 0xC4, 0xAD, 0x06, 0x89, 0xA4, 0x46, 0x0B,- 0x5B, 0x39, 0x9E, 0x91, 0x1B, 0xDB, 0x41, 0x58,- 0x6A, 0xC8, 0xAD, 0x36, 0x7B, 0x7A, 0xA3, 0x9E,- 0x3E, 0xAE, 0xC8, 0x89, 0x9A, 0x2D, 0x3C, 0xE3,- 0x8E, 0x34, 0xAB, 0x46, 0x08, 0x23, 0x4D, 0x75,- 0xEB, 0x67, 0x37, 0xFE, 0x21, 0x58, 0x24, 0xC2,- 0xA9, 0x78, 0x83, 0x59, 0x6F, 0x6F, 0x18, 0xDD,- 0xEB, 0xBF, 0x16, 0x27, 0xDE, 0xD9, 0x1D, 0x84- },- {- 0xF5, 0x6A, 0x11, 0xCB, 0xBF, 0x8A, 0x99, 0x7E,- 0x14, 0x77, 0xEC, 0x76, 0xE5, 0x3C, 0x89, 0x4B,- 0x14, 0x8D, 0x69, 0x25, 0xA4, 0x33, 0x6F, 0x0C,- 0xB7, 0xAA, 0xB9, 0xD8, 0x02, 0xAC, 0x9B, 0x45,- 0x36, 0xF4, 0x80, 0x10, 0x1F, 0x3F, 0x9A, 0x77,- 0xEE, 0xCD, 0xCB, 0xAE, 0x7A, 0xA6, 0xEA, 0x44,- 0x7A, 0x85, 0xDA, 0x90, 0xB5, 0x01, 0xF7, 0xDB,- 0x2E, 0xF8, 0xDD, 0xF5, 0xDE, 0x17, 0x33, 0x63- },- {- 0x6E, 0x17, 0x1D, 0x19, 0x6D, 0x0F, 0xC8, 0x2F,- 0xB4, 0x73, 0xE2, 0x9D, 0xA8, 0xF4, 0x0F, 0x37,- 0xEE, 0x97, 0x41, 0xAC, 0x3E, 0xAF, 0x17, 0x5D,- 0xD4, 0x9F, 0xDB, 0x56, 0x53, 0x0D, 0xB5, 0x98,- 0x98, 0xBA, 0xF3, 0xCE, 0xE7, 0x2E, 0xEF, 0x5E,- 0x77, 0x27, 0x6C, 0xAD, 0xAB, 0xCD, 0x75, 0x2C,- 0xA3, 0xA1, 0xB8, 0x64, 0xC1, 0x0A, 0xD2, 0x8D,- 0x27, 0xEA, 0xAD, 0x86, 0xE3, 0xF2, 0x1D, 0x33- },- {- 0x95, 0x20, 0x12, 0x33, 0x0D, 0x92, 0xBB, 0x9C,- 0x18, 0x92, 0xF2, 0x5B, 0x7B, 0x5A, 0xA0, 0xFE,- 0xD3, 0xC0, 0x39, 0x8A, 0x17, 0x08, 0x50, 0x9A,- 0x66, 0x14, 0x74, 0xA3, 0xF5, 0xE5, 0x11, 0xD0,- 0x9F, 0x21, 0xC3, 0x00, 0x08, 0x00, 0x2F, 0x10,- 0x42, 0xD8, 0x3D, 0x2F, 0x7B, 0x11, 0x33, 0x6B,- 0x8C, 0x2F, 0xE1, 0xD9, 0x79, 0xC1, 0xE3, 0x86,- 0xE0, 0x20, 0x97, 0x48, 0x9B, 0x2D, 0xFC, 0xF5- },- {- 0x2D, 0xCE, 0x47, 0xC3, 0x3A, 0x7E, 0x7F, 0x21,- 0x5D, 0x34, 0xA5, 0x47, 0x1B, 0xCD, 0x11, 0x10,- 0x60, 0x6C, 0x77, 0x13, 0x8F, 0x19, 0xD4, 0x17,- 0x41, 0xED, 0x5D, 0x1B, 0x89, 0xE8, 0xF7, 0xC7,- 0x74, 0xEE, 0xC4, 0xBB, 0xC1, 0x02, 0x76, 0x6E,- 0xA1, 0x53, 0x2F, 0x2E, 0x43, 0x13, 0x4A, 0xD3,- 0x66, 0xBD, 0xCC, 0x27, 0xD1, 0xA0, 0xCC, 0x95,- 0x9E, 0x16, 0x48, 0x65, 0x9E, 0x44, 0xCB, 0xBE- },- {- 0x7F, 0x06, 0x59, 0x59, 0x7E, 0x7A, 0xD1, 0x22,- 0xD1, 0xC9, 0xED, 0x91, 0x93, 0x0B, 0x07, 0xDE,- 0x40, 0xE2, 0x55, 0x20, 0x1A, 0x33, 0xEB, 0x2B,- 0x31, 0x81, 0x37, 0x6E, 0x36, 0x8D, 0xF7, 0x76,- 0x4C, 0x0C, 0x14, 0xBF, 0x79, 0x9F, 0x16, 0x1B,- 0x9B, 0x00, 0x79, 0x57, 0x8B, 0x47, 0x09, 0x71,- 0x3E, 0x24, 0xE4, 0x2F, 0xE7, 0xDD, 0x71, 0xB5,- 0x09, 0x43, 0xF4, 0x40, 0xE2, 0x3C, 0xD1, 0xBE- },- {- 0x1E, 0x66, 0xF7, 0xB3, 0x58, 0x80, 0x5D, 0xDD,- 0xFF, 0xC5, 0x82, 0x68, 0x3E, 0x0B, 0xAD, 0x81,- 0x8C, 0x87, 0x34, 0x03, 0xD4, 0xBA, 0x15, 0x06,- 0xB9, 0x2F, 0xB3, 0x20, 0xCA, 0x8C, 0xF9, 0xCE,- 0xE8, 0x15, 0x47, 0x15, 0xD6, 0xDB, 0x6F, 0x04,- 0x09, 0x3D, 0x4B, 0x3F, 0xD8, 0xA6, 0xFC, 0x8E,- 0x7E, 0xDD, 0xEA, 0xF2, 0x79, 0x5B, 0x3D, 0x22,- 0xDE, 0x7C, 0x75, 0xEC, 0xFF, 0x6F, 0x92, 0xAF- },- {- 0x1F, 0x60, 0xC1, 0x8D, 0xB1, 0x68, 0xD9, 0x0D,- 0x2B, 0x46, 0x60, 0xE7, 0x58, 0xA3, 0xCD, 0x28,- 0x02, 0x3D, 0x4C, 0x0B, 0x84, 0x8B, 0x5E, 0x33,- 0xEA, 0x5C, 0xC1, 0x56, 0x29, 0xFD, 0x35, 0x2E,- 0xAC, 0xB1, 0x4F, 0x05, 0xFD, 0xEC, 0x07, 0xAC,- 0x23, 0xDA, 0x92, 0x04, 0x74, 0x5F, 0xA9, 0x73,- 0xC3, 0x29, 0x55, 0x13, 0x5F, 0x8E, 0xC7, 0x41,- 0x0A, 0x1C, 0xB5, 0x3B, 0xC7, 0x58, 0x06, 0x84- },- {- 0xB9, 0xDF, 0x57, 0xB3, 0x45, 0xEE, 0x6F, 0x87,- 0x0E, 0xE0, 0xE6, 0x3C, 0x55, 0x8B, 0x81, 0xC1,- 0xBC, 0x38, 0x42, 0x97, 0x6F, 0xD3, 0xCF, 0xB1,- 0xB5, 0x3B, 0x76, 0x6B, 0xF4, 0x36, 0xD1, 0xD1,- 0x75, 0xF4, 0xD4, 0xC5, 0xF1, 0xBD, 0x8D, 0x7A,- 0xF6, 0x5B, 0x5D, 0x18, 0xA7, 0x2F, 0x95, 0x71,- 0xF2, 0x34, 0x70, 0x19, 0x32, 0xAF, 0xB7, 0xC3,- 0xC9, 0x4A, 0x8C, 0x8F, 0xA0, 0x23, 0xDB, 0x4F- },- {- 0xD8, 0xC8, 0x24, 0x95, 0xA2, 0xB5, 0xF6, 0x64,- 0x51, 0xF8, 0xC5, 0xB2, 0xE8, 0xA1, 0x73, 0x33,- 0xC2, 0xBE, 0x32, 0x20, 0xCE, 0x06, 0xA8, 0x14,- 0xC2, 0xCE, 0xA9, 0x5C, 0xC8, 0x65, 0x92, 0xAA,- 0x02, 0x15, 0xBF, 0x29, 0x46, 0x14, 0xA3, 0x28,- 0xCF, 0x07, 0x22, 0x2B, 0x73, 0xF9, 0x3F, 0x24,- 0x2A, 0x94, 0x8B, 0xCA, 0xE9, 0x56, 0x5F, 0xC9,- 0x70, 0x57, 0xB5, 0x2E, 0x02, 0x80, 0xEB, 0x82- },- {- 0x81, 0x34, 0xCE, 0x66, 0xD9, 0x5C, 0x40, 0x88,- 0xA5, 0x66, 0xD4, 0xE4, 0x35, 0x99, 0x06, 0x9A,- 0xD0, 0x45, 0x53, 0xB0, 0xFE, 0xA3, 0xD7, 0x48,- 0x19, 0xA6, 0xFD, 0x76, 0x6F, 0x43, 0x67, 0x42,- 0xF6, 0xB6, 0xEC, 0xC8, 0x27, 0x93, 0x98, 0x60,- 0x9F, 0x60, 0xB4, 0xE4, 0xBB, 0x44, 0xFD, 0x72,- 0xCD, 0xFB, 0xFF, 0x18, 0xD8, 0x03, 0x8A, 0xA7,- 0x12, 0x30, 0x83, 0x8B, 0x12, 0x6B, 0xC3, 0x00- },- {- 0x3D, 0xA8, 0x9F, 0x5C, 0x52, 0xB0, 0x52, 0xE0,- 0x42, 0xE5, 0x11, 0x7B, 0x96, 0x80, 0x6E, 0xDB,- 0x1C, 0x55, 0x22, 0x7E, 0x85, 0x14, 0xB3, 0x9E,- 0x8B, 0x22, 0xBE, 0xA4, 0xC9, 0x53, 0x30, 0x80,- 0xA4, 0xD7, 0xA9, 0x24, 0x92, 0xB7, 0x51, 0x76,- 0x9B, 0x0E, 0x11, 0x9E, 0xF4, 0xDB, 0x2B, 0xB8,- 0x8D, 0x5C, 0x1E, 0x75, 0xB4, 0x03, 0x10, 0x74,- 0xD7, 0xF2, 0x1A, 0x78, 0x01, 0x4A, 0x1F, 0x96- },- {- 0x9B, 0xDC, 0xB4, 0x69, 0xC2, 0x66, 0x5D, 0xD8,- 0x46, 0x83, 0xE5, 0x81, 0x01, 0xFD, 0xAE, 0x5C,- 0x88, 0x29, 0x2A, 0x4E, 0x05, 0xC4, 0x00, 0xCA,- 0x08, 0x26, 0xDA, 0x79, 0x38, 0x2B, 0x8A, 0x28,- 0x26, 0xFF, 0x24, 0xFC, 0xD5, 0x56, 0xC9, 0xD5,- 0xB5, 0xAA, 0x89, 0x2F, 0x02, 0xB1, 0x67, 0x04,- 0x77, 0x27, 0x9B, 0xD7, 0x5F, 0x1B, 0x2B, 0x7B,- 0x67, 0x5E, 0xFA, 0xC3, 0x80, 0x60, 0x70, 0x36- },- {- 0x6C, 0x77, 0x85, 0x7B, 0x38, 0x53, 0x3E, 0x41,- 0x4A, 0xF7, 0x38, 0x7C, 0x98, 0x56, 0x8D, 0x71,- 0xC8, 0xF0, 0xE3, 0x5E, 0x22, 0xB0, 0x2E, 0x2A,- 0x1C, 0x0D, 0xC6, 0xD5, 0x7E, 0x37, 0xD8, 0x68,- 0x72, 0x5A, 0xD8, 0x23, 0x58, 0x6A, 0x0B, 0xEE,- 0xF3, 0x98, 0x89, 0xCC, 0x31, 0xF1, 0xF7, 0xFA,- 0xD0, 0x96, 0x0A, 0x12, 0x5E, 0x29, 0xDF, 0xEA,- 0x74, 0x55, 0x12, 0xD1, 0x79, 0xE5, 0xF5, 0x89- },- {- 0x88, 0xC9, 0x83, 0x3A, 0x6D, 0x44, 0xFC, 0x25,- 0xBB, 0x64, 0xF3, 0xE9, 0x8E, 0x83, 0x8F, 0xB4,- 0xFF, 0x56, 0x48, 0x96, 0xDC, 0xD3, 0x58, 0x3A,- 0x8B, 0x57, 0xC9, 0x46, 0x6E, 0x74, 0x0C, 0x62,- 0x8B, 0x2D, 0x26, 0xEA, 0x14, 0x7C, 0xB3, 0x11,- 0x10, 0xFB, 0xAD, 0xCF, 0x9D, 0x01, 0x08, 0xAC,- 0xCE, 0xBE, 0x04, 0x31, 0x7D, 0x19, 0xFC, 0x03,- 0x66, 0xDE, 0x0C, 0x28, 0xA1, 0xA4, 0x5E, 0x2A- },- {- 0x0A, 0xAB, 0xB3, 0xA1, 0x78, 0x46, 0x4A, 0x01,- 0x47, 0x64, 0x5F, 0x05, 0x71, 0x2A, 0x0A, 0x15,- 0x55, 0xC5, 0xB9, 0xA3, 0xE9, 0x99, 0xAB, 0x25,- 0x5A, 0xCA, 0x35, 0xC5, 0x03, 0x81, 0xF4, 0x90,- 0x55, 0x1A, 0x40, 0x89, 0x31, 0xAA, 0x6B, 0xE9,- 0xA4, 0xEF, 0x49, 0x7A, 0x16, 0x5B, 0x36, 0x66,- 0x3B, 0x1E, 0x1F, 0x05, 0x13, 0x48, 0x02, 0xB1,- 0x78, 0xB7, 0xC7, 0x04, 0x68, 0xCB, 0x98, 0xE8- },- {- 0x58, 0x50, 0xD8, 0x93, 0x70, 0x6B, 0x3B, 0xC2,- 0xDB, 0xBA, 0x9C, 0xFA, 0xB0, 0x28, 0xBE, 0xD8,- 0x19, 0xA2, 0x83, 0x11, 0xD2, 0xD6, 0xF0, 0xCD,- 0x8E, 0x27, 0x2E, 0xE6, 0x77, 0xBC, 0x87, 0x8A,- 0x0C, 0xED, 0x6C, 0x0D, 0xEA, 0x9E, 0x5C, 0xC9,- 0x4B, 0x2B, 0x4F, 0x59, 0x1A, 0x40, 0xEC, 0x9F,- 0xB1, 0x82, 0x22, 0xD6, 0xDE, 0xAC, 0xE1, 0xF9,- 0xC0, 0x83, 0xDC, 0x05, 0xDE, 0x11, 0x7A, 0x53- },- {- 0xBE, 0xE6, 0x96, 0xA4, 0x76, 0x4F, 0x94, 0x25,- 0xD9, 0x1B, 0x14, 0x17, 0x38, 0x62, 0x5A, 0x04,- 0x47, 0xA8, 0x22, 0xBB, 0xA7, 0xA8, 0x47, 0x78,- 0xCC, 0x3A, 0x77, 0xA3, 0x86, 0xCB, 0x18, 0x24,- 0x87, 0xDB, 0x51, 0x3B, 0xB8, 0xF3, 0x6F, 0xC2,- 0xF7, 0xE6, 0xD2, 0x89, 0x6E, 0x44, 0x56, 0xA5,- 0x23, 0x46, 0xC4, 0x94, 0x8E, 0x3E, 0xC6, 0x34,- 0xCB, 0xF1, 0x8F, 0x39, 0xC4, 0x46, 0xCB, 0xAB- },- {- 0x3D, 0x9F, 0x75, 0xD3, 0xE5, 0x0D, 0x9B, 0xA3,- 0xBC, 0xAC, 0x4A, 0x4E, 0x11, 0x6B, 0x9B, 0x30,- 0x8D, 0xC6, 0x45, 0x99, 0xA3, 0x86, 0x4A, 0x9D,- 0xAF, 0xD7, 0x5C, 0xB7, 0x1F, 0x2D, 0xE3, 0x10,- 0x9F, 0x79, 0x56, 0xA7, 0xD2, 0xDD, 0x37, 0x4F,- 0x84, 0x06, 0xD7, 0x7F, 0x79, 0x63, 0x11, 0xE3,- 0xD3, 0x00, 0x89, 0xE5, 0x4D, 0xD6, 0xCE, 0x8A,- 0xBB, 0x02, 0xA8, 0x5A, 0x85, 0xAE, 0x92, 0xE4- },- {- 0xEF, 0x39, 0x51, 0x47, 0x5A, 0x16, 0xDF, 0x64,- 0x98, 0x32, 0x24, 0x04, 0x65, 0x30, 0xDC, 0x7C,- 0xB0, 0x53, 0xD2, 0x93, 0x94, 0x75, 0x39, 0x11,- 0xC4, 0x94, 0x99, 0x50, 0xF2, 0x3E, 0x8A, 0x92,- 0xC7, 0x09, 0xF4, 0x63, 0x69, 0xB2, 0x3A, 0x0D,- 0x70, 0x3A, 0x6F, 0x36, 0x49, 0x0F, 0x75, 0xBE,- 0x1E, 0x3E, 0x81, 0x29, 0xA8, 0x29, 0xF3, 0xDC,- 0xD7, 0x2D, 0x0E, 0x55, 0x49, 0x7B, 0x81, 0x33- },- {- 0xD4, 0x19, 0x7D, 0x2A, 0x68, 0x5B, 0xCA, 0x6B,- 0xFB, 0xDD, 0x0E, 0x3D, 0x84, 0xC7, 0x48, 0x01,- 0x35, 0x48, 0xBC, 0x84, 0x9F, 0xE6, 0x49, 0xDA,- 0xE7, 0xC4, 0xA2, 0x77, 0xFC, 0xBD, 0x8F, 0x81,- 0x8A, 0x9E, 0xDF, 0xA6, 0xCA, 0x14, 0xD7, 0xFE,- 0xEA, 0x72, 0x6B, 0x23, 0xB4, 0xA3, 0x3A, 0xA8,- 0xA3, 0xF5, 0xA6, 0x61, 0x67, 0x21, 0x5C, 0x61,- 0x48, 0xC0, 0x6B, 0x94, 0xCD, 0x8B, 0xFE, 0x37- },- {- 0x7A, 0x24, 0x40, 0x33, 0x35, 0xB8, 0x64, 0x10,- 0xD8, 0xD6, 0x93, 0xF1, 0x63, 0xD6, 0x19, 0x8A,- 0x68, 0x0F, 0x7E, 0x3A, 0xC0, 0x25, 0xEC, 0x44,- 0x74, 0x24, 0x9B, 0x01, 0x16, 0x77, 0xFE, 0x1C,- 0x86, 0x6A, 0xAF, 0x45, 0x3D, 0xB0, 0xE8, 0xF6,- 0x54, 0x33, 0x51, 0x50, 0x86, 0x3A, 0xCE, 0x57,- 0x66, 0x50, 0x80, 0x31, 0x91, 0x27, 0x8E, 0x9D,- 0x4B, 0x54, 0x7A, 0x43, 0x4C, 0x56, 0x54, 0xE2- },- {- 0xAF, 0x07, 0xC6, 0x7D, 0x58, 0x74, 0x3A, 0xEB,- 0x18, 0x50, 0xEB, 0x53, 0xB2, 0xDA, 0x78, 0xEC,- 0xF7, 0x09, 0x58, 0x18, 0x32, 0x5B, 0xEB, 0x86,- 0x6F, 0xF3, 0x13, 0xE3, 0x94, 0xC0, 0x07, 0xE0,- 0xC0, 0xB5, 0xA1, 0xCD, 0x7A, 0xE6, 0xBB, 0x37,- 0xCD, 0x27, 0x81, 0xB5, 0x2D, 0x15, 0x4D, 0x18,- 0x86, 0x5D, 0x5E, 0x37, 0xDB, 0xAA, 0x5F, 0x96,- 0x73, 0x9B, 0xF7, 0x69, 0x59, 0x96, 0xAE, 0x30- },- {- 0x28, 0xB3, 0xC2, 0x60, 0xFA, 0x7F, 0x23, 0xB9,- 0xCC, 0xAD, 0xD6, 0x15, 0xA1, 0x14, 0x69, 0x49,- 0x8A, 0xDB, 0x18, 0xD7, 0xA9, 0xF6, 0x84, 0xFD,- 0xE4, 0x35, 0xC0, 0x65, 0x33, 0xF5, 0xF5, 0x08,- 0xB2, 0x9B, 0x5E, 0xCD, 0x0E, 0xCD, 0x57, 0x36,- 0x9F, 0x22, 0xF1, 0xC5, 0x4E, 0x61, 0xBE, 0x6C,- 0xD1, 0x04, 0xC8, 0xF7, 0xD3, 0xE1, 0x84, 0x7A,- 0xAD, 0x67, 0x07, 0x3A, 0x47, 0x86, 0xE1, 0xDB- },- {- 0xD6, 0x43, 0x23, 0x33, 0x25, 0x23, 0x9E, 0x2E,- 0xBD, 0x41, 0x1F, 0x0E, 0x00, 0x23, 0x30, 0x56,- 0x2E, 0xB1, 0xBB, 0x08, 0xE6, 0x88, 0x24, 0xB7,- 0x1B, 0x98, 0x19, 0x9C, 0x76, 0xD5, 0x31, 0x58,- 0xD9, 0x1D, 0xDD, 0x6F, 0x4F, 0x82, 0x61, 0xEC,- 0x1D, 0x72, 0xFC, 0x77, 0xC2, 0xCC, 0x23, 0x7E,- 0xDA, 0x15, 0xF0, 0x25, 0x7C, 0xF0, 0x7B, 0x84,- 0xCF, 0x1F, 0xBD, 0x1D, 0xBA, 0xFA, 0x1D, 0xFC- },- {- 0x3D, 0x7B, 0x44, 0xCC, 0x82, 0xEF, 0xCA, 0xFC,- 0xAB, 0xA6, 0xB1, 0x91, 0x05, 0x48, 0x95, 0x8C,- 0x18, 0x0A, 0x0E, 0x8D, 0x84, 0xBC, 0x66, 0x3E,- 0x8E, 0xF9, 0x53, 0x3B, 0xD8, 0x0C, 0x4B, 0xBA,- 0xAA, 0x25, 0x5B, 0x19, 0x81, 0xF7, 0x56, 0xEB,- 0x10, 0x79, 0xAD, 0x0F, 0x34, 0x71, 0xA1, 0xFC,- 0x9D, 0x7A, 0x43, 0x23, 0x39, 0x30, 0x3A, 0x57,- 0x81, 0xA3, 0x45, 0x35, 0x30, 0x9E, 0x5A, 0x24- },- {- 0xEB, 0x08, 0x12, 0xC9, 0x67, 0x06, 0x46, 0xD5,- 0x63, 0x19, 0x8B, 0x11, 0x7A, 0xAF, 0xC5, 0x6F,- 0xA1, 0xB6, 0x56, 0x0F, 0x88, 0xB5, 0x75, 0x4E,- 0xBF, 0xC3, 0x1B, 0x35, 0x52, 0x16, 0xD8, 0xD7,- 0x4D, 0x34, 0x1E, 0x35, 0xB2, 0x43, 0xBC, 0x93,- 0x8C, 0xF5, 0x46, 0xAF, 0x1F, 0x73, 0xC1, 0xB0,- 0x04, 0x55, 0xDC, 0x06, 0xB2, 0xC6, 0xC5, 0x35,- 0x27, 0x9E, 0x87, 0x67, 0x49, 0x8F, 0x14, 0xE6- },- {- 0x7B, 0xBA, 0x7D, 0x73, 0x04, 0x02, 0x1C, 0x75,- 0xB5, 0xD6, 0xCE, 0x66, 0xB4, 0xEF, 0xA5, 0x50,- 0x19, 0xD9, 0x42, 0xD2, 0x08, 0xAF, 0xAC, 0x82,- 0x11, 0xAA, 0x7E, 0x5E, 0x11, 0x1E, 0x27, 0x69,- 0x76, 0x70, 0xE4, 0xEC, 0x91, 0xBA, 0x30, 0x8E,- 0xBD, 0xFB, 0x19, 0x15, 0x4C, 0x3B, 0xAD, 0x05,- 0x26, 0xA6, 0x25, 0x41, 0xAE, 0x5D, 0x43, 0xD0,- 0xF5, 0x47, 0xB9, 0xD9, 0x8E, 0x07, 0x36, 0x60- },- {- 0xA8, 0xE2, 0xA9, 0x46, 0x8D, 0xA3, 0xE3, 0x54,- 0x3A, 0x23, 0xA5, 0x78, 0x78, 0x0E, 0x25, 0x62,- 0xC7, 0xCE, 0x57, 0xFD, 0x11, 0x20, 0xE1, 0xC0,- 0x24, 0xD7, 0xEA, 0x32, 0x90, 0x31, 0x70, 0x46,- 0x61, 0x6E, 0x14, 0xCD, 0x0F, 0x15, 0xA8, 0x6B,- 0x99, 0x39, 0x54, 0x9B, 0x14, 0x76, 0x11, 0xB6,- 0xA5, 0x5D, 0x85, 0xAB, 0xC2, 0x5F, 0x63, 0x95,- 0x46, 0xB8, 0x9D, 0xD2, 0x3D, 0x39, 0xA9, 0x85- },- {- 0xCE, 0x87, 0x4C, 0xD6, 0xE1, 0x95, 0x8B, 0x9D,- 0x7F, 0x11, 0xFF, 0x44, 0xAB, 0x08, 0x32, 0xE8,- 0x48, 0x70, 0x2C, 0x8F, 0x26, 0x65, 0x6B, 0xA1,- 0x0B, 0xF5, 0x72, 0x0A, 0x7C, 0xAA, 0x1F, 0x59,- 0x08, 0xC9, 0x9A, 0x96, 0x03, 0xA9, 0x8B, 0x41,- 0x6C, 0x57, 0x22, 0x8C, 0x81, 0x9C, 0xEA, 0xF8,- 0x27, 0x01, 0x3B, 0x2E, 0x6D, 0x6B, 0x2D, 0xAE,- 0x59, 0xDF, 0xF1, 0x04, 0xB9, 0x02, 0xC3, 0x1B- },- {- 0x30, 0xFF, 0xFE, 0x37, 0x21, 0x8D, 0xB1, 0x94,- 0xB2, 0x32, 0x73, 0x49, 0x8F, 0x45, 0x44, 0xD3,- 0x84, 0x14, 0xBE, 0xE4, 0x1B, 0x17, 0x55, 0xA0,- 0xC6, 0xC2, 0xDB, 0xCB, 0x41, 0x19, 0x42, 0xD5,- 0xEC, 0xB9, 0xD4, 0x52, 0x3F, 0xB4, 0x79, 0x4B,- 0xA3, 0x6E, 0x57, 0x9A, 0xF2, 0xF8, 0xDD, 0x85,- 0x19, 0x99, 0x23, 0x31, 0x83, 0xFA, 0xB2, 0x7B,- 0x47, 0xAD, 0xD8, 0x7D, 0xF3, 0x59, 0x14, 0xBB- },- {- 0xCE, 0xF4, 0x43, 0x1D, 0xCE, 0x9F, 0xF5, 0x5A,- 0x00, 0x30, 0x0E, 0xC8, 0x64, 0x9E, 0x27, 0x58,- 0x36, 0x18, 0x22, 0x43, 0x69, 0xF6, 0x0A, 0x5C,- 0x89, 0x6B, 0x2A, 0x31, 0x10, 0xB0, 0x32, 0xB8,- 0x7C, 0x9E, 0xE4, 0xF2, 0x6C, 0x5F, 0x0B, 0xDB,- 0x50, 0x3E, 0xA7, 0x44, 0x7A, 0x5D, 0xB3, 0xF7,- 0x07, 0xFE, 0x34, 0x10, 0xDA, 0xCD, 0xD7, 0x57,- 0x22, 0x19, 0xBD, 0xEA, 0x8E, 0x17, 0xDC, 0x04- },- {- 0x8F, 0xF0, 0xBC, 0xB7, 0x5F, 0x00, 0x61, 0xB5,- 0xF9, 0x09, 0x29, 0x8F, 0x56, 0x9E, 0x45, 0xC7,- 0x5E, 0xD2, 0xD6, 0x4A, 0x81, 0x89, 0xCE, 0xBD,- 0x4E, 0x02, 0x56, 0x6E, 0x1A, 0x1B, 0x8B, 0xE5,- 0x3A, 0x78, 0x32, 0x28, 0x55, 0x8E, 0x28, 0xB5,- 0xF8, 0x7C, 0xCC, 0x2F, 0x42, 0x8F, 0x7F, 0x87,- 0x97, 0x44, 0xB5, 0x25, 0xB2, 0x49, 0x62, 0xB3,- 0x60, 0x4B, 0x12, 0x0F, 0x06, 0x77, 0x9F, 0x2E- },- {- 0x7F, 0x8D, 0xDF, 0xFB, 0x4D, 0xC1, 0x51, 0x91,- 0xDE, 0x3D, 0xDB, 0xE4, 0xA0, 0xF8, 0x8B, 0x7A,- 0xB0, 0x2D, 0x48, 0xE2, 0x5C, 0xFC, 0x1F, 0xE9,- 0x1D, 0xA5, 0x57, 0xE8, 0x85, 0xD0, 0x12, 0xB8,- 0xF6, 0x55, 0x26, 0xC5, 0xB7, 0xB1, 0x01, 0x3F,- 0xC8, 0x16, 0x58, 0x50, 0x43, 0xA3, 0x45, 0x60,- 0x5A, 0x39, 0xD8, 0xDA, 0xD7, 0x0D, 0x8A, 0x64,- 0x48, 0x51, 0x32, 0x50, 0xAA, 0xC4, 0xF3, 0xD5- },- {- 0xB1, 0xFE, 0x8C, 0x68, 0xAE, 0xF6, 0xB4, 0xD4,- 0xB2, 0x33, 0x54, 0xEB, 0x8C, 0x1D, 0x8F, 0x5A,- 0x56, 0xE3, 0x2E, 0x76, 0xB9, 0x6A, 0xC8, 0x44,- 0x3B, 0x2A, 0xB8, 0x35, 0xE4, 0xC8, 0xB6, 0x74,- 0xB3, 0x3E, 0x4C, 0x6C, 0x6D, 0xC1, 0x21, 0xD7,- 0xC2, 0xD3, 0x4B, 0x59, 0xB3, 0x7A, 0x56, 0x8A,- 0x1C, 0x98, 0xD5, 0x00, 0x32, 0x4E, 0x53, 0x08,- 0x87, 0x85, 0xB6, 0xB0, 0x80, 0x63, 0x47, 0xD1- },- {- 0x8E, 0x87, 0x34, 0xFC, 0xF9, 0x25, 0x9E, 0xE3,- 0x7F, 0xE9, 0xC6, 0xCD, 0xA2, 0x82, 0xC2, 0xD5,- 0xEB, 0x83, 0xD0, 0xCF, 0x43, 0x9C, 0x86, 0x19,- 0xD4, 0xB0, 0x42, 0xFF, 0x69, 0x96, 0x6B, 0x03,- 0x56, 0x5B, 0xE4, 0xDF, 0x96, 0x39, 0x3F, 0xE6,- 0xBF, 0x35, 0xAF, 0xA1, 0x6E, 0x02, 0x73, 0xB6,- 0xD3, 0x39, 0xC0, 0x09, 0x95, 0xBF, 0x6F, 0x60,- 0xA7, 0x14, 0xEF, 0x18, 0x0E, 0xBB, 0x93, 0x15- },- {- 0xAE, 0x15, 0x6D, 0x43, 0xA7, 0x2C, 0x04, 0x29,- 0x42, 0x59, 0x58, 0x78, 0xA7, 0x83, 0x07, 0x97,- 0x60, 0xF5, 0x21, 0xED, 0xB8, 0xB2, 0xC3, 0xD4,- 0x1A, 0x56, 0x6B, 0x7C, 0xF7, 0x4A, 0x4A, 0x08,- 0xEA, 0x0F, 0x11, 0x9D, 0x24, 0x0A, 0x62, 0xEC,- 0x73, 0xB9, 0x50, 0x97, 0x88, 0xFA, 0x3A, 0xED,- 0xF1, 0x20, 0xEE, 0x88, 0xCB, 0x95, 0x1B, 0x69,- 0x3F, 0x8F, 0x7C, 0xAF, 0x8C, 0xBA, 0x37, 0x7F- },- {- 0x93, 0x30, 0xAA, 0xCA, 0x8C, 0x08, 0x84, 0x46,- 0x58, 0xC2, 0x95, 0x06, 0xB1, 0xC3, 0x42, 0x72,- 0xE2, 0xB3, 0xC7, 0xB4, 0xE7, 0x5E, 0x6F, 0xE9,- 0x9A, 0x01, 0x07, 0xEC, 0x5D, 0xA4, 0x53, 0x0F,- 0xB1, 0xC8, 0x8C, 0xAA, 0x66, 0xDD, 0x9C, 0x47,- 0x1E, 0x01, 0xCA, 0x21, 0xA1, 0x3A, 0x5D, 0x6F,- 0x82, 0x15, 0xDE, 0xD3, 0x14, 0x7E, 0x94, 0xDE,- 0x20, 0x88, 0x57, 0x1F, 0xD1, 0xBF, 0x23, 0xB6- },- {- 0xC1, 0x29, 0xF2, 0x2C, 0x50, 0xF5, 0x99, 0x72,- 0x32, 0xE2, 0xB9, 0xF9, 0x3D, 0xFA, 0xA0, 0x0A,- 0xD8, 0xA5, 0x34, 0x29, 0xF9, 0xD1, 0x5B, 0x98,- 0x42, 0xE3, 0xAE, 0x08, 0xD8, 0x49, 0xEB, 0xDD,- 0x45, 0x23, 0x8C, 0x85, 0xF9, 0x2C, 0x6F, 0x91,- 0x7E, 0x0F, 0x8F, 0x6F, 0x94, 0xE2, 0x34, 0xBE,- 0x07, 0x61, 0x68, 0xE0, 0xDF, 0x43, 0xD0, 0x28,- 0x45, 0x52, 0x79, 0xA6, 0xFF, 0x65, 0xDC, 0x84- },- {- 0x0E, 0x2B, 0x4B, 0xC2, 0xF6, 0xA7, 0x5B, 0xE4,- 0xB7, 0xC9, 0xD4, 0xB5, 0x3D, 0x10, 0x4D, 0xA0,- 0x65, 0x85, 0x8D, 0x38, 0x7B, 0x34, 0x0B, 0xC1,- 0x63, 0x4F, 0x3A, 0x83, 0x32, 0xD5, 0x4C, 0xAA,- 0x94, 0x30, 0x24, 0xB2, 0x13, 0xDC, 0x8D, 0x4F,- 0x21, 0x9E, 0xC8, 0xE1, 0xDE, 0xCA, 0xC7, 0xD5,- 0xC6, 0xAE, 0x69, 0xC9, 0xEF, 0xD8, 0x81, 0x49,- 0x36, 0x78, 0x38, 0x20, 0x5D, 0x0D, 0xC7, 0xC0- },- {- 0x83, 0xB5, 0x43, 0x85, 0x3B, 0x81, 0x42, 0xA8,- 0x3B, 0xEF, 0xF0, 0x73, 0x5F, 0x20, 0x18, 0x91,- 0xE7, 0xFF, 0xC6, 0x7D, 0xBD, 0xCD, 0x21, 0xA4,- 0x22, 0xBB, 0x33, 0x6D, 0xE3, 0x29, 0x72, 0xAE,- 0x03, 0x92, 0x64, 0x6F, 0x68, 0x27, 0xD8, 0x0C,- 0xDA, 0x65, 0x4F, 0xD3, 0xA0, 0x77, 0x4C, 0xD2,- 0xF9, 0x95, 0x51, 0x7C, 0xF0, 0x64, 0xC6, 0x17,- 0xF2, 0x1A, 0x54, 0x27, 0x5F, 0xE5, 0x0C, 0x8D- },- {- 0x09, 0xBE, 0x15, 0xEB, 0x6A, 0x5C, 0x22, 0x6F,- 0x6D, 0x95, 0x08, 0xCB, 0xA4, 0xA2, 0x51, 0x9F,- 0xBA, 0x17, 0x2A, 0xF8, 0x37, 0x58, 0x27, 0xD7,- 0x54, 0xA7, 0xA1, 0xBC, 0x19, 0x25, 0xD1, 0x3F,- 0x5E, 0x63, 0x43, 0xF3, 0xE1, 0x4D, 0x08, 0xA0,- 0x6E, 0x8D, 0x37, 0xF8, 0xEC, 0x56, 0xFB, 0x43,- 0x8E, 0x62, 0x36, 0x66, 0xB6, 0xFB, 0x0E, 0x23,- 0xFB, 0x50, 0x47, 0x7D, 0x41, 0x1B, 0x0C, 0x3A- },- {- 0xC3, 0x57, 0x97, 0xE9, 0x83, 0x2D, 0x3E, 0x23,- 0x23, 0x33, 0x5B, 0x8C, 0x19, 0xC5, 0xFA, 0x74,- 0x91, 0x60, 0x2D, 0xBF, 0x6B, 0xEA, 0x77, 0xFA,- 0xEE, 0xC9, 0x51, 0x0B, 0xC2, 0xE8, 0x91, 0xC8,- 0xC3, 0x46, 0x21, 0x99, 0xF6, 0x04, 0x18, 0xD2,- 0xE0, 0xAB, 0xFF, 0xE3, 0x1B, 0x61, 0x3B, 0xB9,- 0x80, 0xEA, 0x32, 0xB7, 0x6C, 0x82, 0x43, 0x8D,- 0x02, 0x5F, 0x67, 0x8C, 0xAF, 0x48, 0x24, 0xA4- },- {- 0xCF, 0xC0, 0x57, 0xFD, 0xA7, 0x8A, 0x50, 0x31,- 0x8F, 0x49, 0x78, 0xFF, 0xFF, 0xAF, 0x77, 0x17,- 0x98, 0xE1, 0x2C, 0x3E, 0xA8, 0xC7, 0x98, 0x19,- 0x5B, 0xC5, 0xB4, 0xE6, 0x89, 0x1E, 0x61, 0xAA,- 0x25, 0xF7, 0xAF, 0x4A, 0xA7, 0x28, 0x6A, 0xC8,- 0x50, 0x76, 0x62, 0xC9, 0x07, 0xED, 0x91, 0x3E,- 0xDA, 0x65, 0x8F, 0x63, 0xFC, 0x47, 0x99, 0x7C,- 0x59, 0xB8, 0x59, 0x70, 0xF8, 0x78, 0xCA, 0x18- },- {- 0xD8, 0xEB, 0xE0, 0xE6, 0x38, 0xFC, 0x53, 0x5B,- 0x52, 0xCB, 0x0A, 0xFC, 0xE0, 0xF8, 0x2D, 0xDE,- 0x28, 0x57, 0x01, 0xAF, 0xF3, 0x29, 0xA5, 0x4B,- 0xA0, 0x6D, 0xFD, 0x3D, 0x1B, 0x4B, 0x31, 0xF9,- 0xF4, 0xB2, 0x4D, 0x9D, 0x68, 0x36, 0xF1, 0x22,- 0x3D, 0x6D, 0xE6, 0x6B, 0xAE, 0x78, 0x88, 0xFE,- 0xBC, 0x20, 0x40, 0xCF, 0xE9, 0x30, 0xE6, 0x9C,- 0xED, 0x59, 0xDA, 0x6D, 0xA8, 0xA0, 0xA6, 0xA6- },- {- 0x16, 0xB8, 0xC5, 0x5C, 0xF2, 0xF1, 0x35, 0xA4,- 0x32, 0x59, 0x0D, 0x2D, 0x4C, 0xFA, 0x38, 0x59,- 0x2F, 0x59, 0x35, 0xF8, 0xE7, 0x1C, 0xE0, 0x8A,- 0x02, 0x06, 0xA0, 0xE5, 0xAB, 0xEA, 0x90, 0xB2,- 0xE1, 0x07, 0xEB, 0x86, 0xB9, 0x18, 0x82, 0x3B,- 0xDD, 0x3B, 0xD2, 0x66, 0x07, 0x22, 0xC8, 0xDB,- 0xFA, 0x66, 0xAB, 0xB9, 0xF8, 0x63, 0x8E, 0x46,- 0x34, 0x02, 0xF6, 0x57, 0xA1, 0x68, 0x64, 0x0A- },- {- 0x6A, 0x6E, 0x89, 0x38, 0x4F, 0x53, 0x5F, 0x02,- 0x17, 0x6C, 0x48, 0xA9, 0x93, 0xD3, 0x68, 0x7B,- 0x38, 0x9B, 0xFC, 0x03, 0x05, 0x0C, 0x77, 0x70,- 0x86, 0x35, 0x5C, 0x1A, 0x55, 0x59, 0x77, 0x42,- 0xF0, 0xB7, 0x48, 0x34, 0xA7, 0x1D, 0x05, 0x2A,- 0xE8, 0xA8, 0x3D, 0xC3, 0x4A, 0x8F, 0xD7, 0xBA,- 0x5A, 0xA6, 0x9D, 0xBD, 0x61, 0x2A, 0x4C, 0x22,- 0xDF, 0x4F, 0x74, 0xE2, 0x52, 0x8F, 0xB7, 0xA3- },- {- 0x1E, 0x40, 0x38, 0xCF, 0xA5, 0x0D, 0x8B, 0x13,- 0xEF, 0x68, 0xBE, 0xC3, 0xB0, 0xFF, 0xD5, 0x62,- 0xA0, 0x7A, 0xD6, 0x34, 0xB5, 0x82, 0x82, 0x57,- 0xDB, 0xA8, 0x73, 0x04, 0xF8, 0x23, 0xA9, 0x00,- 0x49, 0x2A, 0x31, 0x37, 0x19, 0x8B, 0x60, 0x5C,- 0xC7, 0xF7, 0x7C, 0x33, 0xB8, 0xCA, 0x3D, 0x94,- 0x0F, 0xD9, 0xB3, 0x38, 0xCF, 0x6B, 0x7B, 0x36,- 0xE7, 0xD9, 0xD9, 0x27, 0x20, 0x97, 0x93, 0xD0- },- {- 0x5B, 0xA6, 0xCD, 0x98, 0x8F, 0xF9, 0xA4, 0x81,- 0x91, 0x42, 0x21, 0x7E, 0xD6, 0x5D, 0x43, 0x7B,- 0x41, 0x3B, 0xA5, 0x02, 0x6B, 0x55, 0x4D, 0x8D,- 0x94, 0xEA, 0x27, 0x02, 0xC0, 0x96, 0xD1, 0x01,- 0x47, 0x75, 0xDB, 0xA2, 0xCA, 0xE9, 0x6F, 0x1E,- 0x2E, 0x72, 0x29, 0xC3, 0x78, 0xF2, 0x0B, 0x03,- 0x89, 0xE1, 0x19, 0x54, 0x7F, 0xDD, 0x35, 0x22,- 0x4A, 0x61, 0x7F, 0xCD, 0xCD, 0x0C, 0xB3, 0xAF- },- {- 0x2D, 0x20, 0x96, 0x12, 0x30, 0xE2, 0x50, 0xF8,- 0x1D, 0xDC, 0xD2, 0xD2, 0xAB, 0x3E, 0xF0, 0xDA,- 0xCF, 0x96, 0x85, 0x1E, 0xBA, 0xE5, 0x96, 0x34,- 0x47, 0x19, 0x2C, 0xDB, 0x89, 0xE4, 0x8E, 0x84,- 0xF3, 0x96, 0xEC, 0x9A, 0x09, 0x25, 0x27, 0x84,- 0xE1, 0x73, 0xAD, 0xA5, 0x2A, 0x9C, 0x81, 0xAC,- 0xDA, 0xB3, 0xD8, 0xD6, 0x83, 0x80, 0x24, 0x7A,- 0xE9, 0x75, 0x23, 0x9B, 0x01, 0x7D, 0xC1, 0xCE- },- {- 0x35, 0x38, 0x3E, 0xA7, 0x76, 0x2B, 0x55, 0x31,- 0x0A, 0x7D, 0x57, 0xFB, 0xD5, 0xA5, 0x49, 0x97,- 0x57, 0x9B, 0x0B, 0xA3, 0x9A, 0x4E, 0xB8, 0x87,- 0x94, 0x2B, 0xD1, 0x4F, 0xD8, 0x48, 0x31, 0x88,- 0xE5, 0x00, 0x48, 0x83, 0x8D, 0x6C, 0x02, 0xDC,- 0x75, 0x89, 0x59, 0xA9, 0xF7, 0x4D, 0x83, 0x37,- 0x27, 0x43, 0xE8, 0x64, 0xC6, 0x01, 0xED, 0x70,- 0x40, 0xA9, 0xE8, 0x71, 0x52, 0xD4, 0xCF, 0xFB- },- {- 0x0B, 0x22, 0x3B, 0x6A, 0x1C, 0x2D, 0x3A, 0xB3,- 0xF9, 0x07, 0x7A, 0x31, 0x7B, 0x7F, 0xE3, 0x2F,- 0x6F, 0x95, 0x7B, 0x7B, 0x17, 0x41, 0xF2, 0x71,- 0x77, 0x71, 0x83, 0x4D, 0x37, 0x96, 0xA1, 0x9B,- 0xA3, 0x62, 0x73, 0xC9, 0xEE, 0xD6, 0x4C, 0x07,- 0xFA, 0x4E, 0x9A, 0xF7, 0xA9, 0x8A, 0xCE, 0x9C,- 0x78, 0x9A, 0x79, 0xA5, 0xA0, 0xF9, 0x4D, 0x04,- 0x05, 0xAA, 0xF0, 0x4A, 0xF3, 0x1E, 0xD7, 0x97- },- {- 0x5A, 0x00, 0x7F, 0x58, 0x95, 0x52, 0x4A, 0x5E,- 0x80, 0x37, 0x03, 0x6E, 0x0F, 0x26, 0x39, 0xFD,- 0xA8, 0xC5, 0xC1, 0x51, 0x2D, 0x76, 0xE9, 0xD1,- 0x9B, 0x3D, 0xD2, 0xD5, 0xBA, 0x43, 0xF5, 0x07,- 0x97, 0x41, 0xA4, 0x58, 0x31, 0x3C, 0x5E, 0x02,- 0x40, 0x0C, 0xE0, 0x2C, 0xB6, 0x56, 0x80, 0xBE,- 0x28, 0x2E, 0xAC, 0xD9, 0xA2, 0x54, 0xEF, 0x1C,- 0xDD, 0xEE, 0xBD, 0xCE, 0xE8, 0x5D, 0x41, 0x87- },- {- 0xBE, 0x4D, 0xD1, 0xCC, 0xBD, 0xE1, 0x67, 0x00,- 0x04, 0xD0, 0xEF, 0xAB, 0x65, 0x43, 0xE9, 0x1C,- 0x4E, 0x46, 0x64, 0xE5, 0xA2, 0xA8, 0x8B, 0xAC,- 0x6D, 0xD2, 0x7D, 0x27, 0x64, 0x8D, 0x30, 0x2A,- 0x06, 0x5B, 0xE6, 0x07, 0x8B, 0x22, 0xE4, 0xC4,- 0xAB, 0x4F, 0x7F, 0x7C, 0xBF, 0xAF, 0xC1, 0xAD,- 0x86, 0xEC, 0x2A, 0x50, 0x4F, 0xE5, 0x85, 0x17,- 0x66, 0xF7, 0xA3, 0x24, 0x47, 0x57, 0xCB, 0x6F- },- {- 0x0F, 0xB4, 0x48, 0x3F, 0x96, 0x59, 0x29, 0x6C,- 0xB9, 0x24, 0x5B, 0x57, 0x79, 0x2A, 0x1E, 0x6A,- 0x99, 0xF2, 0x87, 0x90, 0x07, 0x72, 0x87, 0x96,- 0x8A, 0xB3, 0xEF, 0x35, 0x89, 0xE6, 0x90, 0x24,- 0x06, 0xF1, 0xF3, 0x9D, 0xCC, 0xE0, 0x06, 0x1D,- 0xEA, 0x94, 0x0F, 0xC8, 0xC1, 0xC4, 0x9F, 0x4B,- 0x54, 0x5E, 0xED, 0x59, 0xE9, 0x6D, 0xDA, 0xE9,- 0x6A, 0x6C, 0x35, 0xB5, 0x59, 0x3C, 0x29, 0x77- },- {- 0x41, 0xD1, 0xFA, 0xDC, 0x60, 0xA4, 0x6C, 0x9A,- 0xD0, 0x12, 0x0A, 0x3F, 0x54, 0xD0, 0x05, 0xF5,- 0xA1, 0x07, 0x5E, 0x2F, 0x71, 0xEE, 0x0D, 0xA6,- 0x18, 0xBA, 0xC1, 0x46, 0x1E, 0xFA, 0xE9, 0x69,- 0xEC, 0xCD, 0x7A, 0xA5, 0x75, 0xC4, 0xCD, 0xAE,- 0x97, 0x1D, 0xED, 0x13, 0xAE, 0x13, 0xC5, 0x06,- 0x87, 0x2C, 0xEC, 0xB5, 0xB2, 0x08, 0xFA, 0x72,- 0xA9, 0x48, 0x40, 0x02, 0x3E, 0xDB, 0x3E, 0xFE- },- {- 0x2F, 0x7F, 0xDC, 0x1D, 0xA4, 0x4B, 0x6E, 0x5D,- 0x2D, 0xEC, 0xDE, 0x82, 0x1A, 0xAF, 0x4B, 0x49,- 0x16, 0x8C, 0x02, 0xE8, 0xD5, 0xF2, 0x5D, 0x5C,- 0x69, 0x98, 0x71, 0x08, 0x3A, 0xEB, 0xD9, 0x28,- 0xB7, 0x4D, 0xC2, 0x2D, 0xCB, 0xED, 0xFA, 0xBA,- 0x93, 0x16, 0xAE, 0xFC, 0xA8, 0x48, 0xD1, 0x5F,- 0x05, 0x17, 0x32, 0x99, 0x03, 0xD3, 0x4B, 0x83,- 0x70, 0xDD, 0xF9, 0xBD, 0x58, 0xC6, 0xD0, 0xCD- },- {- 0x88, 0x55, 0x8A, 0x46, 0x4E, 0xE1, 0xA8, 0x80,- 0x3B, 0x23, 0x95, 0xAF, 0x6A, 0x64, 0x90, 0x84,- 0x2B, 0x5C, 0xD4, 0x3D, 0x41, 0xF6, 0xC0, 0x7C,- 0xD6, 0xC5, 0xF8, 0x5F, 0x82, 0xF5, 0x84, 0x32,- 0xA0, 0xB1, 0x62, 0xB4, 0x38, 0xBF, 0x0C, 0xB7,- 0x08, 0x2A, 0x76, 0x73, 0xE2, 0x87, 0xD6, 0xB9,- 0x0F, 0x8D, 0x0D, 0xC8, 0xAA, 0x5C, 0xEB, 0xA3,- 0x6B, 0xFA, 0x77, 0xB1, 0x5B, 0xA0, 0x69, 0x16- },- {- 0xEC, 0xC1, 0x49, 0x91, 0x7B, 0x26, 0x63, 0x98,- 0xB6, 0xF3, 0x29, 0x7E, 0x96, 0x96, 0x73, 0xB1,- 0x4E, 0xAE, 0x69, 0xCE, 0x43, 0x67, 0x1F, 0xD3,- 0xC6, 0xC2, 0x15, 0xC7, 0xCF, 0x42, 0xDE, 0xA1,- 0x02, 0xFC, 0x6B, 0xD9, 0x0C, 0x87, 0xDB, 0xD4,- 0x29, 0x02, 0x51, 0x12, 0x9C, 0xC1, 0x9B, 0x38,- 0xCC, 0xF0, 0x0C, 0xBD, 0xB1, 0x6D, 0xD8, 0xDE,- 0x51, 0x58, 0x60, 0x1A, 0x41, 0x6B, 0x1F, 0x00- },- {- 0xED, 0x30, 0x12, 0xF8, 0x9D, 0x71, 0xED, 0x13,- 0xBB, 0x82, 0x72, 0xEC, 0xDC, 0x3D, 0x0F, 0x51,- 0xE1, 0x4A, 0x37, 0xC1, 0xEF, 0x77, 0x57, 0x77,- 0x7A, 0xDA, 0x67, 0x12, 0x78, 0x4B, 0xE1, 0x6E,- 0xCF, 0xD3, 0xE6, 0x40, 0x58, 0x30, 0xF5, 0x1D,- 0xB3, 0x3D, 0xCB, 0x85, 0x52, 0x92, 0x93, 0xE2,- 0x3E, 0x47, 0x3A, 0xBF, 0x8C, 0x5C, 0x76, 0x55,- 0xD0, 0xC4, 0xF1, 0x52, 0xD0, 0x48, 0xBA, 0xB2- },- {- 0x09, 0x7A, 0x81, 0x19, 0x1E, 0x10, 0x05, 0x67,- 0x6D, 0x6E, 0x22, 0xA9, 0x63, 0x48, 0xFA, 0x4A,- 0x7C, 0x95, 0x61, 0xFD, 0x4D, 0x22, 0x8E, 0xB2,- 0x5F, 0x29, 0x47, 0x56, 0xBB, 0x87, 0xA2, 0xBA,- 0x88, 0x47, 0x5B, 0x03, 0x6F, 0x79, 0xFE, 0x37,- 0x3D, 0x75, 0x40, 0x87, 0x05, 0x52, 0x00, 0x1D,- 0x54, 0x79, 0x5F, 0x25, 0x92, 0x39, 0xBE, 0x6D,- 0x32, 0xC4, 0x87, 0xD1, 0x94, 0x4F, 0x1F, 0xE7- },- {- 0x3F, 0xC7, 0x98, 0xE4, 0x69, 0xD3, 0x90, 0x86,- 0xBA, 0x0B, 0xB4, 0x06, 0x3E, 0x80, 0x5F, 0xDF,- 0xB2, 0x20, 0x8D, 0xE4, 0x99, 0x18, 0x41, 0x73,- 0xF9, 0xA2, 0x36, 0x4D, 0x56, 0xBC, 0xD5, 0x63,- 0xED, 0x61, 0x9B, 0xB6, 0x87, 0x32, 0x24, 0x25,- 0x01, 0x4A, 0x1A, 0xAD, 0x3B, 0xCF, 0x50, 0xD2,- 0x2D, 0x83, 0xA9, 0x9D, 0x09, 0x73, 0x0A, 0x92,- 0xEC, 0x65, 0x46, 0xB3, 0xFC, 0x40, 0xA2, 0xC6- },- {- 0x69, 0x12, 0xB4, 0xB3, 0x41, 0xC7, 0xDD, 0x70,- 0x68, 0x37, 0x38, 0xBA, 0x0E, 0x7D, 0xEB, 0xBA,- 0xBF, 0xCA, 0x5F, 0x4F, 0xB0, 0x76, 0x0C, 0x84,- 0x97, 0x76, 0xE9, 0x20, 0x75, 0x0B, 0xF1, 0x37,- 0x89, 0xA6, 0x99, 0x97, 0x96, 0x23, 0x4E, 0x9E,- 0x24, 0x07, 0x15, 0xB2, 0x67, 0x67, 0x78, 0x2B,- 0x85, 0xA6, 0x4D, 0x68, 0x0C, 0x6D, 0x4C, 0xD4,- 0x26, 0xAD, 0x72, 0xB2, 0xFC, 0xE0, 0x81, 0xE8- },- {- 0xCE, 0xCD, 0x14, 0x01, 0x50, 0x15, 0x7D, 0xC9,- 0x06, 0xC0, 0xFF, 0x7F, 0x87, 0xC0, 0x08, 0x8F,- 0x31, 0x64, 0x80, 0x78, 0x3B, 0x4F, 0xE0, 0xA5,- 0x94, 0x45, 0x10, 0xC6, 0x4A, 0x87, 0xE3, 0xED,- 0x06, 0x67, 0x97, 0xA2, 0x7C, 0xE9, 0xD0, 0xF2,- 0x84, 0xDC, 0xA5, 0x18, 0x44, 0x18, 0x08, 0xAC,- 0x18, 0x29, 0x0A, 0xFD, 0xC0, 0x31, 0x29, 0x4B,- 0x31, 0xAA, 0x8B, 0x4A, 0x9F, 0xCD, 0x78, 0xF8- },- {- 0x2A, 0x2B, 0xED, 0x5D, 0x6A, 0xC0, 0x89, 0x28,- 0x11, 0xA4, 0x09, 0xD9, 0xF1, 0xFF, 0x63, 0x03,- 0xCC, 0xF9, 0x55, 0x44, 0x57, 0x46, 0x99, 0xCD,- 0xA7, 0xF7, 0x35, 0x03, 0x01, 0xF6, 0xD0, 0xC4,- 0xE8, 0x6E, 0x63, 0x5C, 0x80, 0x87, 0x56, 0x66,- 0xE2, 0xBB, 0x39, 0x07, 0x51, 0x0D, 0x0E, 0x72,- 0x12, 0x0F, 0x04, 0x86, 0x5E, 0xDC, 0x4C, 0x6C,- 0xEE, 0xCB, 0x44, 0x62, 0xD6, 0xAF, 0x60, 0xFB- },- {- 0x03, 0x85, 0xAE, 0x9B, 0x73, 0x5D, 0xC5, 0x9F,- 0x30, 0x4D, 0x41, 0x4C, 0xA0, 0x43, 0x74, 0x9A,- 0xB5, 0x1A, 0xB6, 0x65, 0xEE, 0x01, 0xBE, 0x5E,- 0x52, 0xDC, 0xF7, 0x25, 0xEE, 0x7D, 0xFE, 0xFE,- 0xA6, 0xAD, 0x73, 0xF3, 0x35, 0xEE, 0xCF, 0x2A,- 0x51, 0x02, 0xE8, 0x88, 0x07, 0xFD, 0xC7, 0x5A,- 0xE6, 0xDC, 0x49, 0x0D, 0x7B, 0x8B, 0x5F, 0x11,- 0x63, 0x03, 0xEF, 0x60, 0xA5, 0xF1, 0x7C, 0x06- },- {- 0x0C, 0xA3, 0xFF, 0x03, 0x89, 0x65, 0xC0, 0x3B,- 0xC6, 0x5B, 0xBE, 0x2D, 0x86, 0x6C, 0xE9, 0xE0,- 0xE4, 0xE7, 0xD0, 0x3D, 0xC7, 0xF8, 0x6B, 0xA5,- 0x65, 0x0F, 0x82, 0xDD, 0xB3, 0xA9, 0xAA, 0x84,- 0x6B, 0x2B, 0x1F, 0x55, 0x3B, 0xD8, 0x9F, 0xB4,- 0xF9, 0xB6, 0x2E, 0x3C, 0x7F, 0xAF, 0x9E, 0xC3,- 0x10, 0x9F, 0xA9, 0x0E, 0xE5, 0x6C, 0x24, 0x63,- 0xE6, 0xEF, 0xD1, 0xAB, 0xAD, 0x8E, 0x28, 0xE6- },- {- 0x6D, 0xFD, 0x4F, 0x22, 0x18, 0x4E, 0xD0, 0x91,- 0xFD, 0x5A, 0xBA, 0x03, 0x9F, 0xCD, 0x3D, 0xB9,- 0x22, 0xF5, 0xE5, 0x9B, 0xF8, 0x38, 0xC0, 0x37,- 0x35, 0x7F, 0xAD, 0x93, 0x4B, 0x45, 0x10, 0x60,- 0x3F, 0x43, 0xA7, 0x31, 0x9F, 0xFF, 0xA6, 0x23,- 0x86, 0xF8, 0x78, 0x8F, 0xDF, 0x9D, 0xED, 0x40,- 0xC6, 0x66, 0xB4, 0xBD, 0xCA, 0x86, 0xD9, 0x32,- 0x8F, 0xE5, 0x5A, 0xD8, 0x6B, 0x37, 0x2F, 0xC8- },- {- 0xA3, 0x18, 0x97, 0x61, 0x02, 0x74, 0x7D, 0x80,- 0x0F, 0x58, 0x4D, 0xF6, 0x5B, 0xFB, 0x44, 0x3B,- 0x85, 0x6F, 0x00, 0x9E, 0x74, 0xF7, 0x29, 0x46,- 0xD0, 0x07, 0x6C, 0xED, 0xAC, 0x04, 0x37, 0x6F,- 0xAB, 0x97, 0x34, 0x53, 0xAD, 0xAD, 0xC3, 0x10,- 0xF7, 0x20, 0x81, 0xCB, 0xBA, 0x96, 0x26, 0x4F,- 0xFE, 0x2B, 0x21, 0xA3, 0xB1, 0x8B, 0xE9, 0xD8,- 0x8C, 0x42, 0x46, 0xCB, 0xA6, 0xD3, 0x09, 0x01- },- {- 0xB5, 0xE6, 0xE4, 0xFC, 0xA0, 0xCF, 0x98, 0x48,- 0xA0, 0x05, 0x89, 0xC6, 0x54, 0x57, 0xDB, 0x68,- 0xB3, 0x25, 0x3A, 0x6E, 0x17, 0x78, 0x85, 0x41,- 0x47, 0x2E, 0x1F, 0xB9, 0x48, 0x17, 0xF8, 0x04,- 0x05, 0x4D, 0x07, 0xA5, 0xD3, 0x2D, 0xFA, 0x0C,- 0xDB, 0x6F, 0xB4, 0x4E, 0xED, 0x50, 0xD2, 0x0E,- 0x5F, 0x22, 0x64, 0x36, 0x11, 0x32, 0xFA, 0x5F,- 0xCF, 0xD6, 0xE1, 0xB3, 0x67, 0xC1, 0xBE, 0x28- },- {- 0x2E, 0xA4, 0x57, 0x38, 0x29, 0x25, 0xE0, 0x3C,- 0xF8, 0x11, 0x10, 0x05, 0x0E, 0x63, 0x6A, 0xD6,- 0x78, 0xE0, 0xAA, 0x3C, 0xBC, 0x69, 0x00, 0xBD,- 0xEF, 0x27, 0x8A, 0xAA, 0x18, 0xF2, 0x35, 0xE2,- 0x51, 0x60, 0xA2, 0x0E, 0x23, 0xFE, 0x0E, 0x62,- 0xA8, 0x51, 0x1B, 0x5D, 0xD0, 0x59, 0x2F, 0x79,- 0xCB, 0xC8, 0xEB, 0x7D, 0xEA, 0x64, 0xAC, 0x86,- 0x67, 0x49, 0x43, 0x45, 0xC6, 0x89, 0x2D, 0xD4- },- {- 0x96, 0xB3, 0x49, 0x8B, 0xCC, 0xD7, 0x8B, 0x5A,- 0x40, 0x1B, 0x27, 0x38, 0x78, 0x7D, 0x28, 0xA9,- 0x8A, 0x0E, 0xDF, 0xDC, 0x7C, 0x0B, 0x5F, 0xF9,- 0x43, 0xCF, 0xE1, 0xB1, 0x4E, 0x9C, 0xF5, 0xD9,- 0xED, 0x43, 0x10, 0x7D, 0xFB, 0xDD, 0x9E, 0x97,- 0x28, 0xD5, 0xFD, 0xD6, 0xF7, 0x1F, 0xBC, 0x77,- 0x0E, 0xAD, 0xDC, 0x4F, 0x2E, 0x40, 0x9A, 0xBE,- 0x71, 0x92, 0x7B, 0xAE, 0x1F, 0x8F, 0x73, 0xD1- },- {- 0xCE, 0x1B, 0xFB, 0x9A, 0xFE, 0xD2, 0x8A, 0xF4,- 0xDC, 0x75, 0x35, 0xAD, 0xEF, 0x71, 0xB8, 0xF1,- 0xB8, 0x0A, 0x8D, 0x72, 0x94, 0xB4, 0x11, 0xFD,- 0x1E, 0xD3, 0x93, 0xCF, 0x23, 0x2D, 0x3A, 0x5C,- 0x5D, 0xF2, 0x3D, 0xBB, 0x1D, 0xB2, 0x6D, 0xDD,- 0xF6, 0xF7, 0x45, 0xF8, 0xBC, 0x24, 0xC3, 0x78,- 0x1F, 0x2D, 0xBB, 0xC8, 0x18, 0xA0, 0x0A, 0xE1,- 0xFB, 0x9D, 0x64, 0x63, 0xE9, 0x5F, 0x29, 0x86- },- {- 0xE6, 0x4D, 0x37, 0x35, 0x6B, 0x29, 0x6B, 0x36,- 0x93, 0x0E, 0xAB, 0xE4, 0x54, 0xDB, 0x11, 0xB2,- 0x09, 0x7B, 0x0C, 0x04, 0x0B, 0xED, 0x57, 0x98,- 0x87, 0x8D, 0x38, 0xA8, 0xC4, 0xD1, 0xC6, 0xF3,- 0x26, 0x1F, 0x36, 0xBF, 0xF7, 0x64, 0xE3, 0xB4,- 0xD6, 0x06, 0xB3, 0x17, 0xE5, 0xFF, 0x50, 0x04,- 0x18, 0x45, 0x92, 0xB0, 0xB7, 0xDD, 0xFB, 0x8C,- 0x2F, 0xD8, 0x35, 0x23, 0x26, 0xCD, 0xDD, 0xB1- },- {- 0x85, 0xE6, 0xFE, 0x54, 0xE1, 0xE7, 0x60, 0x46,- 0xAF, 0x68, 0xF5, 0xC6, 0x04, 0x4C, 0x1E, 0x3F,- 0xFF, 0x3B, 0xFC, 0xA0, 0xBA, 0xEC, 0xAE, 0xF6,- 0xA1, 0xDF, 0x90, 0x35, 0x0D, 0xF2, 0xB0, 0xBE,- 0xC6, 0xA4, 0x20, 0xEE, 0x8F, 0x49, 0xAD, 0x44,- 0x64, 0xEC, 0x4C, 0x1E, 0x7D, 0x71, 0xF6, 0x67,- 0x61, 0x4A, 0xCE, 0xBD, 0xAD, 0xA3, 0xDF, 0x32,- 0x07, 0x79, 0x07, 0x83, 0x23, 0xF6, 0xA8, 0xAF- },- {- 0xB1, 0x2F, 0xF1, 0xEB, 0x3B, 0xAB, 0x32, 0x0D,- 0x78, 0x55, 0xB5, 0x49, 0xD7, 0x2B, 0x72, 0x47,- 0x59, 0x91, 0x68, 0x11, 0xCB, 0xCF, 0x3E, 0x1A,- 0x12, 0x82, 0x3F, 0x98, 0xB6, 0x4A, 0xB5, 0xC4,- 0x59, 0x41, 0x61, 0x0F, 0x6B, 0x47, 0x1E, 0x35,- 0xFF, 0x79, 0x28, 0x29, 0xDD, 0x5A, 0xDE, 0x51,- 0x79, 0x12, 0x57, 0x38, 0xF3, 0xF2, 0x37, 0x28,- 0x63, 0x0F, 0x1E, 0xEC, 0x57, 0x77, 0x5A, 0x19- },- {- 0xB4, 0xDB, 0xE7, 0x2A, 0x1E, 0x21, 0x69, 0x7A,- 0x47, 0x44, 0xBE, 0x65, 0x00, 0x0C, 0xB1, 0xBA,- 0xD3, 0x7C, 0xE2, 0x14, 0x16, 0xEE, 0x6F, 0xCE,- 0xA8, 0x4E, 0xBA, 0xF1, 0x2A, 0x59, 0xC1, 0x1D,- 0x7C, 0x08, 0x0D, 0xF9, 0x2F, 0xB2, 0xAA, 0x8F,- 0x1C, 0x4E, 0xE8, 0xE2, 0xA2, 0x2D, 0x30, 0xBE,- 0x49, 0x85, 0x82, 0xD7, 0xC5, 0xFB, 0xBA, 0x16,- 0x5A, 0x47, 0x26, 0x89, 0xAF, 0xF6, 0x01, 0xB6- },- {- 0x34, 0x82, 0x18, 0xBE, 0x4D, 0xE0, 0x8D, 0xFB,- 0x24, 0x5B, 0xF2, 0x52, 0x86, 0xE3, 0x66, 0x18,- 0x63, 0x1D, 0x3B, 0xDB, 0x58, 0x27, 0xD9, 0xF7,- 0x4F, 0xA0, 0x43, 0x01, 0x66, 0x11, 0x31, 0xA4,- 0xD5, 0x5C, 0x76, 0x09, 0xB1, 0xA6, 0xA0, 0x3B,- 0x85, 0x3F, 0x07, 0x33, 0xE0, 0xAE, 0xC0, 0x26,- 0x16, 0xA0, 0xA4, 0x0E, 0x84, 0x91, 0xF4, 0x94,- 0xD7, 0x6C, 0x15, 0x43, 0xCF, 0xC6, 0x82, 0x14- },- {- 0x42, 0x87, 0xE1, 0x9B, 0xAB, 0x1D, 0x4F, 0x75,- 0xE1, 0xD1, 0x97, 0xCB, 0xB4, 0x3F, 0x11, 0x33,- 0x13, 0x07, 0xF2, 0xF7, 0x5B, 0x8D, 0x0D, 0x50,- 0x27, 0x8E, 0xEC, 0x54, 0x09, 0x99, 0xA0, 0x09,- 0xC0, 0x33, 0x73, 0x52, 0x96, 0x07, 0xFD, 0xA6,- 0x05, 0xAA, 0x0F, 0x07, 0x39, 0xE2, 0x0B, 0xD1,- 0xFD, 0xAA, 0x27, 0xD7, 0xC0, 0xCD, 0xC8, 0x28,- 0x4D, 0x98, 0xE6, 0xC7, 0x55, 0xA7, 0x56, 0x2E- },- {- 0x08, 0x56, 0x0C, 0x99, 0x88, 0xC8, 0xCE, 0x5A,- 0x88, 0x76, 0xA6, 0x00, 0xB6, 0xE5, 0x12, 0xB4,- 0xE2, 0x43, 0xA4, 0xA4, 0x30, 0x0A, 0xD5, 0xAB,- 0x2F, 0xF0, 0x63, 0x7C, 0xC5, 0x6A, 0x04, 0x41,- 0x64, 0x5B, 0x3D, 0xEB, 0x16, 0x84, 0x06, 0x4E,- 0xA4, 0x3B, 0xAE, 0x1C, 0xB6, 0x2D, 0x3B, 0xC4,- 0x15, 0x37, 0xFE, 0x8D, 0x7D, 0xEC, 0xA7, 0x17,- 0x29, 0x37, 0x77, 0x6B, 0xBE, 0xD7, 0x93, 0xA9- },- {- 0xB5, 0x36, 0x16, 0x23, 0x94, 0x77, 0x6F, 0xA7,- 0xDD, 0x5E, 0x9F, 0xDD, 0x01, 0x53, 0x0F, 0xDA,- 0x52, 0xBE, 0x1D, 0x39, 0xBD, 0x60, 0x9B, 0x3F,- 0x3B, 0xD0, 0x47, 0x6B, 0x81, 0x60, 0xAA, 0x18,- 0xAB, 0x2D, 0x37, 0xD2, 0x99, 0x16, 0x28, 0xBE,- 0x2F, 0xCC, 0x12, 0x56, 0xCD, 0x48, 0x55, 0x25,- 0xD1, 0xFA, 0x35, 0x6B, 0x04, 0xD3, 0x0E, 0x4A,- 0x0F, 0x9F, 0xFF, 0xC9, 0x93, 0x5C, 0xF4, 0x32- },- {- 0x02, 0xAB, 0xC9, 0x71, 0x75, 0xED, 0xB4, 0x7A,- 0x4C, 0xB4, 0xBD, 0x38, 0xD8, 0x2F, 0x86, 0xAA,- 0x09, 0x9C, 0x8B, 0x8F, 0xA8, 0xAB, 0x3F, 0xE1,- 0xCE, 0x10, 0x5A, 0x22, 0xBD, 0x61, 0x65, 0x78,- 0xC6, 0xDD, 0x15, 0x15, 0xDF, 0xB0, 0x39, 0x7E,- 0x1D, 0x9D, 0x06, 0x71, 0x91, 0x6D, 0xE4, 0xB5,- 0x22, 0xE7, 0x4E, 0x63, 0x75, 0x23, 0x68, 0x93,- 0xC8, 0xFD, 0xA6, 0xD2, 0x36, 0xBC, 0x8D, 0xA1- },- {- 0x21, 0xE1, 0xEB, 0x73, 0x12, 0x76, 0xA8, 0x35,- 0xA6, 0xDD, 0xEA, 0x71, 0x78, 0xB2, 0x3E, 0xBC,- 0x9A, 0xEC, 0xAA, 0xBC, 0x7C, 0xCD, 0x70, 0x65,- 0x87, 0xD7, 0x1B, 0x85, 0x44, 0x97, 0x93, 0xB0,- 0x7E, 0x7B, 0x17, 0x9A, 0x3D, 0xA7, 0xA5, 0x71,- 0x98, 0x29, 0x97, 0xE8, 0xF5, 0xA6, 0x7F, 0x8C,- 0x93, 0xDA, 0xF1, 0x1A, 0xAA, 0x23, 0xF0, 0x7E,- 0x4D, 0xF7, 0xA1, 0x31, 0x05, 0xA5, 0x42, 0x09- },- {- 0x1C, 0xC5, 0x37, 0xD3, 0xE5, 0x0E, 0xD9, 0xFD,- 0xCD, 0xC4, 0xF3, 0xCC, 0xB4, 0x81, 0x93, 0x75,- 0x41, 0x53, 0x04, 0xD8, 0xE5, 0xA6, 0xC0, 0x58,- 0x05, 0xB6, 0xB5, 0xD9, 0xE1, 0xFC, 0x18, 0x25,- 0x68, 0x64, 0xF1, 0x0C, 0xD8, 0x12, 0xF8, 0x48,- 0x01, 0xB8, 0x61, 0x6A, 0x92, 0xB4, 0x07, 0x95,- 0xA1, 0x55, 0x93, 0x24, 0x64, 0xF6, 0x2D, 0xBF,- 0x6E, 0xBD, 0x2F, 0x9A, 0xC3, 0xEE, 0x28, 0x16- },- {- 0x6F, 0x6C, 0xD2, 0x60, 0x05, 0xC8, 0xA5, 0x61,- 0xCF, 0xF5, 0x1E, 0x30, 0x1D, 0x1A, 0x06, 0x8F,- 0xC2, 0x8B, 0x9B, 0x65, 0x0D, 0xDD, 0x27, 0xAE,- 0x97, 0xB5, 0x22, 0xDA, 0xE9, 0x63, 0x91, 0x34,- 0xD5, 0xA1, 0x50, 0x58, 0x7B, 0x0A, 0x90, 0x1F,- 0x3B, 0x9A, 0xAB, 0xC7, 0xE3, 0x97, 0x84, 0x98,- 0x4C, 0xC5, 0x85, 0x23, 0x5D, 0x8E, 0x17, 0xCE,- 0x9E, 0x3B, 0x42, 0x10, 0x5B, 0xF9, 0x03, 0x4C- },- {- 0x69, 0xC1, 0x7C, 0x28, 0x64, 0xC3, 0x37, 0x9F,- 0xAF, 0xB7, 0x14, 0xC0, 0x47, 0x5E, 0x00, 0xCF,- 0x7C, 0x9B, 0x37, 0x7D, 0x57, 0xA8, 0xBC, 0x96,- 0x98, 0xB4, 0xD3, 0x4A, 0x54, 0x85, 0x41, 0x76,- 0xA2, 0xF8, 0xD1, 0x5A, 0xFB, 0x54, 0x77, 0x56,- 0x04, 0x78, 0x73, 0x90, 0xD6, 0x00, 0x74, 0xCD,- 0x4B, 0xCA, 0x69, 0x02, 0xEA, 0x23, 0xD3, 0xAE,- 0x1A, 0xC0, 0x83, 0x40, 0x9F, 0xE3, 0x8A, 0x4D- },- {- 0x86, 0x69, 0xB0, 0xAD, 0x35, 0x82, 0x9E, 0xDC,- 0x2A, 0x8A, 0x09, 0x85, 0x2B, 0x0E, 0xE9, 0xB3,- 0x90, 0x3B, 0xF6, 0xC1, 0xF8, 0x2F, 0x90, 0xA3,- 0xF0, 0xED, 0x95, 0x24, 0x19, 0x2F, 0x10, 0x91,- 0xFD, 0x64, 0x84, 0xE0, 0x4C, 0x3F, 0xEA, 0x8B,- 0x02, 0x2F, 0x4A, 0x89, 0x50, 0xDB, 0x17, 0xD4,- 0x73, 0x41, 0x45, 0xC0, 0xCE, 0xC5, 0xDC, 0x38,- 0x74, 0x55, 0xC1, 0x26, 0x90, 0x3F, 0x77, 0x66- },- {- 0x3F, 0x35, 0xC4, 0x5D, 0x24, 0xFC, 0xFB, 0x4A,- 0xCC, 0xA6, 0x51, 0x07, 0x6C, 0x08, 0x00, 0x0E,- 0x27, 0x9E, 0xBB, 0xFF, 0x37, 0xA1, 0x33, 0x3C,- 0xE1, 0x9F, 0xD5, 0x77, 0x20, 0x2D, 0xBD, 0x24,- 0xB5, 0x8C, 0x51, 0x4E, 0x36, 0xDD, 0x9B, 0xA6,- 0x4A, 0xF4, 0xD7, 0x8E, 0xEA, 0x4E, 0x2D, 0xD1,- 0x3B, 0xC1, 0x8D, 0x79, 0x88, 0x87, 0xDD, 0x97,- 0x13, 0x76, 0xBC, 0xAE, 0x00, 0x87, 0xE1, 0x7E- },-};-----static const uint8_t blake2bp_keyed_kat[KAT_LENGTH][BLAKE2B_OUTBYTES] =-{- {- 0x9D, 0x94, 0x61, 0x07, 0x3E, 0x4E, 0xB6, 0x40,- 0xA2, 0x55, 0x35, 0x7B, 0x83, 0x9F, 0x39, 0x4B,- 0x83, 0x8C, 0x6F, 0xF5, 0x7C, 0x9B, 0x68, 0x6A,- 0x3F, 0x76, 0x10, 0x7C, 0x10, 0x66, 0x72, 0x8F,- 0x3C, 0x99, 0x56, 0xBD, 0x78, 0x5C, 0xBC, 0x3B,- 0xF7, 0x9D, 0xC2, 0xAB, 0x57, 0x8C, 0x5A, 0x0C,- 0x06, 0x3B, 0x9D, 0x9C, 0x40, 0x58, 0x48, 0xDE,- 0x1D, 0xBE, 0x82, 0x1C, 0xD0, 0x5C, 0x94, 0x0A- },- {- 0xFF, 0x8E, 0x90, 0xA3, 0x7B, 0x94, 0x62, 0x39,- 0x32, 0xC5, 0x9F, 0x75, 0x59, 0xF2, 0x60, 0x35,- 0x02, 0x9C, 0x37, 0x67, 0x32, 0xCB, 0x14, 0xD4,- 0x16, 0x02, 0x00, 0x1C, 0xBB, 0x73, 0xAD, 0xB7,- 0x92, 0x93, 0xA2, 0xDB, 0xDA, 0x5F, 0x60, 0x70,- 0x30, 0x25, 0x14, 0x4D, 0x15, 0x8E, 0x27, 0x35,- 0x52, 0x95, 0x96, 0x25, 0x1C, 0x73, 0xC0, 0x34,- 0x5C, 0xA6, 0xFC, 0xCB, 0x1F, 0xB1, 0xE9, 0x7E- },- {- 0xD6, 0x22, 0x0C, 0xA1, 0x95, 0xA0, 0xF3, 0x56,- 0xA4, 0x79, 0x5E, 0x07, 0x1C, 0xEE, 0x1F, 0x54,- 0x12, 0xEC, 0xD9, 0x5D, 0x8A, 0x5E, 0x01, 0xD7,- 0xC2, 0xB8, 0x67, 0x50, 0xCA, 0x53, 0xD7, 0xF6,- 0x4C, 0x29, 0xCB, 0xB3, 0xD2, 0x89, 0xC6, 0xF4,- 0xEC, 0xC6, 0xC0, 0x1E, 0x3C, 0xA9, 0x33, 0x89,- 0x71, 0x17, 0x03, 0x88, 0xE3, 0xE4, 0x02, 0x28,- 0x47, 0x90, 0x06, 0xD1, 0xBB, 0xEB, 0xAD, 0x51- },- {- 0x30, 0x30, 0x2C, 0x3F, 0xC9, 0x99, 0x06, 0x5D,- 0x10, 0xDC, 0x98, 0x2C, 0x8F, 0xEE, 0xF4, 0x1B,- 0xBB, 0x66, 0x42, 0x71, 0x8F, 0x62, 0x4A, 0xF6,- 0xE3, 0xEA, 0xBE, 0xA0, 0x83, 0xE7, 0xFE, 0x78,- 0x53, 0x40, 0xDB, 0x4B, 0x08, 0x97, 0xEF, 0xFF,- 0x39, 0xCE, 0xE1, 0xDC, 0x1E, 0xB7, 0x37, 0xCD,- 0x1E, 0xEA, 0x0F, 0xE7, 0x53, 0x84, 0x98, 0x4E,- 0x7D, 0x8F, 0x44, 0x6F, 0xAA, 0x68, 0x3B, 0x80- },- {- 0x32, 0xF3, 0x98, 0xA6, 0x0C, 0x1E, 0x53, 0xF1,- 0xF8, 0x1D, 0x6D, 0x8D, 0xA2, 0xEC, 0x11, 0x75,- 0x42, 0x2D, 0x6B, 0x2C, 0xFA, 0x0C, 0x0E, 0x66,- 0xD8, 0xC4, 0xE7, 0x30, 0xB2, 0x96, 0xA4, 0xB5,- 0x3E, 0x39, 0x2E, 0x39, 0x85, 0x98, 0x22, 0xA1,- 0x45, 0xAE, 0x5F, 0x1A, 0x24, 0xC2, 0x7F, 0x55,- 0x33, 0x9E, 0x2B, 0x4B, 0x44, 0x58, 0xE8, 0xC5,- 0xEB, 0x19, 0xAA, 0x14, 0x20, 0x64, 0x27, 0xAA- },- {- 0x23, 0x6D, 0xB9, 0x33, 0xF1, 0x8A, 0x9D, 0xBD,- 0x4E, 0x50, 0xB7, 0x29, 0x53, 0x90, 0x65, 0xBD,- 0xA4, 0x20, 0xDF, 0x97, 0xAC, 0x78, 0x0B, 0xE4,- 0x3F, 0x59, 0x10, 0x3C, 0x47, 0x2E, 0x0B, 0xCC,- 0xA6, 0xD4, 0x97, 0x38, 0x97, 0x86, 0xAF, 0x22,- 0xBA, 0x94, 0x30, 0xB7, 0x4D, 0x6F, 0x74, 0xB1,- 0x3F, 0x6F, 0x94, 0x9E, 0x25, 0x6A, 0x14, 0x0A,- 0xA3, 0x4B, 0x47, 0x70, 0x0B, 0x10, 0x03, 0x43- },- {- 0x23, 0x8C, 0x9D, 0x08, 0x02, 0x85, 0xE3, 0x54,- 0x35, 0xCB, 0x53, 0x15, 0x5D, 0x9F, 0x79, 0x2C,- 0xA1, 0xBB, 0x27, 0xDE, 0x4F, 0x9B, 0x6C, 0x87,- 0x26, 0xE1, 0x1C, 0x02, 0x8E, 0x7B, 0x87, 0x87,- 0x33, 0x54, 0x91, 0x12, 0xA3, 0x28, 0xB5, 0x0E,- 0x8C, 0xD8, 0xBA, 0x27, 0x87, 0x21, 0x7E, 0x46,- 0xB8, 0x16, 0x8D, 0x57, 0x11, 0x3D, 0xD4, 0x04,- 0xD9, 0x14, 0xE2, 0x9A, 0x6A, 0x54, 0x70, 0xE6- },- {- 0x9A, 0x02, 0x1E, 0xBD, 0x50, 0x4A, 0x97, 0x59,- 0x6D, 0x0E, 0x85, 0x04, 0x8A, 0xE1, 0xDA, 0x89,- 0x99, 0xE3, 0xA0, 0x47, 0x01, 0x6F, 0x17, 0xC6,- 0xC5, 0x55, 0x6C, 0x27, 0x31, 0xE9, 0xB1, 0x39,- 0x26, 0x1F, 0x84, 0x3F, 0xAD, 0x6B, 0xD4, 0x3F,- 0x7C, 0x7C, 0x58, 0x7F, 0x69, 0x8D, 0x69, 0xB6,- 0x82, 0xE5, 0x68, 0xB4, 0x42, 0xAC, 0x45, 0x88,- 0x98, 0x57, 0xB7, 0x69, 0x07, 0x34, 0xCD, 0xBB- },- {- 0x3A, 0xBA, 0x07, 0xAE, 0x98, 0x0E, 0x33, 0x86,- 0x37, 0x47, 0x9D, 0xCA, 0x1E, 0x35, 0x28, 0x00,- 0xF4, 0x58, 0x8E, 0x62, 0xD8, 0x23, 0x36, 0x5A,- 0xA6, 0x9C, 0x5B, 0x25, 0xFC, 0xE1, 0x29, 0x68,- 0xD2, 0x6C, 0x9B, 0xDB, 0xEE, 0x9A, 0x32, 0xBF,- 0xFD, 0x42, 0xE6, 0xB2, 0x2C, 0x81, 0x38, 0xA6,- 0x1C, 0x1F, 0xCE, 0x49, 0xFF, 0xBC, 0x19, 0x0E,- 0x1E, 0x15, 0x16, 0x01, 0x53, 0xCC, 0xB6, 0xB4- },- {- 0x77, 0x4C, 0xDF, 0x9A, 0xBB, 0x50, 0x81, 0xFE,- 0x07, 0xEB, 0x57, 0x25, 0xE6, 0x06, 0x9B, 0x8D,- 0x6C, 0x7E, 0x60, 0x04, 0xA2, 0x4D, 0x70, 0xF7,- 0xDF, 0xAB, 0xFC, 0x03, 0x82, 0x5B, 0xBC, 0x3B,- 0x30, 0xE6, 0x20, 0xB6, 0x04, 0x1F, 0x3C, 0xC2,- 0x89, 0x6B, 0x14, 0xAB, 0x66, 0x0A, 0xF7, 0x2E,- 0x24, 0x95, 0x10, 0xAC, 0x2F, 0xE8, 0x10, 0xCC,- 0x77, 0x63, 0xA2, 0xE5, 0xC3, 0xFC, 0xA7, 0xFC- },- {- 0x9E, 0x08, 0x9F, 0x51, 0x65, 0x7B, 0x29, 0xC2,- 0x66, 0x8E, 0x28, 0x50, 0x52, 0x4E, 0x53, 0xAE,- 0xAA, 0xA7, 0x30, 0x6F, 0x2A, 0xD5, 0xA2, 0x32,- 0xB5, 0xF0, 0x7F, 0x68, 0x8D, 0x8A, 0xB2, 0xB4,- 0x25, 0xDF, 0x7E, 0xA5, 0xBD, 0x3E, 0x9F, 0xFD,- 0x61, 0x68, 0x38, 0x90, 0x15, 0x1D, 0x78, 0xBB,- 0x94, 0x03, 0x11, 0x85, 0xAC, 0xA4, 0x81, 0xE2,- 0x14, 0x0F, 0xE3, 0x79, 0x85, 0x36, 0x76, 0x43- },- {- 0xB3, 0x5B, 0xD5, 0x4E, 0x4F, 0x81, 0x69, 0x6B,- 0x4F, 0x22, 0x31, 0x6A, 0x1E, 0x33, 0x7D, 0x98,- 0xD1, 0xC6, 0xB0, 0x61, 0x10, 0x99, 0x87, 0x63,- 0xB5, 0x91, 0x33, 0x35, 0x92, 0x3A, 0x40, 0x76,- 0xCB, 0x80, 0xD6, 0xD8, 0xA5, 0x18, 0x62, 0x91,- 0x13, 0x47, 0x7B, 0x30, 0xA1, 0x32, 0xA6, 0xB2,- 0x7F, 0xC1, 0xEE, 0x79, 0xF6, 0xB2, 0xE0, 0xD3,- 0x5D, 0x5B, 0xC2, 0x97, 0x27, 0x46, 0x3D, 0xB5- },- {- 0x12, 0x39, 0x30, 0xD5, 0xA4, 0xB7, 0x3B, 0x49,- 0x1F, 0x50, 0xE5, 0x6E, 0x2B, 0x73, 0x97, 0xA4,- 0x3D, 0x2E, 0x47, 0x87, 0x23, 0x76, 0x02, 0xB6,- 0x6F, 0xE0, 0xA8, 0x47, 0xBD, 0x13, 0xCB, 0xE8,- 0xB3, 0x7D, 0xC7, 0x03, 0xD7, 0xB2, 0xB4, 0xEA,- 0xA8, 0xBF, 0xB9, 0xA5, 0x8A, 0x7D, 0x71, 0x9C,- 0x90, 0x8F, 0x19, 0x66, 0xA2, 0xF1, 0x9F, 0xE6,- 0xEB, 0x1A, 0x78, 0x96, 0x2A, 0xFA, 0x5B, 0xF9- },- {- 0x08, 0x9C, 0xBC, 0x7E, 0xE1, 0xB1, 0x2C, 0x0C,- 0xC9, 0xC8, 0x3F, 0xF6, 0x66, 0xFE, 0xC8, 0x02,- 0x6B, 0xB7, 0x1B, 0x90, 0x84, 0x97, 0x9B, 0x0E,- 0xA8, 0xB7, 0x23, 0xBB, 0xBE, 0x8B, 0x00, 0xD4,- 0x10, 0x08, 0xB6, 0x04, 0x99, 0xF2, 0x4F, 0x24,- 0x1B, 0x63, 0x28, 0x1F, 0xE5, 0xB4, 0xD8, 0x89,- 0x66, 0x30, 0x9C, 0x0D, 0x7E, 0x64, 0x66, 0x91,- 0x05, 0xE5, 0x1E, 0x69, 0xD7, 0xAF, 0x8C, 0xE5- },- {- 0x6B, 0x3C, 0x67, 0x89, 0x47, 0xF6, 0x12, 0x52,- 0x65, 0x7C, 0x35, 0x49, 0x78, 0xC1, 0x01, 0xB2,- 0xFD, 0xD2, 0x72, 0x9E, 0xC3, 0x49, 0x27, 0xDD,- 0x5E, 0xFF, 0x0A, 0x7C, 0x0A, 0x86, 0x58, 0x26,- 0xE8, 0x33, 0xC3, 0x63, 0x23, 0x21, 0x31, 0xB1,- 0x05, 0x93, 0xBE, 0x1C, 0xCF, 0x6B, 0xA5, 0x4E,- 0xCC, 0x14, 0x31, 0x2F, 0x45, 0xBF, 0xFC, 0x24,- 0x04, 0x62, 0x9F, 0xF8, 0x02, 0x67, 0xF0, 0x94- },- {- 0xAA, 0x0C, 0x23, 0xEA, 0x1C, 0x6F, 0xE2, 0xE9,- 0x0A, 0x77, 0x18, 0xEF, 0x4A, 0xA4, 0x75, 0x1F,- 0xF6, 0xBE, 0xB9, 0xD4, 0x61, 0x63, 0x59, 0x5B,- 0x5D, 0x4F, 0xB8, 0x96, 0x00, 0x52, 0x5C, 0x5B,- 0x6C, 0xF1, 0x9E, 0xCD, 0xB2, 0x47, 0x78, 0x72,- 0xA7, 0xA1, 0x2D, 0x40, 0xE5, 0x06, 0x36, 0x08,- 0xE5, 0xF0, 0x00, 0x8E, 0x79, 0x72, 0xA9, 0xC0,- 0x1A, 0x4B, 0xE2, 0xAF, 0xE9, 0x53, 0x2F, 0x9C- },- {- 0x63, 0x34, 0x7A, 0xB4, 0xCB, 0xB6, 0xF2, 0x89,- 0x52, 0x99, 0x2C, 0x07, 0x9D, 0x18, 0xD4, 0x20,- 0x01, 0xB7, 0xF3, 0xA9, 0xD0, 0xFD, 0x90, 0xB0,- 0xA4, 0x77, 0x1F, 0x69, 0x72, 0xF0, 0xC5, 0x32,- 0x89, 0xC8, 0xAE, 0xE1, 0x43, 0x29, 0x4B, 0x50,- 0xC6, 0x34, 0x12, 0x58, 0x5C, 0xDC, 0xE4, 0xFF,- 0x7B, 0xED, 0x11, 0x2C, 0xD0, 0x3C, 0x9B, 0x1D,- 0xF3, 0xDE, 0xF0, 0xCC, 0x32, 0x0D, 0x6B, 0x70- },- {- 0x23, 0x96, 0xC0, 0xCB, 0x9E, 0xDA, 0xAC, 0xA9,- 0xD8, 0xB1, 0x04, 0x65, 0x2C, 0xB7, 0xF1, 0x25,- 0xF1, 0x93, 0x55, 0x1A, 0xE5, 0xD7, 0xBC, 0x94,- 0x63, 0x30, 0x7C, 0x9E, 0x69, 0xCA, 0x7D, 0xA2,- 0x3A, 0x9F, 0xBC, 0xBC, 0xB8, 0x66, 0x69, 0xD5,- 0xBA, 0x63, 0x43, 0x85, 0x93, 0xE1, 0x32, 0xF9,- 0x92, 0xB5, 0x7C, 0x00, 0x17, 0xC8, 0x6D, 0xDB,- 0x9B, 0x47, 0x28, 0x6E, 0xF5, 0xB6, 0x87, 0x18- },- {- 0xA9, 0x4B, 0x80, 0x22, 0x57, 0xFD, 0x03, 0x1E,- 0xE6, 0x0F, 0x1B, 0xE1, 0x84, 0x38, 0x3A, 0x76,- 0x32, 0x85, 0x39, 0xF9, 0xD8, 0x06, 0x08, 0x72,- 0xEF, 0x35, 0x73, 0xBE, 0xB6, 0xF2, 0x73, 0x68,- 0x08, 0x95, 0x90, 0xED, 0xBB, 0x21, 0xF4, 0xD8,- 0xF1, 0x81, 0xBA, 0x66, 0x20, 0x75, 0xF9, 0x19,- 0x05, 0x97, 0x4B, 0xEE, 0xEF, 0x1F, 0xC5, 0xCB,- 0x9B, 0xCF, 0xB2, 0x8A, 0xAE, 0x1E, 0x4D, 0xE3- },- {- 0x52, 0xC7, 0xD3, 0x39, 0x9A, 0x03, 0x80, 0x04,- 0xBE, 0xA5, 0x2D, 0x3E, 0xA9, 0xE9, 0x1E, 0x25,- 0x44, 0xC8, 0x65, 0x2A, 0xB8, 0xF5, 0x28, 0x5C,- 0x9D, 0x32, 0x18, 0x63, 0x7A, 0x6D, 0x9F, 0xCA,- 0xF0, 0xD9, 0x65, 0xB3, 0x58, 0x8E, 0xE6, 0xD7,- 0x3F, 0xA5, 0x99, 0xDE, 0xCA, 0x1F, 0x41, 0xDE,- 0xD8, 0x02, 0x5B, 0xF7, 0x76, 0x8E, 0x0E, 0x20,- 0x0E, 0x8C, 0xD3, 0xFF, 0x86, 0x8C, 0x38, 0x00- },- {- 0xB6, 0x29, 0xF5, 0x71, 0x62, 0x87, 0x6A, 0xDB,- 0x8F, 0xA9, 0x57, 0x2E, 0xBA, 0x4E, 0x1E, 0xCD,- 0x75, 0xA6, 0x56, 0x73, 0x08, 0xDE, 0x90, 0xDB,- 0xB8, 0xFF, 0xDE, 0x77, 0xDE, 0x82, 0x13, 0xA4,- 0xD7, 0xF7, 0xCB, 0x85, 0xAE, 0x1B, 0x71, 0xE6,- 0x45, 0x7B, 0xC4, 0xE8, 0x9C, 0x0D, 0x9D, 0xE2,- 0x41, 0xB6, 0xB9, 0xF3, 0x74, 0xB7, 0x34, 0x19,- 0x4D, 0xB2, 0xB2, 0x67, 0x02, 0xD7, 0xCB, 0x7C- },- {- 0x72, 0x28, 0x46, 0xDD, 0xAC, 0xAA, 0x94, 0xFD,- 0xE6, 0x63, 0x2A, 0x2D, 0xC7, 0xDC, 0x70, 0x8B,- 0xDF, 0x98, 0x31, 0x1C, 0x9F, 0xB6, 0x3C, 0x61,- 0xE5, 0x25, 0xFD, 0x4B, 0x0D, 0x87, 0xB6, 0x38,- 0x8B, 0x5A, 0xF7, 0x04, 0x20, 0x18, 0xDD, 0xCA,- 0x06, 0x5E, 0x8A, 0x55, 0xBB, 0xFD, 0x68, 0xEE,- 0x61, 0xFC, 0xD3, 0xC6, 0x87, 0x8F, 0x5B, 0x09,- 0xBC, 0xC2, 0x7B, 0xED, 0x61, 0xDD, 0x93, 0xED- },- {- 0x1C, 0xED, 0x6A, 0x0C, 0x78, 0x9D, 0xDB, 0x29,- 0x56, 0x78, 0xAD, 0x43, 0xA3, 0x22, 0xD8, 0x96,- 0x61, 0x7F, 0xDE, 0x27, 0x5F, 0x13, 0x8C, 0xCC,- 0xFB, 0x13, 0x26, 0xCD, 0x3F, 0x76, 0x09, 0xC2,- 0xAA, 0xA5, 0xEC, 0x10, 0x26, 0x97, 0x17, 0x3E,- 0x12, 0x1A, 0xE1, 0x63, 0x02, 0x4F, 0x42, 0x8C,- 0x98, 0x28, 0x35, 0xB4, 0xFA, 0x6D, 0xA6, 0xD6,- 0x78, 0xAE, 0xB9, 0xEE, 0x10, 0x6A, 0x3F, 0x6C- },- {- 0xE8, 0x69, 0x14, 0x8C, 0x05, 0x45, 0xB3, 0x58,- 0x0E, 0x39, 0x5A, 0xFD, 0xC7, 0x45, 0xCD, 0x24,- 0x3B, 0x6B, 0x5F, 0xE3, 0xB6, 0x7E, 0x29, 0x43,- 0xF6, 0xF8, 0xD9, 0xF2, 0x4F, 0xFA, 0x40, 0xE8,- 0x81, 0x75, 0x6E, 0x1C, 0x18, 0xD9, 0x2F, 0x3E,- 0xBE, 0x84, 0x55, 0x9B, 0x57, 0xE2, 0xEE, 0x3A,- 0x65, 0xD9, 0xEC, 0xE0, 0x49, 0x72, 0xB3, 0x5D,- 0x4C, 0x4E, 0xBE, 0x78, 0x6C, 0x88, 0xDA, 0x62- },- {- 0xDA, 0xDA, 0x15, 0x5E, 0x55, 0x42, 0x32, 0xB1,- 0x6E, 0xCA, 0xD9, 0x31, 0xCB, 0x42, 0xE3, 0x25,- 0xB5, 0x86, 0xDB, 0xF1, 0xCB, 0xD0, 0xCE, 0x38,- 0x14, 0x45, 0x16, 0x6B, 0xD1, 0xBF, 0xA3, 0x32,- 0x49, 0x85, 0xE7, 0x7C, 0x6F, 0x0D, 0x51, 0x2A,- 0x02, 0x6E, 0x09, 0xD4, 0x86, 0x1C, 0x3B, 0xB8,- 0x52, 0x9D, 0x72, 0x02, 0xEA, 0xC1, 0xC0, 0x44,- 0x27, 0x44, 0xD3, 0x7C, 0x7F, 0x5A, 0xB8, 0xAF- },- {- 0x2D, 0x14, 0x8C, 0x8E, 0x8F, 0x76, 0xFA, 0xAC,- 0x6F, 0x7F, 0x01, 0xF2, 0x03, 0x9E, 0xA0, 0x2A,- 0x42, 0xD9, 0x32, 0x57, 0x94, 0xC2, 0xC7, 0xA0,- 0x0F, 0x83, 0xF4, 0xA7, 0x79, 0x8A, 0xFB, 0xA9,- 0x93, 0xFF, 0x94, 0x91, 0x1E, 0x09, 0x8B, 0x00,- 0x1A, 0x0B, 0xDF, 0xF4, 0xC8, 0x5A, 0x2A, 0x61,- 0x31, 0xE0, 0xCF, 0xE7, 0x0F, 0x1D, 0x2E, 0x07,- 0xAF, 0x02, 0x09, 0xDA, 0x77, 0x96, 0x09, 0x1F- },- {- 0x99, 0x98, 0x3A, 0x75, 0x9C, 0xCF, 0x9C, 0xAC,- 0xAE, 0x70, 0x2D, 0xCB, 0xFC, 0xDF, 0x72, 0x04,- 0xDD, 0xF0, 0x33, 0x4B, 0xC6, 0x5D, 0xAD, 0x84,- 0x6F, 0x83, 0x1F, 0x9F, 0x9D, 0x8A, 0x45, 0x3F,- 0x0D, 0x24, 0x93, 0x5C, 0x4C, 0x65, 0x7F, 0xFF,- 0x2E, 0xBB, 0xDB, 0xAF, 0x7B, 0xCE, 0x6A, 0xAC,- 0xDB, 0xB8, 0x87, 0x6F, 0x16, 0x04, 0x59, 0xB1,- 0xA4, 0xAA, 0xC9, 0x56, 0x97, 0xE0, 0x0D, 0x98- },- {- 0x7E, 0x4A, 0x02, 0x12, 0x6D, 0x75, 0x52, 0xF4,- 0xC9, 0xB9, 0x4D, 0x80, 0xE3, 0xCF, 0x7B, 0x89,- 0x7E, 0x09, 0x84, 0xE4, 0x06, 0xF0, 0x78, 0x13,- 0x5C, 0xF4, 0x56, 0xC0, 0xD5, 0x1E, 0x13, 0x91,- 0xFF, 0x18, 0xA8, 0x8F, 0x93, 0x12, 0x2C, 0x83,- 0x2C, 0xAC, 0x7D, 0x79, 0x6A, 0x6B, 0x42, 0x51,- 0x9B, 0x1D, 0xB4, 0xEA, 0xD8, 0xF4, 0x98, 0x40,- 0xCE, 0xB5, 0x52, 0x33, 0x6B, 0x29, 0xDE, 0x44- },- {- 0xD7, 0xE1, 0x6F, 0xD1, 0x59, 0x65, 0x8A, 0xD7,- 0xEE, 0x25, 0x1E, 0x51, 0x7D, 0xCE, 0x5A, 0x29,- 0xF4, 0x6F, 0xD4, 0xB8, 0xD3, 0x19, 0xDB, 0x80,- 0x5F, 0xC2, 0x5A, 0xA6, 0x20, 0x35, 0x0F, 0xF4,- 0x23, 0xAD, 0x8D, 0x05, 0x37, 0xCD, 0x20, 0x69,- 0x43, 0x2E, 0xBF, 0xF2, 0x92, 0x36, 0xF8, 0xC2,- 0xA8, 0xA0, 0x4D, 0x04, 0xB3, 0xB4, 0x8C, 0x59,- 0xA3, 0x55, 0xFC, 0xC6, 0x2D, 0x27, 0xF8, 0xEE- },- {- 0x0D, 0x45, 0x17, 0xD4, 0xF1, 0xD0, 0x47, 0x30,- 0xC6, 0x91, 0x69, 0x18, 0xA0, 0x4C, 0x9E, 0x90,- 0xCC, 0xA3, 0xAC, 0x1C, 0x63, 0xD6, 0x45, 0x97,- 0x8A, 0x7F, 0x07, 0x03, 0x9F, 0x92, 0x20, 0x64,- 0x7C, 0x25, 0xC0, 0x4E, 0x85, 0xF6, 0xE2, 0x28,- 0x6D, 0x2E, 0x35, 0x46, 0x0D, 0x0B, 0x2C, 0x1E,- 0x25, 0xAF, 0x9D, 0x35, 0x37, 0xEF, 0x33, 0xFD,- 0x7F, 0xE5, 0x1E, 0x2B, 0xA8, 0x76, 0x4B, 0x36- },- {- 0x56, 0xB7, 0x2E, 0x51, 0x37, 0xC6, 0x89, 0xB2,- 0x73, 0x66, 0xFB, 0x22, 0xC7, 0xC6, 0x75, 0x44,- 0xF6, 0xBC, 0xE5, 0x76, 0x19, 0x41, 0x31, 0xC5,- 0xBF, 0xAB, 0x1C, 0xF9, 0x3C, 0x2B, 0x51, 0xAA,- 0xA3, 0x03, 0x36, 0x8A, 0xA8, 0x44, 0xD5, 0x8D,- 0xF0, 0xEE, 0x5D, 0x4E, 0x31, 0x9F, 0xCD, 0x8E,- 0xFF, 0xC6, 0x02, 0xCE, 0xE4, 0x35, 0x1B, 0xD2,- 0xF5, 0x51, 0x43, 0x0B, 0x92, 0x11, 0xE7, 0x3C- },- {- 0xF3, 0x35, 0xCC, 0x22, 0xFF, 0xEA, 0x5A, 0xA5,- 0x9C, 0xDF, 0xC8, 0xF5, 0x02, 0x89, 0xCC, 0x92,- 0x31, 0x9B, 0x8B, 0x14, 0x40, 0x8D, 0x7A, 0x5A,- 0xA1, 0x23, 0x2A, 0xE2, 0x3A, 0xA1, 0xEA, 0x7F,- 0x77, 0x48, 0xCF, 0xEF, 0x03, 0x20, 0x10, 0xF8,- 0x62, 0x6D, 0x93, 0x18, 0xED, 0xBA, 0x98, 0xD4,- 0x16, 0x62, 0x03, 0x35, 0xC9, 0x01, 0xED, 0x02,- 0xEA, 0xBD, 0x27, 0x6A, 0x1B, 0x82, 0x9C, 0x9D- },- {- 0xA9, 0x9A, 0x3D, 0x10, 0xF9, 0x5B, 0x44, 0x2F,- 0xFF, 0xF7, 0xC4, 0x18, 0xFA, 0x94, 0x9D, 0x48,- 0x30, 0x86, 0x9B, 0x0E, 0x60, 0xEC, 0x8B, 0x97,- 0x2C, 0x30, 0xA3, 0x16, 0x9C, 0x27, 0xBE, 0xB5,- 0xCF, 0x33, 0x05, 0x94, 0xF0, 0x14, 0xB6, 0x6B,- 0x22, 0x00, 0xA7, 0xF0, 0x86, 0xD2, 0xC2, 0xF3,- 0xF9, 0xFD, 0x85, 0x32, 0xA5, 0x71, 0x88, 0x76,- 0xDF, 0xCA, 0x66, 0x1B, 0xA0, 0xF7, 0xB3, 0x6D- },- {- 0x15, 0x8E, 0x25, 0x70, 0xD0, 0x84, 0xA4, 0x86,- 0x9D, 0x96, 0x93, 0x43, 0xC0, 0x10, 0x86, 0x07,- 0x17, 0xFF, 0x74, 0x11, 0x61, 0x88, 0x17, 0x5F,- 0x2E, 0xD7, 0x4C, 0xD5, 0x78, 0xFA, 0x0D, 0x80,- 0x91, 0xB0, 0x3F, 0xAD, 0x0C, 0x65, 0xCF, 0x59,- 0xAB, 0x91, 0xDD, 0x73, 0xB3, 0x7F, 0xE3, 0xF5,- 0x8A, 0x58, 0xE7, 0xB4, 0x47, 0x9C, 0x87, 0x5A,- 0xCD, 0x63, 0xEC, 0x52, 0x58, 0x12, 0x35, 0x3F- },- {- 0x7C, 0x49, 0x50, 0x1C, 0x58, 0x08, 0xB1, 0x5C,- 0x0D, 0x31, 0xBD, 0xD5, 0xBB, 0x56, 0x31, 0xD5,- 0x3A, 0xE0, 0x0D, 0xF4, 0x31, 0x02, 0x5F, 0xEA,- 0x51, 0xEB, 0x47, 0x62, 0x54, 0x4E, 0xFD, 0xEE,- 0x97, 0x8A, 0x83, 0x50, 0x8D, 0xEA, 0x6B, 0xFD,- 0x3B, 0x93, 0x1A, 0x0E, 0x95, 0x83, 0xCC, 0xFC,- 0x04, 0x9E, 0xA8, 0x46, 0x44, 0x70, 0x5D, 0x31,- 0x9F, 0xDC, 0x5C, 0x16, 0x3B, 0xF4, 0x82, 0x24- },- {- 0xFE, 0xF4, 0x36, 0xB3, 0x5F, 0x71, 0x7D, 0x59,- 0xAC, 0xA1, 0x7E, 0x9B, 0xF5, 0xFF, 0xDA, 0x28,- 0xF5, 0xF4, 0x01, 0x94, 0x3E, 0xFE, 0x93, 0xEB,- 0x58, 0x0F, 0xFB, 0x98, 0xF1, 0x3B, 0xEA, 0x80,- 0x94, 0x69, 0xA3, 0x44, 0xE7, 0x82, 0xA4, 0x43,- 0xC6, 0x4E, 0xB2, 0x5A, 0xD0, 0x9D, 0x8D, 0xE2,- 0x05, 0xFE, 0xE7, 0xD5, 0x63, 0x96, 0x86, 0xA1,- 0x9E, 0x7C, 0x42, 0xB4, 0x0F, 0x70, 0x6A, 0x08- },- {- 0x4D, 0x47, 0xA6, 0x7A, 0x5F, 0x8E, 0x17, 0xB7,- 0x22, 0xDF, 0x98, 0x58, 0xAE, 0xB6, 0x7B, 0x99,- 0x56, 0xB4, 0x59, 0x62, 0xEC, 0x35, 0x3D, 0xC2,- 0xE2, 0x7F, 0x0F, 0x50, 0x1C, 0x39, 0x8E, 0x34,- 0x39, 0x7B, 0xEB, 0xE0, 0x2B, 0x54, 0x92, 0x7E,- 0x2D, 0x31, 0xF1, 0x2E, 0xCF, 0x55, 0xE8, 0x82,- 0x69, 0xFA, 0xB5, 0x37, 0x0E, 0x7F, 0xA5, 0x70,- 0x35, 0x26, 0x6F, 0x89, 0xD5, 0xC2, 0x64, 0x41- },- {- 0x1B, 0x58, 0xDC, 0x7A, 0xAC, 0x36, 0x3B, 0x00,- 0x44, 0x6E, 0xA8, 0x03, 0xBC, 0xD7, 0x49, 0xC3,- 0xF5, 0xCA, 0xBE, 0xAA, 0xF2, 0x23, 0x99, 0x4C,- 0x0C, 0x3E, 0xCC, 0x1B, 0x28, 0x47, 0x73, 0x44,- 0xD7, 0xBF, 0x97, 0xC0, 0x8A, 0x95, 0x9D, 0x1A,- 0xC2, 0x06, 0x0B, 0x47, 0x27, 0x89, 0x86, 0x92,- 0x91, 0x88, 0xAD, 0x73, 0xDE, 0x67, 0x07, 0x8B,- 0xA6, 0x80, 0x96, 0x3B, 0x9D, 0x3B, 0x12, 0xA4- },- {- 0x3C, 0x52, 0x2C, 0x84, 0x3E, 0x69, 0x74, 0xEC,- 0x75, 0x0D, 0xF2, 0x20, 0xD4, 0x1A, 0x00, 0x4A,- 0xC2, 0xAD, 0xF0, 0x94, 0x56, 0xFA, 0x78, 0x7F,- 0x7C, 0x65, 0x43, 0xAB, 0x17, 0x97, 0x9C, 0x77,- 0x7B, 0x3E, 0x79, 0xD1, 0x78, 0x7D, 0xA5, 0xA8,- 0x3F, 0x17, 0x8D, 0xA9, 0xF0, 0x4C, 0xF6, 0xF5,- 0xB2, 0x55, 0xDD, 0xCB, 0x18, 0x74, 0x84, 0x1B,- 0xBF, 0x70, 0x16, 0xE6, 0x13, 0x2B, 0x99, 0x8A- },- {- 0x5A, 0x4F, 0xEB, 0x8F, 0x70, 0x75, 0xB4, 0xDC,- 0x9C, 0xA1, 0x6C, 0x6F, 0x05, 0xCD, 0x6B, 0x70,- 0x27, 0x48, 0x5F, 0xFE, 0xD9, 0x15, 0x7D, 0x82,- 0x4D, 0x9D, 0x1A, 0x17, 0x20, 0xEE, 0xEE, 0xEA,- 0x3F, 0x6C, 0x12, 0x5F, 0xDA, 0x4B, 0xA4, 0x40,- 0x9D, 0x79, 0x80, 0x49, 0xFD, 0x18, 0x82, 0xC6,- 0x90, 0x28, 0x8F, 0x33, 0x54, 0x7A, 0x3D, 0x8D,- 0x62, 0x60, 0xB6, 0x54, 0x54, 0x88, 0x53, 0xD7- },- {- 0xBC, 0xAA, 0x79, 0x36, 0x32, 0x56, 0x9E, 0x2F,- 0x84, 0x17, 0xCC, 0x60, 0x32, 0x53, 0x53, 0x5B,- 0xD7, 0xD8, 0x5F, 0x38, 0x53, 0x19, 0x92, 0x59,- 0x1E, 0x56, 0xC1, 0xA4, 0xB6, 0xF5, 0x8E, 0xE7,- 0xF8, 0x18, 0xFA, 0xE0, 0x27, 0x88, 0x8A, 0x86,- 0x28, 0x43, 0x05, 0x10, 0x1E, 0xC0, 0x46, 0x61,- 0xF5, 0x99, 0x53, 0x47, 0xA4, 0x67, 0xED, 0x8B,- 0x92, 0x79, 0xF1, 0xAC, 0xC2, 0xB4, 0xBB, 0x1F- },- {- 0x34, 0xAF, 0x91, 0xCC, 0x22, 0xA6, 0x9B, 0xCB,- 0x55, 0xDD, 0xBF, 0x7F, 0x0F, 0x43, 0xEC, 0x56,- 0x48, 0x40, 0x43, 0x32, 0x13, 0xEA, 0x55, 0xD9,- 0xF8, 0x1A, 0xC4, 0x75, 0x20, 0x8D, 0x74, 0x85,- 0x1D, 0xB7, 0x0F, 0xE4, 0x96, 0xAF, 0x9D, 0xA1,- 0xD3, 0x93, 0xEC, 0xF8, 0x78, 0x69, 0x5D, 0xD3,- 0x3F, 0xD5, 0x43, 0x49, 0xA6, 0xF8, 0x24, 0xAE,- 0xED, 0x18, 0x3C, 0xB1, 0xB0, 0x8C, 0x54, 0x85- },- {- 0xB8, 0xB7, 0xAD, 0x2E, 0xA2, 0xB6, 0xFA, 0x06,- 0xD0, 0x0B, 0xCD, 0x59, 0x9C, 0x99, 0x71, 0xC5,- 0xB4, 0xE1, 0x65, 0x58, 0xE1, 0x52, 0x12, 0xC9,- 0xBF, 0xD3, 0x73, 0xE4, 0xBC, 0x79, 0x17, 0x05,- 0x26, 0x01, 0xFF, 0xDB, 0x68, 0x01, 0xBE, 0x80,- 0xBA, 0x50, 0x9D, 0xB8, 0x2A, 0x0B, 0x71, 0x95,- 0x92, 0x91, 0x33, 0xAD, 0x53, 0x99, 0x56, 0x06,- 0x52, 0x33, 0xF4, 0x9D, 0x07, 0x1C, 0x84, 0xE4- },- {- 0xDC, 0xEE, 0x9C, 0x45, 0xBC, 0x5D, 0x1F, 0xE6,- 0x30, 0xB1, 0x8B, 0x06, 0x3C, 0xE8, 0x2C, 0x38,- 0x57, 0xE3, 0x0D, 0x20, 0xC6, 0x4B, 0x5C, 0xC2,- 0x58, 0x84, 0x94, 0x3E, 0x7A, 0xE9, 0x4E, 0xDF,- 0xF8, 0x50, 0xEB, 0x0E, 0x82, 0x44, 0x02, 0x3D,- 0x3D, 0x07, 0xA8, 0xA0, 0x07, 0x06, 0xF0, 0x58,- 0x2C, 0xC1, 0x02, 0xB6, 0x6C, 0x6D, 0xDA, 0x86,- 0xE8, 0xF2, 0xDF, 0x32, 0x56, 0x59, 0x88, 0x6F- },- {- 0x04, 0xF6, 0xE8, 0x22, 0xF1, 0x7C, 0xC7, 0xA5,- 0x94, 0x6D, 0xF8, 0x0D, 0x95, 0x8A, 0xEF, 0x06,- 0x5D, 0x87, 0x49, 0x16, 0xE1, 0x03, 0xA6, 0x83,- 0x0C, 0x6E, 0x46, 0xB6, 0x05, 0x59, 0x18, 0x18,- 0x0D, 0x14, 0x52, 0x29, 0x3C, 0x58, 0xA9, 0x74,- 0x9C, 0xBC, 0x8F, 0x0A, 0xC4, 0x08, 0xA9, 0xCA,- 0x89, 0x57, 0x61, 0xCF, 0xC4, 0x51, 0x16, 0x46,- 0x41, 0xA1, 0x79, 0xFB, 0x5C, 0xD8, 0xFE, 0xBC- },- {- 0x51, 0x1F, 0xDB, 0x7C, 0x88, 0x26, 0x85, 0x35,- 0xE9, 0x7E, 0x4E, 0xD8, 0x92, 0xF3, 0xC0, 0x65,- 0x83, 0x2B, 0x26, 0x59, 0x14, 0xFC, 0x61, 0x07,- 0xA1, 0xD2, 0x7D, 0xBB, 0x7D, 0x51, 0xC3, 0x7E,- 0x95, 0x98, 0x15, 0x06, 0xC1, 0x14, 0x72, 0x44,- 0xD5, 0xBA, 0xE9, 0x0E, 0xE9, 0x0D, 0x08, 0x49,- 0x84, 0xBA, 0xA7, 0x58, 0x7F, 0x41, 0xFF, 0x6F,- 0x4B, 0xA7, 0x22, 0xC8, 0xB9, 0x2A, 0xEB, 0x99- },- {- 0x2B, 0xA2, 0xBD, 0x17, 0xE9, 0x26, 0x27, 0x5B,- 0x06, 0x83, 0xB2, 0x36, 0xBF, 0xE3, 0x76, 0x30,- 0x26, 0x6E, 0x37, 0xF4, 0x18, 0x2F, 0x53, 0xA9,- 0x82, 0x34, 0xE9, 0x15, 0xAB, 0x64, 0xC9, 0x59,- 0x96, 0xC6, 0xCB, 0x7A, 0xE8, 0x80, 0xC3, 0xDF,- 0xCB, 0x47, 0xD0, 0x5A, 0xAD, 0xD2, 0x1A, 0xBF,- 0x8E, 0x40, 0xB7, 0x3F, 0x40, 0xF3, 0x98, 0xDC,- 0x5B, 0x02, 0x14, 0x14, 0x57, 0x45, 0x6A, 0x09- },- {- 0x9B, 0x66, 0x8D, 0x9B, 0x44, 0x47, 0xE3, 0x76,- 0xF6, 0xC6, 0xCF, 0xA6, 0x8D, 0xBC, 0x79, 0x19,- 0x83, 0x81, 0xAB, 0x60, 0x5F, 0x55, 0xD5, 0xA7,- 0xEF, 0x68, 0x3B, 0xCE, 0xD4, 0x6F, 0x9A, 0xFD,- 0x36, 0x85, 0x41, 0x1A, 0x66, 0xE2, 0x34, 0x6F,- 0x96, 0x07, 0x77, 0xD0, 0xC9, 0x22, 0x71, 0x24,- 0x30, 0xE0, 0x18, 0xBF, 0xAE, 0x86, 0x53, 0x01,- 0x7E, 0xA2, 0x0E, 0xCD, 0x5F, 0x1F, 0x95, 0x6C- },- {- 0x56, 0x81, 0x02, 0x4F, 0x53, 0x85, 0x88, 0xA0,- 0x1B, 0x2C, 0x83, 0x94, 0xCA, 0xE8, 0x73, 0xC6,- 0xD8, 0x5D, 0x6A, 0xA0, 0x6E, 0xDD, 0xB3, 0xA5,- 0x02, 0x09, 0x6F, 0xC0, 0x82, 0xBB, 0x89, 0xCB,- 0x24, 0x15, 0x31, 0xB3, 0x15, 0x75, 0x0D, 0x31,- 0xBB, 0x0B, 0x63, 0x01, 0x28, 0xD1, 0x9D, 0x11,- 0x39, 0x2B, 0xCF, 0x4B, 0x34, 0x78, 0xD5, 0x23,- 0xD7, 0xD2, 0x13, 0xE4, 0x75, 0x0F, 0x55, 0x92- },- {- 0x2A, 0xA9, 0x1B, 0xA6, 0xDE, 0x60, 0x17, 0xF1,- 0x93, 0x0F, 0xC7, 0xD9, 0x6D, 0xCC, 0xD6, 0x70,- 0x74, 0x8B, 0x7E, 0xB1, 0xD0, 0x94, 0xDF, 0xB4,- 0xB3, 0xB1, 0x47, 0x8A, 0x61, 0x2E, 0xBF, 0x03,- 0xDD, 0xD7, 0x21, 0x27, 0x9A, 0x26, 0x6D, 0xE3,- 0x88, 0x45, 0xE6, 0x12, 0xC9, 0x30, 0x98, 0xC2,- 0xEF, 0xFF, 0x34, 0xFE, 0x50, 0x06, 0x17, 0x20,- 0x5B, 0x1D, 0xE2, 0xFE, 0xA1, 0xD8, 0x02, 0x46- },- {- 0x82, 0x4D, 0x89, 0xC0, 0x63, 0x7C, 0xE1, 0x78,- 0xB6, 0x30, 0x68, 0x4C, 0x72, 0x9E, 0x26, 0x65,- 0x3F, 0x34, 0xEA, 0xC7, 0xE9, 0x04, 0x12, 0xE9,- 0x63, 0xD3, 0xF1, 0x9D, 0x64, 0x51, 0xE8, 0x25,- 0x85, 0x21, 0x67, 0xC4, 0x8D, 0xF7, 0xCC, 0x55,- 0xB2, 0x57, 0xB2, 0x50, 0xA7, 0x0C, 0x7B, 0xCC,- 0xFA, 0x9A, 0xA1, 0x5C, 0x18, 0x8A, 0xC4, 0x63,- 0x7A, 0x52, 0x22, 0x89, 0xC0, 0x87, 0x6A, 0xD4- },- {- 0x87, 0xE4, 0xAE, 0x11, 0xDA, 0x1A, 0x2C, 0xA8,- 0x82, 0x2A, 0xE3, 0x30, 0xDC, 0x97, 0xAB, 0x2E,- 0x47, 0xFF, 0x62, 0x32, 0x30, 0x93, 0xC2, 0xB7,- 0xA6, 0xC0, 0xE2, 0xC1, 0x68, 0x21, 0xCD, 0x7C,- 0xEC, 0x92, 0x18, 0x4D, 0xF4, 0xBB, 0x6E, 0x2B,- 0x62, 0x6A, 0x44, 0x78, 0x03, 0x90, 0x63, 0xAF,- 0xEE, 0xB0, 0xD2, 0x87, 0xF2, 0x42, 0x19, 0x20,- 0x78, 0x98, 0xCC, 0xE7, 0xAD, 0xE0, 0x63, 0x9C- },- {- 0xDD, 0x7F, 0x2F, 0x44, 0xA4, 0x02, 0xA0, 0x1E,- 0x82, 0x16, 0xB1, 0x03, 0xA4, 0xE7, 0x23, 0x5C,- 0x28, 0x30, 0x31, 0x9D, 0x56, 0xAF, 0x63, 0x9F,- 0x23, 0xC4, 0x8C, 0x27, 0x59, 0xAB, 0xA6, 0xEB,- 0x5E, 0xEE, 0xE3, 0x8C, 0x29, 0x8E, 0xBE, 0x41,- 0x98, 0x26, 0x7A, 0x00, 0xEB, 0x2A, 0x08, 0xD9,- 0x3A, 0x50, 0x37, 0x03, 0x17, 0x1C, 0x77, 0x33,- 0x38, 0x62, 0x10, 0x10, 0x55, 0xBD, 0x7A, 0xD2- },- {- 0x4C, 0xB8, 0x46, 0x59, 0x61, 0x93, 0xF7, 0xF2,- 0x78, 0xAA, 0xAA, 0xC5, 0xCC, 0xFF, 0xD5, 0x35,- 0x7A, 0xB0, 0xD1, 0x24, 0x5F, 0x69, 0x79, 0xD1,- 0x41, 0xA4, 0x71, 0xBD, 0xAB, 0x55, 0xE2, 0x38,- 0xB1, 0xAE, 0xD6, 0x7B, 0x73, 0x39, 0x95, 0x04,- 0xB9, 0x7D, 0xF1, 0xA2, 0x5E, 0xB6, 0xFE, 0x27,- 0x2B, 0x5C, 0xD4, 0x96, 0xA7, 0xC8, 0xA0, 0x60,- 0x92, 0x6E, 0x74, 0x04, 0xFD, 0xA0, 0x79, 0x0D- },- {- 0x6F, 0x44, 0xEC, 0xDA, 0xE1, 0x4E, 0x3B, 0x81,- 0xA1, 0x91, 0x22, 0x03, 0x01, 0x5F, 0x59, 0x18,- 0xEA, 0xC6, 0xFB, 0xF4, 0x96, 0x60, 0x10, 0xF4,- 0x9D, 0x2B, 0xC2, 0xBC, 0xEF, 0xE7, 0xB1, 0xDF,- 0xEC, 0x5C, 0x83, 0x5D, 0x7D, 0x87, 0xA4, 0x43,- 0x71, 0xF1, 0x5A, 0x6C, 0x08, 0x42, 0x52, 0xB9,- 0x34, 0x65, 0x26, 0x42, 0x72, 0xA4, 0x10, 0xD5,- 0x0F, 0x89, 0xA1, 0x17, 0xF3, 0x1A, 0xF4, 0x63- },- {- 0x1F, 0x70, 0x5F, 0x6E, 0x9F, 0x07, 0x0D, 0x87,- 0xFD, 0xE8, 0xE2, 0x77, 0x46, 0x74, 0xFA, 0x9B,- 0xF1, 0x20, 0xD2, 0x88, 0xEB, 0x0B, 0xE7, 0xAA,- 0x12, 0x8D, 0xFB, 0x5D, 0x10, 0x11, 0xCE, 0x1F,- 0xDA, 0x99, 0xB2, 0x55, 0x22, 0x66, 0x65, 0xD8,- 0x3F, 0x63, 0x4E, 0x8F, 0xCA, 0xBD, 0xA9, 0xA2,- 0x3C, 0x03, 0x51, 0x5E, 0x9C, 0xFE, 0xCE, 0x6E,- 0x94, 0xA8, 0xEC, 0x92, 0xE4, 0xED, 0xEC, 0xB7- },- {- 0x2D, 0x96, 0xC5, 0xB0, 0x15, 0x74, 0x72, 0x2B,- 0x81, 0x7F, 0xEB, 0x48, 0x6C, 0x5F, 0xC9, 0x8F,- 0x5F, 0x84, 0x61, 0xF4, 0xCE, 0xE9, 0x90, 0x5A,- 0xF2, 0x06, 0xD4, 0x72, 0x33, 0x86, 0xD1, 0xC4,- 0xC7, 0xCA, 0xC5, 0x84, 0x00, 0x28, 0xD7, 0xAF,- 0xED, 0x0E, 0x38, 0xAD, 0x13, 0x96, 0x28, 0xEB,- 0x6A, 0xF9, 0x2B, 0x4B, 0x88, 0xEB, 0xF0, 0x9B,- 0x1F, 0xA0, 0x47, 0xFB, 0xE1, 0x0B, 0xC3, 0x1D- },- {- 0x65, 0xDA, 0x78, 0x0A, 0x0A, 0x37, 0x47, 0x9D,- 0xD8, 0xF4, 0xD6, 0x55, 0x64, 0xF9, 0xA7, 0x08,- 0x9E, 0x42, 0x07, 0xEB, 0x16, 0xAC, 0xA3, 0xF6,- 0x55, 0x31, 0xCF, 0xEE, 0x76, 0x25, 0xBA, 0x13,- 0x80, 0xA4, 0x97, 0xB6, 0x24, 0x72, 0xFC, 0x7E,- 0x00, 0x07, 0xA6, 0xB0, 0x35, 0x61, 0x04, 0x16,- 0xA5, 0xF8, 0x2C, 0x10, 0x82, 0xFA, 0x06, 0x5C,- 0x46, 0xDD, 0xEE, 0x49, 0x40, 0xD1, 0xFC, 0x46- },- {- 0x1C, 0x09, 0xA3, 0xB3, 0x80, 0xB8, 0xA7, 0xFC,- 0x33, 0x3F, 0xD2, 0x71, 0x4D, 0xF7, 0x12, 0x9B,- 0x44, 0xA4, 0x67, 0x68, 0xBA, 0xCF, 0x0A, 0x67,- 0xA3, 0x8A, 0x47, 0xB3, 0xAB, 0x31, 0xF5, 0x1B,- 0x05, 0x33, 0xC2, 0xAA, 0x2B, 0x4B, 0x7B, 0xBB,- 0x6A, 0xE5, 0xED, 0xF3, 0xDC, 0xB0, 0xEC, 0xC1,- 0xA2, 0x83, 0xE8, 0x43, 0xF2, 0x90, 0x7B, 0x34,- 0x1F, 0x17, 0x9A, 0xFD, 0x8B, 0x67, 0xDA, 0x90- },- {- 0x67, 0x88, 0x8B, 0x83, 0xFA, 0xAF, 0xBB, 0x62,- 0x29, 0x34, 0xB8, 0xD5, 0x59, 0x63, 0xE1, 0x86,- 0x15, 0x3E, 0x59, 0x51, 0x88, 0x7C, 0x7F, 0x4A,- 0x76, 0x35, 0xC7, 0x98, 0xD9, 0xA5, 0x82, 0x94,- 0xBE, 0x26, 0xA3, 0xC5, 0x49, 0xC9, 0xFD, 0x59,- 0x86, 0xAB, 0xD1, 0x9F, 0x40, 0x1E, 0xE2, 0x4E,- 0xDA, 0x36, 0x02, 0x04, 0x2A, 0xD3, 0x83, 0x35,- 0x7A, 0x31, 0x7D, 0x38, 0x07, 0x3B, 0x38, 0xCE- },- {- 0xB4, 0xF7, 0x99, 0x63, 0xCA, 0x31, 0xBB, 0x62,- 0x26, 0x5D, 0xD9, 0x29, 0xAF, 0x7D, 0x51, 0x27,- 0x2F, 0xA6, 0x63, 0x1D, 0xE7, 0xFA, 0x35, 0xF7,- 0xA6, 0xB0, 0x3F, 0x9F, 0xCF, 0xDB, 0x8E, 0x3B,- 0x5B, 0xAC, 0xE3, 0x35, 0x91, 0xB7, 0xEC, 0x2C,- 0xFA, 0xB4, 0x9C, 0x91, 0xA6, 0xDB, 0x1F, 0xF8,- 0xF6, 0x78, 0x6D, 0x08, 0xF4, 0x4E, 0x80, 0x62,- 0xD2, 0xFF, 0x69, 0x6A, 0x7D, 0x98, 0x41, 0x42- },- {- 0x40, 0x84, 0x83, 0x69, 0x7B, 0xB6, 0xF9, 0xD0,- 0x11, 0xA1, 0xF2, 0x9A, 0x23, 0xC2, 0x78, 0xA8,- 0x1D, 0x37, 0x57, 0x8D, 0xCC, 0xCF, 0x42, 0x3B,- 0xDF, 0x48, 0x93, 0x37, 0xF1, 0x82, 0xEA, 0xB7,- 0x9A, 0x50, 0xB0, 0x5F, 0x3D, 0x2C, 0xCC, 0x49,- 0x13, 0x37, 0xC7, 0xE4, 0x1F, 0x30, 0x79, 0x3B,- 0xD2, 0x7D, 0x76, 0x61, 0xC2, 0xE3, 0x04, 0xC9,- 0x46, 0xA5, 0xA4, 0x01, 0xAF, 0x8D, 0x94, 0x6F- },- {- 0xEE, 0xB5, 0xAD, 0xE1, 0xAB, 0x97, 0xE7, 0x15,- 0x43, 0x43, 0xA4, 0x6E, 0xB4, 0xCD, 0xD2, 0xA7,- 0x73, 0xF3, 0x63, 0x01, 0xED, 0xC6, 0xA1, 0xBC,- 0x1D, 0xD6, 0x48, 0x0E, 0x08, 0xF5, 0x87, 0x65,- 0xCB, 0x93, 0x87, 0x82, 0x92, 0x3B, 0xC0, 0x1F,- 0x8E, 0x0C, 0x61, 0xC6, 0xBE, 0x0D, 0xD1, 0xAB,- 0x4C, 0x18, 0xCB, 0x15, 0xED, 0x52, 0x10, 0x11,- 0x24, 0x05, 0xF1, 0xEA, 0x8F, 0x2E, 0x8C, 0x4E- },- {- 0x71, 0x4A, 0xD1, 0x85, 0xF1, 0xEE, 0xC4, 0x3F,- 0x46, 0xB6, 0x7E, 0x99, 0x2D, 0x2D, 0x38, 0xBC,- 0x31, 0x49, 0xE3, 0x7D, 0xA7, 0xB4, 0x47, 0x48,- 0xD4, 0xD1, 0x4C, 0x16, 0x1E, 0x08, 0x78, 0x02,- 0x04, 0x42, 0x14, 0x95, 0x79, 0xA8, 0x65, 0xD8,- 0x04, 0xB0, 0x49, 0xCD, 0x01, 0x55, 0xBA, 0x98,- 0x33, 0x78, 0x75, 0x7A, 0x13, 0x88, 0x30, 0x1B,- 0xDC, 0x0F, 0xAE, 0x2C, 0xEA, 0xEA, 0x07, 0xDD- },- {- 0x22, 0xB8, 0x24, 0x9E, 0xAF, 0x72, 0x29, 0x64,- 0xCE, 0x42, 0x4F, 0x71, 0xA7, 0x4D, 0x03, 0x8F,- 0xF9, 0xB6, 0x15, 0xFB, 0xA5, 0xC7, 0xC2, 0x2C,- 0xB6, 0x27, 0x97, 0xF5, 0x39, 0x82, 0x24, 0xC3,- 0xF0, 0x72, 0xEB, 0xC1, 0xDA, 0xCB, 0xA3, 0x2F,- 0xC6, 0xF6, 0x63, 0x60, 0xB3, 0xE1, 0x65, 0x8D,- 0x0F, 0xA0, 0xDA, 0x1E, 0xD1, 0xC1, 0xDA, 0x66,- 0x2A, 0x20, 0x37, 0xDA, 0x82, 0x3A, 0x33, 0x83- },- {- 0xB8, 0xE9, 0x03, 0xE6, 0x91, 0xB9, 0x92, 0x78,- 0x25, 0x28, 0xF8, 0xDB, 0x96, 0x4D, 0x08, 0xE3,- 0xBA, 0xAF, 0xBD, 0x08, 0xBA, 0x60, 0xC7, 0x2A,- 0xEC, 0x0C, 0x28, 0xEC, 0x6B, 0xFE, 0xCA, 0x4B,- 0x2E, 0xC4, 0xC4, 0x6F, 0x22, 0xBF, 0x62, 0x1A,- 0x5D, 0x74, 0xF7, 0x5C, 0x0D, 0x29, 0x69, 0x3E,- 0x56, 0xC5, 0xC5, 0x84, 0xF4, 0x39, 0x9E, 0x94,- 0x2F, 0x3B, 0xD8, 0xD3, 0x86, 0x13, 0xE6, 0x39- },- {- 0xD5, 0xB4, 0x66, 0xFF, 0x1F, 0xD6, 0x8C, 0xFA,- 0x8E, 0xDF, 0x0B, 0x68, 0x02, 0x44, 0x8F, 0x30,- 0x2D, 0xCC, 0xDA, 0xF5, 0x66, 0x28, 0x78, 0x6B,- 0x9D, 0xA0, 0xF6, 0x62, 0xFD, 0xA6, 0x90, 0x26,- 0x6B, 0xD4, 0x0A, 0xB6, 0xF0, 0xBE, 0xC0, 0x43,- 0xF1, 0x01, 0x28, 0xB3, 0x3D, 0x05, 0xDB, 0x82,- 0xD4, 0xAB, 0x26, 0x8A, 0x4F, 0x91, 0xAC, 0x42,- 0x86, 0x79, 0x5F, 0xC0, 0xF7, 0xCB, 0x48, 0x5C- },- {- 0x0A, 0x1E, 0x8C, 0x0A, 0x8C, 0x48, 0xB8, 0x4B,- 0x71, 0xBA, 0x0F, 0xE5, 0x6F, 0xA0, 0x56, 0x09,- 0x8C, 0xA6, 0x92, 0xE9, 0x2F, 0x27, 0x6E, 0x85,- 0xB3, 0x38, 0x26, 0xCD, 0x78, 0x75, 0xFC, 0xF8,- 0x83, 0x85, 0x13, 0x1B, 0x43, 0xDF, 0x74, 0x53,- 0x2E, 0xAA, 0x86, 0xCF, 0x17, 0x1F, 0x50, 0x76,- 0xE6, 0xD1, 0x7B, 0x1C, 0x75, 0xFB, 0xA1, 0xDB,- 0x00, 0x1B, 0x6E, 0x66, 0x97, 0x7C, 0xB8, 0xD7- },- {- 0x65, 0xAA, 0x17, 0x99, 0x14, 0x36, 0x93, 0xAB,- 0xD9, 0xCB, 0x21, 0x8D, 0x9B, 0x5E, 0xC6, 0x0C,- 0x0E, 0xDD, 0xB0, 0x67, 0xE6, 0xA3, 0x2F, 0x76,- 0x79, 0x60, 0x10, 0xAC, 0xB1, 0x1A, 0xD0, 0x13,- 0x6C, 0xE4, 0x9F, 0x97, 0x6E, 0x74, 0xF8, 0x95,- 0x04, 0x2F, 0x7C, 0xBF, 0x13, 0xFB, 0x73, 0xD1,- 0x9D, 0xC8, 0x89, 0xD7, 0xE9, 0x03, 0x46, 0x9D,- 0xEB, 0x33, 0x73, 0x1F, 0x24, 0x06, 0xB6, 0x63- },- {- 0xDE, 0xB7, 0x12, 0xB9, 0xCC, 0x64, 0xF5, 0x88,- 0x14, 0x86, 0x0B, 0x51, 0xFA, 0x89, 0xAD, 0x8A,- 0x92, 0x6A, 0x69, 0x08, 0xC7, 0x96, 0xDE, 0x55,- 0x7F, 0x90, 0xCF, 0xAD, 0xB0, 0xC6, 0x2C, 0x07,- 0x87, 0x2F, 0x33, 0xFE, 0x18, 0x4E, 0x5E, 0x21,- 0x2A, 0x3C, 0x5C, 0x37, 0x31, 0x74, 0x18, 0x44,- 0x6E, 0xFD, 0x95, 0x61, 0x3F, 0x61, 0x8A, 0x35,- 0xF7, 0xD2, 0x78, 0x9E, 0xFE, 0x0D, 0x96, 0x60- },- {- 0xB4, 0x2F, 0x4A, 0x40, 0xB3, 0xC8, 0x8B, 0xCE,- 0xCF, 0xE3, 0x28, 0xC8, 0x46, 0xBF, 0x06, 0x48,- 0xA1, 0x69, 0x90, 0xCA, 0x53, 0x91, 0x95, 0xC0,- 0xC1, 0xDC, 0x8D, 0x70, 0x30, 0x80, 0x67, 0x68,- 0x5A, 0xF6, 0x77, 0xAD, 0x65, 0xAC, 0x0C, 0x7A,- 0x9B, 0xCF, 0xA8, 0xF7, 0xAC, 0xC0, 0xAA, 0xCF,- 0x45, 0xCA, 0x18, 0xAC, 0x83, 0x1F, 0xED, 0x64,- 0x4E, 0xC3, 0xD9, 0x28, 0x31, 0x01, 0xFF, 0xEF- },- {- 0xED, 0xCF, 0x6C, 0x81, 0xCC, 0xF1, 0x6E, 0x11,- 0xDD, 0xF7, 0x19, 0xA3, 0x3D, 0xD0, 0xE5, 0x34,- 0x9C, 0xAB, 0xAC, 0x5C, 0xFA, 0xE5, 0x97, 0x00,- 0x98, 0x40, 0xE1, 0xC3, 0x93, 0x62, 0xC0, 0xF1,- 0x19, 0x82, 0xFE, 0x2C, 0x27, 0x65, 0x85, 0x9A,- 0x94, 0x26, 0x2D, 0xA2, 0x8D, 0xD3, 0x37, 0x3D,- 0x52, 0x26, 0x93, 0x89, 0x75, 0x11, 0xEB, 0xA5,- 0xE0, 0x7B, 0x8B, 0xC6, 0xB6, 0x06, 0x4D, 0xC0- },- {- 0x46, 0xB9, 0x62, 0xD2, 0x28, 0x36, 0x94, 0xD2,- 0x79, 0x75, 0xDC, 0xBF, 0x32, 0x56, 0x4C, 0x9B,- 0x04, 0x03, 0x2B, 0x30, 0xA9, 0x3E, 0x05, 0x8F,- 0xB7, 0x7B, 0x2B, 0x71, 0x8B, 0x4A, 0xD5, 0xFB,- 0x78, 0x9A, 0xB7, 0xD7, 0xAA, 0x90, 0x85, 0x2D,- 0xA2, 0xBF, 0xB6, 0xB3, 0x93, 0xB0, 0x9F, 0x98,- 0xE8, 0x69, 0xB1, 0x6E, 0x41, 0x0E, 0x7D, 0xE2,- 0x30, 0xB1, 0x79, 0xF6, 0x2E, 0xB5, 0x74, 0x71- },- {- 0x29, 0x03, 0x6C, 0x3F, 0x53, 0x82, 0xE3, 0x5D,- 0xE7, 0xA6, 0x9F, 0xA7, 0xA6, 0x3E, 0xC7, 0xBD,- 0xCB, 0xC4, 0xE0, 0xCC, 0x5A, 0x7B, 0x64, 0x14,- 0xCF, 0x44, 0xBF, 0x9A, 0x83, 0x83, 0xEF, 0xB5,- 0x97, 0x23, 0x50, 0x6F, 0x0D, 0x51, 0xAD, 0x50,- 0xAC, 0x1E, 0xAC, 0xF7, 0x04, 0x30, 0x8E, 0x8A,- 0xEC, 0xB9, 0x66, 0xF6, 0xAC, 0x94, 0x1D, 0xB1,- 0xCD, 0xE4, 0xB5, 0x9E, 0x84, 0xC1, 0xEB, 0xBA- },- {- 0x17, 0x3F, 0x8A, 0xB8, 0x93, 0x3E, 0xB0, 0x7C,- 0xC5, 0xFD, 0x6E, 0x4B, 0xCE, 0xBA, 0xE1, 0xFF,- 0x35, 0xC7, 0x87, 0x9B, 0x93, 0x8A, 0x5A, 0x15,- 0x79, 0xEA, 0x02, 0xF3, 0x83, 0x32, 0x48, 0x86,- 0xC7, 0x0E, 0xD9, 0x10, 0x9D, 0xE1, 0x69, 0x0B,- 0x8E, 0xE8, 0x01, 0xBC, 0x95, 0x9B, 0x21, 0xD3,- 0x81, 0x17, 0xEB, 0xB8, 0x4A, 0xB5, 0x6F, 0x88,- 0xF8, 0xA3, 0x72, 0x62, 0x00, 0x2D, 0xD9, 0x8E- },- {- 0xC6, 0xAF, 0xA6, 0xA1, 0x91, 0x93, 0x1F, 0xD4,- 0x5C, 0x3B, 0xAD, 0xBA, 0x72, 0x6E, 0x68, 0xA9,- 0xBC, 0x73, 0x88, 0xC8, 0xCF, 0x37, 0xAD, 0xEC,- 0x7C, 0x64, 0x56, 0x1C, 0xF4, 0x81, 0xFD, 0x25,- 0x9A, 0x64, 0x6C, 0x8B, 0xD8, 0x43, 0xE7, 0x70,- 0x9E, 0x11, 0xE6, 0x4D, 0xCF, 0xD5, 0xDF, 0xFF,- 0xED, 0x79, 0x23, 0x5C, 0x68, 0x9B, 0x42, 0x00,- 0xFE, 0x7A, 0xC8, 0xDF, 0xDA, 0xDD, 0xEC, 0xE0- },- {- 0xA6, 0xDC, 0xCD, 0x8C, 0x19, 0x26, 0x64, 0x88,- 0xBF, 0x77, 0xB9, 0xF2, 0x4B, 0x91, 0x43, 0xDE,- 0xF1, 0xFE, 0xD6, 0x1D, 0x0C, 0x60, 0xB5, 0x00,- 0x0A, 0x52, 0x3F, 0x45, 0x0D, 0xA2, 0x3D, 0x74,- 0xE4, 0xE3, 0xF6, 0xEF, 0x04, 0x09, 0x0D, 0x10,- 0x66, 0xB6, 0xAC, 0xE8, 0x5A, 0xBC, 0x0F, 0x03,- 0x01, 0x73, 0xF5, 0x28, 0x17, 0x72, 0x7C, 0x4E,- 0x40, 0x43, 0x2D, 0xD3, 0x4C, 0x6E, 0xF9, 0xF0- },- {- 0xAA, 0xF8, 0x90, 0x8D, 0x54, 0x6E, 0x4F, 0x1E,- 0x31, 0x4C, 0x00, 0xE9, 0xD2, 0xE8, 0x85, 0x5C,- 0xB2, 0x56, 0x44, 0x5A, 0xAE, 0x3E, 0xCA, 0x44,- 0x23, 0x83, 0x22, 0xAE, 0xC7, 0x40, 0x34, 0xA1,- 0x45, 0x8A, 0x29, 0x36, 0x75, 0xDA, 0xD9, 0x49,- 0x40, 0x8D, 0xE5, 0x55, 0x4F, 0x22, 0xD7, 0x34,- 0x54, 0xF3, 0xF0, 0x70, 0x9C, 0xBC, 0xCC, 0x85,- 0xCB, 0x05, 0x3A, 0x6F, 0x50, 0x38, 0x91, 0xA1- },- {- 0x52, 0x5F, 0x4A, 0xAB, 0x9C, 0x32, 0x7D, 0x2A,- 0x6A, 0x3C, 0x9D, 0xF8, 0x1F, 0xB7, 0xBE, 0x97,- 0xEE, 0x03, 0xE3, 0xF7, 0xCE, 0x33, 0x21, 0x1C,- 0x47, 0x78, 0x8A, 0xCD, 0x13, 0x46, 0x40, 0xDD,- 0x90, 0xAD, 0x74, 0x99, 0x2D, 0x3D, 0xD6, 0xAC,- 0x80, 0x63, 0x50, 0xF3, 0xBA, 0xBC, 0x7F, 0xE1,- 0x98, 0xA6, 0x1D, 0xB3, 0x2D, 0x4A, 0xD1, 0xD6,- 0x56, 0x9A, 0xE8, 0x41, 0x31, 0x04, 0xDE, 0xA4- },- {- 0x2D, 0xAC, 0xCD, 0x88, 0x71, 0x9D, 0x0A, 0x00,- 0xB5, 0x2C, 0x6E, 0xB7, 0x9E, 0x1C, 0xA8, 0xB4,- 0xA1, 0xB4, 0xB4, 0x4F, 0xFA, 0x20, 0x88, 0x9F,- 0x23, 0x63, 0xEF, 0x5C, 0x0D, 0x73, 0x7F, 0x1F,- 0x81, 0xF5, 0x0D, 0xA1, 0xCA, 0xAC, 0x23, 0x1D,- 0x6F, 0xCB, 0x48, 0x89, 0x5E, 0x72, 0x99, 0xB7,- 0x7A, 0xF8, 0x1F, 0x0A, 0xA4, 0xA7, 0x61, 0x8A,- 0xD2, 0x4B, 0x7A, 0xAF, 0xC8, 0xE3, 0xA2, 0xBE- },- {- 0x7D, 0x28, 0x6F, 0x1F, 0x72, 0x1E, 0xC2, 0xD2,- 0x11, 0x5E, 0xF4, 0xCC, 0xD8, 0x28, 0x58, 0xA4,- 0xD5, 0x12, 0x21, 0x13, 0x55, 0xD4, 0xFC, 0x58,- 0xE5, 0x34, 0xBF, 0xA5, 0x9C, 0x2E, 0x1B, 0xF5,- 0x52, 0xA9, 0x6D, 0xC4, 0xB3, 0xE4, 0x6B, 0x01,- 0x28, 0x65, 0xDA, 0x88, 0x13, 0x4C, 0xF0, 0x4E,- 0x73, 0x1B, 0x19, 0x30, 0x75, 0x9E, 0x15, 0x8F,- 0xF6, 0x20, 0xB6, 0xEC, 0x5A, 0xAF, 0xD0, 0x12- },- {- 0x21, 0x82, 0x6B, 0x95, 0x29, 0xC4, 0xBC, 0x51,- 0x91, 0x47, 0xF5, 0xF9, 0xFE, 0x6D, 0xB8, 0x78,- 0x34, 0x52, 0x15, 0xE5, 0x09, 0x4F, 0x4E, 0x99,- 0xB1, 0x31, 0xED, 0x54, 0xE2, 0x49, 0x53, 0xCE,- 0xE9, 0xAD, 0xB7, 0x18, 0xD1, 0x74, 0x3E, 0x6C,- 0x27, 0xFC, 0x94, 0x51, 0x6A, 0x99, 0x22, 0xFB,- 0x97, 0x5A, 0x78, 0x16, 0xB8, 0xAA, 0xB0, 0x21,- 0x12, 0x60, 0x8C, 0x03, 0x2B, 0xF1, 0x38, 0xE3- },- {- 0xC1, 0x68, 0x9C, 0x69, 0x8A, 0xB0, 0x65, 0xF6,- 0x2E, 0xEE, 0x65, 0xDD, 0xCA, 0x67, 0x6B, 0xAA,- 0x45, 0xB5, 0x2F, 0x30, 0x8A, 0xFA, 0x80, 0x4A,- 0xB4, 0xAA, 0x6A, 0xB8, 0x4B, 0x7A, 0xC1, 0xAA,- 0x1D, 0xFF, 0x07, 0x17, 0x56, 0x10, 0xB1, 0x2A,- 0xE1, 0x1F, 0x27, 0xB7, 0xC4, 0x30, 0xAF, 0xD5,- 0x75, 0x56, 0xBD, 0x18, 0x1D, 0x02, 0x83, 0x2C,- 0xD8, 0xD0, 0xA5, 0xFD, 0xC3, 0x02, 0x01, 0x24- },- {- 0xA1, 0xA6, 0x28, 0x17, 0x47, 0xE3, 0x4D, 0x3E,- 0xDE, 0x5E, 0x93, 0x34, 0x01, 0x74, 0x7C, 0xA7,- 0xF7, 0x66, 0x28, 0xB6, 0x14, 0xC8, 0xA3, 0x94,- 0xF5, 0x02, 0x56, 0x2B, 0xFE, 0xE0, 0xB9, 0x94,- 0xEC, 0xB6, 0x5F, 0xBF, 0xE1, 0xFF, 0x70, 0x67,- 0xDC, 0xB0, 0x1D, 0x02, 0xA9, 0x2B, 0xA4, 0x62,- 0x20, 0x75, 0x87, 0xCE, 0xF7, 0xDC, 0x2C, 0xFD,- 0xB4, 0x58, 0x48, 0x48, 0xAD, 0x55, 0x91, 0x4A- },- {- 0x00, 0x70, 0xA0, 0x19, 0x0A, 0xA6, 0x96, 0x57,- 0x2D, 0x85, 0x3F, 0x1D, 0x24, 0xAB, 0x63, 0x08,- 0x48, 0xAC, 0x56, 0xAD, 0x5C, 0x2E, 0xBF, 0xCF,- 0xDE, 0x27, 0xD1, 0x11, 0xCD, 0x55, 0x93, 0x9C,- 0x1E, 0x4D, 0x07, 0x87, 0x2D, 0xDE, 0x7C, 0xE7,- 0x8B, 0x53, 0x4B, 0x53, 0x0F, 0x0A, 0x39, 0x6E,- 0x86, 0xAF, 0x9D, 0x57, 0x53, 0x54, 0xB5, 0xD7,- 0xE3, 0x4A, 0xCD, 0xE1, 0x8C, 0xC7, 0x67, 0xAE- },- {- 0x51, 0xB9, 0xB5, 0xED, 0x19, 0x3F, 0xD4, 0xB1,- 0xA3, 0xA9, 0x2B, 0x46, 0xBD, 0x4B, 0xD1, 0xF6,- 0xEC, 0x6B, 0x38, 0xA6, 0x0F, 0x2D, 0x02, 0x61,- 0xD7, 0x2A, 0xBF, 0xD1, 0x64, 0x36, 0x12, 0x8D,- 0xCB, 0xF2, 0x2C, 0x25, 0xE3, 0xE3, 0xC4, 0x3F,- 0xE4, 0xD2, 0x9D, 0xB9, 0x12, 0x4D, 0x03, 0x33,- 0x30, 0x18, 0x45, 0x92, 0xD2, 0x0C, 0x5B, 0x08,- 0x2C, 0x23, 0x20, 0x64, 0x54, 0xCB, 0x3D, 0xD7- },- {- 0x57, 0x8F, 0x24, 0x27, 0x46, 0x91, 0x4E, 0x36,- 0xD0, 0xD9, 0xD4, 0x80, 0x96, 0x89, 0x57, 0x12,- 0x16, 0xA4, 0x3E, 0x47, 0x33, 0x32, 0x39, 0x51,- 0x62, 0x0F, 0x5E, 0xE7, 0x8C, 0xCF, 0xEE, 0x91,- 0x9B, 0xF5, 0x5F, 0x28, 0x7B, 0x45, 0xA7, 0x3D,- 0x44, 0x85, 0xAC, 0x74, 0x22, 0x87, 0x92, 0x39,- 0x65, 0x3B, 0x05, 0x91, 0xC3, 0x6C, 0x86, 0x69,- 0x41, 0xF8, 0xAF, 0xFE, 0x4A, 0xE5, 0x6E, 0x9E- },- {- 0x94, 0x71, 0x30, 0xEF, 0x0B, 0x94, 0x8E, 0xE0,- 0x45, 0x81, 0xAB, 0xA3, 0xE2, 0xCC, 0x4C, 0xEF,- 0xC3, 0x8C, 0xCE, 0xDC, 0x86, 0x17, 0x92, 0xB7,- 0xB5, 0xDC, 0xD9, 0xD9, 0x36, 0x1C, 0x72, 0x4A,- 0x12, 0x20, 0x03, 0xBF, 0x79, 0x6C, 0xE0, 0x97,- 0x98, 0x00, 0xAD, 0xAB, 0xC7, 0x45, 0x6F, 0x17,- 0x3A, 0xE5, 0x26, 0x93, 0x15, 0xAF, 0xC0, 0x1B,- 0x60, 0x6D, 0xB2, 0x9C, 0x75, 0x50, 0xE8, 0xCA- },- {- 0xC8, 0x52, 0xE6, 0x77, 0xF7, 0x7B, 0x14, 0xB5,- 0x85, 0xBD, 0x10, 0x2A, 0x0F, 0x14, 0x42, 0x43,- 0x05, 0x9D, 0xAB, 0xEC, 0x7C, 0xB0, 0x1F, 0xFA,- 0x61, 0xDF, 0x19, 0xFC, 0xE8, 0xAB, 0x43, 0x6B,- 0xF5, 0xE2, 0xD5, 0xC7, 0x9A, 0xA2, 0xD7, 0xB6,- 0x77, 0xF6, 0xC3, 0x75, 0xE9, 0x34, 0x3D, 0x34,- 0x2E, 0x4F, 0xF4, 0xE3, 0xAB, 0x00, 0x1B, 0xC7,- 0x98, 0x8C, 0x3C, 0x7A, 0x83, 0xCC, 0xB6, 0x9F- },- {- 0x01, 0x19, 0x75, 0x26, 0x91, 0x7A, 0xC2, 0xC7,- 0xBC, 0x53, 0x95, 0x19, 0xE6, 0x8B, 0xB2, 0x79,- 0x81, 0x35, 0xF6, 0x03, 0x3E, 0xD5, 0x8F, 0x5C,- 0x45, 0x1E, 0x0C, 0xE9, 0x46, 0xAF, 0xF0, 0xF9,- 0x8D, 0xFD, 0xD1, 0x51, 0x01, 0x73, 0x1A, 0xC1,- 0x66, 0x12, 0x6E, 0xAF, 0xB5, 0xE7, 0xCB, 0xE2,- 0xE2, 0x72, 0xEE, 0x23, 0x3F, 0x34, 0xE5, 0xF3,- 0xF8, 0xEA, 0x3D, 0x2D, 0x12, 0x24, 0x82, 0xFB- },- {- 0x05, 0x9C, 0x90, 0x85, 0x89, 0x5E, 0xB7, 0x18,- 0x30, 0x4E, 0x2D, 0xDA, 0x78, 0x68, 0x6B, 0xD9,- 0x57, 0x49, 0x81, 0x5A, 0x5E, 0xE9, 0x02, 0x51,- 0x0B, 0x00, 0x9A, 0xF6, 0x92, 0x48, 0xB6, 0xA7,- 0xA7, 0x2F, 0xF8, 0xA6, 0x28, 0xD8, 0x17, 0x73,- 0xE1, 0x1D, 0x5A, 0x1E, 0x7F, 0x69, 0x7A, 0x44,- 0x9B, 0x7A, 0x1E, 0x27, 0x12, 0xD5, 0xCF, 0xAE,- 0x7A, 0xB2, 0x65, 0x07, 0xD1, 0x11, 0x29, 0x18- },- {- 0x29, 0x52, 0x43, 0xBD, 0x75, 0x8C, 0xF2, 0x1C,- 0x80, 0x31, 0x25, 0xFC, 0xF3, 0x21, 0xDE, 0x5F,- 0x97, 0x98, 0x7C, 0x8D, 0xB3, 0xBB, 0x3C, 0xB5,- 0x1F, 0xF9, 0x7C, 0x4C, 0xDA, 0xC9, 0xD3, 0xBF,- 0x0A, 0x67, 0xCE, 0xE7, 0xED, 0x35, 0x0A, 0x41,- 0xFD, 0xE6, 0xAB, 0xCC, 0x25, 0x4F, 0xBC, 0x9F,- 0x8E, 0x6B, 0x3E, 0x3C, 0xCE, 0xCB, 0xD0, 0xE4,- 0xA6, 0x40, 0xA2, 0x0F, 0x36, 0x2B, 0xA3, 0xA0- },- {- 0xDD, 0x82, 0x32, 0xD2, 0x41, 0x2C, 0xCE, 0xEC,- 0xB5, 0x12, 0x31, 0x91, 0xF6, 0xE9, 0x22, 0x1E,- 0x85, 0x1E, 0xCC, 0xE0, 0xFA, 0xEB, 0xF0, 0x50,- 0x5F, 0x2A, 0xEE, 0xFF, 0x8A, 0x8C, 0x92, 0xD4,- 0x1D, 0xAC, 0xF1, 0x77, 0xBD, 0xAE, 0x27, 0x76,- 0x3E, 0xA4, 0xA8, 0x62, 0x05, 0xEF, 0x76, 0x34,- 0xF7, 0xA6, 0x87, 0xCC, 0x44, 0xBB, 0xBB, 0xDE,- 0xEE, 0x5E, 0x11, 0xE6, 0x5F, 0x9F, 0xBD, 0x69- },- {- 0xB0, 0x46, 0xB6, 0x83, 0x71, 0x6D, 0x31, 0xC9,- 0x14, 0xC7, 0x0B, 0x10, 0xF7, 0x64, 0x6D, 0xA3,- 0x1E, 0xFA, 0xB2, 0x23, 0x63, 0x47, 0x45, 0x9C,- 0xF8, 0xFA, 0x2C, 0x09, 0x12, 0x34, 0x31, 0xF7,- 0x28, 0x07, 0xF1, 0x1D, 0x86, 0x7C, 0x37, 0x70,- 0xB1, 0xF0, 0x61, 0xD5, 0x6C, 0xA0, 0xE5, 0xB1,- 0xE8, 0x8A, 0x6B, 0x44, 0xA3, 0x3C, 0xF9, 0x3E,- 0x18, 0xBC, 0xC9, 0xCE, 0xBB, 0xA5, 0xAD, 0xE7- },- {- 0x20, 0xE5, 0xA2, 0x55, 0x05, 0x8B, 0xE5, 0x1E,- 0x1A, 0x62, 0x9B, 0x4E, 0xBF, 0x81, 0xE5, 0xCB,- 0xE0, 0x78, 0x1C, 0xB6, 0x7C, 0xA4, 0xE5, 0x7B,- 0xA8, 0x6B, 0x30, 0x88, 0x96, 0xBC, 0xE7, 0x38,- 0x20, 0xEB, 0x08, 0x43, 0x1C, 0xE8, 0xC9, 0xBC,- 0x58, 0x10, 0xCC, 0x8D, 0x8B, 0x9C, 0x9D, 0x6F,- 0xCF, 0x83, 0x4E, 0x42, 0xEA, 0x33, 0xEF, 0x73,- 0xCE, 0xC4, 0x7D, 0x71, 0x3B, 0x6D, 0x8D, 0xFD- },- {- 0x1E, 0x48, 0x04, 0xF9, 0xC0, 0xB1, 0xE8, 0x2B,- 0x9E, 0xD3, 0x63, 0xBD, 0xE4, 0x47, 0x28, 0xAC,- 0xF7, 0xD0, 0x90, 0xA1, 0xBF, 0xE2, 0xDD, 0xF8,- 0x81, 0x9D, 0x65, 0x92, 0xEF, 0x45, 0x3B, 0x83,- 0x5B, 0xD2, 0xEF, 0xE8, 0xB0, 0x20, 0x6E, 0x29,- 0x25, 0x5B, 0x07, 0xFB, 0x90, 0xC7, 0xD3, 0x0D,- 0x2C, 0x11, 0x48, 0x00, 0xB8, 0x6C, 0xB0, 0xE3,- 0xE0, 0x7D, 0x38, 0x7E, 0x98, 0xCE, 0x95, 0x37- },- {- 0x41, 0xC9, 0x53, 0xD8, 0xD2, 0x2A, 0x86, 0xC3,- 0x63, 0x4D, 0xF4, 0x22, 0xB6, 0xDE, 0x4A, 0x4F,- 0x14, 0x96, 0x66, 0xBE, 0x8C, 0x4F, 0x58, 0x1B,- 0x26, 0x23, 0xEE, 0x65, 0xC3, 0x92, 0xA5, 0xC3,- 0x28, 0x36, 0x63, 0x9E, 0xF5, 0x6B, 0x93, 0x68,- 0x62, 0x20, 0xF4, 0x5C, 0xE6, 0x5B, 0x4F, 0xA8,- 0x58, 0x9C, 0x91, 0x25, 0x64, 0x17, 0x90, 0xB6,- 0x92, 0x5F, 0xAA, 0xD9, 0x48, 0xB8, 0xBE, 0x04- },- {- 0x8B, 0xFC, 0xA4, 0xC8, 0xDF, 0xE3, 0xFD, 0xE4,- 0x25, 0x7B, 0x75, 0xC3, 0xDB, 0x01, 0x86, 0x2E,- 0xD3, 0x11, 0x67, 0xDE, 0x66, 0xC2, 0xE0, 0x3A,- 0x25, 0x56, 0xC4, 0xF4, 0x6C, 0x9D, 0xFF, 0xC1,- 0xAC, 0x45, 0xF7, 0xBC, 0x59, 0xA6, 0x7A, 0xB9,- 0x36, 0x24, 0xBE, 0xB8, 0x6D, 0xDD, 0x0D, 0x02,- 0x60, 0x3F, 0x0D, 0xCD, 0x03, 0x64, 0xF0, 0xF8,- 0x08, 0x81, 0x9B, 0xE9, 0x6C, 0xD8, 0xD3, 0xB6- },- {- 0xF6, 0xBF, 0x59, 0xD8, 0xD4, 0x5A, 0x55, 0x71,- 0x11, 0xA2, 0x36, 0xCB, 0xBA, 0x52, 0x61, 0x9A,- 0xE3, 0xDF, 0xCC, 0x43, 0x16, 0x94, 0x38, 0x43,- 0xAF, 0xD1, 0x28, 0x1B, 0x28, 0x21, 0x4A, 0x4A,- 0x5E, 0x85, 0x1E, 0xF8, 0xC5, 0x4F, 0x50, 0x5E,- 0x3C, 0x4B, 0x60, 0x0E, 0xFF, 0xBE, 0xBB, 0x3E,- 0xAC, 0x17, 0x08, 0x7F, 0x22, 0x27, 0x58, 0x12,- 0x63, 0xF1, 0x7D, 0x7E, 0x5F, 0x68, 0xEA, 0x83- },- {- 0x1B, 0xC9, 0xED, 0xE4, 0xD4, 0x1A, 0x4D, 0xF6,- 0xE8, 0xE6, 0xF4, 0x7C, 0x2F, 0x4A, 0xD8, 0x73,- 0x37, 0xB6, 0x9B, 0x19, 0xF7, 0x10, 0xF7, 0x66,- 0xE1, 0xFA, 0xF5, 0xAA, 0x05, 0xA4, 0x3B, 0x66,- 0x45, 0x39, 0x6E, 0x7F, 0xBE, 0xF4, 0x3B, 0xB7,- 0x79, 0x5D, 0x39, 0x40, 0x7B, 0x58, 0x15, 0xB9,- 0x2E, 0xCC, 0x23, 0xA6, 0xC1, 0x24, 0x14, 0x21,- 0x15, 0x3A, 0x55, 0xD5, 0x1F, 0x12, 0xBF, 0xD8- },- {- 0x76, 0xB3, 0x8B, 0x36, 0x31, 0x55, 0x5D, 0xBC,- 0xFB, 0x21, 0x21, 0x8F, 0xF9, 0xE4, 0x12, 0xA2,- 0x29, 0x88, 0x9E, 0xF2, 0xCE, 0x8A, 0xD7, 0x05,- 0xE9, 0x0F, 0x96, 0xAA, 0xBB, 0xD5, 0xBE, 0x7E,- 0x53, 0x29, 0xA4, 0x26, 0x53, 0x4C, 0x81, 0x5A,- 0x56, 0x53, 0x77, 0x13, 0x18, 0x72, 0x66, 0x41,- 0x42, 0x4E, 0x3B, 0x88, 0x29, 0x2F, 0xB1, 0xD8,- 0x95, 0x44, 0x40, 0x6A, 0xDE, 0x9B, 0xCC, 0xB5- },- {- 0xE5, 0x3F, 0x60, 0x07, 0x40, 0x22, 0x4E, 0x4D,- 0x10, 0xD3, 0x1D, 0x24, 0x38, 0x00, 0x31, 0x43,- 0xAF, 0xDB, 0x43, 0x6E, 0xB1, 0x79, 0x1B, 0x15,- 0x0D, 0xE3, 0x56, 0x76, 0xF0, 0xE3, 0x2F, 0x80,- 0xB0, 0xB6, 0x5F, 0x0A, 0xCF, 0x48, 0x1A, 0x5F,- 0xBF, 0x95, 0x96, 0xC0, 0xCB, 0x0A, 0x27, 0xC7,- 0xAF, 0xC1, 0x1D, 0x1E, 0x2C, 0x4D, 0x54, 0x02,- 0x47, 0x5E, 0x4F, 0xFC, 0xC1, 0xCD, 0xA8, 0x11- },- {- 0x62, 0x06, 0xB9, 0x1F, 0xC0, 0xB6, 0xF1, 0x21,- 0x1E, 0x9F, 0xDE, 0xCD, 0xC9, 0xD5, 0x1A, 0x6F,- 0x1E, 0xEE, 0x65, 0x54, 0xB1, 0x38, 0xAD, 0xCD,- 0x4A, 0x82, 0x3D, 0xF0, 0x0D, 0xDE, 0xF6, 0x75,- 0x9A, 0x9B, 0xFD, 0x7A, 0x4E, 0x98, 0x1E, 0x04,- 0x52, 0x36, 0x83, 0x8F, 0x4A, 0xF6, 0x93, 0xF6,- 0x93, 0x77, 0x93, 0x14, 0x84, 0xB3, 0xE8, 0x1E,- 0x3E, 0x3B, 0xC2, 0xCB, 0x7E, 0xF7, 0x9F, 0xE9- },- {- 0x76, 0xFD, 0x02, 0xDA, 0xDD, 0x96, 0x3B, 0xC0,- 0x35, 0x39, 0x91, 0x46, 0xCE, 0x42, 0x98, 0x8C,- 0xC0, 0x99, 0xD3, 0xCF, 0x4D, 0x32, 0xDF, 0x5C,- 0x0B, 0xBF, 0x64, 0x10, 0x12, 0x46, 0xB1, 0xC7,- 0x08, 0xD1, 0x67, 0xE2, 0x95, 0x95, 0xD1, 0x1D,- 0x09, 0xB3, 0xF6, 0x34, 0x86, 0xB4, 0x05, 0x26,- 0xAC, 0x1D, 0xFE, 0x31, 0xBC, 0x22, 0xDE, 0xC7,- 0x0B, 0x74, 0x5E, 0x90, 0xE2, 0xEA, 0xAF, 0x5A- },- {- 0xF0, 0xA1, 0xFB, 0xE3, 0x11, 0x63, 0xE4, 0x21,- 0x01, 0x50, 0x72, 0x18, 0x3D, 0x68, 0xEE, 0x51,- 0x91, 0xA9, 0x9C, 0xFD, 0xA1, 0x69, 0xBA, 0x5A,- 0x19, 0x54, 0xC9, 0xF3, 0x10, 0x7D, 0x4E, 0xCA,- 0x06, 0x3E, 0x13, 0x7A, 0x71, 0x14, 0xD3, 0x97,- 0xC9, 0xDB, 0x67, 0x2B, 0x9F, 0x47, 0x8D, 0x41,- 0xC3, 0x4E, 0x99, 0x1B, 0x06, 0x69, 0xA9, 0x51,- 0x53, 0x92, 0x90, 0xC8, 0xED, 0x65, 0xE4, 0x6A- },- {- 0x13, 0xC7, 0x2A, 0x6A, 0xA5, 0x71, 0xB1, 0x43,- 0xDC, 0xCF, 0x45, 0xAD, 0xCD, 0x98, 0xEA, 0xE6,- 0x99, 0xA1, 0x54, 0xB1, 0x10, 0xF2, 0x5E, 0x7E,- 0x9E, 0x82, 0xB7, 0x65, 0xB9, 0xA0, 0x89, 0x23,- 0x68, 0x8E, 0x8E, 0x0F, 0xF3, 0x11, 0xA6, 0x8A,- 0x77, 0x1E, 0x14, 0x50, 0x96, 0xD6, 0x07, 0x76,- 0xC6, 0xD6, 0xEE, 0x70, 0xAD, 0x6F, 0x69, 0xFA,- 0x2B, 0x76, 0x77, 0x63, 0x40, 0x55, 0xA0, 0x0E- },- {- 0x0E, 0x06, 0x2B, 0xFE, 0x81, 0x8E, 0xE1, 0x0F,- 0x33, 0x48, 0x1D, 0xEA, 0x43, 0x02, 0x8B, 0x2C,- 0xFB, 0xB4, 0x9E, 0xC9, 0x5E, 0x0F, 0x75, 0xA9,- 0xE1, 0x6D, 0x40, 0x4B, 0xC5, 0x19, 0xB9, 0xAD,- 0x50, 0xB4, 0xA7, 0x33, 0x69, 0x2C, 0xA5, 0x4E,- 0xFB, 0x68, 0x04, 0x69, 0xED, 0x83, 0xDD, 0xEF,- 0xBD, 0xDD, 0xB1, 0x39, 0x04, 0x2E, 0x0E, 0x1C,- 0x09, 0xC3, 0xEB, 0x79, 0x03, 0xFA, 0x08, 0xDF- },- {- 0x45, 0x3B, 0xE4, 0xAA, 0xB9, 0xF4, 0x23, 0xB3,- 0x36, 0x52, 0xA0, 0xB5, 0xD0, 0x2A, 0x9A, 0xF8,- 0x55, 0xDD, 0x0D, 0x42, 0xDD, 0x83, 0x11, 0x0B,- 0xA3, 0xBC, 0x4B, 0x39, 0x94, 0xEA, 0x3F, 0x88,- 0x5A, 0x71, 0x30, 0x89, 0x75, 0x08, 0x9B, 0x49,- 0x03, 0xE2, 0xE4, 0xD6, 0xBA, 0x6D, 0xC2, 0xE8,- 0x40, 0x31, 0xFF, 0xE9, 0xC8, 0x56, 0x39, 0x75,- 0xC8, 0x61, 0x6A, 0xCA, 0x07, 0x42, 0xE8, 0x29- },- {- 0x53, 0x61, 0xE3, 0xE8, 0x93, 0xDD, 0x36, 0x0B,- 0xCB, 0xF5, 0x1C, 0x79, 0x3E, 0xC0, 0x92, 0xA6,- 0xB0, 0x52, 0x05, 0x4F, 0x5F, 0x00, 0x0B, 0x9F,- 0xCE, 0x50, 0x7B, 0x66, 0x45, 0xF8, 0xD4, 0x70,- 0x13, 0xA8, 0x70, 0x6A, 0x58, 0xD4, 0xB1, 0x06,- 0x29, 0xCC, 0x82, 0xB8, 0xD2, 0xD7, 0x96, 0xFD,- 0xD3, 0x7B, 0x60, 0x8A, 0x58, 0x79, 0x52, 0xD6,- 0x55, 0x3E, 0x01, 0xD1, 0xAF, 0x0E, 0x04, 0xB8- },- {- 0x74, 0xB5, 0x67, 0x39, 0xF0, 0x1F, 0x82, 0x09,- 0xA4, 0x04, 0x44, 0xDF, 0x4C, 0xCD, 0xEE, 0xEA,- 0x8F, 0x97, 0xE8, 0xE7, 0x6E, 0xFA, 0x3C, 0x04,- 0x33, 0x7F, 0x69, 0x94, 0x5C, 0x4D, 0x44, 0xC0,- 0x85, 0xF1, 0xF4, 0x78, 0x96, 0x96, 0x36, 0x1E,- 0x3C, 0x97, 0x77, 0x4A, 0x93, 0x5F, 0x86, 0x0D,- 0x67, 0x46, 0x86, 0xDC, 0xBA, 0x3D, 0x45, 0xEC,- 0xD8, 0x63, 0x9A, 0x64, 0xAE, 0xA0, 0x62, 0x1B- },- {- 0xB4, 0xD3, 0x15, 0x87, 0xB9, 0x2B, 0x53, 0x61,- 0xCD, 0xC2, 0xD3, 0xC4, 0x10, 0x86, 0xC1, 0x55,- 0x3E, 0x7B, 0x55, 0xA1, 0xF6, 0x1E, 0x94, 0xD2,- 0xBC, 0x30, 0xBC, 0x25, 0x1D, 0xAF, 0x8A, 0x5E,- 0xBF, 0xC5, 0x07, 0x09, 0xCC, 0x04, 0xCB, 0xAF,- 0x4B, 0x3B, 0x4D, 0xA2, 0xD2, 0x6B, 0x81, 0x23,- 0x8F, 0xBA, 0x71, 0x8F, 0xA9, 0x17, 0x59, 0xB8,- 0x0B, 0xD3, 0x10, 0x3A, 0xEC, 0x11, 0xE0, 0x6F- },- {- 0xAA, 0xF6, 0x12, 0x7F, 0x00, 0xA0, 0x3D, 0x96,- 0x40, 0x6B, 0x9F, 0xB4, 0xAC, 0x70, 0x16, 0x0D,- 0xB5, 0x22, 0x42, 0x9B, 0x5C, 0xD9, 0x4E, 0x7F,- 0xA0, 0x30, 0x3A, 0x74, 0x94, 0x78, 0xFE, 0x31,- 0x89, 0xC8, 0xEA, 0x23, 0x93, 0x0A, 0x66, 0x25,- 0x2A, 0x80, 0x26, 0x74, 0xDC, 0xAF, 0x77, 0x00,- 0x46, 0x82, 0x0D, 0xD9, 0x64, 0xC6, 0x6F, 0x0F,- 0x54, 0x75, 0x1A, 0x72, 0xF9, 0x7D, 0x9C, 0x35- },- {- 0x2C, 0x30, 0xD4, 0x8D, 0xF9, 0x98, 0x4E, 0x02,- 0xF7, 0x5A, 0x94, 0x54, 0x92, 0x17, 0x18, 0x4D,- 0xD0, 0x2A, 0xAD, 0x3B, 0x57, 0x68, 0x3D, 0x09,- 0xB5, 0xA8, 0xC2, 0xEF, 0x53, 0xA9, 0x6A, 0xFB,- 0x73, 0xFE, 0xB6, 0xF9, 0x14, 0xE2, 0xD8, 0x15,- 0xBB, 0x3B, 0x08, 0x65, 0x43, 0x32, 0xFC, 0xFE,- 0x79, 0xF8, 0x0E, 0xC5, 0xF0, 0x51, 0xDA, 0x10,- 0xD7, 0x21, 0x41, 0x3D, 0xDD, 0xE8, 0xFA, 0x60- },- {- 0x92, 0xE2, 0xC5, 0xF7, 0x5D, 0x0C, 0xEA, 0xFC,- 0x81, 0x8F, 0xA7, 0x93, 0x59, 0x39, 0xE4, 0x8B,- 0x91, 0x59, 0x41, 0xEF, 0x73, 0x4D, 0x75, 0x27,- 0x0E, 0xB3, 0x21, 0xBA, 0x20, 0x80, 0xEF, 0x6D,- 0x25, 0x5E, 0x90, 0xEF, 0x96, 0xC6, 0x4C, 0xFF,- 0x1D, 0x8C, 0x18, 0xF3, 0x3C, 0x2E, 0xAB, 0x10,- 0x7F, 0xEF, 0x53, 0xE0, 0xD8, 0xBB, 0x16, 0x05,- 0x16, 0x80, 0x74, 0x80, 0xFC, 0xBA, 0x53, 0x73- },- {- 0x6E, 0x03, 0xA9, 0x1E, 0x20, 0x44, 0x46, 0x27,- 0xE3, 0xD2, 0xE2, 0x22, 0x26, 0xCF, 0x47, 0x00,- 0x26, 0x69, 0x44, 0x34, 0xED, 0x64, 0x79, 0x82,- 0x8C, 0xB6, 0xDC, 0x8F, 0x27, 0x96, 0x0A, 0xEE,- 0xE2, 0xF4, 0xAB, 0x87, 0x2A, 0x5C, 0xA2, 0xF7,- 0xF6, 0x52, 0xF7, 0xDC, 0x77, 0xD5, 0xF9, 0x6D,- 0x85, 0x82, 0x8B, 0x8F, 0x9C, 0x2D, 0x6C, 0x23,- 0x9E, 0x79, 0x77, 0x24, 0xA1, 0x31, 0x31, 0xB1- },- {- 0xBA, 0x43, 0x2D, 0xB0, 0xA3, 0x31, 0xBB, 0x8C,- 0x39, 0xB1, 0x7B, 0xEE, 0x34, 0x46, 0x2B, 0x26,- 0xDD, 0xB7, 0xAD, 0x91, 0xB6, 0xC7, 0x5A, 0xEC,- 0x27, 0x65, 0xFB, 0xAE, 0x3A, 0x0E, 0x60, 0xEC,- 0x54, 0x6D, 0x45, 0xF8, 0xE5, 0x84, 0x37, 0xB9,- 0xD7, 0x7C, 0x3D, 0x2E, 0x8D, 0x7C, 0xE0, 0x69,- 0x73, 0x15, 0x66, 0x51, 0xD4, 0x08, 0x22, 0x2A,- 0xA2, 0x90, 0xCB, 0x58, 0xCA, 0xBC, 0x0A, 0xE5- },- {- 0x83, 0xA0, 0x1E, 0x23, 0xAB, 0x27, 0x7B, 0x1F,- 0xC2, 0x8C, 0xD8, 0xBB, 0x8D, 0xA7, 0xE9, 0x4C,- 0x70, 0xF1, 0xDE, 0xE3, 0x2D, 0x19, 0x55, 0xCE,- 0xE2, 0x50, 0xEE, 0x58, 0x41, 0x9A, 0x1F, 0xEE,- 0x10, 0xA8, 0x99, 0x17, 0x97, 0xCE, 0x3D, 0x20,- 0x93, 0x80, 0xCA, 0x9F, 0x98, 0x93, 0x39, 0xE2,- 0xD8, 0xA8, 0x1C, 0x67, 0xD7, 0x37, 0xD8, 0x28,- 0x8C, 0x7F, 0xAE, 0x46, 0x02, 0x83, 0x4A, 0x8B- },- {- 0x0E, 0xA3, 0x21, 0x72, 0xCC, 0x19, 0x1D, 0xFC,- 0x13, 0x1C, 0xD8, 0x8A, 0xA0, 0x3F, 0xF4, 0x18,- 0x5C, 0x0B, 0xFA, 0x7B, 0x19, 0x11, 0x12, 0x19,- 0xEE, 0xCB, 0x45, 0xB0, 0xFF, 0x60, 0x4D, 0x3E,- 0xDB, 0x00, 0x55, 0x0A, 0xBB, 0xA1, 0x11, 0x52,- 0x2B, 0x77, 0xAE, 0x61, 0xC9, 0xA8, 0xD6, 0xE9,- 0x4F, 0xCA, 0x9D, 0x96, 0xC3, 0x8D, 0x6B, 0x7C,- 0xCE, 0x27, 0x52, 0xF0, 0xD0, 0xC3, 0x7E, 0x78- },- {- 0x54, 0xAD, 0xD6, 0x55, 0x2B, 0x08, 0x85, 0x8B,- 0x23, 0xD6, 0x64, 0x5F, 0x6C, 0xE7, 0x9E, 0x92,- 0xF3, 0x8B, 0x66, 0xAE, 0x91, 0x86, 0x77, 0xE6,- 0xD9, 0x1F, 0x71, 0x87, 0xC4, 0x16, 0x05, 0x24,- 0xDF, 0xA8, 0xD0, 0x1F, 0x00, 0xEA, 0x93, 0xDD,- 0x29, 0x9F, 0x3C, 0xC4, 0x09, 0x01, 0xBD, 0x33,- 0x27, 0xA0, 0xF1, 0x8C, 0xCD, 0x7B, 0x6B, 0x8E,- 0x4E, 0x47, 0xCD, 0x28, 0xCF, 0x83, 0x8F, 0xAB- },- {- 0xEF, 0x84, 0x74, 0x6D, 0xC2, 0x01, 0x56, 0xB6,- 0x6B, 0xA5, 0xC7, 0x8A, 0x50, 0x83, 0x0A, 0xBD,- 0x2A, 0xEF, 0x90, 0xE6, 0x67, 0xB9, 0x7E, 0xB5,- 0x22, 0x91, 0xBC, 0x86, 0x9D, 0x8A, 0xA2, 0x45,- 0x59, 0xA1, 0x42, 0xC6, 0x8F, 0xEA, 0x2E, 0xF3,- 0x2A, 0xF2, 0x2D, 0xFC, 0xEA, 0x4C, 0x90, 0xB3,- 0xD4, 0x90, 0x8C, 0xC9, 0xEA, 0x5C, 0xFC, 0x4E,- 0x91, 0xBF, 0x11, 0xCE, 0x6A, 0x7E, 0x57, 0x61- },- {- 0x5A, 0x1B, 0xF3, 0x81, 0xA0, 0x41, 0x19, 0xF9,- 0x42, 0xE4, 0x63, 0xAB, 0xA2, 0xB1, 0x64, 0x38,- 0x82, 0x46, 0x8A, 0xEC, 0xC1, 0xB1, 0xAA, 0x1E,- 0x7B, 0xCA, 0xAB, 0x3B, 0x47, 0x8F, 0xC5, 0xF0,- 0x56, 0xF1, 0x0D, 0xA9, 0x03, 0x7D, 0x40, 0xFA,- 0x7F, 0x55, 0x70, 0x8E, 0x10, 0x3B, 0xDA, 0x96,- 0x5E, 0x92, 0x0C, 0xF6, 0x7C, 0xE3, 0xAD, 0xF7,- 0xE2, 0x00, 0xE8, 0x61, 0x01, 0x4D, 0xEC, 0xC6- },- {- 0xAC, 0xF7, 0x8A, 0xA3, 0x28, 0x45, 0x96, 0xF3,- 0x30, 0xB7, 0xE8, 0x47, 0x51, 0xB9, 0x4C, 0x31,- 0x4C, 0xD8, 0x36, 0x36, 0x27, 0xBA, 0x99, 0x78,- 0x81, 0x30, 0x85, 0x78, 0x87, 0x37, 0x59, 0x89,- 0x5D, 0x13, 0xDF, 0xFF, 0xA5, 0xE5, 0x74, 0x50,- 0x13, 0x61, 0xF0, 0x43, 0xC7, 0x4F, 0x57, 0xD2,- 0xD0, 0xF1, 0x5C, 0x7A, 0x41, 0xC7, 0xC4, 0x5E,- 0x3C, 0x09, 0xAD, 0x89, 0xD6, 0x99, 0xA9, 0x77- },- {- 0x18, 0xB3, 0xE9, 0x04, 0x38, 0x44, 0xD4, 0xF3,- 0xA2, 0xD0, 0x21, 0xF5, 0x4C, 0x38, 0xFA, 0xCC,- 0x36, 0x4F, 0x84, 0xBA, 0x10, 0x58, 0xF2, 0x10,- 0x09, 0xFC, 0x37, 0x1D, 0x2E, 0x4F, 0x38, 0xC7,- 0x27, 0x51, 0x8A, 0xAB, 0xA6, 0xA2, 0x9E, 0x0F,- 0xDA, 0xE6, 0xE7, 0x60, 0xA4, 0xF1, 0xA6, 0xD7,- 0x58, 0xEB, 0xE4, 0x2C, 0x2A, 0xFC, 0x9D, 0x2C,- 0xDC, 0x6D, 0xD5, 0x80, 0x77, 0x8C, 0x4B, 0x32- },- {- 0x18, 0x96, 0xB2, 0x31, 0x70, 0x33, 0xCF, 0x31,- 0x04, 0x68, 0x73, 0xD8, 0x7F, 0x26, 0xE6, 0xA4,- 0x2A, 0x9D, 0x77, 0x0B, 0xBA, 0xF6, 0xE0, 0x62,- 0xDF, 0x11, 0xF9, 0xB4, 0xA0, 0xEA, 0xB2, 0x75,- 0xAA, 0xB1, 0x2C, 0xAA, 0xC2, 0xD3, 0xF5, 0x29,- 0xEB, 0x20, 0xD0, 0x70, 0xFD, 0x84, 0x4D, 0x86,- 0xD0, 0xA5, 0x71, 0xCD, 0xF6, 0x28, 0x5F, 0x80,- 0xE2, 0x30, 0x8B, 0xB8, 0x2C, 0x6C, 0x5B, 0x3B- },- {- 0x8C, 0x3D, 0xC4, 0x01, 0x94, 0xAA, 0x02, 0x1F,- 0x3C, 0x4A, 0x1F, 0x9A, 0x05, 0x5E, 0x4D, 0x41,- 0x9E, 0xB3, 0xA2, 0x6D, 0x4C, 0x2F, 0x1A, 0x8C,- 0x7E, 0x18, 0x8B, 0x73, 0x48, 0x13, 0x40, 0x80,- 0xB6, 0x3F, 0x6E, 0x57, 0x0A, 0xD1, 0x1C, 0x28,- 0x78, 0x66, 0x53, 0x55, 0x41, 0x9C, 0x10, 0x20,- 0xDE, 0x4B, 0x65, 0x5E, 0x7A, 0x6C, 0x2C, 0xCD,- 0xE9, 0x07, 0x2C, 0xD4, 0x27, 0xFE, 0x8C, 0x4E- },- {- 0x70, 0xAE, 0x04, 0x30, 0xD5, 0x45, 0xEC, 0x42,- 0x7F, 0x85, 0x41, 0x21, 0x1D, 0x4F, 0xE0, 0x42,- 0xB9, 0x82, 0x3A, 0xCE, 0xC0, 0x4B, 0x15, 0xC9,- 0x0B, 0x7F, 0x4B, 0x8B, 0xDD, 0x3D, 0xC7, 0x85,- 0x19, 0x90, 0xF3, 0x70, 0xE7, 0x14, 0x16, 0x75,- 0x10, 0x66, 0x49, 0xD3, 0x91, 0x51, 0x09, 0x03,- 0x18, 0x23, 0x1E, 0x4D, 0xED, 0x51, 0x22, 0x5D,- 0x9A, 0x6F, 0xA6, 0xC4, 0x24, 0x69, 0x5D, 0xE2- },- {- 0x07, 0x33, 0x6C, 0x42, 0xBD, 0x51, 0x49, 0x0E,- 0xF8, 0x4D, 0xFB, 0xDF, 0xAB, 0x74, 0x66, 0xF6,- 0xB6, 0x39, 0x99, 0xA5, 0xC0, 0x88, 0x72, 0xDF,- 0xED, 0xA0, 0x20, 0x6F, 0xDA, 0x80, 0xB9, 0xA6,- 0x2D, 0xE7, 0x28, 0xE3, 0xE3, 0xC3, 0xFD, 0x6B,- 0x7D, 0x21, 0xA4, 0x38, 0xAA, 0xD1, 0xB8, 0xDD,- 0x22, 0x38, 0x63, 0xC0, 0xD2, 0x6A, 0xCA, 0x27,- 0x79, 0x01, 0x74, 0xD9, 0xD4, 0x42, 0xA6, 0x4C- },- {- 0x79, 0x26, 0x70, 0x88, 0x59, 0xE6, 0xE2, 0xAB,- 0x68, 0xF6, 0x04, 0xDA, 0x69, 0xA9, 0xFB, 0x50,- 0x87, 0xBB, 0x33, 0xF4, 0xE8, 0xD8, 0x95, 0x73,- 0x0E, 0x30, 0x1A, 0xB2, 0xD7, 0xDF, 0x74, 0x8B,- 0x67, 0xDF, 0x0B, 0x6B, 0x86, 0x22, 0xE5, 0x2D,- 0xD5, 0x7D, 0x8D, 0x3A, 0xD8, 0x7D, 0x58, 0x20,- 0xD4, 0xEC, 0xFD, 0x24, 0x17, 0x8B, 0x2D, 0x2B,- 0x78, 0xD6, 0x4F, 0x4F, 0xBD, 0x38, 0x75, 0x82- },- {- 0x92, 0x80, 0xF4, 0xD1, 0x15, 0x70, 0x32, 0xAB,- 0x31, 0x5C, 0x10, 0x0D, 0x63, 0x62, 0x83, 0xFB,- 0xF4, 0xFB, 0xA2, 0xFB, 0xAD, 0x0F, 0x8B, 0xC0,- 0x20, 0x72, 0x1D, 0x76, 0xBC, 0x1C, 0x89, 0x73,- 0xCE, 0xD2, 0x88, 0x71, 0xCC, 0x90, 0x7D, 0xAB,- 0x60, 0xE5, 0x97, 0x56, 0x98, 0x7B, 0x0E, 0x0F,- 0x86, 0x7F, 0xA2, 0xFE, 0x9D, 0x90, 0x41, 0xF2,- 0xC9, 0x61, 0x80, 0x74, 0xE4, 0x4F, 0xE5, 0xE9- },- {- 0x55, 0x30, 0xC2, 0xD5, 0x9F, 0x14, 0x48, 0x72,- 0xE9, 0x87, 0xE4, 0xE2, 0x58, 0xA7, 0xD8, 0xC3,- 0x8C, 0xE8, 0x44, 0xE2, 0xCC, 0x2E, 0xED, 0x94,- 0x0F, 0xFC, 0x68, 0x3B, 0x49, 0x88, 0x15, 0xE5,- 0x3A, 0xDB, 0x1F, 0xAA, 0xF5, 0x68, 0x94, 0x61,- 0x22, 0x80, 0x5A, 0xC3, 0xB8, 0xE2, 0xFE, 0xD4,- 0x35, 0xFE, 0xD6, 0x16, 0x2E, 0x76, 0xF5, 0x64,- 0xE5, 0x86, 0xBA, 0x46, 0x44, 0x24, 0xE8, 0x85- },- {- 0xDA, 0x85, 0x0A, 0x2F, 0x54, 0xE9, 0x44, 0x89,- 0x17, 0xD0, 0xDC, 0xAA, 0x63, 0x93, 0x7B, 0x95,- 0xA4, 0xDA, 0x1E, 0xAC, 0x8A, 0xF4, 0xDD, 0xF2,- 0x11, 0x3E, 0x5C, 0x8B, 0x0D, 0x4D, 0xB2, 0x66,- 0x9A, 0xF3, 0xC2, 0xAC, 0xB0, 0x80, 0x3D, 0x05,- 0x32, 0x3F, 0x3E, 0xC5, 0x5A, 0xBD, 0x33, 0xBD,- 0xF9, 0xB2, 0xBE, 0x89, 0x0E, 0xE7, 0x9E, 0x7F,- 0x3F, 0xCE, 0x4E, 0x19, 0x86, 0x96, 0xA7, 0xA3- },- {- 0xF1, 0x60, 0x95, 0xDD, 0x9F, 0x1E, 0xEB, 0x77,- 0xD5, 0xB9, 0x2F, 0x4B, 0x1F, 0xAC, 0x3A, 0x2C,- 0x5D, 0xA6, 0xAE, 0x5D, 0x0A, 0xB3, 0xF2, 0x54,- 0xE2, 0xA7, 0xFE, 0x52, 0x67, 0x24, 0x11, 0xD0,- 0x1C, 0xFA, 0x6A, 0xC0, 0x5B, 0xF3, 0x9E, 0xF6,- 0x5F, 0x4B, 0x22, 0x26, 0x4B, 0x41, 0xC3, 0xF3,- 0x63, 0x56, 0x3A, 0xBF, 0x0E, 0x92, 0x42, 0x90,- 0xC1, 0xC6, 0x80, 0xB1, 0x8A, 0xA6, 0x5B, 0x44- },- {- 0x76, 0xD0, 0x0A, 0x09, 0xC5, 0xBD, 0xD3, 0x9E,- 0xD3, 0x28, 0x71, 0x72, 0x2C, 0xFA, 0x00, 0x47,- 0x67, 0x4B, 0xEC, 0x8D, 0x35, 0x17, 0x5A, 0xF9,- 0x0D, 0x7A, 0xE9, 0x10, 0x74, 0x40, 0xA2, 0xA0,- 0x63, 0x88, 0x56, 0xD8, 0x38, 0x4C, 0x81, 0x7D,- 0x77, 0x2A, 0x4A, 0x59, 0x7A, 0x89, 0x55, 0x49,- 0xC8, 0x48, 0x66, 0x37, 0x56, 0x31, 0xCB, 0xA0,- 0x42, 0xF0, 0xEF, 0x6F, 0xFE, 0xB8, 0x9D, 0x44- },- {- 0xA6, 0x51, 0x13, 0x7B, 0x2C, 0x47, 0xFB, 0x79,- 0x51, 0xE7, 0xBD, 0xA7, 0x15, 0x43, 0xA6, 0xEB,- 0xC6, 0x24, 0x2A, 0xCA, 0xB4, 0x34, 0x7D, 0x38,- 0x8B, 0xE8, 0x35, 0x0F, 0x0C, 0x3F, 0xA3, 0xDF,- 0x8D, 0x95, 0x2C, 0x7C, 0x8A, 0x3D, 0xAF, 0x01,- 0xE0, 0x6C, 0x1D, 0xA6, 0x94, 0x96, 0xBB, 0xA8,- 0xDE, 0x62, 0xD8, 0x6B, 0x50, 0x93, 0x25, 0x6F,- 0x77, 0xA1, 0x87, 0xB5, 0x3D, 0xB0, 0x39, 0x88- },- {- 0xF3, 0x2F, 0x15, 0x0C, 0x2D, 0x67, 0xC0, 0xC4,- 0x37, 0x40, 0x1B, 0x70, 0xF6, 0x0B, 0x38, 0xF0,- 0xA3, 0xA4, 0x70, 0x59, 0x03, 0x3E, 0x75, 0x05,- 0xE6, 0x9A, 0x1D, 0x30, 0x12, 0x96, 0x03, 0x0B,- 0xC9, 0xB2, 0x95, 0x19, 0xC7, 0xF8, 0xB7, 0xD5,- 0x9A, 0x71, 0xFA, 0xB9, 0x05, 0x57, 0xDC, 0x3D,- 0xC8, 0x23, 0xFA, 0xC9, 0x5B, 0x9E, 0x85, 0xE6,- 0x52, 0x52, 0x8C, 0xBF, 0xB0, 0x1B, 0x11, 0x78- },- {- 0x27, 0x02, 0x56, 0x61, 0x36, 0xC4, 0x92, 0xF4,- 0x10, 0x89, 0xB0, 0x60, 0x10, 0x84, 0x60, 0xFA,- 0x30, 0x22, 0xC9, 0xC2, 0x5D, 0x34, 0x3B, 0xCB,- 0xD8, 0xAF, 0x2A, 0xF1, 0x9C, 0x17, 0xEF, 0x4C,- 0xA9, 0xF2, 0x22, 0x4F, 0xE7, 0xC4, 0x70, 0x0A,- 0x10, 0x19, 0x8E, 0xE5, 0x24, 0x8F, 0x30, 0x0B,- 0x54, 0x8E, 0xBF, 0x5C, 0x8E, 0x71, 0x16, 0x32,- 0x0C, 0xC8, 0x93, 0xFF, 0x7E, 0x23, 0x1F, 0xFB- },- {- 0xFF, 0xE6, 0x87, 0x9F, 0x46, 0xB6, 0x29, 0x2B,- 0x21, 0x96, 0x97, 0x2E, 0x3F, 0xDF, 0x4F, 0xE9,- 0xEA, 0x4A, 0x81, 0x6D, 0x18, 0x07, 0xA3, 0x1C,- 0xAE, 0xAD, 0x6A, 0xAC, 0x5F, 0x06, 0x3C, 0x8F,- 0xE8, 0x77, 0x79, 0x75, 0x59, 0xA7, 0x59, 0xA0,- 0x0F, 0x8B, 0xA8, 0xF6, 0x68, 0xD8, 0x96, 0x8F,- 0xB3, 0x1D, 0x8A, 0x3B, 0x84, 0x57, 0x35, 0x90,- 0x2C, 0x5E, 0x42, 0xE2, 0x89, 0xEE, 0x0B, 0x62- },- {- 0x14, 0x48, 0x84, 0x28, 0x68, 0x22, 0xC2, 0x51,- 0x2D, 0x61, 0xB0, 0x46, 0xE6, 0x74, 0xD8, 0x6B,- 0x26, 0x4E, 0x9C, 0xC6, 0x89, 0x3E, 0xFF, 0x36,- 0x73, 0x11, 0x24, 0xF5, 0x9D, 0x1A, 0x82, 0x00,- 0x1E, 0x63, 0xF3, 0xE8, 0x05, 0x1C, 0xFE, 0x52,- 0xE7, 0x59, 0x7E, 0x28, 0x73, 0x8E, 0x3C, 0x3A,- 0x70, 0xF1, 0xBE, 0xD9, 0x68, 0x0E, 0x2C, 0x0E,- 0xF3, 0x72, 0x8B, 0x10, 0xA5, 0x6E, 0xD9, 0x87- },- {- 0x17, 0xC3, 0xF1, 0x46, 0xEE, 0x8D, 0xEC, 0x3B,- 0xAF, 0xCB, 0x51, 0xC0, 0xDA, 0x37, 0xF1, 0x78,- 0x71, 0xF2, 0x34, 0xC4, 0xA0, 0xFB, 0x7F, 0xA6,- 0xD0, 0x70, 0x7A, 0x54, 0x3E, 0x3C, 0xBF, 0x3A,- 0xDB, 0x81, 0xE3, 0x0C, 0x1E, 0x0A, 0xE9, 0xE1,- 0xAC, 0xE7, 0x22, 0x3B, 0xDA, 0x99, 0xBD, 0x59,- 0x19, 0xA3, 0xCF, 0xCC, 0x92, 0xC6, 0xA7, 0x55,- 0xE4, 0x56, 0xF0, 0x93, 0x82, 0x3B, 0xD3, 0x3E- },- {- 0x1B, 0x83, 0x7A, 0xF2, 0x33, 0xA8, 0xA6, 0x8B,- 0xE7, 0x09, 0x52, 0xF7, 0x83, 0xC4, 0x96, 0x1A,- 0x81, 0x52, 0xD1, 0xE0, 0xB0, 0xFA, 0x32, 0x5F,- 0xF0, 0x86, 0xEA, 0x5B, 0x5F, 0x13, 0x12, 0xB8,- 0x9C, 0x42, 0xE0, 0x1B, 0x8C, 0x3A, 0x47, 0x7C,- 0xB5, 0x40, 0xC0, 0x6B, 0x2F, 0x37, 0xEE, 0x0E,- 0x39, 0x24, 0xD7, 0x45, 0xB4, 0xFF, 0x5C, 0x6A,- 0xF7, 0xD6, 0x1E, 0x0E, 0x37, 0xAC, 0x19, 0x31- },- {- 0x78, 0x97, 0x88, 0x0C, 0x1E, 0xB0, 0x0F, 0xD2,- 0x56, 0x7A, 0xE8, 0xA5, 0x9E, 0x64, 0x82, 0xAF,- 0xE1, 0x73, 0x49, 0xCF, 0x93, 0x92, 0x4A, 0x91,- 0x5F, 0x8C, 0x59, 0x26, 0x93, 0xD4, 0x52, 0x07,- 0x55, 0x19, 0x68, 0x9D, 0xFC, 0xD2, 0x93, 0xE3,- 0x76, 0x89, 0x7B, 0x3B, 0x0E, 0x03, 0x6F, 0x11,- 0x4F, 0xE8, 0x1E, 0xBC, 0xB3, 0x15, 0x36, 0x71,- 0xBD, 0x23, 0xBC, 0x2B, 0xED, 0x46, 0xF9, 0xC2- },- {- 0xCA, 0x7B, 0x6C, 0x77, 0x5D, 0x20, 0x1E, 0x5B,- 0x5A, 0x77, 0x22, 0x61, 0xDE, 0x52, 0x8E, 0x47,- 0x5F, 0x4B, 0xDE, 0x51, 0x76, 0x60, 0x52, 0x9F,- 0x41, 0xBE, 0xEB, 0x15, 0x78, 0xB2, 0x4B, 0xCB,- 0x94, 0xB9, 0x41, 0x0F, 0x9B, 0xF3, 0x36, 0xC1,- 0x09, 0xF9, 0xD4, 0x70, 0x93, 0xA1, 0x0B, 0xA6,- 0xDE, 0xBE, 0x50, 0x43, 0x80, 0xD9, 0xD1, 0x50,- 0x73, 0xBD, 0xD1, 0x11, 0xC8, 0xD1, 0x29, 0xFA- },- {- 0x57, 0x18, 0xE0, 0xD4, 0x5D, 0xEB, 0xC3, 0x00,- 0x2D, 0x52, 0xB2, 0x2C, 0x52, 0x73, 0x29, 0xAE,- 0x5E, 0xBF, 0x27, 0xE8, 0xFA, 0x9C, 0x8F, 0xEA,- 0xB4, 0x6C, 0x40, 0xBC, 0x64, 0x22, 0xCA, 0x03,- 0x35, 0x30, 0x4C, 0xF9, 0xE7, 0xF1, 0x41, 0xDE,- 0x7F, 0xA6, 0xAD, 0xB6, 0x78, 0x9B, 0xDB, 0xF3,- 0x8D, 0x14, 0xDA, 0xBA, 0x3E, 0x62, 0x97, 0xD2,- 0x5B, 0xF1, 0x7D, 0xE1, 0x70, 0xD6, 0xE3, 0xC8- },- {- 0x48, 0xD0, 0xED, 0x24, 0x9F, 0x90, 0x28, 0x41,- 0x99, 0x7C, 0x25, 0x5D, 0xAF, 0x99, 0x08, 0x9C,- 0x9A, 0x31, 0x24, 0x69, 0x8B, 0x16, 0x4A, 0x30,- 0x28, 0x33, 0x0F, 0xDD, 0x4C, 0xEE, 0x41, 0xE1,- 0x68, 0x3F, 0xA4, 0xD9, 0xDC, 0x66, 0xB2, 0xA7,- 0x9C, 0x8A, 0xA4, 0xC8, 0x28, 0x4E, 0x27, 0xBE,- 0xE2, 0xA4, 0x28, 0xA6, 0x71, 0x9D, 0x6E, 0xC6,- 0x55, 0xED, 0x76, 0x9D, 0xCB, 0x62, 0x4E, 0x24- },- {- 0x79, 0x4E, 0x0B, 0x64, 0xAC, 0xE1, 0xFE, 0x5A,- 0xE3, 0x79, 0x93, 0x70, 0x68, 0xD8, 0x2D, 0xF0,- 0x48, 0x68, 0x61, 0x6C, 0xAE, 0x0C, 0x17, 0xD3,- 0x05, 0x72, 0xC2, 0x02, 0x4E, 0x77, 0x48, 0x94,- 0xE0, 0x66, 0x8C, 0x47, 0x2D, 0x62, 0x3C, 0x90,- 0x3C, 0xC5, 0x88, 0x5F, 0x17, 0x84, 0x94, 0x51,- 0x10, 0x32, 0x9E, 0xB4, 0x98, 0xA8, 0x95, 0xA9,- 0xE5, 0x9A, 0x75, 0xE5, 0x27, 0x15, 0x8A, 0x5C- },- {- 0x21, 0x79, 0xAA, 0x82, 0x0E, 0x03, 0xFA, 0x33,- 0xD9, 0xBD, 0xE5, 0x56, 0x8C, 0x26, 0x2E, 0x2D,- 0x34, 0x17, 0xA4, 0x02, 0xE0, 0x7A, 0x59, 0x1F,- 0x9D, 0x55, 0x70, 0x68, 0x2D, 0xB5, 0xF9, 0xBB,- 0xA4, 0xBB, 0x9D, 0x5A, 0x82, 0xEE, 0x5E, 0xFD,- 0xB4, 0xF6, 0x5B, 0xBB, 0xFE, 0xEE, 0x2F, 0x4A,- 0xB9, 0xE4, 0x6C, 0xF2, 0xCE, 0x7E, 0x3B, 0x05,- 0x43, 0x27, 0xA7, 0x18, 0xD3, 0xF1, 0x08, 0x06- },- {- 0xB0, 0xA4, 0x8C, 0x6A, 0xDA, 0x54, 0x87, 0x25,- 0x79, 0x9B, 0x59, 0x86, 0xBA, 0xB4, 0x32, 0x69,- 0x79, 0x60, 0x92, 0x24, 0xD8, 0x97, 0x18, 0x4B,- 0x89, 0x97, 0x10, 0x4E, 0x0C, 0x6A, 0x24, 0xB3,- 0xAB, 0xE5, 0x62, 0x16, 0x54, 0x22, 0xA4, 0x5D,- 0x8A, 0xC8, 0x19, 0xB9, 0x9D, 0x37, 0x56, 0xEB,- 0xBB, 0x64, 0xF8, 0x43, 0xE3, 0xE0, 0x93, 0x4D,- 0xEC, 0x48, 0x7A, 0xED, 0x12, 0x13, 0x72, 0x79- },- {- 0x84, 0x8D, 0x7F, 0x2E, 0xAD, 0x41, 0x29, 0x1D,- 0x05, 0x38, 0x68, 0x0C, 0x64, 0x9D, 0x07, 0x89,- 0x7E, 0x45, 0xC7, 0x0A, 0x0A, 0xA4, 0xF9, 0x35,- 0x3F, 0x82, 0xC3, 0xF6, 0xFB, 0xB8, 0xE8, 0x48,- 0x9C, 0x75, 0x3E, 0x90, 0xDB, 0xE8, 0x89, 0x00,- 0x41, 0xA1, 0xAE, 0xEF, 0x84, 0xCD, 0x31, 0x36,- 0x43, 0x4F, 0x53, 0x0E, 0x9D, 0xD9, 0xC2, 0x3F,- 0xA5, 0x4F, 0xE1, 0x24, 0xEA, 0xFB, 0x72, 0xAD- },- {- 0x0E, 0xD1, 0x46, 0x26, 0xEE, 0x6D, 0x0C, 0x8E,- 0xD3, 0xF0, 0xC2, 0x00, 0xC1, 0x29, 0x85, 0x0F,- 0xFF, 0x76, 0x31, 0x8F, 0xFF, 0xA1, 0xDD, 0xD7,- 0xDD, 0x56, 0x3A, 0x01, 0xB7, 0x77, 0x97, 0x06,- 0x86, 0x2B, 0x23, 0x99, 0x59, 0xB6, 0x15, 0xAE,- 0x2E, 0xBE, 0x27, 0xC4, 0x50, 0x37, 0xE6, 0xFF,- 0xAF, 0x99, 0x14, 0xDA, 0x8F, 0xF2, 0x77, 0x2B,- 0xA5, 0xEE, 0x08, 0x11, 0xCD, 0x9E, 0xD5, 0x32- },- {- 0x52, 0x03, 0xC0, 0x76, 0x38, 0xC4, 0xB6, 0x5F,- 0x78, 0x43, 0x1E, 0x8B, 0x02, 0xE2, 0x0F, 0x6D,- 0x68, 0x3F, 0x19, 0xFA, 0x8F, 0x83, 0xB5, 0x13,- 0x4C, 0xD0, 0xF4, 0xE4, 0x68, 0xC9, 0x7E, 0xAC,- 0xB5, 0x26, 0x7C, 0x7D, 0x3E, 0xAB, 0x58, 0x3C,- 0xCA, 0xAC, 0xD0, 0xDB, 0xA4, 0xD5, 0x8A, 0xCE,- 0x52, 0x19, 0x3A, 0x51, 0x78, 0xA7, 0xB1, 0x2D,- 0x27, 0x95, 0xF5, 0xFD, 0xE8, 0xA3, 0x7B, 0xB9- },- {- 0x48, 0xBE, 0x43, 0xD5, 0xE0, 0x04, 0x36, 0x88,- 0xDF, 0x35, 0x32, 0xF7, 0x12, 0x1A, 0xFF, 0xFA,- 0x16, 0x7D, 0xAB, 0xE4, 0xA4, 0x84, 0xFB, 0x75,- 0xA0, 0x3A, 0xF3, 0x04, 0xA5, 0xC6, 0xF8, 0x25,- 0xF3, 0x6C, 0xEC, 0xCB, 0xBB, 0xC0, 0x75, 0xEE,- 0xF3, 0x20, 0xC4, 0xCD, 0x8D, 0x7E, 0xF8, 0xCB,- 0x49, 0xE6, 0xDD, 0x59, 0x73, 0x37, 0x9E, 0xEC,- 0x4C, 0x23, 0x3C, 0x45, 0x43, 0xD1, 0x32, 0xCE- },- {- 0xB5, 0x46, 0x4E, 0x6A, 0xBA, 0xF5, 0xD3, 0xD4,- 0x08, 0x3D, 0x1D, 0x7D, 0x2A, 0x8B, 0x0B, 0xAB,- 0x78, 0xB6, 0x17, 0x09, 0x50, 0x0B, 0xBF, 0x77,- 0x82, 0x3F, 0x60, 0x2D, 0x57, 0xD5, 0x13, 0xCA,- 0x9E, 0x9F, 0xFF, 0x65, 0xEF, 0xAA, 0x89, 0x9C,- 0xFE, 0x7B, 0xF8, 0x8A, 0x01, 0x88, 0x82, 0x9C,- 0x24, 0xE4, 0x98, 0xAD, 0x00, 0x23, 0x5A, 0xBE,- 0x8E, 0xEF, 0xA7, 0x19, 0xFA, 0x6A, 0xE6, 0xF6- },- {- 0xAF, 0xE5, 0xE5, 0xE8, 0x3F, 0x19, 0xAD, 0xAD,- 0x9E, 0x95, 0x90, 0x3E, 0xA9, 0xB2, 0x98, 0x10,- 0x7D, 0x37, 0xDD, 0x38, 0x63, 0x2C, 0x95, 0x90,- 0xBB, 0xFF, 0xC6, 0x24, 0xD4, 0xDE, 0x95, 0x8C,- 0xB6, 0xB6, 0x1A, 0xF0, 0x80, 0xF0, 0x37, 0xAD,- 0x17, 0xD0, 0x35, 0xB6, 0xBF, 0x58, 0xF7, 0x80,- 0xFA, 0xDF, 0x70, 0xF3, 0xC9, 0x59, 0x66, 0x8A,- 0x1B, 0x47, 0x21, 0x98, 0xA5, 0x9A, 0x8A, 0x00- },- {- 0xEF, 0xA2, 0xC7, 0xC8, 0x02, 0xE2, 0x10, 0xD2,- 0xD8, 0x0F, 0xB3, 0x50, 0xB3, 0xC2, 0xCB, 0x31,- 0x56, 0x13, 0x18, 0x11, 0xE7, 0x18, 0xEE, 0xE5,- 0xC9, 0xC6, 0x64, 0x0F, 0x87, 0x68, 0x2A, 0x55,- 0x81, 0x2B, 0x10, 0xF4, 0x03, 0x10, 0xBA, 0xA7,- 0xB8, 0x2B, 0x27, 0x3E, 0xF3, 0xAC, 0xC5, 0x5F,- 0xED, 0xE0, 0xB5, 0xF1, 0x94, 0x9D, 0xE4, 0x29,- 0x3D, 0x91, 0xB5, 0x89, 0xA2, 0x17, 0x5F, 0xF7- },- {- 0xD6, 0xC6, 0x2A, 0x61, 0x82, 0x71, 0xF3, 0xBC,- 0xBE, 0x00, 0x79, 0x24, 0xA0, 0xC9, 0x81, 0x2F,- 0x83, 0x17, 0x44, 0x5F, 0xB6, 0xFB, 0x19, 0xEB,- 0x58, 0x9A, 0x62, 0x9F, 0x51, 0x2F, 0xB3, 0x8A,- 0x0B, 0x4E, 0x24, 0x7D, 0xEA, 0x88, 0xC5, 0x6A,- 0x1B, 0xAF, 0x17, 0x88, 0x33, 0x65, 0xB4, 0x36,- 0xF2, 0x84, 0x46, 0xFF, 0x66, 0xEA, 0x43, 0x18,- 0x0B, 0xD0, 0x1E, 0xB5, 0xA6, 0x50, 0x9B, 0xD5- },- {- 0x0B, 0x41, 0x16, 0x6B, 0xE6, 0x2F, 0x65, 0xE1,- 0x93, 0xB3, 0xB8, 0x65, 0xE6, 0xC4, 0x7A, 0xAD,- 0x26, 0x0A, 0xF5, 0xFC, 0xEE, 0xC9, 0xAB, 0x44,- 0xAB, 0xAA, 0x46, 0x0A, 0x0C, 0x02, 0x46, 0xB6,- 0xC6, 0x9B, 0x67, 0xD7, 0x1D, 0x3A, 0xDF, 0xEC,- 0x60, 0xDC, 0x8E, 0x77, 0x37, 0x2F, 0x09, 0x49,- 0x52, 0x34, 0x4F, 0xE1, 0x0C, 0x0D, 0x59, 0xEF,- 0xEC, 0x0E, 0x11, 0xC4, 0xA5, 0x16, 0x93, 0x6D- },- {- 0x79, 0xD5, 0xF9, 0xFF, 0xC0, 0x5E, 0xCF, 0x33,- 0x7D, 0xE9, 0xF1, 0xE0, 0xF1, 0xD8, 0x9B, 0x30,- 0xAC, 0xFE, 0xBB, 0xB8, 0x8A, 0x69, 0x35, 0x86,- 0x78, 0x18, 0xCD, 0x8D, 0x45, 0xDA, 0x3D, 0x25,- 0x18, 0xDE, 0x61, 0xA7, 0xFE, 0x28, 0x75, 0x1B,- 0x61, 0x8F, 0x7A, 0x87, 0x5E, 0x11, 0x89, 0x8F,- 0xFF, 0x74, 0x15, 0x7A, 0xB9, 0x06, 0x81, 0xBD,- 0x53, 0xFA, 0x69, 0x62, 0x67, 0x1E, 0xD9, 0x9D- },- {- 0xBE, 0xA9, 0x83, 0xD7, 0x6F, 0x24, 0xB1, 0xEE,- 0xDE, 0x1D, 0x06, 0x71, 0x48, 0x05, 0x76, 0x8F,- 0xAA, 0xAD, 0x47, 0x08, 0xC9, 0xA4, 0xFF, 0x9C,- 0xD2, 0x42, 0x2F, 0x70, 0x6B, 0x6F, 0x0C, 0x30,- 0x6D, 0x8B, 0x67, 0xF3, 0x40, 0x89, 0xC6, 0x5E,- 0xD3, 0x88, 0x0C, 0x75, 0xF6, 0x7B, 0xBC, 0x4D,- 0x89, 0xAD, 0x87, 0x12, 0x0A, 0x77, 0xD0, 0xFF,- 0xE4, 0x36, 0xFB, 0x7B, 0x58, 0xB2, 0xCA, 0x41- },- {- 0x46, 0x6F, 0xD9, 0x15, 0xEF, 0xD9, 0x50, 0xBC,- 0x96, 0x65, 0x78, 0xCD, 0x92, 0xC6, 0x85, 0x92,- 0x9D, 0x7B, 0x51, 0xA6, 0x3D, 0xB1, 0x42, 0xC7,- 0xB9, 0xA9, 0x3D, 0x16, 0x52, 0x04, 0x95, 0x31,- 0x9B, 0x87, 0xF6, 0x58, 0xE6, 0xAF, 0xDA, 0x1B,- 0x42, 0x77, 0x3E, 0x2D, 0x49, 0xDA, 0x81, 0x45,- 0x94, 0xA5, 0x54, 0x90, 0x89, 0xEF, 0xB1, 0xF3,- 0xAB, 0x5F, 0x15, 0x90, 0xCA, 0x0A, 0x02, 0xAF- },- {- 0xF6, 0x46, 0x11, 0x13, 0x7A, 0xD2, 0x95, 0x46,- 0x70, 0xEA, 0xEC, 0xD6, 0x26, 0xD2, 0x12, 0xCF,- 0xC5, 0xB9, 0xF6, 0xBB, 0x41, 0xAA, 0xEB, 0xB1,- 0xD7, 0x1E, 0x89, 0x79, 0x2E, 0xB1, 0x31, 0x7A,- 0xED, 0xC6, 0x38, 0x13, 0xFE, 0x63, 0xDE, 0x40,- 0x17, 0x98, 0xDF, 0x75, 0x6C, 0xA1, 0xF2, 0x20,- 0x35, 0xA0, 0xFA, 0xBD, 0x37, 0xFB, 0x11, 0x03,- 0x43, 0x7F, 0x89, 0x1E, 0xAD, 0x5E, 0x64, 0x29- },- {- 0x32, 0xE1, 0xF9, 0x38, 0xA2, 0x7F, 0xAA, 0xD8,- 0xAC, 0x4A, 0x13, 0xFD, 0x4F, 0x6A, 0x8B, 0xF3,- 0xDA, 0xBE, 0x4B, 0xC7, 0x2A, 0xF1, 0x1C, 0x8F,- 0x0E, 0x1A, 0x06, 0x56, 0x7E, 0xD7, 0x04, 0xB8,- 0xE7, 0x8E, 0x11, 0x40, 0xA0, 0xC7, 0x72, 0x4E,- 0x3E, 0xFB, 0x70, 0xD2, 0x38, 0x07, 0xCF, 0x38,- 0xE6, 0x27, 0xE3, 0x26, 0xAF, 0xC1, 0x64, 0xCD,- 0xED, 0x52, 0xB4, 0x41, 0x39, 0xFF, 0xB3, 0xF3- },- {- 0x48, 0x33, 0xAC, 0x92, 0xE3, 0x02, 0xAC, 0x2B,- 0x67, 0xB0, 0x2B, 0x88, 0x27, 0x14, 0x3B, 0xAD,- 0xA1, 0x5C, 0xED, 0x22, 0x0E, 0x1D, 0x1F, 0x5B,- 0x71, 0x12, 0x0C, 0x51, 0xEE, 0x54, 0xC1, 0x9D,- 0x30, 0x1F, 0x29, 0x60, 0xBD, 0xB5, 0xA2, 0xCE,- 0x27, 0xD4, 0x41, 0xD1, 0x4A, 0xF0, 0x80, 0xCB,- 0x01, 0x0A, 0x8A, 0x23, 0xEE, 0xFF, 0x58, 0x11,- 0xDF, 0xA4, 0x4D, 0x1D, 0x7B, 0x35, 0x8B, 0x48- },- {- 0x9A, 0x03, 0x88, 0xCE, 0xE1, 0xAD, 0x01, 0x46,- 0x17, 0x7C, 0x48, 0xB5, 0xA0, 0x8A, 0x2D, 0xB3,- 0xC4, 0x89, 0xE8, 0x4C, 0xE2, 0xAB, 0xA8, 0xC6,- 0x45, 0x11, 0x2A, 0x02, 0x1E, 0x41, 0x1C, 0xF8,- 0x29, 0x12, 0x7F, 0xA2, 0xF1, 0xD1, 0xAE, 0x1B,- 0xAF, 0x3A, 0x33, 0xEA, 0x53, 0x09, 0x84, 0x77,- 0xA7, 0xD1, 0x2B, 0xA7, 0x48, 0xD2, 0xAF, 0x24,- 0xD1, 0x66, 0x02, 0xE9, 0x19, 0x07, 0x76, 0x23- },- {- 0xE3, 0xDF, 0x00, 0x74, 0xA9, 0x37, 0x35, 0x13,- 0x0D, 0x99, 0x22, 0xD2, 0xBE, 0x91, 0x6F, 0x35,- 0x34, 0x3D, 0x98, 0x8C, 0xE5, 0x9D, 0x76, 0x97,- 0x15, 0xA9, 0x83, 0xB4, 0xBA, 0x80, 0x7C, 0xE1,- 0xEE, 0x70, 0xA3, 0x13, 0xE5, 0x92, 0x31, 0x58,- 0x4F, 0x55, 0x6E, 0xBB, 0xA1, 0xB9, 0x0B, 0x1B,- 0xB6, 0xA6, 0xC5, 0x81, 0xA4, 0xB4, 0x7C, 0x3F,- 0xF5, 0x21, 0x89, 0x65, 0x2A, 0xAB, 0x36, 0xF5- },- {- 0x91, 0x91, 0xCF, 0x46, 0x1B, 0x69, 0x59, 0xBE,- 0xC9, 0x3E, 0xAE, 0x7F, 0xB1, 0xC6, 0xE3, 0x70,- 0x73, 0xD1, 0xA6, 0x15, 0x27, 0xAD, 0x75, 0xD1,- 0x0B, 0x7F, 0x89, 0x49, 0xD9, 0xB8, 0xAF, 0x70,- 0xA2, 0x3A, 0xD1, 0x31, 0x2E, 0xD5, 0x1F, 0x70,- 0xF0, 0xE9, 0xDF, 0x60, 0x1D, 0xDA, 0xE2, 0x38,- 0x90, 0x6C, 0x0F, 0xE3, 0xF7, 0x66, 0xB1, 0x4F,- 0x11, 0x3B, 0x26, 0xBC, 0x85, 0x42, 0xD1, 0xD2- },- {- 0x2A, 0x8B, 0xAD, 0xE2, 0x72, 0xEE, 0x7A, 0xC6,- 0x43, 0xC5, 0xE3, 0x71, 0x47, 0xFA, 0xAC, 0x92,- 0xC3, 0x97, 0x0B, 0xD3, 0x86, 0x2F, 0x53, 0x1E,- 0x5D, 0xCE, 0xA5, 0xCE, 0xAC, 0xD1, 0x83, 0x74,- 0x53, 0xAA, 0x49, 0x8D, 0x78, 0x5B, 0x4D, 0x1F,- 0x89, 0xE1, 0xB2, 0xA7, 0x39, 0xCA, 0x4A, 0x38,- 0x49, 0x87, 0x30, 0x27, 0x46, 0xB4, 0xF1, 0x13,- 0x42, 0x43, 0x02, 0xC4, 0xA1, 0xE0, 0xF9, 0xDF- },- {- 0x32, 0x3E, 0x67, 0x93, 0xC7, 0xDD, 0x9B, 0x4D,- 0x7B, 0xB7, 0xFB, 0xF2, 0x15, 0x31, 0xD3, 0x7F,- 0x72, 0x64, 0x53, 0x2C, 0x58, 0xF1, 0x22, 0x55,- 0x48, 0xD0, 0x6E, 0x69, 0x40, 0xC6, 0x3E, 0x91,- 0x27, 0x09, 0x90, 0xE7, 0xF5, 0x64, 0x32, 0x03,- 0xC9, 0x87, 0x64, 0x7E, 0x5C, 0xF6, 0x61, 0x03,- 0xE7, 0x9B, 0x71, 0x4C, 0x58, 0x1B, 0xD8, 0x77,- 0x2E, 0x19, 0xD0, 0xF0, 0x05, 0xDC, 0x86, 0x33- },- {- 0xF9, 0x22, 0x07, 0x6D, 0x29, 0x5D, 0x23, 0xE2,- 0x98, 0x58, 0x30, 0xAA, 0xD2, 0xF2, 0x3F, 0x65,- 0x2F, 0x7F, 0x4D, 0xB4, 0x2C, 0x11, 0x9E, 0xD2,- 0x20, 0xA5, 0x45, 0x14, 0x88, 0xA4, 0x53, 0xF5,- 0x9F, 0xA8, 0xA2, 0xDE, 0x23, 0x03, 0x00, 0x0D,- 0x6B, 0xFD, 0x8C, 0x48, 0x23, 0xA8, 0x5F, 0xAD,- 0xB4, 0xFB, 0x8E, 0x7E, 0xAC, 0x12, 0x2B, 0xF0,- 0x12, 0x47, 0xD7, 0x6F, 0x65, 0x24, 0x7D, 0x45- },- {- 0xDC, 0x40, 0x00, 0x95, 0x60, 0x95, 0x92, 0x91,- 0x55, 0x8E, 0xBE, 0x07, 0x20, 0x64, 0xCE, 0x67,- 0x12, 0xC9, 0x21, 0xB5, 0x40, 0x9B, 0x44, 0xE0,- 0x4F, 0x9A, 0x56, 0x5E, 0xEA, 0xDD, 0x39, 0xA7,- 0x71, 0x6E, 0x21, 0xB4, 0x6D, 0xD8, 0x61, 0x65,- 0x17, 0xA2, 0x1A, 0x0C, 0x03, 0x41, 0x9E, 0x94,- 0xDB, 0x82, 0x0A, 0x35, 0x3F, 0x15, 0x2D, 0x10,- 0x83, 0x84, 0xBE, 0x94, 0x70, 0x09, 0x3F, 0x89- },- {- 0x7F, 0xA4, 0xBE, 0x91, 0xCA, 0x52, 0x07, 0xFF,- 0x08, 0x7D, 0xE9, 0x2F, 0x1D, 0xB0, 0x9B, 0xF7,- 0x1A, 0x67, 0x87, 0x8B, 0xED, 0x19, 0x3A, 0x5C,- 0x2C, 0xC4, 0xE3, 0x53, 0x23, 0xB8, 0xDF, 0x99,- 0xA2, 0x6E, 0xCB, 0x98, 0x88, 0xD7, 0xB3, 0x4A,- 0x73, 0x9D, 0x64, 0x1A, 0x0E, 0xCD, 0x0A, 0x66,- 0x47, 0xA6, 0xA0, 0x64, 0x26, 0xF3, 0xCC, 0x1F,- 0xEF, 0xDF, 0x90, 0x69, 0x92, 0x2F, 0xAE, 0x4C- },- {- 0xBA, 0xD3, 0xCD, 0x75, 0x90, 0x5D, 0x7B, 0xFD,- 0xA3, 0x32, 0x2B, 0x44, 0xA7, 0xD3, 0x58, 0x87,- 0x14, 0xD3, 0x33, 0xEE, 0x86, 0x85, 0x5A, 0x87,- 0x27, 0x47, 0xE7, 0x04, 0xF6, 0x11, 0x94, 0x84,- 0xBD, 0xB7, 0xD0, 0x77, 0xFA, 0x08, 0xED, 0xC4,- 0xA7, 0x9D, 0xE0, 0xF4, 0x3F, 0xCA, 0x8D, 0x43,- 0x6E, 0x8A, 0x10, 0x08, 0x57, 0xF5, 0x9B, 0xC7,- 0xB0, 0x55, 0xB9, 0x87, 0xF9, 0x7A, 0xC6, 0xB9- },- {- 0xB7, 0xDE, 0xE8, 0xE8, 0x33, 0x9D, 0xB2, 0x97,- 0xFD, 0xAA, 0x3C, 0xA5, 0xC1, 0xDC, 0x19, 0x88,- 0xD9, 0x7F, 0x5F, 0xB6, 0x20, 0x8C, 0x64, 0xDE,- 0xA9, 0x5E, 0x1C, 0x78, 0xF3, 0x37, 0xCE, 0x20,- 0xA2, 0xB4, 0xDF, 0x17, 0xA7, 0xB8, 0x23, 0x6A,- 0x90, 0xD6, 0x28, 0x67, 0x33, 0x16, 0x35, 0x72,- 0xC8, 0x67, 0xD9, 0x3D, 0xE8, 0x9E, 0xF6, 0x2F,- 0xA0, 0x5D, 0xAB, 0x70, 0x7E, 0xC3, 0xA7, 0x70- },- {- 0xA0, 0xF7, 0xE9, 0x3C, 0xF3, 0x25, 0x02, 0xB9,- 0xFD, 0x79, 0xEC, 0x20, 0x54, 0x62, 0x07, 0xF3,- 0x31, 0xC5, 0x29, 0x9E, 0xCE, 0xF3, 0x50, 0xD6,- 0x6E, 0xA8, 0x55, 0xC8, 0x7F, 0xBD, 0xDF, 0x18,- 0xE6, 0x91, 0xC2, 0x0D, 0x04, 0x5A, 0x30, 0x8F,- 0x83, 0xF6, 0xCB, 0x8F, 0xCA, 0x69, 0xD7, 0xE2,- 0xB3, 0x9B, 0x34, 0xD2, 0xF8, 0x77, 0x27, 0x6C,- 0x19, 0x6B, 0xF5, 0x14, 0xBA, 0xC6, 0x02, 0x70- },- {- 0x6F, 0x50, 0x93, 0xCF, 0xC8, 0x83, 0x00, 0xBF,- 0x68, 0x8E, 0x88, 0x4B, 0x4C, 0x5E, 0xC2, 0xC3,- 0x1A, 0x8C, 0xC2, 0x8D, 0x63, 0x31, 0xAD, 0x7C,- 0xA7, 0x1D, 0x97, 0x60, 0x21, 0x64, 0x82, 0x05,- 0x28, 0x15, 0xD4, 0x4F, 0xC6, 0x9E, 0x18, 0xA8,- 0xDC, 0x8B, 0xD7, 0x1B, 0x31, 0xF2, 0xB5, 0x89,- 0xA7, 0xC0, 0x78, 0x0B, 0x61, 0x99, 0x38, 0x5F,- 0x8D, 0xAE, 0x6C, 0x9B, 0x79, 0x74, 0xC4, 0xCB- },- {- 0x3C, 0xFF, 0x46, 0xAC, 0x35, 0x46, 0xF6, 0x5A,- 0xD7, 0xA7, 0x20, 0x87, 0x1A, 0xFA, 0x20, 0xA9,- 0x21, 0x6D, 0xDA, 0x5C, 0x45, 0x18, 0x81, 0x56,- 0xA5, 0xBB, 0xED, 0xF2, 0x15, 0x46, 0xD4, 0xBB,- 0x39, 0x40, 0xB2, 0x1A, 0x41, 0xA3, 0x94, 0x03,- 0xE3, 0xCF, 0xD5, 0xE7, 0xA0, 0xE7, 0x90, 0x4D,- 0xA9, 0x5F, 0x4D, 0x8E, 0x0C, 0x5B, 0xF5, 0xB7,- 0x0E, 0xB0, 0x29, 0x55, 0x6E, 0xFD, 0x49, 0x7E- },- {- 0xAF, 0x66, 0x8A, 0x80, 0x5E, 0x6D, 0x70, 0x4B,- 0x1E, 0x58, 0x1F, 0x1E, 0x8E, 0x3C, 0x00, 0xCF,- 0x4C, 0xF3, 0xE5, 0x46, 0x14, 0x7C, 0x40, 0x6D,- 0x17, 0xCA, 0x97, 0x4D, 0x19, 0xA0, 0x14, 0xC7,- 0x8B, 0x44, 0xE7, 0x2D, 0xDE, 0xEB, 0x65, 0x26,- 0x07, 0xE8, 0x6D, 0x69, 0x02, 0x59, 0xDC, 0xAB,- 0x0D, 0xDA, 0x81, 0xC7, 0x7C, 0x7E, 0xE2, 0x72,- 0x1E, 0x82, 0xBB, 0xB1, 0x39, 0x43, 0x07, 0x1D- },- {- 0x79, 0xDD, 0xEB, 0x5C, 0x54, 0xDE, 0xD1, 0xE4,- 0x48, 0x40, 0x71, 0xC4, 0x6B, 0xB4, 0x28, 0x02,- 0xD2, 0x3B, 0x3A, 0x08, 0xC1, 0x23, 0x11, 0xBE,- 0x36, 0x3C, 0x7C, 0x7A, 0x02, 0x5A, 0x17, 0x64,- 0xC8, 0xD8, 0x50, 0x69, 0xFD, 0xA8, 0xD5, 0x17,- 0x77, 0x7D, 0x8D, 0xD8, 0x09, 0xE3, 0xD4, 0xA9,- 0x56, 0x04, 0x1A, 0x70, 0x79, 0xF9, 0x16, 0x7B,- 0x0F, 0xE9, 0x71, 0x2E, 0x5F, 0x12, 0x29, 0xF5- },- {- 0x99, 0x8E, 0x82, 0xF4, 0x26, 0x3D, 0x53, 0xAE,- 0xDA, 0xC9, 0x39, 0xEB, 0xB6, 0xEB, 0x8B, 0x19,- 0x69, 0x74, 0x6C, 0xB8, 0x15, 0xBD, 0x72, 0x1F,- 0x17, 0xA4, 0x8B, 0xEE, 0x9E, 0xCF, 0xF2, 0xFE,- 0x59, 0x8C, 0x53, 0x9C, 0x41, 0x9A, 0x60, 0xE0,- 0xD5, 0xA0, 0x4F, 0x1C, 0xB5, 0x23, 0xA2, 0xFD,- 0x05, 0x38, 0xBB, 0x17, 0x8E, 0x44, 0x75, 0x8D,- 0x31, 0x59, 0xAB, 0x9E, 0x02, 0x84, 0x01, 0xA3- },- {- 0x33, 0x96, 0xCF, 0xD5, 0xCD, 0xE1, 0x4A, 0xEC,- 0x1A, 0xAE, 0xD3, 0xE1, 0x22, 0x52, 0xCF, 0xD6,- 0xE3, 0x42, 0xED, 0x25, 0x5E, 0x8E, 0x9E, 0x1B,- 0xE1, 0x0F, 0x1F, 0x27, 0x38, 0x77, 0xF3, 0x63,- 0x33, 0x81, 0xE3, 0xC9, 0x61, 0xE6, 0x7E, 0xC4,- 0x1E, 0x8F, 0x9E, 0x16, 0x11, 0x0F, 0xC0, 0x3D,- 0xDE, 0x88, 0xBF, 0xC0, 0x96, 0xFC, 0x15, 0x14,- 0x46, 0x1D, 0x70, 0xD0, 0xBE, 0xCE, 0x0A, 0xF6- },- {- 0x77, 0x7D, 0x9D, 0xC5, 0x5A, 0x2F, 0x57, 0xA4,- 0x6E, 0xA0, 0x6A, 0x2F, 0x4C, 0xB9, 0x76, 0x0D,- 0x00, 0xD7, 0xA8, 0x62, 0xD0, 0xA2, 0xAA, 0x19,- 0x46, 0x7B, 0x57, 0x0F, 0x7C, 0x7D, 0x5E, 0xA7,- 0x62, 0x9A, 0x95, 0xEB, 0x20, 0x0E, 0x1F, 0x9D,- 0xB0, 0x66, 0x10, 0xCF, 0x8E, 0x30, 0xD5, 0xE6,- 0xAD, 0x0A, 0x7B, 0x63, 0x29, 0x77, 0xFC, 0x21,- 0xBB, 0x17, 0x89, 0x67, 0xF3, 0xB0, 0xE0, 0x9B- },- {- 0x32, 0xEE, 0x35, 0x7F, 0xC9, 0x16, 0x36, 0xA8,- 0x55, 0xBA, 0x01, 0xA0, 0xB8, 0xDA, 0x6F, 0x35,- 0x53, 0xB1, 0xD5, 0x20, 0xAD, 0xCF, 0xE8, 0xFE,- 0x9D, 0xEB, 0xCC, 0xB2, 0x6C, 0x5C, 0x4C, 0xE8,- 0x50, 0x5B, 0xB1, 0xEF, 0xB5, 0xED, 0x5B, 0xAA,- 0x4C, 0x52, 0x45, 0xB5, 0x0D, 0x74, 0x46, 0x3F,- 0x07, 0x67, 0xB2, 0xC7, 0x83, 0xC4, 0x7A, 0x93,- 0xB0, 0xFD, 0xA6, 0x68, 0x95, 0x69, 0x3C, 0xE6- },- {- 0x34, 0x0C, 0x0A, 0x7C, 0xE4, 0x96, 0xFE, 0xBD,- 0xA1, 0x3F, 0xA2, 0x40, 0x7A, 0x21, 0xDC, 0x19,- 0x83, 0x9B, 0xED, 0xAE, 0x1A, 0x08, 0x6A, 0xD0,- 0xFE, 0xD3, 0x91, 0x7D, 0xF9, 0xBF, 0x40, 0x94,- 0x4A, 0x78, 0x7F, 0x64, 0x1E, 0x90, 0xDD, 0xBA,- 0xE0, 0x3A, 0x93, 0x37, 0x72, 0x3E, 0x51, 0x66,- 0x8F, 0xB8, 0x93, 0x77, 0x2C, 0x0F, 0xBD, 0xB3,- 0xEB, 0x7E, 0xF7, 0x90, 0xDF, 0xCB, 0xB9, 0xAB- },- {- 0xD8, 0x6A, 0x5B, 0xAA, 0x33, 0x65, 0xAB, 0xD8,- 0xF4, 0x42, 0xCD, 0x6E, 0xBB, 0x93, 0x11, 0x38,- 0x19, 0xF0, 0xB4, 0x60, 0x61, 0xE1, 0x34, 0x04,- 0xEF, 0xAA, 0x1A, 0x58, 0xE1, 0xFF, 0x27, 0x2A,- 0xD4, 0xBF, 0xD3, 0x08, 0x15, 0xAD, 0xD8, 0x8A,- 0xD9, 0x8F, 0xCE, 0x9A, 0xF0, 0x18, 0x37, 0x4C,- 0xA6, 0x0D, 0x89, 0x79, 0x0F, 0x71, 0xA6, 0x07,- 0x5F, 0x3D, 0x68, 0xD3, 0x20, 0x21, 0xA9, 0xEB- },- {- 0xA6, 0x7E, 0x6E, 0xC6, 0x57, 0xC9, 0x5E, 0xAB,- 0x3C, 0x3C, 0x32, 0xE4, 0x1F, 0xBF, 0x39, 0xCF,- 0x20, 0x33, 0xAB, 0x4B, 0xE2, 0xE2, 0xB8, 0x21,- 0x10, 0x4A, 0xDB, 0xE6, 0x9D, 0x16, 0xE9, 0x48,- 0xDC, 0xE4, 0xC4, 0xC6, 0xA3, 0xCF, 0x22, 0x76,- 0x90, 0x1F, 0x7D, 0x4F, 0xFD, 0x69, 0x65, 0x46,- 0x49, 0x88, 0x2C, 0x01, 0x4D, 0x2C, 0x10, 0xA1,- 0x30, 0x2B, 0x79, 0xC6, 0x15, 0x69, 0xCD, 0x36- },- {- 0x55, 0xCE, 0x19, 0x2A, 0xE4, 0xB3, 0xEA, 0xF8,- 0x55, 0x59, 0x0E, 0x2D, 0x44, 0xE6, 0x25, 0xD9,- 0xBA, 0x14, 0x6E, 0xB7, 0x50, 0x48, 0xE6, 0xB5,- 0x6E, 0x02, 0x50, 0x31, 0xEF, 0xBA, 0x0B, 0xDA,- 0x8A, 0xAA, 0xFA, 0x04, 0x70, 0xB7, 0xAC, 0x3D,- 0x40, 0x6E, 0x5A, 0xBA, 0x3E, 0x83, 0x2F, 0x27,- 0xA5, 0x07, 0x24, 0x6D, 0x1B, 0x5F, 0x33, 0xDE,- 0xA1, 0xF7, 0x24, 0xE2, 0xB8, 0x1B, 0x0C, 0x98- },- {- 0xB3, 0xA2, 0x0C, 0x1F, 0xB0, 0xB4, 0xF0, 0xD3,- 0x77, 0x26, 0xC2, 0x3B, 0x58, 0x77, 0xDD, 0x8E,- 0x72, 0xF6, 0x98, 0x86, 0xE0, 0x9A, 0x8C, 0x68,- 0xCF, 0xC3, 0x01, 0xD2, 0xA3, 0xF2, 0xF9, 0x5C,- 0xEF, 0xCF, 0xAB, 0xB8, 0x88, 0x99, 0x03, 0xC7,- 0x32, 0xF4, 0xE8, 0x14, 0x32, 0xD3, 0xF6, 0x78,- 0xCC, 0xDF, 0xC3, 0x98, 0xAC, 0xD8, 0xA2, 0xF0,- 0x66, 0x41, 0x10, 0x04, 0x50, 0xD8, 0x9F, 0x32- },- {- 0xF7, 0x27, 0x2D, 0x93, 0xC7, 0x01, 0x2D, 0x38,- 0xB2, 0x7F, 0x0C, 0x9A, 0xE2, 0x01, 0x79, 0x58,- 0xBB, 0xA6, 0x66, 0xA9, 0xDE, 0x1E, 0x88, 0x12,- 0xE9, 0x74, 0x37, 0xAE, 0xB2, 0xE0, 0x3C, 0x99,- 0x94, 0x38, 0xF0, 0xBE, 0x33, 0x3D, 0x09, 0xAD,- 0xDB, 0xCF, 0xAA, 0xC7, 0xAA, 0x73, 0xF7, 0xB6,- 0xCC, 0xEC, 0x67, 0xDC, 0x07, 0x79, 0x98, 0xDE,- 0xDB, 0x8C, 0x13, 0x32, 0xBA, 0xC0, 0xFB, 0xA8- },- {- 0x1F, 0xE7, 0xB3, 0xDE, 0x34, 0xC0, 0x47, 0x9C,- 0xA8, 0x40, 0x5F, 0x3C, 0xBC, 0xD2, 0xDB, 0x64,- 0xBB, 0x18, 0xDB, 0xB2, 0x91, 0xA5, 0xFE, 0xAA,- 0x16, 0xC5, 0x22, 0x8C, 0x93, 0xEE, 0x21, 0xC7,- 0x11, 0xD6, 0x8A, 0x01, 0x0C, 0x2A, 0xE8, 0x80,- 0x05, 0xEB, 0xAC, 0x95, 0x9E, 0x3A, 0x32, 0x24,- 0x52, 0xF8, 0x62, 0xDD, 0xE9, 0x4B, 0xB9, 0x41,- 0x81, 0x3E, 0x52, 0x4D, 0x23, 0x47, 0xFE, 0xEE- },- {- 0x4E, 0xE1, 0xD3, 0x88, 0x05, 0xC3, 0x22, 0x84,- 0xEC, 0xEB, 0xE9, 0x2E, 0x3D, 0xF6, 0xCD, 0x98,- 0xC7, 0xD6, 0x68, 0x0E, 0xAB, 0x0D, 0x68, 0x66,- 0x4F, 0x96, 0x70, 0x6C, 0x45, 0x63, 0x3B, 0x1E,- 0x26, 0x82, 0x22, 0xAA, 0x5A, 0x52, 0x79, 0xEF,- 0x01, 0xFC, 0x28, 0x54, 0x32, 0xAB, 0xEE, 0xD7,- 0x4B, 0xA3, 0xDF, 0x18, 0x9F, 0x50, 0xA9, 0x89,- 0xD5, 0x8E, 0x71, 0x30, 0x62, 0x2D, 0xAA, 0x59- },- {- 0x0E, 0x14, 0x05, 0x87, 0x1C, 0x87, 0xA5, 0xEA,- 0x40, 0x83, 0x42, 0xF3, 0x9D, 0x34, 0x94, 0xF9,- 0x39, 0xF7, 0x3C, 0x22, 0x60, 0xC2, 0xA4, 0x3A,- 0x5C, 0x9F, 0x1B, 0x57, 0x33, 0x0C, 0xCA, 0x40,- 0x93, 0xFC, 0x1F, 0x42, 0xF9, 0x6D, 0x83, 0x00,- 0x56, 0x77, 0x03, 0x7D, 0xB5, 0x1A, 0xEF, 0x26,- 0xF0, 0x54, 0x38, 0x05, 0x7A, 0xE7, 0x9E, 0xD1,- 0x44, 0x64, 0xFD, 0x8E, 0x57, 0xD1, 0x55, 0x86- },- {- 0x17, 0xC5, 0xCA, 0xB4, 0x09, 0x10, 0x73, 0x62,- 0x1B, 0x5C, 0x24, 0xC3, 0x36, 0x31, 0x6D, 0x0C,- 0xF6, 0x49, 0xBA, 0x1E, 0xFF, 0xEB, 0xFC, 0x87,- 0xE0, 0x43, 0x9C, 0xDF, 0x57, 0x88, 0x87, 0xB2,- 0x21, 0x65, 0x6D, 0x33, 0x9A, 0x6F, 0xD1, 0x98,- 0xAB, 0xAE, 0xE6, 0x7E, 0xA1, 0x88, 0xDD, 0x66,- 0x56, 0x78, 0x23, 0xFC, 0x22, 0x0C, 0x52, 0xB5,- 0x74, 0x90, 0x25, 0x14, 0x69, 0xD2, 0x5D, 0x8C- },- {- 0x57, 0xDC, 0x27, 0x97, 0xD1, 0x42, 0x68, 0x1C,- 0x94, 0xFE, 0x48, 0x86, 0x26, 0x98, 0x6E, 0xD4,- 0xB2, 0x67, 0x03, 0xCB, 0xF6, 0xBF, 0xE5, 0x93,- 0x91, 0x64, 0x36, 0x57, 0x06, 0x5B, 0x2D, 0x46,- 0xE4, 0xB1, 0xDD, 0xB3, 0xAA, 0x83, 0x2C, 0x9B,- 0xD4, 0x49, 0x75, 0x5A, 0xC8, 0xB1, 0xBF, 0x93,- 0x68, 0x97, 0xFB, 0xC6, 0xAD, 0xE3, 0x78, 0xF2,- 0xBD, 0x64, 0x93, 0xE4, 0x86, 0xF4, 0x20, 0x29- },- {- 0x44, 0x12, 0xDD, 0x6B, 0xED, 0x6D, 0xB2, 0xA8,- 0x03, 0xC2, 0xE0, 0xDF, 0x8F, 0x58, 0x29, 0xE7,- 0xA4, 0xB0, 0x41, 0x78, 0x89, 0x51, 0x0D, 0xF7,- 0xDF, 0xEE, 0x49, 0x57, 0x4A, 0x71, 0xEC, 0x0D,- 0x9E, 0x0D, 0x46, 0x06, 0x50, 0x17, 0xC7, 0x2D,- 0xD9, 0x74, 0x39, 0x33, 0xCA, 0x83, 0x9A, 0x76,- 0x8D, 0xD1, 0x5A, 0xB0, 0xB7, 0xC1, 0x4C, 0x62,- 0x6A, 0x35, 0x41, 0x09, 0x69, 0x01, 0x96, 0xAE- },- {- 0xD0, 0xEB, 0xC7, 0x71, 0x03, 0x1B, 0x7C, 0x16,- 0x00, 0x21, 0xC9, 0xB6, 0xFB, 0xB2, 0xB6, 0x70,- 0xE3, 0xB4, 0x02, 0x70, 0x02, 0x69, 0x07, 0xA3,- 0x91, 0x63, 0xDB, 0x18, 0x73, 0xEC, 0xC3, 0xB8,- 0x00, 0x11, 0x1D, 0xD7, 0xBF, 0x13, 0x8F, 0x83,- 0xA6, 0x10, 0xDC, 0x04, 0x6D, 0xA2, 0x68, 0xB7,- 0x2B, 0x8C, 0x90, 0x86, 0x92, 0x23, 0x77, 0xDB,- 0xED, 0x73, 0x94, 0x82, 0x43, 0xCA, 0x1E, 0x14- },- {- 0x10, 0xC4, 0xBA, 0x31, 0x55, 0x91, 0x69, 0x8D,- 0xFB, 0x91, 0xA5, 0x73, 0x37, 0x63, 0x18, 0x84,- 0xB4, 0x73, 0x8D, 0x9F, 0x59, 0x80, 0x78, 0x51,- 0xA6, 0x79, 0x84, 0x0C, 0xC2, 0x87, 0xAC, 0xE3,- 0x01, 0x1C, 0xCD, 0xC8, 0xF4, 0xA4, 0x85, 0xBB,- 0x19, 0x73, 0x40, 0x4E, 0xF9, 0xEE, 0x9B, 0x9C,- 0xF1, 0xEA, 0xDB, 0xC5, 0x40, 0x74, 0xC6, 0xD1,- 0x13, 0xDE, 0x8F, 0xC9, 0x1D, 0x07, 0x97, 0xEB- },- {- 0x14, 0x64, 0x34, 0x7B, 0xE3, 0x2C, 0x79, 0x59,- 0x17, 0x2B, 0x74, 0x72, 0xD1, 0x1F, 0xE0, 0x78,- 0x44, 0xA5, 0x2E, 0x2D, 0x3B, 0x2D, 0x05, 0x8C,- 0xC6, 0xBC, 0xC0, 0xA8, 0xA2, 0x75, 0xD6, 0xB8,- 0x2B, 0x2D, 0x62, 0x63, 0x75, 0x5E, 0xAF, 0x2A,- 0x65, 0x88, 0xB6, 0xA1, 0xEB, 0x79, 0x9A, 0xF8,- 0x3A, 0x4C, 0xE7, 0x53, 0xF8, 0xC7, 0x5A, 0x22,- 0x84, 0xD0, 0x28, 0x5B, 0xAB, 0x5F, 0x7C, 0x1C- },- {- 0xF4, 0x09, 0x23, 0x1E, 0xD1, 0x87, 0xF5, 0xC4,- 0xE8, 0x33, 0xFA, 0x9E, 0x30, 0x42, 0xAC, 0xA6,- 0xC8, 0x58, 0xB0, 0x8B, 0x49, 0x6B, 0x25, 0x31,- 0xF8, 0x4F, 0xD5, 0xCE, 0xA9, 0x3E, 0xCD, 0x06,- 0xDA, 0xFE, 0x0A, 0x10, 0xC3, 0xFF, 0x23, 0x76,- 0xC7, 0x4D, 0xC8, 0x0D, 0xA0, 0x7D, 0xA0, 0x18,- 0x64, 0xFB, 0xF2, 0x68, 0x59, 0x60, 0xB5, 0x40,- 0xB3, 0xA2, 0xE9, 0x42, 0xCB, 0x8D, 0x90, 0x9F- },- {- 0x39, 0x51, 0x32, 0xC5, 0x80, 0xC3, 0x55, 0xB5,- 0xB0, 0xE2, 0x35, 0x33, 0x6C, 0x8D, 0xC1, 0x08,- 0x5E, 0x59, 0x59, 0x64, 0x04, 0x3D, 0x38, 0x9E,- 0x08, 0x1E, 0xFE, 0x48, 0x5B, 0xA4, 0xC6, 0x37,- 0x72, 0xDB, 0x8D, 0x7E, 0x0F, 0x18, 0x6C, 0x50,- 0x98, 0x2E, 0x12, 0x23, 0xEA, 0x78, 0x5A, 0xDC,- 0x74, 0x0B, 0x0C, 0xF2, 0x18, 0x70, 0x74, 0x58,- 0xB8, 0xB8, 0x03, 0x40, 0x42, 0xF9, 0x23, 0xC2- },- {- 0xF9, 0x2A, 0xBA, 0xCA, 0x21, 0x32, 0x29, 0x66,- 0x06, 0x49, 0xEF, 0x2D, 0x8F, 0x88, 0x11, 0x5B,- 0x5B, 0xED, 0x8A, 0xB5, 0xB9, 0xBC, 0xA9, 0xA1,- 0xB4, 0xC5, 0x24, 0x57, 0x03, 0x53, 0x10, 0xC4,- 0x1A, 0x6B, 0xEA, 0x2B, 0x23, 0xB7, 0x91, 0x8B,- 0x5B, 0x8B, 0xF3, 0x8B, 0x52, 0xEA, 0xC6, 0xFF,- 0x3B, 0x62, 0x13, 0xA5, 0x22, 0xF3, 0x81, 0xBE,- 0x7F, 0xF0, 0x90, 0x6D, 0xBA, 0x7B, 0xD0, 0x0C- },- {- 0xCB, 0xAD, 0xE7, 0xAD, 0x3B, 0x5D, 0xEE, 0x0F,- 0xF1, 0xA4, 0x6B, 0x08, 0x2C, 0xF4, 0xE1, 0xE1,- 0xDC, 0x21, 0x62, 0x0D, 0xD2, 0xCC, 0x0E, 0xDC,- 0x2C, 0x70, 0x7A, 0x21, 0x62, 0xD2, 0x14, 0x99,- 0x69, 0xAB, 0xBB, 0x29, 0xC5, 0x72, 0x0B, 0x04,- 0xBD, 0x15, 0x68, 0xA9, 0x55, 0x61, 0x95, 0xE6,- 0x7F, 0x24, 0x32, 0x2D, 0xD9, 0xAA, 0x4E, 0x83,- 0x65, 0x19, 0x1A, 0xA5, 0xB6, 0xC4, 0x45, 0x79- },- {- 0xF5, 0x1B, 0x4A, 0xE4, 0xD4, 0xC5, 0x4A, 0x29,- 0xCF, 0x71, 0x35, 0xA8, 0xFE, 0x1E, 0xAB, 0xD5,- 0xE1, 0xBC, 0xBF, 0x82, 0x08, 0x96, 0x96, 0x7D,- 0xC4, 0x1E, 0x38, 0x49, 0xDA, 0xC2, 0x25, 0x07,- 0x69, 0x42, 0x10, 0xCA, 0x11, 0xC4, 0xEB, 0xF1,- 0xC2, 0x9A, 0x8D, 0x4F, 0x71, 0xB3, 0x0F, 0x76,- 0xC9, 0xB6, 0x01, 0x0A, 0xD9, 0x5B, 0xDF, 0xB0,- 0xDE, 0x83, 0x79, 0x25, 0xF0, 0x61, 0x25, 0x97- },- {- 0xCE, 0x38, 0x72, 0x11, 0x5D, 0x83, 0x3B, 0x34,- 0x56, 0xCA, 0x94, 0x2E, 0x6E, 0x38, 0x5F, 0x28,- 0xA9, 0x03, 0xBE, 0xAB, 0xFB, 0x75, 0x3F, 0x8A,- 0xFC, 0xCC, 0x12, 0xF2, 0x58, 0x2C, 0xE1, 0xF3,- 0x62, 0x12, 0xBD, 0x05, 0xE0, 0x5A, 0x46, 0xFC,- 0x88, 0xD3, 0x19, 0x50, 0xB4, 0x91, 0x1A, 0xE5,- 0xDC, 0xD8, 0xFF, 0x7A, 0x0B, 0x50, 0x47, 0x4C,- 0xB4, 0x88, 0xCC, 0xF2, 0xA8, 0x9C, 0xD0, 0xEB- },- {- 0x9B, 0xB7, 0x4C, 0xBD, 0x47, 0xA6, 0x24, 0xCB,- 0xEA, 0xFC, 0xC1, 0x6D, 0x46, 0x29, 0x47, 0xBB,- 0xEA, 0x13, 0x70, 0xB8, 0x5C, 0x96, 0x1A, 0x40,- 0x7D, 0xF9, 0x86, 0x3E, 0x54, 0xE6, 0xD9, 0xE6,- 0xA8, 0xD2, 0xEF, 0x0C, 0x64, 0x97, 0x20, 0x5E,- 0x5E, 0xB7, 0xC3, 0xE5, 0x9E, 0x69, 0x8D, 0x99,- 0x24, 0x63, 0xCA, 0x9D, 0xD4, 0xCF, 0x28, 0xCF,- 0x9A, 0x2D, 0x4E, 0x30, 0xC1, 0x33, 0xE8, 0x55- },- {- 0x72, 0x96, 0x33, 0x82, 0x0B, 0xF0, 0x13, 0xD9,- 0xD2, 0xBD, 0x37, 0x3C, 0xCA, 0xC7, 0xBC, 0x9F,- 0x37, 0x16, 0xF6, 0x9E, 0x16, 0xA4, 0x4E, 0x94,- 0x9C, 0x7A, 0x9A, 0x93, 0xDC, 0xA1, 0x26, 0xBB,- 0x1A, 0xA5, 0x4E, 0x5E, 0x70, 0x40, 0x70, 0x7F,- 0x02, 0x87, 0x6A, 0xFD, 0x02, 0x0A, 0xF4, 0x72,- 0x63, 0x9D, 0x49, 0xF5, 0x42, 0x0D, 0x29, 0x4C,- 0x3A, 0xA3, 0x1D, 0x06, 0x7E, 0x3E, 0x85, 0x75- },- {- 0x06, 0x86, 0x1D, 0xB3, 0x07, 0xC6, 0x78, 0x08,- 0x6E, 0x8B, 0x2A, 0xEC, 0xDF, 0x18, 0x29, 0xD2,- 0x88, 0x3D, 0x28, 0xB7, 0x31, 0xAB, 0xD0, 0xF1,- 0xE7, 0x2F, 0x1C, 0xED, 0x6C, 0x7A, 0xD4, 0x17,- 0x2E, 0xCA, 0x63, 0x22, 0xA8, 0x3F, 0xB6, 0xA6,- 0x5A, 0xFA, 0x37, 0xE9, 0x4A, 0x3E, 0x2B, 0xA2,- 0x05, 0xB8, 0x7B, 0xF3, 0x82, 0xD9, 0x15, 0x88,- 0x49, 0x7A, 0x46, 0x50, 0x88, 0x3B, 0xD8, 0x75- },- {- 0x35, 0x6E, 0xCE, 0xAF, 0x17, 0x02, 0xB3, 0x70,- 0xF4, 0xAA, 0xB8, 0xEA, 0x82, 0x84, 0x86, 0xF3,- 0x30, 0x13, 0xF7, 0x44, 0xB3, 0x9E, 0x7E, 0xA2,- 0x6C, 0x69, 0x18, 0xD6, 0x0E, 0x1A, 0xBC, 0xF4,- 0x4F, 0xB1, 0x6E, 0xDC, 0xA7, 0x72, 0x0A, 0xCF,- 0xC6, 0xA7, 0x01, 0xBF, 0x1E, 0x2C, 0x35, 0xDD,- 0xBD, 0x69, 0x5A, 0x8D, 0x40, 0x8E, 0x8C, 0x96,- 0x32, 0xE8, 0xCD, 0x27, 0x23, 0x0C, 0xAD, 0x8D- },- {- 0x48, 0x9A, 0x39, 0xD0, 0xFC, 0x3C, 0xDE, 0xAF,- 0x42, 0x89, 0x2E, 0xD8, 0x03, 0x85, 0xC1, 0x1C,- 0xE2, 0x93, 0xC9, 0x32, 0x21, 0x5B, 0xB2, 0x31,- 0x88, 0x69, 0x2A, 0x86, 0xE6, 0x1B, 0xCA, 0xD9,- 0x2C, 0x2A, 0x1D, 0x11, 0x42, 0x60, 0x1B, 0x1B,- 0xDF, 0x09, 0x82, 0xD1, 0xCD, 0x1E, 0x05, 0xC0,- 0x52, 0xDE, 0x81, 0x9E, 0x64, 0xF2, 0x47, 0xDB,- 0x35, 0x91, 0x5D, 0xD1, 0xDB, 0x79, 0xA3, 0xB5- },- {- 0xC0, 0x2F, 0x46, 0x4B, 0x4D, 0xD1, 0x81, 0x17,- 0xE3, 0x0A, 0x8D, 0xB8, 0xEF, 0x1D, 0xA0, 0x67,- 0x13, 0x4B, 0x60, 0x4E, 0xFA, 0x19, 0x51, 0x76,- 0x7E, 0xE6, 0x32, 0xDC, 0x02, 0x4D, 0x64, 0xC0,- 0x0F, 0x24, 0x49, 0xF0, 0x42, 0xDB, 0x3A, 0xEA,- 0x01, 0x74, 0xEB, 0xCD, 0xBB, 0x4F, 0xF5, 0x9D,- 0xAE, 0x75, 0x4F, 0x72, 0x39, 0x46, 0xF1, 0xB9,- 0x0A, 0x77, 0xFD, 0x95, 0x23, 0x69, 0x0B, 0x7B- },- {- 0xFB, 0x31, 0xE6, 0xDD, 0xB8, 0x6D, 0xBF, 0xF3,- 0x72, 0x64, 0x6D, 0x1E, 0x3A, 0x3F, 0x31, 0xDD,- 0x61, 0x15, 0x9F, 0xC3, 0x93, 0x65, 0x8C, 0x2E,- 0xE9, 0x57, 0x10, 0x3B, 0xF2, 0x11, 0x6B, 0xDE,- 0xF8, 0x2C, 0x33, 0xE8, 0x69, 0xF3, 0xC8, 0x3A,- 0xC3, 0xC2, 0xF6, 0x38, 0x0C, 0xF6, 0x92, 0xF7,- 0xB1, 0xDC, 0xBA, 0xE0, 0xBB, 0x22, 0x7A, 0xD3,- 0x47, 0xE7, 0x54, 0x13, 0x74, 0x66, 0xC6, 0x9F- },- {- 0x00, 0x60, 0x62, 0xAB, 0xE1, 0x6C, 0x2F, 0xE7,- 0x9A, 0xF8, 0x80, 0x85, 0xE0, 0xB5, 0x82, 0xB1,- 0x06, 0xE7, 0xF7, 0x9F, 0x01, 0xA4, 0x39, 0x46,- 0xC7, 0x8B, 0x19, 0xF9, 0xBD, 0xD7, 0x25, 0x99,- 0x76, 0x36, 0xA3, 0x32, 0xEB, 0x9A, 0x3A, 0xAA,- 0x6D, 0xE0, 0xD4, 0xA8, 0xE9, 0xE2, 0x8E, 0x8C,- 0x77, 0x87, 0x74, 0x22, 0x4C, 0x66, 0x5B, 0xF7,- 0xBC, 0x36, 0x44, 0xFC, 0xE4, 0x11, 0x22, 0x8C- },- {- 0xD4, 0x4A, 0x6D, 0xB3, 0xDE, 0x9F, 0xD4, 0xE4,- 0xA7, 0xEF, 0x15, 0x5A, 0x01, 0xBC, 0xCB, 0x91,- 0xC1, 0xBC, 0xF1, 0xCB, 0x53, 0x22, 0x56, 0x89,- 0xA7, 0x7A, 0x0D, 0x23, 0xB4, 0xD3, 0x9A, 0x89,- 0xA1, 0x89, 0xF2, 0x89, 0x80, 0xF9, 0x1C, 0x56,- 0xEA, 0xC5, 0x87, 0x9E, 0xAE, 0x93, 0x3C, 0xED,- 0x7F, 0x26, 0x7E, 0x2F, 0x70, 0x40, 0xEB, 0x38,- 0x0F, 0xDB, 0xBF, 0x34, 0xA6, 0xB7, 0xB6, 0x15- },- {- 0x5A, 0xFB, 0xFE, 0xA1, 0xDE, 0xDA, 0x5A, 0xEA,- 0xB9, 0x2E, 0x4D, 0x0C, 0x31, 0xD1, 0x6A, 0x9A,- 0x86, 0xBF, 0x7C, 0x75, 0x23, 0x27, 0x4A, 0x05,- 0xC5, 0x05, 0x29, 0xF5, 0xC1, 0x39, 0xDB, 0x10,- 0x93, 0x3A, 0x52, 0xC6, 0x22, 0x9C, 0xD3, 0x11,- 0x08, 0xF0, 0x83, 0xFB, 0x0C, 0x85, 0xCF, 0x52,- 0x83, 0x1B, 0x5A, 0x05, 0xF2, 0x55, 0x0A, 0x77,- 0xB5, 0x70, 0x3C, 0xC6, 0x68, 0x91, 0x2D, 0xBC- },- {- 0xD1, 0x7F, 0xCA, 0xD4, 0xE0, 0xD8, 0xBD, 0xE2,- 0xED, 0xFD, 0xA1, 0x68, 0xBA, 0x47, 0x10, 0x4B,- 0xBC, 0xA4, 0xD2, 0x6D, 0xA2, 0xD3, 0x1A, 0x07,- 0x0B, 0x0F, 0xBA, 0x0B, 0x26, 0xEE, 0xDD, 0x95,- 0xEE, 0xC1, 0xFC, 0x34, 0xD7, 0x6C, 0xD4, 0xA1,- 0xCB, 0x15, 0xF2, 0x62, 0x16, 0x88, 0xA9, 0xCC,- 0x0E, 0x96, 0x35, 0x8D, 0xE9, 0x93, 0x22, 0x2B,- 0xB3, 0xE3, 0xCD, 0x0B, 0xFD, 0xCB, 0x74, 0x6C- },- {- 0xBD, 0x6A, 0x59, 0x21, 0x63, 0x37, 0xB4, 0x5D,- 0x6B, 0x71, 0xAE, 0xAC, 0x01, 0x36, 0x6B, 0xFE,- 0x96, 0x60, 0xE0, 0xFB, 0xC2, 0x95, 0x9A, 0xDB,- 0xB6, 0x8D, 0x52, 0x6C, 0x43, 0xD4, 0x8F, 0xFF,- 0xFE, 0x2F, 0xFC, 0x43, 0x05, 0x88, 0xE7, 0x8E,- 0x66, 0x54, 0x6A, 0x3C, 0x70, 0x9B, 0x0A, 0xCE,- 0xA1, 0x7C, 0xBC, 0x5A, 0x21, 0x8C, 0x53, 0xCD,- 0x47, 0xAA, 0x48, 0x71, 0xC1, 0xDD, 0x98, 0x4A- },- {- 0x83, 0xEA, 0x5A, 0xE1, 0x89, 0x11, 0x45, 0xC4,- 0x1A, 0x7C, 0x6C, 0x87, 0xFE, 0x92, 0x24, 0x87,- 0xF5, 0xD2, 0x82, 0x93, 0x35, 0x69, 0xB7, 0xAE,- 0x0E, 0x34, 0x56, 0x53, 0x38, 0x1E, 0xDE, 0x6D,- 0x4B, 0x16, 0xE1, 0x44, 0xD1, 0xC3, 0xE8, 0xF0,- 0x60, 0x5D, 0xAA, 0x0D, 0xB5, 0x96, 0x5A, 0x7B,- 0x79, 0xD9, 0x1A, 0x8A, 0xFE, 0x11, 0xF1, 0xE0,- 0xBC, 0x54, 0x9A, 0xC0, 0x74, 0xA0, 0x1A, 0xB7- },- {- 0x37, 0x50, 0x50, 0xCF, 0x2E, 0x43, 0x0D, 0x0E,- 0x29, 0x87, 0x58, 0x35, 0x20, 0x8E, 0x89, 0x06,- 0xD7, 0x05, 0x2E, 0x47, 0x29, 0x2C, 0x5A, 0x38,- 0xA6, 0x30, 0x82, 0x87, 0x3D, 0x31, 0xD5, 0x83,- 0x13, 0x5C, 0x07, 0xA2, 0x0C, 0x52, 0xD9, 0x5B,- 0x2D, 0x5D, 0xC3, 0xEA, 0xDE, 0x6B, 0xE1, 0x43,- 0xCA, 0x34, 0x38, 0xF4, 0x4D, 0x02, 0x0A, 0xAE,- 0x16, 0x0E, 0xD7, 0x7A, 0xB9, 0x88, 0x4F, 0x7D- },- {- 0x30, 0x28, 0xB0, 0xE8, 0x24, 0x95, 0x7F, 0xF3,- 0xB3, 0x05, 0xE9, 0x7F, 0xF5, 0x92, 0xAA, 0x8E,- 0xF2, 0x9B, 0x3B, 0xEC, 0x1D, 0xC4, 0x7B, 0x76,- 0x13, 0x3D, 0x10, 0x3F, 0xFE, 0x38, 0x71, 0xBF,- 0x05, 0x12, 0xA2, 0x31, 0xAF, 0xCB, 0x1D, 0xF8,- 0x65, 0x97, 0xEC, 0x5E, 0x46, 0xE9, 0x23, 0xC8,- 0xB9, 0x85, 0xC2, 0x85, 0x08, 0x57, 0xC6, 0x40,- 0x01, 0xB2, 0xC5, 0x51, 0xEA, 0x83, 0x3D, 0x0E- },- {- 0x08, 0x7C, 0xCB, 0x1E, 0x5B, 0xD1, 0x72, 0x22,- 0xB8, 0xAF, 0x20, 0x6D, 0xD6, 0x39, 0x08, 0xF8,- 0x91, 0x72, 0x97, 0x62, 0x1A, 0x8C, 0xB9, 0x33,- 0x0A, 0xE0, 0xBA, 0x4A, 0xF3, 0xE9, 0xD6, 0x0C,- 0x98, 0xFC, 0xF1, 0xEF, 0xFC, 0xEC, 0x20, 0x13,- 0x6B, 0x4F, 0x91, 0x88, 0x12, 0x6D, 0xFA, 0x04,- 0x4E, 0x1C, 0x1C, 0xCD, 0xA3, 0xCE, 0xD8, 0x73,- 0x73, 0xD9, 0x37, 0x9C, 0xCB, 0xED, 0xBD, 0xB3- },- {- 0x7F, 0x17, 0x06, 0x24, 0x98, 0xBF, 0xA2, 0xBB,- 0x58, 0x56, 0xCD, 0x0A, 0x62, 0xC5, 0x68, 0xC5,- 0xC6, 0xB8, 0x97, 0x43, 0x24, 0x74, 0xEF, 0xB2,- 0xE6, 0xA2, 0xEE, 0x18, 0xCA, 0xFF, 0xD2, 0x1E,- 0x1E, 0xF3, 0x0D, 0x06, 0x47, 0x23, 0x85, 0x0F,- 0x79, 0x90, 0xD2, 0x1B, 0xA3, 0x4E, 0x8F, 0x2B,- 0x3B, 0xB0, 0x67, 0x02, 0x3A, 0x77, 0x27, 0x82,- 0x15, 0x8A, 0x27, 0xC6, 0xC4, 0x67, 0xC9, 0x28- },- {- 0x6B, 0xA9, 0x86, 0xA9, 0x42, 0x49, 0x7F, 0xD3,- 0x84, 0x62, 0x97, 0x2F, 0x50, 0xA6, 0x19, 0x68,- 0xC0, 0x65, 0x2D, 0xAC, 0x56, 0xCE, 0x9B, 0x9A,- 0xC1, 0xBC, 0x06, 0x1A, 0xB6, 0x34, 0xFE, 0x5A,- 0x77, 0xAC, 0xD0, 0x27, 0x5F, 0x83, 0x96, 0xE3,- 0xC0, 0xBE, 0xF0, 0x12, 0xAE, 0x93, 0xB7, 0x27,- 0x58, 0xB8, 0xD7, 0x67, 0x9C, 0x87, 0xE8, 0x47,- 0xE6, 0x30, 0x17, 0xB5, 0x5A, 0x69, 0xC5, 0xC6- },- {- 0x96, 0x7C, 0x81, 0xF5, 0x61, 0x95, 0x18, 0x33,- 0xFA, 0x56, 0x6F, 0x6B, 0x36, 0x07, 0x7E, 0xAD,- 0xB2, 0xA6, 0x15, 0xCC, 0x15, 0xF0, 0xED, 0xBB,- 0xAE, 0x4F, 0x84, 0x4D, 0xDC, 0x8E, 0x9C, 0x1F,- 0xB8, 0x3D, 0x31, 0xA9, 0x3F, 0xCB, 0x17, 0x74,- 0xD7, 0x40, 0xD6, 0x92, 0x08, 0xCA, 0x59, 0x30,- 0xBC, 0xFA, 0xC4, 0xA1, 0xF9, 0x44, 0x46, 0x9F,- 0xEF, 0xD1, 0x9B, 0x6E, 0x93, 0x75, 0xE0, 0xB5- },- {- 0xE8, 0xAE, 0xF1, 0x78, 0xE6, 0xDA, 0x3E, 0xF5,- 0xCA, 0xED, 0x65, 0x30, 0xF7, 0xEB, 0x25, 0x60,- 0x82, 0x56, 0xC2, 0x37, 0x7C, 0x4C, 0xF9, 0x6B,- 0x0C, 0xFD, 0x0D, 0x76, 0xEE, 0xB4, 0xBB, 0x86,- 0xEE, 0xFF, 0x7B, 0x7D, 0xF1, 0x58, 0x5C, 0x8D,- 0x7A, 0x20, 0xC0, 0x63, 0x3A, 0x67, 0x90, 0x7F,- 0x6D, 0x28, 0x67, 0xC3, 0x26, 0x4A, 0x91, 0xC0,- 0x51, 0xAB, 0xAE, 0x6E, 0xEA, 0x5A, 0x91, 0xD8- },- {- 0x64, 0x81, 0xDC, 0xC8, 0x15, 0x7A, 0xE6, 0x28,- 0xB5, 0xCD, 0x52, 0x6B, 0xAC, 0x8F, 0x93, 0x31,- 0x56, 0xDE, 0xDA, 0xC9, 0x56, 0xA2, 0xB2, 0x2A,- 0x97, 0x4B, 0xF5, 0xF7, 0xEC, 0x2D, 0xB5, 0x80,- 0x6F, 0x53, 0xDD, 0x0E, 0x2D, 0xD5, 0x3D, 0xB8,- 0x7C, 0xD8, 0xF5, 0x8A, 0x58, 0x6F, 0x9B, 0x3C,- 0x5C, 0x52, 0x23, 0x31, 0xA3, 0x11, 0x74, 0xC4,- 0xE7, 0xB9, 0xB6, 0xF7, 0xF0, 0x57, 0xC2, 0x8F- },- {- 0xA7, 0x1E, 0xA4, 0x5C, 0xE6, 0x61, 0x6A, 0x3D,- 0x2F, 0x0A, 0x59, 0x2D, 0x5D, 0x02, 0x86, 0x93,- 0x2D, 0xA6, 0x3C, 0x6D, 0xB1, 0x1D, 0x59, 0xC6,- 0x69, 0x1C, 0x35, 0xA5, 0x6F, 0x7E, 0xE4, 0xF8,- 0x0B, 0x6F, 0xC3, 0x40, 0xB4, 0xDB, 0xC1, 0x84,- 0x4C, 0x50, 0x40, 0xE6, 0x68, 0xD2, 0x89, 0x2F,- 0x4A, 0x4A, 0xE8, 0x53, 0x3F, 0x1B, 0x67, 0x71,- 0xBC, 0xFC, 0xE7, 0xC3, 0xA2, 0x3E, 0x0D, 0x97- },- {- 0x96, 0x93, 0x44, 0x87, 0x70, 0xFE, 0xAE, 0x42,- 0x17, 0x26, 0xEB, 0x20, 0x3B, 0x01, 0xC7, 0x08,- 0x23, 0xD5, 0xF4, 0x4C, 0xC5, 0x21, 0x3E, 0x6A,- 0x68, 0x28, 0x47, 0x29, 0xBD, 0x11, 0x7D, 0x9B,- 0xD1, 0x8F, 0xEC, 0x4A, 0x0A, 0x82, 0x4A, 0x24,- 0x08, 0x0F, 0x29, 0x8B, 0xAC, 0xD2, 0x96, 0xD7,- 0xB4, 0x97, 0x83, 0x8F, 0xBD, 0x7B, 0x0D, 0x57,- 0x5C, 0x52, 0x49, 0x2B, 0x3E, 0x6F, 0x92, 0x6B- },- {- 0x37, 0xA1, 0x50, 0x66, 0xF2, 0xB9, 0xF9, 0x4C,- 0x24, 0x61, 0x1B, 0xC4, 0x53, 0xED, 0x02, 0x74,- 0x07, 0x8D, 0x1F, 0x70, 0xB2, 0xD3, 0x4C, 0x8B,- 0x96, 0x36, 0x08, 0x48, 0x9D, 0xCB, 0xE8, 0xDF,- 0x44, 0x8E, 0xDD, 0x9C, 0x73, 0x36, 0x2B, 0xB2,- 0xB6, 0x6B, 0xEE, 0xF6, 0x1F, 0xCE, 0x60, 0x10,- 0x6F, 0x70, 0x19, 0xED, 0x37, 0x3C, 0x69, 0x22,- 0x59, 0xD9, 0x55, 0x6A, 0x94, 0x0B, 0x1A, 0x06- },- {- 0xBD, 0x44, 0xE7, 0x39, 0xE1, 0xF9, 0xDB, 0x1C,- 0x6B, 0xAF, 0x42, 0xCA, 0x4A, 0x12, 0xAC, 0x09,- 0x9B, 0x96, 0xF6, 0xB3, 0x6C, 0x4B, 0xCB, 0x1B,- 0x72, 0xEE, 0xFF, 0x08, 0xA6, 0x49, 0x68, 0x35,- 0xEC, 0x65, 0x15, 0x0B, 0xE8, 0xFE, 0x16, 0xCB,- 0xE3, 0x27, 0x07, 0xE3, 0x47, 0x54, 0x7D, 0xC5,- 0xA5, 0x83, 0xD2, 0x65, 0x74, 0x6F, 0xA5, 0x95,- 0xC5, 0xE7, 0x73, 0x0F, 0xCF, 0x24, 0x58, 0x1E- },- {- 0xFA, 0xB2, 0x03, 0x8E, 0x94, 0x98, 0xA1, 0xC3,- 0x9E, 0x05, 0x78, 0xA0, 0xA5, 0xEA, 0x6B, 0x44,- 0xF3, 0xC1, 0xB4, 0x1A, 0xE5, 0x67, 0xF9, 0x91,- 0x4A, 0x95, 0xB1, 0x31, 0xC4, 0x8D, 0x12, 0x1E,- 0xCA, 0xCE, 0xA8, 0x95, 0xA0, 0x9B, 0x1D, 0x4E,- 0x04, 0x42, 0xBE, 0xC9, 0xC5, 0x0C, 0x50, 0xE0,- 0x0A, 0x9F, 0xAF, 0xEF, 0xFA, 0xE0, 0x70, 0x88,- 0x4C, 0x26, 0x25, 0xA8, 0xB1, 0xA2, 0x17, 0x26- },- {- 0x05, 0xA1, 0xB7, 0x6B, 0x2F, 0xD5, 0x62, 0x11,- 0xE0, 0xF2, 0xD7, 0x5A, 0x25, 0x16, 0x54, 0xA7,- 0x72, 0xF5, 0x5E, 0x18, 0xCA, 0x02, 0x2A, 0xF5,- 0x2C, 0xB3, 0x30, 0x19, 0x1E, 0x98, 0xA3, 0xB8,- 0xEB, 0x87, 0xE5, 0x11, 0x7B, 0xAE, 0x58, 0x04,- 0x4D, 0x94, 0x4C, 0x1F, 0x18, 0x85, 0x45, 0x12,- 0x25, 0x41, 0x77, 0x35, 0xFC, 0x72, 0xF7, 0x39,- 0x36, 0x69, 0x3C, 0xFF, 0x45, 0x46, 0x9F, 0x8C- },- {- 0x2A, 0x30, 0xC9, 0x6B, 0xDA, 0xC7, 0x8A, 0x39,- 0x94, 0xEE, 0xCA, 0xA5, 0xA5, 0x3F, 0x82, 0x7F,- 0x58, 0xE1, 0x32, 0x31, 0xA0, 0xD1, 0x13, 0x08,- 0x6C, 0x06, 0xB1, 0xBD, 0xAB, 0xDA, 0x38, 0xD0,- 0x8F, 0x1A, 0xE2, 0x7D, 0xE2, 0x5F, 0xD2, 0x2E,- 0xEA, 0x70, 0xC0, 0x5F, 0x01, 0x32, 0xBF, 0x7A,- 0x50, 0x1C, 0x82, 0xAE, 0x62, 0x15, 0xBF, 0xEF,- 0x3C, 0x01, 0x63, 0x98, 0xBA, 0xF2, 0xCB, 0x62- },- {- 0x48, 0xDB, 0x53, 0x76, 0x5B, 0x82, 0xBD, 0x6F,- 0x25, 0x33, 0xEA, 0xE1, 0x7F, 0x67, 0x69, 0xD7,- 0xA4, 0xE3, 0xB2, 0x43, 0x74, 0x60, 0x1C, 0xDD,- 0x8E, 0xC0, 0xCA, 0x3A, 0xAB, 0x30, 0x93, 0xFD,- 0x2B, 0x99, 0x24, 0x38, 0x46, 0x0B, 0xAF, 0x8D,- 0xA5, 0x8F, 0xB9, 0xA8, 0x9B, 0x2C, 0x58, 0xF9,- 0x68, 0xE6, 0x36, 0x17, 0xCB, 0xEB, 0x18, 0x44,- 0xB0, 0x2D, 0x6A, 0x27, 0xC5, 0xB4, 0xAD, 0x41- },- {- 0x5C, 0x8B, 0x2E, 0x0E, 0x1B, 0x5C, 0x8F, 0x45,- 0x7D, 0x7F, 0x7B, 0xD9, 0xF0, 0x5A, 0x97, 0xE5,- 0x8D, 0xDA, 0x1D, 0x28, 0xDB, 0x9F, 0x34, 0xD1,- 0xCE, 0x73, 0x25, 0x28, 0xF9, 0x68, 0xBE, 0xDD,- 0x9E, 0x1C, 0xC9, 0x35, 0x2D, 0x0A, 0x5D, 0xF6,- 0x67, 0x29, 0x28, 0xBD, 0xD3, 0xEA, 0x6F, 0x5C,- 0xB0, 0x60, 0x77, 0xCF, 0x3A, 0xD3, 0xA7, 0x6E,- 0x29, 0xB2, 0x2E, 0x82, 0xBA, 0xC6, 0x7B, 0x61- },- {- 0x5B, 0x73, 0x91, 0xAA, 0x52, 0xF2, 0x76, 0xFA,- 0xB9, 0xC1, 0x38, 0x77, 0xF1, 0x22, 0x32, 0x70,- 0x84, 0x97, 0xFC, 0x02, 0x8F, 0xAA, 0x17, 0x32,- 0xA5, 0xDB, 0x07, 0x9E, 0x7F, 0xE0, 0x73, 0xED,- 0x0C, 0xC9, 0x52, 0x9C, 0xFC, 0x86, 0x3A, 0x4E,- 0xCB, 0xA4, 0xDC, 0x2F, 0x1E, 0xA9, 0xF6, 0xBD,- 0x69, 0x04, 0xF3, 0xA0, 0xC1, 0x07, 0x19, 0x3C,- 0x5E, 0x71, 0x1C, 0xB9, 0x11, 0xF3, 0x80, 0x25- },- {- 0x1D, 0x5A, 0xF7, 0x0F, 0x09, 0xA5, 0xFC, 0x69,- 0x16, 0xEF, 0x59, 0xA3, 0x8A, 0x86, 0x92, 0x6D,- 0xCA, 0xAE, 0x39, 0xA8, 0x95, 0x4D, 0x73, 0xFC,- 0x80, 0xA3, 0x50, 0x75, 0x1A, 0xDD, 0xA3, 0x8C,- 0x9D, 0x59, 0x75, 0x06, 0xDC, 0x05, 0xE1, 0xED,- 0x37, 0xBD, 0x2D, 0xB1, 0x59, 0x0F, 0x99, 0xAA,- 0x29, 0x6A, 0xEA, 0x13, 0xAB, 0x84, 0x43, 0xD5,- 0xA9, 0x23, 0x47, 0xFB, 0x85, 0xFC, 0x81, 0x6D- },- {- 0x80, 0xE3, 0x70, 0x92, 0x97, 0xD4, 0x41, 0x14,- 0xB9, 0xFB, 0xDF, 0x55, 0x67, 0xF0, 0x5F, 0x33,- 0x00, 0x94, 0xCF, 0x09, 0xF4, 0xC0, 0xEF, 0xCF,- 0xAC, 0x05, 0x09, 0x5C, 0x36, 0x08, 0x10, 0x77,- 0x30, 0xC1, 0xAA, 0x07, 0xFF, 0x23, 0x00, 0x25,- 0x62, 0xC7, 0xE8, 0x41, 0xA9, 0xF5, 0x66, 0x24,- 0xFF, 0xE2, 0xAB, 0xEC, 0x61, 0x1E, 0xB9, 0xE7,- 0x3E, 0x1C, 0xCB, 0xD8, 0xF6, 0x2B, 0x11, 0x49- },- {- 0xF9, 0x94, 0x5C, 0x19, 0x06, 0x77, 0x84, 0x61,- 0x94, 0x13, 0x2B, 0x49, 0x6E, 0xC6, 0x01, 0x2C,- 0x08, 0x75, 0x0E, 0x02, 0x5F, 0xD5, 0x52, 0xED,- 0x32, 0x4D, 0x3A, 0x49, 0xD8, 0x63, 0x66, 0xC0,- 0x3D, 0xCC, 0xDE, 0x8D, 0x5B, 0x5A, 0xC9, 0xA4,- 0xBC, 0xB7, 0x19, 0x5E, 0x63, 0xBC, 0xAA, 0x93,- 0x9E, 0x8E, 0xDA, 0x18, 0xF1, 0x16, 0x94, 0xB6,- 0xFA, 0x69, 0x37, 0x39, 0x3B, 0xFF, 0xDB, 0xF4- },- {- 0x8D, 0x8F, 0x2E, 0xD9, 0xAE, 0x39, 0x80, 0x9A,- 0xAC, 0xAD, 0x2F, 0xCE, 0xDB, 0xD2, 0xDC, 0xA7,- 0x30, 0xC7, 0x83, 0xE6, 0x2F, 0xF7, 0x0B, 0x8D,- 0x3C, 0x53, 0x62, 0xF0, 0x73, 0xF8, 0x34, 0x67,- 0x19, 0x7D, 0x37, 0x56, 0xB4, 0x45, 0x19, 0x5F,- 0xE7, 0x52, 0x11, 0x73, 0x64, 0xD9, 0x2C, 0xF4,- 0x2C, 0x02, 0x6E, 0x40, 0x9D, 0x5F, 0xF7, 0xA9,- 0x53, 0x3E, 0xAB, 0x78, 0xF1, 0x75, 0x4A, 0x2D- },- {- 0x3A, 0xC9, 0x9A, 0xC5, 0x3A, 0xC4, 0x9A, 0x56,- 0xFA, 0xA1, 0x86, 0x46, 0xB8, 0xE0, 0x8A, 0x2D,- 0x35, 0xBE, 0x80, 0xDF, 0x3E, 0xFB, 0xBB, 0xA6,- 0xBD, 0xA4, 0xAE, 0x90, 0x2B, 0x8D, 0x3E, 0x17,- 0x0A, 0x7B, 0xE8, 0x60, 0x5C, 0x34, 0xA4, 0xDC,- 0x9A, 0x73, 0x62, 0xB1, 0xC2, 0x01, 0xD7, 0x02,- 0x39, 0x1B, 0xD7, 0xD5, 0x20, 0x7F, 0x95, 0xFA,- 0x39, 0x0C, 0xE3, 0x3C, 0x43, 0x14, 0xD4, 0x11- },- {- 0xE4, 0x69, 0x4B, 0xDB, 0x31, 0x01, 0x6F, 0x25,- 0x53, 0x2C, 0x04, 0x3C, 0x5C, 0x63, 0x08, 0xCC,- 0x61, 0x9B, 0x0F, 0x87, 0x16, 0xF0, 0xC2, 0x9E,- 0xEB, 0x9F, 0x34, 0x0F, 0x47, 0xB0, 0x7B, 0x4A,- 0x4C, 0xE0, 0x98, 0x4C, 0x47, 0x24, 0xB1, 0x2A,- 0xB3, 0xD3, 0x2A, 0xF5, 0x16, 0xAD, 0xA2, 0x64,- 0x4C, 0xA6, 0x55, 0x8C, 0x1C, 0xB5, 0x81, 0x5C,- 0x12, 0x12, 0xA9, 0xB5, 0xFA, 0x83, 0x44, 0x12- },- {- 0xC6, 0x3C, 0x70, 0x3E, 0x62, 0x10, 0x8A, 0xA0,- 0xED, 0xC6, 0x83, 0xF3, 0x67, 0x8A, 0x00, 0x78,- 0x8F, 0xB1, 0x00, 0xC0, 0x96, 0x0B, 0x4E, 0x98,- 0xB7, 0x6A, 0x48, 0xE4, 0xE5, 0x92, 0x3D, 0x34,- 0x13, 0x44, 0x8D, 0xB8, 0x87, 0x5E, 0x3B, 0xCE,- 0xA7, 0xB6, 0xB8, 0x5D, 0x9E, 0x3E, 0xEA, 0xB7,- 0x2C, 0xD1, 0x50, 0x96, 0xFB, 0xBB, 0x2C, 0xC4,- 0x27, 0x03, 0x17, 0xFC, 0x34, 0xD4, 0x04, 0x71- },- {- 0x90, 0x80, 0xB7, 0xE8, 0x41, 0xEF, 0x51, 0x9C,- 0x54, 0x17, 0xE6, 0x90, 0xAA, 0xF4, 0x32, 0x79,- 0x07, 0xA8, 0x3D, 0xBC, 0xB7, 0x38, 0xD0, 0xF7,- 0x30, 0x8B, 0x1D, 0x61, 0x1D, 0xEF, 0x16, 0x9A,- 0x4F, 0x47, 0x42, 0x3E, 0x69, 0x0F, 0x27, 0xA7,- 0xE2, 0x74, 0x1A, 0xE7, 0x86, 0x5D, 0xA2, 0x3C,- 0x5D, 0x3F, 0x13, 0xC3, 0x16, 0x06, 0x3C, 0x7A,- 0xA1, 0xA9, 0x58, 0xE5, 0xBE, 0x83, 0x8F, 0x04- },- {- 0x29, 0x8D, 0xF6, 0x46, 0x91, 0x5F, 0x04, 0xD6,- 0x65, 0xE9, 0x67, 0x5E, 0x6A, 0x10, 0x31, 0x87,- 0x0D, 0x28, 0xEB, 0x7A, 0x04, 0x05, 0x66, 0x3E,- 0xAC, 0x3B, 0x10, 0xD1, 0xB4, 0xFA, 0x2E, 0x86,- 0x8E, 0x63, 0x73, 0xA5, 0x86, 0xCD, 0x73, 0xE0,- 0x6D, 0x8E, 0x7A, 0xD7, 0x71, 0xB4, 0xFB, 0x0A,- 0x8B, 0x4F, 0xC2, 0xDC, 0x6C, 0xE0, 0x9C, 0x64,- 0x2E, 0xE8, 0x99, 0x26, 0xFD, 0xC6, 0x52, 0x60- },- {- 0x4F, 0x2D, 0xE9, 0xC4, 0xF4, 0x34, 0x8B, 0xDB,- 0x32, 0x3A, 0x66, 0x83, 0x72, 0xE7, 0x71, 0x42,- 0x99, 0xC7, 0x76, 0xF9, 0x60, 0x2F, 0x3A, 0xF8,- 0xFB, 0x77, 0x46, 0xF1, 0x76, 0x86, 0x8D, 0xF3,- 0x54, 0x2B, 0x2F, 0xA6, 0x9E, 0xAE, 0x38, 0xB6,- 0xA2, 0x6A, 0x06, 0xCA, 0x89, 0x42, 0xF8, 0x82,- 0x78, 0xC6, 0x4E, 0x3D, 0x01, 0x7F, 0xEE, 0x67,- 0xA9, 0x4E, 0xA0, 0x23, 0xB2, 0xB5, 0xBE, 0x5F- },- {- 0x40, 0x18, 0xC5, 0xEE, 0x90, 0x93, 0xA6, 0x81,- 0x11, 0x2F, 0x4C, 0xE1, 0x93, 0xA1, 0xD6, 0x5E,- 0x05, 0x48, 0x72, 0x5F, 0x96, 0xAE, 0x31, 0x53,- 0x87, 0xCD, 0x76, 0x5C, 0x2B, 0x9C, 0x30, 0x68,- 0xAE, 0x4C, 0xBE, 0x5C, 0xD5, 0x40, 0x2C, 0x11,- 0xC5, 0x5A, 0x9D, 0x78, 0x5F, 0xFD, 0xFC, 0x2B,- 0xDE, 0x6E, 0x7A, 0xCF, 0x19, 0x61, 0x74, 0x75,- 0xDA, 0xE0, 0xEB, 0x01, 0x44, 0x56, 0xCE, 0x45- },- {- 0x6F, 0xCE, 0x66, 0x75, 0xE8, 0x6D, 0x7E, 0x85,- 0x70, 0x4C, 0x96, 0xC2, 0x95, 0x70, 0x3C, 0xD9,- 0x54, 0x98, 0x59, 0x0E, 0x50, 0x76, 0x4D, 0x23,- 0xD7, 0xA7, 0xA3, 0xA3, 0x22, 0x68, 0xA0, 0xB3,- 0xC9, 0x91, 0xE8, 0xF7, 0x84, 0x87, 0x69, 0x9A,- 0x55, 0x4B, 0x58, 0x1E, 0x33, 0x9C, 0x09, 0xAE,- 0xC9, 0x82, 0xE0, 0xBA, 0xA4, 0x31, 0x87, 0x93,- 0x62, 0x06, 0x35, 0xE1, 0xE2, 0xC8, 0xD9, 0xF2- },- {- 0xEB, 0xA9, 0x37, 0x85, 0x91, 0x97, 0xC7, 0xFD,- 0x41, 0x2D, 0xBC, 0x9A, 0xFC, 0x0D, 0x67, 0xCC,- 0x19, 0x81, 0x60, 0xB5, 0xA9, 0xCC, 0xEE, 0x87,- 0xC4, 0x1A, 0x86, 0x64, 0x85, 0x9F, 0x3E, 0xFD,- 0x96, 0x13, 0x66, 0xA8, 0x09, 0xC7, 0xC6, 0xBC,- 0x6F, 0xA8, 0x44, 0x92, 0x68, 0x14, 0xE0, 0xB4,- 0xEF, 0xA3, 0x7E, 0xDE, 0x2C, 0x88, 0x44, 0x26,- 0x8D, 0x7F, 0x35, 0x56, 0xE4, 0x46, 0x58, 0x1D- },- {- 0x83, 0xF4, 0x33, 0xE4, 0xF1, 0xC5, 0x07, 0x97,- 0x49, 0x3C, 0x58, 0xC2, 0x64, 0xCF, 0xFA, 0x70,- 0xC4, 0xA7, 0xA2, 0x4C, 0x33, 0x4D, 0xBA, 0xA3,- 0xC5, 0x74, 0x89, 0xD9, 0x70, 0xD4, 0x9D, 0x69,- 0x49, 0xFE, 0x45, 0xB7, 0x04, 0xF2, 0x65, 0xEF,- 0xD2, 0xAE, 0xE1, 0xAC, 0x1B, 0x46, 0xF4, 0xAA,- 0x3E, 0x4F, 0xAD, 0x68, 0xB3, 0x79, 0x61, 0xD2,- 0xC7, 0x28, 0x0A, 0xE1, 0x96, 0x72, 0xC8, 0x50- },- {- 0xB5, 0x57, 0xEC, 0xE1, 0x22, 0x72, 0x49, 0x3D,- 0xC2, 0x7E, 0x88, 0xA0, 0x5A, 0xDC, 0xD8, 0x61,- 0x87, 0x5A, 0x0C, 0xD0, 0x0B, 0xD6, 0x8A, 0xDC,- 0x3A, 0x30, 0x1D, 0x26, 0x3A, 0x9C, 0xD9, 0x93,- 0xA9, 0x6A, 0xE1, 0x4C, 0xFC, 0xDD, 0xCB, 0x99,- 0x7C, 0xC9, 0x86, 0x23, 0x93, 0x50, 0x50, 0xEA,- 0x43, 0x55, 0x2A, 0x34, 0x11, 0x07, 0x18, 0x7D,- 0xE7, 0x5C, 0x4E, 0xDE, 0xD7, 0xC7, 0x86, 0xBD- },- {- 0x95, 0x89, 0xC0, 0x81, 0x3B, 0x73, 0x93, 0xDB,- 0xAA, 0xAF, 0xE4, 0x7A, 0xF5, 0xB4, 0x08, 0xB2,- 0x3C, 0x8A, 0x8C, 0x8B, 0xAC, 0x62, 0x55, 0x4B,- 0x8F, 0xA1, 0x32, 0xA3, 0x58, 0xCE, 0x30, 0x83,- 0xB1, 0xD4, 0xE3, 0x97, 0x07, 0xCD, 0x54, 0xA5,- 0x5F, 0x67, 0x3D, 0x48, 0x11, 0x6E, 0xB1, 0xF9,- 0xED, 0x8D, 0xE9, 0xC9, 0x43, 0xCD, 0x2D, 0xE4,- 0x60, 0xA6, 0x8B, 0xDD, 0xF7, 0x1E, 0x98, 0x03- },- {- 0xAE, 0x4C, 0xCF, 0x27, 0xAB, 0x00, 0xA4, 0x0C,- 0x36, 0x37, 0xD3, 0xD2, 0xCE, 0x51, 0xA8, 0x3E,- 0xFB, 0xA6, 0x2D, 0x4A, 0x6F, 0xDA, 0xD6, 0x95,- 0x06, 0x3F, 0xBC, 0x60, 0xA2, 0xD8, 0x2E, 0xC5,- 0xA5, 0x4A, 0xCB, 0xE0, 0x9B, 0xA9, 0x38, 0x8F,- 0x49, 0xAA, 0xC2, 0x7C, 0x99, 0x2D, 0x84, 0x63,- 0x20, 0x36, 0xE1, 0xBD, 0xD4, 0xC5, 0x29, 0xBB,- 0xF1, 0x85, 0x1E, 0xAE, 0x0C, 0x6E, 0xA9, 0x02- },- {- 0xA3, 0x94, 0x4B, 0x2C, 0x31, 0xCB, 0x49, 0x40,- 0x80, 0xB7, 0xEE, 0x1D, 0xB0, 0x81, 0x68, 0x53,- 0xE4, 0x25, 0xB5, 0x4C, 0x48, 0xD6, 0x31, 0x44,- 0x7E, 0xA5, 0x2C, 0x1D, 0x29, 0x52, 0x07, 0x9B,- 0xD8, 0x8F, 0xAB, 0x9E, 0xD0, 0xB7, 0xD8, 0xC0,- 0xBA, 0xAF, 0x0C, 0x4E, 0xCA, 0x19, 0x10, 0xDB,- 0x6F, 0x98, 0x53, 0x4F, 0x0D, 0x42, 0xE5, 0xEB,- 0xB6, 0xC0, 0xA7, 0x5E, 0xF0, 0xD8, 0xB2, 0xC0- },- {- 0xCF, 0xA1, 0xA2, 0x24, 0x68, 0x5A, 0x5F, 0xB2,- 0x01, 0x04, 0x58, 0x20, 0x1C, 0xEB, 0x0C, 0xDA,- 0x21, 0xC8, 0x2B, 0x16, 0x02, 0xDC, 0x41, 0x35,- 0x85, 0xFB, 0xCE, 0x80, 0x97, 0x6F, 0x06, 0x1C,- 0x23, 0x5B, 0x13, 0x67, 0x71, 0x24, 0x98, 0x14,- 0x4A, 0xC1, 0x6A, 0x98, 0x54, 0xF6, 0xFB, 0x32,- 0x3C, 0xBE, 0xB6, 0x23, 0x69, 0xCF, 0x9B, 0x75,- 0x2B, 0x92, 0x52, 0xA2, 0xA7, 0xAC, 0xE1, 0xFD- },- {- 0xFA, 0x62, 0xC6, 0xCF, 0xC8, 0xF0, 0x79, 0xE5,- 0x8F, 0x3D, 0x3F, 0xEF, 0xD7, 0xC2, 0x24, 0xE7,- 0x1E, 0xBC, 0x69, 0xA9, 0x5B, 0x18, 0x35, 0xCC,- 0xC3, 0x2F, 0x35, 0x07, 0x77, 0x05, 0x11, 0x02,- 0x61, 0x54, 0x92, 0xD6, 0x7F, 0xB6, 0xDE, 0x62,- 0xCF, 0x2A, 0xD5, 0xB1, 0x84, 0x67, 0xFE, 0x87,- 0x15, 0x74, 0x88, 0x82, 0xDB, 0x89, 0xFF, 0x86,- 0xEF, 0xDF, 0x2F, 0x96, 0xF8, 0x13, 0x5E, 0xD2- },- {- 0xCC, 0x63, 0x3F, 0xD4, 0xEA, 0x6A, 0xC4, 0x08,- 0xC3, 0x87, 0x57, 0x56, 0xB9, 0x01, 0x28, 0x8A,- 0x1D, 0xE1, 0x91, 0x89, 0x28, 0x32, 0xBE, 0x2E,- 0x90, 0x26, 0xDC, 0x65, 0xC2, 0xFF, 0x00, 0x00,- 0x9F, 0x14, 0x36, 0xDD, 0xFF, 0x42, 0x06, 0x26,- 0x0A, 0x3D, 0x66, 0xEF, 0x61, 0x92, 0x14, 0x3E,- 0x57, 0x2F, 0x1E, 0x4B, 0xB8, 0xE5, 0xA7, 0x4B,- 0x12, 0x05, 0x5E, 0x42, 0x41, 0x1C, 0x18, 0xBC- },- {- 0x44, 0xD2, 0xBF, 0x7F, 0x36, 0x96, 0xB8, 0x93,- 0x3F, 0x25, 0x5B, 0x9B, 0xE1, 0xA4, 0xA6, 0xAE,- 0x33, 0x16, 0xC2, 0x5D, 0x03, 0x95, 0xF5, 0x90,- 0xB9, 0xB9, 0x89, 0x8F, 0x12, 0x7E, 0x40, 0xD3,- 0xF4, 0x12, 0x4D, 0x7B, 0xDB, 0xC8, 0x72, 0x5F,- 0x00, 0xB0, 0xD2, 0x81, 0x50, 0xFF, 0x05, 0xB4,- 0xA7, 0x9E, 0x5E, 0x04, 0xE3, 0x4A, 0x47, 0xE9,- 0x08, 0x7B, 0x3F, 0x79, 0xD4, 0x13, 0xAB, 0x7F- },- {- 0x96, 0xFB, 0xCB, 0xB6, 0x0B, 0xD3, 0x13, 0xB8,- 0x84, 0x50, 0x33, 0xE5, 0xBC, 0x05, 0x8A, 0x38,- 0x02, 0x74, 0x38, 0x57, 0x2D, 0x7E, 0x79, 0x57,- 0xF3, 0x68, 0x4F, 0x62, 0x68, 0xAA, 0xDD, 0x3A,- 0xD0, 0x8D, 0x21, 0x76, 0x7E, 0xD6, 0x87, 0x86,- 0x85, 0x33, 0x1B, 0xA9, 0x85, 0x71, 0x48, 0x7E,- 0x12, 0x47, 0x0A, 0xAD, 0x66, 0x93, 0x26, 0x71,- 0x6E, 0x46, 0x66, 0x7F, 0x69, 0xF8, 0xD7, 0xE8- },-};-----#endif---
cbits/blake2/ref/blake2.h view
@@ -1,22 +1,29 @@ /* BLAKE2 reference source code package - reference C implementations - Written in 2012 by Samuel Neves <sneves@dei.uc.pt>+ Copyright 2012, Samuel Neves <sneves@dei.uc.pt>. You may use this under the+ terms of the CC0, the OpenSSL Licence, or the Apache Public License 2.0, at+ your option. The terms of these licenses can be found at: - To the extent possible under law, the author(s) have dedicated all copyright- and related and neighboring rights to this software to the public domain- worldwide. This software is distributed without any warranty.+ - CC0 1.0 Universal : http://creativecommons.org/publicdomain/zero/1.0+ - OpenSSL license : https://www.openssl.org/source/license.html+ - Apache 2.0 : http://www.apache.org/licenses/LICENSE-2.0 - You should have received a copy of the CC0 Public Domain Dedication along with- this software. If not, see <http://creativecommons.org/publicdomain/zero/1.0/>.+ More information about the BLAKE2 hash function can be found at+ https://blake2.net. */-#pragma once-#ifndef __BLAKE2_H__-#define __BLAKE2_H__+#ifndef BLAKE2_H+#define BLAKE2_H #include <stddef.h> #include <stdint.h> +#if defined(_MSC_VER)+#define BLAKE2_PACKED(x) __pragma(pack(push, 1)) x __pragma(pack(pop))+#else+#define BLAKE2_PACKED(x) x __attribute__((packed))+#endif+ #if defined(__cplusplus) extern "C" { #endif@@ -39,112 +46,150 @@ BLAKE2B_PERSONALBYTES = 16 }; -#pragma pack(push, 1)- typedef struct __blake2s_param- {- uint8_t digest_length; // 1- uint8_t key_length; // 2- uint8_t fanout; // 3- uint8_t depth; // 4- uint32_t leaf_length; // 8- uint8_t node_offset[6];// 14- uint8_t node_depth; // 15- uint8_t inner_length; // 16- // uint8_t reserved[0];- uint8_t salt[BLAKE2S_SALTBYTES]; // 24- uint8_t personal[BLAKE2S_PERSONALBYTES]; // 32- } blake2s_param;-- typedef struct __blake2s_state+ typedef struct blake2s_state__ { uint32_t h[8]; uint32_t t[2]; uint32_t f[2];- uint8_t buf[2 * BLAKE2S_BLOCKBYTES];+ uint8_t buf[BLAKE2S_BLOCKBYTES]; size_t buflen;+ size_t outlen; uint8_t last_node; } blake2s_state; - typedef struct __blake2b_param- {- uint8_t digest_length; // 1- uint8_t key_length; // 2- uint8_t fanout; // 3- uint8_t depth; // 4- uint32_t leaf_length; // 8- uint64_t node_offset; // 16- uint8_t node_depth; // 17- uint8_t inner_length; // 18- uint8_t reserved[14]; // 32- uint8_t salt[BLAKE2B_SALTBYTES]; // 48- uint8_t personal[BLAKE2B_PERSONALBYTES]; // 64- } blake2b_param;-- typedef struct __blake2b_state+ typedef struct blake2b_state__ { uint64_t h[8]; uint64_t t[2]; uint64_t f[2];- uint8_t buf[2 * BLAKE2B_BLOCKBYTES];+ uint8_t buf[BLAKE2B_BLOCKBYTES]; size_t buflen;+ size_t outlen; uint8_t last_node; } blake2b_state; - typedef struct __blake2sp_state+ typedef struct blake2sp_state__ { blake2s_state S[8][1]; blake2s_state R[1];- uint8_t buf[8 * BLAKE2S_BLOCKBYTES];- size_t buflen;+ uint8_t buf[8 * BLAKE2S_BLOCKBYTES];+ size_t buflen;+ size_t outlen; } blake2sp_state; - typedef struct __blake2bp_state+ typedef struct blake2bp_state__ { blake2b_state S[4][1]; blake2b_state R[1];- uint8_t buf[4 * BLAKE2B_BLOCKBYTES];- size_t buflen;+ uint8_t buf[4 * BLAKE2B_BLOCKBYTES];+ size_t buflen;+ size_t outlen; } blake2bp_state;-#pragma pack(pop) - // Streaming API- int blake2s_init( blake2s_state *S, const uint8_t outlen );- int blake2s_init_key( blake2s_state *S, const uint8_t outlen, const void *key, const uint8_t keylen );++ BLAKE2_PACKED(struct blake2s_param__+ {+ uint8_t digest_length; /* 1 */+ uint8_t key_length; /* 2 */+ uint8_t fanout; /* 3 */+ uint8_t depth; /* 4 */+ uint32_t leaf_length; /* 8 */+ uint32_t node_offset; /* 12 */+ uint16_t xof_length; /* 14 */+ uint8_t node_depth; /* 15 */+ uint8_t inner_length; /* 16 */+ /* uint8_t reserved[0]; */+ uint8_t salt[BLAKE2S_SALTBYTES]; /* 24 */+ uint8_t personal[BLAKE2S_PERSONALBYTES]; /* 32 */+ });++ typedef struct blake2s_param__ blake2s_param;++ BLAKE2_PACKED(struct blake2b_param__+ {+ uint8_t digest_length; /* 1 */+ uint8_t key_length; /* 2 */+ uint8_t fanout; /* 3 */+ uint8_t depth; /* 4 */+ uint32_t leaf_length; /* 8 */+ uint32_t node_offset; /* 12 */+ uint32_t xof_length; /* 16 */+ uint8_t node_depth; /* 17 */+ uint8_t inner_length; /* 18 */+ uint8_t reserved[14]; /* 32 */+ uint8_t salt[BLAKE2B_SALTBYTES]; /* 48 */+ uint8_t personal[BLAKE2B_PERSONALBYTES]; /* 64 */+ });++ typedef struct blake2b_param__ blake2b_param;++ typedef struct blake2xs_state__+ {+ blake2s_state S[1];+ blake2s_param P[1];+ } blake2xs_state;++ typedef struct blake2xb_state__+ {+ blake2b_state S[1];+ blake2b_param P[1];+ } blake2xb_state;++ /* Padded structs result in a compile-time error */+ enum {+ BLAKE2_DUMMY_1 = 1/(sizeof(blake2s_param) == BLAKE2S_OUTBYTES),+ BLAKE2_DUMMY_2 = 1/(sizeof(blake2b_param) == BLAKE2B_OUTBYTES)+ };++ /* Streaming API */+ int blake2s_init( blake2s_state *S, size_t outlen );+ int blake2s_init_key( blake2s_state *S, size_t outlen, const void *key, size_t keylen ); int blake2s_init_param( blake2s_state *S, const blake2s_param *P );- int blake2s_update( blake2s_state *S, const uint8_t *in, uint64_t inlen );- int blake2s_final( blake2s_state *S, uint8_t *out, uint8_t outlen );+ int blake2s_update( blake2s_state *S, const void *in, size_t inlen );+ int blake2s_final( blake2s_state *S, void *out, size_t outlen ); - int blake2b_init( blake2b_state *S, const uint8_t outlen );- int blake2b_init_key( blake2b_state *S, const uint8_t outlen, const void *key, const uint8_t keylen );+ int blake2b_init( blake2b_state *S, size_t outlen );+ int blake2b_init_key( blake2b_state *S, size_t outlen, const void *key, size_t keylen ); int blake2b_init_param( blake2b_state *S, const blake2b_param *P );- int blake2b_update( blake2b_state *S, const uint8_t *in, uint64_t inlen );- int blake2b_final( blake2b_state *S, uint8_t *out, uint8_t outlen );+ int blake2b_update( blake2b_state *S, const void *in, size_t inlen );+ int blake2b_final( blake2b_state *S, void *out, size_t outlen ); - int blake2sp_init( blake2sp_state *S, const uint8_t outlen );- int blake2sp_init_key( blake2sp_state *S, const uint8_t outlen, const void *key, const uint8_t keylen );- int blake2sp_update( blake2sp_state *S, const uint8_t *in, uint64_t inlen );- int blake2sp_final( blake2sp_state *S, uint8_t *out, uint8_t outlen );+ int blake2sp_init( blake2sp_state *S, size_t outlen );+ int blake2sp_init_key( blake2sp_state *S, size_t outlen, const void *key, size_t keylen );+ int blake2sp_update( blake2sp_state *S, const void *in, size_t inlen );+ int blake2sp_final( blake2sp_state *S, void *out, size_t outlen ); - int blake2bp_init( blake2bp_state *S, const uint8_t outlen );- int blake2bp_init_key( blake2bp_state *S, const uint8_t outlen, const void *key, const uint8_t keylen );- int blake2bp_update( blake2bp_state *S, const uint8_t *in, uint64_t inlen );- int blake2bp_final( blake2bp_state *S, uint8_t *out, uint8_t outlen );+ int blake2bp_init( blake2bp_state *S, size_t outlen );+ int blake2bp_init_key( blake2bp_state *S, size_t outlen, const void *key, size_t keylen );+ int blake2bp_update( blake2bp_state *S, const void *in, size_t inlen );+ int blake2bp_final( blake2bp_state *S, void *out, size_t outlen ); - // Simple API- int blake2s( uint8_t *out, const void *in, const void *key, const uint8_t outlen, const uint64_t inlen, uint8_t keylen );- int blake2b( uint8_t *out, const void *in, const void *key, const uint8_t outlen, const uint64_t inlen, uint8_t keylen );+ /* Variable output length API */+ int blake2xs_init( blake2xs_state *S, const size_t outlen );+ int blake2xs_init_key( blake2xs_state *S, const size_t outlen, const void *key, size_t keylen );+ int blake2xs_update( blake2xs_state *S, const void *in, size_t inlen );+ int blake2xs_final(blake2xs_state *S, void *out, size_t outlen); - int blake2sp( uint8_t *out, const void *in, const void *key, const uint8_t outlen, const uint64_t inlen, uint8_t keylen );- int blake2bp( uint8_t *out, const void *in, const void *key, const uint8_t outlen, const uint64_t inlen, uint8_t keylen );+ int blake2xb_init( blake2xb_state *S, const size_t outlen );+ int blake2xb_init_key( blake2xb_state *S, const size_t outlen, const void *key, size_t keylen );+ int blake2xb_update( blake2xb_state *S, const void *in, size_t inlen );+ int blake2xb_final(blake2xb_state *S, void *out, size_t outlen); - static inline int blake2( uint8_t *out, const void *in, const void *key, const uint8_t outlen, const uint64_t inlen, uint8_t keylen )- {- return blake2b( out, in, key, outlen, inlen, keylen );- }+ /* Simple API */+ int blake2s( void *out, size_t outlen, const void *in, size_t inlen, const void *key, size_t keylen );+ int blake2b( void *out, size_t outlen, const void *in, size_t inlen, const void *key, size_t keylen ); + int blake2sp( void *out, size_t outlen, const void *in, size_t inlen, const void *key, size_t keylen );+ int blake2bp( void *out, size_t outlen, const void *in, size_t inlen, const void *key, size_t keylen );++ int blake2xs( void *out, size_t outlen, const void *in, size_t inlen, const void *key, size_t keylen );+ int blake2xb( void *out, size_t outlen, const void *in, size_t inlen, const void *key, size_t keylen );++ /* This is simply an alias for blake2b */+ int blake2( void *out, size_t outlen, const void *in, size_t inlen, const void *key, size_t keylen );+ #if defined(__cplusplus) } #endif #endif-
cbits/blake2/ref/blake2b-ref.c view
@@ -1,14 +1,16 @@ /* BLAKE2 reference source code package - reference C implementations - Written in 2012 by Samuel Neves <sneves@dei.uc.pt>+ Copyright 2012, Samuel Neves <sneves@dei.uc.pt>. You may use this under the+ terms of the CC0, the OpenSSL Licence, or the Apache Public License 2.0, at+ your option. The terms of these licenses can be found at: - To the extent possible under law, the author(s) have dedicated all copyright- and related and neighboring rights to this software to the public domain- worldwide. This software is distributed without any warranty.+ - CC0 1.0 Universal : http://creativecommons.org/publicdomain/zero/1.0+ - OpenSSL license : https://www.openssl.org/source/license.html+ - Apache 2.0 : http://www.apache.org/licenses/LICENSE-2.0 - You should have received a copy of the CC0 Public Domain Dedication along with- this software. If not, see <http://creativecommons.org/publicdomain/zero/1.0/>.+ More information about the BLAKE2 hash function can be found at+ https://blake2.net. */ #include <stdint.h>@@ -43,135 +45,69 @@ }; -static inline int blake2b_set_lastnode( blake2b_state *S )-{- S->f[1] = -1;- return 0;-}--static inline int blake2b_clear_lastnode( blake2b_state *S )+static void blake2b_set_lastnode( blake2b_state *S ) {- S->f[1] = 0;- return 0;+ S->f[1] = (uint64_t)-1; } /* Some helper functions, not necessarily useful */-static inline int blake2b_set_lastblock( blake2b_state *S )+static int blake2b_is_lastblock( const blake2b_state *S ) {- if( S->last_node ) blake2b_set_lastnode( S );-- S->f[0] = -1;- return 0;+ return S->f[0] != 0; } -static inline int blake2b_clear_lastblock( blake2b_state *S )+static void blake2b_set_lastblock( blake2b_state *S ) {- if( S->last_node ) blake2b_clear_lastnode( S );+ if( S->last_node ) blake2b_set_lastnode( S ); - S->f[0] = 0;- return 0;+ S->f[0] = (uint64_t)-1; } -static inline int blake2b_increment_counter( blake2b_state *S, const uint64_t inc )+static void blake2b_increment_counter( blake2b_state *S, const uint64_t inc ) { S->t[0] += inc; S->t[1] += ( S->t[0] < inc );- return 0; } ---// Parameter-related functions-static inline int blake2b_param_set_digest_length( blake2b_param *P, const uint8_t digest_length )-{- P->digest_length = digest_length;- return 0;-}--static inline int blake2b_param_set_fanout( blake2b_param *P, const uint8_t fanout )-{- P->fanout = fanout;- return 0;-}--static inline int blake2b_param_set_max_depth( blake2b_param *P, const uint8_t depth )-{- P->depth = depth;- return 0;-}--static inline int blake2b_param_set_leaf_length( blake2b_param *P, const uint32_t leaf_length )-{- store32( &P->leaf_length, leaf_length );- return 0;-}--static inline int blake2b_param_set_node_offset( blake2b_param *P, const uint64_t node_offset )-{- store64( &P->node_offset, node_offset );- return 0;-}--static inline int blake2b_param_set_node_depth( blake2b_param *P, const uint8_t node_depth )-{- P->node_depth = node_depth;- return 0;-}--static inline int blake2b_param_set_inner_length( blake2b_param *P, const uint8_t inner_length )-{- P->inner_length = inner_length;- return 0;-}--static inline int blake2b_param_set_salt( blake2b_param *P, const uint8_t salt[BLAKE2B_SALTBYTES] )-{- memcpy( P->salt, salt, BLAKE2B_SALTBYTES );- return 0;-}--static inline int blake2b_param_set_personal( blake2b_param *P, const uint8_t personal[BLAKE2B_PERSONALBYTES] )-{- memcpy( P->personal, personal, BLAKE2B_PERSONALBYTES );- return 0;-}--static inline int blake2b_init0( blake2b_state *S )+static void blake2b_init0( blake2b_state *S ) {+ size_t i; memset( S, 0, sizeof( blake2b_state ) ); - for( int i = 0; i < 8; ++i ) S->h[i] = blake2b_IV[i];-- return 0;+ for( i = 0; i < 8; ++i ) S->h[i] = blake2b_IV[i]; } /* init xors IV with input parameter block */ int blake2b_init_param( blake2b_state *S, const blake2b_param *P ) {- blake2b_init0( S ); const uint8_t *p = ( const uint8_t * )( P );+ size_t i; + blake2b_init0( S );+ /* IV XOR ParamBlock */- for( size_t i = 0; i < 8; ++i )+ for( i = 0; i < 8; ++i ) S->h[i] ^= load64( p + sizeof( S->h[i] ) * i ); + S->outlen = P->digest_length; return 0; } -int blake2b_init( blake2b_state *S, const uint8_t outlen )+int blake2b_init( blake2b_state *S, size_t outlen ) { blake2b_param P[1]; if ( ( !outlen ) || ( outlen > BLAKE2B_OUTBYTES ) ) return -1; - P->digest_length = outlen;+ P->digest_length = (uint8_t)outlen; P->key_length = 0; P->fanout = 1; P->depth = 1; store32( &P->leaf_length, 0 );- store64( &P->node_offset, 0 );+ store32( &P->node_offset, 0 );+ store32( &P->xof_length, 0 ); P->node_depth = 0; P->inner_length = 0; memset( P->reserved, 0, sizeof( P->reserved ) );@@ -181,7 +117,7 @@ } -int blake2b_init_key( blake2b_state *S, const uint8_t outlen, const void *key, const uint8_t keylen )+int blake2b_init_key( blake2b_state *S, size_t outlen, const void *key, size_t keylen ) { blake2b_param P[1]; @@ -189,12 +125,13 @@ if ( !key || !keylen || keylen > BLAKE2B_KEYBYTES ) return -1; - P->digest_length = outlen;- P->key_length = keylen;+ P->digest_length = (uint8_t)outlen;+ P->key_length = (uint8_t)keylen; P->fanout = 1; P->depth = 1; store32( &P->leaf_length, 0 );- store64( &P->node_offset, 0 );+ store32( &P->node_offset, 0 );+ store32( &P->xof_length, 0 ); P->node_depth = 0; P->inner_length = 0; memset( P->reserved, 0, sizeof( P->reserved ) );@@ -213,39 +150,20 @@ return 0; } -static int blake2b_compress( blake2b_state *S, const uint8_t block[BLAKE2B_BLOCKBYTES] )-{- uint64_t m[16];- uint64_t v[16];- int i;-- for( i = 0; i < 16; ++i )- m[i] = load64( block + i * sizeof( m[i] ) );-- for( i = 0; i < 8; ++i )- v[i] = S->h[i];-- v[ 8] = blake2b_IV[0];- v[ 9] = blake2b_IV[1];- v[10] = blake2b_IV[2];- v[11] = blake2b_IV[3];- v[12] = S->t[0] ^ blake2b_IV[4];- v[13] = S->t[1] ^ blake2b_IV[5];- v[14] = S->f[0] ^ blake2b_IV[6];- v[15] = S->f[1] ^ blake2b_IV[7];-#define G(r,i,a,b,c,d) \- do { \+#define G(r,i,a,b,c,d) \+ do { \ a = a + b + m[blake2b_sigma[r][2*i+0]]; \- d = rotr64(d ^ a, 32); \- c = c + d; \- b = rotr64(b ^ c, 24); \+ d = rotr64(d ^ a, 32); \+ c = c + d; \+ b = rotr64(b ^ c, 24); \ a = a + b + m[blake2b_sigma[r][2*i+1]]; \- d = rotr64(d ^ a, 16); \- c = c + d; \- b = rotr64(b ^ c, 63); \+ d = rotr64(d ^ a, 16); \+ c = c + d; \+ b = rotr64(b ^ c, 63); \ } while(0)-#define ROUND(r) \- do { \++#define ROUND(r) \+ do { \ G(r,0,v[ 0],v[ 4],v[ 8],v[12]); \ G(r,1,v[ 1],v[ 5],v[ 9],v[13]); \ G(r,2,v[ 2],v[ 6],v[10],v[14]); \@@ -255,6 +173,30 @@ G(r,6,v[ 2],v[ 7],v[ 8],v[13]); \ G(r,7,v[ 3],v[ 4],v[ 9],v[14]); \ } while(0)++static void blake2b_compress( blake2b_state *S, const uint8_t block[BLAKE2B_BLOCKBYTES] )+{+ uint64_t m[16];+ uint64_t v[16];+ size_t i;++ for( i = 0; i < 16; ++i ) {+ m[i] = load64( block + i * sizeof( m[i] ) );+ }++ for( i = 0; i < 8; ++i ) {+ v[i] = S->h[i];+ }++ v[ 8] = blake2b_IV[0];+ v[ 9] = blake2b_IV[1];+ v[10] = blake2b_IV[2];+ v[11] = blake2b_IV[3];+ v[12] = blake2b_IV[4] ^ S->t[0];+ v[13] = blake2b_IV[5] ^ S->t[1];+ v[14] = blake2b_IV[6] ^ S->f[0];+ v[15] = blake2b_IV[7] ^ S->f[1];+ ROUND( 0 ); ROUND( 1 ); ROUND( 2 );@@ -268,75 +210,67 @@ ROUND( 10 ); ROUND( 11 ); - for( i = 0; i < 8; ++i )+ for( i = 0; i < 8; ++i ) { S->h[i] = S->h[i] ^ v[i] ^ v[i + 8];+ }+} #undef G #undef ROUND- return 0;-} -/* inlen now in bytes */-int blake2b_update( blake2b_state *S, const uint8_t *in, uint64_t inlen )+int blake2b_update( blake2b_state *S, const void *pin, size_t inlen ) {- while( inlen > 0 )+ const unsigned char * in = (const unsigned char *)pin;+ if( inlen > 0 ) { size_t left = S->buflen;- size_t fill = 2 * BLAKE2B_BLOCKBYTES - left;-+ size_t fill = BLAKE2B_BLOCKBYTES - left; if( inlen > fill ) {- memcpy( S->buf + left, in, fill ); // Fill buffer- S->buflen += fill;+ S->buflen = 0;+ memcpy( S->buf + left, in, fill ); /* Fill buffer */ blake2b_increment_counter( S, BLAKE2B_BLOCKBYTES );- blake2b_compress( S, S->buf ); // Compress- memcpy( S->buf, S->buf + BLAKE2B_BLOCKBYTES, BLAKE2B_BLOCKBYTES ); // Shift buffer left- S->buflen -= BLAKE2B_BLOCKBYTES;- in += fill;- inlen -= fill;- }- else // inlen <= fill- {- memcpy( S->buf + left, in, inlen );- S->buflen += inlen; // Be lazy, do not compress- in += inlen;- inlen -= inlen;+ blake2b_compress( S, S->buf ); /* Compress */+ in += fill; inlen -= fill;+ while(inlen > BLAKE2B_BLOCKBYTES) {+ blake2b_increment_counter(S, BLAKE2B_BLOCKBYTES);+ blake2b_compress( S, in );+ in += BLAKE2B_BLOCKBYTES;+ inlen -= BLAKE2B_BLOCKBYTES;+ } }+ memcpy( S->buf + S->buflen, in, inlen );+ S->buflen += inlen; }- return 0; } -/* Is this correct? */-int blake2b_final( blake2b_state *S, uint8_t *out, uint8_t outlen )+int blake2b_final( blake2b_state *S, void *out, size_t outlen ) { uint8_t buffer[BLAKE2B_OUTBYTES] = {0};+ size_t i; - if( outlen > BLAKE2B_OUTBYTES )+ if( out == NULL || outlen < S->outlen ) return -1; - if( S->buflen > BLAKE2B_BLOCKBYTES )- {- blake2b_increment_counter( S, BLAKE2B_BLOCKBYTES );- blake2b_compress( S, S->buf );- S->buflen -= BLAKE2B_BLOCKBYTES;- memcpy( S->buf, S->buf + BLAKE2B_BLOCKBYTES, S->buflen );- }+ if( blake2b_is_lastblock( S ) )+ return -1; blake2b_increment_counter( S, S->buflen ); blake2b_set_lastblock( S );- memset( S->buf + S->buflen, 0, 2 * BLAKE2B_BLOCKBYTES - S->buflen ); /* Padding */+ memset( S->buf + S->buflen, 0, BLAKE2B_BLOCKBYTES - S->buflen ); /* Padding */ blake2b_compress( S, S->buf ); - for( int i = 0; i < 8; ++i ) /* Output full hash to temp buffer */+ for( i = 0; i < 8; ++i ) /* Output full hash to temp buffer */ store64( buffer + sizeof( S->h[i] ) * i, S->h[i] ); - memcpy( out, buffer, outlen );+ memcpy( out, buffer, S->outlen );+ secure_zero_memory(buffer, sizeof(buffer)); return 0; } /* inlen, at least, should be uint64_t. Others can be size_t. */-int blake2b( uint8_t *out, const void *in, const void *key, const uint8_t outlen, const uint64_t inlen, uint8_t keylen )+int blake2b( void *out, size_t outlen, const void *in, size_t inlen, const void *key, size_t keylen ) { blake2b_state S[1]; @@ -365,41 +299,81 @@ return 0; } +int blake2( void *out, size_t outlen, const void *in, size_t inlen, const void *key, size_t keylen ) {+ return blake2b(out, outlen, in, inlen, key, keylen);+}+ #if defined(SUPERCOP) int crypto_hash( unsigned char *out, unsigned char *in, unsigned long long inlen ) {- return blake2b( out, in, NULL, BLAKE2B_OUTBYTES, inlen, 0 );+ return blake2b( out, BLAKE2B_OUTBYTES, in, inlen, NULL, 0 ); } #endif #if defined(BLAKE2B_SELFTEST) #include <string.h> #include "blake2-kat.h"-int main( int argc, char **argv )+int main( void ) { uint8_t key[BLAKE2B_KEYBYTES];- uint8_t buf[KAT_LENGTH];+ uint8_t buf[BLAKE2_KAT_LENGTH];+ size_t i, step; - for( size_t i = 0; i < BLAKE2B_KEYBYTES; ++i )+ for( i = 0; i < BLAKE2B_KEYBYTES; ++i ) key[i] = ( uint8_t )i; - for( size_t i = 0; i < KAT_LENGTH; ++i )+ for( i = 0; i < BLAKE2_KAT_LENGTH; ++i ) buf[i] = ( uint8_t )i; - for( size_t i = 0; i < KAT_LENGTH; ++i )+ /* Test simple API */+ for( i = 0; i < BLAKE2_KAT_LENGTH; ++i ) { uint8_t hash[BLAKE2B_OUTBYTES];- blake2b( hash, buf, key, BLAKE2B_OUTBYTES, i, BLAKE2B_KEYBYTES );+ blake2b( hash, BLAKE2B_OUTBYTES, buf, i, key, BLAKE2B_KEYBYTES ); if( 0 != memcmp( hash, blake2b_keyed_kat[i], BLAKE2B_OUTBYTES ) ) {- puts( "error" );- return -1;+ goto fail; } } + /* Test streaming API */+ for(step = 1; step < BLAKE2B_BLOCKBYTES; ++step) {+ for (i = 0; i < BLAKE2_KAT_LENGTH; ++i) {+ uint8_t hash[BLAKE2B_OUTBYTES];+ blake2b_state S;+ uint8_t * p = buf;+ size_t mlen = i;+ int err = 0;++ if( (err = blake2b_init_key(&S, BLAKE2B_OUTBYTES, key, BLAKE2B_KEYBYTES)) < 0 ) {+ goto fail;+ }++ while (mlen >= step) {+ if ( (err = blake2b_update(&S, p, step)) < 0 ) {+ goto fail;+ }+ mlen -= step;+ p += step;+ }+ if ( (err = blake2b_update(&S, p, mlen)) < 0) {+ goto fail;+ }+ if ( (err = blake2b_final(&S, hash, BLAKE2B_OUTBYTES)) < 0) {+ goto fail;+ }++ if (0 != memcmp(hash, blake2b_keyed_kat[i], BLAKE2B_OUTBYTES)) {+ goto fail;+ }+ }+ }+ puts( "ok" ); return 0;+fail:+ puts("error");+ return -1; } #endif-
cbits/blake2/ref/blake2bp-ref.c view
@@ -1,14 +1,16 @@ /* BLAKE2 reference source code package - reference C implementations - Written in 2012 by Samuel Neves <sneves@dei.uc.pt>+ Copyright 2012, Samuel Neves <sneves@dei.uc.pt>. You may use this under the+ terms of the CC0, the OpenSSL Licence, or the Apache Public License 2.0, at+ your option. The terms of these licenses can be found at: - To the extent possible under law, the author(s) have dedicated all copyright- and related and neighboring rights to this software to the public domain- worldwide. This software is distributed without any warranty.+ - CC0 1.0 Universal : http://creativecommons.org/publicdomain/zero/1.0+ - OpenSSL license : https://www.openssl.org/source/license.html+ - Apache 2.0 : http://www.apache.org/licenses/LICENSE-2.0 - You should have received a copy of the CC0 Public Domain Dedication along with- this software. If not, see <http://creativecommons.org/publicdomain/zero/1.0/>.+ More information about the BLAKE2 hash function can be found at+ https://blake2.net. */ #include <stdio.h>@@ -25,32 +27,48 @@ #define PARALLELISM_DEGREE 4 -static inline int blake2bp_init_leaf( blake2b_state *S, uint8_t outlen, uint8_t keylen, uint64_t offset )+/*+ blake2b_init_param defaults to setting the expecting output length+ from the digest_length parameter block field.++ In some cases, however, we do not want this, as the output length+ of these instances is given by inner_length instead.+*/+static int blake2bp_init_leaf_param( blake2b_state *S, const blake2b_param *P ) {+ int err = blake2b_init_param(S, P);+ S->outlen = P->inner_length;+ return err;+}++static int blake2bp_init_leaf( blake2b_state *S, size_t outlen, size_t keylen, uint64_t offset )+{ blake2b_param P[1];- P->digest_length = outlen;- P->key_length = keylen;+ P->digest_length = (uint8_t)outlen;+ P->key_length = (uint8_t)keylen; P->fanout = PARALLELISM_DEGREE; P->depth = 2; store32( &P->leaf_length, 0 );- store64( &P->node_offset, offset );+ store32( &P->node_offset, offset );+ store32( &P->xof_length, 0 ); P->node_depth = 0; P->inner_length = BLAKE2B_OUTBYTES; memset( P->reserved, 0, sizeof( P->reserved ) ); memset( P->salt, 0, sizeof( P->salt ) ); memset( P->personal, 0, sizeof( P->personal ) );- return blake2b_init_param( S, P );+ return blake2bp_init_leaf_param( S, P ); } -static inline int blake2bp_init_root( blake2b_state *S, uint8_t outlen, uint8_t keylen )+static int blake2bp_init_root( blake2b_state *S, size_t outlen, size_t keylen ) { blake2b_param P[1];- P->digest_length = outlen;- P->key_length = keylen;+ P->digest_length = (uint8_t)outlen;+ P->key_length = (uint8_t)keylen; P->fanout = PARALLELISM_DEGREE; P->depth = 2; store32( &P->leaf_length, 0 );- store64( &P->node_offset, 0 );+ store32( &P->node_offset, 0 );+ store32( &P->xof_length, 0 ); P->node_depth = 1; P->inner_length = BLAKE2B_OUTBYTES; memset( P->reserved, 0, sizeof( P->reserved ) );@@ -60,17 +78,20 @@ } -int blake2bp_init( blake2bp_state *S, const uint8_t outlen )+int blake2bp_init( blake2bp_state *S, size_t outlen ) {+ size_t i;+ if( !outlen || outlen > BLAKE2B_OUTBYTES ) return -1; memset( S->buf, 0, sizeof( S->buf ) ); S->buflen = 0;+ S->outlen = outlen; if( blake2bp_init_root( S->R, outlen, 0 ) < 0 ) return -1; - for( size_t i = 0; i < PARALLELISM_DEGREE; ++i )+ for( i = 0; i < PARALLELISM_DEGREE; ++i ) if( blake2bp_init_leaf( S->S[i], outlen, 0, i ) < 0 ) return -1; S->R->last_node = 1;@@ -78,19 +99,22 @@ return 0; } -int blake2bp_init_key( blake2bp_state *S, const uint8_t outlen, const void *key, const uint8_t keylen )+int blake2bp_init_key( blake2bp_state *S, size_t outlen, const void *key, size_t keylen ) {+ size_t i;+ if( !outlen || outlen > BLAKE2B_OUTBYTES ) return -1; if( !key || !keylen || keylen > BLAKE2B_KEYBYTES ) return -1; memset( S->buf, 0, sizeof( S->buf ) ); S->buflen = 0;+ S->outlen = outlen; if( blake2bp_init_root( S->R, outlen, keylen ) < 0 ) return -1; - for( size_t i = 0; i < PARALLELISM_DEGREE; ++i )+ for( i = 0; i < PARALLELISM_DEGREE; ++i ) if( blake2bp_init_leaf( S->S[i], outlen, keylen, i ) < 0 ) return -1; S->R->last_node = 1;@@ -100,7 +124,7 @@ memset( block, 0, BLAKE2B_BLOCKBYTES ); memcpy( block, key, keylen ); - for( size_t i = 0; i < PARALLELISM_DEGREE; ++i )+ for( i = 0; i < PARALLELISM_DEGREE; ++i ) blake2b_update( S->S[i], block, BLAKE2B_BLOCKBYTES ); secure_zero_memory( block, BLAKE2B_BLOCKBYTES ); /* Burn the key from stack */@@ -109,16 +133,18 @@ } -int blake2bp_update( blake2bp_state *S, const uint8_t *in, uint64_t inlen )+int blake2bp_update( blake2bp_state *S, const void *pin, size_t inlen ) {+ const unsigned char * in = (const unsigned char *)pin; size_t left = S->buflen; size_t fill = sizeof( S->buf ) - left;+ size_t i; if( left && inlen >= fill ) { memcpy( S->buf + left, in, fill ); - for( size_t i = 0; i < PARALLELISM_DEGREE; ++i )+ for( i = 0; i < PARALLELISM_DEGREE; ++i ) blake2b_update( S->S[i], S->buf + i * BLAKE2B_BLOCKBYTES, BLAKE2B_BLOCKBYTES ); in += fill;@@ -130,19 +156,19 @@ #pragma omp parallel shared(S), num_threads(PARALLELISM_DEGREE) #else - for( size_t id__ = 0; id__ < PARALLELISM_DEGREE; ++id__ )+ for( i = 0; i < PARALLELISM_DEGREE; ++i ) #endif { #if defined(_OPENMP)- size_t id__ = omp_get_thread_num();+ size_t i = omp_get_thread_num(); #endif- uint64_t inlen__ = inlen;- const uint8_t *in__ = ( const uint8_t * )in;- in__ += id__ * BLAKE2B_BLOCKBYTES;+ size_t inlen__ = inlen;+ const unsigned char *in__ = ( const unsigned char * )in;+ in__ += i * BLAKE2B_BLOCKBYTES; while( inlen__ >= PARALLELISM_DEGREE * BLAKE2B_BLOCKBYTES ) {- blake2b_update( S->S[id__], in__, BLAKE2B_BLOCKBYTES );+ blake2b_update( S->S[i], in__, BLAKE2B_BLOCKBYTES ); in__ += PARALLELISM_DEGREE * BLAKE2B_BLOCKBYTES; inlen__ -= PARALLELISM_DEGREE * BLAKE2B_BLOCKBYTES; }@@ -158,11 +184,16 @@ return 0; } -int blake2bp_final( blake2bp_state *S, uint8_t *out, const uint8_t outlen )+int blake2bp_final( blake2bp_state *S, void *out, size_t outlen ) { uint8_t hash[PARALLELISM_DEGREE][BLAKE2B_OUTBYTES];+ size_t i; - for( size_t i = 0; i < PARALLELISM_DEGREE; ++i )+ if(out == NULL || outlen < S->outlen) {+ return -1;+ }++ for( i = 0; i < PARALLELISM_DEGREE; ++i ) { if( S->buflen > i * BLAKE2B_BLOCKBYTES ) {@@ -176,18 +207,18 @@ blake2b_final( S->S[i], hash[i], BLAKE2B_OUTBYTES ); } - for( size_t i = 0; i < PARALLELISM_DEGREE; ++i )+ for( i = 0; i < PARALLELISM_DEGREE; ++i ) blake2b_update( S->R, hash[i], BLAKE2B_OUTBYTES ); - - return blake2b_final( S->R, out, outlen );+ return blake2b_final( S->R, out, S->outlen ); } -int blake2bp( uint8_t *out, const void *in, const void *key, uint8_t outlen, uint64_t inlen, uint8_t keylen )+int blake2bp( void *out, size_t outlen, const void *in, size_t inlen, const void *key, size_t keylen ) { uint8_t hash[PARALLELISM_DEGREE][BLAKE2B_OUTBYTES]; blake2b_state S[PARALLELISM_DEGREE][1]; blake2b_state FS[1];+ size_t i; /* Verify parameters */ if ( NULL == in && inlen > 0 ) return -1;@@ -200,10 +231,10 @@ if( keylen > BLAKE2B_KEYBYTES ) return -1; - for( size_t i = 0; i < PARALLELISM_DEGREE; ++i )+ for( i = 0; i < PARALLELISM_DEGREE; ++i ) if( blake2bp_init_leaf( S[i], outlen, keylen, i ) < 0 ) return -1; - S[PARALLELISM_DEGREE - 1]->last_node = 1; // mark last node+ S[PARALLELISM_DEGREE - 1]->last_node = 1; /* mark last node */ if( keylen > 0 ) {@@ -211,7 +242,7 @@ memset( block, 0, BLAKE2B_BLOCKBYTES ); memcpy( block, key, keylen ); - for( size_t i = 0; i < PARALLELISM_DEGREE; ++i )+ for( i = 0; i < PARALLELISM_DEGREE; ++i ) blake2b_update( S[i], block, BLAKE2B_BLOCKBYTES ); secure_zero_memory( block, BLAKE2B_BLOCKBYTES ); /* Burn the key from stack */@@ -221,39 +252,39 @@ #pragma omp parallel shared(S,hash), num_threads(PARALLELISM_DEGREE) #else - for( size_t id__ = 0; id__ < PARALLELISM_DEGREE; ++id__ )+ for( i = 0; i < PARALLELISM_DEGREE; ++i ) #endif { #if defined(_OPENMP)- size_t id__ = omp_get_thread_num();+ size_t i = omp_get_thread_num(); #endif- uint64_t inlen__ = inlen;- const uint8_t *in__ = ( const uint8_t * )in;- in__ += id__ * BLAKE2B_BLOCKBYTES;+ size_t inlen__ = inlen;+ const unsigned char *in__ = ( const unsigned char * )in;+ in__ += i * BLAKE2B_BLOCKBYTES; while( inlen__ >= PARALLELISM_DEGREE * BLAKE2B_BLOCKBYTES ) {- blake2b_update( S[id__], in__, BLAKE2B_BLOCKBYTES );+ blake2b_update( S[i], in__, BLAKE2B_BLOCKBYTES ); in__ += PARALLELISM_DEGREE * BLAKE2B_BLOCKBYTES; inlen__ -= PARALLELISM_DEGREE * BLAKE2B_BLOCKBYTES; } - if( inlen__ > id__ * BLAKE2B_BLOCKBYTES )+ if( inlen__ > i * BLAKE2B_BLOCKBYTES ) {- const size_t left = inlen__ - id__ * BLAKE2B_BLOCKBYTES;+ const size_t left = inlen__ - i * BLAKE2B_BLOCKBYTES; const size_t len = left <= BLAKE2B_BLOCKBYTES ? left : BLAKE2B_BLOCKBYTES;- blake2b_update( S[id__], in__, len );+ blake2b_update( S[i], in__, len ); } - blake2b_final( S[id__], hash[id__], BLAKE2B_OUTBYTES );+ blake2b_final( S[i], hash[i], BLAKE2B_OUTBYTES ); } if( blake2bp_init_root( FS, outlen, keylen ) < 0 ) return -1; - FS->last_node = 1; // Mark as last node+ FS->last_node = 1; /* Mark as last node */ - for( size_t i = 0; i < PARALLELISM_DEGREE; ++i )+ for( i = 0; i < PARALLELISM_DEGREE; ++i ) blake2b_update( FS, hash[i], BLAKE2B_OUTBYTES ); return blake2b_final( FS, out, outlen );;@@ -262,30 +293,67 @@ #if defined(BLAKE2BP_SELFTEST) #include <string.h> #include "blake2-kat.h"-int main( int argc, char **argv )+int main( void ) { uint8_t key[BLAKE2B_KEYBYTES];- uint8_t buf[KAT_LENGTH];+ uint8_t buf[BLAKE2_KAT_LENGTH];+ size_t i, step; - for( size_t i = 0; i < BLAKE2B_KEYBYTES; ++i )+ for( i = 0; i < BLAKE2B_KEYBYTES; ++i ) key[i] = ( uint8_t )i; - for( size_t i = 0; i < KAT_LENGTH; ++i )+ for( i = 0; i < BLAKE2_KAT_LENGTH; ++i ) buf[i] = ( uint8_t )i; - for( size_t i = 0; i < KAT_LENGTH; ++i )+ /* Test simple API */+ for( i = 0; i < BLAKE2_KAT_LENGTH; ++i ) { uint8_t hash[BLAKE2B_OUTBYTES];- blake2bp( hash, buf, key, BLAKE2B_OUTBYTES, i, BLAKE2B_KEYBYTES );+ blake2bp( hash, BLAKE2B_OUTBYTES, buf, i, key, BLAKE2B_KEYBYTES ); if( 0 != memcmp( hash, blake2bp_keyed_kat[i], BLAKE2B_OUTBYTES ) ) {- puts( "error" );- return -1;+ goto fail; } } + /* Test streaming API */+ for(step = 1; step < BLAKE2B_BLOCKBYTES; ++step) {+ for (i = 0; i < BLAKE2_KAT_LENGTH; ++i) {+ uint8_t hash[BLAKE2B_OUTBYTES];+ blake2bp_state S;+ uint8_t * p = buf;+ size_t mlen = i;+ int err = 0;++ if( (err = blake2bp_init_key(&S, BLAKE2B_OUTBYTES, key, BLAKE2B_KEYBYTES)) < 0 ) {+ goto fail;+ }++ while (mlen >= step) {+ if ( (err = blake2bp_update(&S, p, step)) < 0 ) {+ goto fail;+ }+ mlen -= step;+ p += step;+ }+ if ( (err = blake2bp_update(&S, p, mlen)) < 0) {+ goto fail;+ }+ if ( (err = blake2bp_final(&S, hash, BLAKE2B_OUTBYTES)) < 0) {+ goto fail;+ }++ if (0 != memcmp(hash, blake2bp_keyed_kat[i], BLAKE2B_OUTBYTES)) {+ goto fail;+ }+ }+ }+ puts( "ok" ); return 0;+fail:+ puts("error");+ return -1; } #endif
cbits/blake2/ref/blake2s-ref.c view
@@ -1,14 +1,16 @@ /* BLAKE2 reference source code package - reference C implementations - Written in 2012 by Samuel Neves <sneves@dei.uc.pt>+ Copyright 2012, Samuel Neves <sneves@dei.uc.pt>. You may use this under the+ terms of the CC0, the OpenSSL Licence, or the Apache Public License 2.0, at+ your option. The terms of these licenses can be found at: - To the extent possible under law, the author(s) have dedicated all copyright- and related and neighboring rights to this software to the public domain- worldwide. This software is distributed without any warranty.+ - CC0 1.0 Universal : http://creativecommons.org/publicdomain/zero/1.0+ - OpenSSL license : https://www.openssl.org/source/license.html+ - Apache 2.0 : http://www.apache.org/licenses/LICENSE-2.0 - You should have received a copy of the CC0 Public Domain Dedication along with- this software. If not, see <http://creativecommons.org/publicdomain/zero/1.0/>.+ More information about the BLAKE2 hash function can be found at+ https://blake2.net. */ #include <stdint.h>@@ -38,143 +40,79 @@ { 10, 2, 8, 4, 7, 6, 1, 5, 15, 11, 9, 14, 3, 12, 13 , 0 } , }; -static inline int blake2s_set_lastnode( blake2s_state *S )-{- S->f[1] = -1;- return 0;-}--static inline int blake2s_clear_lastnode( blake2s_state *S )+static void blake2s_set_lastnode( blake2s_state *S ) {- S->f[1] = 0;- return 0;+ S->f[1] = (uint32_t)-1; } /* Some helper functions, not necessarily useful */-static inline int blake2s_set_lastblock( blake2s_state *S )+static int blake2s_is_lastblock( const blake2s_state *S ) {- if( S->last_node ) blake2s_set_lastnode( S );-- S->f[0] = -1;- return 0;+ return S->f[0] != 0; } -static inline int blake2s_clear_lastblock( blake2s_state *S )+static void blake2s_set_lastblock( blake2s_state *S ) {- if( S->last_node ) blake2s_clear_lastnode( S );+ if( S->last_node ) blake2s_set_lastnode( S ); - S->f[0] = 0;- return 0;+ S->f[0] = (uint32_t)-1; } -static inline int blake2s_increment_counter( blake2s_state *S, const uint32_t inc )+static void blake2s_increment_counter( blake2s_state *S, const uint32_t inc ) { S->t[0] += inc; S->t[1] += ( S->t[0] < inc );- return 0; } -// Parameter-related functions-static inline int blake2s_param_set_digest_length( blake2s_param *P, const uint8_t digest_length )-{- P->digest_length = digest_length;- return 0;-}--static inline int blake2s_param_set_fanout( blake2s_param *P, const uint8_t fanout )-{- P->fanout = fanout;- return 0;-}--static inline int blake2s_param_set_max_depth( blake2s_param *P, const uint8_t depth )-{- P->depth = depth;- return 0;-}--static inline int blake2s_param_set_leaf_length( blake2s_param *P, const uint32_t leaf_length )-{- store32( &P->leaf_length, leaf_length );- return 0;-}--static inline int blake2s_param_set_node_offset( blake2s_param *P, const uint64_t node_offset )-{- store48( P->node_offset, node_offset );- return 0;-}--static inline int blake2s_param_set_node_depth( blake2s_param *P, const uint8_t node_depth )-{- P->node_depth = node_depth;- return 0;-}--static inline int blake2s_param_set_inner_length( blake2s_param *P, const uint8_t inner_length )-{- P->inner_length = inner_length;- return 0;-}--static inline int blake2s_param_set_salt( blake2s_param *P, const uint8_t salt[BLAKE2S_SALTBYTES] )-{- memcpy( P->salt, salt, BLAKE2S_SALTBYTES );- return 0;-}--static inline int blake2s_param_set_personal( blake2s_param *P, const uint8_t personal[BLAKE2S_PERSONALBYTES] )-{- memcpy( P->personal, personal, BLAKE2S_PERSONALBYTES );- return 0;-}--static inline int blake2s_init0( blake2s_state *S )+static void blake2s_init0( blake2s_state *S ) {+ size_t i; memset( S, 0, sizeof( blake2s_state ) ); - for( int i = 0; i < 8; ++i ) S->h[i] = blake2s_IV[i];-- return 0;+ for( i = 0; i < 8; ++i ) S->h[i] = blake2s_IV[i]; } /* init2 xors IV with input parameter block */ int blake2s_init_param( blake2s_state *S, const blake2s_param *P ) {+ const unsigned char *p = ( const unsigned char * )( P );+ size_t i;+ blake2s_init0( S );- const uint32_t *p = ( const uint32_t * )( P ); /* IV XOR ParamBlock */- for( size_t i = 0; i < 8; ++i )- S->h[i] ^= load32( &p[i] );+ for( i = 0; i < 8; ++i )+ S->h[i] ^= load32( &p[i * 4] ); + S->outlen = P->digest_length; return 0; } -// Sequential blake2s initialization-int blake2s_init( blake2s_state *S, const uint8_t outlen )+/* Sequential blake2s initialization */+int blake2s_init( blake2s_state *S, size_t outlen ) { blake2s_param P[1]; /* Move interval verification here? */ if ( ( !outlen ) || ( outlen > BLAKE2S_OUTBYTES ) ) return -1; - P->digest_length = outlen;+ P->digest_length = (uint8_t)outlen; P->key_length = 0; P->fanout = 1; P->depth = 1; store32( &P->leaf_length, 0 );- store48( &P->node_offset, 0 );+ store32( &P->node_offset, 0 );+ store16( &P->xof_length, 0 ); P->node_depth = 0; P->inner_length = 0;- // memset(P->reserved, 0, sizeof(P->reserved) );+ /* memset(P->reserved, 0, sizeof(P->reserved) ); */ memset( P->salt, 0, sizeof( P->salt ) ); memset( P->personal, 0, sizeof( P->personal ) ); return blake2s_init_param( S, P ); } -int blake2s_init_key( blake2s_state *S, const uint8_t outlen, const void *key, const uint8_t keylen )+int blake2s_init_key( blake2s_state *S, size_t outlen, const void *key, size_t keylen ) { blake2s_param P[1]; @@ -182,15 +120,16 @@ if ( !key || !keylen || keylen > BLAKE2S_KEYBYTES ) return -1; - P->digest_length = outlen;- P->key_length = keylen;+ P->digest_length = (uint8_t)outlen;+ P->key_length = (uint8_t)keylen; P->fanout = 1; P->depth = 1; store32( &P->leaf_length, 0 );- store48( &P->node_offset, 0 );+ store32( &P->node_offset, 0 );+ store16( &P->xof_length, 0 ); P->node_depth = 0; P->inner_length = 0;- // memset(P->reserved, 0, sizeof(P->reserved) );+ /* memset(P->reserved, 0, sizeof(P->reserved) ); */ memset( P->salt, 0, sizeof( P->salt ) ); memset( P->personal, 0, sizeof( P->personal ) ); @@ -206,16 +145,43 @@ return 0; } -static int blake2s_compress( blake2s_state *S, const uint8_t block[BLAKE2S_BLOCKBYTES] )+#define G(r,i,a,b,c,d) \+ do { \+ a = a + b + m[blake2s_sigma[r][2*i+0]]; \+ d = rotr32(d ^ a, 16); \+ c = c + d; \+ b = rotr32(b ^ c, 12); \+ a = a + b + m[blake2s_sigma[r][2*i+1]]; \+ d = rotr32(d ^ a, 8); \+ c = c + d; \+ b = rotr32(b ^ c, 7); \+ } while(0)++#define ROUND(r) \+ do { \+ G(r,0,v[ 0],v[ 4],v[ 8],v[12]); \+ G(r,1,v[ 1],v[ 5],v[ 9],v[13]); \+ G(r,2,v[ 2],v[ 6],v[10],v[14]); \+ G(r,3,v[ 3],v[ 7],v[11],v[15]); \+ G(r,4,v[ 0],v[ 5],v[10],v[15]); \+ G(r,5,v[ 1],v[ 6],v[11],v[12]); \+ G(r,6,v[ 2],v[ 7],v[ 8],v[13]); \+ G(r,7,v[ 3],v[ 4],v[ 9],v[14]); \+ } while(0)++static void blake2s_compress( blake2s_state *S, const uint8_t in[BLAKE2S_BLOCKBYTES] ) { uint32_t m[16]; uint32_t v[16];+ size_t i; - for( size_t i = 0; i < 16; ++i )- m[i] = load32( block + i * sizeof( m[i] ) );+ for( i = 0; i < 16; ++i ) {+ m[i] = load32( in + i * sizeof( m[i] ) );+ } - for( size_t i = 0; i < 8; ++i )+ for( i = 0; i < 8; ++i ) { v[i] = S->h[i];+ } v[ 8] = blake2s_IV[0]; v[ 9] = blake2s_IV[1];@@ -225,28 +191,7 @@ v[13] = S->t[1] ^ blake2s_IV[5]; v[14] = S->f[0] ^ blake2s_IV[6]; v[15] = S->f[1] ^ blake2s_IV[7];-#define G(r,i,a,b,c,d) \- do { \- a = a + b + m[blake2s_sigma[r][2*i+0]]; \- d = rotr32(d ^ a, 16); \- c = c + d; \- b = rotr32(b ^ c, 12); \- a = a + b + m[blake2s_sigma[r][2*i+1]]; \- d = rotr32(d ^ a, 8); \- c = c + d; \- b = rotr32(b ^ c, 7); \- } while(0)-#define ROUND(r) \- do { \- G(r,0,v[ 0],v[ 4],v[ 8],v[12]); \- G(r,1,v[ 1],v[ 5],v[ 9],v[13]); \- G(r,2,v[ 2],v[ 6],v[10],v[14]); \- G(r,3,v[ 3],v[ 7],v[11],v[15]); \- G(r,4,v[ 0],v[ 5],v[10],v[15]); \- G(r,5,v[ 1],v[ 6],v[11],v[12]); \- G(r,6,v[ 2],v[ 7],v[ 8],v[13]); \- G(r,7,v[ 3],v[ 4],v[ 9],v[14]); \- } while(0)+ ROUND( 0 ); ROUND( 1 ); ROUND( 2 );@@ -258,73 +203,66 @@ ROUND( 8 ); ROUND( 9 ); - for( size_t i = 0; i < 8; ++i )+ for( i = 0; i < 8; ++i ) { S->h[i] = S->h[i] ^ v[i] ^ v[i + 8];+ }+} #undef G #undef ROUND- return 0;-} --int blake2s_update( blake2s_state *S, const uint8_t *in, uint64_t inlen )+int blake2s_update( blake2s_state *S, const void *pin, size_t inlen ) {- while( inlen > 0 )+ const unsigned char * in = (const unsigned char *)pin;+ if( inlen > 0 ) { size_t left = S->buflen;- size_t fill = 2 * BLAKE2S_BLOCKBYTES - left;-+ size_t fill = BLAKE2S_BLOCKBYTES - left; if( inlen > fill ) {- memcpy( S->buf + left, in, fill ); // Fill buffer- S->buflen += fill;+ S->buflen = 0;+ memcpy( S->buf + left, in, fill ); /* Fill buffer */ blake2s_increment_counter( S, BLAKE2S_BLOCKBYTES );- blake2s_compress( S, S->buf ); // Compress- memcpy( S->buf, S->buf + BLAKE2S_BLOCKBYTES, BLAKE2S_BLOCKBYTES ); // Shift buffer left- S->buflen -= BLAKE2S_BLOCKBYTES;- in += fill;- inlen -= fill;- }- else // inlen <= fill- {- memcpy( S->buf + left, in, inlen );- S->buflen += inlen; // Be lazy, do not compress- in += inlen;- inlen -= inlen;+ blake2s_compress( S, S->buf ); /* Compress */+ in += fill; inlen -= fill;+ while(inlen > BLAKE2S_BLOCKBYTES) {+ blake2s_increment_counter(S, BLAKE2S_BLOCKBYTES);+ blake2s_compress( S, in );+ in += BLAKE2S_BLOCKBYTES;+ inlen -= BLAKE2S_BLOCKBYTES;+ } }+ memcpy( S->buf + S->buflen, in, inlen );+ S->buflen += inlen; }- return 0; } -int blake2s_final( blake2s_state *S, uint8_t *out, uint8_t outlen )+int blake2s_final( blake2s_state *S, void *out, size_t outlen ) { uint8_t buffer[BLAKE2S_OUTBYTES] = {0};+ size_t i; - if( outlen > BLAKE2S_OUTBYTES )+ if( out == NULL || outlen < S->outlen ) return -1; - if( S->buflen > BLAKE2S_BLOCKBYTES )- {- blake2s_increment_counter( S, BLAKE2S_BLOCKBYTES );- blake2s_compress( S, S->buf );- S->buflen -= BLAKE2S_BLOCKBYTES;- memcpy( S->buf, S->buf + BLAKE2S_BLOCKBYTES, S->buflen );- }+ if( blake2s_is_lastblock( S ) )+ return -1; blake2s_increment_counter( S, ( uint32_t )S->buflen ); blake2s_set_lastblock( S );- memset( S->buf + S->buflen, 0, 2 * BLAKE2S_BLOCKBYTES - S->buflen ); /* Padding */+ memset( S->buf + S->buflen, 0, BLAKE2S_BLOCKBYTES - S->buflen ); /* Padding */ blake2s_compress( S, S->buf ); - for( int i = 0; i < 8; ++i ) /* Output full hash to temp buffer */+ for( i = 0; i < 8; ++i ) /* Output full hash to temp buffer */ store32( buffer + sizeof( S->h[i] ) * i, S->h[i] );- + memcpy( out, buffer, outlen );+ secure_zero_memory(buffer, sizeof(buffer)); return 0; } -int blake2s( uint8_t *out, const void *in, const void *key, const uint8_t outlen, const uint64_t inlen, uint8_t keylen )+int blake2s( void *out, size_t outlen, const void *in, size_t inlen, const void *key, size_t keylen ) { blake2s_state S[1]; @@ -356,39 +294,74 @@ #if defined(SUPERCOP) int crypto_hash( unsigned char *out, unsigned char *in, unsigned long long inlen ) {- return blake2s( out, in, NULL, BLAKE2S_OUTBYTES, inlen, 0 );+ return blake2s( out, BLAKE2S_OUTBYTES in, inlen, NULL, 0 ); } #endif #if defined(BLAKE2S_SELFTEST) #include <string.h> #include "blake2-kat.h"-int main( int argc, char **argv )+int main( void ) { uint8_t key[BLAKE2S_KEYBYTES];- uint8_t buf[KAT_LENGTH];+ uint8_t buf[BLAKE2_KAT_LENGTH];+ size_t i, step; - for( size_t i = 0; i < BLAKE2S_KEYBYTES; ++i )+ for( i = 0; i < BLAKE2S_KEYBYTES; ++i ) key[i] = ( uint8_t )i; - for( size_t i = 0; i < KAT_LENGTH; ++i )+ for( i = 0; i < BLAKE2_KAT_LENGTH; ++i ) buf[i] = ( uint8_t )i; - for( size_t i = 0; i < KAT_LENGTH; ++i )+ /* Test simple API */+ for( i = 0; i < BLAKE2_KAT_LENGTH; ++i ) { uint8_t hash[BLAKE2S_OUTBYTES];- blake2s( hash, buf, key, BLAKE2S_OUTBYTES, i, BLAKE2S_KEYBYTES );+ blake2s( hash, BLAKE2S_OUTBYTES, buf, i, key, BLAKE2S_KEYBYTES ); if( 0 != memcmp( hash, blake2s_keyed_kat[i], BLAKE2S_OUTBYTES ) ) {- puts( "error" );- return -1;+ goto fail; } } + /* Test streaming API */+ for(step = 1; step < BLAKE2S_BLOCKBYTES; ++step) {+ for (i = 0; i < BLAKE2_KAT_LENGTH; ++i) {+ uint8_t hash[BLAKE2S_OUTBYTES];+ blake2s_state S;+ uint8_t * p = buf;+ size_t mlen = i;+ int err = 0;++ if( (err = blake2s_init_key(&S, BLAKE2S_OUTBYTES, key, BLAKE2S_KEYBYTES)) < 0 ) {+ goto fail;+ }++ while (mlen >= step) {+ if ( (err = blake2s_update(&S, p, step)) < 0 ) {+ goto fail;+ }+ mlen -= step;+ p += step;+ }+ if ( (err = blake2s_update(&S, p, mlen)) < 0) {+ goto fail;+ }+ if ( (err = blake2s_final(&S, hash, BLAKE2S_OUTBYTES)) < 0) {+ goto fail;+ }++ if (0 != memcmp(hash, blake2s_keyed_kat[i], BLAKE2S_OUTBYTES)) {+ goto fail;+ }+ }+ }+ puts( "ok" ); return 0;+fail:+ puts("error");+ return -1; } #endif--
cbits/blake2/ref/blake2sp-ref.c view
@@ -1,14 +1,16 @@ /* BLAKE2 reference source code package - reference C implementations - Written in 2012 by Samuel Neves <sneves@dei.uc.pt>+ Copyright 2012, Samuel Neves <sneves@dei.uc.pt>. You may use this under the+ terms of the CC0, the OpenSSL Licence, or the Apache Public License 2.0, at+ your option. The terms of these licenses can be found at: - To the extent possible under law, the author(s) have dedicated all copyright- and related and neighboring rights to this software to the public domain- worldwide. This software is distributed without any warranty.+ - CC0 1.0 Universal : http://creativecommons.org/publicdomain/zero/1.0+ - OpenSSL license : https://www.openssl.org/source/license.html+ - Apache 2.0 : http://www.apache.org/licenses/LICENSE-2.0 - You should have received a copy of the CC0 Public Domain Dedication along with- this software. If not, see <http://creativecommons.org/publicdomain/zero/1.0/>.+ More information about the BLAKE2 hash function can be found at+ https://blake2.net. */ #include <stdlib.h>@@ -24,31 +26,47 @@ #define PARALLELISM_DEGREE 8 -static inline int blake2sp_init_leaf( blake2s_state *S, uint8_t outlen, uint8_t keylen, uint64_t offset )+/*+ blake2sp_init_param defaults to setting the expecting output length+ from the digest_length parameter block field.++ In some cases, however, we do not want this, as the output length+ of these instances is given by inner_length instead.+*/+static int blake2sp_init_leaf_param( blake2s_state *S, const blake2s_param *P ) {+ int err = blake2s_init_param(S, P);+ S->outlen = P->inner_length;+ return err;+}++static int blake2sp_init_leaf( blake2s_state *S, size_t outlen, size_t keylen, uint64_t offset )+{ blake2s_param P[1];- P->digest_length = outlen;- P->key_length = keylen;+ P->digest_length = (uint8_t)outlen;+ P->key_length = (uint8_t)keylen; P->fanout = PARALLELISM_DEGREE; P->depth = 2; store32( &P->leaf_length, 0 );- store48( P->node_offset, offset );+ store32( &P->node_offset, offset );+ store16( &P->xof_length, 0 ); P->node_depth = 0; P->inner_length = BLAKE2S_OUTBYTES; memset( P->salt, 0, sizeof( P->salt ) ); memset( P->personal, 0, sizeof( P->personal ) );- return blake2s_init_param( S, P );+ return blake2sp_init_leaf_param( S, P ); } -static inline int blake2sp_init_root( blake2s_state *S, uint8_t outlen, uint8_t keylen )+static int blake2sp_init_root( blake2s_state *S, size_t outlen, size_t keylen ) { blake2s_param P[1];- P->digest_length = outlen;- P->key_length = keylen;+ P->digest_length = (uint8_t)outlen;+ P->key_length = (uint8_t)keylen; P->fanout = PARALLELISM_DEGREE; P->depth = 2; store32( &P->leaf_length, 0 );- store48( P->node_offset, 0ULL );+ store32( &P->node_offset, 0 );+ store16( &P->xof_length, 0 ); P->node_depth = 1; P->inner_length = BLAKE2S_OUTBYTES; memset( P->salt, 0, sizeof( P->salt ) );@@ -57,17 +75,20 @@ } -int blake2sp_init( blake2sp_state *S, const uint8_t outlen )+int blake2sp_init( blake2sp_state *S, size_t outlen ) {+ size_t i;+ if( !outlen || outlen > BLAKE2S_OUTBYTES ) return -1; memset( S->buf, 0, sizeof( S->buf ) ); S->buflen = 0;+ S->outlen = outlen; if( blake2sp_init_root( S->R, outlen, 0 ) < 0 ) return -1; - for( size_t i = 0; i < PARALLELISM_DEGREE; ++i )+ for( i = 0; i < PARALLELISM_DEGREE; ++i ) if( blake2sp_init_leaf( S->S[i], outlen, 0, i ) < 0 ) return -1; S->R->last_node = 1;@@ -75,19 +96,22 @@ return 0; } -int blake2sp_init_key( blake2sp_state *S, const uint8_t outlen, const void *key, const uint8_t keylen )+int blake2sp_init_key( blake2sp_state *S, size_t outlen, const void *key, size_t keylen ) {+ size_t i;+ if( !outlen || outlen > BLAKE2S_OUTBYTES ) return -1; if( !key || !keylen || keylen > BLAKE2S_KEYBYTES ) return -1; memset( S->buf, 0, sizeof( S->buf ) ); S->buflen = 0;+ S->outlen = outlen; if( blake2sp_init_root( S->R, outlen, keylen ) < 0 ) return -1; - for( size_t i = 0; i < PARALLELISM_DEGREE; ++i )+ for( i = 0; i < PARALLELISM_DEGREE; ++i ) if( blake2sp_init_leaf( S->S[i], outlen, keylen, i ) < 0 ) return -1; S->R->last_node = 1;@@ -97,7 +121,7 @@ memset( block, 0, BLAKE2S_BLOCKBYTES ); memcpy( block, key, keylen ); - for( size_t i = 0; i < PARALLELISM_DEGREE; ++i )+ for( i = 0; i < PARALLELISM_DEGREE; ++i ) blake2s_update( S->S[i], block, BLAKE2S_BLOCKBYTES ); secure_zero_memory( block, BLAKE2S_BLOCKBYTES ); /* Burn the key from stack */@@ -106,16 +130,18 @@ } -int blake2sp_update( blake2sp_state *S, const uint8_t *in, uint64_t inlen )+int blake2sp_update( blake2sp_state *S, const void *pin, size_t inlen ) {+ const unsigned char * in = (const unsigned char *)pin; size_t left = S->buflen; size_t fill = sizeof( S->buf ) - left;+ size_t i; if( left && inlen >= fill ) { memcpy( S->buf + left, in, fill ); - for( size_t i = 0; i < PARALLELISM_DEGREE; ++i )+ for( i = 0; i < PARALLELISM_DEGREE; ++i ) blake2s_update( S->S[i], S->buf + i * BLAKE2S_BLOCKBYTES, BLAKE2S_BLOCKBYTES ); in += fill;@@ -126,20 +152,19 @@ #if defined(_OPENMP) #pragma omp parallel shared(S), num_threads(PARALLELISM_DEGREE) #else-- for( size_t id__ = 0; id__ < PARALLELISM_DEGREE; ++id__ )+ for( i = 0; i < PARALLELISM_DEGREE; ++i ) #endif { #if defined(_OPENMP)- size_t id__ = omp_get_thread_num();+ size_t i = omp_get_thread_num(); #endif- uint64_t inlen__ = inlen;- const uint8_t *in__ = ( const uint8_t * )in;- in__ += id__ * BLAKE2S_BLOCKBYTES;+ size_t inlen__ = inlen;+ const unsigned char *in__ = ( const unsigned char * )in;+ in__ += i * BLAKE2S_BLOCKBYTES; while( inlen__ >= PARALLELISM_DEGREE * BLAKE2S_BLOCKBYTES ) {- blake2s_update( S->S[id__], in__, BLAKE2S_BLOCKBYTES );+ blake2s_update( S->S[i], in__, BLAKE2S_BLOCKBYTES ); in__ += PARALLELISM_DEGREE * BLAKE2S_BLOCKBYTES; inlen__ -= PARALLELISM_DEGREE * BLAKE2S_BLOCKBYTES; }@@ -156,11 +181,16 @@ } -int blake2sp_final( blake2sp_state *S, uint8_t *out, const uint8_t outlen )+int blake2sp_final( blake2sp_state *S, void *out, size_t outlen ) { uint8_t hash[PARALLELISM_DEGREE][BLAKE2S_OUTBYTES];+ size_t i; - for( size_t i = 0; i < PARALLELISM_DEGREE; ++i )+ if(out == NULL || outlen < S->outlen) {+ return -1;+ }++ for( i = 0; i < PARALLELISM_DEGREE; ++i ) { if( S->buflen > i * BLAKE2S_BLOCKBYTES ) {@@ -174,18 +204,19 @@ blake2s_final( S->S[i], hash[i], BLAKE2S_OUTBYTES ); } - for( size_t i = 0; i < PARALLELISM_DEGREE; ++i )+ for( i = 0; i < PARALLELISM_DEGREE; ++i ) blake2s_update( S->R, hash[i], BLAKE2S_OUTBYTES ); - return blake2s_final( S->R, out, outlen );+ return blake2s_final( S->R, out, S->outlen ); } -int blake2sp( uint8_t *out, const void *in, const void *key, uint8_t outlen, uint64_t inlen, uint8_t keylen )+int blake2sp( void *out, size_t outlen, const void *in, size_t inlen, const void *key, size_t keylen ) { uint8_t hash[PARALLELISM_DEGREE][BLAKE2S_OUTBYTES]; blake2s_state S[PARALLELISM_DEGREE][1]; blake2s_state FS[1];+ size_t i; /* Verify parameters */ if ( NULL == in && inlen > 0 ) return -1;@@ -198,10 +229,10 @@ if( keylen > BLAKE2S_KEYBYTES ) return -1; - for( size_t i = 0; i < PARALLELISM_DEGREE; ++i )+ for( i = 0; i < PARALLELISM_DEGREE; ++i ) if( blake2sp_init_leaf( S[i], outlen, keylen, i ) < 0 ) return -1; - S[PARALLELISM_DEGREE - 1]->last_node = 1; // mark last node+ S[PARALLELISM_DEGREE - 1]->last_node = 1; /* mark last node */ if( keylen > 0 ) {@@ -209,7 +240,7 @@ memset( block, 0, BLAKE2S_BLOCKBYTES ); memcpy( block, key, keylen ); - for( size_t i = 0; i < PARALLELISM_DEGREE; ++i )+ for( i = 0; i < PARALLELISM_DEGREE; ++i ) blake2s_update( S[i], block, BLAKE2S_BLOCKBYTES ); secure_zero_memory( block, BLAKE2S_BLOCKBYTES ); /* Burn the key from stack */@@ -219,31 +250,31 @@ #pragma omp parallel shared(S,hash), num_threads(PARALLELISM_DEGREE) #else - for( size_t id__ = 0; id__ < PARALLELISM_DEGREE; ++id__ )+ for( i = 0; i < PARALLELISM_DEGREE; ++i ) #endif { #if defined(_OPENMP)- size_t id__ = omp_get_thread_num();+ size_t i = omp_get_thread_num(); #endif- uint64_t inlen__ = inlen;- const uint8_t *in__ = ( const uint8_t * )in;- in__ += id__ * BLAKE2S_BLOCKBYTES;+ size_t inlen__ = inlen;+ const unsigned char *in__ = ( const unsigned char * )in;+ in__ += i * BLAKE2S_BLOCKBYTES; while( inlen__ >= PARALLELISM_DEGREE * BLAKE2S_BLOCKBYTES ) {- blake2s_update( S[id__], in__, BLAKE2S_BLOCKBYTES );+ blake2s_update( S[i], in__, BLAKE2S_BLOCKBYTES ); in__ += PARALLELISM_DEGREE * BLAKE2S_BLOCKBYTES; inlen__ -= PARALLELISM_DEGREE * BLAKE2S_BLOCKBYTES; } - if( inlen__ > id__ * BLAKE2S_BLOCKBYTES )+ if( inlen__ > i * BLAKE2S_BLOCKBYTES ) {- const size_t left = inlen__ - id__ * BLAKE2S_BLOCKBYTES;+ const size_t left = inlen__ - i * BLAKE2S_BLOCKBYTES; const size_t len = left <= BLAKE2S_BLOCKBYTES ? left : BLAKE2S_BLOCKBYTES;- blake2s_update( S[id__], in__, len );+ blake2s_update( S[i], in__, len ); } - blake2s_final( S[id__], hash[id__], BLAKE2S_OUTBYTES );+ blake2s_final( S[i], hash[i], BLAKE2S_OUTBYTES ); } if( blake2sp_init_root( FS, outlen, keylen ) < 0 )@@ -251,7 +282,7 @@ FS->last_node = 1; - for( size_t i = 0; i < PARALLELISM_DEGREE; ++i )+ for( i = 0; i < PARALLELISM_DEGREE; ++i ) blake2s_update( FS, hash[i], BLAKE2S_OUTBYTES ); return blake2s_final( FS, out, outlen );@@ -262,36 +293,67 @@ #if defined(BLAKE2SP_SELFTEST) #include <string.h> #include "blake2-kat.h"-int main( int argc, char **argv )+int main( void ) { uint8_t key[BLAKE2S_KEYBYTES];- uint8_t buf[KAT_LENGTH];+ uint8_t buf[BLAKE2_KAT_LENGTH];+ size_t i, step; - for( size_t i = 0; i < BLAKE2S_KEYBYTES; ++i )+ for( i = 0; i < BLAKE2S_KEYBYTES; ++i ) key[i] = ( uint8_t )i; - for( size_t i = 0; i < KAT_LENGTH; ++i )+ for( i = 0; i < BLAKE2_KAT_LENGTH; ++i ) buf[i] = ( uint8_t )i; - for( size_t i = 0; i < KAT_LENGTH; ++i )+ /* Test simple API */+ for( i = 0; i < BLAKE2_KAT_LENGTH; ++i ) { uint8_t hash[BLAKE2S_OUTBYTES];- blake2sp( hash, buf, key, BLAKE2S_OUTBYTES, i, BLAKE2S_KEYBYTES );+ blake2sp( hash, BLAKE2S_OUTBYTES, buf, i, key, BLAKE2S_KEYBYTES ); if( 0 != memcmp( hash, blake2sp_keyed_kat[i], BLAKE2S_OUTBYTES ) ) {- puts( "error" );- return -1;+ goto fail; } } - puts( "ok" );- return 0;-}-#endif--+ /* Test streaming API */+ for(step = 1; step < BLAKE2S_BLOCKBYTES; ++step) {+ for (i = 0; i < BLAKE2_KAT_LENGTH; ++i) {+ uint8_t hash[BLAKE2S_OUTBYTES];+ blake2sp_state S;+ uint8_t * p = buf;+ size_t mlen = i;+ int err = 0; + if( (err = blake2sp_init_key(&S, BLAKE2S_OUTBYTES, key, BLAKE2S_KEYBYTES)) < 0 ) {+ goto fail;+ } + while (mlen >= step) {+ if ( (err = blake2sp_update(&S, p, step)) < 0 ) {+ goto fail;+ }+ mlen -= step;+ p += step;+ }+ if ( (err = blake2sp_update(&S, p, mlen)) < 0) {+ goto fail;+ }+ if ( (err = blake2sp_final(&S, hash, BLAKE2S_OUTBYTES)) < 0) {+ goto fail;+ } + if (0 != memcmp(hash, blake2sp_keyed_kat[i], BLAKE2S_OUTBYTES)) {+ goto fail;+ }+ }+ } + puts( "ok" );+ return 0;+fail:+ puts("error");+ return -1;+}+#endif
cbits/blake2/sse/blake2-config.h view
@@ -1,21 +1,22 @@ /* BLAKE2 reference source code package - optimized C implementations - Written in 2012 by Samuel Neves <sneves@dei.uc.pt>+ Copyright 2012, Samuel Neves <sneves@dei.uc.pt>. You may use this under the+ terms of the CC0, the OpenSSL Licence, or the Apache Public License 2.0, at+ your option. The terms of these licenses can be found at: - To the extent possible under law, the author(s) have dedicated all copyright- and related and neighboring rights to this software to the public domain- worldwide. This software is distributed without any warranty.+ - CC0 1.0 Universal : http://creativecommons.org/publicdomain/zero/1.0+ - OpenSSL license : https://www.openssl.org/source/license.html+ - Apache 2.0 : http://www.apache.org/licenses/LICENSE-2.0 - You should have received a copy of the CC0 Public Domain Dedication along with- this software. If not, see <http://creativecommons.org/publicdomain/zero/1.0/>.+ More information about the BLAKE2 hash function can be found at+ https://blake2.net. */-#pragma once-#ifndef __BLAKE2_CONFIG_H__-#define __BLAKE2_CONFIG_H__+#ifndef BLAKE2_CONFIG_H+#define BLAKE2_CONFIG_H -// These don't work everywhere-#if defined(__SSE2__)+/* These don't work everywhere */+#if defined(__SSE2__) || defined(__x86_64__) || defined(__amd64__) #define HAVE_SSE2 #endif @@ -69,4 +70,3 @@ #endif #endif-
cbits/blake2/sse/blake2-impl.h view
@@ -1,22 +1,36 @@ /*- BLAKE2 reference source code package - optimized C implementations+ BLAKE2 reference source code package - reference C implementations - Written in 2012 by Samuel Neves <sneves@dei.uc.pt>+ Copyright 2012, Samuel Neves <sneves@dei.uc.pt>. You may use this under the+ terms of the CC0, the OpenSSL Licence, or the Apache Public License 2.0, at+ your option. The terms of these licenses can be found at: - To the extent possible under law, the author(s) have dedicated all copyright- and related and neighboring rights to this software to the public domain- worldwide. This software is distributed without any warranty.+ - CC0 1.0 Universal : http://creativecommons.org/publicdomain/zero/1.0+ - OpenSSL license : https://www.openssl.org/source/license.html+ - Apache 2.0 : http://www.apache.org/licenses/LICENSE-2.0 - You should have received a copy of the CC0 Public Domain Dedication along with- this software. If not, see <http://creativecommons.org/publicdomain/zero/1.0/>.+ More information about the BLAKE2 hash function can be found at+ https://blake2.net. */-#pragma once-#ifndef __BLAKE2_IMPL_H__-#define __BLAKE2_IMPL_H__+#ifndef BLAKE2_IMPL_H+#define BLAKE2_IMPL_H #include <stdint.h>+#include <string.h> -static inline uint32_t load32( const void *src )+#if !defined(__cplusplus) && (!defined(__STDC_VERSION__) || __STDC_VERSION__ < 199901L)+ #if defined(_MSC_VER)+ #define BLAKE2_INLINE __inline+ #elif defined(__GNUC__)+ #define BLAKE2_INLINE __inline__+ #else+ #define BLAKE2_INLINE+ #endif+#else+ #define BLAKE2_INLINE inline+#endif++static BLAKE2_INLINE uint32_t load32( const void *src ) { #if defined(NATIVE_LITTLE_ENDIAN) uint32_t w;@@ -24,15 +38,14 @@ return w; #else const uint8_t *p = ( const uint8_t * )src;- uint32_t w = *p++;- w |= ( uint32_t )( *p++ ) << 8;- w |= ( uint32_t )( *p++ ) << 16;- w |= ( uint32_t )( *p++ ) << 24;- return w;+ return (( uint32_t )( p[0] ) << 0) |+ (( uint32_t )( p[1] ) << 8) |+ (( uint32_t )( p[2] ) << 16) |+ (( uint32_t )( p[3] ) << 24) ; #endif } -static inline uint64_t load64( const void *src )+static BLAKE2_INLINE uint64_t load64( const void *src ) { #if defined(NATIVE_LITTLE_ENDIAN) uint64_t w;@@ -40,97 +53,108 @@ return w; #else const uint8_t *p = ( const uint8_t * )src;- uint64_t w = *p++;- w |= ( uint64_t )( *p++ ) << 8;- w |= ( uint64_t )( *p++ ) << 16;- w |= ( uint64_t )( *p++ ) << 24;- w |= ( uint64_t )( *p++ ) << 32;- w |= ( uint64_t )( *p++ ) << 40;- w |= ( uint64_t )( *p++ ) << 48;- w |= ( uint64_t )( *p++ ) << 56;- return w;+ return (( uint64_t )( p[0] ) << 0) |+ (( uint64_t )( p[1] ) << 8) |+ (( uint64_t )( p[2] ) << 16) |+ (( uint64_t )( p[3] ) << 24) |+ (( uint64_t )( p[4] ) << 32) |+ (( uint64_t )( p[5] ) << 40) |+ (( uint64_t )( p[6] ) << 48) |+ (( uint64_t )( p[7] ) << 56) ; #endif } -static inline void store32( void *dst, uint32_t w )+static BLAKE2_INLINE uint16_t load16( const void *src ) { #if defined(NATIVE_LITTLE_ENDIAN)- memcpy(dst, &w, sizeof w);+ uint16_t w;+ memcpy(&w, src, sizeof w);+ return w; #else- uint8_t *p = ( uint8_t * )dst;- *p++ = ( uint8_t )w; w >>= 8;- *p++ = ( uint8_t )w; w >>= 8;- *p++ = ( uint8_t )w; w >>= 8;- *p++ = ( uint8_t )w;+ const uint8_t *p = ( const uint8_t * )src;+ return (( uint16_t )( p[0] ) << 0) |+ (( uint16_t )( p[1] ) << 8) ; #endif } -static inline void store64( void *dst, uint64_t w )+static BLAKE2_INLINE void store16( void *dst, uint16_t w ) { #if defined(NATIVE_LITTLE_ENDIAN) memcpy(dst, &w, sizeof w); #else uint8_t *p = ( uint8_t * )dst; *p++ = ( uint8_t )w; w >>= 8;- *p++ = ( uint8_t )w; w >>= 8;- *p++ = ( uint8_t )w; w >>= 8;- *p++ = ( uint8_t )w; w >>= 8;- *p++ = ( uint8_t )w; w >>= 8;- *p++ = ( uint8_t )w; w >>= 8;- *p++ = ( uint8_t )w; w >>= 8; *p++ = ( uint8_t )w; #endif } -static inline uint64_t load48( const void *src )+static BLAKE2_INLINE void store32( void *dst, uint32_t w ) {- const uint8_t *p = ( const uint8_t * )src;- uint64_t w = *p++;- w |= ( uint64_t )( *p++ ) << 8;- w |= ( uint64_t )( *p++ ) << 16;- w |= ( uint64_t )( *p++ ) << 24;- w |= ( uint64_t )( *p++ ) << 32;- w |= ( uint64_t )( *p++ ) << 40;- return w;+#if defined(NATIVE_LITTLE_ENDIAN)+ memcpy(dst, &w, sizeof w);+#else+ uint8_t *p = ( uint8_t * )dst;+ p[0] = (uint8_t)(w >> 0);+ p[1] = (uint8_t)(w >> 8);+ p[2] = (uint8_t)(w >> 16);+ p[3] = (uint8_t)(w >> 24);+#endif } -static inline void store48( void *dst, uint64_t w )+static BLAKE2_INLINE void store64( void *dst, uint64_t w ) {+#if defined(NATIVE_LITTLE_ENDIAN)+ memcpy(dst, &w, sizeof w);+#else uint8_t *p = ( uint8_t * )dst;- *p++ = ( uint8_t )w; w >>= 8;- *p++ = ( uint8_t )w; w >>= 8;- *p++ = ( uint8_t )w; w >>= 8;- *p++ = ( uint8_t )w; w >>= 8;- *p++ = ( uint8_t )w; w >>= 8;- *p++ = ( uint8_t )w;+ p[0] = (uint8_t)(w >> 0);+ p[1] = (uint8_t)(w >> 8);+ p[2] = (uint8_t)(w >> 16);+ p[3] = (uint8_t)(w >> 24);+ p[4] = (uint8_t)(w >> 32);+ p[5] = (uint8_t)(w >> 40);+ p[6] = (uint8_t)(w >> 48);+ p[7] = (uint8_t)(w >> 56);+#endif } -static inline uint32_t rotl32( const uint32_t w, const unsigned c )+static BLAKE2_INLINE uint64_t load48( const void *src ) {- return ( w << c ) | ( w >> ( 32 - c ) );+ const uint8_t *p = ( const uint8_t * )src;+ return (( uint64_t )( p[0] ) << 0) |+ (( uint64_t )( p[1] ) << 8) |+ (( uint64_t )( p[2] ) << 16) |+ (( uint64_t )( p[3] ) << 24) |+ (( uint64_t )( p[4] ) << 32) |+ (( uint64_t )( p[5] ) << 40) ; } -static inline uint64_t rotl64( const uint64_t w, const unsigned c )+static BLAKE2_INLINE void store48( void *dst, uint64_t w ) {- return ( w << c ) | ( w >> ( 64 - c ) );+ uint8_t *p = ( uint8_t * )dst;+ p[0] = (uint8_t)(w >> 0);+ p[1] = (uint8_t)(w >> 8);+ p[2] = (uint8_t)(w >> 16);+ p[3] = (uint8_t)(w >> 24);+ p[4] = (uint8_t)(w >> 32);+ p[5] = (uint8_t)(w >> 40); } -static inline uint32_t rotr32( const uint32_t w, const unsigned c )+static BLAKE2_INLINE uint32_t rotr32( const uint32_t w, const unsigned c ) { return ( w >> c ) | ( w << ( 32 - c ) ); } -static inline uint64_t rotr64( const uint64_t w, const unsigned c )+static BLAKE2_INLINE uint64_t rotr64( const uint64_t w, const unsigned c ) { return ( w >> c ) | ( w << ( 64 - c ) ); } /* prevents compiler optimizing out memset() */-static inline void secure_zero_memory( void *v, size_t n )+static BLAKE2_INLINE void secure_zero_memory(void *v, size_t n) {- volatile uint8_t *p = ( volatile uint8_t * )v;- while( n-- ) *p++ = 0;+ static void *(*const volatile memset_v)(void *, int, size_t) = &memset;+ memset_v(v, 0, n); } #endif-
cbits/blake2/sse/blake2.h view
@@ -1,22 +1,29 @@ /*- BLAKE2 reference source code package - optimized C implementations+ BLAKE2 reference source code package - reference C implementations - Written in 2012 by Samuel Neves <sneves@dei.uc.pt>+ Copyright 2012, Samuel Neves <sneves@dei.uc.pt>. You may use this under the+ terms of the CC0, the OpenSSL Licence, or the Apache Public License 2.0, at+ your option. The terms of these licenses can be found at: - To the extent possible under law, the author(s) have dedicated all copyright- and related and neighboring rights to this software to the public domain- worldwide. This software is distributed without any warranty.+ - CC0 1.0 Universal : http://creativecommons.org/publicdomain/zero/1.0+ - OpenSSL license : https://www.openssl.org/source/license.html+ - Apache 2.0 : http://www.apache.org/licenses/LICENSE-2.0 - You should have received a copy of the CC0 Public Domain Dedication along with- this software. If not, see <http://creativecommons.org/publicdomain/zero/1.0/>.+ More information about the BLAKE2 hash function can be found at+ https://blake2.net. */-#pragma once-#ifndef __BLAKE2_H__-#define __BLAKE2_H__+#ifndef BLAKE2_H+#define BLAKE2_H #include <stddef.h> #include <stdint.h> +#if defined(_MSC_VER)+#define BLAKE2_PACKED(x) __pragma(pack(push, 1)) x __pragma(pack(pop))+#else+#define BLAKE2_PACKED(x) x __attribute__((packed))+#endif+ #if defined(__cplusplus) extern "C" { #endif@@ -39,112 +46,150 @@ BLAKE2B_PERSONALBYTES = 16 }; -#pragma pack(push, 1)- typedef struct __blake2s_param- {- uint8_t digest_length; // 1- uint8_t key_length; // 2- uint8_t fanout; // 3- uint8_t depth; // 4- uint32_t leaf_length; // 8- uint8_t node_offset[6];// 14- uint8_t node_depth; // 15- uint8_t inner_length; // 16- // uint8_t reserved[0];- uint8_t salt[BLAKE2S_SALTBYTES]; // 24- uint8_t personal[BLAKE2S_PERSONALBYTES]; // 32- } blake2s_param;-- typedef struct __blake2s_state+ typedef struct blake2s_state__ { uint32_t h[8]; uint32_t t[2]; uint32_t f[2];- uint8_t buf[2 * BLAKE2S_BLOCKBYTES];+ uint8_t buf[BLAKE2S_BLOCKBYTES]; size_t buflen;+ size_t outlen; uint8_t last_node; } blake2s_state; - typedef struct __blake2b_param- {- uint8_t digest_length; // 1- uint8_t key_length; // 2- uint8_t fanout; // 3- uint8_t depth; // 4- uint32_t leaf_length; // 8- uint64_t node_offset; // 16- uint8_t node_depth; // 17- uint8_t inner_length; // 18- uint8_t reserved[14]; // 32- uint8_t salt[BLAKE2B_SALTBYTES]; // 48- uint8_t personal[BLAKE2B_PERSONALBYTES]; // 64- } blake2b_param;-- typedef struct __blake2b_state+ typedef struct blake2b_state__ { uint64_t h[8]; uint64_t t[2]; uint64_t f[2];- uint8_t buf[2 * BLAKE2B_BLOCKBYTES];+ uint8_t buf[BLAKE2B_BLOCKBYTES]; size_t buflen;+ size_t outlen; uint8_t last_node; } blake2b_state; - typedef struct __blake2sp_state+ typedef struct blake2sp_state__ { blake2s_state S[8][1]; blake2s_state R[1];- uint8_t buf[8 * BLAKE2S_BLOCKBYTES];- size_t buflen;+ uint8_t buf[8 * BLAKE2S_BLOCKBYTES];+ size_t buflen;+ size_t outlen; } blake2sp_state; - typedef struct __blake2bp_state+ typedef struct blake2bp_state__ { blake2b_state S[4][1]; blake2b_state R[1];- uint8_t buf[4 * BLAKE2B_BLOCKBYTES];- size_t buflen;+ uint8_t buf[4 * BLAKE2B_BLOCKBYTES];+ size_t buflen;+ size_t outlen; } blake2bp_state;-#pragma pack(pop) - // Streaming API- int blake2s_init( blake2s_state *S, const uint8_t outlen );- int blake2s_init_key( blake2s_state *S, const uint8_t outlen, const void *key, const uint8_t keylen );++ BLAKE2_PACKED(struct blake2s_param__+ {+ uint8_t digest_length; /* 1 */+ uint8_t key_length; /* 2 */+ uint8_t fanout; /* 3 */+ uint8_t depth; /* 4 */+ uint32_t leaf_length; /* 8 */+ uint32_t node_offset; /* 12 */+ uint16_t xof_length; /* 14 */+ uint8_t node_depth; /* 15 */+ uint8_t inner_length; /* 16 */+ /* uint8_t reserved[0]; */+ uint8_t salt[BLAKE2S_SALTBYTES]; /* 24 */+ uint8_t personal[BLAKE2S_PERSONALBYTES]; /* 32 */+ });++ typedef struct blake2s_param__ blake2s_param;++ BLAKE2_PACKED(struct blake2b_param__+ {+ uint8_t digest_length; /* 1 */+ uint8_t key_length; /* 2 */+ uint8_t fanout; /* 3 */+ uint8_t depth; /* 4 */+ uint32_t leaf_length; /* 8 */+ uint32_t node_offset; /* 12 */+ uint32_t xof_length; /* 16 */+ uint8_t node_depth; /* 17 */+ uint8_t inner_length; /* 18 */+ uint8_t reserved[14]; /* 32 */+ uint8_t salt[BLAKE2B_SALTBYTES]; /* 48 */+ uint8_t personal[BLAKE2B_PERSONALBYTES]; /* 64 */+ });++ typedef struct blake2b_param__ blake2b_param;++ typedef struct blake2xs_state__+ {+ blake2s_state S[1];+ blake2s_param P[1];+ } blake2xs_state;++ typedef struct blake2xb_state__+ {+ blake2b_state S[1];+ blake2b_param P[1];+ } blake2xb_state;++ /* Padded structs result in a compile-time error */+ enum {+ BLAKE2_DUMMY_1 = 1/(sizeof(blake2s_param) == BLAKE2S_OUTBYTES),+ BLAKE2_DUMMY_2 = 1/(sizeof(blake2b_param) == BLAKE2B_OUTBYTES)+ };++ /* Streaming API */+ int blake2s_init( blake2s_state *S, size_t outlen );+ int blake2s_init_key( blake2s_state *S, size_t outlen, const void *key, size_t keylen ); int blake2s_init_param( blake2s_state *S, const blake2s_param *P );- int blake2s_update( blake2s_state *S, const uint8_t *in, uint64_t inlen );- int blake2s_final( blake2s_state *S, uint8_t *out, uint8_t outlen );+ int blake2s_update( blake2s_state *S, const void *in, size_t inlen );+ int blake2s_final( blake2s_state *S, void *out, size_t outlen ); - int blake2b_init( blake2b_state *S, const uint8_t outlen );- int blake2b_init_key( blake2b_state *S, const uint8_t outlen, const void *key, const uint8_t keylen );+ int blake2b_init( blake2b_state *S, size_t outlen );+ int blake2b_init_key( blake2b_state *S, size_t outlen, const void *key, size_t keylen ); int blake2b_init_param( blake2b_state *S, const blake2b_param *P );- int blake2b_update( blake2b_state *S, const uint8_t *in, uint64_t inlen );- int blake2b_final( blake2b_state *S, uint8_t *out, uint8_t outlen );+ int blake2b_update( blake2b_state *S, const void *in, size_t inlen );+ int blake2b_final( blake2b_state *S, void *out, size_t outlen ); - int blake2sp_init( blake2sp_state *S, const uint8_t outlen );- int blake2sp_init_key( blake2sp_state *S, const uint8_t outlen, const void *key, const uint8_t keylen );- int blake2sp_update( blake2sp_state *S, const uint8_t *in, uint64_t inlen );- int blake2sp_final( blake2sp_state *S, uint8_t *out, uint8_t outlen );+ int blake2sp_init( blake2sp_state *S, size_t outlen );+ int blake2sp_init_key( blake2sp_state *S, size_t outlen, const void *key, size_t keylen );+ int blake2sp_update( blake2sp_state *S, const void *in, size_t inlen );+ int blake2sp_final( blake2sp_state *S, void *out, size_t outlen ); - int blake2bp_init( blake2bp_state *S, const uint8_t outlen );- int blake2bp_init_key( blake2bp_state *S, const uint8_t outlen, const void *key, const uint8_t keylen );- int blake2bp_update( blake2bp_state *S, const uint8_t *in, uint64_t inlen );- int blake2bp_final( blake2bp_state *S, uint8_t *out, uint8_t outlen );+ int blake2bp_init( blake2bp_state *S, size_t outlen );+ int blake2bp_init_key( blake2bp_state *S, size_t outlen, const void *key, size_t keylen );+ int blake2bp_update( blake2bp_state *S, const void *in, size_t inlen );+ int blake2bp_final( blake2bp_state *S, void *out, size_t outlen ); - // Simple API- int blake2s( uint8_t *out, const void *in, const void *key, const uint8_t outlen, const uint64_t inlen, uint8_t keylen );- int blake2b( uint8_t *out, const void *in, const void *key, const uint8_t outlen, const uint64_t inlen, uint8_t keylen );+ /* Variable output length API */+ int blake2xs_init( blake2xs_state *S, const size_t outlen );+ int blake2xs_init_key( blake2xs_state *S, const size_t outlen, const void *key, size_t keylen );+ int blake2xs_update( blake2xs_state *S, const void *in, size_t inlen );+ int blake2xs_final(blake2xs_state *S, void *out, size_t outlen); - int blake2sp( uint8_t *out, const void *in, const void *key, const uint8_t outlen, const uint64_t inlen, uint8_t keylen );- int blake2bp( uint8_t *out, const void *in, const void *key, const uint8_t outlen, const uint64_t inlen, uint8_t keylen );+ int blake2xb_init( blake2xb_state *S, const size_t outlen );+ int blake2xb_init_key( blake2xb_state *S, const size_t outlen, const void *key, size_t keylen );+ int blake2xb_update( blake2xb_state *S, const void *in, size_t inlen );+ int blake2xb_final(blake2xb_state *S, void *out, size_t outlen); - static inline int blake2( uint8_t *out, const void *in, const void *key, const uint8_t outlen, const uint64_t inlen, uint8_t keylen )- {- return blake2b( out, in, key, outlen, inlen, keylen );- }+ /* Simple API */+ int blake2s( void *out, size_t outlen, const void *in, size_t inlen, const void *key, size_t keylen );+ int blake2b( void *out, size_t outlen, const void *in, size_t inlen, const void *key, size_t keylen ); + int blake2sp( void *out, size_t outlen, const void *in, size_t inlen, const void *key, size_t keylen );+ int blake2bp( void *out, size_t outlen, const void *in, size_t inlen, const void *key, size_t keylen );++ int blake2xs( void *out, size_t outlen, const void *in, size_t inlen, const void *key, size_t keylen );+ int blake2xb( void *out, size_t outlen, const void *in, size_t inlen, const void *key, size_t keylen );++ /* This is simply an alias for blake2b */+ int blake2( void *out, size_t outlen, const void *in, size_t inlen, const void *key, size_t keylen );+ #if defined(__cplusplus) } #endif #endif-
cbits/blake2/sse/blake2b-load-sse2.h view
@@ -1,18 +1,19 @@ /* BLAKE2 reference source code package - optimized C implementations - Written in 2012 by Samuel Neves <sneves@dei.uc.pt>+ Copyright 2012, Samuel Neves <sneves@dei.uc.pt>. You may use this under the+ terms of the CC0, the OpenSSL Licence, or the Apache Public License 2.0, at+ your option. The terms of these licenses can be found at: - To the extent possible under law, the author(s) have dedicated all copyright- and related and neighboring rights to this software to the public domain- worldwide. This software is distributed without any warranty.+ - CC0 1.0 Universal : http://creativecommons.org/publicdomain/zero/1.0+ - OpenSSL license : https://www.openssl.org/source/license.html+ - Apache 2.0 : http://www.apache.org/licenses/LICENSE-2.0 - You should have received a copy of the CC0 Public Domain Dedication along with- this software. If not, see <http://creativecommons.org/publicdomain/zero/1.0/>.+ More information about the BLAKE2 hash function can be found at+ https://blake2.net. */-#pragma once-#ifndef __BLAKE2B_LOAD_SSE2_H__-#define __BLAKE2B_LOAD_SSE2_H__+#ifndef BLAKE2B_LOAD_SSE2_H+#define BLAKE2B_LOAD_SSE2_H #define LOAD_MSG_0_1(b0, b1) b0 = _mm_set_epi64x(m2, m0); b1 = _mm_set_epi64x(m6, m4) #define LOAD_MSG_0_2(b0, b1) b0 = _mm_set_epi64x(m3, m1); b1 = _mm_set_epi64x(m7, m5)@@ -65,4 +66,3 @@ #endif-
cbits/blake2/sse/blake2b-load-sse41.h view
@@ -1,18 +1,19 @@ /* BLAKE2 reference source code package - optimized C implementations - Written in 2012 by Samuel Neves <sneves@dei.uc.pt>+ Copyright 2012, Samuel Neves <sneves@dei.uc.pt>. You may use this under the+ terms of the CC0, the OpenSSL Licence, or the Apache Public License 2.0, at+ your option. The terms of these licenses can be found at: - To the extent possible under law, the author(s) have dedicated all copyright- and related and neighboring rights to this software to the public domain- worldwide. This software is distributed without any warranty.+ - CC0 1.0 Universal : http://creativecommons.org/publicdomain/zero/1.0+ - OpenSSL license : https://www.openssl.org/source/license.html+ - Apache 2.0 : http://www.apache.org/licenses/LICENSE-2.0 - You should have received a copy of the CC0 Public Domain Dedication along with- this software. If not, see <http://creativecommons.org/publicdomain/zero/1.0/>.+ More information about the BLAKE2 hash function can be found at+ https://blake2.net. */-#pragma once-#ifndef __BLAKE2B_LOAD_SSE41_H__-#define __BLAKE2B_LOAD_SSE41_H__+#ifndef BLAKE2B_LOAD_SSE41_H+#define BLAKE2B_LOAD_SSE41_H #define LOAD_MSG_0_1(b0, b1) \ do \@@ -399,4 +400,3 @@ #endif-
cbits/blake2/sse/blake2b-round.h view
@@ -1,18 +1,19 @@ /* BLAKE2 reference source code package - optimized C implementations - Written in 2012 by Samuel Neves <sneves@dei.uc.pt>+ Copyright 2012, Samuel Neves <sneves@dei.uc.pt>. You may use this under the+ terms of the CC0, the OpenSSL Licence, or the Apache Public License 2.0, at+ your option. The terms of these licenses can be found at: - To the extent possible under law, the author(s) have dedicated all copyright- and related and neighboring rights to this software to the public domain- worldwide. This software is distributed without any warranty.+ - CC0 1.0 Universal : http://creativecommons.org/publicdomain/zero/1.0+ - OpenSSL license : https://www.openssl.org/source/license.html+ - Apache 2.0 : http://www.apache.org/licenses/LICENSE-2.0 - You should have received a copy of the CC0 Public Domain Dedication along with- this software. If not, see <http://creativecommons.org/publicdomain/zero/1.0/>.+ More information about the BLAKE2 hash function can be found at+ https://blake2.net. */-#pragma once-#ifndef __BLAKE2B_ROUND_H__-#define __BLAKE2B_ROUND_H__+#ifndef BLAKE2B_ROUND_H+#define BLAKE2B_ROUND_H #define LOADU(p) _mm_loadu_si128( (const __m128i *)(p) ) #define STOREU(p,r) _mm_storeu_si128((__m128i *)(p), r)@@ -59,7 +60,7 @@ \ row2l = _mm_roti_epi64(row2l, -24); \ row2h = _mm_roti_epi64(row2h, -24); \- + #define G2(row1l,row2l,row3l,row4l,row1h,row2h,row3h,row4h,b0,b1) \ row1l = _mm_add_epi64(_mm_add_epi64(row1l, b0), row2l); \ row1h = _mm_add_epi64(_mm_add_epi64(row1h, b1), row2h); \@@ -78,7 +79,7 @@ \ row2l = _mm_roti_epi64(row2l, -63); \ row2h = _mm_roti_epi64(row2h, -63); \- + #if defined(HAVE_SSSE3) #define DIAGONALIZE(row1l,row2l,row3l,row4l,row1h,row2h,row3h,row4h) \ t0 = _mm_alignr_epi8(row2h, row2l, 8); \@@ -154,4 +155,3 @@ UNDIAGONALIZE(row1l,row2l,row3l,row4l,row1h,row2h,row3h,row4h); #endif-
cbits/blake2/sse/blake2b.c view
@@ -1,14 +1,16 @@ /* BLAKE2 reference source code package - optimized C implementations - Written in 2012 by Samuel Neves <sneves@dei.uc.pt>+ Copyright 2012, Samuel Neves <sneves@dei.uc.pt>. You may use this under the+ terms of the CC0, the OpenSSL Licence, or the Apache Public License 2.0, at+ your option. The terms of these licenses can be found at: - To the extent possible under law, the author(s) have dedicated all copyright- and related and neighboring rights to this software to the public domain- worldwide. This software is distributed without any warranty.+ - CC0 1.0 Universal : http://creativecommons.org/publicdomain/zero/1.0+ - OpenSSL license : https://www.openssl.org/source/license.html+ - Apache 2.0 : http://www.apache.org/licenses/LICENSE-2.0 - You should have received a copy of the CC0 Public Domain Dedication along with- this software. If not, see <http://creativecommons.org/publicdomain/zero/1.0/>.+ More information about the BLAKE2 hash function can be found at+ https://blake2.net. */ #include <stdint.h>@@ -47,196 +49,93 @@ 0x1f83d9abfb41bd6bULL, 0x5be0cd19137e2179ULL }; -static const uint8_t blake2b_sigma[12][16] =-{- { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15 } ,- { 14, 10, 4, 8, 9, 15, 13, 6, 1, 12, 0, 2, 11, 7, 5, 3 } ,- { 11, 8, 12, 0, 5, 2, 15, 13, 10, 14, 3, 6, 7, 1, 9, 4 } ,- { 7, 9, 3, 1, 13, 12, 11, 14, 2, 6, 5, 10, 4, 0, 15, 8 } ,- { 9, 0, 5, 7, 2, 4, 10, 15, 14, 1, 11, 12, 6, 8, 3, 13 } ,- { 2, 12, 6, 10, 0, 11, 8, 3, 4, 13, 7, 5, 15, 14, 1, 9 } ,- { 12, 5, 1, 15, 14, 13, 4, 10, 0, 7, 6, 3, 9, 2, 8, 11 } ,- { 13, 11, 7, 14, 12, 1, 3, 9, 5, 0, 15, 4, 8, 6, 2, 10 } ,- { 6, 15, 14, 9, 11, 3, 0, 8, 12, 2, 13, 7, 1, 4, 10, 5 } ,- { 10, 2, 8, 4, 7, 6, 1, 5, 15, 11, 9, 14, 3, 12, 13 , 0 } ,- { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15 } ,- { 14, 10, 4, 8, 9, 15, 13, 6, 1, 12, 0, 2, 11, 7, 5, 3 }-};---/* Some helper functions, not necessarily useful */-static inline int blake2b_set_lastnode( blake2b_state *S )+/* Some helper functions */+static void blake2b_set_lastnode( blake2b_state *S ) {- S->f[1] = -1;- return 0;+ S->f[1] = (uint64_t)-1; } -static inline int blake2b_clear_lastnode( blake2b_state *S )+static int blake2b_is_lastblock( const blake2b_state *S ) {- S->f[1] = 0;- return 0;+ return S->f[0] != 0; } -static inline int blake2b_set_lastblock( blake2b_state *S )+static void blake2b_set_lastblock( blake2b_state *S ) { if( S->last_node ) blake2b_set_lastnode( S ); - S->f[0] = -1;- return 0;-}--static inline int blake2b_clear_lastblock( blake2b_state *S )-{- if( S->last_node ) blake2b_clear_lastnode( S );-- S->f[0] = 0;- return 0;+ S->f[0] = (uint64_t)-1; } --static inline int blake2b_increment_counter( blake2b_state *S, const uint64_t inc )+static void blake2b_increment_counter( blake2b_state *S, const uint64_t inc ) {-#if __x86_64__- // ADD/ADC chain- __uint128_t t = ( ( __uint128_t )S->t[1] << 64 ) | S->t[0];- t += inc;- S->t[0] = ( uint64_t )( t >> 0 );- S->t[1] = ( uint64_t )( t >> 64 );-#else S->t[0] += inc; S->t[1] += ( S->t[0] < inc );-#endif- return 0; } --// Parameter-related functions-static inline int blake2b_param_set_digest_length( blake2b_param *P, const uint8_t digest_length )-{- P->digest_length = digest_length;- return 0;-}--static inline int blake2b_param_set_fanout( blake2b_param *P, const uint8_t fanout )-{- P->fanout = fanout;- return 0;-}--static inline int blake2b_param_set_max_depth( blake2b_param *P, const uint8_t depth )-{- P->depth = depth;- return 0;-}--static inline int blake2b_param_set_leaf_length( blake2b_param *P, const uint32_t leaf_length )-{- P->leaf_length = leaf_length;- return 0;-}--static inline int blake2b_param_set_node_offset( blake2b_param *P, const uint64_t node_offset )-{- P->node_offset = node_offset;- return 0;-}--static inline int blake2b_param_set_node_depth( blake2b_param *P, const uint8_t node_depth )-{- P->node_depth = node_depth;- return 0;-}--static inline int blake2b_param_set_inner_length( blake2b_param *P, const uint8_t inner_length )-{- P->inner_length = inner_length;- return 0;-}--static inline int blake2b_param_set_salt( blake2b_param *P, const uint8_t salt[BLAKE2B_SALTBYTES] )-{- memcpy( P->salt, salt, BLAKE2B_SALTBYTES );- return 0;-}--static inline int blake2b_param_set_personal( blake2b_param *P, const uint8_t personal[BLAKE2B_PERSONALBYTES] )-{- memcpy( P->personal, personal, BLAKE2B_PERSONALBYTES );- return 0;-}--static inline int blake2b_init0( blake2b_state *S )-{- memset( S, 0, sizeof( blake2b_state ) );-- for( int i = 0; i < 8; ++i ) S->h[i] = blake2b_IV[i];-- return 0;-}- /* init xors IV with input parameter block */-__attribute__((visibility ("hidden"))) int blake2b_init_param( blake2b_state *S, const blake2b_param *P ) {- //blake2b_init0( S );- const uint8_t * v = ( const uint8_t * )( blake2b_IV );- const uint8_t * p = ( const uint8_t * )( P );- uint8_t * h = ( uint8_t * )( S->h );+ size_t i;+ /*blake2b_init0( S ); */+ const unsigned char * v = ( const unsigned char * )( blake2b_IV );+ const unsigned char * p = ( const unsigned char * )( P );+ unsigned char * h = ( unsigned char * )( S->h ); /* IV XOR ParamBlock */ memset( S, 0, sizeof( blake2b_state ) ); - for( int i = 0; i < BLAKE2B_OUTBYTES; ++i ) h[i] = v[i] ^ p[i];+ for( i = 0; i < BLAKE2B_OUTBYTES; ++i ) h[i] = v[i] ^ p[i]; + S->outlen = P->digest_length; return 0; } /* Some sort of default parameter block initialization, for sequential blake2b */-__attribute__((visibility ("hidden")))-int blake2b_init( blake2b_state *S, const uint8_t outlen )+int blake2b_init( blake2b_state *S, size_t outlen ) {+ blake2b_param P[1];+ if ( ( !outlen ) || ( outlen > BLAKE2B_OUTBYTES ) ) return -1; - const blake2b_param P =- {- outlen,- 0,- 1,- 1,- 0,- 0,- 0,- 0,- {0},- {0},- {0}- };- return blake2b_init_param( S, &P );+ P->digest_length = (uint8_t)outlen;+ P->key_length = 0;+ P->fanout = 1;+ P->depth = 1;+ store32( &P->leaf_length, 0 );+ store32( &P->node_offset, 0 );+ store32( &P->xof_length, 0 );+ P->node_depth = 0;+ P->inner_length = 0;+ memset( P->reserved, 0, sizeof( P->reserved ) );+ memset( P->salt, 0, sizeof( P->salt ) );+ memset( P->personal, 0, sizeof( P->personal ) );++ return blake2b_init_param( S, P ); } -__attribute__((visibility ("hidden")))-int blake2b_init_key( blake2b_state *S, const uint8_t outlen, const void *key, const uint8_t keylen )+int blake2b_init_key( blake2b_state *S, size_t outlen, const void *key, size_t keylen ) {+ blake2b_param P[1];+ if ( ( !outlen ) || ( outlen > BLAKE2B_OUTBYTES ) ) return -1; if ( ( !keylen ) || keylen > BLAKE2B_KEYBYTES ) return -1; - const blake2b_param P =- {- outlen,- keylen,- 1,- 1,- 0,- 0,- 0,- 0,- {0},- {0},- {0}- };+ P->digest_length = (uint8_t)outlen;+ P->key_length = (uint8_t)keylen;+ P->fanout = 1;+ P->depth = 1;+ store32( &P->leaf_length, 0 );+ store32( &P->node_offset, 0 );+ store32( &P->xof_length, 0 );+ P->node_depth = 0;+ P->inner_length = 0;+ memset( P->reserved, 0, sizeof( P->reserved ) );+ memset( P->salt, 0, sizeof( P->salt ) );+ memset( P->personal, 0, sizeof( P->personal ) ); - if( blake2b_init_param( S, &P ) < 0 )+ if( blake2b_init_param( S, P ) < 0 ) return 0; {@@ -249,7 +148,7 @@ return 0; } -static inline int blake2b_compress( blake2b_state *S, const uint8_t block[BLAKE2B_BLOCKBYTES] )+static void blake2b_compress( blake2b_state *S, const uint8_t block[BLAKE2B_BLOCKBYTES] ) { __m128i row1l, row1h; __m128i row2l, row2h;@@ -271,22 +170,22 @@ const __m128i m6 = LOADU( block + 96 ); const __m128i m7 = LOADU( block + 112 ); #else- const uint64_t m0 = ( ( uint64_t * )block )[ 0];- const uint64_t m1 = ( ( uint64_t * )block )[ 1];- const uint64_t m2 = ( ( uint64_t * )block )[ 2];- const uint64_t m3 = ( ( uint64_t * )block )[ 3];- const uint64_t m4 = ( ( uint64_t * )block )[ 4];- const uint64_t m5 = ( ( uint64_t * )block )[ 5];- const uint64_t m6 = ( ( uint64_t * )block )[ 6];- const uint64_t m7 = ( ( uint64_t * )block )[ 7];- const uint64_t m8 = ( ( uint64_t * )block )[ 8];- const uint64_t m9 = ( ( uint64_t * )block )[ 9];- const uint64_t m10 = ( ( uint64_t * )block )[10];- const uint64_t m11 = ( ( uint64_t * )block )[11];- const uint64_t m12 = ( ( uint64_t * )block )[12];- const uint64_t m13 = ( ( uint64_t * )block )[13];- const uint64_t m14 = ( ( uint64_t * )block )[14];- const uint64_t m15 = ( ( uint64_t * )block )[15];+ const uint64_t m0 = load64(block + 0 * sizeof(uint64_t));+ const uint64_t m1 = load64(block + 1 * sizeof(uint64_t));+ const uint64_t m2 = load64(block + 2 * sizeof(uint64_t));+ const uint64_t m3 = load64(block + 3 * sizeof(uint64_t));+ const uint64_t m4 = load64(block + 4 * sizeof(uint64_t));+ const uint64_t m5 = load64(block + 5 * sizeof(uint64_t));+ const uint64_t m6 = load64(block + 6 * sizeof(uint64_t));+ const uint64_t m7 = load64(block + 7 * sizeof(uint64_t));+ const uint64_t m8 = load64(block + 8 * sizeof(uint64_t));+ const uint64_t m9 = load64(block + 9 * sizeof(uint64_t));+ const uint64_t m10 = load64(block + 10 * sizeof(uint64_t));+ const uint64_t m11 = load64(block + 11 * sizeof(uint64_t));+ const uint64_t m12 = load64(block + 12 * sizeof(uint64_t));+ const uint64_t m13 = load64(block + 13 * sizeof(uint64_t));+ const uint64_t m14 = load64(block + 14 * sizeof(uint64_t));+ const uint64_t m15 = load64(block + 15 * sizeof(uint64_t)); #endif row1l = LOADU( &S->h[0] ); row1h = LOADU( &S->h[2] );@@ -316,64 +215,56 @@ row2h = _mm_xor_si128( row4h, row2h ); STOREU( &S->h[4], _mm_xor_si128( LOADU( &S->h[4] ), row2l ) ); STOREU( &S->h[6], _mm_xor_si128( LOADU( &S->h[6] ), row2h ) );- return 0; } -__attribute__((visibility ("hidden")))-int blake2b_update( blake2b_state *S, const uint8_t *in, uint64_t inlen )++int blake2b_update( blake2b_state *S, const void *pin, size_t inlen ) {- while( inlen > 0 )+ const unsigned char * in = (const unsigned char *)pin;+ if( inlen > 0 ) { size_t left = S->buflen;- size_t fill = 2 * BLAKE2B_BLOCKBYTES - left;-+ size_t fill = BLAKE2B_BLOCKBYTES - left; if( inlen > fill ) {- memcpy( S->buf + left, in, fill ); // Fill buffer- S->buflen += fill;+ S->buflen = 0;+ memcpy( S->buf + left, in, fill ); /* Fill buffer */ blake2b_increment_counter( S, BLAKE2B_BLOCKBYTES );- blake2b_compress( S, S->buf ); // Compress- memcpy( S->buf, S->buf + BLAKE2B_BLOCKBYTES, BLAKE2B_BLOCKBYTES ); // Shift buffer left- S->buflen -= BLAKE2B_BLOCKBYTES;- in += fill;- inlen -= fill;- }- else // inlen <= fill- {- memcpy( S->buf + left, in, inlen );- S->buflen += inlen; // Be lazy, do not compress- in += inlen;- inlen -= inlen;+ blake2b_compress( S, S->buf ); /* Compress */+ in += fill; inlen -= fill;+ while(inlen > BLAKE2B_BLOCKBYTES) {+ blake2b_increment_counter(S, BLAKE2B_BLOCKBYTES);+ blake2b_compress( S, in );+ in += BLAKE2B_BLOCKBYTES;+ inlen -= BLAKE2B_BLOCKBYTES;+ } }+ memcpy( S->buf + S->buflen, in, inlen );+ S->buflen += inlen; }- return 0; } -__attribute__((visibility ("hidden")))-int blake2b_final( blake2b_state *S, uint8_t *out, uint8_t outlen )++int blake2b_final( blake2b_state *S, void *out, size_t outlen ) {- if( outlen > BLAKE2B_OUTBYTES )+ if( out == NULL || outlen < S->outlen ) return -1; - if( S->buflen > BLAKE2B_BLOCKBYTES )- {- blake2b_increment_counter( S, BLAKE2B_BLOCKBYTES );- blake2b_compress( S, S->buf );- S->buflen -= BLAKE2B_BLOCKBYTES;- memcpy( S->buf, S->buf + BLAKE2B_BLOCKBYTES, S->buflen );- }+ if( blake2b_is_lastblock( S ) )+ return -1; blake2b_increment_counter( S, S->buflen ); blake2b_set_lastblock( S );- memset( S->buf + S->buflen, 0, 2 * BLAKE2B_BLOCKBYTES - S->buflen ); /* Padding */+ memset( S->buf + S->buflen, 0, BLAKE2B_BLOCKBYTES - S->buflen ); /* Padding */ blake2b_compress( S, S->buf );- memcpy( out, &S->h[0], outlen );++ memcpy( out, &S->h[0], S->outlen ); return 0; } -__attribute__((visibility ("hidden")))-int blake2b( uint8_t *out, const void *in, const void *key, const uint8_t outlen, const uint64_t inlen, uint8_t keylen )++int blake2b( void *out, size_t outlen, const void *in, size_t inlen, const void *key, size_t keylen ) { blake2b_state S[1]; @@ -401,3 +292,82 @@ blake2b_final( S, out, outlen ); return 0; }++int blake2( void *out, size_t outlen, const void *in, size_t inlen, const void *key, size_t keylen ) {+ return blake2b(out, outlen, in, inlen, key, keylen);+}++#if defined(SUPERCOP)+int crypto_hash( unsigned char *out, unsigned char *in, unsigned long long inlen )+{+ return blake2b( out, BLAKE2B_OUTBYTES, in, inlen, NULL, 0 );+}+#endif++#if defined(BLAKE2B_SELFTEST)+#include <string.h>+#include "blake2-kat.h"+int main( void )+{+ uint8_t key[BLAKE2B_KEYBYTES];+ uint8_t buf[BLAKE2_KAT_LENGTH];+ size_t i, step;++ for( i = 0; i < BLAKE2B_KEYBYTES; ++i )+ key[i] = ( uint8_t )i;++ for( i = 0; i < BLAKE2_KAT_LENGTH; ++i )+ buf[i] = ( uint8_t )i;++ /* Test simple API */+ for( i = 0; i < BLAKE2_KAT_LENGTH; ++i )+ {+ uint8_t hash[BLAKE2B_OUTBYTES];+ blake2b( hash, BLAKE2B_OUTBYTES, buf, i, key, BLAKE2B_KEYBYTES );++ if( 0 != memcmp( hash, blake2b_keyed_kat[i], BLAKE2B_OUTBYTES ) )+ {+ goto fail;+ }+ }++ /* Test streaming API */+ for(step = 1; step < BLAKE2B_BLOCKBYTES; ++step) {+ for (i = 0; i < BLAKE2_KAT_LENGTH; ++i) {+ uint8_t hash[BLAKE2B_OUTBYTES];+ blake2b_state S;+ uint8_t * p = buf;+ size_t mlen = i;+ int err = 0;++ if( (err = blake2b_init_key(&S, BLAKE2B_OUTBYTES, key, BLAKE2B_KEYBYTES)) < 0 ) {+ goto fail;+ }++ while (mlen >= step) {+ if ( (err = blake2b_update(&S, p, step)) < 0 ) {+ goto fail;+ }+ mlen -= step;+ p += step;+ }+ if ( (err = blake2b_update(&S, p, mlen)) < 0) {+ goto fail;+ }+ if ( (err = blake2b_final(&S, hash, BLAKE2B_OUTBYTES)) < 0) {+ goto fail;+ }++ if (0 != memcmp(hash, blake2b_keyed_kat[i], BLAKE2B_OUTBYTES)) {+ goto fail;+ }+ }+ }++ puts( "ok" );+ return 0;+fail:+ puts("error");+ return -1;+}+#endif
cbits/blake2/sse/blake2bp.c view
@@ -1,14 +1,16 @@ /* BLAKE2 reference source code package - optimized C implementations - Written in 2012 by Samuel Neves <sneves@dei.uc.pt>+ Copyright 2012, Samuel Neves <sneves@dei.uc.pt>. You may use this under the+ terms of the CC0, the OpenSSL Licence, or the Apache Public License 2.0, at+ your option. The terms of these licenses can be found at: - To the extent possible under law, the author(s) have dedicated all copyright- and related and neighboring rights to this software to the public domain- worldwide. This software is distributed without any warranty.+ - CC0 1.0 Universal : http://creativecommons.org/publicdomain/zero/1.0+ - OpenSSL license : https://www.openssl.org/source/license.html+ - Apache 2.0 : http://www.apache.org/licenses/LICENSE-2.0 - You should have received a copy of the CC0 Public Domain Dedication along with- this software. If not, see <http://creativecommons.org/publicdomain/zero/1.0/>.+ More information about the BLAKE2 hash function can be found at+ https://blake2.net. */ #include <stdio.h>@@ -25,32 +27,48 @@ #define PARALLELISM_DEGREE 4 -static inline int blake2bp_init_leaf( blake2b_state *S, uint8_t outlen, uint8_t keylen, uint64_t offset )+/*+ blake2b_init_param defaults to setting the expecting output length+ from the digest_length parameter block field.++ In some cases, however, we do not want this, as the output length+ of these instances is given by inner_length instead.+*/+static int blake2bp_init_leaf_param( blake2b_state *S, const blake2b_param *P ) {+ int err = blake2b_init_param(S, P);+ S->outlen = P->inner_length;+ return err;+}++static int blake2bp_init_leaf( blake2b_state *S, size_t outlen, size_t keylen, uint64_t offset )+{ blake2b_param P[1];- P->digest_length = outlen;- P->key_length = keylen;+ P->digest_length = (uint8_t)outlen;+ P->key_length = (uint8_t)keylen; P->fanout = PARALLELISM_DEGREE; P->depth = 2; P->leaf_length = 0; P->node_offset = offset;+ P->xof_length = 0; P->node_depth = 0; P->inner_length = BLAKE2B_OUTBYTES; memset( P->reserved, 0, sizeof( P->reserved ) ); memset( P->salt, 0, sizeof( P->salt ) ); memset( P->personal, 0, sizeof( P->personal ) );- return blake2b_init_param( S, P );+ return blake2bp_init_leaf_param( S, P ); } -static inline int blake2bp_init_root( blake2b_state *S, uint8_t outlen, uint8_t keylen )+static int blake2bp_init_root( blake2b_state *S, size_t outlen, size_t keylen ) { blake2b_param P[1];- P->digest_length = outlen;- P->key_length = keylen;+ P->digest_length = (uint8_t)outlen;+ P->key_length = (uint8_t)keylen; P->fanout = PARALLELISM_DEGREE; P->depth = 2; P->leaf_length = 0; P->node_offset = 0;+ P->xof_length = 0; P->node_depth = 1; P->inner_length = BLAKE2B_OUTBYTES; memset( P->reserved, 0, sizeof( P->reserved ) );@@ -59,18 +77,20 @@ return blake2b_init_param( S, P ); } -__attribute__((visibility ("hidden")))-int blake2bp_init( blake2bp_state *S, const uint8_t outlen )++int blake2bp_init( blake2bp_state *S, size_t outlen ) {+ size_t i; if( !outlen || outlen > BLAKE2B_OUTBYTES ) return -1; memset( S->buf, 0, sizeof( S->buf ) ); S->buflen = 0;+ S->outlen = outlen; if( blake2bp_init_root( S->R, outlen, 0 ) < 0 ) return -1; - for( size_t i = 0; i < PARALLELISM_DEGREE; ++i )+ for( i = 0; i < PARALLELISM_DEGREE; ++i ) if( blake2bp_init_leaf( S->S[i], outlen, 0, i ) < 0 ) return -1; S->R->last_node = 1;@@ -78,20 +98,22 @@ return 0; } -__attribute__((visibility ("hidden")))-int blake2bp_init_key( blake2bp_state *S, const uint8_t outlen, const void *key, const uint8_t keylen )+int blake2bp_init_key( blake2bp_state *S, size_t outlen, const void *key, size_t keylen ) {+ size_t i;+ if( !outlen || outlen > BLAKE2B_OUTBYTES ) return -1; if( !key || !keylen || keylen > BLAKE2B_KEYBYTES ) return -1; memset( S->buf, 0, sizeof( S->buf ) ); S->buflen = 0;+ S->outlen = outlen; if( blake2bp_init_root( S->R, outlen, keylen ) < 0 ) return -1; - for( size_t i = 0; i < PARALLELISM_DEGREE; ++i )+ for( i = 0; i < PARALLELISM_DEGREE; ++i ) if( blake2bp_init_leaf( S->S[i], outlen, keylen, i ) < 0 ) return -1; S->R->last_node = 1;@@ -101,7 +123,7 @@ memset( block, 0, BLAKE2B_BLOCKBYTES ); memcpy( block, key, keylen ); - for( size_t i = 0; i < PARALLELISM_DEGREE; ++i )+ for( i = 0; i < PARALLELISM_DEGREE; ++i ) blake2b_update( S->S[i], block, BLAKE2B_BLOCKBYTES ); secure_zero_memory( block, BLAKE2B_BLOCKBYTES ); /* Burn the key from stack */@@ -109,17 +131,19 @@ return 0; } -__attribute__((visibility ("hidden")))-int blake2bp_update( blake2bp_state *S, const uint8_t *in, uint64_t inlen )++int blake2bp_update( blake2bp_state *S, const void *pin, size_t inlen ) {+ const unsigned char * in = (const unsigned char *)pin; size_t left = S->buflen; size_t fill = sizeof( S->buf ) - left;+ size_t i; if( left && inlen >= fill ) { memcpy( S->buf + left, in, fill ); - for( size_t i = 0; i < PARALLELISM_DEGREE; ++i )+ for( i = 0; i < PARALLELISM_DEGREE; ++i ) blake2b_update( S->S[i], S->buf + i * BLAKE2B_BLOCKBYTES, BLAKE2B_BLOCKBYTES ); in += fill;@@ -131,19 +155,19 @@ #pragma omp parallel shared(S), num_threads(PARALLELISM_DEGREE) #else - for( size_t id__ = 0; id__ < PARALLELISM_DEGREE; ++id__ )+ for( i = 0; i < PARALLELISM_DEGREE; ++i ) #endif { #if defined(_OPENMP)- size_t id__ = omp_get_thread_num();+ size_t i = omp_get_thread_num(); #endif- uint64_t inlen__ = inlen;- const uint8_t *in__ = ( const uint8_t * )in;- in__ += id__ * BLAKE2B_BLOCKBYTES;+ size_t inlen__ = inlen;+ const unsigned char *in__ = ( const unsigned char * )in;+ in__ += i * BLAKE2B_BLOCKBYTES; while( inlen__ >= PARALLELISM_DEGREE * BLAKE2B_BLOCKBYTES ) {- blake2b_update( S->S[id__], in__, BLAKE2B_BLOCKBYTES );+ blake2b_update( S->S[i], in__, BLAKE2B_BLOCKBYTES ); in__ += PARALLELISM_DEGREE * BLAKE2B_BLOCKBYTES; inlen__ -= PARALLELISM_DEGREE * BLAKE2B_BLOCKBYTES; }@@ -160,12 +184,17 @@ } -__attribute__((visibility ("hidden")))-int blake2bp_final( blake2bp_state *S, uint8_t *out, const uint8_t outlen )++int blake2bp_final( blake2bp_state *S, void *out, size_t outlen ) { uint8_t hash[PARALLELISM_DEGREE][BLAKE2B_OUTBYTES];+ size_t i; - for( size_t i = 0; i < PARALLELISM_DEGREE; ++i )+ if(out == NULL || outlen < S->outlen) {+ return -1;+ }++ for( i = 0; i < PARALLELISM_DEGREE; ++i ) { if( S->buflen > i * BLAKE2B_BLOCKBYTES ) {@@ -179,18 +208,18 @@ blake2b_final( S->S[i], hash[i], BLAKE2B_OUTBYTES ); } - for( size_t i = 0; i < PARALLELISM_DEGREE; ++i )+ for( i = 0; i < PARALLELISM_DEGREE; ++i ) blake2b_update( S->R, hash[i], BLAKE2B_OUTBYTES ); - return blake2b_final( S->R, out, outlen );+ return blake2b_final( S->R, out, S->outlen ); } -__attribute__((visibility ("hidden")))-int blake2bp( uint8_t *out, const void *in, const void *key, uint8_t outlen, uint64_t inlen, uint8_t keylen )+int blake2bp( void *out, size_t outlen, const void *in, size_t inlen, const void *key, size_t keylen ) { uint8_t hash[PARALLELISM_DEGREE][BLAKE2B_OUTBYTES]; blake2b_state S[PARALLELISM_DEGREE][1]; blake2b_state FS[1];+ size_t i; /* Verify parameters */ if ( NULL == in && inlen > 0 ) return -1;@@ -203,10 +232,10 @@ if( keylen > BLAKE2B_KEYBYTES ) return -1; - for( size_t i = 0; i < PARALLELISM_DEGREE; ++i )+ for( i = 0; i < PARALLELISM_DEGREE; ++i ) if( blake2bp_init_leaf( S[i], outlen, keylen, i ) < 0 ) return -1; - S[PARALLELISM_DEGREE - 1]->last_node = 1; // mark last node+ S[PARALLELISM_DEGREE - 1]->last_node = 1; /* mark last node */ if( keylen > 0 ) {@@ -214,7 +243,7 @@ memset( block, 0, BLAKE2B_BLOCKBYTES ); memcpy( block, key, keylen ); - for( size_t i = 0; i < PARALLELISM_DEGREE; ++i )+ for( i = 0; i < PARALLELISM_DEGREE; ++i ) blake2b_update( S[i], block, BLAKE2B_BLOCKBYTES ); secure_zero_memory( block, BLAKE2B_BLOCKBYTES ); /* Burn the key from stack */@@ -224,40 +253,109 @@ #pragma omp parallel shared(S,hash), num_threads(PARALLELISM_DEGREE) #else - for( size_t id__ = 0; id__ < PARALLELISM_DEGREE; ++id__ )+ for( i = 0; i < PARALLELISM_DEGREE; ++i ) #endif { #if defined(_OPENMP)- size_t id__ = omp_get_thread_num();+ size_t i = omp_get_thread_num(); #endif- uint64_t inlen__ = inlen;- const uint8_t *in__ = ( const uint8_t * )in;- in__ += id__ * BLAKE2B_BLOCKBYTES;+ size_t inlen__ = inlen;+ const unsigned char *in__ = ( const unsigned char * )in;+ in__ += i * BLAKE2B_BLOCKBYTES; while( inlen__ >= PARALLELISM_DEGREE * BLAKE2B_BLOCKBYTES ) {- blake2b_update( S[id__], in__, BLAKE2B_BLOCKBYTES );+ blake2b_update( S[i], in__, BLAKE2B_BLOCKBYTES ); in__ += PARALLELISM_DEGREE * BLAKE2B_BLOCKBYTES; inlen__ -= PARALLELISM_DEGREE * BLAKE2B_BLOCKBYTES; } - if( inlen__ > id__ * BLAKE2B_BLOCKBYTES )+ if( inlen__ > i * BLAKE2B_BLOCKBYTES ) {- const size_t left = inlen__ - id__ * BLAKE2B_BLOCKBYTES;+ const size_t left = inlen__ - i * BLAKE2B_BLOCKBYTES; const size_t len = left <= BLAKE2B_BLOCKBYTES ? left : BLAKE2B_BLOCKBYTES;- blake2b_update( S[id__], in__, len );+ blake2b_update( S[i], in__, len ); } - blake2b_final( S[id__], hash[id__], BLAKE2B_OUTBYTES );+ blake2b_final( S[i], hash[i], BLAKE2B_OUTBYTES ); } if( blake2bp_init_root( FS, outlen, keylen ) < 0 ) return -1; - FS->last_node = 1; // Mark as last node+ FS->last_node = 1; /* Mark as last node */ - for( size_t i = 0; i < PARALLELISM_DEGREE; ++i )+ for( i = 0; i < PARALLELISM_DEGREE; ++i ) blake2b_update( FS, hash[i], BLAKE2B_OUTBYTES ); return blake2b_final( FS, out, outlen ); }+++#if defined(BLAKE2BP_SELFTEST)+#include <string.h>+#include "blake2-kat.h"+int main( void )+{+ uint8_t key[BLAKE2B_KEYBYTES];+ uint8_t buf[BLAKE2_KAT_LENGTH];+ size_t i, step;++ for( i = 0; i < BLAKE2B_KEYBYTES; ++i )+ key[i] = ( uint8_t )i;++ for( i = 0; i < BLAKE2_KAT_LENGTH; ++i )+ buf[i] = ( uint8_t )i;++ /* Test simple API */+ for( i = 0; i < BLAKE2_KAT_LENGTH; ++i )+ {+ uint8_t hash[BLAKE2B_OUTBYTES];+ blake2bp( hash, BLAKE2B_OUTBYTES, buf, i, key, BLAKE2B_KEYBYTES );++ if( 0 != memcmp( hash, blake2bp_keyed_kat[i], BLAKE2B_OUTBYTES ) )+ {+ goto fail;+ }+ }++ /* Test streaming API */+ for(step = 1; step < BLAKE2B_BLOCKBYTES; ++step) {+ for (i = 0; i < BLAKE2_KAT_LENGTH; ++i) {+ uint8_t hash[BLAKE2B_OUTBYTES];+ blake2bp_state S;+ uint8_t * p = buf;+ size_t mlen = i;+ int err = 0;++ if( (err = blake2bp_init_key(&S, BLAKE2B_OUTBYTES, key, BLAKE2B_KEYBYTES)) < 0 ) {+ goto fail;+ }++ while (mlen >= step) {+ if ( (err = blake2bp_update(&S, p, step)) < 0 ) {+ goto fail;+ }+ mlen -= step;+ p += step;+ }+ if ( (err = blake2bp_update(&S, p, mlen)) < 0) {+ goto fail;+ }+ if ( (err = blake2bp_final(&S, hash, BLAKE2B_OUTBYTES)) < 0) {+ goto fail;+ }++ if (0 != memcmp(hash, blake2bp_keyed_kat[i], BLAKE2B_OUTBYTES)) {+ goto fail;+ }+ }+ }++ puts( "ok" );+ return 0;+fail:+ puts("error");+ return -1;+}+#endif
cbits/blake2/sse/blake2s-load-sse2.h view
@@ -1,18 +1,19 @@ /* BLAKE2 reference source code package - optimized C implementations - Written in 2012 by Samuel Neves <sneves@dei.uc.pt>+ Copyright 2012, Samuel Neves <sneves@dei.uc.pt>. You may use this under the+ terms of the CC0, the OpenSSL Licence, or the Apache Public License 2.0, at+ your option. The terms of these licenses can be found at: - To the extent possible under law, the author(s) have dedicated all copyright- and related and neighboring rights to this software to the public domain- worldwide. This software is distributed without any warranty.+ - CC0 1.0 Universal : http://creativecommons.org/publicdomain/zero/1.0+ - OpenSSL license : https://www.openssl.org/source/license.html+ - Apache 2.0 : http://www.apache.org/licenses/LICENSE-2.0 - You should have received a copy of the CC0 Public Domain Dedication along with- this software. If not, see <http://creativecommons.org/publicdomain/zero/1.0/>.+ More information about the BLAKE2 hash function can be found at+ https://blake2.net. */-#pragma once-#ifndef __BLAKE2S_LOAD_SSE2_H__-#define __BLAKE2S_LOAD_SSE2_H__+#ifndef BLAKE2S_LOAD_SSE2_H+#define BLAKE2S_LOAD_SSE2_H #define LOAD_MSG_0_1(buf) buf = _mm_set_epi32(m6,m4,m2,m0) #define LOAD_MSG_0_2(buf) buf = _mm_set_epi32(m7,m5,m3,m1)
cbits/blake2/sse/blake2s-load-sse41.h view
@@ -1,18 +1,19 @@ /* BLAKE2 reference source code package - optimized C implementations - Written in 2012 by Samuel Neves <sneves@dei.uc.pt>+ Copyright 2012, Samuel Neves <sneves@dei.uc.pt>. You may use this under the+ terms of the CC0, the OpenSSL Licence, or the Apache Public License 2.0, at+ your option. The terms of these licenses can be found at: - To the extent possible under law, the author(s) have dedicated all copyright- and related and neighboring rights to this software to the public domain- worldwide. This software is distributed without any warranty.+ - CC0 1.0 Universal : http://creativecommons.org/publicdomain/zero/1.0+ - OpenSSL license : https://www.openssl.org/source/license.html+ - Apache 2.0 : http://www.apache.org/licenses/LICENSE-2.0 - You should have received a copy of the CC0 Public Domain Dedication along with- this software. If not, see <http://creativecommons.org/publicdomain/zero/1.0/>.+ More information about the BLAKE2 hash function can be found at+ https://blake2.net. */-#pragma once-#ifndef __BLAKE2S_LOAD_SSE41_H__-#define __BLAKE2S_LOAD_SSE41_H__+#ifndef BLAKE2S_LOAD_SSE41_H+#define BLAKE2S_LOAD_SSE41_H #define LOAD_MSG_0_1(buf) \ buf = TOI(_mm_shuffle_ps(TOF(m0), TOF(m1), _MM_SHUFFLE(2,0,2,0)));@@ -226,4 +227,3 @@ buf = _mm_shuffle_epi32(t2,_MM_SHUFFLE(0,1,2,3)); #endif-
cbits/blake2/sse/blake2s-load-xop.h view
@@ -1,31 +1,34 @@ /* BLAKE2 reference source code package - optimized C implementations - Written in 2012 by Samuel Neves <sneves@dei.uc.pt>+ Copyright 2012, Samuel Neves <sneves@dei.uc.pt>. You may use this under the+ terms of the CC0, the OpenSSL Licence, or the Apache Public License 2.0, at+ your option. The terms of these licenses can be found at: - To the extent possible under law, the author(s) have dedicated all copyright- and related and neighboring rights to this software to the public domain- worldwide. This software is distributed without any warranty.+ - CC0 1.0 Universal : http://creativecommons.org/publicdomain/zero/1.0+ - OpenSSL license : https://www.openssl.org/source/license.html+ - Apache 2.0 : http://www.apache.org/licenses/LICENSE-2.0 - You should have received a copy of the CC0 Public Domain Dedication along with- this software. If not, see <http://creativecommons.org/publicdomain/zero/1.0/>.+ More information about the BLAKE2 hash function can be found at+ https://blake2.net. */-#pragma once-#ifndef __BLAKE2S_LOAD_XOP_H__-#define __BLAKE2S_LOAD_XOP_H__+#ifndef BLAKE2S_LOAD_XOP_H+#define BLAKE2S_LOAD_XOP_H -#define TOB(x) ((x)*4*0x01010101 + 0x03020100) // ..or not TOB+#define TOB(x) ((x)*4*0x01010101 + 0x03020100) /* ..or not TOB */ +#if 0 /* Basic VPPERM emulation, for testing purposes */-/*static __m128i _mm_perm_epi8(const __m128i src1, const __m128i src2, const __m128i sel)+static __m128i _mm_perm_epi8(const __m128i src1, const __m128i src2, const __m128i sel) { const __m128i sixteen = _mm_set1_epi8(16); const __m128i t0 = _mm_shuffle_epi8(src1, sel); const __m128i s1 = _mm_shuffle_epi8(src2, _mm_sub_epi8(sel, sixteen)); const __m128i mask = _mm_or_si128(_mm_cmpeq_epi8(sel, sixteen),- _mm_cmpgt_epi8(sel, sixteen)); // (>=16) = 0xff : 00+ _mm_cmpgt_epi8(sel, sixteen)); /* (>=16) = 0xff : 00 */ return _mm_blendv_epi8(t0, s1, mask);-}*/+}+#endif #define LOAD_MSG_0_1(buf) \ buf = _mm_perm_epi8(m0, m1, _mm_set_epi32(TOB(6),TOB(4),TOB(2),TOB(0)) );@@ -166,7 +169,7 @@ #define LOAD_MSG_8_3(buf) \ t0 = _mm_perm_epi8(m0, m2, _mm_set_epi32(TOB(6),TOB(1),TOB(0),TOB(0)) ); \ buf = _mm_perm_epi8(t0, m3, _mm_set_epi32(TOB(3),TOB(2),TOB(5),TOB(4)) ); \- + #define LOAD_MSG_8_4(buf) \ buf = _mm_perm_epi8(m0, m1, _mm_set_epi32(TOB(5),TOB(4),TOB(7),TOB(2)) ); @@ -186,4 +189,3 @@ buf = _mm_perm_epi8(t1, m3, _mm_set_epi32(TOB(3),TOB(4),TOB(6),TOB(0)) ); #endif-
cbits/blake2/sse/blake2s-round.h view
@@ -1,18 +1,19 @@ /* BLAKE2 reference source code package - optimized C implementations - Written in 2012 by Samuel Neves <sneves@dei.uc.pt>+ Copyright 2012, Samuel Neves <sneves@dei.uc.pt>. You may use this under the+ terms of the CC0, the OpenSSL Licence, or the Apache Public License 2.0, at+ your option. The terms of these licenses can be found at: - To the extent possible under law, the author(s) have dedicated all copyright- and related and neighboring rights to this software to the public domain- worldwide. This software is distributed without any warranty.+ - CC0 1.0 Universal : http://creativecommons.org/publicdomain/zero/1.0+ - OpenSSL license : https://www.openssl.org/source/license.html+ - Apache 2.0 : http://www.apache.org/licenses/LICENSE-2.0 - You should have received a copy of the CC0 Public Domain Dedication along with- this software. If not, see <http://creativecommons.org/publicdomain/zero/1.0/>.+ More information about the BLAKE2 hash function can be found at+ https://blake2.net. */-#pragma once-#ifndef __BLAKE2S_ROUND_H__-#define __BLAKE2S_ROUND_H__+#ifndef BLAKE2S_ROUND_H+#define BLAKE2S_ROUND_H #define LOADU(p) _mm_loadu_si128( (const __m128i *)(p) ) #define STOREU(p,r) _mm_storeu_si128((__m128i *)(p), r)@@ -83,6 +84,5 @@ LOAD_MSG_ ##r ##_4(buf4); \ G2(row1,row2,row3,row4,buf4); \ UNDIAGONALIZE(row1,row2,row3,row4); \- -#endif +#endif
cbits/blake2/sse/blake2s.c view
@@ -1,14 +1,16 @@ /* BLAKE2 reference source code package - optimized C implementations - Written in 2012 by Samuel Neves <sneves@dei.uc.pt>+ Copyright 2012, Samuel Neves <sneves@dei.uc.pt>. You may use this under the+ terms of the CC0, the OpenSSL Licence, or the Apache Public License 2.0, at+ your option. The terms of these licenses can be found at: - To the extent possible under law, the author(s) have dedicated all copyright- and related and neighboring rights to this software to the public domain- worldwide. This software is distributed without any warranty.+ - CC0 1.0 Universal : http://creativecommons.org/publicdomain/zero/1.0+ - OpenSSL license : https://www.openssl.org/source/license.html+ - Apache 2.0 : http://www.apache.org/licenses/LICENSE-2.0 - You should have received a copy of the CC0 Public Domain Dedication along with- this software. If not, see <http://creativecommons.org/publicdomain/zero/1.0/>.+ More information about the BLAKE2 hash function can be found at+ https://blake2.net. */ #include <stdint.h>@@ -43,187 +45,98 @@ 0x510E527FUL, 0x9B05688CUL, 0x1F83D9ABUL, 0x5BE0CD19UL }; -static const uint8_t blake2s_sigma[10][16] =-{- { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15 } ,- { 14, 10, 4, 8, 9, 15, 13, 6, 1, 12, 0, 2, 11, 7, 5, 3 } ,- { 11, 8, 12, 0, 5, 2, 15, 13, 10, 14, 3, 6, 7, 1, 9, 4 } ,- { 7, 9, 3, 1, 13, 12, 11, 14, 2, 6, 5, 10, 4, 0, 15, 8 } ,- { 9, 0, 5, 7, 2, 4, 10, 15, 14, 1, 11, 12, 6, 8, 3, 13 } ,- { 2, 12, 6, 10, 0, 11, 8, 3, 4, 13, 7, 5, 15, 14, 1, 9 } ,- { 12, 5, 1, 15, 14, 13, 4, 10, 0, 7, 6, 3, 9, 2, 8, 11 } ,- { 13, 11, 7, 14, 12, 1, 3, 9, 5, 0, 15, 4, 8, 6, 2, 10 } ,- { 6, 15, 14, 9, 11, 3, 0, 8, 12, 2, 13, 7, 1, 4, 10, 5 } ,- { 10, 2, 8, 4, 7, 6, 1, 5, 15, 11, 9, 14, 3, 12, 13 , 0 } ,-};---/* Some helper functions, not necessarily useful */-static inline int blake2s_set_lastnode( blake2s_state *S )+/* Some helper functions */+static void blake2s_set_lastnode( blake2s_state *S ) {- S->f[1] = -1;- return 0;+ S->f[1] = (uint32_t)-1; } -static inline int blake2s_clear_lastnode( blake2s_state *S )+static int blake2s_is_lastblock( const blake2s_state *S ) {- S->f[1] = 0;- return 0;+ return S->f[0] != 0; } -static inline int blake2s_set_lastblock( blake2s_state *S )+static void blake2s_set_lastblock( blake2s_state *S ) { if( S->last_node ) blake2s_set_lastnode( S ); - S->f[0] = -1;- return 0;-}--static inline int blake2s_clear_lastblock( blake2s_state *S )-{- if( S->last_node ) blake2s_clear_lastnode( S );-- S->f[0] = 0;- return 0;+ S->f[0] = (uint32_t)-1; } -static inline int blake2s_increment_counter( blake2s_state *S, const uint32_t inc )+static void blake2s_increment_counter( blake2s_state *S, const uint32_t inc ) { uint64_t t = ( ( uint64_t )S->t[1] << 32 ) | S->t[0]; t += inc; S->t[0] = ( uint32_t )( t >> 0 ); S->t[1] = ( uint32_t )( t >> 32 );- return 0; } --// Parameter-related functions-static inline int blake2s_param_set_digest_length( blake2s_param *P, const uint8_t digest_length )-{- P->digest_length = digest_length;- return 0;-}--static inline int blake2s_param_set_fanout( blake2s_param *P, const uint8_t fanout )-{- P->fanout = fanout;- return 0;-}--static inline int blake2s_param_set_max_depth( blake2s_param *P, const uint8_t depth )-{- P->depth = depth;- return 0;-}--static inline int blake2s_param_set_leaf_length( blake2s_param *P, const uint32_t leaf_length )-{- P->leaf_length = leaf_length;- return 0;-}--static inline int blake2s_param_set_node_offset( blake2s_param *P, const uint64_t node_offset )-{- store48( P->node_offset, node_offset );- return 0;-}--static inline int blake2s_param_set_node_depth( blake2s_param *P, const uint8_t node_depth )-{- P->node_depth = node_depth;- return 0;-}--static inline int blake2s_param_set_inner_length( blake2s_param *P, const uint8_t inner_length )-{- P->inner_length = inner_length;- return 0;-}--static inline int blake2s_param_set_salt( blake2s_param *P, const uint8_t salt[BLAKE2S_SALTBYTES] )-{- memcpy( P->salt, salt, BLAKE2S_SALTBYTES );- return 0;-}--static inline int blake2s_param_set_personal( blake2s_param *P, const uint8_t personal[BLAKE2S_PERSONALBYTES] )-{- memcpy( P->personal, personal, BLAKE2S_PERSONALBYTES );- return 0;-}--static inline int blake2s_init0( blake2s_state *S )-{- memset( S, 0, sizeof( blake2s_state ) );-- for( int i = 0; i < 8; ++i ) S->h[i] = blake2s_IV[i];-- return 0;-}- /* init2 xors IV with input parameter block */-__attribute__((visibility ("hidden"))) int blake2s_init_param( blake2s_state *S, const blake2s_param *P ) {- //blake2s_init0( S );+ size_t i;+ /*blake2s_init0( S ); */ const uint8_t * v = ( const uint8_t * )( blake2s_IV ); const uint8_t * p = ( const uint8_t * )( P ); uint8_t * h = ( uint8_t * )( S->h ); /* IV XOR ParamBlock */ memset( S, 0, sizeof( blake2s_state ) ); - for( int i = 0; i < BLAKE2S_OUTBYTES; ++i ) h[i] = v[i] ^ p[i];+ for( i = 0; i < BLAKE2S_OUTBYTES; ++i ) h[i] = v[i] ^ p[i]; + S->outlen = P->digest_length; return 0; } /* Some sort of default parameter block initialization, for sequential blake2s */-__attribute__((visibility ("hidden")))-int blake2s_init( blake2s_state *S, const uint8_t outlen )+int blake2s_init( blake2s_state *S, size_t outlen ) {+ blake2s_param P[1];+ /* Move interval verification here? */ if ( ( !outlen ) || ( outlen > BLAKE2S_OUTBYTES ) ) return -1; - const blake2s_param P =- {- outlen,- 0,- 1,- 1,- 0,- {0},- 0,- 0,- {0},- {0}- };- return blake2s_init_param( S, &P );+ P->digest_length = (uint8_t)outlen;+ P->key_length = 0;+ P->fanout = 1;+ P->depth = 1;+ store32( &P->leaf_length, 0 );+ store32( &P->node_offset, 0 );+ store16( &P->xof_length, 0 );+ P->node_depth = 0;+ P->inner_length = 0;+ /* memset(P->reserved, 0, sizeof(P->reserved) ); */+ memset( P->salt, 0, sizeof( P->salt ) );+ memset( P->personal, 0, sizeof( P->personal ) );++ return blake2s_init_param( S, P ); } -__attribute__((visibility ("hidden")))-int blake2s_init_key( blake2s_state *S, const uint8_t outlen, const void *key, const uint8_t keylen )++int blake2s_init_key( blake2s_state *S, size_t outlen, const void *key, size_t keylen ) {+ blake2s_param P[1];+ /* Move interval verification here? */ if ( ( !outlen ) || ( outlen > BLAKE2S_OUTBYTES ) ) return -1; if ( ( !key ) || ( !keylen ) || keylen > BLAKE2S_KEYBYTES ) return -1; - const blake2s_param P =- {- outlen,- keylen,- 1,- 1,- 0,- {0},- 0,- 0,- {0},- {0}- };+ P->digest_length = (uint8_t)outlen;+ P->key_length = (uint8_t)keylen;+ P->fanout = 1;+ P->depth = 1;+ store32( &P->leaf_length, 0 );+ store32( &P->node_offset, 0 );+ store16( &P->xof_length, 0 );+ P->node_depth = 0;+ P->inner_length = 0;+ /* memset(P->reserved, 0, sizeof(P->reserved) ); */+ memset( P->salt, 0, sizeof( P->salt ) );+ memset( P->personal, 0, sizeof( P->personal ) ); - if( blake2s_init_param( S, &P ) < 0 )+ if( blake2s_init_param( S, P ) < 0 ) return -1; {@@ -237,7 +150,7 @@ } -static inline int blake2s_compress( blake2s_state *S, const uint8_t block[BLAKE2S_BLOCKBYTES] )+static void blake2s_compress( blake2s_state *S, const uint8_t block[BLAKE2S_BLOCKBYTES] ) { __m128i row1, row2, row3, row4; __m128i buf1, buf2, buf3, buf4;@@ -258,27 +171,27 @@ const __m128i m2 = LOADU( block + 32 ); const __m128i m3 = LOADU( block + 48 ); #else- const uint32_t m0 = ( ( uint32_t * )block )[ 0];- const uint32_t m1 = ( ( uint32_t * )block )[ 1];- const uint32_t m2 = ( ( uint32_t * )block )[ 2];- const uint32_t m3 = ( ( uint32_t * )block )[ 3];- const uint32_t m4 = ( ( uint32_t * )block )[ 4];- const uint32_t m5 = ( ( uint32_t * )block )[ 5];- const uint32_t m6 = ( ( uint32_t * )block )[ 6];- const uint32_t m7 = ( ( uint32_t * )block )[ 7];- const uint32_t m8 = ( ( uint32_t * )block )[ 8];- const uint32_t m9 = ( ( uint32_t * )block )[ 9];- const uint32_t m10 = ( ( uint32_t * )block )[10];- const uint32_t m11 = ( ( uint32_t * )block )[11];- const uint32_t m12 = ( ( uint32_t * )block )[12];- const uint32_t m13 = ( ( uint32_t * )block )[13];- const uint32_t m14 = ( ( uint32_t * )block )[14];- const uint32_t m15 = ( ( uint32_t * )block )[15];+ const uint32_t m0 = load32(block + 0 * sizeof(uint32_t));+ const uint32_t m1 = load32(block + 1 * sizeof(uint32_t));+ const uint32_t m2 = load32(block + 2 * sizeof(uint32_t));+ const uint32_t m3 = load32(block + 3 * sizeof(uint32_t));+ const uint32_t m4 = load32(block + 4 * sizeof(uint32_t));+ const uint32_t m5 = load32(block + 5 * sizeof(uint32_t));+ const uint32_t m6 = load32(block + 6 * sizeof(uint32_t));+ const uint32_t m7 = load32(block + 7 * sizeof(uint32_t));+ const uint32_t m8 = load32(block + 8 * sizeof(uint32_t));+ const uint32_t m9 = load32(block + 9 * sizeof(uint32_t));+ const uint32_t m10 = load32(block + 10 * sizeof(uint32_t));+ const uint32_t m11 = load32(block + 11 * sizeof(uint32_t));+ const uint32_t m12 = load32(block + 12 * sizeof(uint32_t));+ const uint32_t m13 = load32(block + 13 * sizeof(uint32_t));+ const uint32_t m14 = load32(block + 14 * sizeof(uint32_t));+ const uint32_t m15 = load32(block + 15 * sizeof(uint32_t)); #endif row1 = ff0 = LOADU( &S->h[0] ); row2 = ff1 = LOADU( &S->h[4] );- row3 = _mm_setr_epi32( 0x6A09E667, 0xBB67AE85, 0x3C6EF372, 0xA54FF53A );- row4 = _mm_xor_si128( _mm_setr_epi32( 0x510E527F, 0x9B05688C, 0x1F83D9AB, 0x5BE0CD19 ), LOADU( &S->t[0] ) );+ row3 = _mm_loadu_si128( (__m128i const *)&blake2s_IV[0] );+ row4 = _mm_xor_si128( _mm_loadu_si128( (__m128i const *)&blake2s_IV[4] ), LOADU( &S->t[0] ) ); ROUND( 0 ); ROUND( 1 ); ROUND( 2 );@@ -291,73 +204,61 @@ ROUND( 9 ); STOREU( &S->h[0], _mm_xor_si128( ff0, _mm_xor_si128( row1, row3 ) ) ); STOREU( &S->h[4], _mm_xor_si128( ff1, _mm_xor_si128( row2, row4 ) ) );- return 0; } -/* inlen now in bytes */-__attribute__((visibility ("hidden")))-int blake2s_update( blake2s_state *S, const uint8_t *in, uint64_t inlen )+int blake2s_update( blake2s_state *S, const void *pin, size_t inlen ) {- while( inlen > 0 )+ const unsigned char * in = (const unsigned char *)pin;+ if( inlen > 0 ) { size_t left = S->buflen;- size_t fill = 2 * BLAKE2S_BLOCKBYTES - left;-+ size_t fill = BLAKE2S_BLOCKBYTES - left; if( inlen > fill ) {- memcpy( S->buf + left, in, fill ); // Fill buffer- S->buflen += fill;+ S->buflen = 0;+ memcpy( S->buf + left, in, fill ); /* Fill buffer */ blake2s_increment_counter( S, BLAKE2S_BLOCKBYTES );- blake2s_compress( S, S->buf ); // Compress- memcpy( S->buf, S->buf + BLAKE2S_BLOCKBYTES, BLAKE2S_BLOCKBYTES ); // Shift buffer left- S->buflen -= BLAKE2S_BLOCKBYTES;- in += fill;- inlen -= fill;- }- else // inlen <= fill- {- memcpy( S->buf + left, in, inlen );- S->buflen += inlen; // Be lazy, do not compress- in += inlen;- inlen -= inlen;+ blake2s_compress( S, S->buf ); /* Compress */+ in += fill; inlen -= fill;+ while(inlen > BLAKE2S_BLOCKBYTES) {+ blake2s_increment_counter(S, BLAKE2S_BLOCKBYTES);+ blake2s_compress( S, in );+ in += BLAKE2S_BLOCKBYTES;+ inlen -= BLAKE2S_BLOCKBYTES;+ } }+ memcpy( S->buf + S->buflen, in, inlen );+ S->buflen += inlen; }- return 0; } -/* Is this correct? */-__attribute__((visibility ("hidden")))-int blake2s_final( blake2s_state *S, uint8_t *out, uint8_t outlen )+int blake2s_final( blake2s_state *S, void *out, size_t outlen ) { uint8_t buffer[BLAKE2S_OUTBYTES] = {0};+ size_t i; - if( outlen > BLAKE2S_OUTBYTES )+ if( out == NULL || outlen < S->outlen ) return -1; - if( S->buflen > BLAKE2S_BLOCKBYTES )- {- blake2s_increment_counter( S, BLAKE2S_BLOCKBYTES );- blake2s_compress( S, S->buf );- S->buflen -= BLAKE2S_BLOCKBYTES;- memcpy( S->buf, S->buf + BLAKE2S_BLOCKBYTES, S->buflen );- }+ if( blake2s_is_lastblock( S ) )+ return -1; - blake2s_increment_counter( S, ( uint32_t )S->buflen );+ blake2s_increment_counter( S, (uint32_t)S->buflen ); blake2s_set_lastblock( S );- memset( S->buf + S->buflen, 0, 2 * BLAKE2S_BLOCKBYTES - S->buflen ); /* Padding */+ memset( S->buf + S->buflen, 0, BLAKE2S_BLOCKBYTES - S->buflen ); /* Padding */ blake2s_compress( S, S->buf ); - for( int i = 0; i < 8; ++i ) /* Output full hash to temp buffer */+ for( i = 0; i < 8; ++i ) /* Output full hash to temp buffer */ store32( buffer + sizeof( S->h[i] ) * i, S->h[i] ); - memcpy( out, buffer, outlen );+ memcpy( out, buffer, S->outlen );+ secure_zero_memory( buffer, sizeof(buffer) ); return 0; } /* inlen, at least, should be uint64_t. Others can be size_t. */-__attribute__((visibility ("hidden")))-int blake2s( uint8_t *out, const void *in, const void *key, const uint8_t outlen, const uint64_t inlen, uint8_t keylen )+int blake2s( void *out, size_t outlen, const void *in, size_t inlen, const void *key, size_t keylen ) { blake2s_state S[1]; @@ -385,3 +286,78 @@ blake2s_final( S, out, outlen ); return 0; }++#if defined(SUPERCOP)+int crypto_hash( unsigned char *out, unsigned char *in, unsigned long long inlen )+{+ return blake2s( out, BLAKE2S_OUTBYTES, in, inlen, NULL, 0 );+}+#endif++#if defined(BLAKE2S_SELFTEST)+#include <string.h>+#include "blake2-kat.h"+int main( void )+{+ uint8_t key[BLAKE2S_KEYBYTES];+ uint8_t buf[BLAKE2_KAT_LENGTH];+ size_t i, step;++ for( i = 0; i < BLAKE2S_KEYBYTES; ++i )+ key[i] = ( uint8_t )i;++ for( i = 0; i < BLAKE2_KAT_LENGTH; ++i )+ buf[i] = ( uint8_t )i;++ /* Test simple API */+ for( i = 0; i < BLAKE2_KAT_LENGTH; ++i )+ {+ uint8_t hash[BLAKE2S_OUTBYTES];+ blake2s( hash, BLAKE2S_OUTBYTES, buf, i, key, BLAKE2S_KEYBYTES );++ if( 0 != memcmp( hash, blake2s_keyed_kat[i], BLAKE2S_OUTBYTES ) )+ {+ goto fail;+ }+ }++ /* Test streaming API */+ for(step = 1; step < BLAKE2S_BLOCKBYTES; ++step) {+ for (i = 0; i < BLAKE2_KAT_LENGTH; ++i) {+ uint8_t hash[BLAKE2S_OUTBYTES];+ blake2s_state S;+ uint8_t * p = buf;+ size_t mlen = i;+ int err = 0;++ if( (err = blake2s_init_key(&S, BLAKE2S_OUTBYTES, key, BLAKE2S_KEYBYTES)) < 0 ) {+ goto fail;+ }++ while (mlen >= step) {+ if ( (err = blake2s_update(&S, p, step)) < 0 ) {+ goto fail;+ }+ mlen -= step;+ p += step;+ }+ if ( (err = blake2s_update(&S, p, mlen)) < 0) {+ goto fail;+ }+ if ( (err = blake2s_final(&S, hash, BLAKE2S_OUTBYTES)) < 0) {+ goto fail;+ }++ if (0 != memcmp(hash, blake2s_keyed_kat[i], BLAKE2S_OUTBYTES)) {+ goto fail;+ }+ }+ }++ puts( "ok" );+ return 0;+fail:+ puts("error");+ return -1;+}+#endif
cbits/blake2/sse/blake2sp.c view
@@ -1,14 +1,16 @@ /* BLAKE2 reference source code package - optimized C implementations - Written in 2012 by Samuel Neves <sneves@dei.uc.pt>+ Copyright 2012, Samuel Neves <sneves@dei.uc.pt>. You may use this under the+ terms of the CC0, the OpenSSL Licence, or the Apache Public License 2.0, at+ your option. The terms of these licenses can be found at: - To the extent possible under law, the author(s) have dedicated all copyright- and related and neighboring rights to this software to the public domain- worldwide. This software is distributed without any warranty.+ - CC0 1.0 Universal : http://creativecommons.org/publicdomain/zero/1.0+ - OpenSSL license : https://www.openssl.org/source/license.html+ - Apache 2.0 : http://www.apache.org/licenses/LICENSE-2.0 - You should have received a copy of the CC0 Public Domain Dedication along with- this software. If not, see <http://creativecommons.org/publicdomain/zero/1.0/>.+ More information about the BLAKE2 hash function can be found at+ https://blake2.net. */ #include <stdlib.h>@@ -24,31 +26,47 @@ #define PARALLELISM_DEGREE 8 -static inline int blake2sp_init_leaf( blake2s_state *S, uint8_t outlen, uint8_t keylen, uint64_t offset )+/*+ blake2sp_init_param defaults to setting the expecting output length+ from the digest_length parameter block field.++ In some cases, however, we do not want this, as the output length+ of these instances is given by inner_length instead.+*/+static int blake2sp_init_leaf_param( blake2s_state *S, const blake2s_param *P ) {+ int err = blake2s_init_param(S, P);+ S->outlen = P->inner_length;+ return err;+}++static int blake2sp_init_leaf( blake2s_state *S, size_t outlen, size_t keylen, uint64_t offset )+{ blake2s_param P[1];- P->digest_length = outlen;- P->key_length = keylen;+ P->digest_length = (uint8_t)outlen;+ P->key_length = (uint8_t)keylen; P->fanout = PARALLELISM_DEGREE; P->depth = 2; P->leaf_length = 0;- store48( P->node_offset, offset );+ P->node_offset = offset;+ P->xof_length = 0; P->node_depth = 0; P->inner_length = BLAKE2S_OUTBYTES; memset( P->salt, 0, sizeof( P->salt ) ); memset( P->personal, 0, sizeof( P->personal ) );- return blake2s_init_param( S, P );+ return blake2sp_init_leaf_param( S, P ); } -static inline int blake2sp_init_root( blake2s_state *S, uint8_t outlen, uint8_t keylen )+static int blake2sp_init_root( blake2s_state *S, size_t outlen, size_t keylen ) { blake2s_param P[1];- P->digest_length = outlen;- P->key_length = keylen;+ P->digest_length = (uint8_t)outlen;+ P->key_length = (uint8_t)keylen; P->fanout = PARALLELISM_DEGREE; P->depth = 2; P->leaf_length = 0;- store48( P->node_offset, 0ULL );+ P->node_offset = 0;+ P->xof_length = 0; P->node_depth = 1; P->inner_length = BLAKE2S_OUTBYTES; memset( P->salt, 0, sizeof( P->salt ) );@@ -56,18 +74,21 @@ return blake2s_init_param( S, P ); } -__attribute__((visibility ("hidden")))-int blake2sp_init( blake2sp_state *S, const uint8_t outlen )++int blake2sp_init( blake2sp_state *S, size_t outlen ) {+ size_t i;+ if( !outlen || outlen > BLAKE2S_OUTBYTES ) return -1; memset( S->buf, 0, sizeof( S->buf ) ); S->buflen = 0;+ S->outlen = outlen; if( blake2sp_init_root( S->R, outlen, 0 ) < 0 ) return -1; - for( size_t i = 0; i < PARALLELISM_DEGREE; ++i )+ for( i = 0; i < PARALLELISM_DEGREE; ++i ) if( blake2sp_init_leaf( S->S[i], outlen, 0, i ) < 0 ) return -1; S->R->last_node = 1;@@ -75,20 +96,22 @@ return 0; } -__attribute__((visibility ("hidden")))-int blake2sp_init_key( blake2sp_state *S, const uint8_t outlen, const void *key, const uint8_t keylen )+int blake2sp_init_key( blake2sp_state *S, size_t outlen, const void *key, size_t keylen ) {+ size_t i;+ if( !outlen || outlen > BLAKE2S_OUTBYTES ) return -1; if( !key || !keylen || keylen > BLAKE2S_KEYBYTES ) return -1; memset( S->buf, 0, sizeof( S->buf ) ); S->buflen = 0;+ S->outlen = outlen; if( blake2sp_init_root( S->R, outlen, keylen ) < 0 ) return -1; - for( size_t i = 0; i < PARALLELISM_DEGREE; ++i )+ for( i = 0; i < PARALLELISM_DEGREE; ++i ) if( blake2sp_init_leaf( S->S[i], outlen, keylen, i ) < 0 ) return -1; S->R->last_node = 1;@@ -98,7 +121,7 @@ memset( block, 0, BLAKE2S_BLOCKBYTES ); memcpy( block, key, keylen ); - for( size_t i = 0; i < PARALLELISM_DEGREE; ++i )+ for( i = 0; i < PARALLELISM_DEGREE; ++i ) blake2s_update( S->S[i], block, BLAKE2S_BLOCKBYTES ); secure_zero_memory( block, BLAKE2S_BLOCKBYTES ); /* Burn the key from stack */@@ -106,17 +129,19 @@ return 0; } -__attribute__((visibility ("hidden")))-int blake2sp_update( blake2sp_state *S, const uint8_t *in, uint64_t inlen )++int blake2sp_update( blake2sp_state *S, const void *pin, size_t inlen ) {+ const unsigned char * in = (const unsigned char *)pin; size_t left = S->buflen; size_t fill = sizeof( S->buf ) - left;+ size_t i; if( left && inlen >= fill ) { memcpy( S->buf + left, in, fill ); - for( size_t i = 0; i < PARALLELISM_DEGREE; ++i )+ for( i = 0; i < PARALLELISM_DEGREE; ++i ) blake2s_update( S->S[i], S->buf + i * BLAKE2S_BLOCKBYTES, BLAKE2S_BLOCKBYTES ); in += fill;@@ -128,19 +153,19 @@ #pragma omp parallel shared(S), num_threads(PARALLELISM_DEGREE) #else - for( size_t id__ = 0; id__ < PARALLELISM_DEGREE; ++id__ )+ for( i = 0; i < PARALLELISM_DEGREE; ++i ) #endif { #if defined(_OPENMP)- size_t id__ = omp_get_thread_num();+ size_t i = omp_get_thread_num(); #endif- uint64_t inlen__ = inlen;- const uint8_t *in__ = ( const uint8_t * )in;- in__ += id__ * BLAKE2S_BLOCKBYTES;+ size_t inlen__ = inlen;+ const unsigned char *in__ = ( const unsigned char * )in;+ in__ += i * BLAKE2S_BLOCKBYTES; while( inlen__ >= PARALLELISM_DEGREE * BLAKE2S_BLOCKBYTES ) {- blake2s_update( S->S[id__], in__, BLAKE2S_BLOCKBYTES );+ blake2s_update( S->S[i], in__, BLAKE2S_BLOCKBYTES ); in__ += PARALLELISM_DEGREE * BLAKE2S_BLOCKBYTES; inlen__ -= PARALLELISM_DEGREE * BLAKE2S_BLOCKBYTES; }@@ -156,12 +181,17 @@ return 0; } -__attribute__((visibility ("hidden")))-int blake2sp_final( blake2sp_state *S, uint8_t *out, const uint8_t outlen )++int blake2sp_final( blake2sp_state *S, void *out, size_t outlen ) { uint8_t hash[PARALLELISM_DEGREE][BLAKE2S_OUTBYTES];+ size_t i; - for( size_t i = 0; i < PARALLELISM_DEGREE; ++i )+ if(out == NULL || outlen < S->outlen) {+ return -1;+ }++ for( i = 0; i < PARALLELISM_DEGREE; ++i ) { if( S->buflen > i * BLAKE2S_BLOCKBYTES ) {@@ -175,18 +205,19 @@ blake2s_final( S->S[i], hash[i], BLAKE2S_OUTBYTES ); } - for( size_t i = 0; i < PARALLELISM_DEGREE; ++i )+ for( i = 0; i < PARALLELISM_DEGREE; ++i ) blake2s_update( S->R, hash[i], BLAKE2S_OUTBYTES ); - return blake2s_final( S->R, out, outlen );+ return blake2s_final( S->R, out, S->outlen ); } -__attribute__((visibility ("hidden")))-int blake2sp( uint8_t *out, const void *in, const void *key, uint8_t outlen, uint64_t inlen, uint8_t keylen )++int blake2sp( void *out, size_t outlen, const void *in, size_t inlen, const void *key, size_t keylen ) { uint8_t hash[PARALLELISM_DEGREE][BLAKE2S_OUTBYTES]; blake2s_state S[PARALLELISM_DEGREE][1]; blake2s_state FS[1];+ size_t i; /* Verify parameters */ if ( NULL == in && inlen > 0 ) return -1;@@ -199,10 +230,10 @@ if( keylen > BLAKE2S_KEYBYTES ) return -1; - for( size_t i = 0; i < PARALLELISM_DEGREE; ++i )+ for( i = 0; i < PARALLELISM_DEGREE; ++i ) if( blake2sp_init_leaf( S[i], outlen, keylen, i ) < 0 ) return -1; - S[PARALLELISM_DEGREE - 1]->last_node = 1; // mark last node+ S[PARALLELISM_DEGREE - 1]->last_node = 1; /* mark last node */ if( keylen > 0 ) {@@ -210,7 +241,7 @@ memset( block, 0, BLAKE2S_BLOCKBYTES ); memcpy( block, key, keylen ); - for( size_t i = 0; i < PARALLELISM_DEGREE; ++i )+ for( i = 0; i < PARALLELISM_DEGREE; ++i ) blake2s_update( S[i], block, BLAKE2S_BLOCKBYTES ); secure_zero_memory( block, BLAKE2S_BLOCKBYTES ); /* Burn the key from stack */@@ -220,31 +251,31 @@ #pragma omp parallel shared(S,hash), num_threads(PARALLELISM_DEGREE) #else - for( size_t id__ = 0; id__ < PARALLELISM_DEGREE; ++id__ )+ for( i = 0; i < PARALLELISM_DEGREE; ++i ) #endif { #if defined(_OPENMP)- size_t id__ = omp_get_thread_num();+ size_t i = omp_get_thread_num(); #endif- uint64_t inlen__ = inlen;- const uint8_t *in__ = ( const uint8_t * )in;- in__ += id__ * BLAKE2S_BLOCKBYTES;+ size_t inlen__ = inlen;+ const unsigned char *in__ = ( const unsigned char * )in;+ in__ += i * BLAKE2S_BLOCKBYTES; while( inlen__ >= PARALLELISM_DEGREE * BLAKE2S_BLOCKBYTES ) {- blake2s_update( S[id__], in__, BLAKE2S_BLOCKBYTES );+ blake2s_update( S[i], in__, BLAKE2S_BLOCKBYTES ); in__ += PARALLELISM_DEGREE * BLAKE2S_BLOCKBYTES; inlen__ -= PARALLELISM_DEGREE * BLAKE2S_BLOCKBYTES; } - if( inlen__ > id__ * BLAKE2S_BLOCKBYTES )+ if( inlen__ > i * BLAKE2S_BLOCKBYTES ) {- const size_t left = inlen__ - id__ * BLAKE2S_BLOCKBYTES;+ const size_t left = inlen__ - i * BLAKE2S_BLOCKBYTES; const size_t len = left <= BLAKE2S_BLOCKBYTES ? left : BLAKE2S_BLOCKBYTES;- blake2s_update( S[id__], in__, len );+ blake2s_update( S[i], in__, len ); } - blake2s_final( S[id__], hash[id__], BLAKE2S_OUTBYTES );+ blake2s_final( S[i], hash[i], BLAKE2S_OUTBYTES ); } if( blake2sp_init_root( FS, outlen, keylen ) < 0 )@@ -252,8 +283,76 @@ FS->last_node = 1; - for( size_t i = 0; i < PARALLELISM_DEGREE; ++i )+ for( i = 0; i < PARALLELISM_DEGREE; ++i ) blake2s_update( FS, hash[i], BLAKE2S_OUTBYTES ); return blake2s_final( FS, out, outlen ); }++#if defined(BLAKE2SP_SELFTEST)+#include <string.h>+#include "blake2-kat.h"+int main( void )+{+ uint8_t key[BLAKE2S_KEYBYTES];+ uint8_t buf[BLAKE2_KAT_LENGTH];+ size_t i, step;++ for( i = 0; i < BLAKE2S_KEYBYTES; ++i )+ key[i] = ( uint8_t )i;++ for( i = 0; i < BLAKE2_KAT_LENGTH; ++i )+ buf[i] = ( uint8_t )i;++ /* Test simple API */+ for( i = 0; i < BLAKE2_KAT_LENGTH; ++i )+ {+ uint8_t hash[BLAKE2S_OUTBYTES];+ blake2sp( hash, BLAKE2S_OUTBYTES, buf, i, key, BLAKE2S_KEYBYTES );++ if( 0 != memcmp( hash, blake2sp_keyed_kat[i], BLAKE2S_OUTBYTES ) )+ {+ goto fail;+ }+ }++ /* Test streaming API */+ for(step = 1; step < BLAKE2S_BLOCKBYTES; ++step) {+ for (i = 0; i < BLAKE2_KAT_LENGTH; ++i) {+ uint8_t hash[BLAKE2S_OUTBYTES];+ blake2sp_state S;+ uint8_t * p = buf;+ size_t mlen = i;+ int err = 0;++ if( (err = blake2sp_init_key(&S, BLAKE2S_OUTBYTES, key, BLAKE2S_KEYBYTES)) < 0 ) {+ goto fail;+ }++ while (mlen >= step) {+ if ( (err = blake2sp_update(&S, p, step)) < 0 ) {+ goto fail;+ }+ mlen -= step;+ p += step;+ }+ if ( (err = blake2sp_update(&S, p, mlen)) < 0) {+ goto fail;+ }+ if ( (err = blake2sp_final(&S, hash, BLAKE2S_OUTBYTES)) < 0) {+ goto fail;+ }++ if (0 != memcmp(hash, blake2sp_keyed_kat[i], BLAKE2S_OUTBYTES)) {+ goto fail;+ }+ }+ }++ puts( "ok" );+ return 0;+fail:+ puts("error");+ return -1;+}+#endif
cbits/cryptonite_align.h view
@@ -39,12 +39,70 @@ return le32_to_cpu(*((uint32_t *) p)); } +static inline void store_le32_aligned(uint8_t *dst, const uint32_t v)+{+ *((uint32_t *) dst) = cpu_to_le32(v);+}++static inline void store_be32_aligned(uint8_t *dst, const uint32_t v)+{+ *((uint32_t *) dst) = cpu_to_be32(v);+}++static inline void store_le64_aligned(uint8_t *dst, const uint64_t v)+{+ *((uint64_t *) dst) = cpu_to_le64(v);+}++static inline void store_be64_aligned(uint8_t *dst, const uint64_t v)+{+ *((uint64_t *) dst) = cpu_to_be64(v);+}+ #ifdef UNALIGNED_ACCESS_OK #define load_le32(a) load_le32_aligned(a) #else static inline uint32_t load_le32(const uint8_t *p) { return ((uint32_t)p[0]) | ((uint32_t)p[1] << 8) | ((uint32_t)p[2] << 16) | ((uint32_t)p[3] << 24);+}+#endif++#ifdef UNALIGNED_ACCESS_OK+#define store_le32(a, b) store_le32_aligned(a, b)+#else+static inline void store_le32(uint8_t *dst, const uint32_t v)+{+ dst[0] = v; dst[1] = v >> 8; dst[2] = v >> 16; dst[3] = v >> 24;+}+#endif++#ifdef UNALIGNED_ACCESS_OK+#define store_be32(a, b) store_be32_aligned(a, b)+#else+static inline void store_be32(uint8_t *dst, const uint32_t v)+{+ dst[3] = v; dst[2] = v >> 8; dst[1] = v >> 16; dst[0] = v >> 24;+}+#endif++#ifdef UNALIGNED_ACCESS_OK+#define store_le64(a, b) store_le64_aligned(a, b)+#else+static inline void store_le64(uint8_t *dst, const uint64_t v)+{+ dst[0] = v ; dst[1] = v >> 8 ; dst[2] = v >> 16; dst[3] = v >> 24;+ dst[4] = v >> 32; dst[5] = v >> 40; dst[6] = v >> 48; dst[7] = v >> 56;+}+#endif++#ifdef UNALIGNED_ACCESS_OK+#define store_be64(a, b) store_be64_aligned(a, b)+#else+static inline void store_be64(uint8_t *dst, const uint64_t v)+{+ dst[7] = v ; dst[6] = v >> 8 ; dst[5] = v >> 16; dst[4] = v >> 24;+ dst[3] = v >> 32; dst[2] = v >> 40; dst[1] = v >> 48; dst[0] = v >> 56; } #endif
− cbits/cryptonite_keccak.c
@@ -1,159 +0,0 @@-/*- * Copyright (C) 2012 Vincent Hanquez <vincent@snarc.org>- *- * Redistribution and use in source and binary forms, with or without- * modification, are permitted provided that the following conditions- * are met:- * 1. Redistributions of source code must retain the above copyright- * notice, this list of conditions and the following disclaimer.- * 2. Redistributions in binary form must reproduce the above copyright- * notice, this list of conditions and the following disclaimer in the- * documentation and/or other materials provided with the distribution.- *- * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR- * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.- * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,- * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT- * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF- * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.- */--#include <stdint.h>-#include <string.h>-#include "cryptonite_bitfn.h"-#include "cryptonite_keccak.h"--#define KECCAK_NB_ROUNDS 24--/* rounds constants */-static const uint64_t keccak_rndc[24] =-{- 0x0000000000000001ULL, 0x0000000000008082ULL, 0x800000000000808aULL,- 0x8000000080008000ULL, 0x000000000000808bULL, 0x0000000080000001ULL,- 0x8000000080008081ULL, 0x8000000000008009ULL, 0x000000000000008aULL,- 0x0000000000000088ULL, 0x0000000080008009ULL, 0x000000008000000aULL,- 0x000000008000808bULL, 0x800000000000008bULL, 0x8000000000008089ULL,- 0x8000000000008003ULL, 0x8000000000008002ULL, 0x8000000000000080ULL,- 0x000000000000800aULL, 0x800000008000000aULL, 0x8000000080008081ULL,- 0x8000000000008080ULL, 0x0000000080000001ULL, 0x8000000080008008ULL,-};--/* triangular numbers constants */-static const int keccak_rotc[24] =- { 1,3,6,10,15,21,28,36,45,55,2,14,27,41,56,8,25,43,62,18,39,61,20,44 };--static const int keccak_piln[24] =- { 10,7,11,17,18,3,5,16,8,21,24,4,15,23,19,13,12,2,20,14,22,9,6,1 };--static inline void keccak_do_chunk(uint64_t state[25], uint64_t buf[], int bufsz)-{- int i, j, r;- uint64_t tmp, bc[5];-- /* merge buf with state */- for (i = 0; i < bufsz; i++)- state[i] ^= le64_to_cpu(buf[i]);-- /* run keccak rounds */- for (r = 0; r < KECCAK_NB_ROUNDS; r++) {- /* compute the parity of each columns */- for (i = 0; i < 5; i++)- bc[i] = state[i] ^ state[i+5] ^ state[i+10] ^ state[i+15] ^ state[i+20];-- for (i = 0; i < 5; i++) {- tmp = bc[(i + 4) % 5] ^ rol64(bc[(i + 1) % 5], 1);- for (j = 0; j < 25; j += 5)- state[j + i] ^= tmp;- }-- /* rho pi */- tmp = state[1];- for (i = 0; i < 24; i++) {- j = keccak_piln[i];- bc[0] = state[j];- state[j] = rol64(tmp, keccak_rotc[i]);- tmp = bc[0];- }-- /* bitwise combine along rows using a = a xor (not b and c) */- for (j = 0; j < 25; j += 5) {- for (i = 0; i < 5; i++)- bc[i] = state[j + i];- #define andn(b,c) (~(b) & (c))- state[j + 0] ^= andn(bc[1], bc[2]);- state[j + 1] ^= andn(bc[2], bc[3]);- state[j + 2] ^= andn(bc[3], bc[4]);- state[j + 3] ^= andn(bc[4], bc[0]);- state[j + 4] ^= andn(bc[0], bc[1]);- #undef andn- }-- /* xor the round constant */- state[0] ^= keccak_rndc[r];- }-}--void cryptonite_keccak_init(struct keccak_ctx *ctx, uint32_t hashlen)-{- int bufsz = 200 - 2 * (hashlen / 8);- memset(ctx, 0, sizeof(*ctx) + bufsz);- ctx->bufsz = bufsz;-}--void cryptonite_keccak_update(struct keccak_ctx *ctx, uint8_t *data, uint32_t len)-{- uint32_t to_fill;-- to_fill = ctx->bufsz - ctx->bufindex;-- if (ctx->bufindex == ctx->bufsz) {- keccak_do_chunk(ctx->state, (uint64_t *) ctx->buf, ctx->bufsz / 8);- ctx->bufindex = 0;- }-- /* process partial buffer if there's enough data to make a block */- if (ctx->bufindex && len >= to_fill) {- memcpy(ctx->buf + ctx->bufindex, data, to_fill);- keccak_do_chunk(ctx->state, (uint64_t *) ctx->buf, ctx->bufsz / 8);- len -= to_fill;- data += to_fill;- ctx->bufindex = 0;- }-- /* process as much ctx->bufsz-block */- for (; len >= ctx->bufsz; len -= ctx->bufsz, data += ctx->bufsz)- keccak_do_chunk(ctx->state, (uint64_t *) data, ctx->bufsz / 8);-- /* append data into buf */- if (len) {- memcpy(ctx->buf + ctx->bufindex, data, len);- ctx->bufindex += len;- }-}--void cryptonite_keccak_finalize(struct keccak_ctx *ctx, uint32_t hashlen, uint8_t *out)-{- uint64_t w[25];-- /* process full buffer if needed */- if (ctx->bufindex == ctx->bufsz) {- keccak_do_chunk(ctx->state, (uint64_t *) ctx->buf, ctx->bufsz / 8);- ctx->bufindex = 0;- }-- /* add the 10*1 padding */- ctx->buf[ctx->bufindex++] = 1;- memset(ctx->buf + ctx->bufindex, 0, ctx->bufsz - ctx->bufindex);- ctx->buf[ctx->bufsz - 1] |= 0x80;-- /* process */- keccak_do_chunk(ctx->state, (uint64_t *) ctx->buf, ctx->bufsz / 8);-- /* output */- cpu_to_le64_array(w, ctx->state, 25);- memcpy(out, w, hashlen / 8);-}
− cbits/cryptonite_keccak.h
@@ -1,43 +0,0 @@-/*- * Copyright (C) 2012 Vincent Hanquez <vincent@snarc.org>- *- * Redistribution and use in source and binary forms, with or without- * modification, are permitted provided that the following conditions- * are met:- * 1. Redistributions of source code must retain the above copyright- * notice, this list of conditions and the following disclaimer.- * 2. Redistributions in binary form must reproduce the above copyright- * notice, this list of conditions and the following disclaimer in the- * documentation and/or other materials provided with the distribution.- *- * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR- * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.- * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,- * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT- * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF- * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.- */-#ifndef CRYPTOHASH_SHA3_H-#define CRYPTOHASH_SHA3_H--#include <stdint.h>--struct keccak_ctx-{- uint32_t bufindex;- uint32_t bufsz;- uint64_t state[25];- uint8_t buf[0]; /* maximum SHA3-224 = 144, otherwise buffer need decrease */-};--#define SHA3_CTX_SIZE sizeof(struct keccak_ctx)--void cryptonite_keccak_init(struct keccak_ctx *ctx, uint32_t hashlen);-void cryptonite_keccak_update(struct keccak_ctx *ctx, uint8_t *data, uint32_t len);-void cryptonite_keccak_finalize(struct keccak_ctx *ctx, uint32_t hashlen, uint8_t *out);--#endif
+ cbits/cryptonite_pbkdf2.c view
@@ -0,0 +1,390 @@+/*+ * fast-pbkdf2 - Optimal PBKDF2-HMAC calculation+ * Written in 2015 by Joseph Birr-Pixton <jpixton@gmail.com>+ * Ported to cryptonite in 2017 by Nicolas Di Prima <nicolas@primetype.co.uk>+ *+ * To the extent possible under law, the author(s) have dedicated all+ * copyright and related and neighboring rights to this software to the+ * public domain worldwide. This software is distributed without any+ * warranty.+ *+ * You should have received a copy of the CC0 Public Domain Dedication+ * along with this software. If not, see+ * <http://creativecommons.org/publicdomain/zero/1.0/>.+ */++#include <assert.h>+#include <string.h>++#include "cryptonite_pbkdf2.h"+#include "cryptonite_bitfn.h"+#include "cryptonite_align.h"+#include "cryptonite_sha1.h"+#include "cryptonite_sha256.h"+#include "cryptonite_sha512.h"++/* --- MSVC doesn't support C99 --- */+#ifdef _MSC_VER+#define restrict+#define _Pragma __pragma+#endif++/* --- Common useful things --- */+#define MIN(a, b) ((a) > (b)) ? (b) : (a)++/* Prepare block (of blocksz bytes) to contain md padding denoting a msg-size+ * message (in bytes). block has a prefix of used bytes.+ *+ * Message length is expressed in 32 bits (so suitable for sha1, sha256, sha512). */+static inline void md_pad(uint8_t *block, size_t blocksz, size_t used, size_t msg)+{+ memset(block + used, 0, blocksz - used - 4);+ block[used] = 0x80;+ block += blocksz - 4;+ store_be32(block, (uint32_t) (msg * 8));+}++/* Internal function/type names for hash-specific things. */+#define HMAC_CTX(_name) HMAC_ ## _name ## _ctx+#define HMAC_INIT(_name) HMAC_ ## _name ## _init+#define HMAC_UPDATE(_name) HMAC_ ## _name ## _update+#define HMAC_FINAL(_name) HMAC_ ## _name ## _final++#define PBKDF2_F(_name) pbkdf2_f_ ## _name+#define PBKDF2(_name) pbkdf2_ ## _name++/* This macro expands to decls for the whole implementation for a given+ * hash function. Arguments are:+ *+ * _name like 'sha1', added to symbol names+ * _blocksz block size, in bytes+ * _hashsz digest output, in bytes+ * _ctx hash context type+ * _init hash context initialisation function+ * args: (_ctx *c)+ * _update hash context update function+ * args: (_ctx *c, const void *data, size_t ndata)+ * _final hash context finish function+ * args: (void *out, _ctx *c)+ * _xform hash context raw block update function+ * args: (_ctx *c, const void *data)+ * _xcpy hash context raw copy function (only need copy hash state)+ * args: (_ctx * restrict out, const _ctx *restrict in)+ * _xtract hash context state extraction+ * args: args (_ctx *restrict c, uint8_t *restrict out)+ * _xxor hash context xor function (only need xor hash state)+ * args: (_ctx *restrict out, const _ctx *restrict in)+ *+ * The resulting function is named PBKDF2(_name).+ */+#define DECL_PBKDF2(_name, _blocksz, _hashsz, _ctx, \+ _init, _update, _xform, _final, _xcpy, _xtract, _xxor) \+ typedef struct { \+ _ctx inner; \+ _ctx outer; \+ } HMAC_CTX(_name); \+ \+ static inline void HMAC_INIT(_name)(HMAC_CTX(_name) *ctx, \+ const uint8_t *key, size_t nkey) \+ { \+ /* Prepare key: */ \+ uint8_t k[_blocksz]; \+ \+ /* Shorten long keys. */ \+ if (nkey > _blocksz) \+ { \+ _init(&ctx->inner); \+ _update(&ctx->inner, key, nkey); \+ _final(&ctx->inner, k); \+ \+ key = k; \+ nkey = _hashsz; \+ } \+ \+ /* Standard doesn't cover case where blocksz < hashsz. */ \+ assert(nkey <= _blocksz); \+ \+ /* Right zero-pad short keys. */ \+ if (k != key) \+ memcpy(k, key, nkey); \+ if (_blocksz > nkey) \+ memset(k + nkey, 0, _blocksz - nkey); \+ \+ /* Start inner hash computation */ \+ uint8_t blk_inner[_blocksz]; \+ uint8_t blk_outer[_blocksz]; \+ \+ for (size_t i = 0; i < _blocksz; i++) \+ { \+ blk_inner[i] = 0x36 ^ k[i]; \+ blk_outer[i] = 0x5c ^ k[i]; \+ } \+ \+ _init(&ctx->inner); \+ _update(&ctx->inner, blk_inner, sizeof blk_inner); \+ \+ /* And outer. */ \+ _init(&ctx->outer); \+ _update(&ctx->outer, blk_outer, sizeof blk_outer); \+ } \+ \+ static inline void HMAC_UPDATE(_name)(HMAC_CTX(_name) *ctx, \+ const void *data, size_t ndata) \+ { \+ _update(&ctx->inner, data, ndata); \+ } \+ \+ static inline void HMAC_FINAL(_name)(HMAC_CTX(_name) *ctx, \+ uint8_t out[_hashsz]) \+ { \+ _final(&ctx->inner, out); \+ _update(&ctx->outer, out, _hashsz); \+ _final(&ctx->outer, out); \+ } \+ \+ \+ /* --- PBKDF2 --- */ \+ static inline void PBKDF2_F(_name)(const HMAC_CTX(_name) *startctx, \+ uint32_t counter, \+ const uint8_t *salt, size_t nsalt, \+ uint32_t iterations, \+ uint8_t *out) \+ { \+ uint8_t countbuf[4]; \+ store_be32(countbuf, counter); \+ \+ /* Prepare loop-invariant padding block. */ \+ uint8_t Ublock[_blocksz]; \+ md_pad(Ublock, _blocksz, _hashsz, _blocksz + _hashsz); \+ \+ /* First iteration: \+ * U_1 = PRF(P, S || INT_32_BE(i)) \+ */ \+ HMAC_CTX(_name) ctx = *startctx; \+ HMAC_UPDATE(_name)(&ctx, salt, nsalt); \+ HMAC_UPDATE(_name)(&ctx, countbuf, sizeof countbuf); \+ HMAC_FINAL(_name)(&ctx, Ublock); \+ _ctx result = ctx.outer; \+ \+ /* Subsequent iterations: \+ * U_c = PRF(P, U_{c-1}) \+ */ \+ for (uint32_t i = 1; i < iterations; i++) \+ { \+ /* Complete inner hash with previous U */ \+ _xcpy(&ctx.inner, &startctx->inner); \+ _xform(&ctx.inner, Ublock); \+ _xtract(&ctx.inner, Ublock); \+ /* Complete outer hash with inner output */ \+ _xcpy(&ctx.outer, &startctx->outer); \+ _xform(&ctx.outer, Ublock); \+ _xtract(&ctx.outer, Ublock); \+ _xxor(&result, &ctx.outer); \+ } \+ \+ /* Reform result into output buffer. */ \+ _xtract(&result, out); \+ } \+ \+ static inline void PBKDF2(_name)(const uint8_t *pw, size_t npw, \+ const uint8_t *salt, size_t nsalt, \+ uint32_t iterations, \+ uint8_t *out, size_t nout) \+ { \+ assert(iterations); \+ assert(out && nout); \+ \+ /* Starting point for inner loop. */ \+ HMAC_CTX(_name) ctx; \+ HMAC_INIT(_name)(&ctx, pw, npw); \+ \+ /* How many blocks do we need? */ \+ uint32_t blocks_needed = (uint32_t)(nout + _hashsz - 1) / _hashsz; \+ \+ for (uint32_t counter = 1; counter <= blocks_needed; counter++) \+ { \+ uint8_t block[_hashsz]; \+ PBKDF2_F(_name)(&ctx, counter, salt, nsalt, iterations, block); \+ \+ size_t offset = (counter - 1) * _hashsz; \+ size_t taken = MIN(nout - offset, _hashsz); \+ memcpy(out + offset, block, taken); \+ } \+ }++static inline void sha1_extract(struct sha1_ctx *restrict ctx, uint8_t *restrict out)+{+ store_be32(out , ctx->h[0]);+ store_be32(out+4 , ctx->h[1]);+ store_be32(out+8 , ctx->h[2]);+ store_be32(out+12, ctx->h[3]);+ store_be32(out+16, ctx->h[4]);+}++static inline void sha1_cpy(struct sha1_ctx *restrict out, const struct sha1_ctx *restrict in)+{+ out->h[0] = in->h[0];+ out->h[1] = in->h[1];+ out->h[2] = in->h[2];+ out->h[3] = in->h[3];+ out->h[4] = in->h[4];+}++static inline void sha1_xor(struct sha1_ctx *restrict out, const struct sha1_ctx *restrict in)+{+ out->h[0] ^= in->h[0];+ out->h[1] ^= in->h[1];+ out->h[2] ^= in->h[2];+ out->h[3] ^= in->h[3];+ out->h[4] ^= in->h[4];+}++void cryptonite_sha1_transform(struct sha1_ctx* ctx, uint8_t block[SHA1_BLOCK_SIZE])+{+ cryptonite_sha1_update(ctx, block, SHA1_BLOCK_SIZE);+}++DECL_PBKDF2(sha1,+ SHA1_BLOCK_SIZE,+ SHA1_DIGEST_SIZE,+ struct sha1_ctx,+ cryptonite_sha1_init,+ cryptonite_sha1_update,+ cryptonite_sha1_transform,+ cryptonite_sha1_finalize,+ sha1_cpy,+ sha1_extract,+ sha1_xor);++static inline void sha256_extract(struct sha256_ctx *restrict ctx, uint8_t *restrict out)+{+ store_be32(out , ctx->h[0]);+ store_be32(out+4 , ctx->h[1]);+ store_be32(out+8 , ctx->h[2]);+ store_be32(out+12, ctx->h[3]);+ store_be32(out+16, ctx->h[4]);+ store_be32(out+20, ctx->h[5]);+ store_be32(out+24, ctx->h[6]);+ store_be32(out+28, ctx->h[7]);+}++static inline void sha256_cpy(struct sha256_ctx *restrict out, const struct sha256_ctx *restrict in)+{+ out->h[0] = in->h[0];+ out->h[1] = in->h[1];+ out->h[2] = in->h[2];+ out->h[3] = in->h[3];+ out->h[4] = in->h[4];+ out->h[5] = in->h[5];+ out->h[6] = in->h[6];+ out->h[7] = in->h[7];+}++static inline void sha256_xor(struct sha256_ctx *restrict out, const struct sha256_ctx *restrict in)+{+ out->h[0] ^= in->h[0];+ out->h[1] ^= in->h[1];+ out->h[2] ^= in->h[2];+ out->h[3] ^= in->h[3];+ out->h[4] ^= in->h[4];+ out->h[5] ^= in->h[5];+ out->h[6] ^= in->h[6];+ out->h[7] ^= in->h[7];+}++void cryptonite_sha256_transform(struct sha256_ctx* ctx, uint8_t block[SHA256_BLOCK_SIZE])+{+ cryptonite_sha256_update(ctx, block, SHA256_BLOCK_SIZE);+}++DECL_PBKDF2(sha256,+ SHA256_BLOCK_SIZE,+ SHA256_DIGEST_SIZE,+ struct sha256_ctx,+ cryptonite_sha256_init,+ cryptonite_sha256_update,+ cryptonite_sha256_transform,+ cryptonite_sha256_finalize,+ sha256_cpy,+ sha256_extract,+ sha256_xor);++static inline void sha512_extract(struct sha512_ctx *restrict ctx, uint8_t *restrict out)+{+ store_be64(out , ctx->h[0]);+ store_be64(out+8 , ctx->h[1]);+ store_be64(out+16, ctx->h[2]);+ store_be64(out+24, ctx->h[3]);+ store_be64(out+32, ctx->h[4]);+ store_be64(out+40, ctx->h[5]);+ store_be64(out+48, ctx->h[6]);+ store_be64(out+56, ctx->h[7]);+}++static inline void sha512_cpy(struct sha512_ctx *restrict out, const struct sha512_ctx *restrict in)+{+ out->h[0] = in->h[0];+ out->h[1] = in->h[1];+ out->h[2] = in->h[2];+ out->h[3] = in->h[3];+ out->h[4] = in->h[4];+ out->h[5] = in->h[5];+ out->h[6] = in->h[6];+ out->h[7] = in->h[7];+}++static inline void sha512_xor(struct sha512_ctx *restrict out, const struct sha512_ctx *restrict in)+{+ out->h[0] ^= in->h[0];+ out->h[1] ^= in->h[1];+ out->h[2] ^= in->h[2];+ out->h[3] ^= in->h[3];+ out->h[4] ^= in->h[4];+ out->h[5] ^= in->h[5];+ out->h[6] ^= in->h[6];+ out->h[7] ^= in->h[7];+}++void cryptonite_sha512_transform(struct sha512_ctx* ctx, uint8_t block[SHA512_BLOCK_SIZE])+{+ cryptonite_sha512_update(ctx, block, SHA512_BLOCK_SIZE);+}++DECL_PBKDF2(sha512,+ SHA512_BLOCK_SIZE,+ SHA512_DIGEST_SIZE,+ struct sha512_ctx,+ cryptonite_sha512_init,+ cryptonite_sha512_update,+ cryptonite_sha512_transform,+ cryptonite_sha512_finalize,+ sha512_cpy,+ sha512_extract,+ sha512_xor);++void cryptonite_fastpbkdf2_hmac_sha1( const uint8_t *pw, size_t npw+ , const uint8_t *salt, size_t nsalt+ , uint32_t iterations+ , uint8_t *out, size_t nout+ )+{+ PBKDF2(sha1)(pw, npw, salt, nsalt, iterations, out, nout);+}++void cryptonite_fastpbkdf2_hmac_sha256( const uint8_t *pw, size_t npw+ , const uint8_t *salt, size_t nsalt+ , uint32_t iterations+ , uint8_t *out, size_t nout+ )+{+ PBKDF2(sha256)(pw, npw, salt, nsalt, iterations, out, nout);+}++void cryptonite_fastpbkdf2_hmac_sha512( const uint8_t *pw, size_t npw+ , const uint8_t *salt, size_t nsalt+ , uint32_t iterations+ , uint8_t *out, size_t nout+ )+{+ PBKDF2(sha512)(pw, npw, salt, nsalt, iterations, out, nout);+}
+ cbits/cryptonite_pbkdf2.h view
@@ -0,0 +1,31 @@+#ifndef CRYPTONITE_PBKDF2_H_+#define CRYPTONITE_PBKDF2_H_++#include <stdlib.h>+#include <stdint.h>++#ifdef __cplusplus+extern "C" {+#endif++void cryptonite_fastpbkdf2_hmac_sha1( const uint8_t *pw, size_t npw+ , const uint8_t *salt, size_t nsalt+ , uint32_t iterations+ , uint8_t *out, size_t nout+ );+void cryptonite_fastpbkdf2_hmac_sha256( const uint8_t *pw, size_t npw+ , const uint8_t *salt, size_t nsalt+ , uint32_t iterations+ , uint8_t *out, size_t nout+ );+void cryptonite_fastpbkdf2_hmac_sha512( const uint8_t *pw, size_t npw+ , const uint8_t *salt, size_t nsalt+ , uint32_t iterations+ , uint8_t *out, size_t nout+ );++#ifdef __cplusplus+}+#endif++#endif
cbits/cryptonite_sha1.h view
@@ -26,10 +26,12 @@ #include <stdint.h> +# define SHA1_BLOCK_SIZE 64+ struct sha1_ctx { uint64_t sz;- uint8_t buf[64];+ uint8_t buf[SHA1_BLOCK_SIZE]; uint32_t h[5]; };
cbits/cryptonite_sha256.h view
@@ -27,6 +27,8 @@ #include <stdint.h> +#define SHA256_BLOCK_SIZE 64+ struct sha256_ctx { uint64_t sz;
cbits/cryptonite_sha3.c view
@@ -98,13 +98,19 @@ } } +/*+ * Initialize a SHA-3 / SHAKE context: hashlen is the security level (and+ * half the capacity) in bits+ */ void cryptonite_sha3_init(struct sha3_ctx *ctx, uint32_t hashlen) {- int bufsz = 200 - 2 * (hashlen / 8);+ /* assert(hashlen >= SHA3_BITSIZE_MIN && hashlen <= SHA3_BITSIZE_MAX) */+ int bufsz = SHA3_BUF_SIZE(hashlen); memset(ctx, 0, sizeof(*ctx) + bufsz); ctx->bufsz = bufsz; } +/* Update a SHA-3 / SHAKE context */ void cryptonite_sha3_update(struct sha3_ctx *ctx, const uint8_t *data, uint32_t len) { uint32_t to_fill;@@ -126,7 +132,7 @@ } if (need_alignment(data, 8)) {- uint64_t tramp[200 - 2 * (224 / 8)];+ uint64_t tramp[SHA3_BUF_SIZE_MAX/8]; ASSERT_ALIGNMENT(tramp, 8); for (; len >= ctx->bufsz; len -= ctx->bufsz, data += ctx->bufsz) { memcpy(tramp, data, ctx->bufsz / 8);@@ -146,10 +152,8 @@ } } -void cryptonite_sha3_finalize(struct sha3_ctx *ctx, uint32_t hashlen, uint8_t *out)+void cryptonite_sha3_finalize_with_pad_byte(struct sha3_ctx *ctx, uint8_t pad_byte) {- uint64_t w[25];- /* process full buffer if needed */ if (ctx->bufindex == ctx->bufsz) { sha3_do_chunk(ctx->state, (uint64_t *) ctx->buf, ctx->bufsz / 8);@@ -157,14 +161,83 @@ } /* add the 10*1 padding */- ctx->buf[ctx->bufindex++] = 0x06;+ ctx->buf[ctx->bufindex++] = pad_byte; memset(ctx->buf + ctx->bufindex, 0, ctx->bufsz - ctx->bufindex); ctx->buf[ctx->bufsz - 1] |= 0x80; /* process */ sha3_do_chunk(ctx->state, (uint64_t *) ctx->buf, ctx->bufsz / 8);+ ctx->bufindex = 0;+} - /* output */- cpu_to_le64_array(w, ctx->state, 25);- memcpy(out, w, hashlen / 8);+/*+ * Extract some bytes from a finalized SHA-3 / SHAKE context.+ * May be called multiple times.+ */+void cryptonite_sha3_output(struct sha3_ctx *ctx, uint8_t *out, uint32_t len)+{+ uint64_t w[25];+ uint8_t *wptr = (uint8_t *) w;+ uint32_t still_avail;++ still_avail = ctx->bufsz - ctx->bufindex;++ if (ctx->bufindex == ctx->bufsz) {+ /* squeeze the sponge again, without any input */+ sha3_do_chunk(ctx->state, NULL, 0);+ ctx->bufindex = 0;+ }++ /* use bytes already available if this block is fully consumed */+ if (ctx->bufindex && len >= still_avail) {+ cpu_to_le64_array(w, ctx->state, 25);+ memcpy(out, wptr + ctx->bufindex, still_avail);+ sha3_do_chunk(ctx->state, NULL, 0);+ len -= still_avail;+ out += still_avail;+ ctx->bufindex = 0;+ }++ /* output as much ctx->bufsz-block */+ for (; len > ctx->bufsz; len -= ctx->bufsz, out += ctx->bufsz) {+ cpu_to_le64_array(w, ctx->state, 25);+ memcpy(out, w, ctx->bufsz);+ sha3_do_chunk(ctx->state, NULL, 0);+ }++ /* output from partial buffer */+ if (len) {+ cpu_to_le64_array(w, ctx->state, 25);+ memcpy(out, wptr + ctx->bufindex, len);+ ctx->bufindex += len;+ }+}++/* Finalize a SHA-3 context and return the digest value */+void cryptonite_sha3_finalize(struct sha3_ctx *ctx, uint32_t hashlen, uint8_t *out)+{+ cryptonite_sha3_finalize_with_pad_byte(ctx, 0x06);+ cryptonite_sha3_output(ctx, out, hashlen / 8);+}++/* Finalize a SHAKE context. Output is read using cryptonite_sha3_output. */+void cryptonite_sha3_finalize_shake(struct sha3_ctx *ctx)+{+ cryptonite_sha3_finalize_with_pad_byte(ctx, 0x1F);+}++void cryptonite_keccak_init(struct sha3_ctx *ctx, uint32_t hashlen)+{+ cryptonite_sha3_init(ctx, hashlen);+}++void cryptonite_keccak_update(struct sha3_ctx *ctx, uint8_t *data, uint32_t len)+{+ cryptonite_sha3_update(ctx, data, len);+}++void cryptonite_keccak_finalize(struct sha3_ctx *ctx, uint32_t hashlen, uint8_t *out)+{+ cryptonite_sha3_finalize_with_pad_byte(ctx, 1);+ cryptonite_sha3_output(ctx, out, hashlen / 8); }
cbits/cryptonite_sha3.h view
@@ -31,13 +31,36 @@ uint32_t bufindex; uint32_t bufsz; uint64_t state[25];- uint8_t buf[0]; /* maximum SHA3-224 is 144 bytes, otherwise buffer can be decreases */+ uint8_t buf[0]; /* maximum SHAKE128 is 168 bytes, otherwise buffer can be decreased */ }; #define SHA3_CTX_SIZE sizeof(struct sha3_ctx)+#define SHA3_CTX_BUF_MAX_SIZE (SHA3_CTX_SIZE + SHA3_BUF_SIZE_MAX)+#define SHA3_BITSIZE_MIN 128+#define SHA3_BITSIZE_MAX 512 +#define SHA3_BUF_SIZE(bitsize) (200 - 2 * ((bitsize) / 8))++#define SHA3_BUF_SIZE_MIN SHA3_BUF_SIZE(SHA3_BITSIZE_MAX)+#define SHA3_BUF_SIZE_MAX SHA3_BUF_SIZE(SHA3_BITSIZE_MIN)++/*+ * buffer size:+ *+ * 128 bits (shake 128 bits) => 200 - 2 * (128 / 8) = 200 - 2*16 = 200 - 32 = 168 bytes+ * 224 bits (SHA3 224 bits) => 200 - 2 * (224 / 8) = 200 - 2*28 = 200 - 56 = 144 bytes+ * 512 bits (SHA3 512 bits) => 200 - 2 * (512 / 8) = 200 - 2*64 = 200 - 128 = 72 bytes+ */+ void cryptonite_sha3_init(struct sha3_ctx *ctx, uint32_t hashlen); void cryptonite_sha3_update(struct sha3_ctx *ctx, const uint8_t *data, uint32_t len); void cryptonite_sha3_finalize(struct sha3_ctx *ctx, uint32_t hashlen, uint8_t *out);++void cryptonite_sha3_finalize_shake(struct sha3_ctx *ctx);+void cryptonite_sha3_output(struct sha3_ctx *ctx, uint8_t *out, uint32_t len);++void cryptonite_keccak_init(struct sha3_ctx *ctx, uint32_t hashlen);+void cryptonite_keccak_update(struct sha3_ctx *ctx, uint8_t *data, uint32_t len);+void cryptonite_keccak_finalize(struct sha3_ctx *ctx, uint32_t hashlen, uint8_t *out); #endif
cbits/cryptonite_sha512.h view
@@ -26,10 +26,12 @@ #include <stdint.h> +# define SHA512_BLOCK_SIZE 128+ struct sha512_ctx { uint64_t sz[2];- uint8_t buf[128];+ uint8_t buf[SHA512_BLOCK_SIZE]; uint64_t h[8]; };
cbits/ed448/x448.c view
@@ -36,7 +36,7 @@ typedef struct { decaf_word_t limb[X448_LIMBS]; } gf_s, gf[1]; -const unsigned char X448_BASE_POINT[X448_BYTES] = {5};+static const unsigned char X448_BASE_POINT[X448_BYTES] = {5}; static const gf ZERO = {{{0}}}, ONE = {{{1}}};
cbits/ed448/x448.h view
@@ -2,7 +2,7 @@ #define X448_BYTES (448/8) /* The base point (5) */-extern const unsigned char X448_BASE_POINT[X448_BYTES];+//extern const unsigned char X448_BASE_POINT[X448_BYTES]; /* Returns 0 on success, -1 on failure */ int __attribute__((visibility("default")))
cryptonite.cabal view
@@ -1,18 +1,18 @@ Name: cryptonite-Version: 0.21+Version: 0.22 Synopsis: Cryptography Primitives sink Description: A repository of cryptographic primitives. . * Symmetric ciphers: AES, DES, 3DES, Blowfish, Camellia, RC4, Salsa, XSalsa, ChaCha. .- * Hash: SHA1, SHA2, SHA3, MD2, MD4, MD5, Keccak, Skein, Ripemd, Tiger, Whirlpool, Blake2+ * Hash: SHA1, SHA2, SHA3, SHAKE, MD2, MD4, MD5, Keccak, Skein, Ripemd, Tiger, Whirlpool, Blake2 . * MAC: HMAC, Poly1305 .- * Asymmetric crypto: DSA, RSA, DH, ECDH, ECDSA, ECC, Curve25519, Ed25519, Ed448+ * Asymmetric crypto: DSA, RSA, DH, ECDH, ECDSA, ECC, Curve25519, Curve448, Ed25519 .- * Key Derivation Function: PBKDF2, Scrypt, HKDF+ * Key Derivation Function: PBKDF2, Scrypt, HKDF, Argon2 . * Cryptographic Random generation: System Entropy, Deterministic Random Generator .@@ -35,7 +35,7 @@ Build-Type: Simple Homepage: https://github.com/haskell-crypto/cryptonite Bug-reports: https://github.com/haskell-crypto/cryptonite/issues-Cabal-Version: >=1.10+Cabal-Version: >=1.18 extra-doc-files: README.md CHANGELOG.md extra-source-files: cbits/*.h cbits/aes/*.h@@ -44,6 +44,8 @@ cbits/p256/*.h cbits/blake2/ref/*.h cbits/blake2/sse/*.h+ cbits/argon2/*.h+ cbits/argon2/*.c cbits/aes/x86ni_impl.c tests/*.hs @@ -66,6 +68,11 @@ Default: False Manual: True +Flag support_sse+ Description: Use SSE optimized version when existing (BLAKE2, ARGON2)+ Default: False+ Manual: True+ Flag support_blake2_sse Description: Use SSE optimized version of BLAKE2. Default: False@@ -118,6 +125,7 @@ Crypto.Number.Prime Crypto.Number.Serialize Crypto.Number.Serialize.Internal+ Crypto.KDF.Argon2 Crypto.KDF.PBKDF2 Crypto.KDF.Scrypt Crypto.KDF.BCrypt@@ -125,7 +133,9 @@ Crypto.Hash Crypto.Hash.IO Crypto.Hash.Algorithms+ Crypto.OTP Crypto.PubKey.Curve25519+ Crypto.PubKey.Curve448 Crypto.PubKey.MaskGenFunction Crypto.PubKey.DH Crypto.PubKey.DSA@@ -201,9 +211,12 @@ Crypto.Internal.Imports Crypto.Internal.Words Crypto.Internal.WordArray+ if impl(ghc >= 7.8)+ Other-modules: Crypto.Hash.SHAKE+ Crypto.Internal.Nat Build-depends: base >= 4.3 && < 5 , bytestring- , memory >= 0.8+ , memory >= 0.12 , ghc-prim ghc-options: -Wall -fwarn-tabs -optc-O3 -fno-warn-unused-imports default-language: Haskell2010@@ -228,7 +241,6 @@ , cbits/cryptonite_sha256.c , cbits/cryptonite_sha512.c , cbits/cryptonite_sha3.c- , cbits/cryptonite_keccak.c , cbits/cryptonite_md2.c , cbits/cryptonite_md4.c , cbits/cryptonite_md5.c@@ -238,6 +250,7 @@ , cbits/cryptonite_tiger.c , cbits/cryptonite_whirlpool.c , cbits/cryptonite_scrypt.c+ , cbits/cryptonite_pbkdf2.c include-dirs: cbits cbits/ed25519 if arch(x86_64)@@ -288,6 +301,12 @@ , cbits/blake2/ref/blake2bp-ref.c include-dirs: cbits/blake2/ref + if arch(x86_64) || flag(support_sse)+ CPP-options: -DSUPPORT_SSE++ C-sources: cbits/argon2/argon2.c+ include-dirs: cbits/argon2+ if os(windows) cpp-options: -DWINDOWS Build-Depends: Win32@@ -321,17 +340,19 @@ KAT_AES.KATXTS KAT_AES KAT_AFIS+ KAT_Argon2 KAT_Blowfish KAT_Camellia KAT_Curve25519+ KAT_Curve448 KAT_DES- KAT_Ed448 KAT_Ed25519 KAT_CMAC KAT_HKDF KAT_HMAC KAT_MiyaguchiPreneel KAT_PBKDF2+ KAT_OTP KAT_PubKey.DSA KAT_PubKey.ECC KAT_PubKey.ECDSA@@ -353,7 +374,6 @@ Build-Depends: base >= 3 && < 5 , bytestring , memory- , byteable , tasty , tasty-quickcheck , tasty-hunit
tests/Hash.hs view
@@ -1,6 +1,10 @@+{-# LANGUAGE CPP #-} {-# LANGUAGE OverloadedStrings #-} {-# LANGUAGE ViewPatterns #-}+#if MIN_VERSION_base(4,7,0) {-# LANGUAGE ExistentialQuantification #-}+{-# LANGUAGE DataKinds #-}+#endif module Hash ( tests ) where@@ -138,10 +142,48 @@ "a69f73cca23a9ac5c8b567dc185a756e97c982164fe25859e0d1dcc1475c80a615b2123af1f5f94c11e3e9402c3ac558f500199d95b6d3e301758586281dcd26", "01dedd5de4ef14642445ba5f5b97c15e47b9ad931326e4b0727cd94cefc44fff23f07bf543139939b49128caf436dc1bdee54fcb24023a08d9403f9b4bf0d450", "28e361fe8c56e617caa56c28c7c36e5c13be552b77081be82b642f08bb7ef085b9a81910fe98269386b9aacfd2349076c9506126e198f6f6ad44c12017ca77b1" ])+ , ("Blake2b-160", HashAlg Blake2b_160, [+ "3345524abf6bbe1809449224b5972c41790b6cf2",+ "3c523ed102ab45a37d54f5610d5a983162fde84f",+ "a3d365b5fba5d36fbb19c03b7fde496058969c5a" ])+ , ("Blake2b-224", HashAlg Blake2b_224, [+ "836cc68931c2e4e3e838602eca1902591d216837bafddfe6f0c8cb07",+ "477c3985751dd4d1b8c93827ea5310b33bb02a26463a050dffd3e857",+ "a4a1b6851be66891a3deff406c4d7556879ebf952407450755f90eb6" ])+ , ("Blake2b-256", HashAlg Blake2b_256, [+ "0e5751c026e543b2e8ab2eb06099daa1d1e5df47778f7787faab45cdf12fe3a8",+ "01718cec35cd3d796dd00020e0bfecb473ad23457d063b75eff29c0ffa2e58a9",+ "036c13096926b3dfccfe3f233bd1b2f583b818b8b15c01be65af69238e900b2c" ])+ , ("Blake2b-384", HashAlg Blake2b_384, [+ "b32811423377f52d7862286ee1a72ee540524380fda1724a6f25d7978c6fd3244a6caf0498812673c5e05ef583825100",+ "b7c81b228b6bd912930e8f0b5387989691c1cee1e65aade4da3b86a3c9f678fc8018f6ed9e2906720c8d2a3aeda9c03d",+ "927a1f297873cbe887a93b2183c4e2eba53966ba92c6db8b87029a1d8c673471d09740676cced79c5016838973f630c3" ]) , ("Blake2b-512", HashAlg Blake2b_512, [ "786a02f742015903c6c6fd852552d272912f4740e15847618a86e217f71f5419d25e1031afee585313896444934eb04b903a685b1448b755d56f701afe9be2ce", "a8add4bdddfd93e4877d2746e62817b116364a1fa7bc148d95090bc7333b3673f82401cf7aa2e4cb1ecd90296e3f14cb5413f8ed77be73045b13914cdcd6a918", "af438eea5d8cdb209336a7e85bf58090dc21b49d823f89a7d064c119f127bd361af9c7d109edda0f0e91bdce078d1d86b8e6f25727c98f6d3bb6f50acb2dd376" ])+ , ("Blake2s-160", HashAlg Blake2s_160, [+ "354c9c33f735962418bdacb9479873429c34916f",+ "5a604fec9713c369e84b0ed68daed7d7504ef240",+ "759bef6d041bcbd861b8b51baaece6c8fffd0acf" ])+ , ("Blake2s-224", HashAlg Blake2s_224, [+ "1fa1291e65248b37b3433475b2a0dd63d54a11ecc4e3e034e7bc1ef4",+ "e4e5cb6c7cae41982b397bf7b7d2d9d1949823ae78435326e8db4912",+ "e220025fd46a9a635c3f7f60bb96a84c01019ac0817f5901e7eeaa2c" ])+ , ("Blake2s-256", HashAlg Blake2s_256, [+ "69217a3079908094e11121d042354a7c1f55b6482ca1a51e1b250dfd1ed0eef9",+ "606beeec743ccbeff6cbcdf5d5302aa855c256c29b88c8ed331ea1a6bf3c8812",+ "94662583a600a12dff357c0a6f1b514a710ef0f587a38e8d2e4d7f67e9c81667" ])+#if MIN_VERSION_base(4,7,0)+ , ("SHAKE128_4096", HashAlg (SHAKE128 :: SHAKE128 4096), [+ "7f9c2ba4e88f827d616045507605853ed73b8093f6efbc88eb1a6eacfa66ef263cb1eea988004b93103cfb0aeefd2a686e01fa4a58e8a3639ca8a1e3f9ae57e235b8cc873c23dc62b8d260169afa2f75ab916a58d974918835d25e6a435085b2badfd6dfaac359a5efbb7bcc4b59d538df9a04302e10c8bc1cbf1a0b3a5120ea17cda7cfad765f5623474d368ccca8af0007cd9f5e4c849f167a580b14aabdefaee7eef47cb0fca9767be1fda69419dfb927e9df07348b196691abaeb580b32def58538b8d23f87732ea63b02b4fa0f4873360e2841928cd60dd4cee8cc0d4c922a96188d032675c8ac850933c7aff1533b94c834adbb69c6115bad4692d8619f90b0cdf8a7b9c264029ac185b70b83f2801f2f4b3f70c593ea3aeeb613a7f1b1de33fd75081f592305f2e4526edc09631b10958f464d889f31ba010250fda7f1368ec2967fc84ef2ae9aff268e0b1700affc6820b523a3d917135f2dff2ee06bfe72b3124721d4a26c04e53a75e30e73a7a9c4a95d91c55d495e9f51dd0b5e9d83c6d5e8ce803aa62b8d654db53d09b8dcff273cdfeb573fad8bcd45578bec2e770d01efde86e721a3f7c6cce275dabe6e2143f1af18da7efddc4c7b70b5e345db93cc936bea323491ccb38a388f546a9ff00dd4e1300b9b2153d2041d205b443e41b45a653f2a5c4492c1add544512dda2529833462b71a41a45be97290b6f",+ "f4202e3c5852f9182a0430fd8144f0a74b95e7417ecae17db0f8cfeed0e3e66eb5585ec6f86021cacf272c798bcf97d368b886b18fec3a571f096086a523717a3732d50db2b0b7998b4117ae66a761ccf1847a1616f4c07d5178d0d965f9feba351420f8bfb6f5ab9a0cb102568eabf3dfa4e22279f8082dce8143eb78235a1a54914ab71abb07f2f3648468370b9fbb071e074f1c030a4030225f40c39480339f3dc71d0f04f71326de1381674cc89e259e219927fae8ea2799a03da862a55afafe670957a2af3318d919d0a3358f3b891236d6a8e8d19999d1076b529968faefbd880d77bb300829dca87e9c8e4c28e0800ff37490a5bd8c36c0b0bdb2701a5d58d03378b9dbd384389e3ef0fd4003b08998fd3f32fe1a0810fc0eccaad94bca8dd83b34559c333f0b16dfc2896ed87b30ba14c81f87cd8b4bb6317db89b0e7e94c0616f9a665fba5b0e6fb3549c9d7b68e66d08a86eb2faec05cc462a771806b93cc38b0a4feb9935c6c8945da6a589891ba5ee99753cfdd38e1abc7147fd74b7c7d1ce0609b6680a2e18888d84949b6e6cf6a2aa4113535aaee079459e3f257b569a9450523c41f5b5ba4b79b3ba5949140a74bb048de0657d04954bdd71dae76f61e2a1f88aecb91cfa5b36c1bf3350a798dc4dcf48628effe3a0c5340c756bd922f78d0e36ef7df12ce78c179cc721ad087e15ea496bf5f60b21b5822d",+ "22fd225fb8f2c8d0d2097e1f8d38b6a9e619d39664dad3795f0336fda544d305e1be56a9953ecd6e4bec14b622f53da492eccbe257b9af84775a6bdf81aab6b1ba3492149b7ce4ea402c56e343939f78b9a9727193269798420c9323a9eb1fa63006e1482fcf15e3696aa1ae5cb66eb8aad4ac6041ca0b576b78785ad95bc5fb6f8a420ba9e1726552c0f2b97050ae69fc018d3f63b3a812a2d39ef64b8ae368472dec4341511b02cf77363c74f216055d5905412bc2bf57b4010b1bdce2882cb28fc7e4d470ed05219fc4d1ce11d11e10db369c807cd71891653638956b2f9d176e116188aff2fbb8519d9ad8c3fb52fa8bb4a0413364e89d9f9d7db627f2a2288babedcc314a19e45c6b7fb93b16a15d9953ff619ab4d523c481552588f711b450f854c858ebcb8cf49492d6240a753bde2109c486cac666bdba767c6e9254cc723f67855534c34d08ed486c67c1b8dd288c6010ce8e6c1c9b7f927acf4d71ee99729cee55ecec544245d0b51b31dd78eb99c2723e8ba5cf92ac7720e8933d9fd3596b90073f6980c5ed3f1cbfada26bdb6946e72391198e3d1cedebdba092324500e32b8e04e32550f6dd6c4befafa95acc206c5708300d2a8df2765751102f9738a1449c4c0d588f0076d0c1a5ee445eb85c97ada5837d5dc1d34ea081c8411d64a4d9ce9279bfe9feb25696cf741c705ed46f171e2239216d6c45dc8d15" ])+ , ("SHAKE256_4096", HashAlg (SHAKE256 :: SHAKE256 4096), [+ "46b9dd2b0ba88d13233b3feb743eeb243fcd52ea62b81b82b50c27646ed5762fd75dc4ddd8c0f200cb05019d67b592f6fc821c49479ab48640292eacb3b7c4be141e96616fb13957692cc7edd0b45ae3dc07223c8e92937bef84bc0eab862853349ec75546f58fb7c2775c38462c5010d846c185c15111e595522a6bcd16cf86f3d122109e3b1fdd943b6aec468a2d621a7c06c6a957c62b54dafc3be87567d677231395f6147293b68ceab7a9e0c58d864e8efde4e1b9a46cbe854713672f5caaae314ed9083dab4b099f8e300f01b8650f1f4b1d8fcf3f3cb53fb8e9eb2ea203bdc970f50ae55428a91f7f53ac266b28419c3778a15fd248d339ede785fb7f5a1aaa96d313eacc890936c173cdcd0fab882c45755feb3aed96d477ff96390bf9a66d1368b208e21f7c10d04a3dbd4e360633e5db4b602601c14cea737db3dcf722632cc77851cbdde2aaf0a33a07b373445df490cc8fc1e4160ff118378f11f0477de055a81a9eda57a4a2cfb0c83929d310912f729ec6cfa36c6ac6a75837143045d791cc85eff5b21932f23861bcf23a52b5da67eaf7baae0f5fb1369db78f3ac45f8c4ac5671d85735cdddb09d2b1e34a1fc066ff4a162cb263d6541274ae2fcc865f618abe27c124cd8b074ccd516301b91875824d09958f341ef274bdab0bae316339894304e35877b0c28a9b1fd166c796b9cc258a064a8f57e27f2a",+ "2f671343d9b2e1604dc9dcf0753e5fe15c7c64a0d283cbbf722d411a0e36f6ca1d01d1369a23539cd80f7c054b6e5daf9c962cad5b8ed5bd11998b40d5734442bed798f6e5c915bd8bb07e0188d0a55c1290074f1c287af06352299184492cbdec9acba737ee292e5adaa445547355e72a03a3bac3aac770fe5d6b66600ff15d37d5b4789994ea2aeb097f550aa5e88e4d8ff0ba07b88c1c88573063f5d96df820abc2abd177ab037f351c375e553af917132cf2f563c79a619e1bb76e8e2266b0c5617d695f2c496a25f4073b6840c1833757ebb386f16757a8e16a21e9355e9b248f3b33be672da700266be99b8f8725e8ab06075f0219e655ebc188976364b7db139390d34a6ea67b4b223229183a94cf455ece91fdaf5b9c707fa4b40ec39816c1120c7aaaf47920977be900e6b9ca4b8940e192b927c475bd58e836f512ae3e52924e36ff8e9b1d0251047770a5e465905622b1f159be121ab93819c5e5c6dae299ac73bf1c4ed4a1e2c7fa3caa1039b05e94c9f993d04feb272b6e00bb0276939cf746c42936831fc8f2b4cb0cf94808ae0af405ce4bc67d1e7acfc6fd6590d3de91f795df5aaf57e2cee1845a303d0ea564be3f1299acdce67efe0d62cfc6d6829ff4ecc0a05153c24696c4d34c076453827e796f3062f94f62f4528b7cfc870f0dcd615b7c97b95da4b9be5830e8b3f66cce71e0f622c771994443e2",+ "fffcaac0606c0edb7bc0d15f033accb68538159016e5ae8470bf9ebea89fa6c9fcc3e027d94f7f967b7246346bd9f6b8084e45a057b976847c4db03bf383c834054866f6a8282a497368c46e1852fc09e20f22c45607a27c8b2a4798ebefada54f8d3795b9f07606b1cd6e41f90d765480ef5c0d5790659cf1d210adfd412378b92e1dd9bd7fd95a1a66677fc6baa0e3a53c9031c1fb59cbad9f5dc5881a3c8e25c80ecb1abf0971488ada1f533dcbf8d37031335378574b8d3fad61159c9fae28caa543b3072ce308d369be340e78c6edc664cc6dde9b2f0a4ad2e60ce9c8b1e5722b8d5b73d0962b74fb9ed86307a180f53933339f9d56d3b345c2a0e98fcf5de7754f3845f6be30089f0e142ad4602f18abdc750bda7c91c3f32872e66640db46045ab4c276b379f1b834c2cbb1bd8601305649ec6b3bf20618695136dee6541492d1d985ea1fb765fd7a559e810eba30f2f710233ae5a411b94ddcaa01a08f1c31320d111c0714422cd5e987c9a76fc865de34003ab12664081be8017d23d977f2bf4ed9e3ce09ea3d64bb4ae8ebfa9d0721f57841008c297e2f455a0441a2bd618ca379dbd239a21e410defb4001b1e11f87e36bf894c222f76f12ddcc3771bbb17d5c0dfd86d89a3e13e084f6dc1c4762bcd393c1757db7afb1434221569e7ddaaffd6318253ec3df8cf5f826b81896d6474ee06a2e30ccc8c6a96bdd5" ])+#endif ] runhash :: HashAlg -> ByteString -> ByteString
+ tests/KAT_Argon2.hs view
@@ -0,0 +1,42 @@+{-# LANGUAGE OverloadedStrings #-}+module KAT_Argon2 (tests) where++import Crypto.Error+import qualified Crypto.KDF.Argon2 as Argon2+import qualified Data.ByteString as B+import Imports++data KDFVector = KDFVector+ { kdfPass :: ByteString+ , kdfSalt :: ByteString+ , kdfOptions :: Argon2.Options+ , kdfResult :: ByteString+ }++argon2i_13 :: Argon2.TimeCost -> Argon2.MemoryCost -> Argon2.Options+argon2i_13 iters memory = Argon2.Options+ { Argon2.iterations = iters+ , Argon2.memory = memory+ , Argon2.parallelism = 1+ , Argon2.variant = Argon2.Argon2i+ , Argon2.version = Argon2.Version13+ }++vectors =+ [ KDFVector "password" "somesalt" (argon2i_13 2 65536)+ "\xc1\x62\x88\x32\x14\x7d\x97\x20\xc5\xbd\x1c\xfd\x61\x36\x70\x78\x72\x9f\x6d\xfb\x6f\x8f\xea\x9f\xf9\x81\x58\xe0\xd7\x81\x6e\xd0"+ ]++kdfTests :: [TestTree]+kdfTests = map toKDFTest $ zip is vectors+ where+ toKDFTest (i, v) =+ testCase (show i)+ (CryptoPassed (kdfResult v) @=? Argon2.hash (kdfOptions v) (kdfPass v) (kdfSalt v) (B.length $ kdfResult v))++ is :: [Int]+ is = [1..]++tests = testGroup "Argon2"+ [ testGroup "KATs" kdfTests+ ]
+ tests/KAT_Curve448.hs view
@@ -0,0 +1,25 @@+{-# LANGUAGE OverloadedStrings #-}+module KAT_Curve448 ( tests ) where++import Crypto.Error+import qualified Crypto.PubKey.Curve448 as Curve448+import Data.ByteArray as B+import Imports++alicePrivate = throwCryptoError $ Curve448.secretKey ("\x9a\x8f\x49\x25\xd1\x51\x9f\x57\x75\xcf\x46\xb0\x4b\x58\x00\xd4\xee\x9e\xe8\xba\xe8\xbc\x55\x65\xd4\x98\xc2\x8d\xd9\xc9\xba\xf5\x74\xa9\x41\x97\x44\x89\x73\x91\x00\x63\x82\xa6\xf1\x27\xab\x1d\x9a\xc2\xd8\xc0\xa5\x98\x72\x6b" :: ByteString)+alicePublic = throwCryptoError $ Curve448.publicKey ("\x9b\x08\xf7\xcc\x31\xb7\xe3\xe6\x7d\x22\xd5\xae\xa1\x21\x07\x4a\x27\x3b\xd2\xb8\x3d\xe0\x9c\x63\xfa\xa7\x3d\x2c\x22\xc5\xd9\xbb\xc8\x36\x64\x72\x41\xd9\x53\xd4\x0c\x5b\x12\xda\x88\x12\x0d\x53\x17\x7f\x80\xe5\x32\xc4\x1f\xa0" :: ByteString)+bobPrivate = throwCryptoError $ Curve448.secretKey ("\x1c\x30\x6a\x7a\xc2\xa0\xe2\xe0\x99\x0b\x29\x44\x70\xcb\xa3\x39\xe6\x45\x37\x72\xb0\x75\x81\x1d\x8f\xad\x0d\x1d\x69\x27\xc1\x20\xbb\x5e\xe8\x97\x2b\x0d\x3e\x21\x37\x4c\x9c\x92\x1b\x09\xd1\xb0\x36\x6f\x10\xb6\x51\x73\x99\x2d" :: ByteString)+bobPublic = throwCryptoError $ Curve448.publicKey ("\x3e\xb7\xa8\x29\xb0\xcd\x20\xf5\xbc\xfc\x0b\x59\x9b\x6f\xec\xcf\x6d\xa4\x62\x71\x07\xbd\xb0\xd4\xf3\x45\xb4\x30\x27\xd8\xb9\x72\xfc\x3e\x34\xfb\x42\x32\xa1\x3c\xa7\x06\xdc\xb5\x7a\xec\x3d\xae\x07\xbd\xc1\xc6\x7b\xf3\x36\x09" :: ByteString)+aliceMultBob = "\x07\xff\xf4\x18\x1a\xc6\xcc\x95\xec\x1c\x16\xa9\x4a\x0f\x74\xd1\x2d\xa2\x32\xce\x40\xa7\x75\x52\x28\x1d\x28\x2b\xb6\x0c\x0b\x56\xfd\x24\x64\xc3\x35\x54\x39\x36\x52\x1c\x24\x40\x30\x85\xd5\x9a\x44\x9a\x50\x37\x51\x4a\x87\x9d" :: ByteString++katTests :: [TestTree]+katTests =+ [ testCase "0" (aliceMultBob @=? B.convert (Curve448.dh alicePublic bobPrivate))+ , testCase "1" (aliceMultBob @=? B.convert (Curve448.dh bobPublic alicePrivate))+ , testCase "2" (alicePublic @=? Curve448.toPublic alicePrivate)+ , testCase "3" (bobPublic @=? Curve448.toPublic bobPrivate)+ ]++tests = testGroup "Curve448"+ [ testGroup "KATs" katTests+ ]
− tests/KAT_Ed448.hs
@@ -1,25 +0,0 @@-{-# LANGUAGE OverloadedStrings #-}-module KAT_Ed448 ( tests ) where--import Crypto.Error-import qualified Crypto.PubKey.Ed448 as Ed448-import Data.ByteArray as B-import Imports--alicePrivate = throwCryptoError $ Ed448.secretKey ("\x9a\x8f\x49\x25\xd1\x51\x9f\x57\x75\xcf\x46\xb0\x4b\x58\x00\xd4\xee\x9e\xe8\xba\xe8\xbc\x55\x65\xd4\x98\xc2\x8d\xd9\xc9\xba\xf5\x74\xa9\x41\x97\x44\x89\x73\x91\x00\x63\x82\xa6\xf1\x27\xab\x1d\x9a\xc2\xd8\xc0\xa5\x98\x72\x6b" :: ByteString)-alicePublic = throwCryptoError $ Ed448.publicKey ("\x9b\x08\xf7\xcc\x31\xb7\xe3\xe6\x7d\x22\xd5\xae\xa1\x21\x07\x4a\x27\x3b\xd2\xb8\x3d\xe0\x9c\x63\xfa\xa7\x3d\x2c\x22\xc5\xd9\xbb\xc8\x36\x64\x72\x41\xd9\x53\xd4\x0c\x5b\x12\xda\x88\x12\x0d\x53\x17\x7f\x80\xe5\x32\xc4\x1f\xa0" :: ByteString)-bobPrivate = throwCryptoError $ Ed448.secretKey ("\x1c\x30\x6a\x7a\xc2\xa0\xe2\xe0\x99\x0b\x29\x44\x70\xcb\xa3\x39\xe6\x45\x37\x72\xb0\x75\x81\x1d\x8f\xad\x0d\x1d\x69\x27\xc1\x20\xbb\x5e\xe8\x97\x2b\x0d\x3e\x21\x37\x4c\x9c\x92\x1b\x09\xd1\xb0\x36\x6f\x10\xb6\x51\x73\x99\x2d" :: ByteString)-bobPublic = throwCryptoError $ Ed448.publicKey ("\x3e\xb7\xa8\x29\xb0\xcd\x20\xf5\xbc\xfc\x0b\x59\x9b\x6f\xec\xcf\x6d\xa4\x62\x71\x07\xbd\xb0\xd4\xf3\x45\xb4\x30\x27\xd8\xb9\x72\xfc\x3e\x34\xfb\x42\x32\xa1\x3c\xa7\x06\xdc\xb5\x7a\xec\x3d\xae\x07\xbd\xc1\xc6\x7b\xf3\x36\x09" :: ByteString)-aliceMultBob = "\x07\xff\xf4\x18\x1a\xc6\xcc\x95\xec\x1c\x16\xa9\x4a\x0f\x74\xd1\x2d\xa2\x32\xce\x40\xa7\x75\x52\x28\x1d\x28\x2b\xb6\x0c\x0b\x56\xfd\x24\x64\xc3\x35\x54\x39\x36\x52\x1c\x24\x40\x30\x85\xd5\x9a\x44\x9a\x50\x37\x51\x4a\x87\x9d" :: ByteString--katTests :: [TestTree]-katTests =- [ testCase "0" (aliceMultBob @=? B.convert (Ed448.dh alicePublic bobPrivate))- , testCase "1" (aliceMultBob @=? B.convert (Ed448.dh bobPublic alicePrivate))- , testCase "2" (alicePublic @=? Ed448.toPublic alicePrivate)- , testCase "3" (bobPublic @=? Ed448.toPublic bobPrivate)- ]--tests = testGroup "Ed448"- [ testGroup "KATs" katTests- ]
+ tests/KAT_OTP.hs view
@@ -0,0 +1,102 @@+{-# LANGUAGE OverloadedStrings #-}+++module KAT_OTP+ ( tests+ )+where++import Crypto.Hash.Algorithms (SHA1(..), SHA256(..), SHA512(..))+import Crypto.OTP+import Data.ByteString (ByteString)+import Imports++-- | Test values from Appendix D of http://tools.ietf.org/html/rfc4226+hotpExpected :: [(Word64, Word32)]+hotpExpected =+ [ (0, 755224)+ , (1, 287082)+ , (3, 969429)+ , (4, 338314)+ , (5, 254676)+ , (6, 287922)+ , (7, 162583)+ , (8, 399871)+ , (9, 520489)+ ]++-- | Test data from Appendix B of http://tools.ietf.org/html/rfc6238+-- Note that the shared keys for the non SHA-1 values are actually+-- different (see the errata, or the Java example code).+totpSHA1Expected :: [(Word64, Word32)]+totpSHA1Expected =+ [ (59 , 94287082)+ , (1111111109, 07081804)+ , (1111111111, 14050471)+ , (1234567890, 89005924)+ , (2000000000, 69279037)+ , (20000000000, 65353130)+ ]++totpSHA256Expected :: [(Word64, Word32)]+totpSHA256Expected =+ [ (59 , 46119246)+ , (1111111109, 68084774)+ , (1111111111, 67062674)+ , (1234567890, 91819424)+ , (2000000000, 90698825)+ , (20000000000, 77737706)+ ]++totpSHA512Expected :: [(Word64, Word32)]+totpSHA512Expected =+ [ (59 , 90693936)+ , (1111111109, 25091201)+ , (1111111111, 99943326)+ , (1234567890, 93441116)+ , (2000000000, 38618901)+ , (20000000000, 47863826)+ ]++otpKey = "12345678901234567890" :: ByteString+totpSHA256Key = "12345678901234567890123456789012" :: ByteString+totpSHA512Key = "1234567890123456789012345678901234567890123456789012345678901234" :: ByteString++makeKATs otp expected = concatMap (makeTest otp) (zip3 is counts otps)+ where+ is :: [Int]+ is = [1..]++ counts = map fst expected+ otps = map snd expected++makeTest otp (i, count, password) =+ [ testCase (show i) (assertEqual "" password (otp count))+ ]++Right totpSHA1Params = mkTOTPParams SHA1 0 30 OTP8 TwoSteps+Right totpSHA256Params = mkTOTPParams SHA256 0 30 OTP8 TwoSteps+Right totpSHA512Params = mkTOTPParams SHA512 0 30 OTP8 TwoSteps++-- resynching with the expected value should just return the current counter + 1+prop_resyncExpected ctr window = resynchronize SHA1 OTP6 window key ctr (otp, []) == Just (ctr + 1)+ where+ key = "1234" :: ByteString+ otp = hotp SHA1 OTP6 key ctr+++tests = testGroup "OTP"+ [ testGroup "HOTP"+ [ testGroup "KATs" (makeKATs (hotp SHA1 OTP6 otpKey) hotpExpected)+ , testGroup "properties"+ [ testProperty "resync-expected" prop_resyncExpected+ ]+ ]+ , testGroup "TOTP"+ [ testGroup "KATs"+ [ testGroup "SHA1" (makeKATs (totp totpSHA1Params otpKey . fromIntegral) totpSHA1Expected)+ , testGroup "SHA256" (makeKATs (totp totpSHA256Params totpSHA256Key . fromIntegral) totpSHA256Expected)+ , testGroup "SHA512" (makeKATs (totp totpSHA512Params totpSHA512Key . fromIntegral) totpSHA512Expected)+ ]+ ]+ ]
tests/KAT_PBKDF2.hs view
@@ -3,7 +3,7 @@ -- from <http://www.ietf.org/rfc/rfc6070.txt> module KAT_PBKDF2 (tests) where -import Crypto.Hash (SHA1(..), SHA256(..))+import Crypto.Hash (SHA1(..), SHA256(..), SHA512(..)) import qualified Crypto.KDF.PBKDF2 as PBKDF2 import Data.ByteString (ByteString)@@ -42,14 +42,48 @@ ) ] +vectors_hmac_sha512 :: [ (VectParams, ByteString) ]+vectors_hmac_sha512 =+ [ ( ("password", "salt", 1, 32)+ , "\x86\x7f\x70\xcf\x1a\xde\x02\xcf\xf3\x75\x25\x99\xa3\xa5\x3d\xc4\xaf\x34\xc7\xa6\x69\x81\x5a\xe5\xd5\x13\x55\x4e\x1c\x8c\xf2\x52"+ )+ , ( ("password", "salt", 2, 32)+ , "\xe1\xd9\xc1\x6a\xa6\x81\x70\x8a\x45\xf5\xc7\xc4\xe2\x15\xce\xb6\x6e\x01\x1a\x2e\x9f\x00\x40\x71\x3f\x18\xae\xfd\xb8\x66\xd5\x3c"+ )+ , ( ("password", "salt", 4096, 32)+ , "\xd1\x97\xb1\xb3\x3d\xb0\x14\x3e\x01\x8b\x12\xf3\xd1\xd1\x47\x9e\x6c\xde\xbd\xcc\x97\xc5\xc0\xf8\x7f\x69\x02\xe0\x72\xf4\x57\xb5"+ )+ , ( ("passwordPASSWORDpassword", "saltSALTsaltSALTsaltSALTsaltSALTsalt", 1, 72)+ , "n\x23\xf2\x76\x38\x08\x4b\x0f\x7e\xa1\x73\x4e\x0d\x98\x41\xf5\x5d\xd2\x9e\xa6\x0a\x83\x44\x66\xf3\x39\x6b\xac\x80\x1f\xac\x1e\xeb\x63\x80\x2f\x03\xa0\xb4\xac\xd7\x60\x3e\x36\x99\xc8\xb7\x44\x37\xbe\x83\xff\x01\xad\x7f\x55\xda\xc1\xef\x60\xf4\xd5\x64\x80\xc3\x5e\xe6\x8f\xd5\x2c\x69\x36"+ )+ ]++ tests = testGroup "PBKDF2" [ testGroup "KATs-HMAC-SHA1" (katTests (PBKDF2.prfHMAC SHA1) vectors_hmac_sha1)+ , testGroup "KATs-HMAC-SHA1 (fast)" (katTestFastPBKDF2_SHA1 vectors_hmac_sha1) , testGroup "KATs-HMAC-SHA256" (katTests (PBKDF2.prfHMAC SHA256) vectors_hmac_sha256)+ , testGroup "KATs-HMAC-SHA256 (fast)" (katTestFastPBKDF2_SHA256 vectors_hmac_sha256)+ , testGroup "KATs-HMAC-SHA512" (katTests (PBKDF2.prfHMAC SHA512) vectors_hmac_sha512)+ , testGroup "KATs-HMAC-SHA512 (fast)" (katTestFastPBKDF2_SHA512 vectors_hmac_sha512) ] where katTests prf vects = map (toKatTest prf) $ zip is vects toKatTest prf (i, ((pass, salt, iter, dkLen), output)) = testCase (show i) (output @=? PBKDF2.generate prf (PBKDF2.Parameters iter dkLen) pass salt)++ katTestFastPBKDF2_SHA1 = map toKatTestFastPBKDF2_SHA1 . zip is+ toKatTestFastPBKDF2_SHA1 (i, ((pass, salt, iter, dkLen), output)) =+ testCase (show i) (output @=? PBKDF2.fastPBKDF2_SHA1 (PBKDF2.Parameters iter dkLen) pass salt)++ katTestFastPBKDF2_SHA256 = map toKatTestFastPBKDF2_SHA256 . zip is+ toKatTestFastPBKDF2_SHA256 (i, ((pass, salt, iter, dkLen), output)) =+ testCase (show i) (output @=? PBKDF2.fastPBKDF2_SHA256 (PBKDF2.Parameters iter dkLen) pass salt)++ katTestFastPBKDF2_SHA512 = map toKatTestFastPBKDF2_SHA512 . zip is+ toKatTestFastPBKDF2_SHA512 (i, ((pass, salt, iter, dkLen), output)) =+ testCase (show i) (output @=? PBKDF2.fastPBKDF2_SHA512 (PBKDF2.Parameters iter dkLen) pass salt)+ is :: [Int] is = [1..]
tests/Number.hs view
@@ -42,17 +42,19 @@ in 0 <= r && r < range , testProperty "generate-prime" $ \testDRG (Int0_2901 baseBits') -> let baseBits = baseBits' `mod` 800- bits = 48 + baseBits -- no point generating lower than 48 bits ..+ bits = 5 + baseBits -- generating lower than 5 bits causes an error .. prime = withTestDRG testDRG $ generatePrime bits- -- with small base bits numbers, the probability that we "cross" this bit size ness- -- to the next is quite high, as the number generated has two highest bit set.- --- in bits == numBits prime || (if baseBits < 64 then (bits + 1) == numBits prime else False)+ in bits == numBits prime+ , testProperty "generate-safe-prime" $ \testDRG (Int0_2901 baseBits') ->+ let baseBits = baseBits' `mod` 200+ bits = 6 + baseBits+ prime = withTestDRG testDRG $ generateSafePrime bits+ in bits == numBits prime , testProperty "marshalling" $ \qaInt -> getQAInteger qaInt == os2ip (i2osp (getQAInteger qaInt) :: Bytes) , testGroup "marshalling-kat-to-bytearray" $ map toSerializationKat $ zip [katZero..] serializationVectors , testGroup "marshalling-kat-to-integer" $ map toSerializationKatInteger $ zip [katZero..] serializationVectors- ] + ] where toSerializationKat (i, (sz, n, ba)) = testCase (show i) (ba @=? i2ospOf_ sz n) toSerializationKatInteger (i, (_, n, ba)) = testCase (show i) (n @=? os2ip ba)
tests/Tests.hs view
@@ -16,10 +16,12 @@ import qualified KAT_CMAC import qualified KAT_HMAC import qualified KAT_HKDF+import qualified KAT_Argon2 import qualified KAT_PBKDF2 import qualified KAT_Curve25519-import qualified KAT_Ed448+import qualified KAT_Curve448 import qualified KAT_Ed25519+import qualified KAT_OTP import qualified KAT_PubKey import qualified KAT_Scrypt -- symmetric cipher --------------------@@ -47,14 +49,16 @@ , KAT_HMAC.tests ] , KAT_Curve25519.tests- , KAT_Ed448.tests+ , KAT_Curve448.tests , KAT_Ed25519.tests , KAT_PubKey.tests+ , KAT_OTP.tests , testGroup "KDF" [ KAT_PBKDF2.tests , KAT_Scrypt.tests , BCrypt.tests , KAT_HKDF.tests+ , KAT_Argon2.tests ] , testGroup "block-cipher" [ KAT_AES.tests