{-# LANGUAGE BangPatterns #-}
module Data.ByteString.Base32.Z
( Base32
, encode
, decode
, decodeLenient
, encTable
, decTable
) where
import Data.ByteString as BS
import Data.ByteString.Base32.Internal
import qualified Data.ByteString.Char8 as C8
type Base32 = ByteString
encTable :: EncTable
encTable = C8.pack "ybndrfg8ejkmcpqxot1uwisza345h769"
encode :: ByteString -> Base32
encode = unpack5 encTable
decTable :: ByteString
decTable = BS.pack [
invIx, invIx, invIx, invIx, invIx, invIx, invIx, invIx, invIx, invIx
, invIx, invIx, invIx, invIx, invIx, invIx, invIx, invIx, invIx, invIx
, invIx, invIx, invIx, invIx, invIx, invIx, invIx, invIx, invIx, invIx
, invIx, invIx, invIx, invIx, invIx, invIx, invIx, invIx, invIx, invIx
, invIx, invIx, invIx, invIx, invIx, invIx, invIx, invIx, invIx, 18
, invIx, 25, 26, 27, 30, 29, 7, 31, invIx, invIx
, invIx, invIx, invIx, invIx, invIx, 24, 1, 12, 3, 8
, 5, 6, 28, 21, 9, 10, invIx, 11, 2, 16
, 13, 14, 4, 22, 17, 19, invIx, 20, 15, 0
, 23, invIx, invIx, invIx, invIx, invIx, invIx, 24, 1, 12
, 3, 8, 5, 6, 28, 21, 9, 10, invIx, 11
, 2, 16, 13, 14, 4, 22, 17, 19, invIx, 20
, 15, 0, 23, invIx, invIx, invIx, invIx, invIx, invIx, invIx
, invIx, invIx, invIx, invIx, invIx, invIx, invIx, invIx, invIx, invIx
, invIx, invIx, invIx, invIx, invIx, invIx, invIx, invIx, invIx, invIx
, invIx, invIx, invIx, invIx, invIx, invIx, invIx, invIx, invIx, invIx
, invIx, invIx, invIx, invIx, invIx, invIx, invIx, invIx, invIx, invIx
, invIx, invIx, invIx, invIx, invIx, invIx, invIx, invIx, invIx, invIx
, invIx, invIx, invIx, invIx, invIx, invIx, invIx, invIx, invIx, invIx
, invIx, invIx, invIx, invIx, invIx, invIx, invIx, invIx, invIx, invIx
, invIx, invIx, invIx, invIx, invIx, invIx, invIx, invIx, invIx, invIx
, invIx, invIx, invIx, invIx, invIx, invIx, invIx, invIx, invIx, invIx
, invIx, invIx, invIx, invIx, invIx, invIx, invIx, invIx, invIx, invIx
, invIx, invIx, invIx, invIx, invIx, invIx, invIx, invIx, invIx, invIx
, invIx, invIx, invIx, invIx, invIx, invIx, invIx, invIx, invIx, invIx
, invIx, invIx, invIx, invIx, invIx, invIx
]
decode :: Base32 -> Either String ByteString
decode = pack5 decTable
decodeLenient :: Base32 -> Either String ByteString
decodeLenient = pack5Lenient decTable