{-# LANGUAGE CPP                  #-}
{-# LANGUAGE DataKinds            #-}
{-# LANGUAGE FlexibleInstances    #-}
{-# LANGUAGE OverloadedStrings    #-}
{-# LANGUAGE PatternSynonyms      #-}
{-# LANGUAGE TupleSections        #-}
{-# LANGUAGE TypeFamilies         #-}
{-# LANGUAGE TypeOperators        #-}
{-# LANGUAGE TypeSynonymInstances #-}
{-# LANGUAGE UndecidableInstances #-}

{-# OPTIONS_GHC -Wno-orphans #-}

#include "MachDeps.h"

module Database.PostgreSQL.Pure.Internal.Builder
  ( startup
  , password
  , terminate
  , query
  , parse
  , bind
  , execute
  , describePreparedStatement
  , describePortal
  , flush
  , sync
  , closePreparedStatement
  , closePortal
  ) where

import           Database.PostgreSQL.Pure.Internal.Data           (BindParameterFormatCodes (BindParameterFormatCodesAll, BindParameterFormatCodesAllDefault, BindParameterFormatCodesEach),
                                                                   BindResultFormatCodes (BindResultFormatCodesAllDefault, BindResultFormatCodesEach, BindResultFormatCodesNothing),
                                                                   FormatCode (BinaryFormat, TextFormat),
                                                                   GToRecord (gToRecord), Oid (Oid),
                                                                   PortalName (PortalName),
                                                                   PreparedStatementName (PreparedStatementName),
                                                                   Query (Query),
                                                                   TimeOfDayWithTimeZone (TimeOfDayWithTimeZone),
                                                                   ToField (toField), ToRecord (toRecord))
import           Database.PostgreSQL.Pure.Internal.Exception      (cantReachHere)
import qualified Database.PostgreSQL.Pure.Internal.MonadFail      as MonadFail
import qualified Database.PostgreSQL.Pure.Oid                     as Oid
import qualified Database.PostgreSQL.Simple.Time.Internal.Printer as Time

import           Control.Exception.Safe                           (assert)
import qualified Data.Bool                                        as B
import qualified Data.ByteString                                  as BS
import qualified Data.ByteString.Builder                          as BSB
import qualified Data.ByteString.Builder.Prim                     as BSBP
import qualified Data.ByteString.Lazy                             as BSL
import qualified Data.Double.Conversion.ByteString                as DC
import           Data.Fixed                                       (Fixed (MkFixed), HasResolution, Pico, resolution)
import           Data.Int                                         (Int16, Int32, Int64)
import qualified Data.Map.Strict                                  as M
import           Data.Scientific                                  (FPFormat (Exponent), Scientific, formatScientific,
                                                                   scientific)
import           Data.Time                                        (Day, DiffTime, NominalDiffTime, TimeOfDay, UTCTime)
import           Data.Time.LocalTime                              (LocalTime)
import           Data.Tuple.Single                                (Single, pattern Single)
import qualified GHC.Generics                                     as Generics
import qualified PostgreSQL.Binary.Encoding                       as BE

startup
  :: String -- ^ user name. ASCII text.
  -> String -- ^ database name. ASCII text.
  -> BSB.Builder
startup user database =
  let
    len =
      4 -- length field
      + 2 -- protocol major version
      + 2 -- protocol minor version
      + 5 -- "user\0"
      + length user
      + 1 -- '\0'
      + 9 -- "database\0"
      + length database
      + 1 -- '\0'
      + 1 -- '\0'
  in
    BSB.int32BE (fromIntegral len)
    <> BSB.int16BE 3 -- protocol major version
    <> BSB.int16BE 0 -- protocol minor version
    <> BSB.string7 "user\0"
    <> BSB.string7 user
    <> BSB.char7 '\0'
    <> BSB.string7 "database\0" <> BSB.string7 database <> BSB.char7 '\0'
    <> BSB.char7 '\0'

password
  :: BS.ByteString -- ^ password, which may be hashed. ASCII text.
  -> BSB.Builder
password password =
  let
    len = 4 + BS.length password + 1
  in
    BSB.char7 'p'
    <> BSB.int32BE (fromIntegral len)
    <> BSB.byteString password
    <> BSB.char7 '\0'

query :: Query -> BSB.Builder
query (Query q) =
  let
    len = 4 + BS.length q + 1
  in
    BSB.char7 'Q'
    <> BSB.int32BE (fromIntegral len)
    <> BSB.byteString q
    <> BSB.char7 '\0'

terminate :: BS.ByteString
terminate = BS.pack [0x58, 0, 0, 0, 4]

parse
  :: PreparedStatementName
  -> Query
  -> [Oid] -- ^ OIDs of data types of parameters
  -> BSB.Builder
parse (PreparedStatementName name) (Query q) oids =
  let
    len = 4 + BS.length name + 1 + BS.length q + 1 + 2 + noids * 4
    noids = length oids
  in
    BSB.char7 'P'
    <> BSB.int32BE (fromIntegral len)
    <> BSB.byteString name
    <> BSB.char7 '\0'
    <> BSB.byteString q
    <> BSB.char7 '\0'
    <> BSB.int16BE (fromIntegral noids)
    <> mconcat (BSB.int32BE . (\(Oid n) -> n) <$> oids)

bind
  :: PortalName
  -> PreparedStatementName
  -> BindParameterFormatCodes
  -> [Maybe BS.ByteString]
  -> BindResultFormatCodes
  -> BSB.Builder
bind (PortalName portalName) (PreparedStatementName preparedStatementName) parameterFormatCodes parameters resultFormatCodes =
  let
    len =
      4 -- length field
      + BS.length portalName
      + 1 -- '\0'
      + BS.length preparedStatementName
      + 1 -- '\0'
      + 2 -- the number of parameter format codes
      + ( case parameterFormatCodes of -- format codes
            BindParameterFormatCodesAllDefault -> 0
            BindParameterFormatCodesAll _      -> 2
            BindParameterFormatCodesEach cs    -> 2 * length cs
        )
      + 2 -- the number of parameters
      + 4 * length parameters -- length field of each parameters
      + sum ((\p -> case p of Just bs -> BS.length bs; Nothing -> 0) <$> parameters) -- parameters themselves
      + 2 -- the number of result format codes
      + ( case resultFormatCodes of -- format codes
            BindResultFormatCodesNothing    -> 0
            BindResultFormatCodesAllDefault -> 0
            BindResultFormatCodesEach cs    -> 2 * length cs
        )
  in
    BSB.char7 'B'
    <> BSB.int32BE (fromIntegral len)
    <> BSB.byteString portalName
    <> BSB.char7 '\0'
    <> BSB.byteString preparedStatementName
    <> BSB.char7 '\0'
    <> ( case parameterFormatCodes of
           BindParameterFormatCodesAllDefault -> BSB.int16BE 0
           BindParameterFormatCodesAll c -> BSB.int16BE 1 <> BSB.int16BE (fromIntegral $ fromEnum c)
           BindParameterFormatCodesEach cs -> BSB.int16BE (fromIntegral $ length cs) <> mconcat (BSB.int16BE . fromIntegral . fromEnum <$> cs)
       )
    <> BSB.int16BE (fromIntegral $ length parameters)
    <> mconcat
         ( ( \p ->
               case p of
                 Just bs -> BSB.int32BE (fromIntegral $ BS.length bs) <> BSB.byteString bs
                 Nothing -> BSB.int32BE (-1)
           ) <$> parameters
         )
    <> ( case resultFormatCodes of
           BindResultFormatCodesNothing -> BSB.int16BE 0
           BindResultFormatCodesAllDefault -> BSB.int16BE 1
           BindResultFormatCodesEach cs -> BSB.int16BE (fromIntegral $ length cs) <> mconcat (BSB.int16BE . fromIntegral . fromEnum <$> cs)
       )

execute
  :: PortalName
  -> Int -- ^ limit of the number of rows
  -> BSB.Builder
execute (PortalName name) limitRows =
  let
    len = 4 + BS.length name + 1 + 4
  in
    BSB.char7 'E'
    <> BSB.int32BE (fromIntegral len)
    <> BSB.byteString name
    <> BSB.char7 '\0'
    <> BSB.int32BE (fromIntegral limitRows)

flush :: BS.ByteString
flush = BS.pack [0x48, 0, 0, 0, 4]

sync :: BS.ByteString
sync = BS.pack [0x53, 0, 0, 0, 4]

describePreparedStatement :: PreparedStatementName -> BSB.Builder
describePreparedStatement (PreparedStatementName name) = doDescribe 'S' name

closePreparedStatement :: PreparedStatementName -> BSB.Builder
closePreparedStatement (PreparedStatementName name) = doClose 'S' name

describePortal :: PortalName -> BSB.Builder
describePortal (PortalName name) = doDescribe 'P' name

closePortal :: PortalName -> BSB.Builder
closePortal (PortalName name) = doClose 'P' name

doDescribe :: Char -> BS.ByteString -> BSB.Builder
doDescribe typ name =
  let
    len = 4 + 1 + BS.length name + 1
  in
    BSB.char7 'D'
    <> BSB.int32BE (fromIntegral len)
    <> BSB.char7 typ
    <> BSB.byteString name
    <> BSB.char7 '\0'

doClose :: Char -> BS.ByteString -> BSB.Builder
doClose typ name =
  let
    len = 4 + 1 + BS.length name + 1
  in
    BSB.char7 'C'
    <> BSB.int32BE (fromIntegral len)
    <> BSB.char7 typ
    <> BSB.byteString name
    <> BSB.char7 '\0'

instance ToField () where
  toField _ _ _ _ _ = fail "no values for units"

instance ToField Bool where
  toField _ _ Nothing TextFormat = pure . Just . B.bool "TRUE" "FALSE"
  toField _ _ Nothing BinaryFormat = pure . Just . BE.encodingBytes . BE.bool
  toField backendParams encode (Just o) f | o == Oid.bool = toField backendParams encode Nothing f
                                          | otherwise = const $ fail $ "type mismatch (ToField): OID: " <> show o <> ", Haskell: Bool"

instance ToField Int where
#if WORD_SIZE_IN_BITS > 64
  toField _ _ _ _ _ = fail "the Int's size is too large, larger then 64 bits"
#else
  toField _ _ Nothing TextFormat = pure . Just. BSL.toStrict . BSB.toLazyByteString . BSB.intDec
#if WORD_SIZE_IN_BITS > 32
  toField _ _ Nothing BinaryFormat = pure . Just . BE.encodingBytes . BE.int8_int64 . fromIntegral
  toField backendParams encode (Just o) TextFormat | o == Oid.int8 = toField backendParams encode Nothing TextFormat
  toField backendParams encode (Just o) BinaryFormat | o == Oid.int8 = toField backendParams encode Nothing BinaryFormat
#else /* the width of Int is wider than 30 bits */
  toField _ _ Nothing BinaryFormat = pure . Just . BE.encodingBytes . BE.int4_int32 . fromIntegral
  toField backendParams encode (Just o) TextFormat | o `elem` [Oid.int4, Oid.int8] = toField backendParams encode Nothing TextFormat
  toField backendParams encode (Just o) BinaryFormat | o == Oid.int4 = toField backendParams encode Nothing BinaryFormat
                                                     | o == Oid.int8 = pure . Just . BE.encodingBytes . BE.int8_int64 . fromIntegral
#endif
  toField _ _ (Just o) _ = const $ fail $ "type mismatch (ToField): OID: " <> show o <> ", Haskell: Int"
#endif

instance ToField Int16 where
  toField _ _ Nothing TextFormat = pure . Just . BSL.toStrict . BSB.toLazyByteString . BSB.int16Dec
  toField _ _ Nothing BinaryFormat = pure . Just . BE.encodingBytes . BE.int2_int16
  toField backendParams encode (Just o) f | o == Oid.int2 = toField backendParams encode Nothing f
                                          | otherwise = const $ fail $ "type mismatch (ToField): OID: " <> show o <> ", Haskell: Int16"

instance ToField Int32 where
  toField _ _ Nothing TextFormat = pure . Just . BSL.toStrict . BSB.toLazyByteString . BSB.int32Dec
  toField _ _ Nothing BinaryFormat = pure . Just . BE.encodingBytes . BE.int4_int32
  toField backendParams encode (Just o) TextFormat | o `elem` [Oid.int4, Oid.int8] = toField backendParams encode Nothing TextFormat
  toField backendParams encode (Just o) BinaryFormat | o == Oid.int4 = toField backendParams encode Nothing BinaryFormat
                                                     | o == Oid.int8 = pure . Just . BE.encodingBytes . BE.int8_int64 . fromIntegral
  toField _ _ (Just o) _ = const $ fail $ "type mismatch (ToField): OID: " <> show o <> ", Haskell: Int32"

instance ToField Int64 where
  toField _ _ Nothing TextFormat = pure . Just . BSL.toStrict . BSB.toLazyByteString . BSB.int64Dec
  toField _ _ Nothing BinaryFormat = pure . Just . BE.encodingBytes . BE.int8_int64
  toField backendParams encode (Just o) f | o == Oid.int8 = toField backendParams encode Nothing f
                                          | otherwise = const $ fail $ "type mismatch (ToField): OID: " <> show o <> ", Haskell: Int64"

instance ToField Float where
  toField _ _ Nothing TextFormat = pure . Just . DC.toShortest . realToFrac
  toField _ _ Nothing BinaryFormat = pure . Just . BE.encodingBytes . BE.float4
  toField backendParams encode (Just o) TextFormat | o `elem` [Oid.float4, Oid.float8] = toField backendParams encode Nothing TextFormat
  toField backendParams encode (Just o) BinaryFormat | o == Oid.float4 = toField backendParams encode Nothing BinaryFormat
                                                     | o == Oid.float8 = pure . Just . BE.encodingBytes . BE.float8 . realToFrac
  toField _ _ (Just o) _ = const $ fail $ "type mismatch (ToField): OID: " <> show o <> ", Haskell: Float"

instance ToField Double where
  toField _ _ Nothing TextFormat = pure . Just . DC.toShortest
  toField _ _ Nothing BinaryFormat = pure . Just . BE.encodingBytes . BE.float8
  toField backendParams encode (Just o) f | o == Oid.float8 = toField backendParams encode Nothing f
                                          | otherwise = const $ fail $ "type mismatch (ToField): OID: " <> show o <> ", Haskell: Double"

instance ToField Scientific where
  toField _ encode Nothing TextFormat = (Just <$>) . MonadFail.fromEither . encode . formatScientific Exponent Nothing
  toField _ _ Nothing BinaryFormat = pure . Just . BE.encodingBytes . BE.numeric
  toField backendParams encode (Just o) f | o == Oid.numeric = toField backendParams encode Nothing f
                                          | otherwise = const $ fail $ "type mismatch (ToField): OID: " <> show o <> ", Haskell: Scientific"

instance HasResolution a => ToField (Fixed a) where
  toField _ encode Nothing TextFormat v = Just <$> MonadFail.fromEither (encode (show v)) -- XXX maybe slow
  toField _ _ Nothing BinaryFormat v@(MkFixed i) = pure $ Just $ BE.encodingBytes $ BE.numeric $ scientific i (fromInteger $ resolution v)
  toField backendParams encode (Just o) f v | o == Oid.numeric = toField backendParams encode Nothing f v
                                            | otherwise = fail $ "type mismatch (ToField): OID: " <> show o <> ", Haskell: Fixed a (" <> show (resolution v) <> ")"

instance ToField Char where
  toField _ encode Nothing _ v = Just <$> MonadFail.fromEither (encode [v])
  toField backendParams encode (Just o) f v | o == Oid.char = toField backendParams encode Nothing f v
                                            | otherwise = fail $ "type mismatch (ToField): OID: " <> show o <> ", Haskell: Char"

instance ToField String where
  toField _ encode Nothing _ = (Just <$>) . MonadFail.fromEither . encode
  toField backendParams encode (Just _) TextFormat = toField backendParams encode Nothing TextFormat
  toField backendParams encode (Just o) BinaryFormat | o `elem` [Oid.text, Oid.bpchar, Oid.varchar, Oid.name] = toField backendParams encode Nothing BinaryFormat
                                                     | otherwise = const $ fail $ "type mismatch (ToField): OID: " <> show o <> ", Haskell: String"

instance ToField BS.ByteString where
  toField _ _ Nothing _ = pure . Just
  toField backendParams encode (Just o) f | o `elem` [Oid.text, Oid.bpchar, Oid.varchar, Oid.name, Oid.bytea] = toField backendParams encode Nothing f
                                          | otherwise = const $ fail $ "type mismatch (ToField): OID: " <> show o <> ", Haskell: ByteString (strict)"

instance ToField Day where -- TODO infinity/-infinity
  toField _ _ Nothing TextFormat = pure . Just . BSL.toStrict . BSB.toLazyByteString . BSBP.primBounded Time.day
  toField _ _ Nothing BinaryFormat = pure . Just . BE.encodingBytes . BE.date
  toField backendParams encode (Just o) f | o == Oid.date = toField backendParams encode Nothing f
                                          | otherwise = const $ fail $ "type mismatch (ToField): OID: " <> show o <> ", Haskell: Day"

instance ToField TimeOfDay where
  toField _ _ Nothing TextFormat = pure . Just . BSL.toStrict . BSB.toLazyByteString . BSBP.primBounded Time.timeOfDay
  toField backendParams _ Nothing BinaryFormat =
    case M.lookup "integer_datetimes" backendParams of
      Nothing    -> const $ fail "not found \"integer_datetimes\" backend parameter"
      Just "on"  -> pure . Just . BE.encodingBytes . BE.time_int
      Just "off" -> pure . Just . BE.encodingBytes . BE.time_float
      Just v     -> const $ fail $ "\"integer_datetimes\" has unrecognized value: " <> show v
  toField backendParams encode (Just o) f | o == Oid.time = toField backendParams encode Nothing f
                                          | otherwise = const $ fail $ "type mismatch (ToField): OID: " <> show o <> ", Haskell: TimeOfDay"

instance ToField TimeOfDayWithTimeZone where
  toField _ _ Nothing TextFormat = pure . Just . BSL.toStrict . BSB.toLazyByteString . BSBP.primBounded (go BSBP.>$< Time.timeOfDay BSBP.>*< Time.timeZone)
                                   where go (TimeOfDayWithTimeZone t tz) = (t, tz)
  toField backendParams _ Nothing BinaryFormat =
    case M.lookup "integer_datetimes" backendParams of
      Nothing    -> const $ fail "not found \"integer_datetimes\" backend parameter"
      Just "on"  -> pure . Just . BE.encodingBytes . BE.timetz_int . \(TimeOfDayWithTimeZone t tz) -> (t, tz)
      Just "off" -> pure . Just . BE.encodingBytes . BE.timetz_float . \(TimeOfDayWithTimeZone t tz) -> (t, tz)
      Just v     -> const $ fail $ "\"integer_datetimes\" has unrecognized value: " <> show v
  toField backendParams encode (Just o) f | o == Oid.timetz = toField backendParams encode Nothing f
                                          | otherwise = const $ fail $ "type mismatch (ToField): OID: " <> show o <> ", Haskell: TimeOfDayWithTimeZone)"

instance ToField LocalTime where
  toField _ _ Nothing TextFormat = pure . Just . BSL.toStrict . BSB.toLazyByteString . BSBP.primBounded Time.localTime
  toField _ _ Nothing BinaryFormat = pure . Just . BE.encodingBytes . BE.timestamp_int
  toField backendParams encode (Just o) f | o == Oid.timestamp = toField backendParams encode Nothing f
                                          | otherwise = const $ fail $ "type mismatch (ToField): OID: " <> show o <> ", Haskell: LocalTime"

instance ToField UTCTime where
  toField _ _ Nothing TextFormat = pure . Just . BSL.toStrict . BSB.toLazyByteString . BSBP.primBounded Time.utcTime
  toField _ _ Nothing BinaryFormat = pure . Just . BE.encodingBytes . BE.timestamptz_int
  toField backendParams encode (Just o) f | o == Oid.timestamptz = toField backendParams encode Nothing f
                                          | otherwise = const $ fail $ "type mismatch (ToField): OID: " <> show o <> ", Haskell: UTCTime"

instance ToField DiffTime where
  toField _ encode Nothing TextFormat = (Just <$>) . MonadFail.fromEither . encode . show -- XXX maybe slow
  toField _ _ Nothing BinaryFormat = pure . Just . BE.encodingBytes . BE.interval_int
  toField backendParams encode (Just o) f | o == Oid.interval = toField backendParams encode Nothing f
                                          | otherwise = const $ fail $ "type mismatch (ToField): OID: " <> show o <> ", Haskell: DiffTime"

instance ToField NominalDiffTime where
  toField backendParams encode Nothing f = toField backendParams encode Nothing f . (realToFrac :: NominalDiffTime -> Pico)
  toField backendParams encode (Just o) f | o == Oid.numeric = toField backendParams encode Nothing f
                                          | otherwise = const $ fail $ "type mismatch (ToField): OID: " <> show o <> ", Haskell: NominalDiffTime"

instance ToField Oid where
  toField _ _ Nothing TextFormat (Oid v) = pure $ Just $ BSL.toStrict $ BSB.toLazyByteString $ BSB.int32Dec v
  toField _ _ Nothing BinaryFormat (Oid v) = pure $ Just $ BE.encodingBytes $ BE.int4_int32 v
  toField backendParams encode (Just o) f v | o == Oid.oid = toField backendParams encode Nothing f v
                                            | otherwise = fail $ "type mismatch (ToField): OID: " <> show o <> ", Haskell: Oid"

instance ToField a => ToField (Maybe a) where
  toField backendParams encode oid f (Just v) = toField backendParams encode oid f v
  toField _ _ _ _ Nothing = pure $ Just $ BE.encodingBytes $ BE.int4_int32 (-1)

-- 0 tuple
instance ToRecord () where
  toRecord _ _ Nothing [] _ =
    pure []
  toRecord _ _ Nothing fs _ =
    fail $ "the number of format codes must be 0, actually " <> show (length fs)
  toRecord _ _ (Just []) [] _ =
    pure []
  toRecord _ _ (Just os) [] _ =
    fail $ "the number of OIDs must be 0, actually " <> show (length os)
  toRecord _ _ _ fs _ =
    fail $ "the number of format codes must be 0, actually " <> show (length fs)

-- 1 tuple
instance
  {-# OVERLAPPABLE #-}
  (ToField a, Single c, t ~ c a)
  => ToRecord t where
  toRecord backendParams encode Nothing [f] (Single v) =
    sequence [toField backendParams encode Nothing f v]
  toRecord _ _ Nothing [_] _ =
    cantReachHere
  toRecord backendParams encode (Just [o]) [f] (Single v) =
    sequence [toField backendParams encode (Just o) f v]
  toRecord _ _ (Just os) [_] _ =
    fail $ "the number of OIDs must be 1, actually " <> show (length os)
  toRecord _ _ _ fs _ =
    fail $ "the number of format codes must be 1, actually " <> show (length fs)

-- 2-tuple
instance (ToField i0, ToField i1) => ToRecord (i0, i1) where
  toRecord backendParams encode Nothing [f0, f1] (v0, v1) =
    sequence [toField backendParams encode Nothing f0 v0, toField backendParams encode Nothing f1 v1]
  toRecord backendParams encode (Just [o0, o1]) [f0, f1] (v0, v1) =
    sequence [toField backendParams encode (Just o0) f0 v0, toField backendParams encode (Just o1) f1 v1]
  toRecord _ _ (Just os) _ _ =
    fail $ "the number of OIDs must be 2, actually " <> show (length os)
  toRecord _ _ _ fs _ =
    fail $ "the number of format codes must be 2, actually " <> show (length fs)

-- 3-tuple
instance (ToField i0, ToField i1, ToField i2) => ToRecord (i0, i1, i2) where
  toRecord backendParams encode Nothing [f0, f1, f2] (v0, v1, v2) =
    sequence [toField backendParams encode Nothing f0 v0, toField backendParams encode Nothing f1 v1, toField backendParams encode Nothing f2 v2]
  toRecord backendParams encode (Just [o0, o1, o2]) [f0, f1, f2] (v0, v1, v2) =
    sequence [toField backendParams encode (Just o0) f0 v0, toField backendParams encode (Just o1) f1 v1, toField backendParams encode (Just o2) f2 v2]
  toRecord _ _ (Just os) _ _ =
    fail $ "the number of OIDs must be 3, actually " <> show (length os)
  toRecord _ _ _ fs _ =
    fail $ "the number of format codes must be 3, actually " <> show (length fs)

-- 4-tuple
instance (ToField i0, ToField i1, ToField i2, ToField i3) => ToRecord (i0, i1, i2, i3) where
  toRecord backendParams encode Nothing [f0, f1, f2, f3] (v0, v1, v2, v3) =
    sequence [toField backendParams encode Nothing f0 v0, toField backendParams encode Nothing f1 v1, toField backendParams encode Nothing f2 v2, toField backendParams encode Nothing f3 v3]
  toRecord backendParams encode (Just [o0, o1, o2, o3]) [f0, f1, f2, f3] (v0, v1, v2, v3) =
    sequence [toField backendParams encode (Just o0) f0 v0, toField backendParams encode (Just o1) f1 v1, toField backendParams encode (Just o2) f2 v2, toField backendParams encode (Just o3) f3 v3]
  toRecord _ _ (Just os) _ _ =
    fail $ "the number of OIDs must be 4, actually " <> show (length os)
  toRecord _ _ _ fs _ =
    fail $ "the number of format codes must be 4, actually " <> show (length fs)

-- 5-tuple
instance (ToField i0, ToField i1, ToField i2, ToField i3, ToField i4) => ToRecord (i0, i1, i2, i3, i4) where
  toRecord backendParams encode Nothing [f0, f1, f2, f3, f4] (v0, v1, v2, v3, v4) =
    sequence [toField backendParams encode Nothing f0 v0, toField backendParams encode Nothing f1 v1, toField backendParams encode Nothing f2 v2, toField backendParams encode Nothing f3 v3, toField backendParams encode Nothing f4 v4]
  toRecord backendParams encode (Just [o0, o1, o2, o3, o4]) [f0, f1, f2, f3, f4] (v0, v1, v2, v3, v4) =
    sequence [toField backendParams encode (Just o0) f0 v0, toField backendParams encode (Just o1) f1 v1, toField backendParams encode (Just o2) f2 v2, toField backendParams encode (Just o3) f3 v3, toField backendParams encode (Just o4) f4 v4]
  toRecord _ _ (Just os) _ _ =
    fail $ "the number of OIDs must be 5, actually " <> show (length os)
  toRecord _ _ _ fs _ =
    fail $ "the number of format codes must be 5, actually " <> show (length fs)

-- 6-tuple
instance (ToField i0, ToField i1, ToField i2, ToField i3, ToField i4, ToField i5) => ToRecord (i0, i1, i2, i3, i4, i5) where
  toRecord backendParams encode Nothing [f0, f1, f2, f3, f4, f5] (v0, v1, v2, v3, v4, v5) =
    sequence [toField backendParams encode Nothing f0 v0, toField backendParams encode Nothing f1 v1, toField backendParams encode Nothing f2 v2, toField backendParams encode Nothing f3 v3, toField backendParams encode Nothing f4 v4, toField backendParams encode Nothing f5 v5]
  toRecord backendParams encode (Just [o0, o1, o2, o3, o4, o5]) [f0, f1, f2, f3, f4, f5] (v0, v1, v2, v3, v4, v5) =
    sequence [toField backendParams encode (Just o0) f0 v0, toField backendParams encode (Just o1) f1 v1, toField backendParams encode (Just o2) f2 v2, toField backendParams encode (Just o3) f3 v3, toField backendParams encode (Just o4) f4 v4, toField backendParams encode (Just o5) f5 v5]
  toRecord _ _ (Just os) _ _ =
    fail $ "the number of OIDs must be 6, actually " <> show (length os)
  toRecord _ _ _ fs _ =
    fail $ "the number of format codes must be 6, actually " <> show (length fs)

-- 7-tuple
instance (ToField i0, ToField i1, ToField i2, ToField i3, ToField i4, ToField i5, ToField i6) => ToRecord (i0, i1, i2, i3, i4, i5, i6) where
  toRecord backendParams encode Nothing [f0, f1, f2, f3, f4, f5, f6] (v0, v1, v2, v3, v4, v5, v6) =
    sequence [toField backendParams encode Nothing f0 v0, toField backendParams encode Nothing f1 v1, toField backendParams encode Nothing f2 v2, toField backendParams encode Nothing f3 v3, toField backendParams encode Nothing f4 v4, toField backendParams encode Nothing f5 v5, toField backendParams encode Nothing f6 v6]
  toRecord backendParams encode (Just [o0, o1, o2, o3, o4, o5, o6]) [f0, f1, f2, f3, f4, f5, f6] (v0, v1, v2, v3, v4, v5, v6) =
    sequence [toField backendParams encode (Just o0) f0 v0, toField backendParams encode (Just o1) f1 v1, toField backendParams encode (Just o2) f2 v2, toField backendParams encode (Just o3) f3 v3, toField backendParams encode (Just o4) f4 v4, toField backendParams encode (Just o5) f5 v5, toField backendParams encode (Just o6) f6 v6]
  toRecord _ _ (Just os) _ _ =
    fail $ "the number of OIDs must be 7, actually " <> show (length os)
  toRecord _ _ _ fs _ =
    fail $ "the number of format codes must be 7, actually " <> show (length fs)

-- 8-tuple
instance (ToField i0, ToField i1, ToField i2, ToField i3, ToField i4, ToField i5, ToField i6, ToField i7) => ToRecord (i0, i1, i2, i3, i4, i5, i6, i7) where
  toRecord backendParams encode Nothing [f0, f1, f2, f3, f4, f5, f6, f7] (v0, v1, v2, v3, v4, v5, v6, v7) =
    sequence [toField backendParams encode Nothing f0 v0, toField backendParams encode Nothing f1 v1, toField backendParams encode Nothing f2 v2, toField backendParams encode Nothing f3 v3, toField backendParams encode Nothing f4 v4, toField backendParams encode Nothing f5 v5, toField backendParams encode Nothing f6 v6, toField backendParams encode Nothing f7 v7]
  toRecord backendParams encode (Just [o0, o1, o2, o3, o4, o5, o6, o7]) [f0, f1, f2, f3, f4, f5, f6, f7] (v0, v1, v2, v3, v4, v5, v6, v7) =
    sequence [toField backendParams encode (Just o0) f0 v0, toField backendParams encode (Just o1) f1 v1, toField backendParams encode (Just o2) f2 v2, toField backendParams encode (Just o3) f3 v3, toField backendParams encode (Just o4) f4 v4, toField backendParams encode (Just o5) f5 v5, toField backendParams encode (Just o6) f6 v6, toField backendParams encode (Just o7) f7 v7]
  toRecord _ _ (Just os) _ _ =
    fail $ "the number of OIDs must be 8, actually " <> show (length os)
  toRecord _ _ _ fs _ =
    fail $ "the number of format codes must be 8, actually " <> show (length fs)

-- 9-tuple
instance (ToField i0, ToField i1, ToField i2, ToField i3, ToField i4, ToField i5, ToField i6, ToField i7, ToField i8) => ToRecord (i0, i1, i2, i3, i4, i5, i6, i7, i8) where
  toRecord backendParams encode Nothing [f0, f1, f2, f3, f4, f5, f6, f7, f8] (v0, v1, v2, v3, v4, v5, v6, v7, v8) =
    sequence [toField backendParams encode Nothing f0 v0, toField backendParams encode Nothing f1 v1, toField backendParams encode Nothing f2 v2, toField backendParams encode Nothing f3 v3, toField backendParams encode Nothing f4 v4, toField backendParams encode Nothing f5 v5, toField backendParams encode Nothing f6 v6, toField backendParams encode Nothing f7 v7, toField backendParams encode Nothing f8 v8]
  toRecord backendParams encode (Just [o0, o1, o2, o3, o4, o5, o6, o7, o8]) [f0, f1, f2, f3, f4, f5, f6, f7, f8] (v0, v1, v2, v3, v4, v5, v6, v7, v8) =
    sequence [toField backendParams encode (Just o0) f0 v0, toField backendParams encode (Just o1) f1 v1, toField backendParams encode (Just o2) f2 v2, toField backendParams encode (Just o3) f3 v3, toField backendParams encode (Just o4) f4 v4, toField backendParams encode (Just o5) f5 v5, toField backendParams encode (Just o6) f6 v6, toField backendParams encode (Just o7) f7 v7, toField backendParams encode (Just o8) f8 v8]
  toRecord _ _ (Just os) _ _ =
    fail $ "the number of OIDs must be 9, actually " <> show (length os)
  toRecord _ _ _ fs _ =
    fail $ "the number of format codes must be 9, actually " <> show (length fs)

-- 10-tuple
instance (ToField i0, ToField i1, ToField i2, ToField i3, ToField i4, ToField i5, ToField i6, ToField i7, ToField i8, ToField i9) => ToRecord (i0, i1, i2, i3, i4, i5, i6, i7, i8, i9) where
  toRecord backendParams encode Nothing [f0, f1, f2, f3, f4, f5, f6, f7, f8, f9] (v0, v1, v2, v3, v4, v5, v6, v7, v8, v9) =
    sequence [toField backendParams encode Nothing f0 v0, toField backendParams encode Nothing f1 v1, toField backendParams encode Nothing f2 v2, toField backendParams encode Nothing f3 v3, toField backendParams encode Nothing f4 v4, toField backendParams encode Nothing f5 v5, toField backendParams encode Nothing f6 v6, toField backendParams encode Nothing f7 v7, toField backendParams encode Nothing f8 v8, toField backendParams encode Nothing f9 v9]
  toRecord backendParams encode (Just [o0, o1, o2, o3, o4, o5, o6, o7, o8, o9]) [f0, f1, f2, f3, f4, f5, f6, f7, f8, f9] (v0, v1, v2, v3, v4, v5, v6, v7, v8, v9) =
    sequence [toField backendParams encode (Just o0) f0 v0, toField backendParams encode (Just o1) f1 v1, toField backendParams encode (Just o2) f2 v2, toField backendParams encode (Just o3) f3 v3, toField backendParams encode (Just o4) f4 v4, toField backendParams encode (Just o5) f5 v5, toField backendParams encode (Just o6) f6 v6, toField backendParams encode (Just o7) f7 v7, toField backendParams encode (Just o8) f8 v8, toField backendParams encode (Just o9) f9 v9]
  toRecord _ _ (Just os) _ _ =
    fail $ "the number of OIDs must be 10, actually " <> show (length os)
  toRecord _ _ _ fs _ =
    fail $ "the number of format codes must be 10, actually " <> show (length fs)

-- 11-tuple
instance (ToField i0, ToField i1, ToField i2, ToField i3, ToField i4, ToField i5, ToField i6, ToField i7, ToField i8, ToField i9, ToField i10) => ToRecord (i0, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10) where
  toRecord backendParams encode Nothing [f0, f1, f2, f3, f4, f5, f6, f7, f8, f9, f10] (v0, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10) =
    sequence [toField backendParams encode Nothing f0 v0, toField backendParams encode Nothing f1 v1, toField backendParams encode Nothing f2 v2, toField backendParams encode Nothing f3 v3, toField backendParams encode Nothing f4 v4, toField backendParams encode Nothing f5 v5, toField backendParams encode Nothing f6 v6, toField backendParams encode Nothing f7 v7, toField backendParams encode Nothing f8 v8, toField backendParams encode Nothing f9 v9, toField backendParams encode Nothing f10 v10]
  toRecord backendParams encode (Just [o0, o1, o2, o3, o4, o5, o6, o7, o8, o9, o10]) [f0, f1, f2, f3, f4, f5, f6, f7, f8, f9, f10] (v0, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10) =
    sequence [toField backendParams encode (Just o0) f0 v0, toField backendParams encode (Just o1) f1 v1, toField backendParams encode (Just o2) f2 v2, toField backendParams encode (Just o3) f3 v3, toField backendParams encode (Just o4) f4 v4, toField backendParams encode (Just o5) f5 v5, toField backendParams encode (Just o6) f6 v6, toField backendParams encode (Just o7) f7 v7, toField backendParams encode (Just o8) f8 v8, toField backendParams encode (Just o9) f9 v9, toField backendParams encode (Just o10) f10 v10]
  toRecord _ _ (Just os) _ _ =
    fail $ "the number of OIDs must be 11, actually " <> show (length os)
  toRecord _ _ _ fs _ =
    fail $ "the number of format codes must be 11, actually " <> show (length fs)

-- 12-tuple
instance (ToField i0, ToField i1, ToField i2, ToField i3, ToField i4, ToField i5, ToField i6, ToField i7, ToField i8, ToField i9, ToField i10, ToField i11) => ToRecord (i0, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11) where
  toRecord backendParams encode Nothing [f0, f1, f2, f3, f4, f5, f6, f7, f8, f9, f10, f11] (v0, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11) =
    sequence [toField backendParams encode Nothing f0 v0, toField backendParams encode Nothing f1 v1, toField backendParams encode Nothing f2 v2, toField backendParams encode Nothing f3 v3, toField backendParams encode Nothing f4 v4, toField backendParams encode Nothing f5 v5, toField backendParams encode Nothing f6 v6, toField backendParams encode Nothing f7 v7, toField backendParams encode Nothing f8 v8, toField backendParams encode Nothing f9 v9, toField backendParams encode Nothing f10 v10, toField backendParams encode Nothing f11 v11]
  toRecord backendParams encode (Just [o0, o1, o2, o3, o4, o5, o6, o7, o8, o9, o10, o11]) [f0, f1, f2, f3, f4, f5, f6, f7, f8, f9, f10, f11] (v0, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11) =
    sequence [toField backendParams encode (Just o0) f0 v0, toField backendParams encode (Just o1) f1 v1, toField backendParams encode (Just o2) f2 v2, toField backendParams encode (Just o3) f3 v3, toField backendParams encode (Just o4) f4 v4, toField backendParams encode (Just o5) f5 v5, toField backendParams encode (Just o6) f6 v6, toField backendParams encode (Just o7) f7 v7, toField backendParams encode (Just o8) f8 v8, toField backendParams encode (Just o9) f9 v9, toField backendParams encode (Just o10) f10 v10, toField backendParams encode (Just o11) f11 v11]
  toRecord _ _ (Just os) _ _ =
    fail $ "the number of OIDs must be 12, actually " <> show (length os)
  toRecord _ _ _ fs _ =
    fail $ "the number of format codes must be 12, actually " <> show (length fs)

-- 13-tuple
instance (ToField i0, ToField i1, ToField i2, ToField i3, ToField i4, ToField i5, ToField i6, ToField i7, ToField i8, ToField i9, ToField i10, ToField i11, ToField i12) => ToRecord (i0, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12) where
  toRecord backendParams encode Nothing [f0, f1, f2, f3, f4, f5, f6, f7, f8, f9, f10, f11, f12] (v0, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12) =
    sequence [toField backendParams encode Nothing f0 v0, toField backendParams encode Nothing f1 v1, toField backendParams encode Nothing f2 v2, toField backendParams encode Nothing f3 v3, toField backendParams encode Nothing f4 v4, toField backendParams encode Nothing f5 v5, toField backendParams encode Nothing f6 v6, toField backendParams encode Nothing f7 v7, toField backendParams encode Nothing f8 v8, toField backendParams encode Nothing f9 v9, toField backendParams encode Nothing f10 v10, toField backendParams encode Nothing f11 v11, toField backendParams encode Nothing f12 v12]
  toRecord backendParams encode (Just [o0, o1, o2, o3, o4, o5, o6, o7, o8, o9, o10, o11, o12]) [f0, f1, f2, f3, f4, f5, f6, f7, f8, f9, f10, f11, f12] (v0, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12) =
    sequence [toField backendParams encode (Just o0) f0 v0, toField backendParams encode (Just o1) f1 v1, toField backendParams encode (Just o2) f2 v2, toField backendParams encode (Just o3) f3 v3, toField backendParams encode (Just o4) f4 v4, toField backendParams encode (Just o5) f5 v5, toField backendParams encode (Just o6) f6 v6, toField backendParams encode (Just o7) f7 v7, toField backendParams encode (Just o8) f8 v8, toField backendParams encode (Just o9) f9 v9, toField backendParams encode (Just o10) f10 v10, toField backendParams encode (Just o11) f11 v11, toField backendParams encode (Just o12) f12 v12]
  toRecord _ _ (Just os) _ _ =
    fail $ "the number of OIDs must be 13, actually " <> show (length os)
  toRecord _ _ _ fs _ =
    fail $ "the number of format codes must be 13, actually " <> show (length fs)

-- 14-tuple
instance (ToField i0, ToField i1, ToField i2, ToField i3, ToField i4, ToField i5, ToField i6, ToField i7, ToField i8, ToField i9, ToField i10, ToField i11, ToField i12, ToField i13) => ToRecord (i0, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13) where
  toRecord backendParams encode Nothing [f0, f1, f2, f3, f4, f5, f6, f7, f8, f9, f10, f11, f12, f13] (v0, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13) =
    sequence [toField backendParams encode Nothing f0 v0, toField backendParams encode Nothing f1 v1, toField backendParams encode Nothing f2 v2, toField backendParams encode Nothing f3 v3, toField backendParams encode Nothing f4 v4, toField backendParams encode Nothing f5 v5, toField backendParams encode Nothing f6 v6, toField backendParams encode Nothing f7 v7, toField backendParams encode Nothing f8 v8, toField backendParams encode Nothing f9 v9, toField backendParams encode Nothing f10 v10, toField backendParams encode Nothing f11 v11, toField backendParams encode Nothing f12 v12, toField backendParams encode Nothing f13 v13]
  toRecord backendParams encode (Just [o0, o1, o2, o3, o4, o5, o6, o7, o8, o9, o10, o11, o12, o13]) [f0, f1, f2, f3, f4, f5, f6, f7, f8, f9, f10, f11, f12, f13] (v0, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13) =
    sequence [toField backendParams encode (Just o0) f0 v0, toField backendParams encode (Just o1) f1 v1, toField backendParams encode (Just o2) f2 v2, toField backendParams encode (Just o3) f3 v3, toField backendParams encode (Just o4) f4 v4, toField backendParams encode (Just o5) f5 v5, toField backendParams encode (Just o6) f6 v6, toField backendParams encode (Just o7) f7 v7, toField backendParams encode (Just o8) f8 v8, toField backendParams encode (Just o9) f9 v9, toField backendParams encode (Just o10) f10 v10, toField backendParams encode (Just o11) f11 v11, toField backendParams encode (Just o12) f12 v12, toField backendParams encode (Just o13) f13 v13]
  toRecord _ _ (Just os) _ _ =
    fail $ "the number of OIDs must be 14, actually " <> show (length os)
  toRecord _ _ _ fs _ =
    fail $ "the number of format codes must be 14, actually " <> show (length fs)

-- 15-tuple
instance (ToField i0, ToField i1, ToField i2, ToField i3, ToField i4, ToField i5, ToField i6, ToField i7, ToField i8, ToField i9, ToField i10, ToField i11, ToField i12, ToField i13, ToField i14) => ToRecord (i0, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14) where
  toRecord backendParams encode Nothing [f0, f1, f2, f3, f4, f5, f6, f7, f8, f9, f10, f11, f12, f13, f14] (v0, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14) =
    sequence [toField backendParams encode Nothing f0 v0, toField backendParams encode Nothing f1 v1, toField backendParams encode Nothing f2 v2, toField backendParams encode Nothing f3 v3, toField backendParams encode Nothing f4 v4, toField backendParams encode Nothing f5 v5, toField backendParams encode Nothing f6 v6, toField backendParams encode Nothing f7 v7, toField backendParams encode Nothing f8 v8, toField backendParams encode Nothing f9 v9, toField backendParams encode Nothing f10 v10, toField backendParams encode Nothing f11 v11, toField backendParams encode Nothing f12 v12, toField backendParams encode Nothing f13 v13, toField backendParams encode Nothing f14 v14]
  toRecord backendParams encode (Just [o0, o1, o2, o3, o4, o5, o6, o7, o8, o9, o10, o11, o12, o13, o14]) [f0, f1, f2, f3, f4, f5, f6, f7, f8, f9, f10, f11, f12, f13, f14] (v0, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14) =
    sequence [toField backendParams encode (Just o0) f0 v0, toField backendParams encode (Just o1) f1 v1, toField backendParams encode (Just o2) f2 v2, toField backendParams encode (Just o3) f3 v3, toField backendParams encode (Just o4) f4 v4, toField backendParams encode (Just o5) f5 v5, toField backendParams encode (Just o6) f6 v6, toField backendParams encode (Just o7) f7 v7, toField backendParams encode (Just o8) f8 v8, toField backendParams encode (Just o9) f9 v9, toField backendParams encode (Just o10) f10 v10, toField backendParams encode (Just o11) f11 v11, toField backendParams encode (Just o12) f12 v12, toField backendParams encode (Just o13) f13 v13, toField backendParams encode (Just o14) f14 v14]
  toRecord _ _ (Just os) _ _ =
    fail $ "the number of OIDs must be 15, actually " <> show (length os)
  toRecord _ _ _ fs _ =
    fail $ "the number of format codes must be 15, actually " <> show (length fs)

-- 16-tuple
instance (ToField i0, ToField i1, ToField i2, ToField i3, ToField i4, ToField i5, ToField i6, ToField i7, ToField i8, ToField i9, ToField i10, ToField i11, ToField i12, ToField i13, ToField i14, ToField i15) => ToRecord (i0, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14, i15) where
  toRecord backendParams encode Nothing [f0, f1, f2, f3, f4, f5, f6, f7, f8, f9, f10, f11, f12, f13, f14, f15] (v0, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15) =
    sequence [toField backendParams encode Nothing f0 v0, toField backendParams encode Nothing f1 v1, toField backendParams encode Nothing f2 v2, toField backendParams encode Nothing f3 v3, toField backendParams encode Nothing f4 v4, toField backendParams encode Nothing f5 v5, toField backendParams encode Nothing f6 v6, toField backendParams encode Nothing f7 v7, toField backendParams encode Nothing f8 v8, toField backendParams encode Nothing f9 v9, toField backendParams encode Nothing f10 v10, toField backendParams encode Nothing f11 v11, toField backendParams encode Nothing f12 v12, toField backendParams encode Nothing f13 v13, toField backendParams encode Nothing f14 v14, toField backendParams encode Nothing f15 v15]
  toRecord backendParams encode (Just [o0, o1, o2, o3, o4, o5, o6, o7, o8, o9, o10, o11, o12, o13, o14, o15]) [f0, f1, f2, f3, f4, f5, f6, f7, f8, f9, f10, f11, f12, f13, f14, f15] (v0, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15) =
    sequence [toField backendParams encode (Just o0) f0 v0, toField backendParams encode (Just o1) f1 v1, toField backendParams encode (Just o2) f2 v2, toField backendParams encode (Just o3) f3 v3, toField backendParams encode (Just o4) f4 v4, toField backendParams encode (Just o5) f5 v5, toField backendParams encode (Just o6) f6 v6, toField backendParams encode (Just o7) f7 v7, toField backendParams encode (Just o8) f8 v8, toField backendParams encode (Just o9) f9 v9, toField backendParams encode (Just o10) f10 v10, toField backendParams encode (Just o11) f11 v11, toField backendParams encode (Just o12) f12 v12, toField backendParams encode (Just o13) f13 v13, toField backendParams encode (Just o14) f14 v14, toField backendParams encode (Just o15) f15 v15]
  toRecord _ _ (Just os) _ _ =
    fail $ "the number of OIDs must be 16, actually " <> show (length os)
  toRecord _ _ _ fs _ =
    fail $ "the number of format codes must be 16, actually " <> show (length fs)

-- 17-tuple
instance (ToField i0, ToField i1, ToField i2, ToField i3, ToField i4, ToField i5, ToField i6, ToField i7, ToField i8, ToField i9, ToField i10, ToField i11, ToField i12, ToField i13, ToField i14, ToField i15, ToField i16) => ToRecord (i0, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14, i15, i16) where
  toRecord backendParams encode Nothing [f0, f1, f2, f3, f4, f5, f6, f7, f8, f9, f10, f11, f12, f13, f14, f15, f16] (v0, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16) =
    sequence [toField backendParams encode Nothing f0 v0, toField backendParams encode Nothing f1 v1, toField backendParams encode Nothing f2 v2, toField backendParams encode Nothing f3 v3, toField backendParams encode Nothing f4 v4, toField backendParams encode Nothing f5 v5, toField backendParams encode Nothing f6 v6, toField backendParams encode Nothing f7 v7, toField backendParams encode Nothing f8 v8, toField backendParams encode Nothing f9 v9, toField backendParams encode Nothing f10 v10, toField backendParams encode Nothing f11 v11, toField backendParams encode Nothing f12 v12, toField backendParams encode Nothing f13 v13, toField backendParams encode Nothing f14 v14, toField backendParams encode Nothing f15 v15, toField backendParams encode Nothing f16 v16]
  toRecord backendParams encode (Just [o0, o1, o2, o3, o4, o5, o6, o7, o8, o9, o10, o11, o12, o13, o14, o15, o16]) [f0, f1, f2, f3, f4, f5, f6, f7, f8, f9, f10, f11, f12, f13, f14, f15, f16] (v0, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16) =
    sequence [toField backendParams encode (Just o0) f0 v0, toField backendParams encode (Just o1) f1 v1, toField backendParams encode (Just o2) f2 v2, toField backendParams encode (Just o3) f3 v3, toField backendParams encode (Just o4) f4 v4, toField backendParams encode (Just o5) f5 v5, toField backendParams encode (Just o6) f6 v6, toField backendParams encode (Just o7) f7 v7, toField backendParams encode (Just o8) f8 v8, toField backendParams encode (Just o9) f9 v9, toField backendParams encode (Just o10) f10 v10, toField backendParams encode (Just o11) f11 v11, toField backendParams encode (Just o12) f12 v12, toField backendParams encode (Just o13) f13 v13, toField backendParams encode (Just o14) f14 v14, toField backendParams encode (Just o15) f15 v15, toField backendParams encode (Just o16) f16 v16]
  toRecord _ _ (Just os) _ _ =
    fail $ "the number of OIDs must be 17, actually " <> show (length os)
  toRecord _ _ _ fs _ =
    fail $ "the number of format codes must be 17, actually " <> show (length fs)

-- 18-tuple
instance (ToField i0, ToField i1, ToField i2, ToField i3, ToField i4, ToField i5, ToField i6, ToField i7, ToField i8, ToField i9, ToField i10, ToField i11, ToField i12, ToField i13, ToField i14, ToField i15, ToField i16, ToField i17) => ToRecord (i0, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14, i15, i16, i17) where
  toRecord backendParams encode Nothing [f0, f1, f2, f3, f4, f5, f6, f7, f8, f9, f10, f11, f12, f13, f14, f15, f16, f17] (v0, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17) =
    sequence [toField backendParams encode Nothing f0 v0, toField backendParams encode Nothing f1 v1, toField backendParams encode Nothing f2 v2, toField backendParams encode Nothing f3 v3, toField backendParams encode Nothing f4 v4, toField backendParams encode Nothing f5 v5, toField backendParams encode Nothing f6 v6, toField backendParams encode Nothing f7 v7, toField backendParams encode Nothing f8 v8, toField backendParams encode Nothing f9 v9, toField backendParams encode Nothing f10 v10, toField backendParams encode Nothing f11 v11, toField backendParams encode Nothing f12 v12, toField backendParams encode Nothing f13 v13, toField backendParams encode Nothing f14 v14, toField backendParams encode Nothing f15 v15, toField backendParams encode Nothing f16 v16, toField backendParams encode Nothing f17 v17]
  toRecord backendParams encode (Just [o0, o1, o2, o3, o4, o5, o6, o7, o8, o9, o10, o11, o12, o13, o14, o15, o16, o17]) [f0, f1, f2, f3, f4, f5, f6, f7, f8, f9, f10, f11, f12, f13, f14, f15, f16, f17] (v0, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17) =
    sequence [toField backendParams encode (Just o0) f0 v0, toField backendParams encode (Just o1) f1 v1, toField backendParams encode (Just o2) f2 v2, toField backendParams encode (Just o3) f3 v3, toField backendParams encode (Just o4) f4 v4, toField backendParams encode (Just o5) f5 v5, toField backendParams encode (Just o6) f6 v6, toField backendParams encode (Just o7) f7 v7, toField backendParams encode (Just o8) f8 v8, toField backendParams encode (Just o9) f9 v9, toField backendParams encode (Just o10) f10 v10, toField backendParams encode (Just o11) f11 v11, toField backendParams encode (Just o12) f12 v12, toField backendParams encode (Just o13) f13 v13, toField backendParams encode (Just o14) f14 v14, toField backendParams encode (Just o15) f15 v15, toField backendParams encode (Just o16) f16 v16, toField backendParams encode (Just o17) f17 v17]
  toRecord _ _ (Just os) _ _ =
    fail $ "the number of OIDs must be 18, actually " <> show (length os)
  toRecord _ _ _ fs _ =
    fail $ "the number of format codes must be 18, actually " <> show (length fs)

-- 19-tuple
instance (ToField i0, ToField i1, ToField i2, ToField i3, ToField i4, ToField i5, ToField i6, ToField i7, ToField i8, ToField i9, ToField i10, ToField i11, ToField i12, ToField i13, ToField i14, ToField i15, ToField i16, ToField i17, ToField i18) => ToRecord (i0, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14, i15, i16, i17, i18) where
  toRecord backendParams encode Nothing [f0, f1, f2, f3, f4, f5, f6, f7, f8, f9, f10, f11, f12, f13, f14, f15, f16, f17, f18] (v0, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18) =
    sequence [toField backendParams encode Nothing f0 v0, toField backendParams encode Nothing f1 v1, toField backendParams encode Nothing f2 v2, toField backendParams encode Nothing f3 v3, toField backendParams encode Nothing f4 v4, toField backendParams encode Nothing f5 v5, toField backendParams encode Nothing f6 v6, toField backendParams encode Nothing f7 v7, toField backendParams encode Nothing f8 v8, toField backendParams encode Nothing f9 v9, toField backendParams encode Nothing f10 v10, toField backendParams encode Nothing f11 v11, toField backendParams encode Nothing f12 v12, toField backendParams encode Nothing f13 v13, toField backendParams encode Nothing f14 v14, toField backendParams encode Nothing f15 v15, toField backendParams encode Nothing f16 v16, toField backendParams encode Nothing f17 v17, toField backendParams encode Nothing f18 v18]
  toRecord backendParams encode (Just [o0, o1, o2, o3, o4, o5, o6, o7, o8, o9, o10, o11, o12, o13, o14, o15, o16, o17, o18]) [f0, f1, f2, f3, f4, f5, f6, f7, f8, f9, f10, f11, f12, f13, f14, f15, f16, f17, f18] (v0, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18) =
    sequence [toField backendParams encode (Just o0) f0 v0, toField backendParams encode (Just o1) f1 v1, toField backendParams encode (Just o2) f2 v2, toField backendParams encode (Just o3) f3 v3, toField backendParams encode (Just o4) f4 v4, toField backendParams encode (Just o5) f5 v5, toField backendParams encode (Just o6) f6 v6, toField backendParams encode (Just o7) f7 v7, toField backendParams encode (Just o8) f8 v8, toField backendParams encode (Just o9) f9 v9, toField backendParams encode (Just o10) f10 v10, toField backendParams encode (Just o11) f11 v11, toField backendParams encode (Just o12) f12 v12, toField backendParams encode (Just o13) f13 v13, toField backendParams encode (Just o14) f14 v14, toField backendParams encode (Just o15) f15 v15, toField backendParams encode (Just o16) f16 v16, toField backendParams encode (Just o17) f17 v17, toField backendParams encode (Just o18) f18 v18]
  toRecord _ _ (Just os) _ _ =
    fail $ "the number of OIDs must be 19, actually " <> show (length os)
  toRecord _ _ _ fs _ =
    fail $ "the number of format codes must be 19, actually " <> show (length fs)

-- 20-tuple
instance (ToField i0, ToField i1, ToField i2, ToField i3, ToField i4, ToField i5, ToField i6, ToField i7, ToField i8, ToField i9, ToField i10, ToField i11, ToField i12, ToField i13, ToField i14, ToField i15, ToField i16, ToField i17, ToField i18, ToField i19) => ToRecord (i0, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14, i15, i16, i17, i18, i19) where
  toRecord backendParams encode Nothing [f0, f1, f2, f3, f4, f5, f6, f7, f8, f9, f10, f11, f12, f13, f14, f15, f16, f17, f18, f19] (v0, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19) =
    sequence [toField backendParams encode Nothing f0 v0, toField backendParams encode Nothing f1 v1, toField backendParams encode Nothing f2 v2, toField backendParams encode Nothing f3 v3, toField backendParams encode Nothing f4 v4, toField backendParams encode Nothing f5 v5, toField backendParams encode Nothing f6 v6, toField backendParams encode Nothing f7 v7, toField backendParams encode Nothing f8 v8, toField backendParams encode Nothing f9 v9, toField backendParams encode Nothing f10 v10, toField backendParams encode Nothing f11 v11, toField backendParams encode Nothing f12 v12, toField backendParams encode Nothing f13 v13, toField backendParams encode Nothing f14 v14, toField backendParams encode Nothing f15 v15, toField backendParams encode Nothing f16 v16, toField backendParams encode Nothing f17 v17, toField backendParams encode Nothing f18 v18, toField backendParams encode Nothing f19 v19]
  toRecord backendParams encode (Just [o0, o1, o2, o3, o4, o5, o6, o7, o8, o9, o10, o11, o12, o13, o14, o15, o16, o17, o18, o19]) [f0, f1, f2, f3, f4, f5, f6, f7, f8, f9, f10, f11, f12, f13, f14, f15, f16, f17, f18, f19] (v0, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19) =
    sequence [toField backendParams encode (Just o0) f0 v0, toField backendParams encode (Just o1) f1 v1, toField backendParams encode (Just o2) f2 v2, toField backendParams encode (Just o3) f3 v3, toField backendParams encode (Just o4) f4 v4, toField backendParams encode (Just o5) f5 v5, toField backendParams encode (Just o6) f6 v6, toField backendParams encode (Just o7) f7 v7, toField backendParams encode (Just o8) f8 v8, toField backendParams encode (Just o9) f9 v9, toField backendParams encode (Just o10) f10 v10, toField backendParams encode (Just o11) f11 v11, toField backendParams encode (Just o12) f12 v12, toField backendParams encode (Just o13) f13 v13, toField backendParams encode (Just o14) f14 v14, toField backendParams encode (Just o15) f15 v15, toField backendParams encode (Just o16) f16 v16, toField backendParams encode (Just o17) f17 v17, toField backendParams encode (Just o18) f18 v18, toField backendParams encode (Just o19) f19 v19]
  toRecord _ _ (Just os) _ _ =
    fail $ "the number of OIDs must be 20, actually " <> show (length os)
  toRecord _ _ _ fs _ =
    fail $ "the number of format codes must be 20, actually " <> show (length fs)

-- 21-tuple
instance (ToField i0, ToField i1, ToField i2, ToField i3, ToField i4, ToField i5, ToField i6, ToField i7, ToField i8, ToField i9, ToField i10, ToField i11, ToField i12, ToField i13, ToField i14, ToField i15, ToField i16, ToField i17, ToField i18, ToField i19, ToField i20) => ToRecord (i0, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14, i15, i16, i17, i18, i19, i20) where
  toRecord backendParams encode Nothing [f0, f1, f2, f3, f4, f5, f6, f7, f8, f9, f10, f11, f12, f13, f14, f15, f16, f17, f18, f19, f20] (v0, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20) =
    sequence [toField backendParams encode Nothing f0 v0, toField backendParams encode Nothing f1 v1, toField backendParams encode Nothing f2 v2, toField backendParams encode Nothing f3 v3, toField backendParams encode Nothing f4 v4, toField backendParams encode Nothing f5 v5, toField backendParams encode Nothing f6 v6, toField backendParams encode Nothing f7 v7, toField backendParams encode Nothing f8 v8, toField backendParams encode Nothing f9 v9, toField backendParams encode Nothing f10 v10, toField backendParams encode Nothing f11 v11, toField backendParams encode Nothing f12 v12, toField backendParams encode Nothing f13 v13, toField backendParams encode Nothing f14 v14, toField backendParams encode Nothing f15 v15, toField backendParams encode Nothing f16 v16, toField backendParams encode Nothing f17 v17, toField backendParams encode Nothing f18 v18, toField backendParams encode Nothing f19 v19, toField backendParams encode Nothing f20 v20]
  toRecord backendParams encode (Just [o0, o1, o2, o3, o4, o5, o6, o7, o8, o9, o10, o11, o12, o13, o14, o15, o16, o17, o18, o19, o20]) [f0, f1, f2, f3, f4, f5, f6, f7, f8, f9, f10, f11, f12, f13, f14, f15, f16, f17, f18, f19, f20] (v0, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20) =
    sequence [toField backendParams encode (Just o0) f0 v0, toField backendParams encode (Just o1) f1 v1, toField backendParams encode (Just o2) f2 v2, toField backendParams encode (Just o3) f3 v3, toField backendParams encode (Just o4) f4 v4, toField backendParams encode (Just o5) f5 v5, toField backendParams encode (Just o6) f6 v6, toField backendParams encode (Just o7) f7 v7, toField backendParams encode (Just o8) f8 v8, toField backendParams encode (Just o9) f9 v9, toField backendParams encode (Just o10) f10 v10, toField backendParams encode (Just o11) f11 v11, toField backendParams encode (Just o12) f12 v12, toField backendParams encode (Just o13) f13 v13, toField backendParams encode (Just o14) f14 v14, toField backendParams encode (Just o15) f15 v15, toField backendParams encode (Just o16) f16 v16, toField backendParams encode (Just o17) f17 v17, toField backendParams encode (Just o18) f18 v18, toField backendParams encode (Just o19) f19 v19, toField backendParams encode (Just o20) f20 v20]
  toRecord _ _ (Just os) _ _ =
    fail $ "the number of OIDs must be 21, actually " <> show (length os)
  toRecord _ _ _ fs _ =
    fail $ "the number of format codes must be 21, actually " <> show (length fs)

-- 22-tuple
instance (ToField i0, ToField i1, ToField i2, ToField i3, ToField i4, ToField i5, ToField i6, ToField i7, ToField i8, ToField i9, ToField i10, ToField i11, ToField i12, ToField i13, ToField i14, ToField i15, ToField i16, ToField i17, ToField i18, ToField i19, ToField i20, ToField i21) => ToRecord (i0, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14, i15, i16, i17, i18, i19, i20, i21) where
  toRecord backendParams encode Nothing [f0, f1, f2, f3, f4, f5, f6, f7, f8, f9, f10, f11, f12, f13, f14, f15, f16, f17, f18, f19, f20, f21] (v0, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21) =
    sequence [toField backendParams encode Nothing f0 v0, toField backendParams encode Nothing f1 v1, toField backendParams encode Nothing f2 v2, toField backendParams encode Nothing f3 v3, toField backendParams encode Nothing f4 v4, toField backendParams encode Nothing f5 v5, toField backendParams encode Nothing f6 v6, toField backendParams encode Nothing f7 v7, toField backendParams encode Nothing f8 v8, toField backendParams encode Nothing f9 v9, toField backendParams encode Nothing f10 v10, toField backendParams encode Nothing f11 v11, toField backendParams encode Nothing f12 v12, toField backendParams encode Nothing f13 v13, toField backendParams encode Nothing f14 v14, toField backendParams encode Nothing f15 v15, toField backendParams encode Nothing f16 v16, toField backendParams encode Nothing f17 v17, toField backendParams encode Nothing f18 v18, toField backendParams encode Nothing f19 v19, toField backendParams encode Nothing f20 v20, toField backendParams encode Nothing f21 v21]
  toRecord backendParams encode (Just [o0, o1, o2, o3, o4, o5, o6, o7, o8, o9, o10, o11, o12, o13, o14, o15, o16, o17, o18, o19, o20, o21]) [f0, f1, f2, f3, f4, f5, f6, f7, f8, f9, f10, f11, f12, f13, f14, f15, f16, f17, f18, f19, f20, f21] (v0, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21) =
    sequence [toField backendParams encode (Just o0) f0 v0, toField backendParams encode (Just o1) f1 v1, toField backendParams encode (Just o2) f2 v2, toField backendParams encode (Just o3) f3 v3, toField backendParams encode (Just o4) f4 v4, toField backendParams encode (Just o5) f5 v5, toField backendParams encode (Just o6) f6 v6, toField backendParams encode (Just o7) f7 v7, toField backendParams encode (Just o8) f8 v8, toField backendParams encode (Just o9) f9 v9, toField backendParams encode (Just o10) f10 v10, toField backendParams encode (Just o11) f11 v11, toField backendParams encode (Just o12) f12 v12, toField backendParams encode (Just o13) f13 v13, toField backendParams encode (Just o14) f14 v14, toField backendParams encode (Just o15) f15 v15, toField backendParams encode (Just o16) f16 v16, toField backendParams encode (Just o17) f17 v17, toField backendParams encode (Just o18) f18 v18, toField backendParams encode (Just o19) f19 v19, toField backendParams encode (Just o20) f20 v20, toField backendParams encode (Just o21) f21 v21]
  toRecord _ _ (Just os) _ _ =
    fail $ "the number of OIDs must be 22, actually " <> show (length os)
  toRecord _ _ _ fs _ =
    fail $ "the number of format codes must be 22, actually " <> show (length fs)

-- 23-tuple
instance (ToField i0, ToField i1, ToField i2, ToField i3, ToField i4, ToField i5, ToField i6, ToField i7, ToField i8, ToField i9, ToField i10, ToField i11, ToField i12, ToField i13, ToField i14, ToField i15, ToField i16, ToField i17, ToField i18, ToField i19, ToField i20, ToField i21, ToField i22) => ToRecord (i0, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14, i15, i16, i17, i18, i19, i20, i21, i22) where
  toRecord backendParams encode Nothing [f0, f1, f2, f3, f4, f5, f6, f7, f8, f9, f10, f11, f12, f13, f14, f15, f16, f17, f18, f19, f20, f21, f22] (v0, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22) =
    sequence [toField backendParams encode Nothing f0 v0, toField backendParams encode Nothing f1 v1, toField backendParams encode Nothing f2 v2, toField backendParams encode Nothing f3 v3, toField backendParams encode Nothing f4 v4, toField backendParams encode Nothing f5 v5, toField backendParams encode Nothing f6 v6, toField backendParams encode Nothing f7 v7, toField backendParams encode Nothing f8 v8, toField backendParams encode Nothing f9 v9, toField backendParams encode Nothing f10 v10, toField backendParams encode Nothing f11 v11, toField backendParams encode Nothing f12 v12, toField backendParams encode Nothing f13 v13, toField backendParams encode Nothing f14 v14, toField backendParams encode Nothing f15 v15, toField backendParams encode Nothing f16 v16, toField backendParams encode Nothing f17 v17, toField backendParams encode Nothing f18 v18, toField backendParams encode Nothing f19 v19, toField backendParams encode Nothing f20 v20, toField backendParams encode Nothing f21 v21, toField backendParams encode Nothing f22 v22]
  toRecord backendParams encode (Just [o0, o1, o2, o3, o4, o5, o6, o7, o8, o9, o10, o11, o12, o13, o14, o15, o16, o17, o18, o19, o20, o21, o22]) [f0, f1, f2, f3, f4, f5, f6, f7, f8, f9, f10, f11, f12, f13, f14, f15, f16, f17, f18, f19, f20, f21, f22] (v0, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22) =
    sequence [toField backendParams encode (Just o0) f0 v0, toField backendParams encode (Just o1) f1 v1, toField backendParams encode (Just o2) f2 v2, toField backendParams encode (Just o3) f3 v3, toField backendParams encode (Just o4) f4 v4, toField backendParams encode (Just o5) f5 v5, toField backendParams encode (Just o6) f6 v6, toField backendParams encode (Just o7) f7 v7, toField backendParams encode (Just o8) f8 v8, toField backendParams encode (Just o9) f9 v9, toField backendParams encode (Just o10) f10 v10, toField backendParams encode (Just o11) f11 v11, toField backendParams encode (Just o12) f12 v12, toField backendParams encode (Just o13) f13 v13, toField backendParams encode (Just o14) f14 v14, toField backendParams encode (Just o15) f15 v15, toField backendParams encode (Just o16) f16 v16, toField backendParams encode (Just o17) f17 v17, toField backendParams encode (Just o18) f18 v18, toField backendParams encode (Just o19) f19 v19, toField backendParams encode (Just o20) f20 v20, toField backendParams encode (Just o21) f21 v21, toField backendParams encode (Just o22) f22 v22]
  toRecord _ _ (Just os) _ _ =
    fail $ "the number of OIDs must be 23, actually " <> show (length os)
  toRecord _ _ _ fs _ =
    fail $ "the number of format codes must be 23, actually " <> show (length fs)

-- 24-tuple
instance (ToField i0, ToField i1, ToField i2, ToField i3, ToField i4, ToField i5, ToField i6, ToField i7, ToField i8, ToField i9, ToField i10, ToField i11, ToField i12, ToField i13, ToField i14, ToField i15, ToField i16, ToField i17, ToField i18, ToField i19, ToField i20, ToField i21, ToField i22, ToField i23) => ToRecord (i0, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14, i15, i16, i17, i18, i19, i20, i21, i22, i23) where
  toRecord backendParams encode Nothing [f0, f1, f2, f3, f4, f5, f6, f7, f8, f9, f10, f11, f12, f13, f14, f15, f16, f17, f18, f19, f20, f21, f22, f23] (v0, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23) =
    sequence [toField backendParams encode Nothing f0 v0, toField backendParams encode Nothing f1 v1, toField backendParams encode Nothing f2 v2, toField backendParams encode Nothing f3 v3, toField backendParams encode Nothing f4 v4, toField backendParams encode Nothing f5 v5, toField backendParams encode Nothing f6 v6, toField backendParams encode Nothing f7 v7, toField backendParams encode Nothing f8 v8, toField backendParams encode Nothing f9 v9, toField backendParams encode Nothing f10 v10, toField backendParams encode Nothing f11 v11, toField backendParams encode Nothing f12 v12, toField backendParams encode Nothing f13 v13, toField backendParams encode Nothing f14 v14, toField backendParams encode Nothing f15 v15, toField backendParams encode Nothing f16 v16, toField backendParams encode Nothing f17 v17, toField backendParams encode Nothing f18 v18, toField backendParams encode Nothing f19 v19, toField backendParams encode Nothing f20 v20, toField backendParams encode Nothing f21 v21, toField backendParams encode Nothing f22 v22, toField backendParams encode Nothing f23 v23]
  toRecord backendParams encode (Just [o0, o1, o2, o3, o4, o5, o6, o7, o8, o9, o10, o11, o12, o13, o14, o15, o16, o17, o18, o19, o20, o21, o22, o23]) [f0, f1, f2, f3, f4, f5, f6, f7, f8, f9, f10, f11, f12, f13, f14, f15, f16, f17, f18, f19, f20, f21, f22, f23] (v0, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23) =
    sequence [toField backendParams encode (Just o0) f0 v0, toField backendParams encode (Just o1) f1 v1, toField backendParams encode (Just o2) f2 v2, toField backendParams encode (Just o3) f3 v3, toField backendParams encode (Just o4) f4 v4, toField backendParams encode (Just o5) f5 v5, toField backendParams encode (Just o6) f6 v6, toField backendParams encode (Just o7) f7 v7, toField backendParams encode (Just o8) f8 v8, toField backendParams encode (Just o9) f9 v9, toField backendParams encode (Just o10) f10 v10, toField backendParams encode (Just o11) f11 v11, toField backendParams encode (Just o12) f12 v12, toField backendParams encode (Just o13) f13 v13, toField backendParams encode (Just o14) f14 v14, toField backendParams encode (Just o15) f15 v15, toField backendParams encode (Just o16) f16 v16, toField backendParams encode (Just o17) f17 v17, toField backendParams encode (Just o18) f18 v18, toField backendParams encode (Just o19) f19 v19, toField backendParams encode (Just o20) f20 v20, toField backendParams encode (Just o21) f21 v21, toField backendParams encode (Just o22) f22 v22, toField backendParams encode (Just o23) f23 v23]
  toRecord _ _ (Just os) _ _ =
    fail $ "the number of OIDs must be 24, actually " <> show (length os)
  toRecord _ _ _ fs _ =
    fail $ "the number of format codes must be 24, actually " <> show (length fs)

-- 25-tuple
instance (ToField i0, ToField i1, ToField i2, ToField i3, ToField i4, ToField i5, ToField i6, ToField i7, ToField i8, ToField i9, ToField i10, ToField i11, ToField i12, ToField i13, ToField i14, ToField i15, ToField i16, ToField i17, ToField i18, ToField i19, ToField i20, ToField i21, ToField i22, ToField i23, ToField i24) => ToRecord (i0, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14, i15, i16, i17, i18, i19, i20, i21, i22, i23, i24) where
  toRecord backendParams encode Nothing [f0, f1, f2, f3, f4, f5, f6, f7, f8, f9, f10, f11, f12, f13, f14, f15, f16, f17, f18, f19, f20, f21, f22, f23, f24] (v0, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24) =
    sequence [toField backendParams encode Nothing f0 v0, toField backendParams encode Nothing f1 v1, toField backendParams encode Nothing f2 v2, toField backendParams encode Nothing f3 v3, toField backendParams encode Nothing f4 v4, toField backendParams encode Nothing f5 v5, toField backendParams encode Nothing f6 v6, toField backendParams encode Nothing f7 v7, toField backendParams encode Nothing f8 v8, toField backendParams encode Nothing f9 v9, toField backendParams encode Nothing f10 v10, toField backendParams encode Nothing f11 v11, toField backendParams encode Nothing f12 v12, toField backendParams encode Nothing f13 v13, toField backendParams encode Nothing f14 v14, toField backendParams encode Nothing f15 v15, toField backendParams encode Nothing f16 v16, toField backendParams encode Nothing f17 v17, toField backendParams encode Nothing f18 v18, toField backendParams encode Nothing f19 v19, toField backendParams encode Nothing f20 v20, toField backendParams encode Nothing f21 v21, toField backendParams encode Nothing f22 v22, toField backendParams encode Nothing f23 v23, toField backendParams encode Nothing f24 v24]
  toRecord backendParams encode (Just [o0, o1, o2, o3, o4, o5, o6, o7, o8, o9, o10, o11, o12, o13, o14, o15, o16, o17, o18, o19, o20, o21, o22, o23, o24]) [f0, f1, f2, f3, f4, f5, f6, f7, f8, f9, f10, f11, f12, f13, f14, f15, f16, f17, f18, f19, f20, f21, f22, f23, f24] (v0, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24) =
    sequence [toField backendParams encode (Just o0) f0 v0, toField backendParams encode (Just o1) f1 v1, toField backendParams encode (Just o2) f2 v2, toField backendParams encode (Just o3) f3 v3, toField backendParams encode (Just o4) f4 v4, toField backendParams encode (Just o5) f5 v5, toField backendParams encode (Just o6) f6 v6, toField backendParams encode (Just o7) f7 v7, toField backendParams encode (Just o8) f8 v8, toField backendParams encode (Just o9) f9 v9, toField backendParams encode (Just o10) f10 v10, toField backendParams encode (Just o11) f11 v11, toField backendParams encode (Just o12) f12 v12, toField backendParams encode (Just o13) f13 v13, toField backendParams encode (Just o14) f14 v14, toField backendParams encode (Just o15) f15 v15, toField backendParams encode (Just o16) f16 v16, toField backendParams encode (Just o17) f17 v17, toField backendParams encode (Just o18) f18 v18, toField backendParams encode (Just o19) f19 v19, toField backendParams encode (Just o20) f20 v20, toField backendParams encode (Just o21) f21 v21, toField backendParams encode (Just o22) f22 v22, toField backendParams encode (Just o23) f23 v23, toField backendParams encode (Just o24) f24 v24]
  toRecord _ _ (Just os) _ _ =
    fail $ "the number of OIDs must be 25, actually " <> show (length os)
  toRecord _ _ _ fs _ =
    fail $ "the number of format codes must be 25, actually " <> show (length fs)

-- 26-tuple
instance (ToField i0, ToField i1, ToField i2, ToField i3, ToField i4, ToField i5, ToField i6, ToField i7, ToField i8, ToField i9, ToField i10, ToField i11, ToField i12, ToField i13, ToField i14, ToField i15, ToField i16, ToField i17, ToField i18, ToField i19, ToField i20, ToField i21, ToField i22, ToField i23, ToField i24, ToField i25) => ToRecord (i0, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14, i15, i16, i17, i18, i19, i20, i21, i22, i23, i24, i25) where
  toRecord backendParams encode Nothing [f0, f1, f2, f3, f4, f5, f6, f7, f8, f9, f10, f11, f12, f13, f14, f15, f16, f17, f18, f19, f20, f21, f22, f23, f24, f25] (v0, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25) =
    sequence [toField backendParams encode Nothing f0 v0, toField backendParams encode Nothing f1 v1, toField backendParams encode Nothing f2 v2, toField backendParams encode Nothing f3 v3, toField backendParams encode Nothing f4 v4, toField backendParams encode Nothing f5 v5, toField backendParams encode Nothing f6 v6, toField backendParams encode Nothing f7 v7, toField backendParams encode Nothing f8 v8, toField backendParams encode Nothing f9 v9, toField backendParams encode Nothing f10 v10, toField backendParams encode Nothing f11 v11, toField backendParams encode Nothing f12 v12, toField backendParams encode Nothing f13 v13, toField backendParams encode Nothing f14 v14, toField backendParams encode Nothing f15 v15, toField backendParams encode Nothing f16 v16, toField backendParams encode Nothing f17 v17, toField backendParams encode Nothing f18 v18, toField backendParams encode Nothing f19 v19, toField backendParams encode Nothing f20 v20, toField backendParams encode Nothing f21 v21, toField backendParams encode Nothing f22 v22, toField backendParams encode Nothing f23 v23, toField backendParams encode Nothing f24 v24, toField backendParams encode Nothing f25 v25]
  toRecord backendParams encode (Just [o0, o1, o2, o3, o4, o5, o6, o7, o8, o9, o10, o11, o12, o13, o14, o15, o16, o17, o18, o19, o20, o21, o22, o23, o24, o25]) [f0, f1, f2, f3, f4, f5, f6, f7, f8, f9, f10, f11, f12, f13, f14, f15, f16, f17, f18, f19, f20, f21, f22, f23, f24, f25] (v0, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25) =
    sequence [toField backendParams encode (Just o0) f0 v0, toField backendParams encode (Just o1) f1 v1, toField backendParams encode (Just o2) f2 v2, toField backendParams encode (Just o3) f3 v3, toField backendParams encode (Just o4) f4 v4, toField backendParams encode (Just o5) f5 v5, toField backendParams encode (Just o6) f6 v6, toField backendParams encode (Just o7) f7 v7, toField backendParams encode (Just o8) f8 v8, toField backendParams encode (Just o9) f9 v9, toField backendParams encode (Just o10) f10 v10, toField backendParams encode (Just o11) f11 v11, toField backendParams encode (Just o12) f12 v12, toField backendParams encode (Just o13) f13 v13, toField backendParams encode (Just o14) f14 v14, toField backendParams encode (Just o15) f15 v15, toField backendParams encode (Just o16) f16 v16, toField backendParams encode (Just o17) f17 v17, toField backendParams encode (Just o18) f18 v18, toField backendParams encode (Just o19) f19 v19, toField backendParams encode (Just o20) f20 v20, toField backendParams encode (Just o21) f21 v21, toField backendParams encode (Just o22) f22 v22, toField backendParams encode (Just o23) f23 v23, toField backendParams encode (Just o24) f24 v24, toField backendParams encode (Just o25) f25 v25]
  toRecord _ _ (Just os) _ _ =
    fail $ "the number of OIDs must be 26, actually " <> show (length os)
  toRecord _ _ _ fs _ =
    fail $ "the number of format codes must be 26, actually " <> show (length fs)

-- 27-tuple
instance (ToField i0, ToField i1, ToField i2, ToField i3, ToField i4, ToField i5, ToField i6, ToField i7, ToField i8, ToField i9, ToField i10, ToField i11, ToField i12, ToField i13, ToField i14, ToField i15, ToField i16, ToField i17, ToField i18, ToField i19, ToField i20, ToField i21, ToField i22, ToField i23, ToField i24, ToField i25, ToField i26) => ToRecord (i0, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14, i15, i16, i17, i18, i19, i20, i21, i22, i23, i24, i25, i26) where
  toRecord backendParams encode Nothing [f0, f1, f2, f3, f4, f5, f6, f7, f8, f9, f10, f11, f12, f13, f14, f15, f16, f17, f18, f19, f20, f21, f22, f23, f24, f25, f26] (v0, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26) =
    sequence [toField backendParams encode Nothing f0 v0, toField backendParams encode Nothing f1 v1, toField backendParams encode Nothing f2 v2, toField backendParams encode Nothing f3 v3, toField backendParams encode Nothing f4 v4, toField backendParams encode Nothing f5 v5, toField backendParams encode Nothing f6 v6, toField backendParams encode Nothing f7 v7, toField backendParams encode Nothing f8 v8, toField backendParams encode Nothing f9 v9, toField backendParams encode Nothing f10 v10, toField backendParams encode Nothing f11 v11, toField backendParams encode Nothing f12 v12, toField backendParams encode Nothing f13 v13, toField backendParams encode Nothing f14 v14, toField backendParams encode Nothing f15 v15, toField backendParams encode Nothing f16 v16, toField backendParams encode Nothing f17 v17, toField backendParams encode Nothing f18 v18, toField backendParams encode Nothing f19 v19, toField backendParams encode Nothing f20 v20, toField backendParams encode Nothing f21 v21, toField backendParams encode Nothing f22 v22, toField backendParams encode Nothing f23 v23, toField backendParams encode Nothing f24 v24, toField backendParams encode Nothing f25 v25, toField backendParams encode Nothing f26 v26]
  toRecord backendParams encode (Just [o0, o1, o2, o3, o4, o5, o6, o7, o8, o9, o10, o11, o12, o13, o14, o15, o16, o17, o18, o19, o20, o21, o22, o23, o24, o25, o26]) [f0, f1, f2, f3, f4, f5, f6, f7, f8, f9, f10, f11, f12, f13, f14, f15, f16, f17, f18, f19, f20, f21, f22, f23, f24, f25, f26] (v0, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26) =
    sequence [toField backendParams encode (Just o0) f0 v0, toField backendParams encode (Just o1) f1 v1, toField backendParams encode (Just o2) f2 v2, toField backendParams encode (Just o3) f3 v3, toField backendParams encode (Just o4) f4 v4, toField backendParams encode (Just o5) f5 v5, toField backendParams encode (Just o6) f6 v6, toField backendParams encode (Just o7) f7 v7, toField backendParams encode (Just o8) f8 v8, toField backendParams encode (Just o9) f9 v9, toField backendParams encode (Just o10) f10 v10, toField backendParams encode (Just o11) f11 v11, toField backendParams encode (Just o12) f12 v12, toField backendParams encode (Just o13) f13 v13, toField backendParams encode (Just o14) f14 v14, toField backendParams encode (Just o15) f15 v15, toField backendParams encode (Just o16) f16 v16, toField backendParams encode (Just o17) f17 v17, toField backendParams encode (Just o18) f18 v18, toField backendParams encode (Just o19) f19 v19, toField backendParams encode (Just o20) f20 v20, toField backendParams encode (Just o21) f21 v21, toField backendParams encode (Just o22) f22 v22, toField backendParams encode (Just o23) f23 v23, toField backendParams encode (Just o24) f24 v24, toField backendParams encode (Just o25) f25 v25, toField backendParams encode (Just o26) f26 v26]
  toRecord _ _ (Just os) _ _ =
    fail $ "the number of OIDs must be 27, actually " <> show (length os)
  toRecord _ _ _ fs _ =
    fail $ "the number of format codes must be 27, actually " <> show (length fs)

-- 28-tuple
instance (ToField i0, ToField i1, ToField i2, ToField i3, ToField i4, ToField i5, ToField i6, ToField i7, ToField i8, ToField i9, ToField i10, ToField i11, ToField i12, ToField i13, ToField i14, ToField i15, ToField i16, ToField i17, ToField i18, ToField i19, ToField i20, ToField i21, ToField i22, ToField i23, ToField i24, ToField i25, ToField i26, ToField i27) => ToRecord (i0, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14, i15, i16, i17, i18, i19, i20, i21, i22, i23, i24, i25, i26, i27) where
  toRecord backendParams encode Nothing [f0, f1, f2, f3, f4, f5, f6, f7, f8, f9, f10, f11, f12, f13, f14, f15, f16, f17, f18, f19, f20, f21, f22, f23, f24, f25, f26, f27] (v0, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27) =
    sequence [toField backendParams encode Nothing f0 v0, toField backendParams encode Nothing f1 v1, toField backendParams encode Nothing f2 v2, toField backendParams encode Nothing f3 v3, toField backendParams encode Nothing f4 v4, toField backendParams encode Nothing f5 v5, toField backendParams encode Nothing f6 v6, toField backendParams encode Nothing f7 v7, toField backendParams encode Nothing f8 v8, toField backendParams encode Nothing f9 v9, toField backendParams encode Nothing f10 v10, toField backendParams encode Nothing f11 v11, toField backendParams encode Nothing f12 v12, toField backendParams encode Nothing f13 v13, toField backendParams encode Nothing f14 v14, toField backendParams encode Nothing f15 v15, toField backendParams encode Nothing f16 v16, toField backendParams encode Nothing f17 v17, toField backendParams encode Nothing f18 v18, toField backendParams encode Nothing f19 v19, toField backendParams encode Nothing f20 v20, toField backendParams encode Nothing f21 v21, toField backendParams encode Nothing f22 v22, toField backendParams encode Nothing f23 v23, toField backendParams encode Nothing f24 v24, toField backendParams encode Nothing f25 v25, toField backendParams encode Nothing f26 v26, toField backendParams encode Nothing f27 v27]
  toRecord backendParams encode (Just [o0, o1, o2, o3, o4, o5, o6, o7, o8, o9, o10, o11, o12, o13, o14, o15, o16, o17, o18, o19, o20, o21, o22, o23, o24, o25, o26, o27]) [f0, f1, f2, f3, f4, f5, f6, f7, f8, f9, f10, f11, f12, f13, f14, f15, f16, f17, f18, f19, f20, f21, f22, f23, f24, f25, f26, f27] (v0, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27) =
    sequence [toField backendParams encode (Just o0) f0 v0, toField backendParams encode (Just o1) f1 v1, toField backendParams encode (Just o2) f2 v2, toField backendParams encode (Just o3) f3 v3, toField backendParams encode (Just o4) f4 v4, toField backendParams encode (Just o5) f5 v5, toField backendParams encode (Just o6) f6 v6, toField backendParams encode (Just o7) f7 v7, toField backendParams encode (Just o8) f8 v8, toField backendParams encode (Just o9) f9 v9, toField backendParams encode (Just o10) f10 v10, toField backendParams encode (Just o11) f11 v11, toField backendParams encode (Just o12) f12 v12, toField backendParams encode (Just o13) f13 v13, toField backendParams encode (Just o14) f14 v14, toField backendParams encode (Just o15) f15 v15, toField backendParams encode (Just o16) f16 v16, toField backendParams encode (Just o17) f17 v17, toField backendParams encode (Just o18) f18 v18, toField backendParams encode (Just o19) f19 v19, toField backendParams encode (Just o20) f20 v20, toField backendParams encode (Just o21) f21 v21, toField backendParams encode (Just o22) f22 v22, toField backendParams encode (Just o23) f23 v23, toField backendParams encode (Just o24) f24 v24, toField backendParams encode (Just o25) f25 v25, toField backendParams encode (Just o26) f26 v26, toField backendParams encode (Just o27) f27 v27]
  toRecord _ _ (Just os) _ _ =
    fail $ "the number of OIDs must be 28, actually " <> show (length os)
  toRecord _ _ _ fs _ =
    fail $ "the number of format codes must be 28, actually " <> show (length fs)

-- 29-tuple
instance (ToField i0, ToField i1, ToField i2, ToField i3, ToField i4, ToField i5, ToField i6, ToField i7, ToField i8, ToField i9, ToField i10, ToField i11, ToField i12, ToField i13, ToField i14, ToField i15, ToField i16, ToField i17, ToField i18, ToField i19, ToField i20, ToField i21, ToField i22, ToField i23, ToField i24, ToField i25, ToField i26, ToField i27, ToField i28) => ToRecord (i0, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14, i15, i16, i17, i18, i19, i20, i21, i22, i23, i24, i25, i26, i27, i28) where
  toRecord backendParams encode Nothing [f0, f1, f2, f3, f4, f5, f6, f7, f8, f9, f10, f11, f12, f13, f14, f15, f16, f17, f18, f19, f20, f21, f22, f23, f24, f25, f26, f27, f28] (v0, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28) =
    sequence [toField backendParams encode Nothing f0 v0, toField backendParams encode Nothing f1 v1, toField backendParams encode Nothing f2 v2, toField backendParams encode Nothing f3 v3, toField backendParams encode Nothing f4 v4, toField backendParams encode Nothing f5 v5, toField backendParams encode Nothing f6 v6, toField backendParams encode Nothing f7 v7, toField backendParams encode Nothing f8 v8, toField backendParams encode Nothing f9 v9, toField backendParams encode Nothing f10 v10, toField backendParams encode Nothing f11 v11, toField backendParams encode Nothing f12 v12, toField backendParams encode Nothing f13 v13, toField backendParams encode Nothing f14 v14, toField backendParams encode Nothing f15 v15, toField backendParams encode Nothing f16 v16, toField backendParams encode Nothing f17 v17, toField backendParams encode Nothing f18 v18, toField backendParams encode Nothing f19 v19, toField backendParams encode Nothing f20 v20, toField backendParams encode Nothing f21 v21, toField backendParams encode Nothing f22 v22, toField backendParams encode Nothing f23 v23, toField backendParams encode Nothing f24 v24, toField backendParams encode Nothing f25 v25, toField backendParams encode Nothing f26 v26, toField backendParams encode Nothing f27 v27, toField backendParams encode Nothing f28 v28]
  toRecord backendParams encode (Just [o0, o1, o2, o3, o4, o5, o6, o7, o8, o9, o10, o11, o12, o13, o14, o15, o16, o17, o18, o19, o20, o21, o22, o23, o24, o25, o26, o27, o28]) [f0, f1, f2, f3, f4, f5, f6, f7, f8, f9, f10, f11, f12, f13, f14, f15, f16, f17, f18, f19, f20, f21, f22, f23, f24, f25, f26, f27, f28] (v0, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28) =
    sequence [toField backendParams encode (Just o0) f0 v0, toField backendParams encode (Just o1) f1 v1, toField backendParams encode (Just o2) f2 v2, toField backendParams encode (Just o3) f3 v3, toField backendParams encode (Just o4) f4 v4, toField backendParams encode (Just o5) f5 v5, toField backendParams encode (Just o6) f6 v6, toField backendParams encode (Just o7) f7 v7, toField backendParams encode (Just o8) f8 v8, toField backendParams encode (Just o9) f9 v9, toField backendParams encode (Just o10) f10 v10, toField backendParams encode (Just o11) f11 v11, toField backendParams encode (Just o12) f12 v12, toField backendParams encode (Just o13) f13 v13, toField backendParams encode (Just o14) f14 v14, toField backendParams encode (Just o15) f15 v15, toField backendParams encode (Just o16) f16 v16, toField backendParams encode (Just o17) f17 v17, toField backendParams encode (Just o18) f18 v18, toField backendParams encode (Just o19) f19 v19, toField backendParams encode (Just o20) f20 v20, toField backendParams encode (Just o21) f21 v21, toField backendParams encode (Just o22) f22 v22, toField backendParams encode (Just o23) f23 v23, toField backendParams encode (Just o24) f24 v24, toField backendParams encode (Just o25) f25 v25, toField backendParams encode (Just o26) f26 v26, toField backendParams encode (Just o27) f27 v27, toField backendParams encode (Just o28) f28 v28]
  toRecord _ _ (Just os) _ _ =
    fail $ "the number of OIDs must be 29, actually " <> show (length os)
  toRecord _ _ _ fs _ =
    fail $ "the number of format codes must be 29, actually " <> show (length fs)

-- 30-tuple
instance (ToField i0, ToField i1, ToField i2, ToField i3, ToField i4, ToField i5, ToField i6, ToField i7, ToField i8, ToField i9, ToField i10, ToField i11, ToField i12, ToField i13, ToField i14, ToField i15, ToField i16, ToField i17, ToField i18, ToField i19, ToField i20, ToField i21, ToField i22, ToField i23, ToField i24, ToField i25, ToField i26, ToField i27, ToField i28, ToField i29) => ToRecord (i0, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14, i15, i16, i17, i18, i19, i20, i21, i22, i23, i24, i25, i26, i27, i28, i29) where
  toRecord backendParams encode Nothing [f0, f1, f2, f3, f4, f5, f6, f7, f8, f9, f10, f11, f12, f13, f14, f15, f16, f17, f18, f19, f20, f21, f22, f23, f24, f25, f26, f27, f28, f29] (v0, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29) =
    sequence [toField backendParams encode Nothing f0 v0, toField backendParams encode Nothing f1 v1, toField backendParams encode Nothing f2 v2, toField backendParams encode Nothing f3 v3, toField backendParams encode Nothing f4 v4, toField backendParams encode Nothing f5 v5, toField backendParams encode Nothing f6 v6, toField backendParams encode Nothing f7 v7, toField backendParams encode Nothing f8 v8, toField backendParams encode Nothing f9 v9, toField backendParams encode Nothing f10 v10, toField backendParams encode Nothing f11 v11, toField backendParams encode Nothing f12 v12, toField backendParams encode Nothing f13 v13, toField backendParams encode Nothing f14 v14, toField backendParams encode Nothing f15 v15, toField backendParams encode Nothing f16 v16, toField backendParams encode Nothing f17 v17, toField backendParams encode Nothing f18 v18, toField backendParams encode Nothing f19 v19, toField backendParams encode Nothing f20 v20, toField backendParams encode Nothing f21 v21, toField backendParams encode Nothing f22 v22, toField backendParams encode Nothing f23 v23, toField backendParams encode Nothing f24 v24, toField backendParams encode Nothing f25 v25, toField backendParams encode Nothing f26 v26, toField backendParams encode Nothing f27 v27, toField backendParams encode Nothing f28 v28, toField backendParams encode Nothing f29 v29]
  toRecord backendParams encode (Just [o0, o1, o2, o3, o4, o5, o6, o7, o8, o9, o10, o11, o12, o13, o14, o15, o16, o17, o18, o19, o20, o21, o22, o23, o24, o25, o26, o27, o28, o29]) [f0, f1, f2, f3, f4, f5, f6, f7, f8, f9, f10, f11, f12, f13, f14, f15, f16, f17, f18, f19, f20, f21, f22, f23, f24, f25, f26, f27, f28, f29] (v0, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29) =
    sequence [toField backendParams encode (Just o0) f0 v0, toField backendParams encode (Just o1) f1 v1, toField backendParams encode (Just o2) f2 v2, toField backendParams encode (Just o3) f3 v3, toField backendParams encode (Just o4) f4 v4, toField backendParams encode (Just o5) f5 v5, toField backendParams encode (Just o6) f6 v6, toField backendParams encode (Just o7) f7 v7, toField backendParams encode (Just o8) f8 v8, toField backendParams encode (Just o9) f9 v9, toField backendParams encode (Just o10) f10 v10, toField backendParams encode (Just o11) f11 v11, toField backendParams encode (Just o12) f12 v12, toField backendParams encode (Just o13) f13 v13, toField backendParams encode (Just o14) f14 v14, toField backendParams encode (Just o15) f15 v15, toField backendParams encode (Just o16) f16 v16, toField backendParams encode (Just o17) f17 v17, toField backendParams encode (Just o18) f18 v18, toField backendParams encode (Just o19) f19 v19, toField backendParams encode (Just o20) f20 v20, toField backendParams encode (Just o21) f21 v21, toField backendParams encode (Just o22) f22 v22, toField backendParams encode (Just o23) f23 v23, toField backendParams encode (Just o24) f24 v24, toField backendParams encode (Just o25) f25 v25, toField backendParams encode (Just o26) f26 v26, toField backendParams encode (Just o27) f27 v27, toField backendParams encode (Just o28) f28 v28, toField backendParams encode (Just o29) f29 v29]
  toRecord _ _ (Just os) _ _ =
    fail $ "the number of OIDs must be 30, actually " <> show (length os)
  toRecord _ _ _ fs _ =
    fail $ "the number of format codes must be 30, actually " <> show (length fs)

-- 31-tuple
instance (ToField i0, ToField i1, ToField i2, ToField i3, ToField i4, ToField i5, ToField i6, ToField i7, ToField i8, ToField i9, ToField i10, ToField i11, ToField i12, ToField i13, ToField i14, ToField i15, ToField i16, ToField i17, ToField i18, ToField i19, ToField i20, ToField i21, ToField i22, ToField i23, ToField i24, ToField i25, ToField i26, ToField i27, ToField i28, ToField i29, ToField i30) => ToRecord (i0, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14, i15, i16, i17, i18, i19, i20, i21, i22, i23, i24, i25, i26, i27, i28, i29, i30) where
  toRecord backendParams encode Nothing [f0, f1, f2, f3, f4, f5, f6, f7, f8, f9, f10, f11, f12, f13, f14, f15, f16, f17, f18, f19, f20, f21, f22, f23, f24, f25, f26, f27, f28, f29, f30] (v0, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30) =
    sequence [toField backendParams encode Nothing f0 v0, toField backendParams encode Nothing f1 v1, toField backendParams encode Nothing f2 v2, toField backendParams encode Nothing f3 v3, toField backendParams encode Nothing f4 v4, toField backendParams encode Nothing f5 v5, toField backendParams encode Nothing f6 v6, toField backendParams encode Nothing f7 v7, toField backendParams encode Nothing f8 v8, toField backendParams encode Nothing f9 v9, toField backendParams encode Nothing f10 v10, toField backendParams encode Nothing f11 v11, toField backendParams encode Nothing f12 v12, toField backendParams encode Nothing f13 v13, toField backendParams encode Nothing f14 v14, toField backendParams encode Nothing f15 v15, toField backendParams encode Nothing f16 v16, toField backendParams encode Nothing f17 v17, toField backendParams encode Nothing f18 v18, toField backendParams encode Nothing f19 v19, toField backendParams encode Nothing f20 v20, toField backendParams encode Nothing f21 v21, toField backendParams encode Nothing f22 v22, toField backendParams encode Nothing f23 v23, toField backendParams encode Nothing f24 v24, toField backendParams encode Nothing f25 v25, toField backendParams encode Nothing f26 v26, toField backendParams encode Nothing f27 v27, toField backendParams encode Nothing f28 v28, toField backendParams encode Nothing f29 v29, toField backendParams encode Nothing f30 v30]
  toRecord backendParams encode (Just [o0, o1, o2, o3, o4, o5, o6, o7, o8, o9, o10, o11, o12, o13, o14, o15, o16, o17, o18, o19, o20, o21, o22, o23, o24, o25, o26, o27, o28, o29, o30]) [f0, f1, f2, f3, f4, f5, f6, f7, f8, f9, f10, f11, f12, f13, f14, f15, f16, f17, f18, f19, f20, f21, f22, f23, f24, f25, f26, f27, f28, f29, f30] (v0, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30) =
    sequence [toField backendParams encode (Just o0) f0 v0, toField backendParams encode (Just o1) f1 v1, toField backendParams encode (Just o2) f2 v2, toField backendParams encode (Just o3) f3 v3, toField backendParams encode (Just o4) f4 v4, toField backendParams encode (Just o5) f5 v5, toField backendParams encode (Just o6) f6 v6, toField backendParams encode (Just o7) f7 v7, toField backendParams encode (Just o8) f8 v8, toField backendParams encode (Just o9) f9 v9, toField backendParams encode (Just o10) f10 v10, toField backendParams encode (Just o11) f11 v11, toField backendParams encode (Just o12) f12 v12, toField backendParams encode (Just o13) f13 v13, toField backendParams encode (Just o14) f14 v14, toField backendParams encode (Just o15) f15 v15, toField backendParams encode (Just o16) f16 v16, toField backendParams encode (Just o17) f17 v17, toField backendParams encode (Just o18) f18 v18, toField backendParams encode (Just o19) f19 v19, toField backendParams encode (Just o20) f20 v20, toField backendParams encode (Just o21) f21 v21, toField backendParams encode (Just o22) f22 v22, toField backendParams encode (Just o23) f23 v23, toField backendParams encode (Just o24) f24 v24, toField backendParams encode (Just o25) f25 v25, toField backendParams encode (Just o26) f26 v26, toField backendParams encode (Just o27) f27 v27, toField backendParams encode (Just o28) f28 v28, toField backendParams encode (Just o29) f29 v29, toField backendParams encode (Just o30) f30 v30]
  toRecord _ _ (Just os) _ _ =
    fail $ "the number of OIDs must be 31, actually " <> show (length os)
  toRecord _ _ _ fs _ =
    fail $ "the number of format codes must be 31, actually " <> show (length fs)

-- 32-tuple
instance (ToField i0, ToField i1, ToField i2, ToField i3, ToField i4, ToField i5, ToField i6, ToField i7, ToField i8, ToField i9, ToField i10, ToField i11, ToField i12, ToField i13, ToField i14, ToField i15, ToField i16, ToField i17, ToField i18, ToField i19, ToField i20, ToField i21, ToField i22, ToField i23, ToField i24, ToField i25, ToField i26, ToField i27, ToField i28, ToField i29, ToField i30, ToField i31) => ToRecord (i0, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14, i15, i16, i17, i18, i19, i20, i21, i22, i23, i24, i25, i26, i27, i28, i29, i30, i31) where
  toRecord backendParams encode Nothing [f0, f1, f2, f3, f4, f5, f6, f7, f8, f9, f10, f11, f12, f13, f14, f15, f16, f17, f18, f19, f20, f21, f22, f23, f24, f25, f26, f27, f28, f29, f30, f31] (v0, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31) =
    sequence [toField backendParams encode Nothing f0 v0, toField backendParams encode Nothing f1 v1, toField backendParams encode Nothing f2 v2, toField backendParams encode Nothing f3 v3, toField backendParams encode Nothing f4 v4, toField backendParams encode Nothing f5 v5, toField backendParams encode Nothing f6 v6, toField backendParams encode Nothing f7 v7, toField backendParams encode Nothing f8 v8, toField backendParams encode Nothing f9 v9, toField backendParams encode Nothing f10 v10, toField backendParams encode Nothing f11 v11, toField backendParams encode Nothing f12 v12, toField backendParams encode Nothing f13 v13, toField backendParams encode Nothing f14 v14, toField backendParams encode Nothing f15 v15, toField backendParams encode Nothing f16 v16, toField backendParams encode Nothing f17 v17, toField backendParams encode Nothing f18 v18, toField backendParams encode Nothing f19 v19, toField backendParams encode Nothing f20 v20, toField backendParams encode Nothing f21 v21, toField backendParams encode Nothing f22 v22, toField backendParams encode Nothing f23 v23, toField backendParams encode Nothing f24 v24, toField backendParams encode Nothing f25 v25, toField backendParams encode Nothing f26 v26, toField backendParams encode Nothing f27 v27, toField backendParams encode Nothing f28 v28, toField backendParams encode Nothing f29 v29, toField backendParams encode Nothing f30 v30, toField backendParams encode Nothing f31 v31]
  toRecord backendParams encode (Just [o0, o1, o2, o3, o4, o5, o6, o7, o8, o9, o10, o11, o12, o13, o14, o15, o16, o17, o18, o19, o20, o21, o22, o23, o24, o25, o26, o27, o28, o29, o30, o31]) [f0, f1, f2, f3, f4, f5, f6, f7, f8, f9, f10, f11, f12, f13, f14, f15, f16, f17, f18, f19, f20, f21, f22, f23, f24, f25, f26, f27, f28, f29, f30, f31] (v0, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31) =
    sequence [toField backendParams encode (Just o0) f0 v0, toField backendParams encode (Just o1) f1 v1, toField backendParams encode (Just o2) f2 v2, toField backendParams encode (Just o3) f3 v3, toField backendParams encode (Just o4) f4 v4, toField backendParams encode (Just o5) f5 v5, toField backendParams encode (Just o6) f6 v6, toField backendParams encode (Just o7) f7 v7, toField backendParams encode (Just o8) f8 v8, toField backendParams encode (Just o9) f9 v9, toField backendParams encode (Just o10) f10 v10, toField backendParams encode (Just o11) f11 v11, toField backendParams encode (Just o12) f12 v12, toField backendParams encode (Just o13) f13 v13, toField backendParams encode (Just o14) f14 v14, toField backendParams encode (Just o15) f15 v15, toField backendParams encode (Just o16) f16 v16, toField backendParams encode (Just o17) f17 v17, toField backendParams encode (Just o18) f18 v18, toField backendParams encode (Just o19) f19 v19, toField backendParams encode (Just o20) f20 v20, toField backendParams encode (Just o21) f21 v21, toField backendParams encode (Just o22) f22 v22, toField backendParams encode (Just o23) f23 v23, toField backendParams encode (Just o24) f24 v24, toField backendParams encode (Just o25) f25 v25, toField backendParams encode (Just o26) f26 v26, toField backendParams encode (Just o27) f27 v27, toField backendParams encode (Just o28) f28 v28, toField backendParams encode (Just o29) f29 v29, toField backendParams encode (Just o30) f30 v30, toField backendParams encode (Just o31) f31 v31]
  toRecord _ _ (Just os) _ _ =
    fail $ "the number of OIDs must be 32, actually " <> show (length os)
  toRecord _ _ _ fs _ =
    fail $ "the number of format codes must be 32, actually " <> show (length fs)

-- 33-tuple
instance (ToField i0, ToField i1, ToField i2, ToField i3, ToField i4, ToField i5, ToField i6, ToField i7, ToField i8, ToField i9, ToField i10, ToField i11, ToField i12, ToField i13, ToField i14, ToField i15, ToField i16, ToField i17, ToField i18, ToField i19, ToField i20, ToField i21, ToField i22, ToField i23, ToField i24, ToField i25, ToField i26, ToField i27, ToField i28, ToField i29, ToField i30, ToField i31, ToField i32) => ToRecord (i0, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14, i15, i16, i17, i18, i19, i20, i21, i22, i23, i24, i25, i26, i27, i28, i29, i30, i31, i32) where
  toRecord backendParams encode Nothing [f0, f1, f2, f3, f4, f5, f6, f7, f8, f9, f10, f11, f12, f13, f14, f15, f16, f17, f18, f19, f20, f21, f22, f23, f24, f25, f26, f27, f28, f29, f30, f31, f32] (v0, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32) =
    sequence [toField backendParams encode Nothing f0 v0, toField backendParams encode Nothing f1 v1, toField backendParams encode Nothing f2 v2, toField backendParams encode Nothing f3 v3, toField backendParams encode Nothing f4 v4, toField backendParams encode Nothing f5 v5, toField backendParams encode Nothing f6 v6, toField backendParams encode Nothing f7 v7, toField backendParams encode Nothing f8 v8, toField backendParams encode Nothing f9 v9, toField backendParams encode Nothing f10 v10, toField backendParams encode Nothing f11 v11, toField backendParams encode Nothing f12 v12, toField backendParams encode Nothing f13 v13, toField backendParams encode Nothing f14 v14, toField backendParams encode Nothing f15 v15, toField backendParams encode Nothing f16 v16, toField backendParams encode Nothing f17 v17, toField backendParams encode Nothing f18 v18, toField backendParams encode Nothing f19 v19, toField backendParams encode Nothing f20 v20, toField backendParams encode Nothing f21 v21, toField backendParams encode Nothing f22 v22, toField backendParams encode Nothing f23 v23, toField backendParams encode Nothing f24 v24, toField backendParams encode Nothing f25 v25, toField backendParams encode Nothing f26 v26, toField backendParams encode Nothing f27 v27, toField backendParams encode Nothing f28 v28, toField backendParams encode Nothing f29 v29, toField backendParams encode Nothing f30 v30, toField backendParams encode Nothing f31 v31, toField backendParams encode Nothing f32 v32]
  toRecord backendParams encode (Just [o0, o1, o2, o3, o4, o5, o6, o7, o8, o9, o10, o11, o12, o13, o14, o15, o16, o17, o18, o19, o20, o21, o22, o23, o24, o25, o26, o27, o28, o29, o30, o31, o32]) [f0, f1, f2, f3, f4, f5, f6, f7, f8, f9, f10, f11, f12, f13, f14, f15, f16, f17, f18, f19, f20, f21, f22, f23, f24, f25, f26, f27, f28, f29, f30, f31, f32] (v0, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32) =
    sequence [toField backendParams encode (Just o0) f0 v0, toField backendParams encode (Just o1) f1 v1, toField backendParams encode (Just o2) f2 v2, toField backendParams encode (Just o3) f3 v3, toField backendParams encode (Just o4) f4 v4, toField backendParams encode (Just o5) f5 v5, toField backendParams encode (Just o6) f6 v6, toField backendParams encode (Just o7) f7 v7, toField backendParams encode (Just o8) f8 v8, toField backendParams encode (Just o9) f9 v9, toField backendParams encode (Just o10) f10 v10, toField backendParams encode (Just o11) f11 v11, toField backendParams encode (Just o12) f12 v12, toField backendParams encode (Just o13) f13 v13, toField backendParams encode (Just o14) f14 v14, toField backendParams encode (Just o15) f15 v15, toField backendParams encode (Just o16) f16 v16, toField backendParams encode (Just o17) f17 v17, toField backendParams encode (Just o18) f18 v18, toField backendParams encode (Just o19) f19 v19, toField backendParams encode (Just o20) f20 v20, toField backendParams encode (Just o21) f21 v21, toField backendParams encode (Just o22) f22 v22, toField backendParams encode (Just o23) f23 v23, toField backendParams encode (Just o24) f24 v24, toField backendParams encode (Just o25) f25 v25, toField backendParams encode (Just o26) f26 v26, toField backendParams encode (Just o27) f27 v27, toField backendParams encode (Just o28) f28 v28, toField backendParams encode (Just o29) f29 v29, toField backendParams encode (Just o30) f30 v30, toField backendParams encode (Just o31) f31 v31, toField backendParams encode (Just o32) f32 v32]
  toRecord _ _ (Just os) _ _ =
    fail $ "the number of OIDs must be 33, actually " <> show (length os)
  toRecord _ _ _ fs _ =
    fail $ "the number of format codes must be 33, actually " <> show (length fs)

-- 34-tuple
instance (ToField i0, ToField i1, ToField i2, ToField i3, ToField i4, ToField i5, ToField i6, ToField i7, ToField i8, ToField i9, ToField i10, ToField i11, ToField i12, ToField i13, ToField i14, ToField i15, ToField i16, ToField i17, ToField i18, ToField i19, ToField i20, ToField i21, ToField i22, ToField i23, ToField i24, ToField i25, ToField i26, ToField i27, ToField i28, ToField i29, ToField i30, ToField i31, ToField i32, ToField i33) => ToRecord (i0, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14, i15, i16, i17, i18, i19, i20, i21, i22, i23, i24, i25, i26, i27, i28, i29, i30, i31, i32, i33) where
  toRecord backendParams encode Nothing [f0, f1, f2, f3, f4, f5, f6, f7, f8, f9, f10, f11, f12, f13, f14, f15, f16, f17, f18, f19, f20, f21, f22, f23, f24, f25, f26, f27, f28, f29, f30, f31, f32, f33] (v0, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33) =
    sequence [toField backendParams encode Nothing f0 v0, toField backendParams encode Nothing f1 v1, toField backendParams encode Nothing f2 v2, toField backendParams encode Nothing f3 v3, toField backendParams encode Nothing f4 v4, toField backendParams encode Nothing f5 v5, toField backendParams encode Nothing f6 v6, toField backendParams encode Nothing f7 v7, toField backendParams encode Nothing f8 v8, toField backendParams encode Nothing f9 v9, toField backendParams encode Nothing f10 v10, toField backendParams encode Nothing f11 v11, toField backendParams encode Nothing f12 v12, toField backendParams encode Nothing f13 v13, toField backendParams encode Nothing f14 v14, toField backendParams encode Nothing f15 v15, toField backendParams encode Nothing f16 v16, toField backendParams encode Nothing f17 v17, toField backendParams encode Nothing f18 v18, toField backendParams encode Nothing f19 v19, toField backendParams encode Nothing f20 v20, toField backendParams encode Nothing f21 v21, toField backendParams encode Nothing f22 v22, toField backendParams encode Nothing f23 v23, toField backendParams encode Nothing f24 v24, toField backendParams encode Nothing f25 v25, toField backendParams encode Nothing f26 v26, toField backendParams encode Nothing f27 v27, toField backendParams encode Nothing f28 v28, toField backendParams encode Nothing f29 v29, toField backendParams encode Nothing f30 v30, toField backendParams encode Nothing f31 v31, toField backendParams encode Nothing f32 v32, toField backendParams encode Nothing f33 v33]
  toRecord backendParams encode (Just [o0, o1, o2, o3, o4, o5, o6, o7, o8, o9, o10, o11, o12, o13, o14, o15, o16, o17, o18, o19, o20, o21, o22, o23, o24, o25, o26, o27, o28, o29, o30, o31, o32, o33]) [f0, f1, f2, f3, f4, f5, f6, f7, f8, f9, f10, f11, f12, f13, f14, f15, f16, f17, f18, f19, f20, f21, f22, f23, f24, f25, f26, f27, f28, f29, f30, f31, f32, f33] (v0, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33) =
    sequence [toField backendParams encode (Just o0) f0 v0, toField backendParams encode (Just o1) f1 v1, toField backendParams encode (Just o2) f2 v2, toField backendParams encode (Just o3) f3 v3, toField backendParams encode (Just o4) f4 v4, toField backendParams encode (Just o5) f5 v5, toField backendParams encode (Just o6) f6 v6, toField backendParams encode (Just o7) f7 v7, toField backendParams encode (Just o8) f8 v8, toField backendParams encode (Just o9) f9 v9, toField backendParams encode (Just o10) f10 v10, toField backendParams encode (Just o11) f11 v11, toField backendParams encode (Just o12) f12 v12, toField backendParams encode (Just o13) f13 v13, toField backendParams encode (Just o14) f14 v14, toField backendParams encode (Just o15) f15 v15, toField backendParams encode (Just o16) f16 v16, toField backendParams encode (Just o17) f17 v17, toField backendParams encode (Just o18) f18 v18, toField backendParams encode (Just o19) f19 v19, toField backendParams encode (Just o20) f20 v20, toField backendParams encode (Just o21) f21 v21, toField backendParams encode (Just o22) f22 v22, toField backendParams encode (Just o23) f23 v23, toField backendParams encode (Just o24) f24 v24, toField backendParams encode (Just o25) f25 v25, toField backendParams encode (Just o26) f26 v26, toField backendParams encode (Just o27) f27 v27, toField backendParams encode (Just o28) f28 v28, toField backendParams encode (Just o29) f29 v29, toField backendParams encode (Just o30) f30 v30, toField backendParams encode (Just o31) f31 v31, toField backendParams encode (Just o32) f32 v32, toField backendParams encode (Just o33) f33 v33]
  toRecord _ _ (Just os) _ _ =
    fail $ "the number of OIDs must be 34, actually " <> show (length os)
  toRecord _ _ _ fs _ =
    fail $ "the number of format codes must be 34, actually " <> show (length fs)

-- 35-tuple
instance (ToField i0, ToField i1, ToField i2, ToField i3, ToField i4, ToField i5, ToField i6, ToField i7, ToField i8, ToField i9, ToField i10, ToField i11, ToField i12, ToField i13, ToField i14, ToField i15, ToField i16, ToField i17, ToField i18, ToField i19, ToField i20, ToField i21, ToField i22, ToField i23, ToField i24, ToField i25, ToField i26, ToField i27, ToField i28, ToField i29, ToField i30, ToField i31, ToField i32, ToField i33, ToField i34) => ToRecord (i0, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14, i15, i16, i17, i18, i19, i20, i21, i22, i23, i24, i25, i26, i27, i28, i29, i30, i31, i32, i33, i34) where
  toRecord backendParams encode Nothing [f0, f1, f2, f3, f4, f5, f6, f7, f8, f9, f10, f11, f12, f13, f14, f15, f16, f17, f18, f19, f20, f21, f22, f23, f24, f25, f26, f27, f28, f29, f30, f31, f32, f33, f34] (v0, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34) =
    sequence [toField backendParams encode Nothing f0 v0, toField backendParams encode Nothing f1 v1, toField backendParams encode Nothing f2 v2, toField backendParams encode Nothing f3 v3, toField backendParams encode Nothing f4 v4, toField backendParams encode Nothing f5 v5, toField backendParams encode Nothing f6 v6, toField backendParams encode Nothing f7 v7, toField backendParams encode Nothing f8 v8, toField backendParams encode Nothing f9 v9, toField backendParams encode Nothing f10 v10, toField backendParams encode Nothing f11 v11, toField backendParams encode Nothing f12 v12, toField backendParams encode Nothing f13 v13, toField backendParams encode Nothing f14 v14, toField backendParams encode Nothing f15 v15, toField backendParams encode Nothing f16 v16, toField backendParams encode Nothing f17 v17, toField backendParams encode Nothing f18 v18, toField backendParams encode Nothing f19 v19, toField backendParams encode Nothing f20 v20, toField backendParams encode Nothing f21 v21, toField backendParams encode Nothing f22 v22, toField backendParams encode Nothing f23 v23, toField backendParams encode Nothing f24 v24, toField backendParams encode Nothing f25 v25, toField backendParams encode Nothing f26 v26, toField backendParams encode Nothing f27 v27, toField backendParams encode Nothing f28 v28, toField backendParams encode Nothing f29 v29, toField backendParams encode Nothing f30 v30, toField backendParams encode Nothing f31 v31, toField backendParams encode Nothing f32 v32, toField backendParams encode Nothing f33 v33, toField backendParams encode Nothing f34 v34]
  toRecord backendParams encode (Just [o0, o1, o2, o3, o4, o5, o6, o7, o8, o9, o10, o11, o12, o13, o14, o15, o16, o17, o18, o19, o20, o21, o22, o23, o24, o25, o26, o27, o28, o29, o30, o31, o32, o33, o34]) [f0, f1, f2, f3, f4, f5, f6, f7, f8, f9, f10, f11, f12, f13, f14, f15, f16, f17, f18, f19, f20, f21, f22, f23, f24, f25, f26, f27, f28, f29, f30, f31, f32, f33, f34] (v0, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34) =
    sequence [toField backendParams encode (Just o0) f0 v0, toField backendParams encode (Just o1) f1 v1, toField backendParams encode (Just o2) f2 v2, toField backendParams encode (Just o3) f3 v3, toField backendParams encode (Just o4) f4 v4, toField backendParams encode (Just o5) f5 v5, toField backendParams encode (Just o6) f6 v6, toField backendParams encode (Just o7) f7 v7, toField backendParams encode (Just o8) f8 v8, toField backendParams encode (Just o9) f9 v9, toField backendParams encode (Just o10) f10 v10, toField backendParams encode (Just o11) f11 v11, toField backendParams encode (Just o12) f12 v12, toField backendParams encode (Just o13) f13 v13, toField backendParams encode (Just o14) f14 v14, toField backendParams encode (Just o15) f15 v15, toField backendParams encode (Just o16) f16 v16, toField backendParams encode (Just o17) f17 v17, toField backendParams encode (Just o18) f18 v18, toField backendParams encode (Just o19) f19 v19, toField backendParams encode (Just o20) f20 v20, toField backendParams encode (Just o21) f21 v21, toField backendParams encode (Just o22) f22 v22, toField backendParams encode (Just o23) f23 v23, toField backendParams encode (Just o24) f24 v24, toField backendParams encode (Just o25) f25 v25, toField backendParams encode (Just o26) f26 v26, toField backendParams encode (Just o27) f27 v27, toField backendParams encode (Just o28) f28 v28, toField backendParams encode (Just o29) f29 v29, toField backendParams encode (Just o30) f30 v30, toField backendParams encode (Just o31) f31 v31, toField backendParams encode (Just o32) f32 v32, toField backendParams encode (Just o33) f33 v33, toField backendParams encode (Just o34) f34 v34]
  toRecord _ _ (Just os) _ _ =
    fail $ "the number of OIDs must be 35, actually " <> show (length os)
  toRecord _ _ _ fs _ =
    fail $ "the number of format codes must be 35, actually " <> show (length fs)

-- 36-tuple
instance (ToField i0, ToField i1, ToField i2, ToField i3, ToField i4, ToField i5, ToField i6, ToField i7, ToField i8, ToField i9, ToField i10, ToField i11, ToField i12, ToField i13, ToField i14, ToField i15, ToField i16, ToField i17, ToField i18, ToField i19, ToField i20, ToField i21, ToField i22, ToField i23, ToField i24, ToField i25, ToField i26, ToField i27, ToField i28, ToField i29, ToField i30, ToField i31, ToField i32, ToField i33, ToField i34, ToField i35) => ToRecord (i0, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14, i15, i16, i17, i18, i19, i20, i21, i22, i23, i24, i25, i26, i27, i28, i29, i30, i31, i32, i33, i34, i35) where
  toRecord backendParams encode Nothing [f0, f1, f2, f3, f4, f5, f6, f7, f8, f9, f10, f11, f12, f13, f14, f15, f16, f17, f18, f19, f20, f21, f22, f23, f24, f25, f26, f27, f28, f29, f30, f31, f32, f33, f34, f35] (v0, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35) =
    sequence [toField backendParams encode Nothing f0 v0, toField backendParams encode Nothing f1 v1, toField backendParams encode Nothing f2 v2, toField backendParams encode Nothing f3 v3, toField backendParams encode Nothing f4 v4, toField backendParams encode Nothing f5 v5, toField backendParams encode Nothing f6 v6, toField backendParams encode Nothing f7 v7, toField backendParams encode Nothing f8 v8, toField backendParams encode Nothing f9 v9, toField backendParams encode Nothing f10 v10, toField backendParams encode Nothing f11 v11, toField backendParams encode Nothing f12 v12, toField backendParams encode Nothing f13 v13, toField backendParams encode Nothing f14 v14, toField backendParams encode Nothing f15 v15, toField backendParams encode Nothing f16 v16, toField backendParams encode Nothing f17 v17, toField backendParams encode Nothing f18 v18, toField backendParams encode Nothing f19 v19, toField backendParams encode Nothing f20 v20, toField backendParams encode Nothing f21 v21, toField backendParams encode Nothing f22 v22, toField backendParams encode Nothing f23 v23, toField backendParams encode Nothing f24 v24, toField backendParams encode Nothing f25 v25, toField backendParams encode Nothing f26 v26, toField backendParams encode Nothing f27 v27, toField backendParams encode Nothing f28 v28, toField backendParams encode Nothing f29 v29, toField backendParams encode Nothing f30 v30, toField backendParams encode Nothing f31 v31, toField backendParams encode Nothing f32 v32, toField backendParams encode Nothing f33 v33, toField backendParams encode Nothing f34 v34, toField backendParams encode Nothing f35 v35]
  toRecord backendParams encode (Just [o0, o1, o2, o3, o4, o5, o6, o7, o8, o9, o10, o11, o12, o13, o14, o15, o16, o17, o18, o19, o20, o21, o22, o23, o24, o25, o26, o27, o28, o29, o30, o31, o32, o33, o34, o35]) [f0, f1, f2, f3, f4, f5, f6, f7, f8, f9, f10, f11, f12, f13, f14, f15, f16, f17, f18, f19, f20, f21, f22, f23, f24, f25, f26, f27, f28, f29, f30, f31, f32, f33, f34, f35] (v0, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35) =
    sequence [toField backendParams encode (Just o0) f0 v0, toField backendParams encode (Just o1) f1 v1, toField backendParams encode (Just o2) f2 v2, toField backendParams encode (Just o3) f3 v3, toField backendParams encode (Just o4) f4 v4, toField backendParams encode (Just o5) f5 v5, toField backendParams encode (Just o6) f6 v6, toField backendParams encode (Just o7) f7 v7, toField backendParams encode (Just o8) f8 v8, toField backendParams encode (Just o9) f9 v9, toField backendParams encode (Just o10) f10 v10, toField backendParams encode (Just o11) f11 v11, toField backendParams encode (Just o12) f12 v12, toField backendParams encode (Just o13) f13 v13, toField backendParams encode (Just o14) f14 v14, toField backendParams encode (Just o15) f15 v15, toField backendParams encode (Just o16) f16 v16, toField backendParams encode (Just o17) f17 v17, toField backendParams encode (Just o18) f18 v18, toField backendParams encode (Just o19) f19 v19, toField backendParams encode (Just o20) f20 v20, toField backendParams encode (Just o21) f21 v21, toField backendParams encode (Just o22) f22 v22, toField backendParams encode (Just o23) f23 v23, toField backendParams encode (Just o24) f24 v24, toField backendParams encode (Just o25) f25 v25, toField backendParams encode (Just o26) f26 v26, toField backendParams encode (Just o27) f27 v27, toField backendParams encode (Just o28) f28 v28, toField backendParams encode (Just o29) f29 v29, toField backendParams encode (Just o30) f30 v30, toField backendParams encode (Just o31) f31 v31, toField backendParams encode (Just o32) f32 v32, toField backendParams encode (Just o33) f33 v33, toField backendParams encode (Just o34) f34 v34, toField backendParams encode (Just o35) f35 v35]
  toRecord _ _ (Just os) _ _ =
    fail $ "the number of OIDs must be 36, actually " <> show (length os)
  toRecord _ _ _ fs _ =
    fail $ "the number of format codes must be 36, actually " <> show (length fs)

-- 37-tuple
instance (ToField i0, ToField i1, ToField i2, ToField i3, ToField i4, ToField i5, ToField i6, ToField i7, ToField i8, ToField i9, ToField i10, ToField i11, ToField i12, ToField i13, ToField i14, ToField i15, ToField i16, ToField i17, ToField i18, ToField i19, ToField i20, ToField i21, ToField i22, ToField i23, ToField i24, ToField i25, ToField i26, ToField i27, ToField i28, ToField i29, ToField i30, ToField i31, ToField i32, ToField i33, ToField i34, ToField i35, ToField i36) => ToRecord (i0, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14, i15, i16, i17, i18, i19, i20, i21, i22, i23, i24, i25, i26, i27, i28, i29, i30, i31, i32, i33, i34, i35, i36) where
  toRecord backendParams encode Nothing [f0, f1, f2, f3, f4, f5, f6, f7, f8, f9, f10, f11, f12, f13, f14, f15, f16, f17, f18, f19, f20, f21, f22, f23, f24, f25, f26, f27, f28, f29, f30, f31, f32, f33, f34, f35, f36] (v0, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36) =
    sequence [toField backendParams encode Nothing f0 v0, toField backendParams encode Nothing f1 v1, toField backendParams encode Nothing f2 v2, toField backendParams encode Nothing f3 v3, toField backendParams encode Nothing f4 v4, toField backendParams encode Nothing f5 v5, toField backendParams encode Nothing f6 v6, toField backendParams encode Nothing f7 v7, toField backendParams encode Nothing f8 v8, toField backendParams encode Nothing f9 v9, toField backendParams encode Nothing f10 v10, toField backendParams encode Nothing f11 v11, toField backendParams encode Nothing f12 v12, toField backendParams encode Nothing f13 v13, toField backendParams encode Nothing f14 v14, toField backendParams encode Nothing f15 v15, toField backendParams encode Nothing f16 v16, toField backendParams encode Nothing f17 v17, toField backendParams encode Nothing f18 v18, toField backendParams encode Nothing f19 v19, toField backendParams encode Nothing f20 v20, toField backendParams encode Nothing f21 v21, toField backendParams encode Nothing f22 v22, toField backendParams encode Nothing f23 v23, toField backendParams encode Nothing f24 v24, toField backendParams encode Nothing f25 v25, toField backendParams encode Nothing f26 v26, toField backendParams encode Nothing f27 v27, toField backendParams encode Nothing f28 v28, toField backendParams encode Nothing f29 v29, toField backendParams encode Nothing f30 v30, toField backendParams encode Nothing f31 v31, toField backendParams encode Nothing f32 v32, toField backendParams encode Nothing f33 v33, toField backendParams encode Nothing f34 v34, toField backendParams encode Nothing f35 v35, toField backendParams encode Nothing f36 v36]
  toRecord backendParams encode (Just [o0, o1, o2, o3, o4, o5, o6, o7, o8, o9, o10, o11, o12, o13, o14, o15, o16, o17, o18, o19, o20, o21, o22, o23, o24, o25, o26, o27, o28, o29, o30, o31, o32, o33, o34, o35, o36]) [f0, f1, f2, f3, f4, f5, f6, f7, f8, f9, f10, f11, f12, f13, f14, f15, f16, f17, f18, f19, f20, f21, f22, f23, f24, f25, f26, f27, f28, f29, f30, f31, f32, f33, f34, f35, f36] (v0, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36) =
    sequence [toField backendParams encode (Just o0) f0 v0, toField backendParams encode (Just o1) f1 v1, toField backendParams encode (Just o2) f2 v2, toField backendParams encode (Just o3) f3 v3, toField backendParams encode (Just o4) f4 v4, toField backendParams encode (Just o5) f5 v5, toField backendParams encode (Just o6) f6 v6, toField backendParams encode (Just o7) f7 v7, toField backendParams encode (Just o8) f8 v8, toField backendParams encode (Just o9) f9 v9, toField backendParams encode (Just o10) f10 v10, toField backendParams encode (Just o11) f11 v11, toField backendParams encode (Just o12) f12 v12, toField backendParams encode (Just o13) f13 v13, toField backendParams encode (Just o14) f14 v14, toField backendParams encode (Just o15) f15 v15, toField backendParams encode (Just o16) f16 v16, toField backendParams encode (Just o17) f17 v17, toField backendParams encode (Just o18) f18 v18, toField backendParams encode (Just o19) f19 v19, toField backendParams encode (Just o20) f20 v20, toField backendParams encode (Just o21) f21 v21, toField backendParams encode (Just o22) f22 v22, toField backendParams encode (Just o23) f23 v23, toField backendParams encode (Just o24) f24 v24, toField backendParams encode (Just o25) f25 v25, toField backendParams encode (Just o26) f26 v26, toField backendParams encode (Just o27) f27 v27, toField backendParams encode (Just o28) f28 v28, toField backendParams encode (Just o29) f29 v29, toField backendParams encode (Just o30) f30 v30, toField backendParams encode (Just o31) f31 v31, toField backendParams encode (Just o32) f32 v32, toField backendParams encode (Just o33) f33 v33, toField backendParams encode (Just o34) f34 v34, toField backendParams encode (Just o35) f35 v35, toField backendParams encode (Just o36) f36 v36]
  toRecord _ _ (Just os) _ _ =
    fail $ "the number of OIDs must be 37, actually " <> show (length os)
  toRecord _ _ _ fs _ =
    fail $ "the number of format codes must be 37, actually " <> show (length fs)

-- 38-tuple
instance (ToField i0, ToField i1, ToField i2, ToField i3, ToField i4, ToField i5, ToField i6, ToField i7, ToField i8, ToField i9, ToField i10, ToField i11, ToField i12, ToField i13, ToField i14, ToField i15, ToField i16, ToField i17, ToField i18, ToField i19, ToField i20, ToField i21, ToField i22, ToField i23, ToField i24, ToField i25, ToField i26, ToField i27, ToField i28, ToField i29, ToField i30, ToField i31, ToField i32, ToField i33, ToField i34, ToField i35, ToField i36, ToField i37) => ToRecord (i0, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14, i15, i16, i17, i18, i19, i20, i21, i22, i23, i24, i25, i26, i27, i28, i29, i30, i31, i32, i33, i34, i35, i36, i37) where
  toRecord backendParams encode Nothing [f0, f1, f2, f3, f4, f5, f6, f7, f8, f9, f10, f11, f12, f13, f14, f15, f16, f17, f18, f19, f20, f21, f22, f23, f24, f25, f26, f27, f28, f29, f30, f31, f32, f33, f34, f35, f36, f37] (v0, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37) =
    sequence [toField backendParams encode Nothing f0 v0, toField backendParams encode Nothing f1 v1, toField backendParams encode Nothing f2 v2, toField backendParams encode Nothing f3 v3, toField backendParams encode Nothing f4 v4, toField backendParams encode Nothing f5 v5, toField backendParams encode Nothing f6 v6, toField backendParams encode Nothing f7 v7, toField backendParams encode Nothing f8 v8, toField backendParams encode Nothing f9 v9, toField backendParams encode Nothing f10 v10, toField backendParams encode Nothing f11 v11, toField backendParams encode Nothing f12 v12, toField backendParams encode Nothing f13 v13, toField backendParams encode Nothing f14 v14, toField backendParams encode Nothing f15 v15, toField backendParams encode Nothing f16 v16, toField backendParams encode Nothing f17 v17, toField backendParams encode Nothing f18 v18, toField backendParams encode Nothing f19 v19, toField backendParams encode Nothing f20 v20, toField backendParams encode Nothing f21 v21, toField backendParams encode Nothing f22 v22, toField backendParams encode Nothing f23 v23, toField backendParams encode Nothing f24 v24, toField backendParams encode Nothing f25 v25, toField backendParams encode Nothing f26 v26, toField backendParams encode Nothing f27 v27, toField backendParams encode Nothing f28 v28, toField backendParams encode Nothing f29 v29, toField backendParams encode Nothing f30 v30, toField backendParams encode Nothing f31 v31, toField backendParams encode Nothing f32 v32, toField backendParams encode Nothing f33 v33, toField backendParams encode Nothing f34 v34, toField backendParams encode Nothing f35 v35, toField backendParams encode Nothing f36 v36, toField backendParams encode Nothing f37 v37]
  toRecord backendParams encode (Just [o0, o1, o2, o3, o4, o5, o6, o7, o8, o9, o10, o11, o12, o13, o14, o15, o16, o17, o18, o19, o20, o21, o22, o23, o24, o25, o26, o27, o28, o29, o30, o31, o32, o33, o34, o35, o36, o37]) [f0, f1, f2, f3, f4, f5, f6, f7, f8, f9, f10, f11, f12, f13, f14, f15, f16, f17, f18, f19, f20, f21, f22, f23, f24, f25, f26, f27, f28, f29, f30, f31, f32, f33, f34, f35, f36, f37] (v0, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37) =
    sequence [toField backendParams encode (Just o0) f0 v0, toField backendParams encode (Just o1) f1 v1, toField backendParams encode (Just o2) f2 v2, toField backendParams encode (Just o3) f3 v3, toField backendParams encode (Just o4) f4 v4, toField backendParams encode (Just o5) f5 v5, toField backendParams encode (Just o6) f6 v6, toField backendParams encode (Just o7) f7 v7, toField backendParams encode (Just o8) f8 v8, toField backendParams encode (Just o9) f9 v9, toField backendParams encode (Just o10) f10 v10, toField backendParams encode (Just o11) f11 v11, toField backendParams encode (Just o12) f12 v12, toField backendParams encode (Just o13) f13 v13, toField backendParams encode (Just o14) f14 v14, toField backendParams encode (Just o15) f15 v15, toField backendParams encode (Just o16) f16 v16, toField backendParams encode (Just o17) f17 v17, toField backendParams encode (Just o18) f18 v18, toField backendParams encode (Just o19) f19 v19, toField backendParams encode (Just o20) f20 v20, toField backendParams encode (Just o21) f21 v21, toField backendParams encode (Just o22) f22 v22, toField backendParams encode (Just o23) f23 v23, toField backendParams encode (Just o24) f24 v24, toField backendParams encode (Just o25) f25 v25, toField backendParams encode (Just o26) f26 v26, toField backendParams encode (Just o27) f27 v27, toField backendParams encode (Just o28) f28 v28, toField backendParams encode (Just o29) f29 v29, toField backendParams encode (Just o30) f30 v30, toField backendParams encode (Just o31) f31 v31, toField backendParams encode (Just o32) f32 v32, toField backendParams encode (Just o33) f33 v33, toField backendParams encode (Just o34) f34 v34, toField backendParams encode (Just o35) f35 v35, toField backendParams encode (Just o36) f36 v36, toField backendParams encode (Just o37) f37 v37]
  toRecord _ _ (Just os) _ _ =
    fail $ "the number of OIDs must be 38, actually " <> show (length os)
  toRecord _ _ _ fs _ =
    fail $ "the number of format codes must be 38, actually " <> show (length fs)

-- 39-tuple
instance (ToField i0, ToField i1, ToField i2, ToField i3, ToField i4, ToField i5, ToField i6, ToField i7, ToField i8, ToField i9, ToField i10, ToField i11, ToField i12, ToField i13, ToField i14, ToField i15, ToField i16, ToField i17, ToField i18, ToField i19, ToField i20, ToField i21, ToField i22, ToField i23, ToField i24, ToField i25, ToField i26, ToField i27, ToField i28, ToField i29, ToField i30, ToField i31, ToField i32, ToField i33, ToField i34, ToField i35, ToField i36, ToField i37, ToField i38) => ToRecord (i0, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14, i15, i16, i17, i18, i19, i20, i21, i22, i23, i24, i25, i26, i27, i28, i29, i30, i31, i32, i33, i34, i35, i36, i37, i38) where
  toRecord backendParams encode Nothing [f0, f1, f2, f3, f4, f5, f6, f7, f8, f9, f10, f11, f12, f13, f14, f15, f16, f17, f18, f19, f20, f21, f22, f23, f24, f25, f26, f27, f28, f29, f30, f31, f32, f33, f34, f35, f36, f37, f38] (v0, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38) =
    sequence [toField backendParams encode Nothing f0 v0, toField backendParams encode Nothing f1 v1, toField backendParams encode Nothing f2 v2, toField backendParams encode Nothing f3 v3, toField backendParams encode Nothing f4 v4, toField backendParams encode Nothing f5 v5, toField backendParams encode Nothing f6 v6, toField backendParams encode Nothing f7 v7, toField backendParams encode Nothing f8 v8, toField backendParams encode Nothing f9 v9, toField backendParams encode Nothing f10 v10, toField backendParams encode Nothing f11 v11, toField backendParams encode Nothing f12 v12, toField backendParams encode Nothing f13 v13, toField backendParams encode Nothing f14 v14, toField backendParams encode Nothing f15 v15, toField backendParams encode Nothing f16 v16, toField backendParams encode Nothing f17 v17, toField backendParams encode Nothing f18 v18, toField backendParams encode Nothing f19 v19, toField backendParams encode Nothing f20 v20, toField backendParams encode Nothing f21 v21, toField backendParams encode Nothing f22 v22, toField backendParams encode Nothing f23 v23, toField backendParams encode Nothing f24 v24, toField backendParams encode Nothing f25 v25, toField backendParams encode Nothing f26 v26, toField backendParams encode Nothing f27 v27, toField backendParams encode Nothing f28 v28, toField backendParams encode Nothing f29 v29, toField backendParams encode Nothing f30 v30, toField backendParams encode Nothing f31 v31, toField backendParams encode Nothing f32 v32, toField backendParams encode Nothing f33 v33, toField backendParams encode Nothing f34 v34, toField backendParams encode Nothing f35 v35, toField backendParams encode Nothing f36 v36, toField backendParams encode Nothing f37 v37, toField backendParams encode Nothing f38 v38]
  toRecord backendParams encode (Just [o0, o1, o2, o3, o4, o5, o6, o7, o8, o9, o10, o11, o12, o13, o14, o15, o16, o17, o18, o19, o20, o21, o22, o23, o24, o25, o26, o27, o28, o29, o30, o31, o32, o33, o34, o35, o36, o37, o38]) [f0, f1, f2, f3, f4, f5, f6, f7, f8, f9, f10, f11, f12, f13, f14, f15, f16, f17, f18, f19, f20, f21, f22, f23, f24, f25, f26, f27, f28, f29, f30, f31, f32, f33, f34, f35, f36, f37, f38] (v0, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38) =
    sequence [toField backendParams encode (Just o0) f0 v0, toField backendParams encode (Just o1) f1 v1, toField backendParams encode (Just o2) f2 v2, toField backendParams encode (Just o3) f3 v3, toField backendParams encode (Just o4) f4 v4, toField backendParams encode (Just o5) f5 v5, toField backendParams encode (Just o6) f6 v6, toField backendParams encode (Just o7) f7 v7, toField backendParams encode (Just o8) f8 v8, toField backendParams encode (Just o9) f9 v9, toField backendParams encode (Just o10) f10 v10, toField backendParams encode (Just o11) f11 v11, toField backendParams encode (Just o12) f12 v12, toField backendParams encode (Just o13) f13 v13, toField backendParams encode (Just o14) f14 v14, toField backendParams encode (Just o15) f15 v15, toField backendParams encode (Just o16) f16 v16, toField backendParams encode (Just o17) f17 v17, toField backendParams encode (Just o18) f18 v18, toField backendParams encode (Just o19) f19 v19, toField backendParams encode (Just o20) f20 v20, toField backendParams encode (Just o21) f21 v21, toField backendParams encode (Just o22) f22 v22, toField backendParams encode (Just o23) f23 v23, toField backendParams encode (Just o24) f24 v24, toField backendParams encode (Just o25) f25 v25, toField backendParams encode (Just o26) f26 v26, toField backendParams encode (Just o27) f27 v27, toField backendParams encode (Just o28) f28 v28, toField backendParams encode (Just o29) f29 v29, toField backendParams encode (Just o30) f30 v30, toField backendParams encode (Just o31) f31 v31, toField backendParams encode (Just o32) f32 v32, toField backendParams encode (Just o33) f33 v33, toField backendParams encode (Just o34) f34 v34, toField backendParams encode (Just o35) f35 v35, toField backendParams encode (Just o36) f36 v36, toField backendParams encode (Just o37) f37 v37, toField backendParams encode (Just o38) f38 v38]
  toRecord _ _ (Just os) _ _ =
    fail $ "the number of OIDs must be 39, actually " <> show (length os)
  toRecord _ _ _ fs _ =
    fail $ "the number of format codes must be 39, actually " <> show (length fs)

-- 40-tuple
instance (ToField i0, ToField i1, ToField i2, ToField i3, ToField i4, ToField i5, ToField i6, ToField i7, ToField i8, ToField i9, ToField i10, ToField i11, ToField i12, ToField i13, ToField i14, ToField i15, ToField i16, ToField i17, ToField i18, ToField i19, ToField i20, ToField i21, ToField i22, ToField i23, ToField i24, ToField i25, ToField i26, ToField i27, ToField i28, ToField i29, ToField i30, ToField i31, ToField i32, ToField i33, ToField i34, ToField i35, ToField i36, ToField i37, ToField i38, ToField i39) => ToRecord (i0, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14, i15, i16, i17, i18, i19, i20, i21, i22, i23, i24, i25, i26, i27, i28, i29, i30, i31, i32, i33, i34, i35, i36, i37, i38, i39) where
  toRecord backendParams encode Nothing [f0, f1, f2, f3, f4, f5, f6, f7, f8, f9, f10, f11, f12, f13, f14, f15, f16, f17, f18, f19, f20, f21, f22, f23, f24, f25, f26, f27, f28, f29, f30, f31, f32, f33, f34, f35, f36, f37, f38, f39] (v0, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39) =
    sequence [toField backendParams encode Nothing f0 v0, toField backendParams encode Nothing f1 v1, toField backendParams encode Nothing f2 v2, toField backendParams encode Nothing f3 v3, toField backendParams encode Nothing f4 v4, toField backendParams encode Nothing f5 v5, toField backendParams encode Nothing f6 v6, toField backendParams encode Nothing f7 v7, toField backendParams encode Nothing f8 v8, toField backendParams encode Nothing f9 v9, toField backendParams encode Nothing f10 v10, toField backendParams encode Nothing f11 v11, toField backendParams encode Nothing f12 v12, toField backendParams encode Nothing f13 v13, toField backendParams encode Nothing f14 v14, toField backendParams encode Nothing f15 v15, toField backendParams encode Nothing f16 v16, toField backendParams encode Nothing f17 v17, toField backendParams encode Nothing f18 v18, toField backendParams encode Nothing f19 v19, toField backendParams encode Nothing f20 v20, toField backendParams encode Nothing f21 v21, toField backendParams encode Nothing f22 v22, toField backendParams encode Nothing f23 v23, toField backendParams encode Nothing f24 v24, toField backendParams encode Nothing f25 v25, toField backendParams encode Nothing f26 v26, toField backendParams encode Nothing f27 v27, toField backendParams encode Nothing f28 v28, toField backendParams encode Nothing f29 v29, toField backendParams encode Nothing f30 v30, toField backendParams encode Nothing f31 v31, toField backendParams encode Nothing f32 v32, toField backendParams encode Nothing f33 v33, toField backendParams encode Nothing f34 v34, toField backendParams encode Nothing f35 v35, toField backendParams encode Nothing f36 v36, toField backendParams encode Nothing f37 v37, toField backendParams encode Nothing f38 v38, toField backendParams encode Nothing f39 v39]
  toRecord backendParams encode (Just [o0, o1, o2, o3, o4, o5, o6, o7, o8, o9, o10, o11, o12, o13, o14, o15, o16, o17, o18, o19, o20, o21, o22, o23, o24, o25, o26, o27, o28, o29, o30, o31, o32, o33, o34, o35, o36, o37, o38, o39]) [f0, f1, f2, f3, f4, f5, f6, f7, f8, f9, f10, f11, f12, f13, f14, f15, f16, f17, f18, f19, f20, f21, f22, f23, f24, f25, f26, f27, f28, f29, f30, f31, f32, f33, f34, f35, f36, f37, f38, f39] (v0, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39) =
    sequence [toField backendParams encode (Just o0) f0 v0, toField backendParams encode (Just o1) f1 v1, toField backendParams encode (Just o2) f2 v2, toField backendParams encode (Just o3) f3 v3, toField backendParams encode (Just o4) f4 v4, toField backendParams encode (Just o5) f5 v5, toField backendParams encode (Just o6) f6 v6, toField backendParams encode (Just o7) f7 v7, toField backendParams encode (Just o8) f8 v8, toField backendParams encode (Just o9) f9 v9, toField backendParams encode (Just o10) f10 v10, toField backendParams encode (Just o11) f11 v11, toField backendParams encode (Just o12) f12 v12, toField backendParams encode (Just o13) f13 v13, toField backendParams encode (Just o14) f14 v14, toField backendParams encode (Just o15) f15 v15, toField backendParams encode (Just o16) f16 v16, toField backendParams encode (Just o17) f17 v17, toField backendParams encode (Just o18) f18 v18, toField backendParams encode (Just o19) f19 v19, toField backendParams encode (Just o20) f20 v20, toField backendParams encode (Just o21) f21 v21, toField backendParams encode (Just o22) f22 v22, toField backendParams encode (Just o23) f23 v23, toField backendParams encode (Just o24) f24 v24, toField backendParams encode (Just o25) f25 v25, toField backendParams encode (Just o26) f26 v26, toField backendParams encode (Just o27) f27 v27, toField backendParams encode (Just o28) f28 v28, toField backendParams encode (Just o29) f29 v29, toField backendParams encode (Just o30) f30 v30, toField backendParams encode (Just o31) f31 v31, toField backendParams encode (Just o32) f32 v32, toField backendParams encode (Just o33) f33 v33, toField backendParams encode (Just o34) f34 v34, toField backendParams encode (Just o35) f35 v35, toField backendParams encode (Just o36) f36 v36, toField backendParams encode (Just o37) f37 v37, toField backendParams encode (Just o38) f38 v38, toField backendParams encode (Just o39) f39 v39]
  toRecord _ _ (Just os) _ _ =
    fail $ "the number of OIDs must be 40, actually " <> show (length os)
  toRecord _ _ _ fs _ =
    fail $ "the number of format codes must be 40, actually " <> show (length fs)

-- 41-tuple
instance (ToField i0, ToField i1, ToField i2, ToField i3, ToField i4, ToField i5, ToField i6, ToField i7, ToField i8, ToField i9, ToField i10, ToField i11, ToField i12, ToField i13, ToField i14, ToField i15, ToField i16, ToField i17, ToField i18, ToField i19, ToField i20, ToField i21, ToField i22, ToField i23, ToField i24, ToField i25, ToField i26, ToField i27, ToField i28, ToField i29, ToField i30, ToField i31, ToField i32, ToField i33, ToField i34, ToField i35, ToField i36, ToField i37, ToField i38, ToField i39, ToField i40) => ToRecord (i0, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14, i15, i16, i17, i18, i19, i20, i21, i22, i23, i24, i25, i26, i27, i28, i29, i30, i31, i32, i33, i34, i35, i36, i37, i38, i39, i40) where
  toRecord backendParams encode Nothing [f0, f1, f2, f3, f4, f5, f6, f7, f8, f9, f10, f11, f12, f13, f14, f15, f16, f17, f18, f19, f20, f21, f22, f23, f24, f25, f26, f27, f28, f29, f30, f31, f32, f33, f34, f35, f36, f37, f38, f39, f40] (v0, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40) =
    sequence [toField backendParams encode Nothing f0 v0, toField backendParams encode Nothing f1 v1, toField backendParams encode Nothing f2 v2, toField backendParams encode Nothing f3 v3, toField backendParams encode Nothing f4 v4, toField backendParams encode Nothing f5 v5, toField backendParams encode Nothing f6 v6, toField backendParams encode Nothing f7 v7, toField backendParams encode Nothing f8 v8, toField backendParams encode Nothing f9 v9, toField backendParams encode Nothing f10 v10, toField backendParams encode Nothing f11 v11, toField backendParams encode Nothing f12 v12, toField backendParams encode Nothing f13 v13, toField backendParams encode Nothing f14 v14, toField backendParams encode Nothing f15 v15, toField backendParams encode Nothing f16 v16, toField backendParams encode Nothing f17 v17, toField backendParams encode Nothing f18 v18, toField backendParams encode Nothing f19 v19, toField backendParams encode Nothing f20 v20, toField backendParams encode Nothing f21 v21, toField backendParams encode Nothing f22 v22, toField backendParams encode Nothing f23 v23, toField backendParams encode Nothing f24 v24, toField backendParams encode Nothing f25 v25, toField backendParams encode Nothing f26 v26, toField backendParams encode Nothing f27 v27, toField backendParams encode Nothing f28 v28, toField backendParams encode Nothing f29 v29, toField backendParams encode Nothing f30 v30, toField backendParams encode Nothing f31 v31, toField backendParams encode Nothing f32 v32, toField backendParams encode Nothing f33 v33, toField backendParams encode Nothing f34 v34, toField backendParams encode Nothing f35 v35, toField backendParams encode Nothing f36 v36, toField backendParams encode Nothing f37 v37, toField backendParams encode Nothing f38 v38, toField backendParams encode Nothing f39 v39, toField backendParams encode Nothing f40 v40]
  toRecord backendParams encode (Just [o0, o1, o2, o3, o4, o5, o6, o7, o8, o9, o10, o11, o12, o13, o14, o15, o16, o17, o18, o19, o20, o21, o22, o23, o24, o25, o26, o27, o28, o29, o30, o31, o32, o33, o34, o35, o36, o37, o38, o39, o40]) [f0, f1, f2, f3, f4, f5, f6, f7, f8, f9, f10, f11, f12, f13, f14, f15, f16, f17, f18, f19, f20, f21, f22, f23, f24, f25, f26, f27, f28, f29, f30, f31, f32, f33, f34, f35, f36, f37, f38, f39, f40] (v0, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40) =
    sequence [toField backendParams encode (Just o0) f0 v0, toField backendParams encode (Just o1) f1 v1, toField backendParams encode (Just o2) f2 v2, toField backendParams encode (Just o3) f3 v3, toField backendParams encode (Just o4) f4 v4, toField backendParams encode (Just o5) f5 v5, toField backendParams encode (Just o6) f6 v6, toField backendParams encode (Just o7) f7 v7, toField backendParams encode (Just o8) f8 v8, toField backendParams encode (Just o9) f9 v9, toField backendParams encode (Just o10) f10 v10, toField backendParams encode (Just o11) f11 v11, toField backendParams encode (Just o12) f12 v12, toField backendParams encode (Just o13) f13 v13, toField backendParams encode (Just o14) f14 v14, toField backendParams encode (Just o15) f15 v15, toField backendParams encode (Just o16) f16 v16, toField backendParams encode (Just o17) f17 v17, toField backendParams encode (Just o18) f18 v18, toField backendParams encode (Just o19) f19 v19, toField backendParams encode (Just o20) f20 v20, toField backendParams encode (Just o21) f21 v21, toField backendParams encode (Just o22) f22 v22, toField backendParams encode (Just o23) f23 v23, toField backendParams encode (Just o24) f24 v24, toField backendParams encode (Just o25) f25 v25, toField backendParams encode (Just o26) f26 v26, toField backendParams encode (Just o27) f27 v27, toField backendParams encode (Just o28) f28 v28, toField backendParams encode (Just o29) f29 v29, toField backendParams encode (Just o30) f30 v30, toField backendParams encode (Just o31) f31 v31, toField backendParams encode (Just o32) f32 v32, toField backendParams encode (Just o33) f33 v33, toField backendParams encode (Just o34) f34 v34, toField backendParams encode (Just o35) f35 v35, toField backendParams encode (Just o36) f36 v36, toField backendParams encode (Just o37) f37 v37, toField backendParams encode (Just o38) f38 v38, toField backendParams encode (Just o39) f39 v39, toField backendParams encode (Just o40) f40 v40]
  toRecord _ _ (Just os) _ _ =
    fail $ "the number of OIDs must be 41, actually " <> show (length os)
  toRecord _ _ _ fs _ =
    fail $ "the number of format codes must be 41, actually " <> show (length fs)

-- 42-tuple
instance (ToField i0, ToField i1, ToField i2, ToField i3, ToField i4, ToField i5, ToField i6, ToField i7, ToField i8, ToField i9, ToField i10, ToField i11, ToField i12, ToField i13, ToField i14, ToField i15, ToField i16, ToField i17, ToField i18, ToField i19, ToField i20, ToField i21, ToField i22, ToField i23, ToField i24, ToField i25, ToField i26, ToField i27, ToField i28, ToField i29, ToField i30, ToField i31, ToField i32, ToField i33, ToField i34, ToField i35, ToField i36, ToField i37, ToField i38, ToField i39, ToField i40, ToField i41) => ToRecord (i0, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14, i15, i16, i17, i18, i19, i20, i21, i22, i23, i24, i25, i26, i27, i28, i29, i30, i31, i32, i33, i34, i35, i36, i37, i38, i39, i40, i41) where
  toRecord backendParams encode Nothing [f0, f1, f2, f3, f4, f5, f6, f7, f8, f9, f10, f11, f12, f13, f14, f15, f16, f17, f18, f19, f20, f21, f22, f23, f24, f25, f26, f27, f28, f29, f30, f31, f32, f33, f34, f35, f36, f37, f38, f39, f40, f41] (v0, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41) =
    sequence [toField backendParams encode Nothing f0 v0, toField backendParams encode Nothing f1 v1, toField backendParams encode Nothing f2 v2, toField backendParams encode Nothing f3 v3, toField backendParams encode Nothing f4 v4, toField backendParams encode Nothing f5 v5, toField backendParams encode Nothing f6 v6, toField backendParams encode Nothing f7 v7, toField backendParams encode Nothing f8 v8, toField backendParams encode Nothing f9 v9, toField backendParams encode Nothing f10 v10, toField backendParams encode Nothing f11 v11, toField backendParams encode Nothing f12 v12, toField backendParams encode Nothing f13 v13, toField backendParams encode Nothing f14 v14, toField backendParams encode Nothing f15 v15, toField backendParams encode Nothing f16 v16, toField backendParams encode Nothing f17 v17, toField backendParams encode Nothing f18 v18, toField backendParams encode Nothing f19 v19, toField backendParams encode Nothing f20 v20, toField backendParams encode Nothing f21 v21, toField backendParams encode Nothing f22 v22, toField backendParams encode Nothing f23 v23, toField backendParams encode Nothing f24 v24, toField backendParams encode Nothing f25 v25, toField backendParams encode Nothing f26 v26, toField backendParams encode Nothing f27 v27, toField backendParams encode Nothing f28 v28, toField backendParams encode Nothing f29 v29, toField backendParams encode Nothing f30 v30, toField backendParams encode Nothing f31 v31, toField backendParams encode Nothing f32 v32, toField backendParams encode Nothing f33 v33, toField backendParams encode Nothing f34 v34, toField backendParams encode Nothing f35 v35, toField backendParams encode Nothing f36 v36, toField backendParams encode Nothing f37 v37, toField backendParams encode Nothing f38 v38, toField backendParams encode Nothing f39 v39, toField backendParams encode Nothing f40 v40, toField backendParams encode Nothing f41 v41]
  toRecord backendParams encode (Just [o0, o1, o2, o3, o4, o5, o6, o7, o8, o9, o10, o11, o12, o13, o14, o15, o16, o17, o18, o19, o20, o21, o22, o23, o24, o25, o26, o27, o28, o29, o30, o31, o32, o33, o34, o35, o36, o37, o38, o39, o40, o41]) [f0, f1, f2, f3, f4, f5, f6, f7, f8, f9, f10, f11, f12, f13, f14, f15, f16, f17, f18, f19, f20, f21, f22, f23, f24, f25, f26, f27, f28, f29, f30, f31, f32, f33, f34, f35, f36, f37, f38, f39, f40, f41] (v0, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41) =
    sequence [toField backendParams encode (Just o0) f0 v0, toField backendParams encode (Just o1) f1 v1, toField backendParams encode (Just o2) f2 v2, toField backendParams encode (Just o3) f3 v3, toField backendParams encode (Just o4) f4 v4, toField backendParams encode (Just o5) f5 v5, toField backendParams encode (Just o6) f6 v6, toField backendParams encode (Just o7) f7 v7, toField backendParams encode (Just o8) f8 v8, toField backendParams encode (Just o9) f9 v9, toField backendParams encode (Just o10) f10 v10, toField backendParams encode (Just o11) f11 v11, toField backendParams encode (Just o12) f12 v12, toField backendParams encode (Just o13) f13 v13, toField backendParams encode (Just o14) f14 v14, toField backendParams encode (Just o15) f15 v15, toField backendParams encode (Just o16) f16 v16, toField backendParams encode (Just o17) f17 v17, toField backendParams encode (Just o18) f18 v18, toField backendParams encode (Just o19) f19 v19, toField backendParams encode (Just o20) f20 v20, toField backendParams encode (Just o21) f21 v21, toField backendParams encode (Just o22) f22 v22, toField backendParams encode (Just o23) f23 v23, toField backendParams encode (Just o24) f24 v24, toField backendParams encode (Just o25) f25 v25, toField backendParams encode (Just o26) f26 v26, toField backendParams encode (Just o27) f27 v27, toField backendParams encode (Just o28) f28 v28, toField backendParams encode (Just o29) f29 v29, toField backendParams encode (Just o30) f30 v30, toField backendParams encode (Just o31) f31 v31, toField backendParams encode (Just o32) f32 v32, toField backendParams encode (Just o33) f33 v33, toField backendParams encode (Just o34) f34 v34, toField backendParams encode (Just o35) f35 v35, toField backendParams encode (Just o36) f36 v36, toField backendParams encode (Just o37) f37 v37, toField backendParams encode (Just o38) f38 v38, toField backendParams encode (Just o39) f39 v39, toField backendParams encode (Just o40) f40 v40, toField backendParams encode (Just o41) f41 v41]
  toRecord _ _ (Just os) _ _ =
    fail $ "the number of OIDs must be 42, actually " <> show (length os)
  toRecord _ _ _ fs _ =
    fail $ "the number of format codes must be 42, actually " <> show (length fs)

-- 43-tuple
instance (ToField i0, ToField i1, ToField i2, ToField i3, ToField i4, ToField i5, ToField i6, ToField i7, ToField i8, ToField i9, ToField i10, ToField i11, ToField i12, ToField i13, ToField i14, ToField i15, ToField i16, ToField i17, ToField i18, ToField i19, ToField i20, ToField i21, ToField i22, ToField i23, ToField i24, ToField i25, ToField i26, ToField i27, ToField i28, ToField i29, ToField i30, ToField i31, ToField i32, ToField i33, ToField i34, ToField i35, ToField i36, ToField i37, ToField i38, ToField i39, ToField i40, ToField i41, ToField i42) => ToRecord (i0, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14, i15, i16, i17, i18, i19, i20, i21, i22, i23, i24, i25, i26, i27, i28, i29, i30, i31, i32, i33, i34, i35, i36, i37, i38, i39, i40, i41, i42) where
  toRecord backendParams encode Nothing [f0, f1, f2, f3, f4, f5, f6, f7, f8, f9, f10, f11, f12, f13, f14, f15, f16, f17, f18, f19, f20, f21, f22, f23, f24, f25, f26, f27, f28, f29, f30, f31, f32, f33, f34, f35, f36, f37, f38, f39, f40, f41, f42] (v0, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42) =
    sequence [toField backendParams encode Nothing f0 v0, toField backendParams encode Nothing f1 v1, toField backendParams encode Nothing f2 v2, toField backendParams encode Nothing f3 v3, toField backendParams encode Nothing f4 v4, toField backendParams encode Nothing f5 v5, toField backendParams encode Nothing f6 v6, toField backendParams encode Nothing f7 v7, toField backendParams encode Nothing f8 v8, toField backendParams encode Nothing f9 v9, toField backendParams encode Nothing f10 v10, toField backendParams encode Nothing f11 v11, toField backendParams encode Nothing f12 v12, toField backendParams encode Nothing f13 v13, toField backendParams encode Nothing f14 v14, toField backendParams encode Nothing f15 v15, toField backendParams encode Nothing f16 v16, toField backendParams encode Nothing f17 v17, toField backendParams encode Nothing f18 v18, toField backendParams encode Nothing f19 v19, toField backendParams encode Nothing f20 v20, toField backendParams encode Nothing f21 v21, toField backendParams encode Nothing f22 v22, toField backendParams encode Nothing f23 v23, toField backendParams encode Nothing f24 v24, toField backendParams encode Nothing f25 v25, toField backendParams encode Nothing f26 v26, toField backendParams encode Nothing f27 v27, toField backendParams encode Nothing f28 v28, toField backendParams encode Nothing f29 v29, toField backendParams encode Nothing f30 v30, toField backendParams encode Nothing f31 v31, toField backendParams encode Nothing f32 v32, toField backendParams encode Nothing f33 v33, toField backendParams encode Nothing f34 v34, toField backendParams encode Nothing f35 v35, toField backendParams encode Nothing f36 v36, toField backendParams encode Nothing f37 v37, toField backendParams encode Nothing f38 v38, toField backendParams encode Nothing f39 v39, toField backendParams encode Nothing f40 v40, toField backendParams encode Nothing f41 v41, toField backendParams encode Nothing f42 v42]
  toRecord backendParams encode (Just [o0, o1, o2, o3, o4, o5, o6, o7, o8, o9, o10, o11, o12, o13, o14, o15, o16, o17, o18, o19, o20, o21, o22, o23, o24, o25, o26, o27, o28, o29, o30, o31, o32, o33, o34, o35, o36, o37, o38, o39, o40, o41, o42]) [f0, f1, f2, f3, f4, f5, f6, f7, f8, f9, f10, f11, f12, f13, f14, f15, f16, f17, f18, f19, f20, f21, f22, f23, f24, f25, f26, f27, f28, f29, f30, f31, f32, f33, f34, f35, f36, f37, f38, f39, f40, f41, f42] (v0, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42) =
    sequence [toField backendParams encode (Just o0) f0 v0, toField backendParams encode (Just o1) f1 v1, toField backendParams encode (Just o2) f2 v2, toField backendParams encode (Just o3) f3 v3, toField backendParams encode (Just o4) f4 v4, toField backendParams encode (Just o5) f5 v5, toField backendParams encode (Just o6) f6 v6, toField backendParams encode (Just o7) f7 v7, toField backendParams encode (Just o8) f8 v8, toField backendParams encode (Just o9) f9 v9, toField backendParams encode (Just o10) f10 v10, toField backendParams encode (Just o11) f11 v11, toField backendParams encode (Just o12) f12 v12, toField backendParams encode (Just o13) f13 v13, toField backendParams encode (Just o14) f14 v14, toField backendParams encode (Just o15) f15 v15, toField backendParams encode (Just o16) f16 v16, toField backendParams encode (Just o17) f17 v17, toField backendParams encode (Just o18) f18 v18, toField backendParams encode (Just o19) f19 v19, toField backendParams encode (Just o20) f20 v20, toField backendParams encode (Just o21) f21 v21, toField backendParams encode (Just o22) f22 v22, toField backendParams encode (Just o23) f23 v23, toField backendParams encode (Just o24) f24 v24, toField backendParams encode (Just o25) f25 v25, toField backendParams encode (Just o26) f26 v26, toField backendParams encode (Just o27) f27 v27, toField backendParams encode (Just o28) f28 v28, toField backendParams encode (Just o29) f29 v29, toField backendParams encode (Just o30) f30 v30, toField backendParams encode (Just o31) f31 v31, toField backendParams encode (Just o32) f32 v32, toField backendParams encode (Just o33) f33 v33, toField backendParams encode (Just o34) f34 v34, toField backendParams encode (Just o35) f35 v35, toField backendParams encode (Just o36) f36 v36, toField backendParams encode (Just o37) f37 v37, toField backendParams encode (Just o38) f38 v38, toField backendParams encode (Just o39) f39 v39, toField backendParams encode (Just o40) f40 v40, toField backendParams encode (Just o41) f41 v41, toField backendParams encode (Just o42) f42 v42]
  toRecord _ _ (Just os) _ _ =
    fail $ "the number of OIDs must be 43, actually " <> show (length os)
  toRecord _ _ _ fs _ =
    fail $ "the number of format codes must be 43, actually " <> show (length fs)

-- 44-tuple
instance (ToField i0, ToField i1, ToField i2, ToField i3, ToField i4, ToField i5, ToField i6, ToField i7, ToField i8, ToField i9, ToField i10, ToField i11, ToField i12, ToField i13, ToField i14, ToField i15, ToField i16, ToField i17, ToField i18, ToField i19, ToField i20, ToField i21, ToField i22, ToField i23, ToField i24, ToField i25, ToField i26, ToField i27, ToField i28, ToField i29, ToField i30, ToField i31, ToField i32, ToField i33, ToField i34, ToField i35, ToField i36, ToField i37, ToField i38, ToField i39, ToField i40, ToField i41, ToField i42, ToField i43) => ToRecord (i0, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14, i15, i16, i17, i18, i19, i20, i21, i22, i23, i24, i25, i26, i27, i28, i29, i30, i31, i32, i33, i34, i35, i36, i37, i38, i39, i40, i41, i42, i43) where
  toRecord backendParams encode Nothing [f0, f1, f2, f3, f4, f5, f6, f7, f8, f9, f10, f11, f12, f13, f14, f15, f16, f17, f18, f19, f20, f21, f22, f23, f24, f25, f26, f27, f28, f29, f30, f31, f32, f33, f34, f35, f36, f37, f38, f39, f40, f41, f42, f43] (v0, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43) =
    sequence [toField backendParams encode Nothing f0 v0, toField backendParams encode Nothing f1 v1, toField backendParams encode Nothing f2 v2, toField backendParams encode Nothing f3 v3, toField backendParams encode Nothing f4 v4, toField backendParams encode Nothing f5 v5, toField backendParams encode Nothing f6 v6, toField backendParams encode Nothing f7 v7, toField backendParams encode Nothing f8 v8, toField backendParams encode Nothing f9 v9, toField backendParams encode Nothing f10 v10, toField backendParams encode Nothing f11 v11, toField backendParams encode Nothing f12 v12, toField backendParams encode Nothing f13 v13, toField backendParams encode Nothing f14 v14, toField backendParams encode Nothing f15 v15, toField backendParams encode Nothing f16 v16, toField backendParams encode Nothing f17 v17, toField backendParams encode Nothing f18 v18, toField backendParams encode Nothing f19 v19, toField backendParams encode Nothing f20 v20, toField backendParams encode Nothing f21 v21, toField backendParams encode Nothing f22 v22, toField backendParams encode Nothing f23 v23, toField backendParams encode Nothing f24 v24, toField backendParams encode Nothing f25 v25, toField backendParams encode Nothing f26 v26, toField backendParams encode Nothing f27 v27, toField backendParams encode Nothing f28 v28, toField backendParams encode Nothing f29 v29, toField backendParams encode Nothing f30 v30, toField backendParams encode Nothing f31 v31, toField backendParams encode Nothing f32 v32, toField backendParams encode Nothing f33 v33, toField backendParams encode Nothing f34 v34, toField backendParams encode Nothing f35 v35, toField backendParams encode Nothing f36 v36, toField backendParams encode Nothing f37 v37, toField backendParams encode Nothing f38 v38, toField backendParams encode Nothing f39 v39, toField backendParams encode Nothing f40 v40, toField backendParams encode Nothing f41 v41, toField backendParams encode Nothing f42 v42, toField backendParams encode Nothing f43 v43]
  toRecord backendParams encode (Just [o0, o1, o2, o3, o4, o5, o6, o7, o8, o9, o10, o11, o12, o13, o14, o15, o16, o17, o18, o19, o20, o21, o22, o23, o24, o25, o26, o27, o28, o29, o30, o31, o32, o33, o34, o35, o36, o37, o38, o39, o40, o41, o42, o43]) [f0, f1, f2, f3, f4, f5, f6, f7, f8, f9, f10, f11, f12, f13, f14, f15, f16, f17, f18, f19, f20, f21, f22, f23, f24, f25, f26, f27, f28, f29, f30, f31, f32, f33, f34, f35, f36, f37, f38, f39, f40, f41, f42, f43] (v0, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43) =
    sequence [toField backendParams encode (Just o0) f0 v0, toField backendParams encode (Just o1) f1 v1, toField backendParams encode (Just o2) f2 v2, toField backendParams encode (Just o3) f3 v3, toField backendParams encode (Just o4) f4 v4, toField backendParams encode (Just o5) f5 v5, toField backendParams encode (Just o6) f6 v6, toField backendParams encode (Just o7) f7 v7, toField backendParams encode (Just o8) f8 v8, toField backendParams encode (Just o9) f9 v9, toField backendParams encode (Just o10) f10 v10, toField backendParams encode (Just o11) f11 v11, toField backendParams encode (Just o12) f12 v12, toField backendParams encode (Just o13) f13 v13, toField backendParams encode (Just o14) f14 v14, toField backendParams encode (Just o15) f15 v15, toField backendParams encode (Just o16) f16 v16, toField backendParams encode (Just o17) f17 v17, toField backendParams encode (Just o18) f18 v18, toField backendParams encode (Just o19) f19 v19, toField backendParams encode (Just o20) f20 v20, toField backendParams encode (Just o21) f21 v21, toField backendParams encode (Just o22) f22 v22, toField backendParams encode (Just o23) f23 v23, toField backendParams encode (Just o24) f24 v24, toField backendParams encode (Just o25) f25 v25, toField backendParams encode (Just o26) f26 v26, toField backendParams encode (Just o27) f27 v27, toField backendParams encode (Just o28) f28 v28, toField backendParams encode (Just o29) f29 v29, toField backendParams encode (Just o30) f30 v30, toField backendParams encode (Just o31) f31 v31, toField backendParams encode (Just o32) f32 v32, toField backendParams encode (Just o33) f33 v33, toField backendParams encode (Just o34) f34 v34, toField backendParams encode (Just o35) f35 v35, toField backendParams encode (Just o36) f36 v36, toField backendParams encode (Just o37) f37 v37, toField backendParams encode (Just o38) f38 v38, toField backendParams encode (Just o39) f39 v39, toField backendParams encode (Just o40) f40 v40, toField backendParams encode (Just o41) f41 v41, toField backendParams encode (Just o42) f42 v42, toField backendParams encode (Just o43) f43 v43]
  toRecord _ _ (Just os) _ _ =
    fail $ "the number of OIDs must be 44, actually " <> show (length os)
  toRecord _ _ _ fs _ =
    fail $ "the number of format codes must be 44, actually " <> show (length fs)

-- 45-tuple
instance (ToField i0, ToField i1, ToField i2, ToField i3, ToField i4, ToField i5, ToField i6, ToField i7, ToField i8, ToField i9, ToField i10, ToField i11, ToField i12, ToField i13, ToField i14, ToField i15, ToField i16, ToField i17, ToField i18, ToField i19, ToField i20, ToField i21, ToField i22, ToField i23, ToField i24, ToField i25, ToField i26, ToField i27, ToField i28, ToField i29, ToField i30, ToField i31, ToField i32, ToField i33, ToField i34, ToField i35, ToField i36, ToField i37, ToField i38, ToField i39, ToField i40, ToField i41, ToField i42, ToField i43, ToField i44) => ToRecord (i0, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14, i15, i16, i17, i18, i19, i20, i21, i22, i23, i24, i25, i26, i27, i28, i29, i30, i31, i32, i33, i34, i35, i36, i37, i38, i39, i40, i41, i42, i43, i44) where
  toRecord backendParams encode Nothing [f0, f1, f2, f3, f4, f5, f6, f7, f8, f9, f10, f11, f12, f13, f14, f15, f16, f17, f18, f19, f20, f21, f22, f23, f24, f25, f26, f27, f28, f29, f30, f31, f32, f33, f34, f35, f36, f37, f38, f39, f40, f41, f42, f43, f44] (v0, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44) =
    sequence [toField backendParams encode Nothing f0 v0, toField backendParams encode Nothing f1 v1, toField backendParams encode Nothing f2 v2, toField backendParams encode Nothing f3 v3, toField backendParams encode Nothing f4 v4, toField backendParams encode Nothing f5 v5, toField backendParams encode Nothing f6 v6, toField backendParams encode Nothing f7 v7, toField backendParams encode Nothing f8 v8, toField backendParams encode Nothing f9 v9, toField backendParams encode Nothing f10 v10, toField backendParams encode Nothing f11 v11, toField backendParams encode Nothing f12 v12, toField backendParams encode Nothing f13 v13, toField backendParams encode Nothing f14 v14, toField backendParams encode Nothing f15 v15, toField backendParams encode Nothing f16 v16, toField backendParams encode Nothing f17 v17, toField backendParams encode Nothing f18 v18, toField backendParams encode Nothing f19 v19, toField backendParams encode Nothing f20 v20, toField backendParams encode Nothing f21 v21, toField backendParams encode Nothing f22 v22, toField backendParams encode Nothing f23 v23, toField backendParams encode Nothing f24 v24, toField backendParams encode Nothing f25 v25, toField backendParams encode Nothing f26 v26, toField backendParams encode Nothing f27 v27, toField backendParams encode Nothing f28 v28, toField backendParams encode Nothing f29 v29, toField backendParams encode Nothing f30 v30, toField backendParams encode Nothing f31 v31, toField backendParams encode Nothing f32 v32, toField backendParams encode Nothing f33 v33, toField backendParams encode Nothing f34 v34, toField backendParams encode Nothing f35 v35, toField backendParams encode Nothing f36 v36, toField backendParams encode Nothing f37 v37, toField backendParams encode Nothing f38 v38, toField backendParams encode Nothing f39 v39, toField backendParams encode Nothing f40 v40, toField backendParams encode Nothing f41 v41, toField backendParams encode Nothing f42 v42, toField backendParams encode Nothing f43 v43, toField backendParams encode Nothing f44 v44]
  toRecord backendParams encode (Just [o0, o1, o2, o3, o4, o5, o6, o7, o8, o9, o10, o11, o12, o13, o14, o15, o16, o17, o18, o19, o20, o21, o22, o23, o24, o25, o26, o27, o28, o29, o30, o31, o32, o33, o34, o35, o36, o37, o38, o39, o40, o41, o42, o43, o44]) [f0, f1, f2, f3, f4, f5, f6, f7, f8, f9, f10, f11, f12, f13, f14, f15, f16, f17, f18, f19, f20, f21, f22, f23, f24, f25, f26, f27, f28, f29, f30, f31, f32, f33, f34, f35, f36, f37, f38, f39, f40, f41, f42, f43, f44] (v0, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44) =
    sequence [toField backendParams encode (Just o0) f0 v0, toField backendParams encode (Just o1) f1 v1, toField backendParams encode (Just o2) f2 v2, toField backendParams encode (Just o3) f3 v3, toField backendParams encode (Just o4) f4 v4, toField backendParams encode (Just o5) f5 v5, toField backendParams encode (Just o6) f6 v6, toField backendParams encode (Just o7) f7 v7, toField backendParams encode (Just o8) f8 v8, toField backendParams encode (Just o9) f9 v9, toField backendParams encode (Just o10) f10 v10, toField backendParams encode (Just o11) f11 v11, toField backendParams encode (Just o12) f12 v12, toField backendParams encode (Just o13) f13 v13, toField backendParams encode (Just o14) f14 v14, toField backendParams encode (Just o15) f15 v15, toField backendParams encode (Just o16) f16 v16, toField backendParams encode (Just o17) f17 v17, toField backendParams encode (Just o18) f18 v18, toField backendParams encode (Just o19) f19 v19, toField backendParams encode (Just o20) f20 v20, toField backendParams encode (Just o21) f21 v21, toField backendParams encode (Just o22) f22 v22, toField backendParams encode (Just o23) f23 v23, toField backendParams encode (Just o24) f24 v24, toField backendParams encode (Just o25) f25 v25, toField backendParams encode (Just o26) f26 v26, toField backendParams encode (Just o27) f27 v27, toField backendParams encode (Just o28) f28 v28, toField backendParams encode (Just o29) f29 v29, toField backendParams encode (Just o30) f30 v30, toField backendParams encode (Just o31) f31 v31, toField backendParams encode (Just o32) f32 v32, toField backendParams encode (Just o33) f33 v33, toField backendParams encode (Just o34) f34 v34, toField backendParams encode (Just o35) f35 v35, toField backendParams encode (Just o36) f36 v36, toField backendParams encode (Just o37) f37 v37, toField backendParams encode (Just o38) f38 v38, toField backendParams encode (Just o39) f39 v39, toField backendParams encode (Just o40) f40 v40, toField backendParams encode (Just o41) f41 v41, toField backendParams encode (Just o42) f42 v42, toField backendParams encode (Just o43) f43 v43, toField backendParams encode (Just o44) f44 v44]
  toRecord _ _ (Just os) _ _ =
    fail $ "the number of OIDs must be 45, actually " <> show (length os)
  toRecord _ _ _ fs _ =
    fail $ "the number of format codes must be 45, actually " <> show (length fs)

-- 46-tuple
instance (ToField i0, ToField i1, ToField i2, ToField i3, ToField i4, ToField i5, ToField i6, ToField i7, ToField i8, ToField i9, ToField i10, ToField i11, ToField i12, ToField i13, ToField i14, ToField i15, ToField i16, ToField i17, ToField i18, ToField i19, ToField i20, ToField i21, ToField i22, ToField i23, ToField i24, ToField i25, ToField i26, ToField i27, ToField i28, ToField i29, ToField i30, ToField i31, ToField i32, ToField i33, ToField i34, ToField i35, ToField i36, ToField i37, ToField i38, ToField i39, ToField i40, ToField i41, ToField i42, ToField i43, ToField i44, ToField i45) => ToRecord (i0, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14, i15, i16, i17, i18, i19, i20, i21, i22, i23, i24, i25, i26, i27, i28, i29, i30, i31, i32, i33, i34, i35, i36, i37, i38, i39, i40, i41, i42, i43, i44, i45) where
  toRecord backendParams encode Nothing [f0, f1, f2, f3, f4, f5, f6, f7, f8, f9, f10, f11, f12, f13, f14, f15, f16, f17, f18, f19, f20, f21, f22, f23, f24, f25, f26, f27, f28, f29, f30, f31, f32, f33, f34, f35, f36, f37, f38, f39, f40, f41, f42, f43, f44, f45] (v0, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45) =
    sequence [toField backendParams encode Nothing f0 v0, toField backendParams encode Nothing f1 v1, toField backendParams encode Nothing f2 v2, toField backendParams encode Nothing f3 v3, toField backendParams encode Nothing f4 v4, toField backendParams encode Nothing f5 v5, toField backendParams encode Nothing f6 v6, toField backendParams encode Nothing f7 v7, toField backendParams encode Nothing f8 v8, toField backendParams encode Nothing f9 v9, toField backendParams encode Nothing f10 v10, toField backendParams encode Nothing f11 v11, toField backendParams encode Nothing f12 v12, toField backendParams encode Nothing f13 v13, toField backendParams encode Nothing f14 v14, toField backendParams encode Nothing f15 v15, toField backendParams encode Nothing f16 v16, toField backendParams encode Nothing f17 v17, toField backendParams encode Nothing f18 v18, toField backendParams encode Nothing f19 v19, toField backendParams encode Nothing f20 v20, toField backendParams encode Nothing f21 v21, toField backendParams encode Nothing f22 v22, toField backendParams encode Nothing f23 v23, toField backendParams encode Nothing f24 v24, toField backendParams encode Nothing f25 v25, toField backendParams encode Nothing f26 v26, toField backendParams encode Nothing f27 v27, toField backendParams encode Nothing f28 v28, toField backendParams encode Nothing f29 v29, toField backendParams encode Nothing f30 v30, toField backendParams encode Nothing f31 v31, toField backendParams encode Nothing f32 v32, toField backendParams encode Nothing f33 v33, toField backendParams encode Nothing f34 v34, toField backendParams encode Nothing f35 v35, toField backendParams encode Nothing f36 v36, toField backendParams encode Nothing f37 v37, toField backendParams encode Nothing f38 v38, toField backendParams encode Nothing f39 v39, toField backendParams encode Nothing f40 v40, toField backendParams encode Nothing f41 v41, toField backendParams encode Nothing f42 v42, toField backendParams encode Nothing f43 v43, toField backendParams encode Nothing f44 v44, toField backendParams encode Nothing f45 v45]
  toRecord backendParams encode (Just [o0, o1, o2, o3, o4, o5, o6, o7, o8, o9, o10, o11, o12, o13, o14, o15, o16, o17, o18, o19, o20, o21, o22, o23, o24, o25, o26, o27, o28, o29, o30, o31, o32, o33, o34, o35, o36, o37, o38, o39, o40, o41, o42, o43, o44, o45]) [f0, f1, f2, f3, f4, f5, f6, f7, f8, f9, f10, f11, f12, f13, f14, f15, f16, f17, f18, f19, f20, f21, f22, f23, f24, f25, f26, f27, f28, f29, f30, f31, f32, f33, f34, f35, f36, f37, f38, f39, f40, f41, f42, f43, f44, f45] (v0, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45) =
    sequence [toField backendParams encode (Just o0) f0 v0, toField backendParams encode (Just o1) f1 v1, toField backendParams encode (Just o2) f2 v2, toField backendParams encode (Just o3) f3 v3, toField backendParams encode (Just o4) f4 v4, toField backendParams encode (Just o5) f5 v5, toField backendParams encode (Just o6) f6 v6, toField backendParams encode (Just o7) f7 v7, toField backendParams encode (Just o8) f8 v8, toField backendParams encode (Just o9) f9 v9, toField backendParams encode (Just o10) f10 v10, toField backendParams encode (Just o11) f11 v11, toField backendParams encode (Just o12) f12 v12, toField backendParams encode (Just o13) f13 v13, toField backendParams encode (Just o14) f14 v14, toField backendParams encode (Just o15) f15 v15, toField backendParams encode (Just o16) f16 v16, toField backendParams encode (Just o17) f17 v17, toField backendParams encode (Just o18) f18 v18, toField backendParams encode (Just o19) f19 v19, toField backendParams encode (Just o20) f20 v20, toField backendParams encode (Just o21) f21 v21, toField backendParams encode (Just o22) f22 v22, toField backendParams encode (Just o23) f23 v23, toField backendParams encode (Just o24) f24 v24, toField backendParams encode (Just o25) f25 v25, toField backendParams encode (Just o26) f26 v26, toField backendParams encode (Just o27) f27 v27, toField backendParams encode (Just o28) f28 v28, toField backendParams encode (Just o29) f29 v29, toField backendParams encode (Just o30) f30 v30, toField backendParams encode (Just o31) f31 v31, toField backendParams encode (Just o32) f32 v32, toField backendParams encode (Just o33) f33 v33, toField backendParams encode (Just o34) f34 v34, toField backendParams encode (Just o35) f35 v35, toField backendParams encode (Just o36) f36 v36, toField backendParams encode (Just o37) f37 v37, toField backendParams encode (Just o38) f38 v38, toField backendParams encode (Just o39) f39 v39, toField backendParams encode (Just o40) f40 v40, toField backendParams encode (Just o41) f41 v41, toField backendParams encode (Just o42) f42 v42, toField backendParams encode (Just o43) f43 v43, toField backendParams encode (Just o44) f44 v44, toField backendParams encode (Just o45) f45 v45]
  toRecord _ _ (Just os) _ _ =
    fail $ "the number of OIDs must be 46, actually " <> show (length os)
  toRecord _ _ _ fs _ =
    fail $ "the number of format codes must be 46, actually " <> show (length fs)

-- 47-tuple
instance (ToField i0, ToField i1, ToField i2, ToField i3, ToField i4, ToField i5, ToField i6, ToField i7, ToField i8, ToField i9, ToField i10, ToField i11, ToField i12, ToField i13, ToField i14, ToField i15, ToField i16, ToField i17, ToField i18, ToField i19, ToField i20, ToField i21, ToField i22, ToField i23, ToField i24, ToField i25, ToField i26, ToField i27, ToField i28, ToField i29, ToField i30, ToField i31, ToField i32, ToField i33, ToField i34, ToField i35, ToField i36, ToField i37, ToField i38, ToField i39, ToField i40, ToField i41, ToField i42, ToField i43, ToField i44, ToField i45, ToField i46) => ToRecord (i0, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14, i15, i16, i17, i18, i19, i20, i21, i22, i23, i24, i25, i26, i27, i28, i29, i30, i31, i32, i33, i34, i35, i36, i37, i38, i39, i40, i41, i42, i43, i44, i45, i46) where
  toRecord backendParams encode Nothing [f0, f1, f2, f3, f4, f5, f6, f7, f8, f9, f10, f11, f12, f13, f14, f15, f16, f17, f18, f19, f20, f21, f22, f23, f24, f25, f26, f27, f28, f29, f30, f31, f32, f33, f34, f35, f36, f37, f38, f39, f40, f41, f42, f43, f44, f45, f46] (v0, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46) =
    sequence [toField backendParams encode Nothing f0 v0, toField backendParams encode Nothing f1 v1, toField backendParams encode Nothing f2 v2, toField backendParams encode Nothing f3 v3, toField backendParams encode Nothing f4 v4, toField backendParams encode Nothing f5 v5, toField backendParams encode Nothing f6 v6, toField backendParams encode Nothing f7 v7, toField backendParams encode Nothing f8 v8, toField backendParams encode Nothing f9 v9, toField backendParams encode Nothing f10 v10, toField backendParams encode Nothing f11 v11, toField backendParams encode Nothing f12 v12, toField backendParams encode Nothing f13 v13, toField backendParams encode Nothing f14 v14, toField backendParams encode Nothing f15 v15, toField backendParams encode Nothing f16 v16, toField backendParams encode Nothing f17 v17, toField backendParams encode Nothing f18 v18, toField backendParams encode Nothing f19 v19, toField backendParams encode Nothing f20 v20, toField backendParams encode Nothing f21 v21, toField backendParams encode Nothing f22 v22, toField backendParams encode Nothing f23 v23, toField backendParams encode Nothing f24 v24, toField backendParams encode Nothing f25 v25, toField backendParams encode Nothing f26 v26, toField backendParams encode Nothing f27 v27, toField backendParams encode Nothing f28 v28, toField backendParams encode Nothing f29 v29, toField backendParams encode Nothing f30 v30, toField backendParams encode Nothing f31 v31, toField backendParams encode Nothing f32 v32, toField backendParams encode Nothing f33 v33, toField backendParams encode Nothing f34 v34, toField backendParams encode Nothing f35 v35, toField backendParams encode Nothing f36 v36, toField backendParams encode Nothing f37 v37, toField backendParams encode Nothing f38 v38, toField backendParams encode Nothing f39 v39, toField backendParams encode Nothing f40 v40, toField backendParams encode Nothing f41 v41, toField backendParams encode Nothing f42 v42, toField backendParams encode Nothing f43 v43, toField backendParams encode Nothing f44 v44, toField backendParams encode Nothing f45 v45, toField backendParams encode Nothing f46 v46]
  toRecord backendParams encode (Just [o0, o1, o2, o3, o4, o5, o6, o7, o8, o9, o10, o11, o12, o13, o14, o15, o16, o17, o18, o19, o20, o21, o22, o23, o24, o25, o26, o27, o28, o29, o30, o31, o32, o33, o34, o35, o36, o37, o38, o39, o40, o41, o42, o43, o44, o45, o46]) [f0, f1, f2, f3, f4, f5, f6, f7, f8, f9, f10, f11, f12, f13, f14, f15, f16, f17, f18, f19, f20, f21, f22, f23, f24, f25, f26, f27, f28, f29, f30, f31, f32, f33, f34, f35, f36, f37, f38, f39, f40, f41, f42, f43, f44, f45, f46] (v0, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46) =
    sequence [toField backendParams encode (Just o0) f0 v0, toField backendParams encode (Just o1) f1 v1, toField backendParams encode (Just o2) f2 v2, toField backendParams encode (Just o3) f3 v3, toField backendParams encode (Just o4) f4 v4, toField backendParams encode (Just o5) f5 v5, toField backendParams encode (Just o6) f6 v6, toField backendParams encode (Just o7) f7 v7, toField backendParams encode (Just o8) f8 v8, toField backendParams encode (Just o9) f9 v9, toField backendParams encode (Just o10) f10 v10, toField backendParams encode (Just o11) f11 v11, toField backendParams encode (Just o12) f12 v12, toField backendParams encode (Just o13) f13 v13, toField backendParams encode (Just o14) f14 v14, toField backendParams encode (Just o15) f15 v15, toField backendParams encode (Just o16) f16 v16, toField backendParams encode (Just o17) f17 v17, toField backendParams encode (Just o18) f18 v18, toField backendParams encode (Just o19) f19 v19, toField backendParams encode (Just o20) f20 v20, toField backendParams encode (Just o21) f21 v21, toField backendParams encode (Just o22) f22 v22, toField backendParams encode (Just o23) f23 v23, toField backendParams encode (Just o24) f24 v24, toField backendParams encode (Just o25) f25 v25, toField backendParams encode (Just o26) f26 v26, toField backendParams encode (Just o27) f27 v27, toField backendParams encode (Just o28) f28 v28, toField backendParams encode (Just o29) f29 v29, toField backendParams encode (Just o30) f30 v30, toField backendParams encode (Just o31) f31 v31, toField backendParams encode (Just o32) f32 v32, toField backendParams encode (Just o33) f33 v33, toField backendParams encode (Just o34) f34 v34, toField backendParams encode (Just o35) f35 v35, toField backendParams encode (Just o36) f36 v36, toField backendParams encode (Just o37) f37 v37, toField backendParams encode (Just o38) f38 v38, toField backendParams encode (Just o39) f39 v39, toField backendParams encode (Just o40) f40 v40, toField backendParams encode (Just o41) f41 v41, toField backendParams encode (Just o42) f42 v42, toField backendParams encode (Just o43) f43 v43, toField backendParams encode (Just o44) f44 v44, toField backendParams encode (Just o45) f45 v45, toField backendParams encode (Just o46) f46 v46]
  toRecord _ _ (Just os) _ _ =
    fail $ "the number of OIDs must be 47, actually " <> show (length os)
  toRecord _ _ _ fs _ =
    fail $ "the number of format codes must be 47, actually " <> show (length fs)

-- 48-tuple
instance (ToField i0, ToField i1, ToField i2, ToField i3, ToField i4, ToField i5, ToField i6, ToField i7, ToField i8, ToField i9, ToField i10, ToField i11, ToField i12, ToField i13, ToField i14, ToField i15, ToField i16, ToField i17, ToField i18, ToField i19, ToField i20, ToField i21, ToField i22, ToField i23, ToField i24, ToField i25, ToField i26, ToField i27, ToField i28, ToField i29, ToField i30, ToField i31, ToField i32, ToField i33, ToField i34, ToField i35, ToField i36, ToField i37, ToField i38, ToField i39, ToField i40, ToField i41, ToField i42, ToField i43, ToField i44, ToField i45, ToField i46, ToField i47) => ToRecord (i0, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14, i15, i16, i17, i18, i19, i20, i21, i22, i23, i24, i25, i26, i27, i28, i29, i30, i31, i32, i33, i34, i35, i36, i37, i38, i39, i40, i41, i42, i43, i44, i45, i46, i47) where
  toRecord backendParams encode Nothing [f0, f1, f2, f3, f4, f5, f6, f7, f8, f9, f10, f11, f12, f13, f14, f15, f16, f17, f18, f19, f20, f21, f22, f23, f24, f25, f26, f27, f28, f29, f30, f31, f32, f33, f34, f35, f36, f37, f38, f39, f40, f41, f42, f43, f44, f45, f46, f47] (v0, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47) =
    sequence [toField backendParams encode Nothing f0 v0, toField backendParams encode Nothing f1 v1, toField backendParams encode Nothing f2 v2, toField backendParams encode Nothing f3 v3, toField backendParams encode Nothing f4 v4, toField backendParams encode Nothing f5 v5, toField backendParams encode Nothing f6 v6, toField backendParams encode Nothing f7 v7, toField backendParams encode Nothing f8 v8, toField backendParams encode Nothing f9 v9, toField backendParams encode Nothing f10 v10, toField backendParams encode Nothing f11 v11, toField backendParams encode Nothing f12 v12, toField backendParams encode Nothing f13 v13, toField backendParams encode Nothing f14 v14, toField backendParams encode Nothing f15 v15, toField backendParams encode Nothing f16 v16, toField backendParams encode Nothing f17 v17, toField backendParams encode Nothing f18 v18, toField backendParams encode Nothing f19 v19, toField backendParams encode Nothing f20 v20, toField backendParams encode Nothing f21 v21, toField backendParams encode Nothing f22 v22, toField backendParams encode Nothing f23 v23, toField backendParams encode Nothing f24 v24, toField backendParams encode Nothing f25 v25, toField backendParams encode Nothing f26 v26, toField backendParams encode Nothing f27 v27, toField backendParams encode Nothing f28 v28, toField backendParams encode Nothing f29 v29, toField backendParams encode Nothing f30 v30, toField backendParams encode Nothing f31 v31, toField backendParams encode Nothing f32 v32, toField backendParams encode Nothing f33 v33, toField backendParams encode Nothing f34 v34, toField backendParams encode Nothing f35 v35, toField backendParams encode Nothing f36 v36, toField backendParams encode Nothing f37 v37, toField backendParams encode Nothing f38 v38, toField backendParams encode Nothing f39 v39, toField backendParams encode Nothing f40 v40, toField backendParams encode Nothing f41 v41, toField backendParams encode Nothing f42 v42, toField backendParams encode Nothing f43 v43, toField backendParams encode Nothing f44 v44, toField backendParams encode Nothing f45 v45, toField backendParams encode Nothing f46 v46, toField backendParams encode Nothing f47 v47]
  toRecord backendParams encode (Just [o0, o1, o2, o3, o4, o5, o6, o7, o8, o9, o10, o11, o12, o13, o14, o15, o16, o17, o18, o19, o20, o21, o22, o23, o24, o25, o26, o27, o28, o29, o30, o31, o32, o33, o34, o35, o36, o37, o38, o39, o40, o41, o42, o43, o44, o45, o46, o47]) [f0, f1, f2, f3, f4, f5, f6, f7, f8, f9, f10, f11, f12, f13, f14, f15, f16, f17, f18, f19, f20, f21, f22, f23, f24, f25, f26, f27, f28, f29, f30, f31, f32, f33, f34, f35, f36, f37, f38, f39, f40, f41, f42, f43, f44, f45, f46, f47] (v0, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47) =
    sequence [toField backendParams encode (Just o0) f0 v0, toField backendParams encode (Just o1) f1 v1, toField backendParams encode (Just o2) f2 v2, toField backendParams encode (Just o3) f3 v3, toField backendParams encode (Just o4) f4 v4, toField backendParams encode (Just o5) f5 v5, toField backendParams encode (Just o6) f6 v6, toField backendParams encode (Just o7) f7 v7, toField backendParams encode (Just o8) f8 v8, toField backendParams encode (Just o9) f9 v9, toField backendParams encode (Just o10) f10 v10, toField backendParams encode (Just o11) f11 v11, toField backendParams encode (Just o12) f12 v12, toField backendParams encode (Just o13) f13 v13, toField backendParams encode (Just o14) f14 v14, toField backendParams encode (Just o15) f15 v15, toField backendParams encode (Just o16) f16 v16, toField backendParams encode (Just o17) f17 v17, toField backendParams encode (Just o18) f18 v18, toField backendParams encode (Just o19) f19 v19, toField backendParams encode (Just o20) f20 v20, toField backendParams encode (Just o21) f21 v21, toField backendParams encode (Just o22) f22 v22, toField backendParams encode (Just o23) f23 v23, toField backendParams encode (Just o24) f24 v24, toField backendParams encode (Just o25) f25 v25, toField backendParams encode (Just o26) f26 v26, toField backendParams encode (Just o27) f27 v27, toField backendParams encode (Just o28) f28 v28, toField backendParams encode (Just o29) f29 v29, toField backendParams encode (Just o30) f30 v30, toField backendParams encode (Just o31) f31 v31, toField backendParams encode (Just o32) f32 v32, toField backendParams encode (Just o33) f33 v33, toField backendParams encode (Just o34) f34 v34, toField backendParams encode (Just o35) f35 v35, toField backendParams encode (Just o36) f36 v36, toField backendParams encode (Just o37) f37 v37, toField backendParams encode (Just o38) f38 v38, toField backendParams encode (Just o39) f39 v39, toField backendParams encode (Just o40) f40 v40, toField backendParams encode (Just o41) f41 v41, toField backendParams encode (Just o42) f42 v42, toField backendParams encode (Just o43) f43 v43, toField backendParams encode (Just o44) f44 v44, toField backendParams encode (Just o45) f45 v45, toField backendParams encode (Just o46) f46 v46, toField backendParams encode (Just o47) f47 v47]
  toRecord _ _ (Just os) _ _ =
    fail $ "the number of OIDs must be 48, actually " <> show (length os)
  toRecord _ _ _ fs _ =
    fail $ "the number of format codes must be 48, actually " <> show (length fs)

-- 49-tuple
instance (ToField i0, ToField i1, ToField i2, ToField i3, ToField i4, ToField i5, ToField i6, ToField i7, ToField i8, ToField i9, ToField i10, ToField i11, ToField i12, ToField i13, ToField i14, ToField i15, ToField i16, ToField i17, ToField i18, ToField i19, ToField i20, ToField i21, ToField i22, ToField i23, ToField i24, ToField i25, ToField i26, ToField i27, ToField i28, ToField i29, ToField i30, ToField i31, ToField i32, ToField i33, ToField i34, ToField i35, ToField i36, ToField i37, ToField i38, ToField i39, ToField i40, ToField i41, ToField i42, ToField i43, ToField i44, ToField i45, ToField i46, ToField i47, ToField i48) => ToRecord (i0, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14, i15, i16, i17, i18, i19, i20, i21, i22, i23, i24, i25, i26, i27, i28, i29, i30, i31, i32, i33, i34, i35, i36, i37, i38, i39, i40, i41, i42, i43, i44, i45, i46, i47, i48) where
  toRecord backendParams encode Nothing [f0, f1, f2, f3, f4, f5, f6, f7, f8, f9, f10, f11, f12, f13, f14, f15, f16, f17, f18, f19, f20, f21, f22, f23, f24, f25, f26, f27, f28, f29, f30, f31, f32, f33, f34, f35, f36, f37, f38, f39, f40, f41, f42, f43, f44, f45, f46, f47, f48] (v0, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48) =
    sequence [toField backendParams encode Nothing f0 v0, toField backendParams encode Nothing f1 v1, toField backendParams encode Nothing f2 v2, toField backendParams encode Nothing f3 v3, toField backendParams encode Nothing f4 v4, toField backendParams encode Nothing f5 v5, toField backendParams encode Nothing f6 v6, toField backendParams encode Nothing f7 v7, toField backendParams encode Nothing f8 v8, toField backendParams encode Nothing f9 v9, toField backendParams encode Nothing f10 v10, toField backendParams encode Nothing f11 v11, toField backendParams encode Nothing f12 v12, toField backendParams encode Nothing f13 v13, toField backendParams encode Nothing f14 v14, toField backendParams encode Nothing f15 v15, toField backendParams encode Nothing f16 v16, toField backendParams encode Nothing f17 v17, toField backendParams encode Nothing f18 v18, toField backendParams encode Nothing f19 v19, toField backendParams encode Nothing f20 v20, toField backendParams encode Nothing f21 v21, toField backendParams encode Nothing f22 v22, toField backendParams encode Nothing f23 v23, toField backendParams encode Nothing f24 v24, toField backendParams encode Nothing f25 v25, toField backendParams encode Nothing f26 v26, toField backendParams encode Nothing f27 v27, toField backendParams encode Nothing f28 v28, toField backendParams encode Nothing f29 v29, toField backendParams encode Nothing f30 v30, toField backendParams encode Nothing f31 v31, toField backendParams encode Nothing f32 v32, toField backendParams encode Nothing f33 v33, toField backendParams encode Nothing f34 v34, toField backendParams encode Nothing f35 v35, toField backendParams encode Nothing f36 v36, toField backendParams encode Nothing f37 v37, toField backendParams encode Nothing f38 v38, toField backendParams encode Nothing f39 v39, toField backendParams encode Nothing f40 v40, toField backendParams encode Nothing f41 v41, toField backendParams encode Nothing f42 v42, toField backendParams encode Nothing f43 v43, toField backendParams encode Nothing f44 v44, toField backendParams encode Nothing f45 v45, toField backendParams encode Nothing f46 v46, toField backendParams encode Nothing f47 v47, toField backendParams encode Nothing f48 v48]
  toRecord backendParams encode (Just [o0, o1, o2, o3, o4, o5, o6, o7, o8, o9, o10, o11, o12, o13, o14, o15, o16, o17, o18, o19, o20, o21, o22, o23, o24, o25, o26, o27, o28, o29, o30, o31, o32, o33, o34, o35, o36, o37, o38, o39, o40, o41, o42, o43, o44, o45, o46, o47, o48]) [f0, f1, f2, f3, f4, f5, f6, f7, f8, f9, f10, f11, f12, f13, f14, f15, f16, f17, f18, f19, f20, f21, f22, f23, f24, f25, f26, f27, f28, f29, f30, f31, f32, f33, f34, f35, f36, f37, f38, f39, f40, f41, f42, f43, f44, f45, f46, f47, f48] (v0, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48) =
    sequence [toField backendParams encode (Just o0) f0 v0, toField backendParams encode (Just o1) f1 v1, toField backendParams encode (Just o2) f2 v2, toField backendParams encode (Just o3) f3 v3, toField backendParams encode (Just o4) f4 v4, toField backendParams encode (Just o5) f5 v5, toField backendParams encode (Just o6) f6 v6, toField backendParams encode (Just o7) f7 v7, toField backendParams encode (Just o8) f8 v8, toField backendParams encode (Just o9) f9 v9, toField backendParams encode (Just o10) f10 v10, toField backendParams encode (Just o11) f11 v11, toField backendParams encode (Just o12) f12 v12, toField backendParams encode (Just o13) f13 v13, toField backendParams encode (Just o14) f14 v14, toField backendParams encode (Just o15) f15 v15, toField backendParams encode (Just o16) f16 v16, toField backendParams encode (Just o17) f17 v17, toField backendParams encode (Just o18) f18 v18, toField backendParams encode (Just o19) f19 v19, toField backendParams encode (Just o20) f20 v20, toField backendParams encode (Just o21) f21 v21, toField backendParams encode (Just o22) f22 v22, toField backendParams encode (Just o23) f23 v23, toField backendParams encode (Just o24) f24 v24, toField backendParams encode (Just o25) f25 v25, toField backendParams encode (Just o26) f26 v26, toField backendParams encode (Just o27) f27 v27, toField backendParams encode (Just o28) f28 v28, toField backendParams encode (Just o29) f29 v29, toField backendParams encode (Just o30) f30 v30, toField backendParams encode (Just o31) f31 v31, toField backendParams encode (Just o32) f32 v32, toField backendParams encode (Just o33) f33 v33, toField backendParams encode (Just o34) f34 v34, toField backendParams encode (Just o35) f35 v35, toField backendParams encode (Just o36) f36 v36, toField backendParams encode (Just o37) f37 v37, toField backendParams encode (Just o38) f38 v38, toField backendParams encode (Just o39) f39 v39, toField backendParams encode (Just o40) f40 v40, toField backendParams encode (Just o41) f41 v41, toField backendParams encode (Just o42) f42 v42, toField backendParams encode (Just o43) f43 v43, toField backendParams encode (Just o44) f44 v44, toField backendParams encode (Just o45) f45 v45, toField backendParams encode (Just o46) f46 v46, toField backendParams encode (Just o47) f47 v47, toField backendParams encode (Just o48) f48 v48]
  toRecord _ _ (Just os) _ _ =
    fail $ "the number of OIDs must be 49, actually " <> show (length os)
  toRecord _ _ _ fs _ =
    fail $ "the number of format codes must be 49, actually " <> show (length fs)

-- 50-tuple
instance (ToField i0, ToField i1, ToField i2, ToField i3, ToField i4, ToField i5, ToField i6, ToField i7, ToField i8, ToField i9, ToField i10, ToField i11, ToField i12, ToField i13, ToField i14, ToField i15, ToField i16, ToField i17, ToField i18, ToField i19, ToField i20, ToField i21, ToField i22, ToField i23, ToField i24, ToField i25, ToField i26, ToField i27, ToField i28, ToField i29, ToField i30, ToField i31, ToField i32, ToField i33, ToField i34, ToField i35, ToField i36, ToField i37, ToField i38, ToField i39, ToField i40, ToField i41, ToField i42, ToField i43, ToField i44, ToField i45, ToField i46, ToField i47, ToField i48, ToField i49) => ToRecord (i0, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14, i15, i16, i17, i18, i19, i20, i21, i22, i23, i24, i25, i26, i27, i28, i29, i30, i31, i32, i33, i34, i35, i36, i37, i38, i39, i40, i41, i42, i43, i44, i45, i46, i47, i48, i49) where
  toRecord backendParams encode Nothing [f0, f1, f2, f3, f4, f5, f6, f7, f8, f9, f10, f11, f12, f13, f14, f15, f16, f17, f18, f19, f20, f21, f22, f23, f24, f25, f26, f27, f28, f29, f30, f31, f32, f33, f34, f35, f36, f37, f38, f39, f40, f41, f42, f43, f44, f45, f46, f47, f48, f49] (v0, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48, v49) =
    sequence [toField backendParams encode Nothing f0 v0, toField backendParams encode Nothing f1 v1, toField backendParams encode Nothing f2 v2, toField backendParams encode Nothing f3 v3, toField backendParams encode Nothing f4 v4, toField backendParams encode Nothing f5 v5, toField backendParams encode Nothing f6 v6, toField backendParams encode Nothing f7 v7, toField backendParams encode Nothing f8 v8, toField backendParams encode Nothing f9 v9, toField backendParams encode Nothing f10 v10, toField backendParams encode Nothing f11 v11, toField backendParams encode Nothing f12 v12, toField backendParams encode Nothing f13 v13, toField backendParams encode Nothing f14 v14, toField backendParams encode Nothing f15 v15, toField backendParams encode Nothing f16 v16, toField backendParams encode Nothing f17 v17, toField backendParams encode Nothing f18 v18, toField backendParams encode Nothing f19 v19, toField backendParams encode Nothing f20 v20, toField backendParams encode Nothing f21 v21, toField backendParams encode Nothing f22 v22, toField backendParams encode Nothing f23 v23, toField backendParams encode Nothing f24 v24, toField backendParams encode Nothing f25 v25, toField backendParams encode Nothing f26 v26, toField backendParams encode Nothing f27 v27, toField backendParams encode Nothing f28 v28, toField backendParams encode Nothing f29 v29, toField backendParams encode Nothing f30 v30, toField backendParams encode Nothing f31 v31, toField backendParams encode Nothing f32 v32, toField backendParams encode Nothing f33 v33, toField backendParams encode Nothing f34 v34, toField backendParams encode Nothing f35 v35, toField backendParams encode Nothing f36 v36, toField backendParams encode Nothing f37 v37, toField backendParams encode Nothing f38 v38, toField backendParams encode Nothing f39 v39, toField backendParams encode Nothing f40 v40, toField backendParams encode Nothing f41 v41, toField backendParams encode Nothing f42 v42, toField backendParams encode Nothing f43 v43, toField backendParams encode Nothing f44 v44, toField backendParams encode Nothing f45 v45, toField backendParams encode Nothing f46 v46, toField backendParams encode Nothing f47 v47, toField backendParams encode Nothing f48 v48, toField backendParams encode Nothing f49 v49]
  toRecord backendParams encode (Just [o0, o1, o2, o3, o4, o5, o6, o7, o8, o9, o10, o11, o12, o13, o14, o15, o16, o17, o18, o19, o20, o21, o22, o23, o24, o25, o26, o27, o28, o29, o30, o31, o32, o33, o34, o35, o36, o37, o38, o39, o40, o41, o42, o43, o44, o45, o46, o47, o48, o49]) [f0, f1, f2, f3, f4, f5, f6, f7, f8, f9, f10, f11, f12, f13, f14, f15, f16, f17, f18, f19, f20, f21, f22, f23, f24, f25, f26, f27, f28, f29, f30, f31, f32, f33, f34, f35, f36, f37, f38, f39, f40, f41, f42, f43, f44, f45, f46, f47, f48, f49] (v0, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48, v49) =
    sequence [toField backendParams encode (Just o0) f0 v0, toField backendParams encode (Just o1) f1 v1, toField backendParams encode (Just o2) f2 v2, toField backendParams encode (Just o3) f3 v3, toField backendParams encode (Just o4) f4 v4, toField backendParams encode (Just o5) f5 v5, toField backendParams encode (Just o6) f6 v6, toField backendParams encode (Just o7) f7 v7, toField backendParams encode (Just o8) f8 v8, toField backendParams encode (Just o9) f9 v9, toField backendParams encode (Just o10) f10 v10, toField backendParams encode (Just o11) f11 v11, toField backendParams encode (Just o12) f12 v12, toField backendParams encode (Just o13) f13 v13, toField backendParams encode (Just o14) f14 v14, toField backendParams encode (Just o15) f15 v15, toField backendParams encode (Just o16) f16 v16, toField backendParams encode (Just o17) f17 v17, toField backendParams encode (Just o18) f18 v18, toField backendParams encode (Just o19) f19 v19, toField backendParams encode (Just o20) f20 v20, toField backendParams encode (Just o21) f21 v21, toField backendParams encode (Just o22) f22 v22, toField backendParams encode (Just o23) f23 v23, toField backendParams encode (Just o24) f24 v24, toField backendParams encode (Just o25) f25 v25, toField backendParams encode (Just o26) f26 v26, toField backendParams encode (Just o27) f27 v27, toField backendParams encode (Just o28) f28 v28, toField backendParams encode (Just o29) f29 v29, toField backendParams encode (Just o30) f30 v30, toField backendParams encode (Just o31) f31 v31, toField backendParams encode (Just o32) f32 v32, toField backendParams encode (Just o33) f33 v33, toField backendParams encode (Just o34) f34 v34, toField backendParams encode (Just o35) f35 v35, toField backendParams encode (Just o36) f36 v36, toField backendParams encode (Just o37) f37 v37, toField backendParams encode (Just o38) f38 v38, toField backendParams encode (Just o39) f39 v39, toField backendParams encode (Just o40) f40 v40, toField backendParams encode (Just o41) f41 v41, toField backendParams encode (Just o42) f42 v42, toField backendParams encode (Just o43) f43 v43, toField backendParams encode (Just o44) f44 v44, toField backendParams encode (Just o45) f45 v45, toField backendParams encode (Just o46) f46 v46, toField backendParams encode (Just o47) f47 v47, toField backendParams encode (Just o48) f48 v48, toField backendParams encode (Just o49) f49 v49]
  toRecord _ _ (Just os) _ _ =
    fail $ "the number of OIDs must be 50, actually " <> show (length os)
  toRecord _ _ _ fs _ =
    fail $ "the number of format codes must be 50, actually " <> show (length fs)

-- 51-tuple
instance (ToField i0, ToField i1, ToField i2, ToField i3, ToField i4, ToField i5, ToField i6, ToField i7, ToField i8, ToField i9, ToField i10, ToField i11, ToField i12, ToField i13, ToField i14, ToField i15, ToField i16, ToField i17, ToField i18, ToField i19, ToField i20, ToField i21, ToField i22, ToField i23, ToField i24, ToField i25, ToField i26, ToField i27, ToField i28, ToField i29, ToField i30, ToField i31, ToField i32, ToField i33, ToField i34, ToField i35, ToField i36, ToField i37, ToField i38, ToField i39, ToField i40, ToField i41, ToField i42, ToField i43, ToField i44, ToField i45, ToField i46, ToField i47, ToField i48, ToField i49, ToField i50) => ToRecord (i0, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14, i15, i16, i17, i18, i19, i20, i21, i22, i23, i24, i25, i26, i27, i28, i29, i30, i31, i32, i33, i34, i35, i36, i37, i38, i39, i40, i41, i42, i43, i44, i45, i46, i47, i48, i49, i50) where
  toRecord backendParams encode Nothing [f0, f1, f2, f3, f4, f5, f6, f7, f8, f9, f10, f11, f12, f13, f14, f15, f16, f17, f18, f19, f20, f21, f22, f23, f24, f25, f26, f27, f28, f29, f30, f31, f32, f33, f34, f35, f36, f37, f38, f39, f40, f41, f42, f43, f44, f45, f46, f47, f48, f49, f50] (v0, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48, v49, v50) =
    sequence [toField backendParams encode Nothing f0 v0, toField backendParams encode Nothing f1 v1, toField backendParams encode Nothing f2 v2, toField backendParams encode Nothing f3 v3, toField backendParams encode Nothing f4 v4, toField backendParams encode Nothing f5 v5, toField backendParams encode Nothing f6 v6, toField backendParams encode Nothing f7 v7, toField backendParams encode Nothing f8 v8, toField backendParams encode Nothing f9 v9, toField backendParams encode Nothing f10 v10, toField backendParams encode Nothing f11 v11, toField backendParams encode Nothing f12 v12, toField backendParams encode Nothing f13 v13, toField backendParams encode Nothing f14 v14, toField backendParams encode Nothing f15 v15, toField backendParams encode Nothing f16 v16, toField backendParams encode Nothing f17 v17, toField backendParams encode Nothing f18 v18, toField backendParams encode Nothing f19 v19, toField backendParams encode Nothing f20 v20, toField backendParams encode Nothing f21 v21, toField backendParams encode Nothing f22 v22, toField backendParams encode Nothing f23 v23, toField backendParams encode Nothing f24 v24, toField backendParams encode Nothing f25 v25, toField backendParams encode Nothing f26 v26, toField backendParams encode Nothing f27 v27, toField backendParams encode Nothing f28 v28, toField backendParams encode Nothing f29 v29, toField backendParams encode Nothing f30 v30, toField backendParams encode Nothing f31 v31, toField backendParams encode Nothing f32 v32, toField backendParams encode Nothing f33 v33, toField backendParams encode Nothing f34 v34, toField backendParams encode Nothing f35 v35, toField backendParams encode Nothing f36 v36, toField backendParams encode Nothing f37 v37, toField backendParams encode Nothing f38 v38, toField backendParams encode Nothing f39 v39, toField backendParams encode Nothing f40 v40, toField backendParams encode Nothing f41 v41, toField backendParams encode Nothing f42 v42, toField backendParams encode Nothing f43 v43, toField backendParams encode Nothing f44 v44, toField backendParams encode Nothing f45 v45, toField backendParams encode Nothing f46 v46, toField backendParams encode Nothing f47 v47, toField backendParams encode Nothing f48 v48, toField backendParams encode Nothing f49 v49, toField backendParams encode Nothing f50 v50]
  toRecord backendParams encode (Just [o0, o1, o2, o3, o4, o5, o6, o7, o8, o9, o10, o11, o12, o13, o14, o15, o16, o17, o18, o19, o20, o21, o22, o23, o24, o25, o26, o27, o28, o29, o30, o31, o32, o33, o34, o35, o36, o37, o38, o39, o40, o41, o42, o43, o44, o45, o46, o47, o48, o49, o50]) [f0, f1, f2, f3, f4, f5, f6, f7, f8, f9, f10, f11, f12, f13, f14, f15, f16, f17, f18, f19, f20, f21, f22, f23, f24, f25, f26, f27, f28, f29, f30, f31, f32, f33, f34, f35, f36, f37, f38, f39, f40, f41, f42, f43, f44, f45, f46, f47, f48, f49, f50] (v0, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48, v49, v50) =
    sequence [toField backendParams encode (Just o0) f0 v0, toField backendParams encode (Just o1) f1 v1, toField backendParams encode (Just o2) f2 v2, toField backendParams encode (Just o3) f3 v3, toField backendParams encode (Just o4) f4 v4, toField backendParams encode (Just o5) f5 v5, toField backendParams encode (Just o6) f6 v6, toField backendParams encode (Just o7) f7 v7, toField backendParams encode (Just o8) f8 v8, toField backendParams encode (Just o9) f9 v9, toField backendParams encode (Just o10) f10 v10, toField backendParams encode (Just o11) f11 v11, toField backendParams encode (Just o12) f12 v12, toField backendParams encode (Just o13) f13 v13, toField backendParams encode (Just o14) f14 v14, toField backendParams encode (Just o15) f15 v15, toField backendParams encode (Just o16) f16 v16, toField backendParams encode (Just o17) f17 v17, toField backendParams encode (Just o18) f18 v18, toField backendParams encode (Just o19) f19 v19, toField backendParams encode (Just o20) f20 v20, toField backendParams encode (Just o21) f21 v21, toField backendParams encode (Just o22) f22 v22, toField backendParams encode (Just o23) f23 v23, toField backendParams encode (Just o24) f24 v24, toField backendParams encode (Just o25) f25 v25, toField backendParams encode (Just o26) f26 v26, toField backendParams encode (Just o27) f27 v27, toField backendParams encode (Just o28) f28 v28, toField backendParams encode (Just o29) f29 v29, toField backendParams encode (Just o30) f30 v30, toField backendParams encode (Just o31) f31 v31, toField backendParams encode (Just o32) f32 v32, toField backendParams encode (Just o33) f33 v33, toField backendParams encode (Just o34) f34 v34, toField backendParams encode (Just o35) f35 v35, toField backendParams encode (Just o36) f36 v36, toField backendParams encode (Just o37) f37 v37, toField backendParams encode (Just o38) f38 v38, toField backendParams encode (Just o39) f39 v39, toField backendParams encode (Just o40) f40 v40, toField backendParams encode (Just o41) f41 v41, toField backendParams encode (Just o42) f42 v42, toField backendParams encode (Just o43) f43 v43, toField backendParams encode (Just o44) f44 v44, toField backendParams encode (Just o45) f45 v45, toField backendParams encode (Just o46) f46 v46, toField backendParams encode (Just o47) f47 v47, toField backendParams encode (Just o48) f48 v48, toField backendParams encode (Just o49) f49 v49, toField backendParams encode (Just o50) f50 v50]
  toRecord _ _ (Just os) _ _ =
    fail $ "the number of OIDs must be 51, actually " <> show (length os)
  toRecord _ _ _ fs _ =
    fail $ "the number of format codes must be 51, actually " <> show (length fs)

-- 52-tuple
instance (ToField i0, ToField i1, ToField i2, ToField i3, ToField i4, ToField i5, ToField i6, ToField i7, ToField i8, ToField i9, ToField i10, ToField i11, ToField i12, ToField i13, ToField i14, ToField i15, ToField i16, ToField i17, ToField i18, ToField i19, ToField i20, ToField i21, ToField i22, ToField i23, ToField i24, ToField i25, ToField i26, ToField i27, ToField i28, ToField i29, ToField i30, ToField i31, ToField i32, ToField i33, ToField i34, ToField i35, ToField i36, ToField i37, ToField i38, ToField i39, ToField i40, ToField i41, ToField i42, ToField i43, ToField i44, ToField i45, ToField i46, ToField i47, ToField i48, ToField i49, ToField i50, ToField i51) => ToRecord (i0, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14, i15, i16, i17, i18, i19, i20, i21, i22, i23, i24, i25, i26, i27, i28, i29, i30, i31, i32, i33, i34, i35, i36, i37, i38, i39, i40, i41, i42, i43, i44, i45, i46, i47, i48, i49, i50, i51) where
  toRecord backendParams encode Nothing [f0, f1, f2, f3, f4, f5, f6, f7, f8, f9, f10, f11, f12, f13, f14, f15, f16, f17, f18, f19, f20, f21, f22, f23, f24, f25, f26, f27, f28, f29, f30, f31, f32, f33, f34, f35, f36, f37, f38, f39, f40, f41, f42, f43, f44, f45, f46, f47, f48, f49, f50, f51] (v0, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48, v49, v50, v51) =
    sequence [toField backendParams encode Nothing f0 v0, toField backendParams encode Nothing f1 v1, toField backendParams encode Nothing f2 v2, toField backendParams encode Nothing f3 v3, toField backendParams encode Nothing f4 v4, toField backendParams encode Nothing f5 v5, toField backendParams encode Nothing f6 v6, toField backendParams encode Nothing f7 v7, toField backendParams encode Nothing f8 v8, toField backendParams encode Nothing f9 v9, toField backendParams encode Nothing f10 v10, toField backendParams encode Nothing f11 v11, toField backendParams encode Nothing f12 v12, toField backendParams encode Nothing f13 v13, toField backendParams encode Nothing f14 v14, toField backendParams encode Nothing f15 v15, toField backendParams encode Nothing f16 v16, toField backendParams encode Nothing f17 v17, toField backendParams encode Nothing f18 v18, toField backendParams encode Nothing f19 v19, toField backendParams encode Nothing f20 v20, toField backendParams encode Nothing f21 v21, toField backendParams encode Nothing f22 v22, toField backendParams encode Nothing f23 v23, toField backendParams encode Nothing f24 v24, toField backendParams encode Nothing f25 v25, toField backendParams encode Nothing f26 v26, toField backendParams encode Nothing f27 v27, toField backendParams encode Nothing f28 v28, toField backendParams encode Nothing f29 v29, toField backendParams encode Nothing f30 v30, toField backendParams encode Nothing f31 v31, toField backendParams encode Nothing f32 v32, toField backendParams encode Nothing f33 v33, toField backendParams encode Nothing f34 v34, toField backendParams encode Nothing f35 v35, toField backendParams encode Nothing f36 v36, toField backendParams encode Nothing f37 v37, toField backendParams encode Nothing f38 v38, toField backendParams encode Nothing f39 v39, toField backendParams encode Nothing f40 v40, toField backendParams encode Nothing f41 v41, toField backendParams encode Nothing f42 v42, toField backendParams encode Nothing f43 v43, toField backendParams encode Nothing f44 v44, toField backendParams encode Nothing f45 v45, toField backendParams encode Nothing f46 v46, toField backendParams encode Nothing f47 v47, toField backendParams encode Nothing f48 v48, toField backendParams encode Nothing f49 v49, toField backendParams encode Nothing f50 v50, toField backendParams encode Nothing f51 v51]
  toRecord backendParams encode (Just [o0, o1, o2, o3, o4, o5, o6, o7, o8, o9, o10, o11, o12, o13, o14, o15, o16, o17, o18, o19, o20, o21, o22, o23, o24, o25, o26, o27, o28, o29, o30, o31, o32, o33, o34, o35, o36, o37, o38, o39, o40, o41, o42, o43, o44, o45, o46, o47, o48, o49, o50, o51]) [f0, f1, f2, f3, f4, f5, f6, f7, f8, f9, f10, f11, f12, f13, f14, f15, f16, f17, f18, f19, f20, f21, f22, f23, f24, f25, f26, f27, f28, f29, f30, f31, f32, f33, f34, f35, f36, f37, f38, f39, f40, f41, f42, f43, f44, f45, f46, f47, f48, f49, f50, f51] (v0, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48, v49, v50, v51) =
    sequence [toField backendParams encode (Just o0) f0 v0, toField backendParams encode (Just o1) f1 v1, toField backendParams encode (Just o2) f2 v2, toField backendParams encode (Just o3) f3 v3, toField backendParams encode (Just o4) f4 v4, toField backendParams encode (Just o5) f5 v5, toField backendParams encode (Just o6) f6 v6, toField backendParams encode (Just o7) f7 v7, toField backendParams encode (Just o8) f8 v8, toField backendParams encode (Just o9) f9 v9, toField backendParams encode (Just o10) f10 v10, toField backendParams encode (Just o11) f11 v11, toField backendParams encode (Just o12) f12 v12, toField backendParams encode (Just o13) f13 v13, toField backendParams encode (Just o14) f14 v14, toField backendParams encode (Just o15) f15 v15, toField backendParams encode (Just o16) f16 v16, toField backendParams encode (Just o17) f17 v17, toField backendParams encode (Just o18) f18 v18, toField backendParams encode (Just o19) f19 v19, toField backendParams encode (Just o20) f20 v20, toField backendParams encode (Just o21) f21 v21, toField backendParams encode (Just o22) f22 v22, toField backendParams encode (Just o23) f23 v23, toField backendParams encode (Just o24) f24 v24, toField backendParams encode (Just o25) f25 v25, toField backendParams encode (Just o26) f26 v26, toField backendParams encode (Just o27) f27 v27, toField backendParams encode (Just o28) f28 v28, toField backendParams encode (Just o29) f29 v29, toField backendParams encode (Just o30) f30 v30, toField backendParams encode (Just o31) f31 v31, toField backendParams encode (Just o32) f32 v32, toField backendParams encode (Just o33) f33 v33, toField backendParams encode (Just o34) f34 v34, toField backendParams encode (Just o35) f35 v35, toField backendParams encode (Just o36) f36 v36, toField backendParams encode (Just o37) f37 v37, toField backendParams encode (Just o38) f38 v38, toField backendParams encode (Just o39) f39 v39, toField backendParams encode (Just o40) f40 v40, toField backendParams encode (Just o41) f41 v41, toField backendParams encode (Just o42) f42 v42, toField backendParams encode (Just o43) f43 v43, toField backendParams encode (Just o44) f44 v44, toField backendParams encode (Just o45) f45 v45, toField backendParams encode (Just o46) f46 v46, toField backendParams encode (Just o47) f47 v47, toField backendParams encode (Just o48) f48 v48, toField backendParams encode (Just o49) f49 v49, toField backendParams encode (Just o50) f50 v50, toField backendParams encode (Just o51) f51 v51]
  toRecord _ _ (Just os) _ _ =
    fail $ "the number of OIDs must be 52, actually " <> show (length os)
  toRecord _ _ _ fs _ =
    fail $ "the number of format codes must be 52, actually " <> show (length fs)

-- 53-tuple
instance (ToField i0, ToField i1, ToField i2, ToField i3, ToField i4, ToField i5, ToField i6, ToField i7, ToField i8, ToField i9, ToField i10, ToField i11, ToField i12, ToField i13, ToField i14, ToField i15, ToField i16, ToField i17, ToField i18, ToField i19, ToField i20, ToField i21, ToField i22, ToField i23, ToField i24, ToField i25, ToField i26, ToField i27, ToField i28, ToField i29, ToField i30, ToField i31, ToField i32, ToField i33, ToField i34, ToField i35, ToField i36, ToField i37, ToField i38, ToField i39, ToField i40, ToField i41, ToField i42, ToField i43, ToField i44, ToField i45, ToField i46, ToField i47, ToField i48, ToField i49, ToField i50, ToField i51, ToField i52) => ToRecord (i0, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14, i15, i16, i17, i18, i19, i20, i21, i22, i23, i24, i25, i26, i27, i28, i29, i30, i31, i32, i33, i34, i35, i36, i37, i38, i39, i40, i41, i42, i43, i44, i45, i46, i47, i48, i49, i50, i51, i52) where
  toRecord backendParams encode Nothing [f0, f1, f2, f3, f4, f5, f6, f7, f8, f9, f10, f11, f12, f13, f14, f15, f16, f17, f18, f19, f20, f21, f22, f23, f24, f25, f26, f27, f28, f29, f30, f31, f32, f33, f34, f35, f36, f37, f38, f39, f40, f41, f42, f43, f44, f45, f46, f47, f48, f49, f50, f51, f52] (v0, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48, v49, v50, v51, v52) =
    sequence [toField backendParams encode Nothing f0 v0, toField backendParams encode Nothing f1 v1, toField backendParams encode Nothing f2 v2, toField backendParams encode Nothing f3 v3, toField backendParams encode Nothing f4 v4, toField backendParams encode Nothing f5 v5, toField backendParams encode Nothing f6 v6, toField backendParams encode Nothing f7 v7, toField backendParams encode Nothing f8 v8, toField backendParams encode Nothing f9 v9, toField backendParams encode Nothing f10 v10, toField backendParams encode Nothing f11 v11, toField backendParams encode Nothing f12 v12, toField backendParams encode Nothing f13 v13, toField backendParams encode Nothing f14 v14, toField backendParams encode Nothing f15 v15, toField backendParams encode Nothing f16 v16, toField backendParams encode Nothing f17 v17, toField backendParams encode Nothing f18 v18, toField backendParams encode Nothing f19 v19, toField backendParams encode Nothing f20 v20, toField backendParams encode Nothing f21 v21, toField backendParams encode Nothing f22 v22, toField backendParams encode Nothing f23 v23, toField backendParams encode Nothing f24 v24, toField backendParams encode Nothing f25 v25, toField backendParams encode Nothing f26 v26, toField backendParams encode Nothing f27 v27, toField backendParams encode Nothing f28 v28, toField backendParams encode Nothing f29 v29, toField backendParams encode Nothing f30 v30, toField backendParams encode Nothing f31 v31, toField backendParams encode Nothing f32 v32, toField backendParams encode Nothing f33 v33, toField backendParams encode Nothing f34 v34, toField backendParams encode Nothing f35 v35, toField backendParams encode Nothing f36 v36, toField backendParams encode Nothing f37 v37, toField backendParams encode Nothing f38 v38, toField backendParams encode Nothing f39 v39, toField backendParams encode Nothing f40 v40, toField backendParams encode Nothing f41 v41, toField backendParams encode Nothing f42 v42, toField backendParams encode Nothing f43 v43, toField backendParams encode Nothing f44 v44, toField backendParams encode Nothing f45 v45, toField backendParams encode Nothing f46 v46, toField backendParams encode Nothing f47 v47, toField backendParams encode Nothing f48 v48, toField backendParams encode Nothing f49 v49, toField backendParams encode Nothing f50 v50, toField backendParams encode Nothing f51 v51, toField backendParams encode Nothing f52 v52]
  toRecord backendParams encode (Just [o0, o1, o2, o3, o4, o5, o6, o7, o8, o9, o10, o11, o12, o13, o14, o15, o16, o17, o18, o19, o20, o21, o22, o23, o24, o25, o26, o27, o28, o29, o30, o31, o32, o33, o34, o35, o36, o37, o38, o39, o40, o41, o42, o43, o44, o45, o46, o47, o48, o49, o50, o51, o52]) [f0, f1, f2, f3, f4, f5, f6, f7, f8, f9, f10, f11, f12, f13, f14, f15, f16, f17, f18, f19, f20, f21, f22, f23, f24, f25, f26, f27, f28, f29, f30, f31, f32, f33, f34, f35, f36, f37, f38, f39, f40, f41, f42, f43, f44, f45, f46, f47, f48, f49, f50, f51, f52] (v0, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48, v49, v50, v51, v52) =
    sequence [toField backendParams encode (Just o0) f0 v0, toField backendParams encode (Just o1) f1 v1, toField backendParams encode (Just o2) f2 v2, toField backendParams encode (Just o3) f3 v3, toField backendParams encode (Just o4) f4 v4, toField backendParams encode (Just o5) f5 v5, toField backendParams encode (Just o6) f6 v6, toField backendParams encode (Just o7) f7 v7, toField backendParams encode (Just o8) f8 v8, toField backendParams encode (Just o9) f9 v9, toField backendParams encode (Just o10) f10 v10, toField backendParams encode (Just o11) f11 v11, toField backendParams encode (Just o12) f12 v12, toField backendParams encode (Just o13) f13 v13, toField backendParams encode (Just o14) f14 v14, toField backendParams encode (Just o15) f15 v15, toField backendParams encode (Just o16) f16 v16, toField backendParams encode (Just o17) f17 v17, toField backendParams encode (Just o18) f18 v18, toField backendParams encode (Just o19) f19 v19, toField backendParams encode (Just o20) f20 v20, toField backendParams encode (Just o21) f21 v21, toField backendParams encode (Just o22) f22 v22, toField backendParams encode (Just o23) f23 v23, toField backendParams encode (Just o24) f24 v24, toField backendParams encode (Just o25) f25 v25, toField backendParams encode (Just o26) f26 v26, toField backendParams encode (Just o27) f27 v27, toField backendParams encode (Just o28) f28 v28, toField backendParams encode (Just o29) f29 v29, toField backendParams encode (Just o30) f30 v30, toField backendParams encode (Just o31) f31 v31, toField backendParams encode (Just o32) f32 v32, toField backendParams encode (Just o33) f33 v33, toField backendParams encode (Just o34) f34 v34, toField backendParams encode (Just o35) f35 v35, toField backendParams encode (Just o36) f36 v36, toField backendParams encode (Just o37) f37 v37, toField backendParams encode (Just o38) f38 v38, toField backendParams encode (Just o39) f39 v39, toField backendParams encode (Just o40) f40 v40, toField backendParams encode (Just o41) f41 v41, toField backendParams encode (Just o42) f42 v42, toField backendParams encode (Just o43) f43 v43, toField backendParams encode (Just o44) f44 v44, toField backendParams encode (Just o45) f45 v45, toField backendParams encode (Just o46) f46 v46, toField backendParams encode (Just o47) f47 v47, toField backendParams encode (Just o48) f48 v48, toField backendParams encode (Just o49) f49 v49, toField backendParams encode (Just o50) f50 v50, toField backendParams encode (Just o51) f51 v51, toField backendParams encode (Just o52) f52 v52]
  toRecord _ _ (Just os) _ _ =
    fail $ "the number of OIDs must be 53, actually " <> show (length os)
  toRecord _ _ _ fs _ =
    fail $ "the number of format codes must be 53, actually " <> show (length fs)

-- 54-tuple
instance (ToField i0, ToField i1, ToField i2, ToField i3, ToField i4, ToField i5, ToField i6, ToField i7, ToField i8, ToField i9, ToField i10, ToField i11, ToField i12, ToField i13, ToField i14, ToField i15, ToField i16, ToField i17, ToField i18, ToField i19, ToField i20, ToField i21, ToField i22, ToField i23, ToField i24, ToField i25, ToField i26, ToField i27, ToField i28, ToField i29, ToField i30, ToField i31, ToField i32, ToField i33, ToField i34, ToField i35, ToField i36, ToField i37, ToField i38, ToField i39, ToField i40, ToField i41, ToField i42, ToField i43, ToField i44, ToField i45, ToField i46, ToField i47, ToField i48, ToField i49, ToField i50, ToField i51, ToField i52, ToField i53) => ToRecord (i0, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14, i15, i16, i17, i18, i19, i20, i21, i22, i23, i24, i25, i26, i27, i28, i29, i30, i31, i32, i33, i34, i35, i36, i37, i38, i39, i40, i41, i42, i43, i44, i45, i46, i47, i48, i49, i50, i51, i52, i53) where
  toRecord backendParams encode Nothing [f0, f1, f2, f3, f4, f5, f6, f7, f8, f9, f10, f11, f12, f13, f14, f15, f16, f17, f18, f19, f20, f21, f22, f23, f24, f25, f26, f27, f28, f29, f30, f31, f32, f33, f34, f35, f36, f37, f38, f39, f40, f41, f42, f43, f44, f45, f46, f47, f48, f49, f50, f51, f52, f53] (v0, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48, v49, v50, v51, v52, v53) =
    sequence [toField backendParams encode Nothing f0 v0, toField backendParams encode Nothing f1 v1, toField backendParams encode Nothing f2 v2, toField backendParams encode Nothing f3 v3, toField backendParams encode Nothing f4 v4, toField backendParams encode Nothing f5 v5, toField backendParams encode Nothing f6 v6, toField backendParams encode Nothing f7 v7, toField backendParams encode Nothing f8 v8, toField backendParams encode Nothing f9 v9, toField backendParams encode Nothing f10 v10, toField backendParams encode Nothing f11 v11, toField backendParams encode Nothing f12 v12, toField backendParams encode Nothing f13 v13, toField backendParams encode Nothing f14 v14, toField backendParams encode Nothing f15 v15, toField backendParams encode Nothing f16 v16, toField backendParams encode Nothing f17 v17, toField backendParams encode Nothing f18 v18, toField backendParams encode Nothing f19 v19, toField backendParams encode Nothing f20 v20, toField backendParams encode Nothing f21 v21, toField backendParams encode Nothing f22 v22, toField backendParams encode Nothing f23 v23, toField backendParams encode Nothing f24 v24, toField backendParams encode Nothing f25 v25, toField backendParams encode Nothing f26 v26, toField backendParams encode Nothing f27 v27, toField backendParams encode Nothing f28 v28, toField backendParams encode Nothing f29 v29, toField backendParams encode Nothing f30 v30, toField backendParams encode Nothing f31 v31, toField backendParams encode Nothing f32 v32, toField backendParams encode Nothing f33 v33, toField backendParams encode Nothing f34 v34, toField backendParams encode Nothing f35 v35, toField backendParams encode Nothing f36 v36, toField backendParams encode Nothing f37 v37, toField backendParams encode Nothing f38 v38, toField backendParams encode Nothing f39 v39, toField backendParams encode Nothing f40 v40, toField backendParams encode Nothing f41 v41, toField backendParams encode Nothing f42 v42, toField backendParams encode Nothing f43 v43, toField backendParams encode Nothing f44 v44, toField backendParams encode Nothing f45 v45, toField backendParams encode Nothing f46 v46, toField backendParams encode Nothing f47 v47, toField backendParams encode Nothing f48 v48, toField backendParams encode Nothing f49 v49, toField backendParams encode Nothing f50 v50, toField backendParams encode Nothing f51 v51, toField backendParams encode Nothing f52 v52, toField backendParams encode Nothing f53 v53]
  toRecord backendParams encode (Just [o0, o1, o2, o3, o4, o5, o6, o7, o8, o9, o10, o11, o12, o13, o14, o15, o16, o17, o18, o19, o20, o21, o22, o23, o24, o25, o26, o27, o28, o29, o30, o31, o32, o33, o34, o35, o36, o37, o38, o39, o40, o41, o42, o43, o44, o45, o46, o47, o48, o49, o50, o51, o52, o53]) [f0, f1, f2, f3, f4, f5, f6, f7, f8, f9, f10, f11, f12, f13, f14, f15, f16, f17, f18, f19, f20, f21, f22, f23, f24, f25, f26, f27, f28, f29, f30, f31, f32, f33, f34, f35, f36, f37, f38, f39, f40, f41, f42, f43, f44, f45, f46, f47, f48, f49, f50, f51, f52, f53] (v0, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48, v49, v50, v51, v52, v53) =
    sequence [toField backendParams encode (Just o0) f0 v0, toField backendParams encode (Just o1) f1 v1, toField backendParams encode (Just o2) f2 v2, toField backendParams encode (Just o3) f3 v3, toField backendParams encode (Just o4) f4 v4, toField backendParams encode (Just o5) f5 v5, toField backendParams encode (Just o6) f6 v6, toField backendParams encode (Just o7) f7 v7, toField backendParams encode (Just o8) f8 v8, toField backendParams encode (Just o9) f9 v9, toField backendParams encode (Just o10) f10 v10, toField backendParams encode (Just o11) f11 v11, toField backendParams encode (Just o12) f12 v12, toField backendParams encode (Just o13) f13 v13, toField backendParams encode (Just o14) f14 v14, toField backendParams encode (Just o15) f15 v15, toField backendParams encode (Just o16) f16 v16, toField backendParams encode (Just o17) f17 v17, toField backendParams encode (Just o18) f18 v18, toField backendParams encode (Just o19) f19 v19, toField backendParams encode (Just o20) f20 v20, toField backendParams encode (Just o21) f21 v21, toField backendParams encode (Just o22) f22 v22, toField backendParams encode (Just o23) f23 v23, toField backendParams encode (Just o24) f24 v24, toField backendParams encode (Just o25) f25 v25, toField backendParams encode (Just o26) f26 v26, toField backendParams encode (Just o27) f27 v27, toField backendParams encode (Just o28) f28 v28, toField backendParams encode (Just o29) f29 v29, toField backendParams encode (Just o30) f30 v30, toField backendParams encode (Just o31) f31 v31, toField backendParams encode (Just o32) f32 v32, toField backendParams encode (Just o33) f33 v33, toField backendParams encode (Just o34) f34 v34, toField backendParams encode (Just o35) f35 v35, toField backendParams encode (Just o36) f36 v36, toField backendParams encode (Just o37) f37 v37, toField backendParams encode (Just o38) f38 v38, toField backendParams encode (Just o39) f39 v39, toField backendParams encode (Just o40) f40 v40, toField backendParams encode (Just o41) f41 v41, toField backendParams encode (Just o42) f42 v42, toField backendParams encode (Just o43) f43 v43, toField backendParams encode (Just o44) f44 v44, toField backendParams encode (Just o45) f45 v45, toField backendParams encode (Just o46) f46 v46, toField backendParams encode (Just o47) f47 v47, toField backendParams encode (Just o48) f48 v48, toField backendParams encode (Just o49) f49 v49, toField backendParams encode (Just o50) f50 v50, toField backendParams encode (Just o51) f51 v51, toField backendParams encode (Just o52) f52 v52, toField backendParams encode (Just o53) f53 v53]
  toRecord _ _ (Just os) _ _ =
    fail $ "the number of OIDs must be 54, actually " <> show (length os)
  toRecord _ _ _ fs _ =
    fail $ "the number of format codes must be 54, actually " <> show (length fs)

-- 55-tuple
instance (ToField i0, ToField i1, ToField i2, ToField i3, ToField i4, ToField i5, ToField i6, ToField i7, ToField i8, ToField i9, ToField i10, ToField i11, ToField i12, ToField i13, ToField i14, ToField i15, ToField i16, ToField i17, ToField i18, ToField i19, ToField i20, ToField i21, ToField i22, ToField i23, ToField i24, ToField i25, ToField i26, ToField i27, ToField i28, ToField i29, ToField i30, ToField i31, ToField i32, ToField i33, ToField i34, ToField i35, ToField i36, ToField i37, ToField i38, ToField i39, ToField i40, ToField i41, ToField i42, ToField i43, ToField i44, ToField i45, ToField i46, ToField i47, ToField i48, ToField i49, ToField i50, ToField i51, ToField i52, ToField i53, ToField i54) => ToRecord (i0, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14, i15, i16, i17, i18, i19, i20, i21, i22, i23, i24, i25, i26, i27, i28, i29, i30, i31, i32, i33, i34, i35, i36, i37, i38, i39, i40, i41, i42, i43, i44, i45, i46, i47, i48, i49, i50, i51, i52, i53, i54) where
  toRecord backendParams encode Nothing [f0, f1, f2, f3, f4, f5, f6, f7, f8, f9, f10, f11, f12, f13, f14, f15, f16, f17, f18, f19, f20, f21, f22, f23, f24, f25, f26, f27, f28, f29, f30, f31, f32, f33, f34, f35, f36, f37, f38, f39, f40, f41, f42, f43, f44, f45, f46, f47, f48, f49, f50, f51, f52, f53, f54] (v0, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48, v49, v50, v51, v52, v53, v54) =
    sequence [toField backendParams encode Nothing f0 v0, toField backendParams encode Nothing f1 v1, toField backendParams encode Nothing f2 v2, toField backendParams encode Nothing f3 v3, toField backendParams encode Nothing f4 v4, toField backendParams encode Nothing f5 v5, toField backendParams encode Nothing f6 v6, toField backendParams encode Nothing f7 v7, toField backendParams encode Nothing f8 v8, toField backendParams encode Nothing f9 v9, toField backendParams encode Nothing f10 v10, toField backendParams encode Nothing f11 v11, toField backendParams encode Nothing f12 v12, toField backendParams encode Nothing f13 v13, toField backendParams encode Nothing f14 v14, toField backendParams encode Nothing f15 v15, toField backendParams encode Nothing f16 v16, toField backendParams encode Nothing f17 v17, toField backendParams encode Nothing f18 v18, toField backendParams encode Nothing f19 v19, toField backendParams encode Nothing f20 v20, toField backendParams encode Nothing f21 v21, toField backendParams encode Nothing f22 v22, toField backendParams encode Nothing f23 v23, toField backendParams encode Nothing f24 v24, toField backendParams encode Nothing f25 v25, toField backendParams encode Nothing f26 v26, toField backendParams encode Nothing f27 v27, toField backendParams encode Nothing f28 v28, toField backendParams encode Nothing f29 v29, toField backendParams encode Nothing f30 v30, toField backendParams encode Nothing f31 v31, toField backendParams encode Nothing f32 v32, toField backendParams encode Nothing f33 v33, toField backendParams encode Nothing f34 v34, toField backendParams encode Nothing f35 v35, toField backendParams encode Nothing f36 v36, toField backendParams encode Nothing f37 v37, toField backendParams encode Nothing f38 v38, toField backendParams encode Nothing f39 v39, toField backendParams encode Nothing f40 v40, toField backendParams encode Nothing f41 v41, toField backendParams encode Nothing f42 v42, toField backendParams encode Nothing f43 v43, toField backendParams encode Nothing f44 v44, toField backendParams encode Nothing f45 v45, toField backendParams encode Nothing f46 v46, toField backendParams encode Nothing f47 v47, toField backendParams encode Nothing f48 v48, toField backendParams encode Nothing f49 v49, toField backendParams encode Nothing f50 v50, toField backendParams encode Nothing f51 v51, toField backendParams encode Nothing f52 v52, toField backendParams encode Nothing f53 v53, toField backendParams encode Nothing f54 v54]
  toRecord backendParams encode (Just [o0, o1, o2, o3, o4, o5, o6, o7, o8, o9, o10, o11, o12, o13, o14, o15, o16, o17, o18, o19, o20, o21, o22, o23, o24, o25, o26, o27, o28, o29, o30, o31, o32, o33, o34, o35, o36, o37, o38, o39, o40, o41, o42, o43, o44, o45, o46, o47, o48, o49, o50, o51, o52, o53, o54]) [f0, f1, f2, f3, f4, f5, f6, f7, f8, f9, f10, f11, f12, f13, f14, f15, f16, f17, f18, f19, f20, f21, f22, f23, f24, f25, f26, f27, f28, f29, f30, f31, f32, f33, f34, f35, f36, f37, f38, f39, f40, f41, f42, f43, f44, f45, f46, f47, f48, f49, f50, f51, f52, f53, f54] (v0, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48, v49, v50, v51, v52, v53, v54) =
    sequence [toField backendParams encode (Just o0) f0 v0, toField backendParams encode (Just o1) f1 v1, toField backendParams encode (Just o2) f2 v2, toField backendParams encode (Just o3) f3 v3, toField backendParams encode (Just o4) f4 v4, toField backendParams encode (Just o5) f5 v5, toField backendParams encode (Just o6) f6 v6, toField backendParams encode (Just o7) f7 v7, toField backendParams encode (Just o8) f8 v8, toField backendParams encode (Just o9) f9 v9, toField backendParams encode (Just o10) f10 v10, toField backendParams encode (Just o11) f11 v11, toField backendParams encode (Just o12) f12 v12, toField backendParams encode (Just o13) f13 v13, toField backendParams encode (Just o14) f14 v14, toField backendParams encode (Just o15) f15 v15, toField backendParams encode (Just o16) f16 v16, toField backendParams encode (Just o17) f17 v17, toField backendParams encode (Just o18) f18 v18, toField backendParams encode (Just o19) f19 v19, toField backendParams encode (Just o20) f20 v20, toField backendParams encode (Just o21) f21 v21, toField backendParams encode (Just o22) f22 v22, toField backendParams encode (Just o23) f23 v23, toField backendParams encode (Just o24) f24 v24, toField backendParams encode (Just o25) f25 v25, toField backendParams encode (Just o26) f26 v26, toField backendParams encode (Just o27) f27 v27, toField backendParams encode (Just o28) f28 v28, toField backendParams encode (Just o29) f29 v29, toField backendParams encode (Just o30) f30 v30, toField backendParams encode (Just o31) f31 v31, toField backendParams encode (Just o32) f32 v32, toField backendParams encode (Just o33) f33 v33, toField backendParams encode (Just o34) f34 v34, toField backendParams encode (Just o35) f35 v35, toField backendParams encode (Just o36) f36 v36, toField backendParams encode (Just o37) f37 v37, toField backendParams encode (Just o38) f38 v38, toField backendParams encode (Just o39) f39 v39, toField backendParams encode (Just o40) f40 v40, toField backendParams encode (Just o41) f41 v41, toField backendParams encode (Just o42) f42 v42, toField backendParams encode (Just o43) f43 v43, toField backendParams encode (Just o44) f44 v44, toField backendParams encode (Just o45) f45 v45, toField backendParams encode (Just o46) f46 v46, toField backendParams encode (Just o47) f47 v47, toField backendParams encode (Just o48) f48 v48, toField backendParams encode (Just o49) f49 v49, toField backendParams encode (Just o50) f50 v50, toField backendParams encode (Just o51) f51 v51, toField backendParams encode (Just o52) f52 v52, toField backendParams encode (Just o53) f53 v53, toField backendParams encode (Just o54) f54 v54]
  toRecord _ _ (Just os) _ _ =
    fail $ "the number of OIDs must be 55, actually " <> show (length os)
  toRecord _ _ _ fs _ =
    fail $ "the number of format codes must be 55, actually " <> show (length fs)

-- 56-tuple
instance (ToField i0, ToField i1, ToField i2, ToField i3, ToField i4, ToField i5, ToField i6, ToField i7, ToField i8, ToField i9, ToField i10, ToField i11, ToField i12, ToField i13, ToField i14, ToField i15, ToField i16, ToField i17, ToField i18, ToField i19, ToField i20, ToField i21, ToField i22, ToField i23, ToField i24, ToField i25, ToField i26, ToField i27, ToField i28, ToField i29, ToField i30, ToField i31, ToField i32, ToField i33, ToField i34, ToField i35, ToField i36, ToField i37, ToField i38, ToField i39, ToField i40, ToField i41, ToField i42, ToField i43, ToField i44, ToField i45, ToField i46, ToField i47, ToField i48, ToField i49, ToField i50, ToField i51, ToField i52, ToField i53, ToField i54, ToField i55) => ToRecord (i0, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14, i15, i16, i17, i18, i19, i20, i21, i22, i23, i24, i25, i26, i27, i28, i29, i30, i31, i32, i33, i34, i35, i36, i37, i38, i39, i40, i41, i42, i43, i44, i45, i46, i47, i48, i49, i50, i51, i52, i53, i54, i55) where
  toRecord backendParams encode Nothing [f0, f1, f2, f3, f4, f5, f6, f7, f8, f9, f10, f11, f12, f13, f14, f15, f16, f17, f18, f19, f20, f21, f22, f23, f24, f25, f26, f27, f28, f29, f30, f31, f32, f33, f34, f35, f36, f37, f38, f39, f40, f41, f42, f43, f44, f45, f46, f47, f48, f49, f50, f51, f52, f53, f54, f55] (v0, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48, v49, v50, v51, v52, v53, v54, v55) =
    sequence [toField backendParams encode Nothing f0 v0, toField backendParams encode Nothing f1 v1, toField backendParams encode Nothing f2 v2, toField backendParams encode Nothing f3 v3, toField backendParams encode Nothing f4 v4, toField backendParams encode Nothing f5 v5, toField backendParams encode Nothing f6 v6, toField backendParams encode Nothing f7 v7, toField backendParams encode Nothing f8 v8, toField backendParams encode Nothing f9 v9, toField backendParams encode Nothing f10 v10, toField backendParams encode Nothing f11 v11, toField backendParams encode Nothing f12 v12, toField backendParams encode Nothing f13 v13, toField backendParams encode Nothing f14 v14, toField backendParams encode Nothing f15 v15, toField backendParams encode Nothing f16 v16, toField backendParams encode Nothing f17 v17, toField backendParams encode Nothing f18 v18, toField backendParams encode Nothing f19 v19, toField backendParams encode Nothing f20 v20, toField backendParams encode Nothing f21 v21, toField backendParams encode Nothing f22 v22, toField backendParams encode Nothing f23 v23, toField backendParams encode Nothing f24 v24, toField backendParams encode Nothing f25 v25, toField backendParams encode Nothing f26 v26, toField backendParams encode Nothing f27 v27, toField backendParams encode Nothing f28 v28, toField backendParams encode Nothing f29 v29, toField backendParams encode Nothing f30 v30, toField backendParams encode Nothing f31 v31, toField backendParams encode Nothing f32 v32, toField backendParams encode Nothing f33 v33, toField backendParams encode Nothing f34 v34, toField backendParams encode Nothing f35 v35, toField backendParams encode Nothing f36 v36, toField backendParams encode Nothing f37 v37, toField backendParams encode Nothing f38 v38, toField backendParams encode Nothing f39 v39, toField backendParams encode Nothing f40 v40, toField backendParams encode Nothing f41 v41, toField backendParams encode Nothing f42 v42, toField backendParams encode Nothing f43 v43, toField backendParams encode Nothing f44 v44, toField backendParams encode Nothing f45 v45, toField backendParams encode Nothing f46 v46, toField backendParams encode Nothing f47 v47, toField backendParams encode Nothing f48 v48, toField backendParams encode Nothing f49 v49, toField backendParams encode Nothing f50 v50, toField backendParams encode Nothing f51 v51, toField backendParams encode Nothing f52 v52, toField backendParams encode Nothing f53 v53, toField backendParams encode Nothing f54 v54, toField backendParams encode Nothing f55 v55]
  toRecord backendParams encode (Just [o0, o1, o2, o3, o4, o5, o6, o7, o8, o9, o10, o11, o12, o13, o14, o15, o16, o17, o18, o19, o20, o21, o22, o23, o24, o25, o26, o27, o28, o29, o30, o31, o32, o33, o34, o35, o36, o37, o38, o39, o40, o41, o42, o43, o44, o45, o46, o47, o48, o49, o50, o51, o52, o53, o54, o55]) [f0, f1, f2, f3, f4, f5, f6, f7, f8, f9, f10, f11, f12, f13, f14, f15, f16, f17, f18, f19, f20, f21, f22, f23, f24, f25, f26, f27, f28, f29, f30, f31, f32, f33, f34, f35, f36, f37, f38, f39, f40, f41, f42, f43, f44, f45, f46, f47, f48, f49, f50, f51, f52, f53, f54, f55] (v0, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48, v49, v50, v51, v52, v53, v54, v55) =
    sequence [toField backendParams encode (Just o0) f0 v0, toField backendParams encode (Just o1) f1 v1, toField backendParams encode (Just o2) f2 v2, toField backendParams encode (Just o3) f3 v3, toField backendParams encode (Just o4) f4 v4, toField backendParams encode (Just o5) f5 v5, toField backendParams encode (Just o6) f6 v6, toField backendParams encode (Just o7) f7 v7, toField backendParams encode (Just o8) f8 v8, toField backendParams encode (Just o9) f9 v9, toField backendParams encode (Just o10) f10 v10, toField backendParams encode (Just o11) f11 v11, toField backendParams encode (Just o12) f12 v12, toField backendParams encode (Just o13) f13 v13, toField backendParams encode (Just o14) f14 v14, toField backendParams encode (Just o15) f15 v15, toField backendParams encode (Just o16) f16 v16, toField backendParams encode (Just o17) f17 v17, toField backendParams encode (Just o18) f18 v18, toField backendParams encode (Just o19) f19 v19, toField backendParams encode (Just o20) f20 v20, toField backendParams encode (Just o21) f21 v21, toField backendParams encode (Just o22) f22 v22, toField backendParams encode (Just o23) f23 v23, toField backendParams encode (Just o24) f24 v24, toField backendParams encode (Just o25) f25 v25, toField backendParams encode (Just o26) f26 v26, toField backendParams encode (Just o27) f27 v27, toField backendParams encode (Just o28) f28 v28, toField backendParams encode (Just o29) f29 v29, toField backendParams encode (Just o30) f30 v30, toField backendParams encode (Just o31) f31 v31, toField backendParams encode (Just o32) f32 v32, toField backendParams encode (Just o33) f33 v33, toField backendParams encode (Just o34) f34 v34, toField backendParams encode (Just o35) f35 v35, toField backendParams encode (Just o36) f36 v36, toField backendParams encode (Just o37) f37 v37, toField backendParams encode (Just o38) f38 v38, toField backendParams encode (Just o39) f39 v39, toField backendParams encode (Just o40) f40 v40, toField backendParams encode (Just o41) f41 v41, toField backendParams encode (Just o42) f42 v42, toField backendParams encode (Just o43) f43 v43, toField backendParams encode (Just o44) f44 v44, toField backendParams encode (Just o45) f45 v45, toField backendParams encode (Just o46) f46 v46, toField backendParams encode (Just o47) f47 v47, toField backendParams encode (Just o48) f48 v48, toField backendParams encode (Just o49) f49 v49, toField backendParams encode (Just o50) f50 v50, toField backendParams encode (Just o51) f51 v51, toField backendParams encode (Just o52) f52 v52, toField backendParams encode (Just o53) f53 v53, toField backendParams encode (Just o54) f54 v54, toField backendParams encode (Just o55) f55 v55]
  toRecord _ _ (Just os) _ _ =
    fail $ "the number of OIDs must be 56, actually " <> show (length os)
  toRecord _ _ _ fs _ =
    fail $ "the number of format codes must be 56, actually " <> show (length fs)

-- 57-tuple
instance (ToField i0, ToField i1, ToField i2, ToField i3, ToField i4, ToField i5, ToField i6, ToField i7, ToField i8, ToField i9, ToField i10, ToField i11, ToField i12, ToField i13, ToField i14, ToField i15, ToField i16, ToField i17, ToField i18, ToField i19, ToField i20, ToField i21, ToField i22, ToField i23, ToField i24, ToField i25, ToField i26, ToField i27, ToField i28, ToField i29, ToField i30, ToField i31, ToField i32, ToField i33, ToField i34, ToField i35, ToField i36, ToField i37, ToField i38, ToField i39, ToField i40, ToField i41, ToField i42, ToField i43, ToField i44, ToField i45, ToField i46, ToField i47, ToField i48, ToField i49, ToField i50, ToField i51, ToField i52, ToField i53, ToField i54, ToField i55, ToField i56) => ToRecord (i0, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14, i15, i16, i17, i18, i19, i20, i21, i22, i23, i24, i25, i26, i27, i28, i29, i30, i31, i32, i33, i34, i35, i36, i37, i38, i39, i40, i41, i42, i43, i44, i45, i46, i47, i48, i49, i50, i51, i52, i53, i54, i55, i56) where
  toRecord backendParams encode Nothing [f0, f1, f2, f3, f4, f5, f6, f7, f8, f9, f10, f11, f12, f13, f14, f15, f16, f17, f18, f19, f20, f21, f22, f23, f24, f25, f26, f27, f28, f29, f30, f31, f32, f33, f34, f35, f36, f37, f38, f39, f40, f41, f42, f43, f44, f45, f46, f47, f48, f49, f50, f51, f52, f53, f54, f55, f56] (v0, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48, v49, v50, v51, v52, v53, v54, v55, v56) =
    sequence [toField backendParams encode Nothing f0 v0, toField backendParams encode Nothing f1 v1, toField backendParams encode Nothing f2 v2, toField backendParams encode Nothing f3 v3, toField backendParams encode Nothing f4 v4, toField backendParams encode Nothing f5 v5, toField backendParams encode Nothing f6 v6, toField backendParams encode Nothing f7 v7, toField backendParams encode Nothing f8 v8, toField backendParams encode Nothing f9 v9, toField backendParams encode Nothing f10 v10, toField backendParams encode Nothing f11 v11, toField backendParams encode Nothing f12 v12, toField backendParams encode Nothing f13 v13, toField backendParams encode Nothing f14 v14, toField backendParams encode Nothing f15 v15, toField backendParams encode Nothing f16 v16, toField backendParams encode Nothing f17 v17, toField backendParams encode Nothing f18 v18, toField backendParams encode Nothing f19 v19, toField backendParams encode Nothing f20 v20, toField backendParams encode Nothing f21 v21, toField backendParams encode Nothing f22 v22, toField backendParams encode Nothing f23 v23, toField backendParams encode Nothing f24 v24, toField backendParams encode Nothing f25 v25, toField backendParams encode Nothing f26 v26, toField backendParams encode Nothing f27 v27, toField backendParams encode Nothing f28 v28, toField backendParams encode Nothing f29 v29, toField backendParams encode Nothing f30 v30, toField backendParams encode Nothing f31 v31, toField backendParams encode Nothing f32 v32, toField backendParams encode Nothing f33 v33, toField backendParams encode Nothing f34 v34, toField backendParams encode Nothing f35 v35, toField backendParams encode Nothing f36 v36, toField backendParams encode Nothing f37 v37, toField backendParams encode Nothing f38 v38, toField backendParams encode Nothing f39 v39, toField backendParams encode Nothing f40 v40, toField backendParams encode Nothing f41 v41, toField backendParams encode Nothing f42 v42, toField backendParams encode Nothing f43 v43, toField backendParams encode Nothing f44 v44, toField backendParams encode Nothing f45 v45, toField backendParams encode Nothing f46 v46, toField backendParams encode Nothing f47 v47, toField backendParams encode Nothing f48 v48, toField backendParams encode Nothing f49 v49, toField backendParams encode Nothing f50 v50, toField backendParams encode Nothing f51 v51, toField backendParams encode Nothing f52 v52, toField backendParams encode Nothing f53 v53, toField backendParams encode Nothing f54 v54, toField backendParams encode Nothing f55 v55, toField backendParams encode Nothing f56 v56]
  toRecord backendParams encode (Just [o0, o1, o2, o3, o4, o5, o6, o7, o8, o9, o10, o11, o12, o13, o14, o15, o16, o17, o18, o19, o20, o21, o22, o23, o24, o25, o26, o27, o28, o29, o30, o31, o32, o33, o34, o35, o36, o37, o38, o39, o40, o41, o42, o43, o44, o45, o46, o47, o48, o49, o50, o51, o52, o53, o54, o55, o56]) [f0, f1, f2, f3, f4, f5, f6, f7, f8, f9, f10, f11, f12, f13, f14, f15, f16, f17, f18, f19, f20, f21, f22, f23, f24, f25, f26, f27, f28, f29, f30, f31, f32, f33, f34, f35, f36, f37, f38, f39, f40, f41, f42, f43, f44, f45, f46, f47, f48, f49, f50, f51, f52, f53, f54, f55, f56] (v0, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48, v49, v50, v51, v52, v53, v54, v55, v56) =
    sequence [toField backendParams encode (Just o0) f0 v0, toField backendParams encode (Just o1) f1 v1, toField backendParams encode (Just o2) f2 v2, toField backendParams encode (Just o3) f3 v3, toField backendParams encode (Just o4) f4 v4, toField backendParams encode (Just o5) f5 v5, toField backendParams encode (Just o6) f6 v6, toField backendParams encode (Just o7) f7 v7, toField backendParams encode (Just o8) f8 v8, toField backendParams encode (Just o9) f9 v9, toField backendParams encode (Just o10) f10 v10, toField backendParams encode (Just o11) f11 v11, toField backendParams encode (Just o12) f12 v12, toField backendParams encode (Just o13) f13 v13, toField backendParams encode (Just o14) f14 v14, toField backendParams encode (Just o15) f15 v15, toField backendParams encode (Just o16) f16 v16, toField backendParams encode (Just o17) f17 v17, toField backendParams encode (Just o18) f18 v18, toField backendParams encode (Just o19) f19 v19, toField backendParams encode (Just o20) f20 v20, toField backendParams encode (Just o21) f21 v21, toField backendParams encode (Just o22) f22 v22, toField backendParams encode (Just o23) f23 v23, toField backendParams encode (Just o24) f24 v24, toField backendParams encode (Just o25) f25 v25, toField backendParams encode (Just o26) f26 v26, toField backendParams encode (Just o27) f27 v27, toField backendParams encode (Just o28) f28 v28, toField backendParams encode (Just o29) f29 v29, toField backendParams encode (Just o30) f30 v30, toField backendParams encode (Just o31) f31 v31, toField backendParams encode (Just o32) f32 v32, toField backendParams encode (Just o33) f33 v33, toField backendParams encode (Just o34) f34 v34, toField backendParams encode (Just o35) f35 v35, toField backendParams encode (Just o36) f36 v36, toField backendParams encode (Just o37) f37 v37, toField backendParams encode (Just o38) f38 v38, toField backendParams encode (Just o39) f39 v39, toField backendParams encode (Just o40) f40 v40, toField backendParams encode (Just o41) f41 v41, toField backendParams encode (Just o42) f42 v42, toField backendParams encode (Just o43) f43 v43, toField backendParams encode (Just o44) f44 v44, toField backendParams encode (Just o45) f45 v45, toField backendParams encode (Just o46) f46 v46, toField backendParams encode (Just o47) f47 v47, toField backendParams encode (Just o48) f48 v48, toField backendParams encode (Just o49) f49 v49, toField backendParams encode (Just o50) f50 v50, toField backendParams encode (Just o51) f51 v51, toField backendParams encode (Just o52) f52 v52, toField backendParams encode (Just o53) f53 v53, toField backendParams encode (Just o54) f54 v54, toField backendParams encode (Just o55) f55 v55, toField backendParams encode (Just o56) f56 v56]
  toRecord _ _ (Just os) _ _ =
    fail $ "the number of OIDs must be 57, actually " <> show (length os)
  toRecord _ _ _ fs _ =
    fail $ "the number of format codes must be 57, actually " <> show (length fs)

-- 58-tuple
instance (ToField i0, ToField i1, ToField i2, ToField i3, ToField i4, ToField i5, ToField i6, ToField i7, ToField i8, ToField i9, ToField i10, ToField i11, ToField i12, ToField i13, ToField i14, ToField i15, ToField i16, ToField i17, ToField i18, ToField i19, ToField i20, ToField i21, ToField i22, ToField i23, ToField i24, ToField i25, ToField i26, ToField i27, ToField i28, ToField i29, ToField i30, ToField i31, ToField i32, ToField i33, ToField i34, ToField i35, ToField i36, ToField i37, ToField i38, ToField i39, ToField i40, ToField i41, ToField i42, ToField i43, ToField i44, ToField i45, ToField i46, ToField i47, ToField i48, ToField i49, ToField i50, ToField i51, ToField i52, ToField i53, ToField i54, ToField i55, ToField i56, ToField i57) => ToRecord (i0, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14, i15, i16, i17, i18, i19, i20, i21, i22, i23, i24, i25, i26, i27, i28, i29, i30, i31, i32, i33, i34, i35, i36, i37, i38, i39, i40, i41, i42, i43, i44, i45, i46, i47, i48, i49, i50, i51, i52, i53, i54, i55, i56, i57) where
  toRecord backendParams encode Nothing [f0, f1, f2, f3, f4, f5, f6, f7, f8, f9, f10, f11, f12, f13, f14, f15, f16, f17, f18, f19, f20, f21, f22, f23, f24, f25, f26, f27, f28, f29, f30, f31, f32, f33, f34, f35, f36, f37, f38, f39, f40, f41, f42, f43, f44, f45, f46, f47, f48, f49, f50, f51, f52, f53, f54, f55, f56, f57] (v0, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48, v49, v50, v51, v52, v53, v54, v55, v56, v57) =
    sequence [toField backendParams encode Nothing f0 v0, toField backendParams encode Nothing f1 v1, toField backendParams encode Nothing f2 v2, toField backendParams encode Nothing f3 v3, toField backendParams encode Nothing f4 v4, toField backendParams encode Nothing f5 v5, toField backendParams encode Nothing f6 v6, toField backendParams encode Nothing f7 v7, toField backendParams encode Nothing f8 v8, toField backendParams encode Nothing f9 v9, toField backendParams encode Nothing f10 v10, toField backendParams encode Nothing f11 v11, toField backendParams encode Nothing f12 v12, toField backendParams encode Nothing f13 v13, toField backendParams encode Nothing f14 v14, toField backendParams encode Nothing f15 v15, toField backendParams encode Nothing f16 v16, toField backendParams encode Nothing f17 v17, toField backendParams encode Nothing f18 v18, toField backendParams encode Nothing f19 v19, toField backendParams encode Nothing f20 v20, toField backendParams encode Nothing f21 v21, toField backendParams encode Nothing f22 v22, toField backendParams encode Nothing f23 v23, toField backendParams encode Nothing f24 v24, toField backendParams encode Nothing f25 v25, toField backendParams encode Nothing f26 v26, toField backendParams encode Nothing f27 v27, toField backendParams encode Nothing f28 v28, toField backendParams encode Nothing f29 v29, toField backendParams encode Nothing f30 v30, toField backendParams encode Nothing f31 v31, toField backendParams encode Nothing f32 v32, toField backendParams encode Nothing f33 v33, toField backendParams encode Nothing f34 v34, toField backendParams encode Nothing f35 v35, toField backendParams encode Nothing f36 v36, toField backendParams encode Nothing f37 v37, toField backendParams encode Nothing f38 v38, toField backendParams encode Nothing f39 v39, toField backendParams encode Nothing f40 v40, toField backendParams encode Nothing f41 v41, toField backendParams encode Nothing f42 v42, toField backendParams encode Nothing f43 v43, toField backendParams encode Nothing f44 v44, toField backendParams encode Nothing f45 v45, toField backendParams encode Nothing f46 v46, toField backendParams encode Nothing f47 v47, toField backendParams encode Nothing f48 v48, toField backendParams encode Nothing f49 v49, toField backendParams encode Nothing f50 v50, toField backendParams encode Nothing f51 v51, toField backendParams encode Nothing f52 v52, toField backendParams encode Nothing f53 v53, toField backendParams encode Nothing f54 v54, toField backendParams encode Nothing f55 v55, toField backendParams encode Nothing f56 v56, toField backendParams encode Nothing f57 v57]
  toRecord backendParams encode (Just [o0, o1, o2, o3, o4, o5, o6, o7, o8, o9, o10, o11, o12, o13, o14, o15, o16, o17, o18, o19, o20, o21, o22, o23, o24, o25, o26, o27, o28, o29, o30, o31, o32, o33, o34, o35, o36, o37, o38, o39, o40, o41, o42, o43, o44, o45, o46, o47, o48, o49, o50, o51, o52, o53, o54, o55, o56, o57]) [f0, f1, f2, f3, f4, f5, f6, f7, f8, f9, f10, f11, f12, f13, f14, f15, f16, f17, f18, f19, f20, f21, f22, f23, f24, f25, f26, f27, f28, f29, f30, f31, f32, f33, f34, f35, f36, f37, f38, f39, f40, f41, f42, f43, f44, f45, f46, f47, f48, f49, f50, f51, f52, f53, f54, f55, f56, f57] (v0, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48, v49, v50, v51, v52, v53, v54, v55, v56, v57) =
    sequence [toField backendParams encode (Just o0) f0 v0, toField backendParams encode (Just o1) f1 v1, toField backendParams encode (Just o2) f2 v2, toField backendParams encode (Just o3) f3 v3, toField backendParams encode (Just o4) f4 v4, toField backendParams encode (Just o5) f5 v5, toField backendParams encode (Just o6) f6 v6, toField backendParams encode (Just o7) f7 v7, toField backendParams encode (Just o8) f8 v8, toField backendParams encode (Just o9) f9 v9, toField backendParams encode (Just o10) f10 v10, toField backendParams encode (Just o11) f11 v11, toField backendParams encode (Just o12) f12 v12, toField backendParams encode (Just o13) f13 v13, toField backendParams encode (Just o14) f14 v14, toField backendParams encode (Just o15) f15 v15, toField backendParams encode (Just o16) f16 v16, toField backendParams encode (Just o17) f17 v17, toField backendParams encode (Just o18) f18 v18, toField backendParams encode (Just o19) f19 v19, toField backendParams encode (Just o20) f20 v20, toField backendParams encode (Just o21) f21 v21, toField backendParams encode (Just o22) f22 v22, toField backendParams encode (Just o23) f23 v23, toField backendParams encode (Just o24) f24 v24, toField backendParams encode (Just o25) f25 v25, toField backendParams encode (Just o26) f26 v26, toField backendParams encode (Just o27) f27 v27, toField backendParams encode (Just o28) f28 v28, toField backendParams encode (Just o29) f29 v29, toField backendParams encode (Just o30) f30 v30, toField backendParams encode (Just o31) f31 v31, toField backendParams encode (Just o32) f32 v32, toField backendParams encode (Just o33) f33 v33, toField backendParams encode (Just o34) f34 v34, toField backendParams encode (Just o35) f35 v35, toField backendParams encode (Just o36) f36 v36, toField backendParams encode (Just o37) f37 v37, toField backendParams encode (Just o38) f38 v38, toField backendParams encode (Just o39) f39 v39, toField backendParams encode (Just o40) f40 v40, toField backendParams encode (Just o41) f41 v41, toField backendParams encode (Just o42) f42 v42, toField backendParams encode (Just o43) f43 v43, toField backendParams encode (Just o44) f44 v44, toField backendParams encode (Just o45) f45 v45, toField backendParams encode (Just o46) f46 v46, toField backendParams encode (Just o47) f47 v47, toField backendParams encode (Just o48) f48 v48, toField backendParams encode (Just o49) f49 v49, toField backendParams encode (Just o50) f50 v50, toField backendParams encode (Just o51) f51 v51, toField backendParams encode (Just o52) f52 v52, toField backendParams encode (Just o53) f53 v53, toField backendParams encode (Just o54) f54 v54, toField backendParams encode (Just o55) f55 v55, toField backendParams encode (Just o56) f56 v56, toField backendParams encode (Just o57) f57 v57]
  toRecord _ _ (Just os) _ _ =
    fail $ "the number of OIDs must be 58, actually " <> show (length os)
  toRecord _ _ _ fs _ =
    fail $ "the number of format codes must be 58, actually " <> show (length fs)

-- 59-tuple
instance (ToField i0, ToField i1, ToField i2, ToField i3, ToField i4, ToField i5, ToField i6, ToField i7, ToField i8, ToField i9, ToField i10, ToField i11, ToField i12, ToField i13, ToField i14, ToField i15, ToField i16, ToField i17, ToField i18, ToField i19, ToField i20, ToField i21, ToField i22, ToField i23, ToField i24, ToField i25, ToField i26, ToField i27, ToField i28, ToField i29, ToField i30, ToField i31, ToField i32, ToField i33, ToField i34, ToField i35, ToField i36, ToField i37, ToField i38, ToField i39, ToField i40, ToField i41, ToField i42, ToField i43, ToField i44, ToField i45, ToField i46, ToField i47, ToField i48, ToField i49, ToField i50, ToField i51, ToField i52, ToField i53, ToField i54, ToField i55, ToField i56, ToField i57, ToField i58) => ToRecord (i0, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14, i15, i16, i17, i18, i19, i20, i21, i22, i23, i24, i25, i26, i27, i28, i29, i30, i31, i32, i33, i34, i35, i36, i37, i38, i39, i40, i41, i42, i43, i44, i45, i46, i47, i48, i49, i50, i51, i52, i53, i54, i55, i56, i57, i58) where
  toRecord backendParams encode Nothing [f0, f1, f2, f3, f4, f5, f6, f7, f8, f9, f10, f11, f12, f13, f14, f15, f16, f17, f18, f19, f20, f21, f22, f23, f24, f25, f26, f27, f28, f29, f30, f31, f32, f33, f34, f35, f36, f37, f38, f39, f40, f41, f42, f43, f44, f45, f46, f47, f48, f49, f50, f51, f52, f53, f54, f55, f56, f57, f58] (v0, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48, v49, v50, v51, v52, v53, v54, v55, v56, v57, v58) =
    sequence [toField backendParams encode Nothing f0 v0, toField backendParams encode Nothing f1 v1, toField backendParams encode Nothing f2 v2, toField backendParams encode Nothing f3 v3, toField backendParams encode Nothing f4 v4, toField backendParams encode Nothing f5 v5, toField backendParams encode Nothing f6 v6, toField backendParams encode Nothing f7 v7, toField backendParams encode Nothing f8 v8, toField backendParams encode Nothing f9 v9, toField backendParams encode Nothing f10 v10, toField backendParams encode Nothing f11 v11, toField backendParams encode Nothing f12 v12, toField backendParams encode Nothing f13 v13, toField backendParams encode Nothing f14 v14, toField backendParams encode Nothing f15 v15, toField backendParams encode Nothing f16 v16, toField backendParams encode Nothing f17 v17, toField backendParams encode Nothing f18 v18, toField backendParams encode Nothing f19 v19, toField backendParams encode Nothing f20 v20, toField backendParams encode Nothing f21 v21, toField backendParams encode Nothing f22 v22, toField backendParams encode Nothing f23 v23, toField backendParams encode Nothing f24 v24, toField backendParams encode Nothing f25 v25, toField backendParams encode Nothing f26 v26, toField backendParams encode Nothing f27 v27, toField backendParams encode Nothing f28 v28, toField backendParams encode Nothing f29 v29, toField backendParams encode Nothing f30 v30, toField backendParams encode Nothing f31 v31, toField backendParams encode Nothing f32 v32, toField backendParams encode Nothing f33 v33, toField backendParams encode Nothing f34 v34, toField backendParams encode Nothing f35 v35, toField backendParams encode Nothing f36 v36, toField backendParams encode Nothing f37 v37, toField backendParams encode Nothing f38 v38, toField backendParams encode Nothing f39 v39, toField backendParams encode Nothing f40 v40, toField backendParams encode Nothing f41 v41, toField backendParams encode Nothing f42 v42, toField backendParams encode Nothing f43 v43, toField backendParams encode Nothing f44 v44, toField backendParams encode Nothing f45 v45, toField backendParams encode Nothing f46 v46, toField backendParams encode Nothing f47 v47, toField backendParams encode Nothing f48 v48, toField backendParams encode Nothing f49 v49, toField backendParams encode Nothing f50 v50, toField backendParams encode Nothing f51 v51, toField backendParams encode Nothing f52 v52, toField backendParams encode Nothing f53 v53, toField backendParams encode Nothing f54 v54, toField backendParams encode Nothing f55 v55, toField backendParams encode Nothing f56 v56, toField backendParams encode Nothing f57 v57, toField backendParams encode Nothing f58 v58]
  toRecord backendParams encode (Just [o0, o1, o2, o3, o4, o5, o6, o7, o8, o9, o10, o11, o12, o13, o14, o15, o16, o17, o18, o19, o20, o21, o22, o23, o24, o25, o26, o27, o28, o29, o30, o31, o32, o33, o34, o35, o36, o37, o38, o39, o40, o41, o42, o43, o44, o45, o46, o47, o48, o49, o50, o51, o52, o53, o54, o55, o56, o57, o58]) [f0, f1, f2, f3, f4, f5, f6, f7, f8, f9, f10, f11, f12, f13, f14, f15, f16, f17, f18, f19, f20, f21, f22, f23, f24, f25, f26, f27, f28, f29, f30, f31, f32, f33, f34, f35, f36, f37, f38, f39, f40, f41, f42, f43, f44, f45, f46, f47, f48, f49, f50, f51, f52, f53, f54, f55, f56, f57, f58] (v0, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48, v49, v50, v51, v52, v53, v54, v55, v56, v57, v58) =
    sequence [toField backendParams encode (Just o0) f0 v0, toField backendParams encode (Just o1) f1 v1, toField backendParams encode (Just o2) f2 v2, toField backendParams encode (Just o3) f3 v3, toField backendParams encode (Just o4) f4 v4, toField backendParams encode (Just o5) f5 v5, toField backendParams encode (Just o6) f6 v6, toField backendParams encode (Just o7) f7 v7, toField backendParams encode (Just o8) f8 v8, toField backendParams encode (Just o9) f9 v9, toField backendParams encode (Just o10) f10 v10, toField backendParams encode (Just o11) f11 v11, toField backendParams encode (Just o12) f12 v12, toField backendParams encode (Just o13) f13 v13, toField backendParams encode (Just o14) f14 v14, toField backendParams encode (Just o15) f15 v15, toField backendParams encode (Just o16) f16 v16, toField backendParams encode (Just o17) f17 v17, toField backendParams encode (Just o18) f18 v18, toField backendParams encode (Just o19) f19 v19, toField backendParams encode (Just o20) f20 v20, toField backendParams encode (Just o21) f21 v21, toField backendParams encode (Just o22) f22 v22, toField backendParams encode (Just o23) f23 v23, toField backendParams encode (Just o24) f24 v24, toField backendParams encode (Just o25) f25 v25, toField backendParams encode (Just o26) f26 v26, toField backendParams encode (Just o27) f27 v27, toField backendParams encode (Just o28) f28 v28, toField backendParams encode (Just o29) f29 v29, toField backendParams encode (Just o30) f30 v30, toField backendParams encode (Just o31) f31 v31, toField backendParams encode (Just o32) f32 v32, toField backendParams encode (Just o33) f33 v33, toField backendParams encode (Just o34) f34 v34, toField backendParams encode (Just o35) f35 v35, toField backendParams encode (Just o36) f36 v36, toField backendParams encode (Just o37) f37 v37, toField backendParams encode (Just o38) f38 v38, toField backendParams encode (Just o39) f39 v39, toField backendParams encode (Just o40) f40 v40, toField backendParams encode (Just o41) f41 v41, toField backendParams encode (Just o42) f42 v42, toField backendParams encode (Just o43) f43 v43, toField backendParams encode (Just o44) f44 v44, toField backendParams encode (Just o45) f45 v45, toField backendParams encode (Just o46) f46 v46, toField backendParams encode (Just o47) f47 v47, toField backendParams encode (Just o48) f48 v48, toField backendParams encode (Just o49) f49 v49, toField backendParams encode (Just o50) f50 v50, toField backendParams encode (Just o51) f51 v51, toField backendParams encode (Just o52) f52 v52, toField backendParams encode (Just o53) f53 v53, toField backendParams encode (Just o54) f54 v54, toField backendParams encode (Just o55) f55 v55, toField backendParams encode (Just o56) f56 v56, toField backendParams encode (Just o57) f57 v57, toField backendParams encode (Just o58) f58 v58]
  toRecord _ _ (Just os) _ _ =
    fail $ "the number of OIDs must be 59, actually " <> show (length os)
  toRecord _ _ _ fs _ =
    fail $ "the number of format codes must be 59, actually " <> show (length fs)

-- 60-tuple
instance (ToField i0, ToField i1, ToField i2, ToField i3, ToField i4, ToField i5, ToField i6, ToField i7, ToField i8, ToField i9, ToField i10, ToField i11, ToField i12, ToField i13, ToField i14, ToField i15, ToField i16, ToField i17, ToField i18, ToField i19, ToField i20, ToField i21, ToField i22, ToField i23, ToField i24, ToField i25, ToField i26, ToField i27, ToField i28, ToField i29, ToField i30, ToField i31, ToField i32, ToField i33, ToField i34, ToField i35, ToField i36, ToField i37, ToField i38, ToField i39, ToField i40, ToField i41, ToField i42, ToField i43, ToField i44, ToField i45, ToField i46, ToField i47, ToField i48, ToField i49, ToField i50, ToField i51, ToField i52, ToField i53, ToField i54, ToField i55, ToField i56, ToField i57, ToField i58, ToField i59) => ToRecord (i0, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14, i15, i16, i17, i18, i19, i20, i21, i22, i23, i24, i25, i26, i27, i28, i29, i30, i31, i32, i33, i34, i35, i36, i37, i38, i39, i40, i41, i42, i43, i44, i45, i46, i47, i48, i49, i50, i51, i52, i53, i54, i55, i56, i57, i58, i59) where
  toRecord backendParams encode Nothing [f0, f1, f2, f3, f4, f5, f6, f7, f8, f9, f10, f11, f12, f13, f14, f15, f16, f17, f18, f19, f20, f21, f22, f23, f24, f25, f26, f27, f28, f29, f30, f31, f32, f33, f34, f35, f36, f37, f38, f39, f40, f41, f42, f43, f44, f45, f46, f47, f48, f49, f50, f51, f52, f53, f54, f55, f56, f57, f58, f59] (v0, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48, v49, v50, v51, v52, v53, v54, v55, v56, v57, v58, v59) =
    sequence [toField backendParams encode Nothing f0 v0, toField backendParams encode Nothing f1 v1, toField backendParams encode Nothing f2 v2, toField backendParams encode Nothing f3 v3, toField backendParams encode Nothing f4 v4, toField backendParams encode Nothing f5 v5, toField backendParams encode Nothing f6 v6, toField backendParams encode Nothing f7 v7, toField backendParams encode Nothing f8 v8, toField backendParams encode Nothing f9 v9, toField backendParams encode Nothing f10 v10, toField backendParams encode Nothing f11 v11, toField backendParams encode Nothing f12 v12, toField backendParams encode Nothing f13 v13, toField backendParams encode Nothing f14 v14, toField backendParams encode Nothing f15 v15, toField backendParams encode Nothing f16 v16, toField backendParams encode Nothing f17 v17, toField backendParams encode Nothing f18 v18, toField backendParams encode Nothing f19 v19, toField backendParams encode Nothing f20 v20, toField backendParams encode Nothing f21 v21, toField backendParams encode Nothing f22 v22, toField backendParams encode Nothing f23 v23, toField backendParams encode Nothing f24 v24, toField backendParams encode Nothing f25 v25, toField backendParams encode Nothing f26 v26, toField backendParams encode Nothing f27 v27, toField backendParams encode Nothing f28 v28, toField backendParams encode Nothing f29 v29, toField backendParams encode Nothing f30 v30, toField backendParams encode Nothing f31 v31, toField backendParams encode Nothing f32 v32, toField backendParams encode Nothing f33 v33, toField backendParams encode Nothing f34 v34, toField backendParams encode Nothing f35 v35, toField backendParams encode Nothing f36 v36, toField backendParams encode Nothing f37 v37, toField backendParams encode Nothing f38 v38, toField backendParams encode Nothing f39 v39, toField backendParams encode Nothing f40 v40, toField backendParams encode Nothing f41 v41, toField backendParams encode Nothing f42 v42, toField backendParams encode Nothing f43 v43, toField backendParams encode Nothing f44 v44, toField backendParams encode Nothing f45 v45, toField backendParams encode Nothing f46 v46, toField backendParams encode Nothing f47 v47, toField backendParams encode Nothing f48 v48, toField backendParams encode Nothing f49 v49, toField backendParams encode Nothing f50 v50, toField backendParams encode Nothing f51 v51, toField backendParams encode Nothing f52 v52, toField backendParams encode Nothing f53 v53, toField backendParams encode Nothing f54 v54, toField backendParams encode Nothing f55 v55, toField backendParams encode Nothing f56 v56, toField backendParams encode Nothing f57 v57, toField backendParams encode Nothing f58 v58, toField backendParams encode Nothing f59 v59]
  toRecord backendParams encode (Just [o0, o1, o2, o3, o4, o5, o6, o7, o8, o9, o10, o11, o12, o13, o14, o15, o16, o17, o18, o19, o20, o21, o22, o23, o24, o25, o26, o27, o28, o29, o30, o31, o32, o33, o34, o35, o36, o37, o38, o39, o40, o41, o42, o43, o44, o45, o46, o47, o48, o49, o50, o51, o52, o53, o54, o55, o56, o57, o58, o59]) [f0, f1, f2, f3, f4, f5, f6, f7, f8, f9, f10, f11, f12, f13, f14, f15, f16, f17, f18, f19, f20, f21, f22, f23, f24, f25, f26, f27, f28, f29, f30, f31, f32, f33, f34, f35, f36, f37, f38, f39, f40, f41, f42, f43, f44, f45, f46, f47, f48, f49, f50, f51, f52, f53, f54, f55, f56, f57, f58, f59] (v0, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48, v49, v50, v51, v52, v53, v54, v55, v56, v57, v58, v59) =
    sequence [toField backendParams encode (Just o0) f0 v0, toField backendParams encode (Just o1) f1 v1, toField backendParams encode (Just o2) f2 v2, toField backendParams encode (Just o3) f3 v3, toField backendParams encode (Just o4) f4 v4, toField backendParams encode (Just o5) f5 v5, toField backendParams encode (Just o6) f6 v6, toField backendParams encode (Just o7) f7 v7, toField backendParams encode (Just o8) f8 v8, toField backendParams encode (Just o9) f9 v9, toField backendParams encode (Just o10) f10 v10, toField backendParams encode (Just o11) f11 v11, toField backendParams encode (Just o12) f12 v12, toField backendParams encode (Just o13) f13 v13, toField backendParams encode (Just o14) f14 v14, toField backendParams encode (Just o15) f15 v15, toField backendParams encode (Just o16) f16 v16, toField backendParams encode (Just o17) f17 v17, toField backendParams encode (Just o18) f18 v18, toField backendParams encode (Just o19) f19 v19, toField backendParams encode (Just o20) f20 v20, toField backendParams encode (Just o21) f21 v21, toField backendParams encode (Just o22) f22 v22, toField backendParams encode (Just o23) f23 v23, toField backendParams encode (Just o24) f24 v24, toField backendParams encode (Just o25) f25 v25, toField backendParams encode (Just o26) f26 v26, toField backendParams encode (Just o27) f27 v27, toField backendParams encode (Just o28) f28 v28, toField backendParams encode (Just o29) f29 v29, toField backendParams encode (Just o30) f30 v30, toField backendParams encode (Just o31) f31 v31, toField backendParams encode (Just o32) f32 v32, toField backendParams encode (Just o33) f33 v33, toField backendParams encode (Just o34) f34 v34, toField backendParams encode (Just o35) f35 v35, toField backendParams encode (Just o36) f36 v36, toField backendParams encode (Just o37) f37 v37, toField backendParams encode (Just o38) f38 v38, toField backendParams encode (Just o39) f39 v39, toField backendParams encode (Just o40) f40 v40, toField backendParams encode (Just o41) f41 v41, toField backendParams encode (Just o42) f42 v42, toField backendParams encode (Just o43) f43 v43, toField backendParams encode (Just o44) f44 v44, toField backendParams encode (Just o45) f45 v45, toField backendParams encode (Just o46) f46 v46, toField backendParams encode (Just o47) f47 v47, toField backendParams encode (Just o48) f48 v48, toField backendParams encode (Just o49) f49 v49, toField backendParams encode (Just o50) f50 v50, toField backendParams encode (Just o51) f51 v51, toField backendParams encode (Just o52) f52 v52, toField backendParams encode (Just o53) f53 v53, toField backendParams encode (Just o54) f54 v54, toField backendParams encode (Just o55) f55 v55, toField backendParams encode (Just o56) f56 v56, toField backendParams encode (Just o57) f57 v57, toField backendParams encode (Just o58) f58 v58, toField backendParams encode (Just o59) f59 v59]
  toRecord _ _ (Just os) _ _ =
    fail $ "the number of OIDs must be 60, actually " <> show (length os)
  toRecord _ _ _ fs _ =
    fail $ "the number of format codes must be 60, actually " <> show (length fs)

-- 61-tuple
instance (ToField i0, ToField i1, ToField i2, ToField i3, ToField i4, ToField i5, ToField i6, ToField i7, ToField i8, ToField i9, ToField i10, ToField i11, ToField i12, ToField i13, ToField i14, ToField i15, ToField i16, ToField i17, ToField i18, ToField i19, ToField i20, ToField i21, ToField i22, ToField i23, ToField i24, ToField i25, ToField i26, ToField i27, ToField i28, ToField i29, ToField i30, ToField i31, ToField i32, ToField i33, ToField i34, ToField i35, ToField i36, ToField i37, ToField i38, ToField i39, ToField i40, ToField i41, ToField i42, ToField i43, ToField i44, ToField i45, ToField i46, ToField i47, ToField i48, ToField i49, ToField i50, ToField i51, ToField i52, ToField i53, ToField i54, ToField i55, ToField i56, ToField i57, ToField i58, ToField i59, ToField i60) => ToRecord (i0, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14, i15, i16, i17, i18, i19, i20, i21, i22, i23, i24, i25, i26, i27, i28, i29, i30, i31, i32, i33, i34, i35, i36, i37, i38, i39, i40, i41, i42, i43, i44, i45, i46, i47, i48, i49, i50, i51, i52, i53, i54, i55, i56, i57, i58, i59, i60) where
  toRecord backendParams encode Nothing [f0, f1, f2, f3, f4, f5, f6, f7, f8, f9, f10, f11, f12, f13, f14, f15, f16, f17, f18, f19, f20, f21, f22, f23, f24, f25, f26, f27, f28, f29, f30, f31, f32, f33, f34, f35, f36, f37, f38, f39, f40, f41, f42, f43, f44, f45, f46, f47, f48, f49, f50, f51, f52, f53, f54, f55, f56, f57, f58, f59, f60] (v0, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48, v49, v50, v51, v52, v53, v54, v55, v56, v57, v58, v59, v60) =
    sequence [toField backendParams encode Nothing f0 v0, toField backendParams encode Nothing f1 v1, toField backendParams encode Nothing f2 v2, toField backendParams encode Nothing f3 v3, toField backendParams encode Nothing f4 v4, toField backendParams encode Nothing f5 v5, toField backendParams encode Nothing f6 v6, toField backendParams encode Nothing f7 v7, toField backendParams encode Nothing f8 v8, toField backendParams encode Nothing f9 v9, toField backendParams encode Nothing f10 v10, toField backendParams encode Nothing f11 v11, toField backendParams encode Nothing f12 v12, toField backendParams encode Nothing f13 v13, toField backendParams encode Nothing f14 v14, toField backendParams encode Nothing f15 v15, toField backendParams encode Nothing f16 v16, toField backendParams encode Nothing f17 v17, toField backendParams encode Nothing f18 v18, toField backendParams encode Nothing f19 v19, toField backendParams encode Nothing f20 v20, toField backendParams encode Nothing f21 v21, toField backendParams encode Nothing f22 v22, toField backendParams encode Nothing f23 v23, toField backendParams encode Nothing f24 v24, toField backendParams encode Nothing f25 v25, toField backendParams encode Nothing f26 v26, toField backendParams encode Nothing f27 v27, toField backendParams encode Nothing f28 v28, toField backendParams encode Nothing f29 v29, toField backendParams encode Nothing f30 v30, toField backendParams encode Nothing f31 v31, toField backendParams encode Nothing f32 v32, toField backendParams encode Nothing f33 v33, toField backendParams encode Nothing f34 v34, toField backendParams encode Nothing f35 v35, toField backendParams encode Nothing f36 v36, toField backendParams encode Nothing f37 v37, toField backendParams encode Nothing f38 v38, toField backendParams encode Nothing f39 v39, toField backendParams encode Nothing f40 v40, toField backendParams encode Nothing f41 v41, toField backendParams encode Nothing f42 v42, toField backendParams encode Nothing f43 v43, toField backendParams encode Nothing f44 v44, toField backendParams encode Nothing f45 v45, toField backendParams encode Nothing f46 v46, toField backendParams encode Nothing f47 v47, toField backendParams encode Nothing f48 v48, toField backendParams encode Nothing f49 v49, toField backendParams encode Nothing f50 v50, toField backendParams encode Nothing f51 v51, toField backendParams encode Nothing f52 v52, toField backendParams encode Nothing f53 v53, toField backendParams encode Nothing f54 v54, toField backendParams encode Nothing f55 v55, toField backendParams encode Nothing f56 v56, toField backendParams encode Nothing f57 v57, toField backendParams encode Nothing f58 v58, toField backendParams encode Nothing f59 v59, toField backendParams encode Nothing f60 v60]
  toRecord backendParams encode (Just [o0, o1, o2, o3, o4, o5, o6, o7, o8, o9, o10, o11, o12, o13, o14, o15, o16, o17, o18, o19, o20, o21, o22, o23, o24, o25, o26, o27, o28, o29, o30, o31, o32, o33, o34, o35, o36, o37, o38, o39, o40, o41, o42, o43, o44, o45, o46, o47, o48, o49, o50, o51, o52, o53, o54, o55, o56, o57, o58, o59, o60]) [f0, f1, f2, f3, f4, f5, f6, f7, f8, f9, f10, f11, f12, f13, f14, f15, f16, f17, f18, f19, f20, f21, f22, f23, f24, f25, f26, f27, f28, f29, f30, f31, f32, f33, f34, f35, f36, f37, f38, f39, f40, f41, f42, f43, f44, f45, f46, f47, f48, f49, f50, f51, f52, f53, f54, f55, f56, f57, f58, f59, f60] (v0, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48, v49, v50, v51, v52, v53, v54, v55, v56, v57, v58, v59, v60) =
    sequence [toField backendParams encode (Just o0) f0 v0, toField backendParams encode (Just o1) f1 v1, toField backendParams encode (Just o2) f2 v2, toField backendParams encode (Just o3) f3 v3, toField backendParams encode (Just o4) f4 v4, toField backendParams encode (Just o5) f5 v5, toField backendParams encode (Just o6) f6 v6, toField backendParams encode (Just o7) f7 v7, toField backendParams encode (Just o8) f8 v8, toField backendParams encode (Just o9) f9 v9, toField backendParams encode (Just o10) f10 v10, toField backendParams encode (Just o11) f11 v11, toField backendParams encode (Just o12) f12 v12, toField backendParams encode (Just o13) f13 v13, toField backendParams encode (Just o14) f14 v14, toField backendParams encode (Just o15) f15 v15, toField backendParams encode (Just o16) f16 v16, toField backendParams encode (Just o17) f17 v17, toField backendParams encode (Just o18) f18 v18, toField backendParams encode (Just o19) f19 v19, toField backendParams encode (Just o20) f20 v20, toField backendParams encode (Just o21) f21 v21, toField backendParams encode (Just o22) f22 v22, toField backendParams encode (Just o23) f23 v23, toField backendParams encode (Just o24) f24 v24, toField backendParams encode (Just o25) f25 v25, toField backendParams encode (Just o26) f26 v26, toField backendParams encode (Just o27) f27 v27, toField backendParams encode (Just o28) f28 v28, toField backendParams encode (Just o29) f29 v29, toField backendParams encode (Just o30) f30 v30, toField backendParams encode (Just o31) f31 v31, toField backendParams encode (Just o32) f32 v32, toField backendParams encode (Just o33) f33 v33, toField backendParams encode (Just o34) f34 v34, toField backendParams encode (Just o35) f35 v35, toField backendParams encode (Just o36) f36 v36, toField backendParams encode (Just o37) f37 v37, toField backendParams encode (Just o38) f38 v38, toField backendParams encode (Just o39) f39 v39, toField backendParams encode (Just o40) f40 v40, toField backendParams encode (Just o41) f41 v41, toField backendParams encode (Just o42) f42 v42, toField backendParams encode (Just o43) f43 v43, toField backendParams encode (Just o44) f44 v44, toField backendParams encode (Just o45) f45 v45, toField backendParams encode (Just o46) f46 v46, toField backendParams encode (Just o47) f47 v47, toField backendParams encode (Just o48) f48 v48, toField backendParams encode (Just o49) f49 v49, toField backendParams encode (Just o50) f50 v50, toField backendParams encode (Just o51) f51 v51, toField backendParams encode (Just o52) f52 v52, toField backendParams encode (Just o53) f53 v53, toField backendParams encode (Just o54) f54 v54, toField backendParams encode (Just o55) f55 v55, toField backendParams encode (Just o56) f56 v56, toField backendParams encode (Just o57) f57 v57, toField backendParams encode (Just o58) f58 v58, toField backendParams encode (Just o59) f59 v59, toField backendParams encode (Just o60) f60 v60]
  toRecord _ _ (Just os) _ _ =
    fail $ "the number of OIDs must be 61, actually " <> show (length os)
  toRecord _ _ _ fs _ =
    fail $ "the number of format codes must be 61, actually " <> show (length fs)

-- 62-tuple
instance (ToField i0, ToField i1, ToField i2, ToField i3, ToField i4, ToField i5, ToField i6, ToField i7, ToField i8, ToField i9, ToField i10, ToField i11, ToField i12, ToField i13, ToField i14, ToField i15, ToField i16, ToField i17, ToField i18, ToField i19, ToField i20, ToField i21, ToField i22, ToField i23, ToField i24, ToField i25, ToField i26, ToField i27, ToField i28, ToField i29, ToField i30, ToField i31, ToField i32, ToField i33, ToField i34, ToField i35, ToField i36, ToField i37, ToField i38, ToField i39, ToField i40, ToField i41, ToField i42, ToField i43, ToField i44, ToField i45, ToField i46, ToField i47, ToField i48, ToField i49, ToField i50, ToField i51, ToField i52, ToField i53, ToField i54, ToField i55, ToField i56, ToField i57, ToField i58, ToField i59, ToField i60, ToField i61) => ToRecord (i0, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14, i15, i16, i17, i18, i19, i20, i21, i22, i23, i24, i25, i26, i27, i28, i29, i30, i31, i32, i33, i34, i35, i36, i37, i38, i39, i40, i41, i42, i43, i44, i45, i46, i47, i48, i49, i50, i51, i52, i53, i54, i55, i56, i57, i58, i59, i60, i61) where
  toRecord backendParams encode Nothing [f0, f1, f2, f3, f4, f5, f6, f7, f8, f9, f10, f11, f12, f13, f14, f15, f16, f17, f18, f19, f20, f21, f22, f23, f24, f25, f26, f27, f28, f29, f30, f31, f32, f33, f34, f35, f36, f37, f38, f39, f40, f41, f42, f43, f44, f45, f46, f47, f48, f49, f50, f51, f52, f53, f54, f55, f56, f57, f58, f59, f60, f61] (v0, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48, v49, v50, v51, v52, v53, v54, v55, v56, v57, v58, v59, v60, v61) =
    sequence [toField backendParams encode Nothing f0 v0, toField backendParams encode Nothing f1 v1, toField backendParams encode Nothing f2 v2, toField backendParams encode Nothing f3 v3, toField backendParams encode Nothing f4 v4, toField backendParams encode Nothing f5 v5, toField backendParams encode Nothing f6 v6, toField backendParams encode Nothing f7 v7, toField backendParams encode Nothing f8 v8, toField backendParams encode Nothing f9 v9, toField backendParams encode Nothing f10 v10, toField backendParams encode Nothing f11 v11, toField backendParams encode Nothing f12 v12, toField backendParams encode Nothing f13 v13, toField backendParams encode Nothing f14 v14, toField backendParams encode Nothing f15 v15, toField backendParams encode Nothing f16 v16, toField backendParams encode Nothing f17 v17, toField backendParams encode Nothing f18 v18, toField backendParams encode Nothing f19 v19, toField backendParams encode Nothing f20 v20, toField backendParams encode Nothing f21 v21, toField backendParams encode Nothing f22 v22, toField backendParams encode Nothing f23 v23, toField backendParams encode Nothing f24 v24, toField backendParams encode Nothing f25 v25, toField backendParams encode Nothing f26 v26, toField backendParams encode Nothing f27 v27, toField backendParams encode Nothing f28 v28, toField backendParams encode Nothing f29 v29, toField backendParams encode Nothing f30 v30, toField backendParams encode Nothing f31 v31, toField backendParams encode Nothing f32 v32, toField backendParams encode Nothing f33 v33, toField backendParams encode Nothing f34 v34, toField backendParams encode Nothing f35 v35, toField backendParams encode Nothing f36 v36, toField backendParams encode Nothing f37 v37, toField backendParams encode Nothing f38 v38, toField backendParams encode Nothing f39 v39, toField backendParams encode Nothing f40 v40, toField backendParams encode Nothing f41 v41, toField backendParams encode Nothing f42 v42, toField backendParams encode Nothing f43 v43, toField backendParams encode Nothing f44 v44, toField backendParams encode Nothing f45 v45, toField backendParams encode Nothing f46 v46, toField backendParams encode Nothing f47 v47, toField backendParams encode Nothing f48 v48, toField backendParams encode Nothing f49 v49, toField backendParams encode Nothing f50 v50, toField backendParams encode Nothing f51 v51, toField backendParams encode Nothing f52 v52, toField backendParams encode Nothing f53 v53, toField backendParams encode Nothing f54 v54, toField backendParams encode Nothing f55 v55, toField backendParams encode Nothing f56 v56, toField backendParams encode Nothing f57 v57, toField backendParams encode Nothing f58 v58, toField backendParams encode Nothing f59 v59, toField backendParams encode Nothing f60 v60, toField backendParams encode Nothing f61 v61]
  toRecord backendParams encode (Just [o0, o1, o2, o3, o4, o5, o6, o7, o8, o9, o10, o11, o12, o13, o14, o15, o16, o17, o18, o19, o20, o21, o22, o23, o24, o25, o26, o27, o28, o29, o30, o31, o32, o33, o34, o35, o36, o37, o38, o39, o40, o41, o42, o43, o44, o45, o46, o47, o48, o49, o50, o51, o52, o53, o54, o55, o56, o57, o58, o59, o60, o61]) [f0, f1, f2, f3, f4, f5, f6, f7, f8, f9, f10, f11, f12, f13, f14, f15, f16, f17, f18, f19, f20, f21, f22, f23, f24, f25, f26, f27, f28, f29, f30, f31, f32, f33, f34, f35, f36, f37, f38, f39, f40, f41, f42, f43, f44, f45, f46, f47, f48, f49, f50, f51, f52, f53, f54, f55, f56, f57, f58, f59, f60, f61] (v0, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48, v49, v50, v51, v52, v53, v54, v55, v56, v57, v58, v59, v60, v61) =
    sequence [toField backendParams encode (Just o0) f0 v0, toField backendParams encode (Just o1) f1 v1, toField backendParams encode (Just o2) f2 v2, toField backendParams encode (Just o3) f3 v3, toField backendParams encode (Just o4) f4 v4, toField backendParams encode (Just o5) f5 v5, toField backendParams encode (Just o6) f6 v6, toField backendParams encode (Just o7) f7 v7, toField backendParams encode (Just o8) f8 v8, toField backendParams encode (Just o9) f9 v9, toField backendParams encode (Just o10) f10 v10, toField backendParams encode (Just o11) f11 v11, toField backendParams encode (Just o12) f12 v12, toField backendParams encode (Just o13) f13 v13, toField backendParams encode (Just o14) f14 v14, toField backendParams encode (Just o15) f15 v15, toField backendParams encode (Just o16) f16 v16, toField backendParams encode (Just o17) f17 v17, toField backendParams encode (Just o18) f18 v18, toField backendParams encode (Just o19) f19 v19, toField backendParams encode (Just o20) f20 v20, toField backendParams encode (Just o21) f21 v21, toField backendParams encode (Just o22) f22 v22, toField backendParams encode (Just o23) f23 v23, toField backendParams encode (Just o24) f24 v24, toField backendParams encode (Just o25) f25 v25, toField backendParams encode (Just o26) f26 v26, toField backendParams encode (Just o27) f27 v27, toField backendParams encode (Just o28) f28 v28, toField backendParams encode (Just o29) f29 v29, toField backendParams encode (Just o30) f30 v30, toField backendParams encode (Just o31) f31 v31, toField backendParams encode (Just o32) f32 v32, toField backendParams encode (Just o33) f33 v33, toField backendParams encode (Just o34) f34 v34, toField backendParams encode (Just o35) f35 v35, toField backendParams encode (Just o36) f36 v36, toField backendParams encode (Just o37) f37 v37, toField backendParams encode (Just o38) f38 v38, toField backendParams encode (Just o39) f39 v39, toField backendParams encode (Just o40) f40 v40, toField backendParams encode (Just o41) f41 v41, toField backendParams encode (Just o42) f42 v42, toField backendParams encode (Just o43) f43 v43, toField backendParams encode (Just o44) f44 v44, toField backendParams encode (Just o45) f45 v45, toField backendParams encode (Just o46) f46 v46, toField backendParams encode (Just o47) f47 v47, toField backendParams encode (Just o48) f48 v48, toField backendParams encode (Just o49) f49 v49, toField backendParams encode (Just o50) f50 v50, toField backendParams encode (Just o51) f51 v51, toField backendParams encode (Just o52) f52 v52, toField backendParams encode (Just o53) f53 v53, toField backendParams encode (Just o54) f54 v54, toField backendParams encode (Just o55) f55 v55, toField backendParams encode (Just o56) f56 v56, toField backendParams encode (Just o57) f57 v57, toField backendParams encode (Just o58) f58 v58, toField backendParams encode (Just o59) f59 v59, toField backendParams encode (Just o60) f60 v60, toField backendParams encode (Just o61) f61 v61]
  toRecord _ _ (Just os) _ _ =
    fail $ "the number of OIDs must be 62, actually " <> show (length os)
  toRecord _ _ _ fs _ =
    fail $ "the number of format codes must be 62, actually " <> show (length fs)

-- list
instance
  {-# OVERLAPPING #-}
  ToField a
  => ToRecord [a] where
  toRecord backendParams encode Nothing fs vs =
    sequence $ uncurry (toField backendParams encode Nothing) <$> zip fs vs
  toRecord backendParams encode (Just os) fs vs =
    assert (length os == length fs && length fs == length vs) $ sequence $ uncurry3 (toField backendParams encode) <$> zip3 (Just <$> os) fs vs

-- generics
instance GToRecord f => GToRecord (Generics.M1 i t f) where
  gToRecord backendParams encode os fs (Generics.M1 r) = gToRecord backendParams encode os fs r

instance ToField c => GToRecord (Generics.K1 i c) where
  gToRecord backendParams encode (Just (o:os)) (f:fs) (Generics.K1 v) = (, Just os, fs) . (:[]) <$> toField backendParams encode (Just o) f v
  gToRecord backendParams encode Nothing (f:fs) (Generics.K1 v) = (, Nothing, fs) . (:[]) <$> toField backendParams encode Nothing f v
  gToRecord _ _ (Just []) _ _ = fail "there are too few OIDs"
  gToRecord _ _ _ [] _ = fail "there are too few format codes"

instance (GToRecord f, GToRecord g) => GToRecord (f Generics.:*: g) where
  gToRecord backendParams encode os fs (f Generics.:*: g) = do
    (record, os', fs') <- gToRecord backendParams encode os fs f
    (record', os'', fs'') <- gToRecord backendParams encode os' fs' g
    pure (record ++ record', os'', fs'')

uncurry3 :: (a -> b -> c -> d) -> (a, b, c) -> d
uncurry3 f (a, b, c) = f a b c