úÎ*>)% experimental input blocks output blocks array of input indexes  block length primary blocks (output) secondary blocks array of secondary block ids length of previous  block length k n Return true if the given k and n values are valid (Return a FEC with the given parameters. the number of primary blocks !the total number blocks, must be < 256 1Create a C array of unsigned from an input array DConvert a list of ByteStrings to an array of pointers to their data >Return True iff all the given ByteStrings are the same length 5Run the given function with a pointer to an array of n pointers to  buffers of size size0. Return these buffers as a list of ByteStrings  the number of buffers requested the size of each buffer EGenerate the secondary blocks from a list of the primary blocks. The K primary blocks must be in order and all of the same size. There must be  k primary blocks.  a list of k input blocks (n - k) output blocks 'A sort function for tagged assoc lists 9Reorder the given list so that elements with tag numbers < the first B argument have an index equal to their tag number (if possible) *Recover the primary blocks from a list of k blocks. Each block must be J tagged with its number (see the module comments about block numbering)  a list of k blocks and their index  a list the k primary blocks Break a ByteString into n. parts, equal in length to the original, such  that all n; are required to reconstruct the original, but having less  than n1 parts reveals no information about the orginal. GThis code works in IO monad because it needs a source of random bytes,  which it gets from devurandom. If this file doesn' t exist an  exception results FNot terribly fast - probably best to do it with short inputs (e.g. an  encryption key) the number of parts requested the data to be split DReverse the operation of secureDivide. The order of the inputs doesn't 0 matter, but they must all be the same length KA utility function which takes an arbitary input and FEC encodes it into a 9 number of blocks. The order the resulting blocks doesn't matter so long $ as you have enough to present to deFEC. -the number of blocks required to reconstruct the total number of blocks the data to divide the resulting blocks Reverses the operation of enFEC. /the number of blocks required (matches call to enFEC) ,the total number of blocks (matches call to enFEC) "a list of k, or more, blocks from enFEC      fec-0.1 Codec.FEC FECParamsfecencodedecode secureDivide secureCombineenFECdeFEC_decode_encode_free_newCFEC isValidConfig uintCArraybyteStringsToArrayallByteStringsSameLengthcreateByteStringArray sortTaggedreorderPrimaryBlocks