dz      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvw x y z { | } ~        !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^ _ ` a b c d e f g h i j k l m n o p q r s t u v w x y z { |}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~.None059;<=  !"#$%&'()* !" !"  !"#$%&'()*None059;<= 0123456789:;01230123 0123456789:;None059;<= ABCDEFGHIJKLABCDABCD ABCDEFGHIJKLNone059;<= RSTUVWXYZ[\]^RSTUVRSTUV RSTUVWXYZ[\]^None059;<= defghijklmnodefgdefg defghijklmnoNone059;<=uvuvuvuv NoneIwTurns a  g into a standard .x Evaluate a . computation using a cryptographic generator gN, seeded by system entropy. Note that the updated generator is not returned.wxywxwxwxy None +9:;DRT{KConversion between Haskell types and their protocol buffer representations.|The protocol buffer type for a.}:Convert from a type to its protocol buffer representation.~.Convert from a protocol buffer representation.0Serialize a Haskell type to its protocol buffer .Read a protocol buffer  to a Haskell type.{|}~{|}~{|}~{|}~None%&)*,9;<=QRTSane synonym for .Sane synonym for .Sane synonym for .Sane synonym for .Sane synonym for .Sane synonym for .Convenient synonym for ( a,  a)Sane synonym for .Sane synonym for .Sane synonym for .Sane synonym for .Sane synonym for .Sane synonym for .Sane synonym for .Sane synonym for .Sane synonym for .Sane synonym for .Sane synonym for .Sane synonym for .The Prelude definition of .The Prelude definition of .The sane definition of  from  rather than the default from NumericPrelude.The hidden NP function from Algebra.ToRational.BOur custom exponentiation, overriding NP's version that requires  exponent. Copied from Jhttp://hackage.haskell.org/package/base-4.7.0.0/docs/src/GHC-Real.html#%5E Inverse of a modulo q , in range [0,q-1]'. (Argument order is infix-friendly.)XDecompose an element into a list of "centered" digits with respect to relative radices.3Deterministically round to the nearest multiple of  i .<Randomly round to the nearest larger or smaller multiple of  i 1, where the round-off term has expectation zero. Variant of  !) in which the remainder is in the range  [-b/2,b/2). dividend adivisor b(quotient, remainder)       !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~"None),/59:;<=DIRT9Newtype wrapper (with slightly different instances) for Number.Complex.@Rounds the real and imaginary components to the nearest integer. t/ is a complex value with magnitude 1 and phase t \bmod 2\cdot\pi).#Real component of a complex number.(Imaginary component of a complex number.:Embeds a scalar as the real component of a complex number.Custom instance replacing the one provided by numeric prelude: it always returns 0 as the remainder of a division. (The NP instance sometimes has precision issues, because it yields nonzero remainders, which is a problem for divG methods.) #None%&)*+,-DORT Convert a  to an integral type.Kind-restricted synonym for .Kind-restricted synonym for .Convert an integral type to a . Convert a  to an integral type.Convert an integral type to a .Reify a  as a singleton.Reify a  for a  constraint.Reify a  as a singleton.Reify a  for a  constraint. Template Haskell splice for the  type representing a given *, e.g.,  $(posType 8). Template Haskell splice for the  type representing a given *, e.g.,  $(binType 89).)Template Haskell splice that defines the  type synonym Pn.)Template Haskell splice that defines the  type synonym Bn.6Template Haskell splice that declares a type synonym <pfx>n as the type f n.;Infinite list of primes, built using Sieve of Erastothenes.Search for the argument in . This is not particularly fast, but works well enough for moderate-sized numbers that would appear as (divisors of) cyclotomic indices of interest.X     pfx f n 2    ?     $None,      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWX          !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWX      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWX%None%&*+,-DOQRT;oType synonym for (prime, exponent) pair.p&Constraint synonym for coprimality of  types.q'Constraint synonym for divisibility of  types.rKind-restricted synonym for .sKind-restricted synonym for .tKind-restricted synonym for .u,Type (family) synonym for multiplication of  types.v&Type (family) synonym for division of  types.xReify a  as a singleton.yReify a  for a t constraint.zReify a  as a singleton.{Reify a  for a s constraint.|Reify a  as a singleton.}Reify a  for a r constraint.~:Entails constraint for transitivity of division, i.e. if  k \mid l  and  l \mid m , then  k \mid m .(Entailment for divisibility by GCD: if  g=\gcd(m_1,m_2)  then  g \mid m_1  and  g \mid m_2 .%Entailment for LCM divisibility: if  l=\lcm(m_1,m_2)  then  m_1 \mid l  and  m_2 \mid l .=Entailment for LCM divisibility: the LCM of two divisors of  m  also divides  m .Entailment for  p -free division: if  f  is m  after removing all  p -factors, then  f \mid m  and  \gcd(f,p)=1 .Entailment for  p -free division: if  m \mid m' , then ) \text{p-free}(m) \mid \text{p-free}(m') . Conversion. Reflect a  type to a o value.2Value-level prime-power factorization tagged by a  type.The value of a  type.The value of a  type.The totient of a  type's value.The "hat" of a  type's value: _ \hat{m} = \begin{cases} m & \mbox{if } m \text{ is odd} \\ m/2 & \text{otherwise} \end{cases} .-The radical (product of prime divisors) of a  type.5The odd radical (product of odd prime divisors) of a  type.The value of a . Totient of a . The hat of a .The radical of a .The odd radical of a .!Reflect the prime component of a  type.$Reflect the exponent component of a  type.The value of a  type.The totient of a  type's value.The "hat" of a  type's value:  p^e  if  p  is odd,  2^{e-1}  otherwise.The radical of a  type's value.The odd radical of a  type's value.  Product of values of individual os"Product of totients of individual os"Product of radicals of individual os&Product of odd radicals of individual osThe value of a prime power.Totient of a prime power.The "hat" of a prime power:  p^e  if  p  is odd,  2^{e-1}  otherwise.The radical of a prime power.!The odd radical of a prime power.Return  m  if  m  is odd, and  m/2  otherwise. Template Haskell splice for the ? type corresponding to a given positive prime integer. (Uses  to enforce primality of the base, so should only be used on small-to-moderate-sized arguments.) This is the preferred (and only) way of constructing a concrete ! type (and is used to define the Primep type synonyms). Template Haskell splice for the  type corresponding to a given o . (Calls  on the first component of its argument, so should only be used on small-to-moderate-sized numbers.) This is the preferred (and only) way of constructing a concrete  type. Template Haskell splice for the u type corresponding to a given positive integer. Factors its argument using a naive trial-division algorithm with o, so should only be used on small-to-moderate-sized arguments (any reasonable cyclotomic index should be OK).)Template Haskell splice that defines the  type synonym Primep for a positive prime integer  p .)Template Haskell splice that defines the  type synonym PPn, where  n=p^e .)Template Haskell splice that defines the  type synonym Fn for a positive integer n.Factorize a positive integer into an ordered list of its prime divisors, with possible duplicates. First argument is infinite list of primes left to consider.kFactorize a positive integer into a list of (prime,exponent) pairs, in strictly increasing order by prime.?  !"#$%&'()*+YZ[,-./01\]^_23456789:;<=>?@ABCDEFGHIJKL`aMNOPbcQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~defghijk      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~lmnopqrstuvwxyz{|}~ $     K      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~  !"#$%&'()*+YZ[,-./01\]^_23456789:;<=>?@ABCDEFGHI`aMNOPLKJbcQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~defghijk      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~lmnopqrstuvwxyz{|}~ None,L      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-.  K         !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-.Yr|}Zsz{[txymelfnd `_ a^ ] \bcuiqjvghpkw~o XWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!      ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!      ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!      .-,+*)('&%$#"!            !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-.None)*+,/9:;<=?DIOQRT!1Represents that the target ring can "noisily encode" values from the source ring, in either "most significant digit" (MSD) or "least significant digit" (LSD) encodings, and provides conversion factors between the two types of encodings.2The factor that converts an element from LSD to MSD encoding in the target field, with associated scale factor to apply to correct the resulting encoded value.3Represents that a can be rescaled to b-, as an "approximate" additive homomorphism.5Fun-dep version of Lift.7The type of representatives of b.8Represents that b can be lifted to a "short" a congruent to b.9Represents that b is a quotient group of a.;Represents that a is a subgroup of b.=0Represents a quotient group modulo some integer.@ Poor man's .B4The characteristic of a ring, represented as a type.CInverted entries of 2.D*A default implementation of rescaling for = types.E?Deterministically round to a nearby value in the desired coset.F Version of  with an error message.GApply any applicative to a  value.HExpose the monad of a  value.IHide the monad of a  value.J7Use a singleton as a witness to extract a value from a  value.KTransformer version of J.MEncode for a product ringNRescale up to a product ring of \Z_qsORescale up to a product ring of \Z_qsP"Rescale a (multi-)product ring of \Z_qsQ"Rescale a (multi-)product ring of \Z_qsRRescale a product ring of \Z_qsSRescale a product ring of \Z_qsTReduce into product ring.UProduct ring of \Z_qs as a \Z_q (with  modulus)V+Product ring as an (almost) integral domainW!Product ring as an (almost) fieldXPair as product ringYLift product ring of \Z_qs to -123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ      !"#$%&'()*+,-./012345  6789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~K                   !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-.123456789:;<=>?@ABCDEFGHIJK?@A=>?;<9:78563412CBDEFGHIJK#123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ None*+,9:;<=DLRT^&Error correction relative to a gadget._4Error-correct a "noisy" encoding of an element (see e7), returning the encoded element and the error vector.`#Decomposition relative to a gadget.aThe ring that u decomposes over.bYield a short vector  x  such that  \langle g, x\rangle = u .cGadget) vectors, parameterized by an index type.dThe gadget vector over u.eYield an error-tolerant encoding of an element with respect to the gadget. (Mathematically, this should just be the product of the input with the gadget, but it is a class method to allow for optimized implementations.)f#Dummy type representing the gadget  [1,b,b^2,\ldots] .g#Dummy type representing the gadget  [1] .hAlternative to b.iDecompose a list entry-wise.jDecompose a matrix entry-wise.k Product ringl<Product ring: concatenate decompositions for component ringsm6Product ring: concatenate gadgets over component rings^_`abcdefghijklm ^_`abcedfghij cde`ab^_hijgf ^_`abcdefghijklm&None)T Using polar form of Box-Muller transform, returns a pair of centered, Gaussian-distributed real numbers with scaled variance svar = true variance * (2*pi). See < Thttp://www.alpheratz.net/murison/Maple/GaussianDistribution/GaussianDistribution.pdf this link> for details.  Generate n0 real, independent gaussians of scaled variance svar = true variance * (2*pi). |Execute an action repeatedly until its result fails to satisfy a predicate, and return that result (discarding all others).  Analogue of ('()0 Yields the result of applying f until p holds.        None +,9:;<=DTnReflection without fundep, and with tagged value. Intended only for low-level code; build specialized wrappers around it for specific functionality.o)Reflect the value assiated with the type a.nopqrstnononopqrst)None*,234:<=DEIRT /Indexed Zip Vector: a wrapper around a (boxed)   that has zip-py   behavior, analogous to *+ for lists. The index m9 enforces proper lengths (and is necessary to implement  ).  Deconstructor VSmart constructor that checks whether length of input is right (should be totient of m). Unzip an IZipVector.                    ,None%&)*,9:;<=DEIOQRT *a DSL for tensor transforms on Repa arrays | identity sentinel &| (function) composition of transforms 3Indexed newtype for 1-dimensional Unbox repa arrays An   filled with the argument. !Monadic version of  . "ZFor a factored index, tensors up any function defined for (and tagged by) any prime power #YFor a prime power p^e, tensors up any function f defined for (and tagged by) a prime to I_(p^{e-1}) otimes f $-Returns the (linear) dimension of a transform %#smart constructor from a Tensorable &compose transforms '!tensor/Kronecker product (otimes) (ACreates an evaluatable Haskell function from a tensored transform )Monadic version of  ( *~maps the innermost dimension to a 2-dim array with innermost dim d, for performing a I_l otimes f_d otimes I_r transformation +inverse of expose ,6general matrix multiplication along innermost dim of v -7multiplication by a diagonal matrix along innermost dim .eEmbeds a scalar into a powerful-basis representation of a Repa array, tagged by the cyclotomic index /+Forces a delayed array to a manifest array. 05Sum the inner-most dimension of an array sequentially 1.Sum all array indices to a scalar sequentially"    2 3 4  5 ! " # 6 $ % & ' 7 ( ) * + , - . / 0 1 8 9 : ; < = > ? @ A B C D E F G H I J K L M N O P Q R S T U V W X Y Z [ \ ] ^ _ ` a b c d e f g h i j k l m n o p q r s t u v w x y z { | } ~     5 ! " # $ % & ' ( ) , - . / 0 1    2 3 4  5 ! " # 6 $ % & ' 7 ( ) * + , - . / 0 1 8 9 : ; < =-None %&)*:<=OT Arbitrary-index LQ transform, which converts from decoding-basis to powerful-basis representation. Arbitrary-index L^{ -1 }Q transform, which converts from powerful-basis to decoding-basis representation. "Arbitrary-index multiplication by g_m in the powerful basis. "Arbitrary-index multiplication by g_m in the decoding basis. Arbitrary-index division by g_m! in the powerful basis. Outputs ,* if the input is not evenly divisible by g_m. Warning: not constant time! Arbitrary-index division by g_m! in the decoding basis. Outputs ,) if the input is no evenly divisible by g_m. Warning: not constant time! hThis is not a constant-time algorithm! Depending on its usage, it might provide a timing side-channel.   .None)*:T Given v=r^2P, yields the decoding-basis coefficients of a sample from the tweaked Gaussian  t_m cdot D_r. The E_m! transformation for an arbitrary m. The E_p transformation for a prime p. Given coefficient tensor e( with respect to the decoding basis of R%, yield the (scaled) squared norm of  g_m cdot e+ under the canonical embedding, namely, /hat{m}^{ -1 } cdot || sigma(g_m -- cdot e) ||^2 .  Multiply by hat{m}- times the Gram matrix of decoding basis of R^vee. GMultiply by (scaled) Gram matrix of decoding basis: (I_{p-1} + all-1s).   None<=uRepresents cyclotomic rings that are rescalable over their base rings. (This is a class because it allows for more efficient specialized implementations.)vRescale in the given basis.w?Represents the basis used to rescale a cyclotomic ring element.z"Specialized convenience functions.{"Specialized convenience functions.uvwxyz{uvwyxz{wxyuvz{uvwxyz{None )+9:;<=DRT|,A ring with a ring embedding into some ring } r0 that has an invertible CRT transformation for every positive index m.~ Embeds from r to } rProjects from } r to raA ring that (possibly) supports invertible Chinese remainder transformations of various indices.The values of  for different indices m- should be consistent, in the sense that if \omega_m,  \omega_{m'} are respectively mth, m'th roots of unity where m divides m'#, then it should be the case that \omega_{m'}^{m'/m}=\omega_m. for a given index mn. The method itself may be slow, but the function it returns should be fast, e.g., via internal memoization.^Information that characterizes the (invertible) Chinese remainder transformation over a ring R (represented by the type r ), namely: a function that returns the ith power of some  principal m'th root of unity (for any integer i)the multiplicative inverse of  \hat{m}\in R. Embeds into the complex numbers \C(. (May not have sufficient precision.) Embeds into the complex numbers \C. Embeds into the complex numbers \C. Embeds into the complex numbers \C.Returns ,Returns ,Returns ,Returns , Self-embedComplex numbers have  for any index m Product ring Product ring|}~ |}~|}~|}~ None)*+,-:<=DEIRT "Convenience data type for writing  instances.Represents fields over which we can get irreducible polynomials of desired degrees. (An instance of this class is defined in !Crypto.Lol.Types.IrreducibleChar2 and exported from Crypto.Lol.Types.)=This wrapper for a list of coefficients is used to define a \F_{p^d}#-module structure for tensors over \F_p of dimension n, where d \mid n.&Constraint synonym for a finite field.%Constraint synonym for a prime field.$A finite field of given degree over \F_p.Yield a list of length exactly d* (i.e., including trailing zeros) of the \F_p.-coefficients with respect to the power basis."Yield a field element given up to d/ coefficients with respect to the power basis.The order of the field: size (GF fp d) =  p^d Trace into the prime subfield. #Traces of the power basis elements \{1, x, x^2, \ldots, x^{d-1}\}.!Convenience function for writing  instances.        None*+,:<=DLOQRT=2A Kronecker product of zero of more matrices over r.Y encapsulates all the core linear transformations needed for cyclotomic ring arithmetic. The type t m r6 represents a cyclotomic coefficient tensor of index m over base ring r. Most of the methods represent linear transforms corresponding to operations in particular bases. CRT-related methods are wrapped in +K because they are well-defined only when a CRT basis exists over the ring r for index m._The superclass constraints are for convenience, to ensure that we can sample error tensors of (s.WARNING:5 as with all fixed-point arithmetic, the methods in  may result in overflow (and thereby incorrect answers and potential security flaws) if the input arguments are too close to the bounds imposed by the base type. The acceptable range of inputs for each method is determined by the linear transform it implements.Constraints needed by t to hold type r.-Properties that hold for any index. Use with .5Holds for any (legal) fully-applied tensor. Use with .5Holds for any (legal) fully-applied tensor. Use with .5Holds for any (legal) fully-applied tensor. Use with .5Holds for any (legal) fully-applied tensor. Use with .5Holds for any (legal) fully-applied tensor. Use with .5Holds for any (legal) fully-applied tensor. Use with .3Convert a scalar to a tensor in the powerful basis.P converts from decoding-basis representation to powerful-basis representation;  is its inverse.P converts from decoding-basis representation to powerful-basis representation;  is its inverse. Multiply by g_m in the powerful/decoding basis Multiply by g_m in the powerful/decoding basis Divide by g_m& in the powerful/decoding basis. The +j output indicates that the operation may fail, which happens exactly when the input is not divisible by g_m. Divide by g_m& in the powerful/decoding basis. The +j output indicates that the operation may fail, which happens exactly when the input is not divisible by g_m.FA tuple of all the operations relating to the CRT basis, in a single + value for safety. Clients should typically not use this method directly, but instead call the corresponding top-level functions: the elements of the tuple correpond to the functions , , , , .6Sample from the "tweaked" Gaussian error distribution t\cdot D in the decoding basis, where D has scaled variance v. Given the coefficient tensor of e( with respect to the decoding basis of R&, yield the (scaled) squared norm of  g_m \cdot e) under the canonical embedding, namely, .\hat{m}^{-1} \cdot \| \sigma(g_m \cdot e) \|^2.The twaceS linear transformation, which is the same in both the powerful and decoding bases.The embed> linear transformations, for the powerful and decoding bases.The embed> linear transformations, for the powerful and decoding bases.A tuple of all the extension-related operations involving the CRT bases, for safety. Clients should typically not use this method directly, but instead call the corresponding top-level functions: the elements of the tuple correpond to the functions , .BMap a tensor in the powerful/decoding/CRT basis, representing an \O_{m'}/ element, to a vector of tensors representing \O_m$ elements in the same kind of basis.7The powerful extension basis w.r.t. the powerful basis.'A list of tensors representing the mod-p CRT set of the extension.!Potentially optimized version of   for types that satisfy .5Potentially optimized zipWith for types that satisfy .3Potentially optimized unzip for types that satisfy .%Convenience value indicating whether  exists.cYield a tensor for a scalar in the CRT basis. (This function is simply an appropriate entry from .) Multiply by g_mG in the CRT basis. (This function is simply an appropriate entry from .) Divide by g_mH in the CRT basis. (This function is simply an appropriate entry from .)HThe CRT transform. (This function is simply an appropriate entry from .)PThe inverse CRT transform. (This function is simply an appropriate entry from .)SThe "tweaked trace" function for tensors in the CRT basis: For cyclotomic indices  m \mid m', 5\Tw(x) = (\hat{m}/\hat{m}') \cdot \Tr((g'/g) \cdot x)6. (This function is simply an appropriate entry from .)Embed a tensor with index m* in the CRT basis to a tensor with index m'G in the CRT basis. (This function is simply an appropriate entry from .) For a prime power p^e, converts any matrix M for prime p to \vece{1}_(p^{e-1}) \otimes M, where \vece{1} denotes the all-1s vector. Extract the (i,j) element of a .A  \varphi(m)(-by-1 matrix of the CRT coefficients of g_m, for mth cyclotomic.A  \varphi(m)0-by-1 matrix of the inverse CRT coefficients of g_m, for mth cyclotomic.The "tweaked" \CRT^* matrix: %\CRT^* \cdot \text{diag}(\sigma(g_m)). The "tweaked" \CRT^* matrix (for prime powers): %\CRT^* \cdot \text{diag}(\sigma(g_p)). A (p-1)(-by-1 matrix of the CRT coefficients of g_p, for pth cyclotomic. A (p-1)0-by-1 matrix of the inverse CRT coefficients of g_p , for the pth cyclotomic.1Base-(p) digit reversal; input and output are in [p^e]. Convert a \Z_m^*# index to a linear tensor index in [m]. For a prime power p^e1, map a tensor index to the corresponding power j \in [\varphi(p^e)], as in the powerful basis. For a prime power p^e3, map a tensor index to the corresponding element i \in \Z_{p^e}^*.  Convert a \Z_m^* index to a linear tensor index.  Inverse of  . <Correspondences between the linear indexes into a basis of \O_{m'}*, and pair indices into (extension basis) \otimes (basis of \O_m). The work the same for Pow, Dec, and CRT bases because all these bases have that factorization. The first argument is the list of (\varphi(m),\varphi(m'))) pairs for the (merged) prime powers of m,(m').qA collection of useful information for working with tensor extensions. The first component is a list of triples (p,e,e') where e, e') are respectively the exponents of prime p in m, m'. The next two components are  \varphi(m) and  \varphi(m')!. The final component is a pair ! ( \varphi(p^e), \varphi(p^{e'}))) for each triple in the first component. A vector of  \varphi(m) entries, where the i;th entry is the index into the powerful/decoding basis of \O_{m'} of the i+th entry of the powerful/decoding basis of \O_m. A vector of  \varphi(m) blocks of \varphi(m')/\varphi(m)T consecutive entries. Each block contains all those indices into the CRT basis of \O_{m'}A that "lie above" the corresponding index into the CRT basis of \O_m.A lookup table for   applied to indices  [\varphi(m')].A lookup table for   applied to indices  [\varphi(m')].Same as 7, but only includes the second component of each pair.The i_0th entry of the i_1th vector is    (i_1,i_0). Convenient reindexing functionsMaps an index of the extension ring array to its corresponding index in the base ring array (if it exists), with sign, under the decoding basis.J          33+           /None +:<=DQRT                           0None %&*:<=T 4Embeds a scalar into the CRT basis (when it exists).  Multiply by g_m# in the CRT basis (when it exists).  Divide by g# in the CRT basis (when it exists). The coefficient vector of g# in the CRT basis (when it exists). The coefficient vector of g^{ -1 }# in the CRT basis (when it exists). XThe Chinese Remainder Transform. Exists if and only if CRT exists for all prime powers. `The inverse Chinese Remainder Transform. Exists if and only if CRT exists for all prime powers.            ! " # $ % & '                   ! " # $ % & 'None )+9;DRT ( ) * ( ) *None:DR)Represents integers modulo a prime power.8An implementation of the integers modulo the prime base.&The prime and exponent of the modulus. Lift from \Z_p to a representative.None%&)*+,-9:;<=DOQRT.Convenient synonym for  +-able element type.1Constraints needed for CRT-related operations on  data.%Represents a cyclotomic ring such as  \Z[\zeta_m],  \Z_q[\zeta_m], and  \Q(\zeta_m)! in an explicit representation: t is the ( type for storing coefficient tensors; m is the cyclotomic index; rep is the representation (, , or ); r- is the base ring of the coefficients (e.g., \Z, \Z_q).The  ,  ,  , and  -? instances all work coefficient-wise (in the specified basis).'Convenient synonym for random sampling.1Convenient synonym for either CRT representation.KNullary index type representing the CRT basis over extension of base ring.=Nullary index type representing the CRT basis over base ring.3Nullary index type representing the decoding basis.3Nullary index type representing the powerful basis."Embed a scalar from the base ring."Embed a scalar from the base ring.1Type-restricted (and potentially more efficient)  $ for powerful-basis representation.1Type-restricted (and potentially more efficient)  $ for decoding-basis representation.Unzip in the powerful basis.Unzip in the decoding basis.GUnzip in the CRT basis over the base ring. The output components are 3/ because each target base ring may not support .XUnzip in the CRT basis over the extension of the base ring. The output components are 31 because each target base might instead support . Multiply by the special element g_m.Divide by the special element g_m. WARNING: this implementation is not a constant-time algorithm, so information about the argument may be leaked through a timing channel. Similar to . Similar to .!Yield the scaled squared norm of  g_m \cdot e* under the canonical embedding, namely, .\hat{m}^{-1} \cdot \| \sigma(g_m \cdot e) \|^2 .6Sample from the "tweaked" Gaussian error distribution t\cdot D in the decoding basis, where D has scaled variance v.Generate an LWE error term from the "tweaked" Gaussian with given scaled variance, deterministically rounded using the decoding basis. (Note: This implementation uses (m precision to generate the Gaussian sample, which may not be sufficient for rigorous proof-based security.)MGenerate an LWE error term from the "tweaked" Gaussian with scaled variance  v \cdot p^23, deterministically rounded to the given coset of R_p< using the decoding basis. (Note: This implementation uses (m precision to generate the Gaussian sample, which may not be sufficient for rigorous proof-based security.)5Embed into an extension ring, for the powerful basis.5Embed into an extension ring, for the decoding basis.EEmbed into an extension ring, for the CRT basis. (The output is an 3. because the extension ring might not support .) Similar to . (The output is an 3+ because the extension ring might support , in which case we never use .)-Twace into a subring, for the powerful basis.-Twace into a subring, for the decoding basis.=Twace into a subring, for the CRT basis. (The output is an 3' because the subring might not support .) Similar to . (The output is an 3$ because the subring might support , in which case we never use .) Yield the \O_m-coefficients of an \O_{m'}1-element, with respect to the relative powerful \O_m-basis. Yield the \O_m-coefficients of an \O_{m'}1 element, with respect to the relative decoding \O_m-basis.The relative powerful basis of \O_{m'} / \O_m. The relative mod-(r) CRT set of \O_{m'} / \O_mm, represented with respect to the powerful basis (which seems to be the best choice for typical use cases).)Convert to powerful-basis representation. .Convenient version of  for 3 CRT basis type.)Convert to decoding-basis representation. &Convert to a CRT-basis representation.7apply coefficient-wise (with respect to decoding basis)7apply coefficient-wise (with respect to powerful basis) R_p is an \F_{p^d} -module when d divides  \varphi(m), by applying d -dimensional \F_p-linear transform on d&-dim chunks of powerful basis coeffs.$'only for appropriate CRT representation%3only for appropriate CRT representation (otherwise # would violate internal invariant)Q / 0 1 2 .      !"#$%&'()*+,-( ( M / 0 1 2 .      !"#$%&'()*+,-None%&*+,9:;<=DOQRT*.1Constraints needed for most operations involving / data./%Represents a cyclotomic ring such as  \Z[\zeta_m],  \Z_q[\zeta_m], and  \Q[\zeta_m]! in an explicit representation: t is the ' type for storing coefficient tensors; m is the cyclotomic index; r. is the base ring of the coefficients (e.g., \Z, \Z_q).0Wrap a  as a /.1Wrap a  as a /.2Wrap a  as a /.3Wrap a  as a /.4Wrap a  as a /.5Convenience wrapper.6Convenience wrapper.7:Embed a scalar from the base ring as a cyclotomic element.8 Unwrap a / as a " in powerful-basis representation.9 Unwrap a / as a " in decoding-basis representation.: Unwrap a / as a  in a CRT-basis representation.;Same as =,, but for the powerful-basis representation.<Same as =,, but for the powerful-basis representation.=!Yield an equivalent element that mayS be in a CRT representation. This can serve as an optimization hint. E.g., call =; prior to multiplying the same value by many other values.> Multiply by the special element g of the mth cyclotomic.? Divide by g , returning , if not evenly divisible. WARNING: this implementation is not a constant-time algorithm, so information about the argument may be leaked through a timing channel.@6Sample from the "tweaked" Gaussian error distribution t\cdot D in the decoding basis, where D has scaled variance v.A!Yield the scaled squared norm of  g_m \cdot e* under the canonical embedding, namely, .\hat{m}^{-1} \cdot \| \sigma(g_m \cdot e) \|^2.BGenerate an LWE error term with given scaled variance, deterministically rounded with respect to the decoding basis. (Note: This implementation uses (m precision to generate the Gaussian sample, which may not be sufficient for rigorous proof-based security.)C6Generate an LWE error term with given scaled variance  v \cdot p^2x over the given coset, deterministically rounded with respect to the decoding basis. (Note: This implementation uses (m precision to generate the Gaussian sample, which may not be sufficient for rigorous proof-based security.)D&Embed (lazily) into an extension ring. 3Force to a non- 4% constructor (for internal use only).E&The "tweaked trace" (twace) function 9\Tw(x) = (\hat{m} / \hat{m}') \cdot \Tr((g' / g) \cdot x), which fixes R pointwise (i.e., twace . embed == id).FReturn the given element's coefficient vector with respect to the (relative) powerful/decoding basis of the cyclotomic extension \O_{m'} / \O_m . See also G, H.GSpecialized version of F for powerful basis.HSpecialized version of F for decoding basis.IThe relative powerful basis of \O_{m'} / \O_m.JThe relative mod-r CRT set of the extension.KLift using the specified basis.LLift using the powerful basis.MLift using the decoding basis.NUnzip for a pair base ring. 5?Force to powerful-basis representation (for internal use only). 6?Force to decoding-basis representation (for internal use only). 76Force to a CRT representation (for internal use only).SCpromoted from base ring, using the decoding basis for best geometryTCpromoted from base ring, using the powerful basis for best geometryUpromoted from base ringV*specialized instance for product rings of \Z_qs: ~2x faster algorithmYR_p is an \F_{p^d} -module when d divides  \varphi(m), by applying d -dimensional \F_p-linear transform on d&-dim chunks of powerful basis coeffs.;./ 8 9 : ; 40123456789:;<=>?@ABCD 3EFGHIJKLMN < = 5 6 7OPQRSTUVWXYZ[\]"./0123456789:;<=>?@ABCDEFGHIJKLMN"/.7012345689:N>?AKLM;<=@BCDEFGHIJ6./ 8 9 : ; 40123456789:;<=>?@ABCD 3EFGHIJKLMN < = 5 6 7OPQRSTUVWXYZ[\]None*,/:<=DEIQRT^QA convenient constraint synonym for extending a linear function to larger rings._An E-linear function from R to S.` Construct an E8-linear function given a list of its output values (in S$) on the relative decoding basis of R/EM. The number of elements in the list must not exceed the size of the basis.a1Evaluates the given linear function on the input.b Extend an E-linear function R\to S to an E'-linear function R'\to S'1. (Mathematically, such extension only requires \lcm(r,e') | r' (not equality), but this generality would significantly complicate the implementation, and for our purposes there's no reason to use any larger r'.)c7lifts with respect to powerful basis, for best geometry ^_ >`abcde^_`ab_^`ab^_ >`abcdeNone)*:<=Tg4Common constraints for working with continuous RLWE.hA continuous RLWE sample  (a,b) \in R_q \times K/(qR). (The second component is a  because the base type rrq representing \R/(q\Z)I, is an additive group but not a ring, so we can't usefully work with a / over it.)iCA continuous RLWE sample with the given scaled variance and secret.j=The error term of an RLWE sample, given the purported secret.kThe B of the error term of an RLWE sample, given the purported secret.lA bound such that the % of a continuous error generated by  with scaled variance v (over the mTth cyclotomic field) is less than the bound except with probability approximately \epsilon.ghijklthe scaled variance\epsilonghijklhgijklghijklNone)*:<=Tm2Common constraints for working with discrete RLWE.nA discrete RLWE sample  (a,b) \in R_q \times R_q.oAA discrete RLWE sample with the given scaled variance and secret.p=The error term of an RLWE sample, given the purported secret.qThe AB of the error term of an RLWE sample, given the purported secret.rA bound such that the A+ of a discretized error term generated by B with scaled variance v (over the mSth cyclotomic field) is less than the bound except with probability approximately \epsilon.mnopqrthe scaled variance\epsilonmnopqrnmopqrmnopqrNone)*+,9:;<=DEIRTs The ring \Z_q of integers modulo q!, using underlying integer type z. ?Yield a  principal mth root of unity \omega_m \in \Z_q^*. The implementation requires q3 to be prime. It works by finding a generator of \Z_q^* and raising it to the  (q-1)/m4 power. Therefore, outputs for different values of m are consistent, i.e., \omega_{m'}^(m'/m) = \omega_m. @ The base-(b) gadget for modulus q$, over integers (not mod anything). ASYield the error vector for a noisy multiple of the gadget (all over the integers). Embeds into the complex numbers  \C .'s B C Dt E F ? G H @ Amodulus qbase b input vector v = s cdot g^t + eerror euvw I Jxyz{|}~stst$s Bt E F ? G H @ Auvw I C J Dxyz{|}~None)*+9:;<=DIRT The ring \R/(q\Z) of reals modulo q", using underlying floating type r. K L M N O P Q  K N O P L Q M1None*+,9:;<=DQRT RDClass to safely match Haskell types with the appropriate C function. SEquivalent to Tensors crt. TEquivalent to Tensors crtInv. UEquivalent to Tensors  tGaussianDec. VEquivalent to Tensors l. WEquivalent to Tensors lInv. XEquivalent to Tensors  gSqNormDec. YEquivalent to Tensors mulGPow. ZEquivalent to Tensors mulGDec. [Equivalent to Tensors divGPow. \Equivalent to Tensors divGDec. ]Equivalent to  zipWith (*) ^Single-argument synonym for  Dispatch'. _"C representation of a prime power. `>Convert a list of prime powers to a suitable C representation. aDEvaluates a C function that takes an "a** ptr" on a list of Vectors.D R S T U V W X Y Z [ \ ] ^ b c d e f g h i j k l m _ n o p q r s t u v w x y z { | } ~  ` a  ] \ [ Z Y X W V U T S ^ _ ` a6 R S T U V W X Y Z [ \ ] ^ b c d e f g h i j k l m _ n o p q r s t u v w x y z { | } ~  ` a 2None)*+,:<=DQRT The multiplicative order of p (the argument) modulo m . Requires  \gcd(p,m)=1. Given p', returns a partition of the cosets of \Z_{m'}^* / <p>y (specified by representatives), where the cosets in each component are in bijective correspondence with the cosets of  \Z_m^* / <p>, under the natural ((bmod m)) homomorphism.   3None)*+,:<=DQRT O(n)5 Yield the vector obtained by replacing each element i of the index vector by xs i. This is equivalent to   (xs ) is# but is often much more efficient. 3backpermute <a,b,c,d> <0,3,2,3,1,0> = <a,d,c,d,b,a> Embeds an vector in the powerful basis of the the mth cyclotomic ring to an vector in the powerful basis of the m'th cyclotomic ring when m | m' Embeds an vector in the decoding basis of the the mth cyclotomic ring to an vector in the decoding basis of the m'th cyclotomic ring when m | m' Embeds an vector in the CRT basis of the the mth cyclotomic ring to an vector in the CRT basis of the m'th cyclotomic ring when m | m' maps a vector in the powerful/decoding basis, representing an O_m' element, to a vector of arrays representing O_m elements in the same type of basis The "tweaked trace" function in either the powerful or decoding basis of the m'th cyclotomic ring to the mth cyclotomic ring when m | m'. wThe powerful extension basis, wrt the powerful basis. Outputs a list of vectors in O_m' that are an O_m basis for O_m' KA list of vectors representing the mod-p CRT set of the extension O_m'/O_m is index vector (of length n)xs value vector  None%&)*+,-/9:;<=DEILOQRTAn implementation of  backed by C++ code.  Newtype wrapper around a Vector. Useful coersion for defining coeffs in the Tensor interface. Using  * alone is insufficient for type inference. Useful coersion for defining  powBasisPow and  crtSetDec in the Tensor interface. Using  * alone is insufficient for type inference.1  -   4None*+,9:;<=DQRT The "tweaked trace" function in either the powerful or decoding basis of the m'th cyclotomic ring to the mth cyclotomic ring when m | m'. lThe "tweaked trace" function in the CRT basis of the m'th cyclotomic ring to the mth cyclotomic ring when m | m'. Embeds an array in the powerful basis of the the mth cyclotomic ring to an array in the powerful basis of the m'th cyclotomic ring when m | m' Embeds an array in the decoding basis of the the mth cyclotomic ring to an array in the decoding basis of the m'th cyclotomic ring when m | m' Embeds an array in the CRT basis of the the mth cyclotomic ring to an array in the CRT basis of the m'th cyclotomic ring when m | m' maps an array in the powerful/decoding basis, representing an O_m' element, to an array of arrays representing O_m elements in the same type of basis vThe powerful extension basis, wrt the powerful basis. Outputs a list of arrays in O_m' that are an O_m basis for O_m' JA list of arrays representing the mod-p CRT set of the extension O_m'/O_m    None%&)*+,/9:;<=DEQRTAn implementation of  backed by repa.  5Nonewxst6None2      !"#$%&'()*+,-./012345  6789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~K                   !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-.123456789:;<=>?@ABCDEFGHIJK^_`abcedfghijuvwyxz{./0123456789:;<=>?@ABCDEFGHIJKLMN^_`abNone*:<=T)Common constraints for working with RLWR.An RLWR sample  (a,b) \in R_q \times R_p.%An RLWR sample with the given secret.The b( component of an RLWR sample for secret s and given a, produced by rounding a\cdot s in the decoding basis. 789#:#;#<#=#>#?#@#A#B%C%D%E%F%G%H%I%J%K%L%M%N%O%P%Q%R%S%TUVWXYZ[[\]^_`abcdefghijkllmnopqrstuvwxyz{||mn}~\]^mn    """"""###################################$$$$$$$$$$$$$$$$ $ $ $ $ $$$$$$$$$$$$$$$$$$$ $!$"$#$$$%$&$'$($)$*$+$,$-$.$/$0$1$2$3$4$5$6$7$8$9$:$;$<$=$>$?$@$A$B$C$D$E$F$G$H$I$J$K$L$M$N$O$P$Q$R$S$T$U$V$W$X$Y$Z$[$\$]$^$_$`$a$b$c$d$e$f$g$h$i$j$k$l$m$n$o$p$q$r$s$t$u$v$w$x$y$z${$|$}$~$$$$$$$$$$$@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~                                    !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdef g#"$%hij,-./klmnopqrstuvwxyz{|}~     7  777777 7 7 7777 7!7"7#7$7%7&7'7(7)*+,7 -7 .7 /7 07 17 27 37 4567897:;7:<7:=7>?7>@7>A7>B7CD7CE7CF7CG7CH7CI7CJ7CK7CL7MN7MOPQPRPSPTPUPVPW7 X7 Y7 ZP[P\P]P^P_7`a7`b7`c7d7e7f7g7h7i7j7k7l7m7n7o7p7qr7qs7tu7Cv7Cw7Cx7Cy7Cz7C{7C|7C}7C~77t7t7`77777:7:77>7>7>7>7>777777777777777777777777777777 7 (7 7 7 7 7 7 7 77      !     """"""""XY########### #!#"###$#%#&#'#(#)#*#+#,#-#.#/#0#1#2#3#4#5#6#7#8#9#:#;#<#=#>#?#@#A%B%C%D%E%F%G%H%%%I%J%K%L%M%N%O%P%Q%R%S%T%U%V%W%X%Y%Z%[%\%]%%^%_%`%a%b%c%d%e%f%g%h%i%j%k%l%m%n%o%p%q%r%s%t%u%v%w%x%y%z%{%|%}%~%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % % % % %%%%%%%%%%%%%%%%%%% %!%"%#%$%%%&%'%(%)%*%+%,%-%.%/%0%1%2%3%4%5%6%7%8%9%:%;%<%=%>%?%@%A%B%C%D%E%F%G%H%I%J%K%L%M%N%O%P%Q%R%S%T%U%V%W%X%Y%Z%[%\%]%^%_%`%a%b%c%d%e%f%g%h%i%j%k%l%m%n%o%p%q%r%s%t%u%v%w%x%y%z%{%|%}%~%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % % % % % % % % % % % % % % % % % % % % % % % % % % % % % 7    ! " # $7 % &7 % '7 % '7 % (7 % (  )  *  +  ,  -  .  /  0  1  2  3  4  5  6  7  8  9  :  ;  <   =   >  ?& @& A& B& C) D E F G7  H7 I) J) K) L) D) M) N) O, P, Q, R, S, M, T, U, V, W, X, Y, Z, [, \, ], ^, _, `, a, b, c, d, e, f, f, S, g, h, i, j, k, l, m, n o p q o p r o p s o p t o p u o p v o w o w o w x o w y o w z o w { o | } o ~  o ~ o ~ o ~ o ~ o ~ o ~ o ~ o ~ o ~ o ~ o ~ o ~ o ~ o ~ o ~ o o o o o o o o o o  o o o o o o o o o o o o o o o o o  o  o o o  o o o  o  o  o o o o o o o  o o  o  o  o  o  o  o ~ o  o  o  o o o o o  o  o o o o o o o o o o o o o o  o o o o o  o  o  o  o  o  o  o o o o o o o o  o  o  o  o  o  o  o  o  o  o  o  o   o  o  o  o  o  o  o o o o o o  o  E  - - - - - - - - - - - - - - - . !. ". #. $. %. & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? @ A B C D E/ F/ F/ G/ G/ H/ I/ J/ K/ L/ M/ N/ O/ P/ Q0 R0 S0 T0 U0 V0 W0 X0 Y0 Z0 [0 \0 ]0 ^0 _0 `0 a0 b0 c0 d e f g h i7C j7M k l m n o p q r s t u v w x y z { | } ~            1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 7 2 2 2 3 E E 3 3 3 3 3 3 3 3 3                     $     M T a   Y U V4 4 4 4 4 4 4 4 4 4 4 4 4444 4 4 4       !lol-0.5.0.0-91zymeiirRYX0GYjhGCwpCrypto.Lol.PreludeCrypto.Lol.FactoredCrypto.Proto.RLWE.RqCrypto.Proto.RLWE.SampleDiscCrypto.Proto.RLWE.SampleRLWRCrypto.Proto.RLWE.KqCrypto.Proto.RLWE.SampleContCrypto.Proto.RLWECrypto.Lol.Types.RandomCrypto.Lol.Types.ProtoCrypto.Lol.GadgetCrypto.Lol.Reflects Crypto.Lol.Cyclotomic.RescaleCycCrypto.Lol.CRTransCrypto.Lol.Types.FiniteFieldCrypto.Lol.Cyclotomic.Tensor!Crypto.Lol.Types.IrreducibleChar2Crypto.Lol.Types.ZPPCrypto.Lol.Cyclotomic.UCycCrypto.Lol.Cyclotomic.CycCrypto.Lol.Cyclotomic.LinearCrypto.Lol.RLWE.ContinuousCrypto.Lol.RLWE.DiscreteCrypto.Lol.Types.ZqBasicCrypto.Lol.Types.RRq$Crypto.Lol.Cyclotomic.Tensor.CTensor'Crypto.Lol.Cyclotomic.Tensor.RepaTensorCrypto.Lol.RLWE.RLWRCrypto.Lol.Types.NumericNumericPreludeNumericAlgebra.IntegralDomaindivModCrypto.Lol.Types.ComplexCrypto.Lol.PosBinDefsCrypto.Lol.PosBinCrypto.Lol.FactoredDefsCrypto.Lol.GaussRandomPreludeuntilCrypto.Lol.Types.IZipVectorControl.ApplicativeZipList0Crypto.Lol.Cyclotomic.Tensor.RepaTensor.RTCommon*Crypto.Lol.Cyclotomic.Tensor.RepaTensor.GL+Crypto.Lol.Cyclotomic.Tensor.RepaTensor.Dec!Crypto.Lol.Cyclotomic.CRTSentinel+Crypto.Lol.Cyclotomic.Tensor.RepaTensor.CRT,Crypto.Lol.Cyclotomic.Tensor.CTensor.BackendCrypto.Lol.Types.ZmStar.Crypto.Lol.Cyclotomic.Tensor.CTensor.Extension1Crypto.Lol.Cyclotomic.Tensor.RepaTensor.ExtensionCrypto.Lol.Types Crypto.LolbaseGHC.IntInt64subPosaddPosPosOSBinB1D0D1unFunPPprimePP exponentPPPrimeBin PrimePowerFactoredfMulfPPMul fOddRadicalfDivfDividesfLCMfGCDppToFpToPPpToFpFree&constraints-0.8-4c3b6cnEJINLrFZUA2mlxrData.Constraint\\%singletons-2.1-EX0Yhk1ltRU4tqYGbJd9MUData.SingletonsSingRqmqxs $fTextMsgRq $fTextTypeRq$fReflectDescriptorRq$fGPBRq$fMessageAPImsg'(->)Rq$fWireRq $fDefaultRq $fMergeableRq$fShowRq$fEqRq$fOrdRq$fDataRq $fGenericRq SampleDiscab$fTextMsgSampleDisc$fTextTypeSampleDisc$fReflectDescriptorSampleDisc$fGPBSampleDisc$fMessageAPImsg'(->)SampleDisc$fWireSampleDisc$fDefaultSampleDisc$fMergeableSampleDisc$fShowSampleDisc$fEqSampleDisc$fOrdSampleDisc$fDataSampleDisc$fGenericSampleDisc SampleRLWR$fTextMsgSampleRLWR$fTextTypeSampleRLWR$fReflectDescriptorSampleRLWR$fGPBSampleRLWR$fMessageAPImsg'(->)SampleRLWR$fWireSampleRLWR$fDefaultSampleRLWR$fMergeableSampleRLWR$fShowSampleRLWR$fEqSampleRLWR$fOrdSampleRLWR$fDataSampleRLWR$fGenericSampleRLWRKq $fTextMsgKq $fTextTypeKq$fReflectDescriptorKq$fGPBKq$fMessageAPImsg'(->)Kq$fWireKq $fDefaultKq $fMergeableKq$fShowKq$fEqKq$fOrdKq$fDataKq $fGenericKq SampleCont$fTextMsgSampleCont$fTextTypeSampleCont$fReflectDescriptorSampleCont$fGPBSampleCont$fMessageAPImsg'(->)SampleCont$fWireSampleCont$fDefaultSampleCont$fMergeableSampleCont$fShowSampleCont$fEqSampleCont$fOrdSampleCont$fDataSampleCont$fGenericSampleCont protoInfofileDescriptorProto CryptoRandevalCryptoRandIO$fRandomGenCryptoRand$fCryptoRandomGenCryptoRand Protoable ProtoTypetoProto fromProtomsgPutmsgGet$fProtoable(,) $fProtoable[]Matrix PolynomialPID RealIntegralAbsolute ToIntegerOrdFloatRealTranscendentalTranscendental Algebraic RealFieldRealRingField ToRationalIntegralDomainModuleRingAdditive ZeroTestablemaxminabs realToField^modinvdecomp roundMultroundScalarCentered divModCentComplex roundComplexcisrealimagfromRealSPosAddPosSubPos AddPosSym0 AddPosSym1 SubPosSym0 SubPosSym1SSym0SSym1OSym0sSubPossAddPosposToIntBinCPosCSBinD1Sym0D1Sym1D0Sym0D0Sym1B1Sym0intToPosbinToIntintToBinreifyPos reifyPosIreifyBin reifyBinIposTypebinTypeposDecbinDecintDecprimesprimeP16P15P14P13P12P11P10P9P8P7P6P5P4P3P2P1B128B127B126B125B124B123B122B121B120B119B118B117B116B115B114B113B112B111B110B109B108B107B106B105B104B103B102B101B100B99B98B97B96B95B94B93B92B91B90B89B88B87B86B85B84B83B82B81B80B79B78B77B76B75B74B73B72B71B70B69B68B67B66B65B64B63B62B61B60B59B58B57B56B55B54B53B52B51B50B49B48B47B46B45B44B43B42B41B40B39B38B37B36B35B34B33B32B31B30B29B28B27B26B25B24B23B22B21B20B19B18B17B16B15B14B13B12B11B10B9B8B7B6B5B4B3B2 SFactored SPrimePower SPrimeBin ExponentPPPrimePPUnPPUnFsUnFsUnPPFPPMulFMulPToFPToPPPpToFFGCDFLCMFDividesFDiv FOddRadicalsPpToFsPToPPsPToFPPCoprimeDividesFactPPowPrime*/PFree reifyPrime reifyPrimeI reifyPPow reifyPPowI reifyFact reifyFactI transDivides gcdDivides lcmDivides lcm2DividespSplitTheorems pFreeDividesppToPPppPPowppsFact valuePrime valueFact totientFact valueHatFact radicalFactoddRadicalFactvalueFtotientF valueHatFradicalF oddRadicalF primePPow exponentPPow valuePPow totientPPow valueHatPPow radicalPPowoddRadicalPPowvaluePP totientPP valueHatPP radicalPP oddRadicalPPvaluePvalueHatpTypeppTypefTypepDecppDecfDec intToFactF512F511F510F509F508F507F506F505F504F503F502F501F500F499F498F497F496F495F494F493F492F491F490F489F488F487F486F485F484F483F482F481F480F479F478F477F476F475F474F473F472F471F470F469F468F467F466F465F464F463F462F461F460F459F458F457F456F455F454F453F452F451F450F449F448F447F446F445F444F443F442F441F440F439F438F437F436F435F434F433F432F431F430F429F428F427F426F425F424F423F422F421F420F419F418F417F416F415F414F413F412F411F410F409F408F407F406F405F404F403F402F401F400F399F398F397F396F395F394F393F392F391F390F389F388F387F386F385F384F383F382F381F380F379F378F377F376F375F374F373F372F371F370F369F368F367F366F365F364F363F362F361F360F359F358F357F356F355F354F353F352F351F350F349F348F347F346F345F344F343F342F341F340F339F338F337F336F335F334F333F332F331F330F329F328F327F326F325F324F323F322F321F320F319F318F317F316F315F314F313F312F311F310F309F308F307F306F305F304F303F302F301F300F299F298F297F296F295F294F293F292F291F290F289F288F287F286F285F284F283F282F281F280F279F278F277F276F275F274F273F272F271F270F269F268F267F266F265F264F263F262F261F260F259F258F257F256F255F254F253F252F251F250F249F248F247F246F245F244F243F242F241F240F239F238F237F236F235F234F233F232F231F230F229F228F227F226F225F224F223F222F221F220F219F218F217F216F215F214F213F212F211F210F209F208F207F206F205F204F203F202F201F200F199F198F197F196F195F194F193F192F191F190F189F188F187F186F185F184F183F182F181F180F179F178F177F176F175F174F173F172F171F170F169F168F167F166F165F164F163F162F161F160F159F158F157F156F155F154F153F152F151F150F149F148F147F146F145F144F143F142F141F140F139F138F137F136F135F134F133F132F131F130F129F128F127F126F125F124F123F122F121F120F119F118F117F116F115F114F113F112F111F110F109F108F107F106F105F104F103F102F101F100F99F98F97F96F95F94F93F92F91F90F89F88F87F86F85F84F83F82F81F80F79F78F77F76F75F74F73F72F71F70F69F68F67F66F65F64F63F62F61F60F59F58F57F56F55F54F53F52F51F50F49F48F47F46F45F44F43F42F41F40F39F38F37F36F35F34F33F32F31F30F29F28F27F26F25F24F23F22F21F20F19F18F17F16F15F14F13F12F11F10F9F8F7F6F5F4F3F2F1F2048F1024PP128PP64PP32PP16PP8PP4PP2PP81PP27PP9PP3PP11PP7PP5Prime659Prime653Prime647Prime643Prime641Prime631Prime619Prime617Prime613Prime607Prime601Prime599Prime593Prime587Prime577Prime571Prime569Prime563Prime557Prime547Prime541Prime523Prime521Prime509Prime503Prime499Prime491Prime487Prime479Prime467Prime463Prime461Prime457Prime449Prime443Prime439Prime433Prime431Prime421Prime419Prime409Prime401Prime397Prime389Prime383Prime379Prime373Prime367Prime359Prime353Prime349Prime347Prime337Prime331Prime317Prime313Prime311Prime307Prime293Prime283Prime281Prime277Prime271Prime269Prime263Prime257Prime251Prime241Prime239Prime233Prime229Prime227Prime223Prime211Prime199Prime197Prime193Prime191Prime181Prime179Prime173Prime167Prime163Prime157Prime151Prime149Prime139Prime137Prime131Prime127Prime113Prime109Prime107Prime103Prime101Prime97Prime89Prime83Prime79Prime73Prime71Prime67Prime61Prime59Prime53Prime47Prime43Prime41Prime37Prime31Prime29Prime23Prime19Prime17Prime13Prime11Prime7Prime5Prime3Prime2$fMonadRandomTaggedT$fNFDataTaggedTEncodelsdToMSDRescalerescaleLift'liftLiftOfLiftReducereduceSubgroup fromSubgroupModModRepmodulus EnumerablevaluesCharOfmsdToLSD rescaleMod roundCoset fromJust'pureTpeelTpasteT withWitness withWitnessT $fRandom(,) $fEncodes(,) $fRescaleb(,) $fRescalea(,) $fRescale(,)a $fRescale(,)c$fRescale(,)a0 $fRescale(,)b $fReducea(,)$fMod(,)$fC(,)$fC(,)0$fC(,)1 $fLift'(,) $fDefaultBool$fVectorVectorMaybe$fMVectorMVectorMaybe $fUnboxMaybeCorrectcorrect DecomposeDecompOf decomposeGadgetgadgetencodeBaseBGadTrivGad decomposeT decomposeListdecomposeMatrix$fCorrectkgad(,)$fDecomposekgad(,)$fGadgetkgad(,)Reflectsvalue$fReflectsTYPEqr$fReflectsFactoredmi$fReflectsPrimePowerppi$fReflectsPrimeBinpi$fReflectsNatai RescaleCyc rescaleCycBasisPowDec rescalePow rescaleDecCRTEmbedCRTExttoExtfromExtCRTranscrtInfoCRTInfo$fCRTEmbedInteger$fCRTEmbedInt64 $fCRTEmbedInt$fCRTEmbedDouble$fCRTransMaybeInteger$fCRTransMaybeInt64$fCRTransMaybeInt$fCRTransMaybeDouble$fCRTEmbedComplex$fCRTransmonComplex $fCRTEmbed(,)$fCRTransmon(,)XIrreduciblePolyirreduciblePoly TensorCoeffsCoeffsunCoeffsGFCtx PrimeFieldGFtoListfromListsizetrace^^$fCGFTensorCoeffs$fCRTransMaybeGF$fCGF$fCGF0 $fRandomGF$fEnumerableGF$fEqGF$fShowGF$fCGF1$fCGF2 $fNFDataGF$fCTensorCoeffsKronTensorTElt entailIndexT entailEqT entailZTT entailNFDataT entailRandomT entailShowT entailModuleT scalarPowllInvmulGPowmulGDecdivGPowdivGDeccrtFuncs tGaussianDec gSqNormDec twacePowDecembedPowembedDec crtExtFuncscoeffs powBasisPow crtSetDecfmapTzipWithTunzipT hasCRTFuncs scalarCRTmulGCRTdivGCRTcrtcrtInvtwaceCRTembedCRTindexKgCRTKgInvCRTKtwCRTsdigitRevzmsToIndexFact indexInfoextIndicesPowDec extIndicesCRTbaseIndicesPowbaseIndicesDecbaseIndicesCRTextIndicesCoeffs$fIrreduciblePolyaZPPZpOf modulusZPPliftZpNFEltUCRTEltUCycUCycPCUCycECECDPfmapPowfmapDecunzipPowunzipDec unzipCRTC unzipCRTEmulGdivGCRTCgSqNorm tGaussian errorRounded errorCoset embedCRTC embedCRTEtwacePowtwaceDec twaceCRTC twaceCRTE coeffsPow coeffsDecpowBasiscrtSettoPowtoDectoCRT$fProtoableUCyc $fNFDataUCyc$fArbitraryUCyc$fArbitraryUCyc0$fRandomEither $fRandomUCyc $fRandomUCyc0$fTraversableUCyc$fTraversableUCyc0$fFoldableUCyc$fFoldableUCyc0$fFoldableUCyc1$fApplicativeUCyc$fApplicativeUCyc0 $fFunctorUCyc$fFunctorUCyc0$fRescaleUCycUCyc$fRescaleUCycUCyc0 $fLift'UCyc $fLift'UCyc0$fReduceUCycUCyc$fReduceUCycUCyc0 $fCGFUCyc $fCrEither$fCrUCyc $fCrUCyc0 $fCEither $fCEither0$fCUCyc$fCUCyc0$fCUCyc1$fCUCyc2$fCUCyc3$fEqUCyc $fEqUCyc0 $fEqUCyc1CEltCyccycPowcycDeccycCRTcycCRTCcycCRTEcycPCcycPE scalarCycuncycPowuncycDecuncycCRT advisePow adviseDec adviseCRTdivGembedtwace coeffsCycliftCycliftPowliftDecunzipCyc$fProtoableCyc$fArbitraryCyc $fRandomCyc $fNFDataCyc$fCorrectkgadCyc$fDecomposekgadCyc$fGadgetkgadCyc$fRescaleCycCyc(,)b$fRescaleCycCycab$fReduceCycCyc$fCGFCyc$fCCyc$fCCyc0$fEqCyc$fCCyc1 ExtendLinIdxLinear linearDecevalLin extendLin $fLift'Linear$fReduceLinearLinear $fCLinear$fNFDataLinearRLWECtxSamplesample errorTerm errorGSqNorm errorBoundZqBasicgoodQs$fVectorVectorZqBasic$fMVectorMVectorZqBasic$fUnboxZqBasic$fArbitraryZqBasic$fRandomZqBasic$fCorrectTYPEBaseBGadZqBasic$fDecomposeTYPEBaseBGadZqBasic$fGadgetTYPEBaseBGadZqBasic$fCorrectTYPETrivGadZqBasic$fDecomposeTYPETrivGadZqBasic$fGadgetTYPETrivGadZqBasic $fCZqBasic $fCZqBasic0 $fCZqBasic1 $fCZqBasic2$fCRTEmbedZqBasic$fCRTransMaybeZqBasic$fEncodeZqBasicZqBasic$fRescaleZqBasicZqBasic$fLift'ZqBasic$fReduceIntegerZqBasic$fReducezZqBasic $fZPPZqBasic $fModZqBasic$fEnumerableZqBasic $fEqZqBasic $fOrdZqBasic $fCZqBasic3 $fEltZqBasic $fShowZqBasic$fNFDataZqBasic$fStorableZqBasicRRq$fVectorVectorRRq$fMVectorMVectorRRq $fUnboxRRq$fSubgroupZqBasicRRq$fCRRq $fLift'RRq $fReducerRRq$fEqRRq$fOrdRRq$fCRRq0$fEltRRq $fShowRRq $fNFDataRRq $fStorableRRqCT $fNFDataCT $fRandomCT $fRandomCT' $fArbitraryCT$fArbitraryCT' $fTensorCT$fTraversableCT $fFoldableCT$fApplicativeCT $fFunctorCT$fCGFCT$fCCT$fCCT0 $fProtoableCT$fProtoableCT0$fEqCT $fShowCT'$fEqCT' $fNFDataCT'$fShowCTRT $fNFDataRT $fArbitraryRT $fRandomRT$fCGFRT$fCRT$fCRT0$fTraversableRT $fFoldableRT$fApplicativeRT $fFunctorRT $fTensorRT$fEqRT $fProtoableRT$fProtoableRT0$fShowRTRLWRCtx roundedProd(crypto-api-0.13.2-GrgsV9tsmc9F0uD4JVFF0p Crypto.RandomCryptoRandomGen!random-1.1-54KmMHXjttlERYcr1mvsAe System.Random RandomGen*MonadRandom-0.4.2.3-BeY4MXl2TWH5X5ex76pU0BControl.Monad.RandomRandTbytestring-0.10.8.1Data.ByteString.Lazy.Internal ByteString,numeric-prelude-0.4.2-AzK6TgMsG2tGQJApMBQwgDMathObj.MatrixTMathObj.PolynomialAlgebra.PrincipalIdealDomainAlgebra.RealIntegralAlgebra.AbsoluteAlgebra.ToIntegerghc-prim GHC.ClassesOrdAlgebra.RealTranscendentalAlgebra.TranscendentalAlgebra.AlgebraicAlgebra.RealFieldAlgebra.RealRing Algebra.FieldAlgebra.ToRationalAlgebra.Module Algebra.RingAlgebra.AdditiveAlgebra.ZeroTestable integer-gmpGHC.Integer.TypeInteger $fNFDataT $fCDoubleGHC.Base++GHC.PrimseqGHC.Listfilterzip System.IOprint Data.Tuplefstsnd otherwisemap$GHC.Real realToFracGHC.EnumBoundedmaxBoundminBoundEnumenumFrom enumFromThenenumFromThenTo enumFromTofromEnumtoEnumsuccpredEq==/=Monad>>=>>returnfailFunctorfmap<$>=><<=compareGHC.ReadRead readsPrecreadListGHC.ShowShow showsPrecshowshowList Data.Foldablefoldrnulllengthfoldlfoldl1foldr1maximumminimumelemData.TraversablemapMsequence GHC.TypesBoolFalseTrueCharDoubleFloatIntMaybeNothingJustOrderingLTEQGTIO Data.EitherEitherLeftRight takeWhilereadIOreadLn appendFile writeFilereadFileinteract getContentsgetLinegetCharputStrLnputStrputChar Text.ReadreadreadsGHC.IO.ExceptionioErrornotElemallanyorand concatMapconcat sequence_mapM_GHC.IOFilePath userErrorIOErroreither Data.OldListunwordswordsunlineslineslex readParenText.ParserCombinators.ReadPReadS showParen showStringshowCharshowsShowSunzip3unzipzipWith3zipWithzip3!!lookupreversebreakspansplitAtdroptake dropWhilecycle replicaterepeatiteratescanr1scanrscanl1scanlinitlasttailhead Data.MaybemaybeuncurrycurryasTypeOf$!flip.constid=<<StringGHC.Err undefinederror&&||notatan2approxRationaltruncateroundceilingfloor splitFractionfraction*>^?piexplog**logBasesincostanasinacosatansinhcoshtanhasinhacoshatanhsqrt^/ fieldPower ringPower fromIntegral toInteger toRational fromRationalrecip fromRational'^- Number.Ratio% numerator denominatorRationalquotremquotRemsignumextendedEuclideuclid extendedGCDgcdlcm Algebra.UnitsisUnit stdAssociatestdUnit stdUnitInvoddevendividesmoddivisZeroproduct1productsqr fromIntegeronesum1sumsubtract+-negatezeroNumericPrelude.Basecatch(utility-ht-0.0.12-IQc75ZjtSJC6jKWDjW00ebData.Bool.HT.Private ifThenElse $fCComplex3 V_Complex MV_Complex $fEltComplex$fRandomComplex$fNFDataComplexD:R:VectorComplex0SingIEquals_1627560734Compare_1627561470Equals_1627564137Case_1627564188Case_1627564201Compare_1627564206Compare_1627561470Sym0#Compare_1627561470Sym0KindInferenceCompare_1627561470Sym1#Compare_1627561470Sym1KindInferenceCompare_1627561470Sym2AddPosSym0KindInferenceAddPosSym1KindInference AddPosSym2SubPosSym0KindInferenceSubPosSym1KindInference SubPosSym2SSym0KindInferenceSOSSD:R:DemoteRepPosKProxyCompare_1627564206Sym0#Compare_1627564206Sym0KindInferenceCompare_1627564206Sym1#Compare_1627564206Sym1KindInferenceCompare_1627564206Sym2!Let1627564193Scrutinee_1627564133%Let1627564193Scrutinee_1627564133Sym02Let1627564193Scrutinee_1627564133Sym0KindInference%Let1627564193Scrutinee_1627564133Sym12Let1627564193Scrutinee_1627564133Sym1KindInference%Let1627564193Scrutinee_1627564133Sym2!Let1627564180Scrutinee_1627564135%Let1627564180Scrutinee_1627564135Sym02Let1627564180Scrutinee_1627564135Sym0KindInference%Let1627564180Scrutinee_1627564135Sym12Let1627564180Scrutinee_1627564135Sym1KindInference%Let1627564180Scrutinee_1627564135Sym2D1Sym0KindInferenceD0Sym0KindInferenceSB1SD0SD1D:R:DemoteRepBinKProxyvaluePPs totientPPs radicalPPs oddRadicalPPs factorize' factorizeunPFEquals_1627613743Equals_1627613754Equals_1627613765Compare_1627613818ppMulppsMulCase_1627617441 ppsOddRadppsDiv ppsDividesppsLCMppsGCDCase_1627623906Case_1627624026Case_1627624062Case_1627624098Case_1627624195Case_1627624391Case_1627624519Case_1627647009Compare_1627613818Sym0#Compare_1627613818Sym0KindInferenceCompare_1627613818Sym1#Compare_1627613818Sym1KindInferenceCompare_1627613818Sym2UnPUnPSym0UnPSym0KindInferenceUnPSym1ExponentPPSym0ExponentPPSym0KindInferenceExponentPPSym1 PrimePPSym0PrimePPSym0KindInference PrimePPSym1UnPPSym0UnPPSym0KindInferenceUnPPSym1UnFSym0UnFSym0KindInferenceUnFSym1FSym0FSym0KindInferenceFSym1PPSym0PPSym0KindInferencePPSym1PSym0PSym0KindInferencePSym1SFSPPSPsPrimePP sExponentPPsUnPD:R:DemoteRepFactoredKProxyPpsMulPpMul FPPMulSym0FPPMulSym0KindInference FPPMulSym1FPPMulSym1KindInference FPPMulSym2FMulSym0FMulSym0KindInferenceFMulSym1FMulSym1KindInferenceFMulSym2 PpsMulSym0PpsMulSym0KindInference PpsMulSym1PpsMulSym1KindInference PpsMulSym2 PpMulSym0PpMulSym0KindInference PpMulSym1PpMulSym1KindInference PpMulSym2!Let1627617415Scrutinee_1627617322%Let1627617415Scrutinee_1627617322Sym02Let1627617415Scrutinee_1627617322Sym0KindInference%Let1627617415Scrutinee_1627617322Sym12Let1627617415Scrutinee_1627617322Sym1KindInference%Let1627617415Scrutinee_1627617322Sym22Let1627617415Scrutinee_1627617322Sym2KindInference%Let1627617415Scrutinee_1627617322Sym32Let1627617415Scrutinee_1627617322Sym3KindInference%Let1627617415Scrutinee_1627617322Sym42Let1627617415Scrutinee_1627617322Sym4KindInference%Let1627617415Scrutinee_1627617322Sym5Let1627617339PpLet1627617339PpsLet1627617339Pp'Let1627617339PpSym0 Let1627617339PpSym0KindInferenceLet1627617339PpSym1 Let1627617339PpSym1KindInferenceLet1627617339PpSym2 Let1627617339PpSym2KindInferenceLet1627617339PpSym3 Let1627617339PpSym3KindInferenceLet1627617339PpSym4 Let1627617339PpSym4KindInferenceLet1627617339PpSym5Let1627617339PpsSym0!Let1627617339PpsSym0KindInferenceLet1627617339PpsSym1!Let1627617339PpsSym1KindInferenceLet1627617339PpsSym2!Let1627617339PpsSym2KindInferenceLet1627617339PpsSym3!Let1627617339PpsSym3KindInferenceLet1627617339PpsSym4!Let1627617339PpsSym4KindInferenceLet1627617339PpsSym5Let1627617339Pp'Sym0!Let1627617339Pp'Sym0KindInferenceLet1627617339Pp'Sym1!Let1627617339Pp'Sym1KindInferenceLet1627617339Pp'Sym2!Let1627617339Pp'Sym2KindInferenceLet1627617339Pp'Sym3!Let1627617339Pp'Sym3KindInferenceLet1627617339Pp'Sym4!Let1627617339Pp'Sym4KindInferenceLet1627617339Pp'Sym5sPpMulsPpsMulsFMulsFPPMul#D:R:ApplyPrimePower(->)FPPMulSym0l0PpsGCDPpsLCM PpsDividesPpsDiv PpsOddRadPToFSym0PToFSym0KindInferencePToFSym1 PToPPSym0PToPPSym0KindInference PToPPSym1 PpToFSym0PpToFSym0KindInference PpToFSym1FGCDSym0FGCDSym0KindInferenceFGCDSym1FGCDSym1KindInferenceFGCDSym2FLCMSym0FLCMSym0KindInferenceFLCMSym1FLCMSym1KindInferenceFLCMSym2 FDividesSym0FDividesSym0KindInference FDividesSym1FDividesSym1KindInference FDividesSym2FDivSym0FDivSym0KindInferenceFDivSym1FDivSym1KindInferenceFDivSym2FOddRadicalSym0FOddRadicalSym0KindInferenceFOddRadicalSym1 PpsGCDSym0PpsGCDSym0KindInference PpsGCDSym1PpsGCDSym1KindInference PpsGCDSym2 PpsLCMSym0PpsLCMSym0KindInference PpsLCMSym1PpsLCMSym1KindInference PpsLCMSym2PpsDividesSym0PpsDividesSym0KindInferencePpsDividesSym1PpsDividesSym1KindInferencePpsDividesSym2 PpsDivSym0PpsDivSym0KindInference PpsDivSym1PpsDivSym1KindInference PpsDivSym2 PpsOddRadSym0PpsOddRadSym0KindInference PpsOddRadSym1!Let1627624485Scrutinee_1627623866%Let1627624485Scrutinee_1627623866Sym02Let1627624485Scrutinee_1627623866Sym0KindInference%Let1627624485Scrutinee_1627623866Sym12Let1627624485Scrutinee_1627623866Sym1KindInference%Let1627624485Scrutinee_1627623866Sym22Let1627624485Scrutinee_1627623866Sym2KindInference%Let1627624485Scrutinee_1627623866Sym32Let1627624485Scrutinee_1627623866Sym3KindInference%Let1627624485Scrutinee_1627623866Sym42Let1627624485Scrutinee_1627623866Sym4KindInference%Let1627624485Scrutinee_1627623866Sym52Let1627624485Scrutinee_1627623866Sym5KindInference%Let1627624485Scrutinee_1627623866Sym6Let1627624418YsLet1627624418XsLet1627624418YsSym0 Let1627624418YsSym0KindInferenceLet1627624418YsSym1 Let1627624418YsSym1KindInferenceLet1627624418YsSym2 Let1627624418YsSym2KindInferenceLet1627624418YsSym3 Let1627624418YsSym3KindInferenceLet1627624418YsSym4 Let1627624418YsSym4KindInferenceLet1627624418YsSym5 Let1627624418YsSym5KindInferenceLet1627624418YsSym6Let1627624418XsSym0 Let1627624418XsSym0KindInferenceLet1627624418XsSym1 Let1627624418XsSym1KindInferenceLet1627624418XsSym2 Let1627624418XsSym2KindInferenceLet1627624418XsSym3 Let1627624418XsSym3KindInferenceLet1627624418XsSym4 Let1627624418XsSym4KindInferenceLet1627624418XsSym5 Let1627624418XsSym5KindInferenceLet1627624418XsSym6!Let1627624357Scrutinee_1627623868%Let1627624357Scrutinee_1627623868Sym02Let1627624357Scrutinee_1627623868Sym0KindInference%Let1627624357Scrutinee_1627623868Sym12Let1627624357Scrutinee_1627623868Sym1KindInference%Let1627624357Scrutinee_1627623868Sym22Let1627624357Scrutinee_1627623868Sym2KindInference%Let1627624357Scrutinee_1627623868Sym32Let1627624357Scrutinee_1627623868Sym3KindInference%Let1627624357Scrutinee_1627623868Sym42Let1627624357Scrutinee_1627623868Sym4KindInference%Let1627624357Scrutinee_1627623868Sym52Let1627624357Scrutinee_1627623868Sym5KindInference%Let1627624357Scrutinee_1627623868Sym6Let1627624224Pp'Let1627624224YsLet1627624224PpLet1627624224XsLet1627624224Pp'Sym0!Let1627624224Pp'Sym0KindInferenceLet1627624224Pp'Sym1!Let1627624224Pp'Sym1KindInferenceLet1627624224Pp'Sym2!Let1627624224Pp'Sym2KindInferenceLet1627624224Pp'Sym3!Let1627624224Pp'Sym3KindInferenceLet1627624224Pp'Sym4!Let1627624224Pp'Sym4KindInferenceLet1627624224Pp'Sym5!Let1627624224Pp'Sym5KindInferenceLet1627624224Pp'Sym6Let1627624224YsSym0 Let1627624224YsSym0KindInferenceLet1627624224YsSym1 Let1627624224YsSym1KindInferenceLet1627624224YsSym2 Let1627624224YsSym2KindInferenceLet1627624224YsSym3 Let1627624224YsSym3KindInferenceLet1627624224YsSym4 Let1627624224YsSym4KindInferenceLet1627624224YsSym5 Let1627624224YsSym5KindInferenceLet1627624224YsSym6Let1627624224PpSym0 Let1627624224PpSym0KindInferenceLet1627624224PpSym1 Let1627624224PpSym1KindInferenceLet1627624224PpSym2 Let1627624224PpSym2KindInferenceLet1627624224PpSym3 Let1627624224PpSym3KindInferenceLet1627624224PpSym4 Let1627624224PpSym4KindInferenceLet1627624224PpSym5 Let1627624224PpSym5KindInferenceLet1627624224PpSym6Let1627624224XsSym0 Let1627624224XsSym0KindInferenceLet1627624224XsSym1 Let1627624224XsSym1KindInferenceLet1627624224XsSym2 Let1627624224XsSym2KindInferenceLet1627624224XsSym3 Let1627624224XsSym3KindInferenceLet1627624224XsSym4 Let1627624224XsSym4KindInferenceLet1627624224XsSym5 Let1627624224XsSym5KindInferenceLet1627624224XsSym6Let1627624210XsLet1627624210XsSym0 Let1627624210XsSym0KindInferenceLet1627624210XsSym1 Let1627624210XsSym1KindInferenceLet1627624210XsSym2!Let1627624161Scrutinee_1627623874%Let1627624161Scrutinee_1627623874Sym02Let1627624161Scrutinee_1627623874Sym0KindInference%Let1627624161Scrutinee_1627623874Sym12Let1627624161Scrutinee_1627623874Sym1KindInference%Let1627624161Scrutinee_1627623874Sym22Let1627624161Scrutinee_1627623874Sym2KindInference%Let1627624161Scrutinee_1627623874Sym32Let1627624161Scrutinee_1627623874Sym3KindInference%Let1627624161Scrutinee_1627623874Sym42Let1627624161Scrutinee_1627623874Sym4KindInference%Let1627624161Scrutinee_1627623874Sym52Let1627624161Scrutinee_1627623874Sym5KindInference%Let1627624161Scrutinee_1627623874Sym6Let1627624127XsLet1627624127XsSym0 Let1627624127XsSym0KindInferenceLet1627624127XsSym1 Let1627624127XsSym1KindInferenceLet1627624127XsSym2 Let1627624127XsSym2KindInferenceLet1627624127XsSym3 Let1627624127XsSym3KindInferenceLet1627624127XsSym4 Let1627624127XsSym4KindInferenceLet1627624127XsSym5 Let1627624127XsSym5KindInferenceLet1627624127XsSym6!Let1627624064Scrutinee_1627623880%Let1627624064Scrutinee_1627623880Sym02Let1627624064Scrutinee_1627623880Sym0KindInference%Let1627624064Scrutinee_1627623880Sym12Let1627624064Scrutinee_1627623880Sym1KindInference%Let1627624064Scrutinee_1627623880Sym22Let1627624064Scrutinee_1627623880Sym2KindInference%Let1627624064Scrutinee_1627623880Sym32Let1627624064Scrutinee_1627623880Sym3KindInference%Let1627624064Scrutinee_1627623880Sym42Let1627624064Scrutinee_1627623880Sym4KindInference%Let1627624064Scrutinee_1627623880Sym52Let1627624064Scrutinee_1627623880Sym5KindInference%Let1627624064Scrutinee_1627623880Sym6!Let1627624028Scrutinee_1627623878%Let1627624028Scrutinee_1627623878Sym02Let1627624028Scrutinee_1627623878Sym0KindInference%Let1627624028Scrutinee_1627623878Sym12Let1627624028Scrutinee_1627623878Sym1KindInference%Let1627624028Scrutinee_1627623878Sym22Let1627624028Scrutinee_1627623878Sym2KindInference%Let1627624028Scrutinee_1627623878Sym32Let1627624028Scrutinee_1627623878Sym3KindInference%Let1627624028Scrutinee_1627623878Sym42Let1627624028Scrutinee_1627623878Sym4KindInference%Let1627624028Scrutinee_1627623878Sym52Let1627624028Scrutinee_1627623878Sym5KindInference%Let1627624028Scrutinee_1627623878Sym6!Let1627623992Scrutinee_1627623876%Let1627623992Scrutinee_1627623876Sym02Let1627623992Scrutinee_1627623876Sym0KindInference%Let1627623992Scrutinee_1627623876Sym12Let1627623992Scrutinee_1627623876Sym1KindInference%Let1627623992Scrutinee_1627623876Sym22Let1627623992Scrutinee_1627623876Sym2KindInference%Let1627623992Scrutinee_1627623876Sym32Let1627623992Scrutinee_1627623876Sym3KindInference%Let1627623992Scrutinee_1627623876Sym42Let1627623992Scrutinee_1627623876Sym4KindInference%Let1627623992Scrutinee_1627623876Sym52Let1627623992Scrutinee_1627623876Sym5KindInference%Let1627623992Scrutinee_1627623876Sym6Let1627623925YsLet1627623925PpLet1627623925YsSym0 Let1627623925YsSym0KindInferenceLet1627623925YsSym1 Let1627623925YsSym1KindInferenceLet1627623925YsSym2 Let1627623925YsSym2KindInferenceLet1627623925YsSym3 Let1627623925YsSym3KindInferenceLet1627623925YsSym4 Let1627623925YsSym4KindInferenceLet1627623925YsSym5 Let1627623925YsSym5KindInferenceLet1627623925YsSym6Let1627623925PpSym0 Let1627623925PpSym0KindInferenceLet1627623925PpSym1 Let1627623925PpSym1KindInferenceLet1627623925PpSym2 Let1627623925PpSym2KindInferenceLet1627623925PpSym3 Let1627623925PpSym3KindInferenceLet1627623925PpSym4 Let1627623925PpSym4KindInferenceLet1627623925PpSym5 Let1627623925PpSym5KindInferenceLet1627623925PpSym6!Let1627623893Scrutinee_1627623882%Let1627623893Scrutinee_1627623882Sym02Let1627623893Scrutinee_1627623882Sym0KindInference%Let1627623893Scrutinee_1627623882Sym12Let1627623893Scrutinee_1627623882Sym1KindInference%Let1627623893Scrutinee_1627623882Sym22Let1627623893Scrutinee_1627623882Sym2KindInference%Let1627623893Scrutinee_1627623882Sym3 sPpsOddRadsPpsDiv sPpsDividessPpsLCMsPpsGCD sFOddRadicalsFDiv sFDividessFLCMsFGCD#D:R:ApplyPrimeBinFactoredPToFSym0l0 PFreeSym0PFreeSym0KindInference PFreeSym1PFreeSym1KindInference PFreeSym2Let1627646940GoLet1627646940GoSym0 Let1627646940GoSym0KindInferenceLet1627646940GoSym1 Let1627646940GoSym1KindInferenceLet1627646940GoSym2 Let1627646940GoSym2KindInferenceLet1627646940GoSym3!Let1627646983Scrutinee_1627646925%Let1627646983Scrutinee_1627646925Sym02Let1627646983Scrutinee_1627646925Sym0KindInference%Let1627646983Scrutinee_1627646925Sym12Let1627646983Scrutinee_1627646925Sym1KindInference%Let1627646983Scrutinee_1627646925Sym22Let1627646983Scrutinee_1627646925Sym2KindInference%Let1627646983Scrutinee_1627646925Sym32Let1627646983Scrutinee_1627646925Sym3KindInference%Let1627646983Scrutinee_1627646925Sym42Let1627646983Scrutinee_1627646925Sym4KindInference%Let1627646983Scrutinee_1627646925Sym5Let1627646957PpLet1627646957PpSym0 Let1627646957PpSym0KindInferenceLet1627646957PpSym1 Let1627646957PpSym1KindInferenceLet1627646957PpSym2 Let1627646957PpSym2KindInferenceLet1627646957PpSym3 Let1627646957PpSym3KindInferenceLet1627646957PpSym4 Let1627646957PpSym4KindInferenceLet1627646957PpSym5sPFree coerceFDivs coerceGCD D:R:ApplyPrimeBin(->)PFreeSym0l0fromJust-tagged-transformer-0.8-C6k9mEztjRqFOllvd8rFJ8Data.Functor.Trans.TaggedTaggedV_MaybeMV_MaybeD:R:VectorMaybe0 Data.Proxy asProxyTypeOfProxyKProxywitnessTtagTWith untagTSelftagTSelfunproxyTproxyTasTaggedTypeOf reflectedM reflected mapTaggedTretagtagTwitnesstagWith untagSelftagSelfunproxyproxyuntagtagTaggedTTagTuntagT realGaussian realGaussians iterateWhile iterateUntilM IZipVector&vector-0.11.0.0-6uB77qGCxR6GPLxI2sqsX3 Data.VectorVector Applicativepure unIZipVector iZipVectorunzipIZVrepl $fCVector$fApplicativeIZipVectorTransIdTSnocArrreplMfTensorppTensordimtrans.*@*evalevalMexposeunexposemulMatmulDiag scalarPow'forcesumSsumAllSTransC TensorabledimCevalC$fArbitraryArr $fRandomArr $fNFDataArray$fCArr$fCArr0$fCArr1#repa-3.4.1.2-6pT53czyjykHlMdPJKtjcT#Data.Array.Repa.Operators.ReductionequalsSequalsPfoldAllPfoldAllSfoldPfoldS!Data.Array.Repa.Operators.Mapping StructuredTRsmapszipWith#Data.Array.Repa.Operators.SelectionselectPData.Array.Repa.Repr.Unboxedunzip6unzip5unzip4zip6zip5zip4 toUnboxed fromUnboxedfromListUnboxedcomputeUnboxedPcomputeUnboxedSU$Data.Array.Repa.Operators.Interleave interleave4 interleave3 interleave2$Data.Array.Repa.Operators.IndexSpacesliceextendbackpermuteDft backpermuteextract transposeappendreshape#Data.Array.Repa.Operators.Traversal traverse4 traverse3 traverse2traverseData.Array.Repa.EvalnowsuspendedCopyPcopyScopyPsuspendedComputePcomputeScomputePData.Array.Repa.Repr.Delayeddelay toFunction fromFunctionData.Array.Repa.Eval.LoadLoadloadSloadP LoadRange loadRangeS loadRangePData.Array.Repa.Eval.TargetTargetMVecnewMVecunsafeWriteMVecunsafeFreezeMVec deepSeqMVec touchMVecData.Array.Repa.Base deepSeqArrays!ADelayedData.Array.Repa.Repr.ByteString AByteStringData.Array.Repa.Repr.ForeignPtr AForeignPtr#Data.Array.Repa.Repr.HintInterleave AInterleaveData.Array.Repa.Repr.HintSmallASmall Data.Array.Repa.Repr.PartitionedAPartAUnboxedData.Array.Repa.Repr.Undefined AUndefinedData.Array.Repa.Repr.Cursored ACursoredData.Array.Repa.Repr.VectorAVector makeCursor shiftCursor loadCursorcursoredExtentSourceArrayindex unsafeIndexextent linearIndexunsafeLinearIndex deepSeqArrayData.Array.Repa.Eval.ChunkedfillChunkedIOP fillChunkedP fillBlock2S fillLinearSData.Array.Repa.Eval.CursoredfillCursoredBlock2SfillCursoredBlock2P fillBlock2PData.Array.Repa.Eval.EltElttouchData.Array.Repa.Eval.SelectionselectChunkedPselectChunkedS Data.Array.Repa.Eval.InterleavedfillInterleavedPData.Array.Repa.SliceAllAny FullShape SliceShapeSlice sliceOfFull fullOfSliceData.Array.Repa.Indexix5ix4ix3ix2ix1Z:.DIM0DIM1DIM2DIM3DIM4DIM5Data.Array.Repa.Shape showShapeinShapeShaperankzeroDimunitDim intersectDimaddDim sizeIsValidtoIndex fromIndex inShapeRange listOfShape shapeOfListdeepSeqData.Vector.Unboxed.BaseUnboxfLfLInvfGPowfGDecfGInvPowfGInvDecdivCheck wrapGInv'pWrappLpLInvpGPowpGDec pGInvPow' pGInvDec' tGaussianDec'fEpE gSqNormDec' fGramDec'pGramDeccrtInfoC omegaPowC powTraceschunksOfsizePP isPrimitivedotptrace'ppKron twCRTsPPow gCRTPrime gInvCRTPrime indexToPow indexToZms zmsToIndex zmsToIndexPP toIndexPair baseIndexDec fromIndexPairMNilMKronKronCMCfKrongCRTPPow gInvCRTPPowindexToPowPPowindexToZmsPPow baseWrappermergePPstotients ESentinel CSentinel crtSentinel crtCSentinel crtESentinel scalarCRTCScrtCScrtInvCS mulGCRTCS divGCRTCS embedCRTCS twaceCRTCS scalarCRT'mulGCRT'divGCRT'gCRTgInvCRTfCRTfCRTInv wrapVectorppDFT ppDFTInv'ppCRT ppCRTInv' butterflypDFTpDFTInv'pCRTpCRTInv'ppTwid ppTwidHatpolyMap coeffsToPolydeepseq-1.4.2.0Control.DeepSeqdeepseqFoldable TraversabletoPowCECRTCCRTEembed'SubtoPow'toDec'toCRT'CRTScalartoZLfromZLRDprincipalRootUnitygadgetZcorrectZZqB V_ZqBasic MV_ZqBasicreduce'decode'mhatInvgadlenD:R:VectorZqBasic0D:R:MVectorsZqBasic0V_RRqMV_RRqD:R:VectorRRq0D:R:MVectorsRRq0 Dispatch'dcrtdcrtinv dgaussdecdldlinvdnormdmulgpowdmulgdecdginvpowdginvdecdmulDispatchCPPmarshalFactors withPtrArrayTuple numComponentsZqTupleModPairs getModuliEqCTypeCTypeOfRRqDInt64DDoubleDComplexDZqB64DmulCmulRqtensorGaussianDec tensorCRTInvCtensorCRTInvRq tensorCRTC tensorCRTRqtensorGInvDecCtensorGInvDecRqtensorGInvDecRtensorGInvPowCtensorGInvPowRqtensorGInvPowR tensorGDecC tensorGDecRq tensorGDecR tensorGPowC tensorGPowRq tensorGPowR tensorNormSqD tensorNormSqR tensorLInvCtensorLCtensorLInvDouble tensorLDouble tensorLInvRq tensorLRq tensorLInvRtensorLR$fDispatch'Int64DInt64$fDispatch'DoubleDDouble$fDispatch'ComplexDr$fDispatch'ZqB64Dr$fDispatch'RRqDr$fTupleTYPE(,) $fTupleka$fZqTupleTYPE(,)$fZqTupleTYPERRq$fZqTupleTYPEZqBasic $fStorable(,)Foreign.Marshal.Array withArrayorderpartitionCosetscosets backpermute'Data.Vector.Storable embedPow' embedDec' embedCRT'coeffs' twacePowDec' powBasisPow' crtSetDec' kronToVec twaceCRT'CT' coerceCoeffscoerce coerceBasisEmTwZVunCTtoCTtoZVzvToCT'wrapwrapMcoerceTwcoerceEm dispatchGInv withBasicArgs basicDispatchctCRTctCRTInv cZipDispatchcDispatchGaussianruruInv $fDefault:. $fDefaultZV_DIM1MV_DIM1 D:R:Vector:.0zvToArrtoRT