XRsG      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEF None,-<>?CFQTV3 Runtime lookup of the  c (f1 a1) instance.   is a bit different from  ,  , etc. in that it looks up an instance for the singleton type itself, and not for some other type indexed by said singleton type.Runtime lookup of the c a0 instance.Like , but takes an explicit  besides the  instance. Like , but takes explicit s besides the  instances.!Like , but takes explicit s besides the  instances."Like , but takes explicit s besides the  instances.// x a b applies x to the contents of a and b" if their type indexes are equal.Hint: / ( . ) ::  f ->  g ->  ( f g)00 x a b applies x to the contents of a and b" if their type indexes are equal.Hint: 0 ( . ) ::  f ->  g ->  ( f g)11 x a b applies x to the contents of a and b" if their type indexes are equal.Hint: 1 ( . ) ::  f ->  g ->  ( f g)22 x a b applies x to the contents of a and b" if their type indexes are equal.Hint: 2 ( . ) ::  f ->  g ->  ( f g) !"#$%&+,-./012.  !"#$%&'()*+,-./012    None,-FVNone,-<FV None,-FVkG5Some salt we add to hashes calculated in this module. None,-FV None,-FV"HCompatible with the    instance and  instance, provided all of the Is and the fully applied f" instances are compatible as well.JCompatible with the    instance and  instance, provided all of the Is and the fully applied f" instances are compatible as well.KCompatible with the    instance and  instance, provided all of the Is and the fully applied f" instances are compatible as well.LCompatible with the    instance and  instance, provided all of the Is and the fully applied f" instances are compatible as well.None,-FV,MCompatible with the  instance and  instance, provided all of the Is and the fully applied f" instances are compatible as well.NCompatible with the  instance and  instance, provided all of the Is and the fully applied f" instances are compatible as well.OCompatible with the  instance and  instance, provided all of the Is and the fully applied f" instances are compatible as well.PCompatible with the  instance and  instance, provided all of the Is and the fully applied f" instances are compatible as well.None,-FV5?QCompatible with the    instance and  instance, provided all of the Is and the fully applied f" instances are compatible as well.RCompatible with the    instance and  instance, provided all of the Is and the fully applied f" instances are compatible as well.SCompatible with the    instance and  instance, provided all of the Is and the fully applied f" instances are compatible as well.TCompatible with the    instance and  instance, provided all of the Is and the fully applied f" instances are compatible as well.None+,-;=>?FSTV]:ULWe use nested 2-tuples instead of 4-tuples because it's easier to implement.VTODO: Mak1e this logarithmic.WLWe use nested 2-tuples instead of 3-tuples because it's easier to implement.XTODO: Mak1e this logarithmic.YTODO: Mak1e this logarithmic.ZTODO: Mak1e this logarithmic.[TODO: Make this logarithmic.\]^_`abcdefNone,-FV;zNone,6FEk3Like 9 , but for l and r taking four type indexes.5Like 9 , but for l and r taking three type indexes.7Like 9 , but for l and r taking two type indexes.9Like  from Data.Functor.Product6, but only intended to be used with kinds other than Type.?This type is particularly useful when used in combination with  as  (9 l r), so as to ensure that l and r* are indexed by the same type. Moreover, 9. already supports many common instances from base, hashable, deepseq, aeson, bytes, cereal, binary, and  quickcheck6 out of the box, so you can benefit from them as well.3456789:3456789:None,6FO;Like D , but for l and r taking four type indexes.>Like D , but for l and r taking three type indexes.ALike D , but for l and r taking two type indexes.DLike  from Data.Functor.Sum6, but only intended to be used with kinds other than Type.?This type is particularly useful when used in combination with  as  (D l r), so as to ensure that l and r* are indexed by the same type. Moreover, D. already supports many common instances from base, hashable, deepseq, aeson, bytes, cereal, binary, and  quickcheck6 out of the box, so you can benefit from them as well. ;<=>?@ABCDEF;<=>?@ABCDEFNoneP5G  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFG#'+/ $( ,0 %)!-1&*".2 9:785634DEFABC>?@;<=g !" !"#$%#$&'()*+,-./0112233456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[ \ ]#$^ _ ` abcdefghijklmnopqrst1u2v3wx!exinst-0.6-59pa2RarCk97Bgw5KbcbiVExinstExinst.InternalP1P2P3P4Exinst.Instances.SerialiseExinst.Instances.QuickCheckExinst.Instances.HashableExinst.Instances.DeepSeqExinst.Instances.CerealData.Bytes.SerialSerial Data.BinaryBinaryExinst.Instances.BytesData.Serialize SerializeExinst.Instances.BinaryExinst.Instances.BaseExinst.Instances.AesonExinst.Internal.ProductData.Functor.ProductProductSome1Exinst.Internal.SumData.Functor.SumSumghc-prim GHC.Types Constraint'constraints-0.10-FQIKwPZfRX339bxyVkQIrKData.ConstraintDict'singletons-2.3.1-Byj4EgW6QU6HIu1banTzFFData.SingletonsSingSingIDict4dict4Dict3dict3Dict2dict2Dict1dict1Dict0dict0Some4Some3Some2some1some2some3some4 withSome1 withSome2 withSome3 withSome4 withSome1Sing withSome2Sing withSome3Sing withSome4Sing fromSome1 fromSome2 fromSome3 fromSome4_Some1_Some2_Some3_Some4 some1SingRep some2SingRep some3SingRep some4SingRepsame1same2same3same4S4S4LS4RS3S3LS3RS2S2LS2RS1S1LS1Rsalt0$fSerializeSome4Demote$fSerializeSome3$fSerializeSome2$fSerializeSome1 $fSerialSome4 $fSerialSome3 $fSerialSome2 $fSerialSome1 $fBinarySome4 $fBinarySome3 $fBinarySome2 $fBinarySome1 Cartesian4 Eithers4' Cartesian3 Eithers3' Eithers2' Eithers1' $fInjEitheraInjinjprj Some4'Show Some3'Show Some2'Show Some1'Show