{- This file was auto-generated from tensorflow/core/protobuf/rewriter_config.proto by the proto-lens-protoc program. -}
{-# LANGUAGE ScopedTypeVariables, DataKinds, TypeFamilies,
  UndecidableInstances, MultiParamTypeClasses, FlexibleContexts,
  FlexibleInstances, PatternSynonyms, MagicHash, NoImplicitPrelude
  #-}
{-# OPTIONS_GHC -fno-warn-unused-imports#-}
module Proto.Tensorflow.Core.Protobuf.RewriterConfig where
import qualified Data.ProtoLens.Reexport.Prelude as Prelude
import qualified Data.ProtoLens.Reexport.Data.Int as Data.Int
import qualified Data.ProtoLens.Reexport.Data.Word as Data.Word
import qualified Data.ProtoLens.Reexport.Data.ProtoLens
       as Data.ProtoLens
import qualified
       Data.ProtoLens.Reexport.Data.ProtoLens.Message.Enum
       as Data.ProtoLens.Message.Enum
import qualified Data.ProtoLens.Reexport.Lens.Family2
       as Lens.Family2
import qualified Data.ProtoLens.Reexport.Lens.Family2.Unchecked
       as Lens.Family2.Unchecked
import qualified Data.ProtoLens.Reexport.Data.Default.Class
       as Data.Default.Class
import qualified Data.ProtoLens.Reexport.Data.Text as Data.Text
import qualified Data.ProtoLens.Reexport.Data.Map as Data.Map
import qualified Data.ProtoLens.Reexport.Data.ByteString
       as Data.ByteString
import qualified Data.ProtoLens.Reexport.Lens.Labels as Lens.Labels
import qualified Proto.Tensorflow.Core.Framework.AttrValue

data AutoParallelOptions = AutoParallelOptions{_AutoParallelOptions'enable
                                               :: !Prelude.Bool,
                                               _AutoParallelOptions'numReplicas :: !Data.Int.Int32}
                         deriving (Prelude.Show, Prelude.Eq, Prelude.Ord)

instance (a ~ Prelude.Bool, b ~ Prelude.Bool, Prelude.Functor f) =>
         Lens.Labels.HasLens "enable" f AutoParallelOptions
           AutoParallelOptions
           a
           b
         where
        lensOf _
          = (Prelude..)
              (Lens.Family2.Unchecked.lens _AutoParallelOptions'enable
                 (\ x__ y__ -> x__{_AutoParallelOptions'enable = y__}))
              Prelude.id

instance (a ~ Data.Int.Int32, b ~ Data.Int.Int32,
          Prelude.Functor f) =>
         Lens.Labels.HasLens "numReplicas" f AutoParallelOptions
           AutoParallelOptions
           a
           b
         where
        lensOf _
          = (Prelude..)
              (Lens.Family2.Unchecked.lens _AutoParallelOptions'numReplicas
                 (\ x__ y__ -> x__{_AutoParallelOptions'numReplicas = y__}))
              Prelude.id

instance Data.Default.Class.Default AutoParallelOptions where
        def
          = AutoParallelOptions{_AutoParallelOptions'enable =
                                  Data.ProtoLens.fieldDefault,
                                _AutoParallelOptions'numReplicas = Data.ProtoLens.fieldDefault}

instance Data.ProtoLens.Message AutoParallelOptions where
        descriptor
          = let enable__field_descriptor
                  = Data.ProtoLens.FieldDescriptor "enable"
                      (Data.ProtoLens.BoolField ::
                         Data.ProtoLens.FieldTypeDescriptor Prelude.Bool)
                      (Data.ProtoLens.PlainField Data.ProtoLens.Optional enable)
                      :: Data.ProtoLens.FieldDescriptor AutoParallelOptions
                numReplicas__field_descriptor
                  = Data.ProtoLens.FieldDescriptor "num_replicas"
                      (Data.ProtoLens.Int32Field ::
                         Data.ProtoLens.FieldTypeDescriptor Data.Int.Int32)
                      (Data.ProtoLens.PlainField Data.ProtoLens.Optional numReplicas)
                      :: Data.ProtoLens.FieldDescriptor AutoParallelOptions
              in
              Data.ProtoLens.MessageDescriptor
                (Data.Text.pack "tensorflow.AutoParallelOptions")
                (Data.Map.fromList
                   [(Data.ProtoLens.Tag 1, enable__field_descriptor),
                    (Data.ProtoLens.Tag 2, numReplicas__field_descriptor)])
                (Data.Map.fromList
                   [("enable", enable__field_descriptor),
                    ("num_replicas", numReplicas__field_descriptor)])

data RewriterConfig = RewriterConfig{_RewriterConfig'layoutOptimizer
                                     :: !RewriterConfig'Toggle,
                                     _RewriterConfig'constantFolding :: !RewriterConfig'Toggle,
                                     _RewriterConfig'shapeOptimization :: !RewriterConfig'Toggle,
                                     _RewriterConfig'remapping :: !RewriterConfig'Toggle,
                                     _RewriterConfig'arithmeticOptimization ::
                                     !RewriterConfig'Toggle,
                                     _RewriterConfig'dependencyOptimization ::
                                     !RewriterConfig'Toggle,
                                     _RewriterConfig'loopOptimization :: !RewriterConfig'Toggle,
                                     _RewriterConfig'functionOptimization :: !RewriterConfig'Toggle,
                                     _RewriterConfig'debugStripper :: !RewriterConfig'Toggle,
                                     _RewriterConfig'disableModelPruning :: !Prelude.Bool,
                                     _RewriterConfig'scopedAllocatorOptimization ::
                                     !RewriterConfig'Toggle,
                                     _RewriterConfig'metaOptimizerIterations ::
                                     !RewriterConfig'NumIterationsType,
                                     _RewriterConfig'memoryOptimization ::
                                     !RewriterConfig'MemOptType,
                                     _RewriterConfig'memoryOptimizerTargetNodeNameScope ::
                                     !Data.Text.Text,
                                     _RewriterConfig'autoParallel ::
                                     !(Prelude.Maybe AutoParallelOptions),
                                     _RewriterConfig'scopedAllocatorOpts ::
                                     !(Prelude.Maybe ScopedAllocatorOptions),
                                     _RewriterConfig'optimizers :: ![Data.Text.Text],
                                     _RewriterConfig'customOptimizers ::
                                     ![RewriterConfig'CustomGraphOptimizer]}
                    deriving (Prelude.Show, Prelude.Eq, Prelude.Ord)

instance (a ~ RewriterConfig'Toggle, b ~ RewriterConfig'Toggle,
          Prelude.Functor f) =>
         Lens.Labels.HasLens "layoutOptimizer" f RewriterConfig
           RewriterConfig
           a
           b
         where
        lensOf _
          = (Prelude..)
              (Lens.Family2.Unchecked.lens _RewriterConfig'layoutOptimizer
                 (\ x__ y__ -> x__{_RewriterConfig'layoutOptimizer = y__}))
              Prelude.id

instance (a ~ RewriterConfig'Toggle, b ~ RewriterConfig'Toggle,
          Prelude.Functor f) =>
         Lens.Labels.HasLens "constantFolding" f RewriterConfig
           RewriterConfig
           a
           b
         where
        lensOf _
          = (Prelude..)
              (Lens.Family2.Unchecked.lens _RewriterConfig'constantFolding
                 (\ x__ y__ -> x__{_RewriterConfig'constantFolding = y__}))
              Prelude.id

instance (a ~ RewriterConfig'Toggle, b ~ RewriterConfig'Toggle,
          Prelude.Functor f) =>
         Lens.Labels.HasLens "shapeOptimization" f RewriterConfig
           RewriterConfig
           a
           b
         where
        lensOf _
          = (Prelude..)
              (Lens.Family2.Unchecked.lens _RewriterConfig'shapeOptimization
                 (\ x__ y__ -> x__{_RewriterConfig'shapeOptimization = y__}))
              Prelude.id

instance (a ~ RewriterConfig'Toggle, b ~ RewriterConfig'Toggle,
          Prelude.Functor f) =>
         Lens.Labels.HasLens "remapping" f RewriterConfig RewriterConfig a b
         where
        lensOf _
          = (Prelude..)
              (Lens.Family2.Unchecked.lens _RewriterConfig'remapping
                 (\ x__ y__ -> x__{_RewriterConfig'remapping = y__}))
              Prelude.id

instance (a ~ RewriterConfig'Toggle, b ~ RewriterConfig'Toggle,
          Prelude.Functor f) =>
         Lens.Labels.HasLens "arithmeticOptimization" f RewriterConfig
           RewriterConfig
           a
           b
         where
        lensOf _
          = (Prelude..)
              (Lens.Family2.Unchecked.lens _RewriterConfig'arithmeticOptimization
                 (\ x__ y__ -> x__{_RewriterConfig'arithmeticOptimization = y__}))
              Prelude.id

instance (a ~ RewriterConfig'Toggle, b ~ RewriterConfig'Toggle,
          Prelude.Functor f) =>
         Lens.Labels.HasLens "dependencyOptimization" f RewriterConfig
           RewriterConfig
           a
           b
         where
        lensOf _
          = (Prelude..)
              (Lens.Family2.Unchecked.lens _RewriterConfig'dependencyOptimization
                 (\ x__ y__ -> x__{_RewriterConfig'dependencyOptimization = y__}))
              Prelude.id

instance (a ~ RewriterConfig'Toggle, b ~ RewriterConfig'Toggle,
          Prelude.Functor f) =>
         Lens.Labels.HasLens "loopOptimization" f RewriterConfig
           RewriterConfig
           a
           b
         where
        lensOf _
          = (Prelude..)
              (Lens.Family2.Unchecked.lens _RewriterConfig'loopOptimization
                 (\ x__ y__ -> x__{_RewriterConfig'loopOptimization = y__}))
              Prelude.id

instance (a ~ RewriterConfig'Toggle, b ~ RewriterConfig'Toggle,
          Prelude.Functor f) =>
         Lens.Labels.HasLens "functionOptimization" f RewriterConfig
           RewriterConfig
           a
           b
         where
        lensOf _
          = (Prelude..)
              (Lens.Family2.Unchecked.lens _RewriterConfig'functionOptimization
                 (\ x__ y__ -> x__{_RewriterConfig'functionOptimization = y__}))
              Prelude.id

instance (a ~ RewriterConfig'Toggle, b ~ RewriterConfig'Toggle,
          Prelude.Functor f) =>
         Lens.Labels.HasLens "debugStripper" f RewriterConfig RewriterConfig
           a
           b
         where
        lensOf _
          = (Prelude..)
              (Lens.Family2.Unchecked.lens _RewriterConfig'debugStripper
                 (\ x__ y__ -> x__{_RewriterConfig'debugStripper = y__}))
              Prelude.id

instance (a ~ Prelude.Bool, b ~ Prelude.Bool, Prelude.Functor f) =>
         Lens.Labels.HasLens "disableModelPruning" f RewriterConfig
           RewriterConfig
           a
           b
         where
        lensOf _
          = (Prelude..)
              (Lens.Family2.Unchecked.lens _RewriterConfig'disableModelPruning
                 (\ x__ y__ -> x__{_RewriterConfig'disableModelPruning = y__}))
              Prelude.id

instance (a ~ RewriterConfig'Toggle, b ~ RewriterConfig'Toggle,
          Prelude.Functor f) =>
         Lens.Labels.HasLens "scopedAllocatorOptimization" f RewriterConfig
           RewriterConfig
           a
           b
         where
        lensOf _
          = (Prelude..)
              (Lens.Family2.Unchecked.lens
                 _RewriterConfig'scopedAllocatorOptimization
                 (\ x__ y__ ->
                    x__{_RewriterConfig'scopedAllocatorOptimization = y__}))
              Prelude.id

instance (a ~ RewriterConfig'NumIterationsType,
          b ~ RewriterConfig'NumIterationsType, Prelude.Functor f) =>
         Lens.Labels.HasLens "metaOptimizerIterations" f RewriterConfig
           RewriterConfig
           a
           b
         where
        lensOf _
          = (Prelude..)
              (Lens.Family2.Unchecked.lens
                 _RewriterConfig'metaOptimizerIterations
                 (\ x__ y__ -> x__{_RewriterConfig'metaOptimizerIterations = y__}))
              Prelude.id

instance (a ~ RewriterConfig'MemOptType,
          b ~ RewriterConfig'MemOptType, Prelude.Functor f) =>
         Lens.Labels.HasLens "memoryOptimization" f RewriterConfig
           RewriterConfig
           a
           b
         where
        lensOf _
          = (Prelude..)
              (Lens.Family2.Unchecked.lens _RewriterConfig'memoryOptimization
                 (\ x__ y__ -> x__{_RewriterConfig'memoryOptimization = y__}))
              Prelude.id

instance (a ~ Data.Text.Text, b ~ Data.Text.Text,
          Prelude.Functor f) =>
         Lens.Labels.HasLens "memoryOptimizerTargetNodeNameScope" f
           RewriterConfig
           RewriterConfig
           a
           b
         where
        lensOf _
          = (Prelude..)
              (Lens.Family2.Unchecked.lens
                 _RewriterConfig'memoryOptimizerTargetNodeNameScope
                 (\ x__ y__ ->
                    x__{_RewriterConfig'memoryOptimizerTargetNodeNameScope = y__}))
              Prelude.id

instance (a ~ AutoParallelOptions, b ~ AutoParallelOptions,
          Prelude.Functor f) =>
         Lens.Labels.HasLens "autoParallel" f RewriterConfig RewriterConfig
           a
           b
         where
        lensOf _
          = (Prelude..)
              (Lens.Family2.Unchecked.lens _RewriterConfig'autoParallel
                 (\ x__ y__ -> x__{_RewriterConfig'autoParallel = y__}))
              (Data.ProtoLens.maybeLens Data.Default.Class.def)

instance (a ~ Prelude.Maybe AutoParallelOptions,
          b ~ Prelude.Maybe AutoParallelOptions, Prelude.Functor f) =>
         Lens.Labels.HasLens "maybe'autoParallel" f RewriterConfig
           RewriterConfig
           a
           b
         where
        lensOf _
          = (Prelude..)
              (Lens.Family2.Unchecked.lens _RewriterConfig'autoParallel
                 (\ x__ y__ -> x__{_RewriterConfig'autoParallel = y__}))
              Prelude.id

instance (a ~ ScopedAllocatorOptions, b ~ ScopedAllocatorOptions,
          Prelude.Functor f) =>
         Lens.Labels.HasLens "scopedAllocatorOpts" f RewriterConfig
           RewriterConfig
           a
           b
         where
        lensOf _
          = (Prelude..)
              (Lens.Family2.Unchecked.lens _RewriterConfig'scopedAllocatorOpts
                 (\ x__ y__ -> x__{_RewriterConfig'scopedAllocatorOpts = y__}))
              (Data.ProtoLens.maybeLens Data.Default.Class.def)

instance (a ~ Prelude.Maybe ScopedAllocatorOptions,
          b ~ Prelude.Maybe ScopedAllocatorOptions, Prelude.Functor f) =>
         Lens.Labels.HasLens "maybe'scopedAllocatorOpts" f RewriterConfig
           RewriterConfig
           a
           b
         where
        lensOf _
          = (Prelude..)
              (Lens.Family2.Unchecked.lens _RewriterConfig'scopedAllocatorOpts
                 (\ x__ y__ -> x__{_RewriterConfig'scopedAllocatorOpts = y__}))
              Prelude.id

instance (a ~ [Data.Text.Text], b ~ [Data.Text.Text],
          Prelude.Functor f) =>
         Lens.Labels.HasLens "optimizers" f RewriterConfig RewriterConfig a
           b
         where
        lensOf _
          = (Prelude..)
              (Lens.Family2.Unchecked.lens _RewriterConfig'optimizers
                 (\ x__ y__ -> x__{_RewriterConfig'optimizers = y__}))
              Prelude.id

instance (a ~ [RewriterConfig'CustomGraphOptimizer],
          b ~ [RewriterConfig'CustomGraphOptimizer], Prelude.Functor f) =>
         Lens.Labels.HasLens "customOptimizers" f RewriterConfig
           RewriterConfig
           a
           b
         where
        lensOf _
          = (Prelude..)
              (Lens.Family2.Unchecked.lens _RewriterConfig'customOptimizers
                 (\ x__ y__ -> x__{_RewriterConfig'customOptimizers = y__}))
              Prelude.id

instance Data.Default.Class.Default RewriterConfig where
        def
          = RewriterConfig{_RewriterConfig'layoutOptimizer =
                             Data.Default.Class.def,
                           _RewriterConfig'constantFolding = Data.Default.Class.def,
                           _RewriterConfig'shapeOptimization = Data.Default.Class.def,
                           _RewriterConfig'remapping = Data.Default.Class.def,
                           _RewriterConfig'arithmeticOptimization = Data.Default.Class.def,
                           _RewriterConfig'dependencyOptimization = Data.Default.Class.def,
                           _RewriterConfig'loopOptimization = Data.Default.Class.def,
                           _RewriterConfig'functionOptimization = Data.Default.Class.def,
                           _RewriterConfig'debugStripper = Data.Default.Class.def,
                           _RewriterConfig'disableModelPruning = Data.ProtoLens.fieldDefault,
                           _RewriterConfig'scopedAllocatorOptimization =
                             Data.Default.Class.def,
                           _RewriterConfig'metaOptimizerIterations = Data.Default.Class.def,
                           _RewriterConfig'memoryOptimization = Data.Default.Class.def,
                           _RewriterConfig'memoryOptimizerTargetNodeNameScope =
                             Data.ProtoLens.fieldDefault,
                           _RewriterConfig'autoParallel = Prelude.Nothing,
                           _RewriterConfig'scopedAllocatorOpts = Prelude.Nothing,
                           _RewriterConfig'optimizers = [],
                           _RewriterConfig'customOptimizers = []}

instance Data.ProtoLens.Message RewriterConfig where
        descriptor
          = let layoutOptimizer__field_descriptor
                  = Data.ProtoLens.FieldDescriptor "layout_optimizer"
                      (Data.ProtoLens.EnumField ::
                         Data.ProtoLens.FieldTypeDescriptor RewriterConfig'Toggle)
                      (Data.ProtoLens.PlainField Data.ProtoLens.Optional layoutOptimizer)
                      :: Data.ProtoLens.FieldDescriptor RewriterConfig
                constantFolding__field_descriptor
                  = Data.ProtoLens.FieldDescriptor "constant_folding"
                      (Data.ProtoLens.EnumField ::
                         Data.ProtoLens.FieldTypeDescriptor RewriterConfig'Toggle)
                      (Data.ProtoLens.PlainField Data.ProtoLens.Optional constantFolding)
                      :: Data.ProtoLens.FieldDescriptor RewriterConfig
                shapeOptimization__field_descriptor
                  = Data.ProtoLens.FieldDescriptor "shape_optimization"
                      (Data.ProtoLens.EnumField ::
                         Data.ProtoLens.FieldTypeDescriptor RewriterConfig'Toggle)
                      (Data.ProtoLens.PlainField Data.ProtoLens.Optional
                         shapeOptimization)
                      :: Data.ProtoLens.FieldDescriptor RewriterConfig
                remapping__field_descriptor
                  = Data.ProtoLens.FieldDescriptor "remapping"
                      (Data.ProtoLens.EnumField ::
                         Data.ProtoLens.FieldTypeDescriptor RewriterConfig'Toggle)
                      (Data.ProtoLens.PlainField Data.ProtoLens.Optional remapping)
                      :: Data.ProtoLens.FieldDescriptor RewriterConfig
                arithmeticOptimization__field_descriptor
                  = Data.ProtoLens.FieldDescriptor "arithmetic_optimization"
                      (Data.ProtoLens.EnumField ::
                         Data.ProtoLens.FieldTypeDescriptor RewriterConfig'Toggle)
                      (Data.ProtoLens.PlainField Data.ProtoLens.Optional
                         arithmeticOptimization)
                      :: Data.ProtoLens.FieldDescriptor RewriterConfig
                dependencyOptimization__field_descriptor
                  = Data.ProtoLens.FieldDescriptor "dependency_optimization"
                      (Data.ProtoLens.EnumField ::
                         Data.ProtoLens.FieldTypeDescriptor RewriterConfig'Toggle)
                      (Data.ProtoLens.PlainField Data.ProtoLens.Optional
                         dependencyOptimization)
                      :: Data.ProtoLens.FieldDescriptor RewriterConfig
                loopOptimization__field_descriptor
                  = Data.ProtoLens.FieldDescriptor "loop_optimization"
                      (Data.ProtoLens.EnumField ::
                         Data.ProtoLens.FieldTypeDescriptor RewriterConfig'Toggle)
                      (Data.ProtoLens.PlainField Data.ProtoLens.Optional
                         loopOptimization)
                      :: Data.ProtoLens.FieldDescriptor RewriterConfig
                functionOptimization__field_descriptor
                  = Data.ProtoLens.FieldDescriptor "function_optimization"
                      (Data.ProtoLens.EnumField ::
                         Data.ProtoLens.FieldTypeDescriptor RewriterConfig'Toggle)
                      (Data.ProtoLens.PlainField Data.ProtoLens.Optional
                         functionOptimization)
                      :: Data.ProtoLens.FieldDescriptor RewriterConfig
                debugStripper__field_descriptor
                  = Data.ProtoLens.FieldDescriptor "debug_stripper"
                      (Data.ProtoLens.EnumField ::
                         Data.ProtoLens.FieldTypeDescriptor RewriterConfig'Toggle)
                      (Data.ProtoLens.PlainField Data.ProtoLens.Optional debugStripper)
                      :: Data.ProtoLens.FieldDescriptor RewriterConfig
                disableModelPruning__field_descriptor
                  = Data.ProtoLens.FieldDescriptor "disable_model_pruning"
                      (Data.ProtoLens.BoolField ::
                         Data.ProtoLens.FieldTypeDescriptor Prelude.Bool)
                      (Data.ProtoLens.PlainField Data.ProtoLens.Optional
                         disableModelPruning)
                      :: Data.ProtoLens.FieldDescriptor RewriterConfig
                scopedAllocatorOptimization__field_descriptor
                  = Data.ProtoLens.FieldDescriptor "scoped_allocator_optimization"
                      (Data.ProtoLens.EnumField ::
                         Data.ProtoLens.FieldTypeDescriptor RewriterConfig'Toggle)
                      (Data.ProtoLens.PlainField Data.ProtoLens.Optional
                         scopedAllocatorOptimization)
                      :: Data.ProtoLens.FieldDescriptor RewriterConfig
                metaOptimizerIterations__field_descriptor
                  = Data.ProtoLens.FieldDescriptor "meta_optimizer_iterations"
                      (Data.ProtoLens.EnumField ::
                         Data.ProtoLens.FieldTypeDescriptor
                           RewriterConfig'NumIterationsType)
                      (Data.ProtoLens.PlainField Data.ProtoLens.Optional
                         metaOptimizerIterations)
                      :: Data.ProtoLens.FieldDescriptor RewriterConfig
                memoryOptimization__field_descriptor
                  = Data.ProtoLens.FieldDescriptor "memory_optimization"
                      (Data.ProtoLens.EnumField ::
                         Data.ProtoLens.FieldTypeDescriptor RewriterConfig'MemOptType)
                      (Data.ProtoLens.PlainField Data.ProtoLens.Optional
                         memoryOptimization)
                      :: Data.ProtoLens.FieldDescriptor RewriterConfig
                memoryOptimizerTargetNodeNameScope__field_descriptor
                  = Data.ProtoLens.FieldDescriptor
                      "memory_optimizer_target_node_name_scope"
                      (Data.ProtoLens.StringField ::
                         Data.ProtoLens.FieldTypeDescriptor Data.Text.Text)
                      (Data.ProtoLens.PlainField Data.ProtoLens.Optional
                         memoryOptimizerTargetNodeNameScope)
                      :: Data.ProtoLens.FieldDescriptor RewriterConfig
                autoParallel__field_descriptor
                  = Data.ProtoLens.FieldDescriptor "auto_parallel"
                      (Data.ProtoLens.MessageField ::
                         Data.ProtoLens.FieldTypeDescriptor AutoParallelOptions)
                      (Data.ProtoLens.OptionalField maybe'autoParallel)
                      :: Data.ProtoLens.FieldDescriptor RewriterConfig
                scopedAllocatorOpts__field_descriptor
                  = Data.ProtoLens.FieldDescriptor "scoped_allocator_opts"
                      (Data.ProtoLens.MessageField ::
                         Data.ProtoLens.FieldTypeDescriptor ScopedAllocatorOptions)
                      (Data.ProtoLens.OptionalField maybe'scopedAllocatorOpts)
                      :: Data.ProtoLens.FieldDescriptor RewriterConfig
                optimizers__field_descriptor
                  = Data.ProtoLens.FieldDescriptor "optimizers"
                      (Data.ProtoLens.StringField ::
                         Data.ProtoLens.FieldTypeDescriptor Data.Text.Text)
                      (Data.ProtoLens.RepeatedField Data.ProtoLens.Unpacked optimizers)
                      :: Data.ProtoLens.FieldDescriptor RewriterConfig
                customOptimizers__field_descriptor
                  = Data.ProtoLens.FieldDescriptor "custom_optimizers"
                      (Data.ProtoLens.MessageField ::
                         Data.ProtoLens.FieldTypeDescriptor
                           RewriterConfig'CustomGraphOptimizer)
                      (Data.ProtoLens.RepeatedField Data.ProtoLens.Unpacked
                         customOptimizers)
                      :: Data.ProtoLens.FieldDescriptor RewriterConfig
              in
              Data.ProtoLens.MessageDescriptor
                (Data.Text.pack "tensorflow.RewriterConfig")
                (Data.Map.fromList
                   [(Data.ProtoLens.Tag 1, layoutOptimizer__field_descriptor),
                    (Data.ProtoLens.Tag 3, constantFolding__field_descriptor),
                    (Data.ProtoLens.Tag 13, shapeOptimization__field_descriptor),
                    (Data.ProtoLens.Tag 14, remapping__field_descriptor),
                    (Data.ProtoLens.Tag 7, arithmeticOptimization__field_descriptor),
                    (Data.ProtoLens.Tag 8, dependencyOptimization__field_descriptor),
                    (Data.ProtoLens.Tag 9, loopOptimization__field_descriptor),
                    (Data.ProtoLens.Tag 10, functionOptimization__field_descriptor),
                    (Data.ProtoLens.Tag 11, debugStripper__field_descriptor),
                    (Data.ProtoLens.Tag 2, disableModelPruning__field_descriptor),
                    (Data.ProtoLens.Tag 15,
                     scopedAllocatorOptimization__field_descriptor),
                    (Data.ProtoLens.Tag 12, metaOptimizerIterations__field_descriptor),
                    (Data.ProtoLens.Tag 4, memoryOptimization__field_descriptor),
                    (Data.ProtoLens.Tag 6,
                     memoryOptimizerTargetNodeNameScope__field_descriptor),
                    (Data.ProtoLens.Tag 5, autoParallel__field_descriptor),
                    (Data.ProtoLens.Tag 16, scopedAllocatorOpts__field_descriptor),
                    (Data.ProtoLens.Tag 100, optimizers__field_descriptor),
                    (Data.ProtoLens.Tag 200, customOptimizers__field_descriptor)])
                (Data.Map.fromList
                   [("layout_optimizer", layoutOptimizer__field_descriptor),
                    ("constant_folding", constantFolding__field_descriptor),
                    ("shape_optimization", shapeOptimization__field_descriptor),
                    ("remapping", remapping__field_descriptor),
                    ("arithmetic_optimization",
                     arithmeticOptimization__field_descriptor),
                    ("dependency_optimization",
                     dependencyOptimization__field_descriptor),
                    ("loop_optimization", loopOptimization__field_descriptor),
                    ("function_optimization", functionOptimization__field_descriptor),
                    ("debug_stripper", debugStripper__field_descriptor),
                    ("disable_model_pruning", disableModelPruning__field_descriptor),
                    ("scoped_allocator_optimization",
                     scopedAllocatorOptimization__field_descriptor),
                    ("meta_optimizer_iterations",
                     metaOptimizerIterations__field_descriptor),
                    ("memory_optimization", memoryOptimization__field_descriptor),
                    ("memory_optimizer_target_node_name_scope",
                     memoryOptimizerTargetNodeNameScope__field_descriptor),
                    ("auto_parallel", autoParallel__field_descriptor),
                    ("scoped_allocator_opts", scopedAllocatorOpts__field_descriptor),
                    ("optimizers", optimizers__field_descriptor),
                    ("custom_optimizers", customOptimizers__field_descriptor)])

data RewriterConfig'CustomGraphOptimizer = RewriterConfig'CustomGraphOptimizer{_RewriterConfig'CustomGraphOptimizer'name
                                                                               :: !Data.Text.Text,
                                                                               _RewriterConfig'CustomGraphOptimizer'parameterMap
                                                                               ::
                                                                               !(Data.Map.Map
                                                                                   Data.Text.Text
                                                                                   Proto.Tensorflow.Core.Framework.AttrValue.AttrValue)}
                                         deriving (Prelude.Show, Prelude.Eq, Prelude.Ord)

instance (a ~ Data.Text.Text, b ~ Data.Text.Text,
          Prelude.Functor f) =>
         Lens.Labels.HasLens "name" f RewriterConfig'CustomGraphOptimizer
           RewriterConfig'CustomGraphOptimizer
           a
           b
         where
        lensOf _
          = (Prelude..)
              (Lens.Family2.Unchecked.lens
                 _RewriterConfig'CustomGraphOptimizer'name
                 (\ x__ y__ ->
                    x__{_RewriterConfig'CustomGraphOptimizer'name = y__}))
              Prelude.id

instance (a ~
            Data.Map.Map Data.Text.Text
              Proto.Tensorflow.Core.Framework.AttrValue.AttrValue,
          b ~
            Data.Map.Map Data.Text.Text
              Proto.Tensorflow.Core.Framework.AttrValue.AttrValue,
          Prelude.Functor f) =>
         Lens.Labels.HasLens "parameterMap" f
           RewriterConfig'CustomGraphOptimizer
           RewriterConfig'CustomGraphOptimizer
           a
           b
         where
        lensOf _
          = (Prelude..)
              (Lens.Family2.Unchecked.lens
                 _RewriterConfig'CustomGraphOptimizer'parameterMap
                 (\ x__ y__ ->
                    x__{_RewriterConfig'CustomGraphOptimizer'parameterMap = y__}))
              Prelude.id

instance Data.Default.Class.Default
           RewriterConfig'CustomGraphOptimizer
         where
        def
          = RewriterConfig'CustomGraphOptimizer{_RewriterConfig'CustomGraphOptimizer'name
                                                  = Data.ProtoLens.fieldDefault,
                                                _RewriterConfig'CustomGraphOptimizer'parameterMap =
                                                  Data.Map.empty}

instance Data.ProtoLens.Message RewriterConfig'CustomGraphOptimizer
         where
        descriptor
          = let name__field_descriptor
                  = Data.ProtoLens.FieldDescriptor "name"
                      (Data.ProtoLens.StringField ::
                         Data.ProtoLens.FieldTypeDescriptor Data.Text.Text)
                      (Data.ProtoLens.PlainField Data.ProtoLens.Optional name)
                      ::
                      Data.ProtoLens.FieldDescriptor RewriterConfig'CustomGraphOptimizer
                parameterMap__field_descriptor
                  = Data.ProtoLens.FieldDescriptor "parameter_map"
                      (Data.ProtoLens.MessageField ::
                         Data.ProtoLens.FieldTypeDescriptor
                           RewriterConfig'CustomGraphOptimizer'ParameterMapEntry)
                      (Data.ProtoLens.MapField key value parameterMap)
                      ::
                      Data.ProtoLens.FieldDescriptor RewriterConfig'CustomGraphOptimizer
              in
              Data.ProtoLens.MessageDescriptor
                (Data.Text.pack "tensorflow.RewriterConfig.CustomGraphOptimizer")
                (Data.Map.fromList
                   [(Data.ProtoLens.Tag 1, name__field_descriptor),
                    (Data.ProtoLens.Tag 2, parameterMap__field_descriptor)])
                (Data.Map.fromList
                   [("name", name__field_descriptor),
                    ("parameter_map", parameterMap__field_descriptor)])

data RewriterConfig'CustomGraphOptimizer'ParameterMapEntry = RewriterConfig'CustomGraphOptimizer'ParameterMapEntry{_RewriterConfig'CustomGraphOptimizer'ParameterMapEntry'key
                                                                                                                   ::
                                                                                                                   !Data.Text.Text,
                                                                                                                   _RewriterConfig'CustomGraphOptimizer'ParameterMapEntry'value
                                                                                                                   ::
                                                                                                                   !(Prelude.Maybe
                                                                                                                       Proto.Tensorflow.Core.Framework.AttrValue.AttrValue)}
                                                           deriving (Prelude.Show, Prelude.Eq,
                                                                     Prelude.Ord)

instance (a ~ Data.Text.Text, b ~ Data.Text.Text,
          Prelude.Functor f) =>
         Lens.Labels.HasLens "key" f
           RewriterConfig'CustomGraphOptimizer'ParameterMapEntry
           RewriterConfig'CustomGraphOptimizer'ParameterMapEntry
           a
           b
         where
        lensOf _
          = (Prelude..)
              (Lens.Family2.Unchecked.lens
                 _RewriterConfig'CustomGraphOptimizer'ParameterMapEntry'key
                 (\ x__ y__ ->
                    x__{_RewriterConfig'CustomGraphOptimizer'ParameterMapEntry'key =
                          y__}))
              Prelude.id

instance (a ~ Proto.Tensorflow.Core.Framework.AttrValue.AttrValue,
          b ~ Proto.Tensorflow.Core.Framework.AttrValue.AttrValue,
          Prelude.Functor f) =>
         Lens.Labels.HasLens "value" f
           RewriterConfig'CustomGraphOptimizer'ParameterMapEntry
           RewriterConfig'CustomGraphOptimizer'ParameterMapEntry
           a
           b
         where
        lensOf _
          = (Prelude..)
              (Lens.Family2.Unchecked.lens
                 _RewriterConfig'CustomGraphOptimizer'ParameterMapEntry'value
                 (\ x__ y__ ->
                    x__{_RewriterConfig'CustomGraphOptimizer'ParameterMapEntry'value =
                          y__}))
              (Data.ProtoLens.maybeLens Data.Default.Class.def)

instance (a ~
            Prelude.Maybe Proto.Tensorflow.Core.Framework.AttrValue.AttrValue,
          b ~
            Prelude.Maybe Proto.Tensorflow.Core.Framework.AttrValue.AttrValue,
          Prelude.Functor f) =>
         Lens.Labels.HasLens "maybe'value" f
           RewriterConfig'CustomGraphOptimizer'ParameterMapEntry
           RewriterConfig'CustomGraphOptimizer'ParameterMapEntry
           a
           b
         where
        lensOf _
          = (Prelude..)
              (Lens.Family2.Unchecked.lens
                 _RewriterConfig'CustomGraphOptimizer'ParameterMapEntry'value
                 (\ x__ y__ ->
                    x__{_RewriterConfig'CustomGraphOptimizer'ParameterMapEntry'value =
                          y__}))
              Prelude.id

instance Data.Default.Class.Default
           RewriterConfig'CustomGraphOptimizer'ParameterMapEntry
         where
        def
          = RewriterConfig'CustomGraphOptimizer'ParameterMapEntry{_RewriterConfig'CustomGraphOptimizer'ParameterMapEntry'key
                                                                    = Data.ProtoLens.fieldDefault,
                                                                  _RewriterConfig'CustomGraphOptimizer'ParameterMapEntry'value
                                                                    = Prelude.Nothing}

instance Data.ProtoLens.Message
           RewriterConfig'CustomGraphOptimizer'ParameterMapEntry
         where
        descriptor
          = let key__field_descriptor
                  = Data.ProtoLens.FieldDescriptor "key"
                      (Data.ProtoLens.StringField ::
                         Data.ProtoLens.FieldTypeDescriptor Data.Text.Text)
                      (Data.ProtoLens.PlainField Data.ProtoLens.Optional key)
                      ::
                      Data.ProtoLens.FieldDescriptor
                        RewriterConfig'CustomGraphOptimizer'ParameterMapEntry
                value__field_descriptor
                  = Data.ProtoLens.FieldDescriptor "value"
                      (Data.ProtoLens.MessageField ::
                         Data.ProtoLens.FieldTypeDescriptor
                           Proto.Tensorflow.Core.Framework.AttrValue.AttrValue)
                      (Data.ProtoLens.OptionalField maybe'value)
                      ::
                      Data.ProtoLens.FieldDescriptor
                        RewriterConfig'CustomGraphOptimizer'ParameterMapEntry
              in
              Data.ProtoLens.MessageDescriptor
                (Data.Text.pack
                   "tensorflow.RewriterConfig.CustomGraphOptimizer.ParameterMapEntry")
                (Data.Map.fromList
                   [(Data.ProtoLens.Tag 1, key__field_descriptor),
                    (Data.ProtoLens.Tag 2, value__field_descriptor)])
                (Data.Map.fromList
                   [("key", key__field_descriptor),
                    ("value", value__field_descriptor)])

data RewriterConfig'MemOptType = RewriterConfig'DEFAULT_MEM_OPT
                               | RewriterConfig'NO_MEM_OPT
                               | RewriterConfig'MANUAL
                               | RewriterConfig'HEURISTICS
                               | RewriterConfig'SWAPPING_HEURISTICS
                               | RewriterConfig'RECOMPUTATION_HEURISTICS
                               | RewriterConfig'SCHEDULING_HEURISTICS
                               deriving (Prelude.Show, Prelude.Eq, Prelude.Ord)

instance Data.Default.Class.Default RewriterConfig'MemOptType where
        def = RewriterConfig'DEFAULT_MEM_OPT

instance Data.ProtoLens.FieldDefault RewriterConfig'MemOptType
         where
        fieldDefault = RewriterConfig'DEFAULT_MEM_OPT

instance Data.ProtoLens.MessageEnum RewriterConfig'MemOptType where
        maybeToEnum 0 = Prelude.Just RewriterConfig'DEFAULT_MEM_OPT
        maybeToEnum 1 = Prelude.Just RewriterConfig'NO_MEM_OPT
        maybeToEnum 2 = Prelude.Just RewriterConfig'MANUAL
        maybeToEnum 3 = Prelude.Just RewriterConfig'HEURISTICS
        maybeToEnum 4 = Prelude.Just RewriterConfig'SWAPPING_HEURISTICS
        maybeToEnum 5
          = Prelude.Just RewriterConfig'RECOMPUTATION_HEURISTICS
        maybeToEnum 6 = Prelude.Just RewriterConfig'SCHEDULING_HEURISTICS
        maybeToEnum _ = Prelude.Nothing
        showEnum RewriterConfig'DEFAULT_MEM_OPT = "DEFAULT_MEM_OPT"
        showEnum RewriterConfig'NO_MEM_OPT = "NO_MEM_OPT"
        showEnum RewriterConfig'MANUAL = "MANUAL"
        showEnum RewriterConfig'HEURISTICS = "HEURISTICS"
        showEnum RewriterConfig'SWAPPING_HEURISTICS = "SWAPPING_HEURISTICS"
        showEnum RewriterConfig'RECOMPUTATION_HEURISTICS
          = "RECOMPUTATION_HEURISTICS"
        showEnum RewriterConfig'SCHEDULING_HEURISTICS
          = "SCHEDULING_HEURISTICS"
        readEnum "DEFAULT_MEM_OPT"
          = Prelude.Just RewriterConfig'DEFAULT_MEM_OPT
        readEnum "NO_MEM_OPT" = Prelude.Just RewriterConfig'NO_MEM_OPT
        readEnum "MANUAL" = Prelude.Just RewriterConfig'MANUAL
        readEnum "HEURISTICS" = Prelude.Just RewriterConfig'HEURISTICS
        readEnum "SWAPPING_HEURISTICS"
          = Prelude.Just RewriterConfig'SWAPPING_HEURISTICS
        readEnum "RECOMPUTATION_HEURISTICS"
          = Prelude.Just RewriterConfig'RECOMPUTATION_HEURISTICS
        readEnum "SCHEDULING_HEURISTICS"
          = Prelude.Just RewriterConfig'SCHEDULING_HEURISTICS
        readEnum _ = Prelude.Nothing

instance Prelude.Enum RewriterConfig'MemOptType where
        toEnum k__
          = Prelude.maybe
              (Prelude.error
                 ((Prelude.++) "toEnum: unknown value for enum MemOptType: "
                    (Prelude.show k__)))
              Prelude.id
              (Data.ProtoLens.maybeToEnum k__)
        fromEnum RewriterConfig'DEFAULT_MEM_OPT = 0
        fromEnum RewriterConfig'NO_MEM_OPT = 1
        fromEnum RewriterConfig'MANUAL = 2
        fromEnum RewriterConfig'HEURISTICS = 3
        fromEnum RewriterConfig'SWAPPING_HEURISTICS = 4
        fromEnum RewriterConfig'RECOMPUTATION_HEURISTICS = 5
        fromEnum RewriterConfig'SCHEDULING_HEURISTICS = 6
        succ RewriterConfig'SCHEDULING_HEURISTICS
          = Prelude.error
              "RewriterConfig'MemOptType.succ: bad argument RewriterConfig'SCHEDULING_HEURISTICS. This value would be out of bounds."
        succ RewriterConfig'DEFAULT_MEM_OPT = RewriterConfig'NO_MEM_OPT
        succ RewriterConfig'NO_MEM_OPT = RewriterConfig'MANUAL
        succ RewriterConfig'MANUAL = RewriterConfig'HEURISTICS
        succ RewriterConfig'HEURISTICS = RewriterConfig'SWAPPING_HEURISTICS
        succ RewriterConfig'SWAPPING_HEURISTICS
          = RewriterConfig'RECOMPUTATION_HEURISTICS
        succ RewriterConfig'RECOMPUTATION_HEURISTICS
          = RewriterConfig'SCHEDULING_HEURISTICS
        pred RewriterConfig'DEFAULT_MEM_OPT
          = Prelude.error
              "RewriterConfig'MemOptType.pred: bad argument RewriterConfig'DEFAULT_MEM_OPT. This value would be out of bounds."
        pred RewriterConfig'NO_MEM_OPT = RewriterConfig'DEFAULT_MEM_OPT
        pred RewriterConfig'MANUAL = RewriterConfig'NO_MEM_OPT
        pred RewriterConfig'HEURISTICS = RewriterConfig'MANUAL
        pred RewriterConfig'SWAPPING_HEURISTICS = RewriterConfig'HEURISTICS
        pred RewriterConfig'RECOMPUTATION_HEURISTICS
          = RewriterConfig'SWAPPING_HEURISTICS
        pred RewriterConfig'SCHEDULING_HEURISTICS
          = RewriterConfig'RECOMPUTATION_HEURISTICS
        enumFrom = Data.ProtoLens.Message.Enum.messageEnumFrom
        enumFromTo = Data.ProtoLens.Message.Enum.messageEnumFromTo
        enumFromThen = Data.ProtoLens.Message.Enum.messageEnumFromThen
        enumFromThenTo = Data.ProtoLens.Message.Enum.messageEnumFromThenTo

instance Prelude.Bounded RewriterConfig'MemOptType where
        minBound = RewriterConfig'DEFAULT_MEM_OPT
        maxBound = RewriterConfig'SCHEDULING_HEURISTICS

data RewriterConfig'NumIterationsType = RewriterConfig'DEFAULT_NUM_ITERS
                                      | RewriterConfig'ONE
                                      | RewriterConfig'TWO
                                      deriving (Prelude.Show, Prelude.Eq, Prelude.Ord)

instance Data.Default.Class.Default
           RewriterConfig'NumIterationsType
         where
        def = RewriterConfig'DEFAULT_NUM_ITERS

instance Data.ProtoLens.FieldDefault
           RewriterConfig'NumIterationsType
         where
        fieldDefault = RewriterConfig'DEFAULT_NUM_ITERS

instance Data.ProtoLens.MessageEnum
           RewriterConfig'NumIterationsType
         where
        maybeToEnum 0 = Prelude.Just RewriterConfig'DEFAULT_NUM_ITERS
        maybeToEnum 1 = Prelude.Just RewriterConfig'ONE
        maybeToEnum 2 = Prelude.Just RewriterConfig'TWO
        maybeToEnum _ = Prelude.Nothing
        showEnum RewriterConfig'DEFAULT_NUM_ITERS = "DEFAULT_NUM_ITERS"
        showEnum RewriterConfig'ONE = "ONE"
        showEnum RewriterConfig'TWO = "TWO"
        readEnum "DEFAULT_NUM_ITERS"
          = Prelude.Just RewriterConfig'DEFAULT_NUM_ITERS
        readEnum "ONE" = Prelude.Just RewriterConfig'ONE
        readEnum "TWO" = Prelude.Just RewriterConfig'TWO
        readEnum _ = Prelude.Nothing

instance Prelude.Enum RewriterConfig'NumIterationsType where
        toEnum k__
          = Prelude.maybe
              (Prelude.error
                 ((Prelude.++) "toEnum: unknown value for enum NumIterationsType: "
                    (Prelude.show k__)))
              Prelude.id
              (Data.ProtoLens.maybeToEnum k__)
        fromEnum RewriterConfig'DEFAULT_NUM_ITERS = 0
        fromEnum RewriterConfig'ONE = 1
        fromEnum RewriterConfig'TWO = 2
        succ RewriterConfig'TWO
          = Prelude.error
              "RewriterConfig'NumIterationsType.succ: bad argument RewriterConfig'TWO. This value would be out of bounds."
        succ RewriterConfig'DEFAULT_NUM_ITERS = RewriterConfig'ONE
        succ RewriterConfig'ONE = RewriterConfig'TWO
        pred RewriterConfig'DEFAULT_NUM_ITERS
          = Prelude.error
              "RewriterConfig'NumIterationsType.pred: bad argument RewriterConfig'DEFAULT_NUM_ITERS. This value would be out of bounds."
        pred RewriterConfig'ONE = RewriterConfig'DEFAULT_NUM_ITERS
        pred RewriterConfig'TWO = RewriterConfig'ONE
        enumFrom = Data.ProtoLens.Message.Enum.messageEnumFrom
        enumFromTo = Data.ProtoLens.Message.Enum.messageEnumFromTo
        enumFromThen = Data.ProtoLens.Message.Enum.messageEnumFromThen
        enumFromThenTo = Data.ProtoLens.Message.Enum.messageEnumFromThenTo

instance Prelude.Bounded RewriterConfig'NumIterationsType where
        minBound = RewriterConfig'DEFAULT_NUM_ITERS
        maxBound = RewriterConfig'TWO

data RewriterConfig'Toggle = RewriterConfig'DEFAULT
                           | RewriterConfig'ON
                           | RewriterConfig'OFF
                           | RewriterConfig'AGGRESSIVE
                           deriving (Prelude.Show, Prelude.Eq, Prelude.Ord)

instance Data.Default.Class.Default RewriterConfig'Toggle where
        def = RewriterConfig'DEFAULT

instance Data.ProtoLens.FieldDefault RewriterConfig'Toggle where
        fieldDefault = RewriterConfig'DEFAULT

instance Data.ProtoLens.MessageEnum RewriterConfig'Toggle where
        maybeToEnum 0 = Prelude.Just RewriterConfig'DEFAULT
        maybeToEnum 1 = Prelude.Just RewriterConfig'ON
        maybeToEnum 2 = Prelude.Just RewriterConfig'OFF
        maybeToEnum 3 = Prelude.Just RewriterConfig'AGGRESSIVE
        maybeToEnum _ = Prelude.Nothing
        showEnum RewriterConfig'DEFAULT = "DEFAULT"
        showEnum RewriterConfig'ON = "ON"
        showEnum RewriterConfig'OFF = "OFF"
        showEnum RewriterConfig'AGGRESSIVE = "AGGRESSIVE"
        readEnum "DEFAULT" = Prelude.Just RewriterConfig'DEFAULT
        readEnum "ON" = Prelude.Just RewriterConfig'ON
        readEnum "OFF" = Prelude.Just RewriterConfig'OFF
        readEnum "AGGRESSIVE" = Prelude.Just RewriterConfig'AGGRESSIVE
        readEnum _ = Prelude.Nothing

instance Prelude.Enum RewriterConfig'Toggle where
        toEnum k__
          = Prelude.maybe
              (Prelude.error
                 ((Prelude.++) "toEnum: unknown value for enum Toggle: "
                    (Prelude.show k__)))
              Prelude.id
              (Data.ProtoLens.maybeToEnum k__)
        fromEnum RewriterConfig'DEFAULT = 0
        fromEnum RewriterConfig'ON = 1
        fromEnum RewriterConfig'OFF = 2
        fromEnum RewriterConfig'AGGRESSIVE = 3
        succ RewriterConfig'AGGRESSIVE
          = Prelude.error
              "RewriterConfig'Toggle.succ: bad argument RewriterConfig'AGGRESSIVE. This value would be out of bounds."
        succ RewriterConfig'DEFAULT = RewriterConfig'ON
        succ RewriterConfig'ON = RewriterConfig'OFF
        succ RewriterConfig'OFF = RewriterConfig'AGGRESSIVE
        pred RewriterConfig'DEFAULT
          = Prelude.error
              "RewriterConfig'Toggle.pred: bad argument RewriterConfig'DEFAULT. This value would be out of bounds."
        pred RewriterConfig'ON = RewriterConfig'DEFAULT
        pred RewriterConfig'OFF = RewriterConfig'ON
        pred RewriterConfig'AGGRESSIVE = RewriterConfig'OFF
        enumFrom = Data.ProtoLens.Message.Enum.messageEnumFrom
        enumFromTo = Data.ProtoLens.Message.Enum.messageEnumFromTo
        enumFromThen = Data.ProtoLens.Message.Enum.messageEnumFromThen
        enumFromThenTo = Data.ProtoLens.Message.Enum.messageEnumFromThenTo

instance Prelude.Bounded RewriterConfig'Toggle where
        minBound = RewriterConfig'DEFAULT
        maxBound = RewriterConfig'AGGRESSIVE

data ScopedAllocatorOptions = ScopedAllocatorOptions{_ScopedAllocatorOptions'enableOp
                                                     :: ![Data.Text.Text]}
                            deriving (Prelude.Show, Prelude.Eq, Prelude.Ord)

instance (a ~ [Data.Text.Text], b ~ [Data.Text.Text],
          Prelude.Functor f) =>
         Lens.Labels.HasLens "enableOp" f ScopedAllocatorOptions
           ScopedAllocatorOptions
           a
           b
         where
        lensOf _
          = (Prelude..)
              (Lens.Family2.Unchecked.lens _ScopedAllocatorOptions'enableOp
                 (\ x__ y__ -> x__{_ScopedAllocatorOptions'enableOp = y__}))
              Prelude.id

instance Data.Default.Class.Default ScopedAllocatorOptions where
        def = ScopedAllocatorOptions{_ScopedAllocatorOptions'enableOp = []}

instance Data.ProtoLens.Message ScopedAllocatorOptions where
        descriptor
          = let enableOp__field_descriptor
                  = Data.ProtoLens.FieldDescriptor "enable_op"
                      (Data.ProtoLens.StringField ::
                         Data.ProtoLens.FieldTypeDescriptor Data.Text.Text)
                      (Data.ProtoLens.RepeatedField Data.ProtoLens.Unpacked enableOp)
                      :: Data.ProtoLens.FieldDescriptor ScopedAllocatorOptions
              in
              Data.ProtoLens.MessageDescriptor
                (Data.Text.pack "tensorflow.ScopedAllocatorOptions")
                (Data.Map.fromList
                   [(Data.ProtoLens.Tag 1, enableOp__field_descriptor)])
                (Data.Map.fromList [("enable_op", enableOp__field_descriptor)])

arithmeticOptimization ::
                       forall f s t a b .
                         (Lens.Labels.HasLens "arithmeticOptimization" f s t a b) =>
                         Lens.Family2.LensLike f s t a b
arithmeticOptimization
  = Lens.Labels.lensOf
      ((Lens.Labels.proxy#) ::
         (Lens.Labels.Proxy#) "arithmeticOptimization")

autoParallel ::
             forall f s t a b .
               (Lens.Labels.HasLens "autoParallel" f s t a b) =>
               Lens.Family2.LensLike f s t a b
autoParallel
  = Lens.Labels.lensOf
      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "autoParallel")

constantFolding ::
                forall f s t a b .
                  (Lens.Labels.HasLens "constantFolding" f s t a b) =>
                  Lens.Family2.LensLike f s t a b
constantFolding
  = Lens.Labels.lensOf
      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "constantFolding")

customOptimizers ::
                 forall f s t a b .
                   (Lens.Labels.HasLens "customOptimizers" f s t a b) =>
                   Lens.Family2.LensLike f s t a b
customOptimizers
  = Lens.Labels.lensOf
      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "customOptimizers")

debugStripper ::
              forall f s t a b .
                (Lens.Labels.HasLens "debugStripper" f s t a b) =>
                Lens.Family2.LensLike f s t a b
debugStripper
  = Lens.Labels.lensOf
      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "debugStripper")

dependencyOptimization ::
                       forall f s t a b .
                         (Lens.Labels.HasLens "dependencyOptimization" f s t a b) =>
                         Lens.Family2.LensLike f s t a b
dependencyOptimization
  = Lens.Labels.lensOf
      ((Lens.Labels.proxy#) ::
         (Lens.Labels.Proxy#) "dependencyOptimization")

disableModelPruning ::
                    forall f s t a b .
                      (Lens.Labels.HasLens "disableModelPruning" f s t a b) =>
                      Lens.Family2.LensLike f s t a b
disableModelPruning
  = Lens.Labels.lensOf
      ((Lens.Labels.proxy#) ::
         (Lens.Labels.Proxy#) "disableModelPruning")

enable ::
       forall f s t a b . (Lens.Labels.HasLens "enable" f s t a b) =>
         Lens.Family2.LensLike f s t a b
enable
  = Lens.Labels.lensOf
      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "enable")

enableOp ::
         forall f s t a b . (Lens.Labels.HasLens "enableOp" f s t a b) =>
           Lens.Family2.LensLike f s t a b
enableOp
  = Lens.Labels.lensOf
      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "enableOp")

functionOptimization ::
                     forall f s t a b .
                       (Lens.Labels.HasLens "functionOptimization" f s t a b) =>
                       Lens.Family2.LensLike f s t a b
functionOptimization
  = Lens.Labels.lensOf
      ((Lens.Labels.proxy#) ::
         (Lens.Labels.Proxy#) "functionOptimization")

key ::
    forall f s t a b . (Lens.Labels.HasLens "key" f s t a b) =>
      Lens.Family2.LensLike f s t a b
key
  = Lens.Labels.lensOf
      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "key")

layoutOptimizer ::
                forall f s t a b .
                  (Lens.Labels.HasLens "layoutOptimizer" f s t a b) =>
                  Lens.Family2.LensLike f s t a b
layoutOptimizer
  = Lens.Labels.lensOf
      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "layoutOptimizer")

loopOptimization ::
                 forall f s t a b .
                   (Lens.Labels.HasLens "loopOptimization" f s t a b) =>
                   Lens.Family2.LensLike f s t a b
loopOptimization
  = Lens.Labels.lensOf
      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "loopOptimization")

maybe'autoParallel ::
                   forall f s t a b .
                     (Lens.Labels.HasLens "maybe'autoParallel" f s t a b) =>
                     Lens.Family2.LensLike f s t a b
maybe'autoParallel
  = Lens.Labels.lensOf
      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "maybe'autoParallel")

maybe'scopedAllocatorOpts ::
                          forall f s t a b .
                            (Lens.Labels.HasLens "maybe'scopedAllocatorOpts" f s t a b) =>
                            Lens.Family2.LensLike f s t a b
maybe'scopedAllocatorOpts
  = Lens.Labels.lensOf
      ((Lens.Labels.proxy#) ::
         (Lens.Labels.Proxy#) "maybe'scopedAllocatorOpts")

maybe'value ::
            forall f s t a b . (Lens.Labels.HasLens "maybe'value" f s t a b) =>
              Lens.Family2.LensLike f s t a b
maybe'value
  = Lens.Labels.lensOf
      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "maybe'value")

memoryOptimization ::
                   forall f s t a b .
                     (Lens.Labels.HasLens "memoryOptimization" f s t a b) =>
                     Lens.Family2.LensLike f s t a b
memoryOptimization
  = Lens.Labels.lensOf
      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "memoryOptimization")

memoryOptimizerTargetNodeNameScope ::
                                   forall f s t a b .
                                     (Lens.Labels.HasLens "memoryOptimizerTargetNodeNameScope" f s t
                                        a b) =>
                                     Lens.Family2.LensLike f s t a b
memoryOptimizerTargetNodeNameScope
  = Lens.Labels.lensOf
      ((Lens.Labels.proxy#) ::
         (Lens.Labels.Proxy#) "memoryOptimizerTargetNodeNameScope")

metaOptimizerIterations ::
                        forall f s t a b .
                          (Lens.Labels.HasLens "metaOptimizerIterations" f s t a b) =>
                          Lens.Family2.LensLike f s t a b
metaOptimizerIterations
  = Lens.Labels.lensOf
      ((Lens.Labels.proxy#) ::
         (Lens.Labels.Proxy#) "metaOptimizerIterations")

name ::
     forall f s t a b . (Lens.Labels.HasLens "name" f s t a b) =>
       Lens.Family2.LensLike f s t a b
name
  = Lens.Labels.lensOf
      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "name")

numReplicas ::
            forall f s t a b . (Lens.Labels.HasLens "numReplicas" f s t a b) =>
              Lens.Family2.LensLike f s t a b
numReplicas
  = Lens.Labels.lensOf
      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "numReplicas")

optimizers ::
           forall f s t a b . (Lens.Labels.HasLens "optimizers" f s t a b) =>
             Lens.Family2.LensLike f s t a b
optimizers
  = Lens.Labels.lensOf
      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "optimizers")

parameterMap ::
             forall f s t a b .
               (Lens.Labels.HasLens "parameterMap" f s t a b) =>
               Lens.Family2.LensLike f s t a b
parameterMap
  = Lens.Labels.lensOf
      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "parameterMap")

remapping ::
          forall f s t a b . (Lens.Labels.HasLens "remapping" f s t a b) =>
            Lens.Family2.LensLike f s t a b
remapping
  = Lens.Labels.lensOf
      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "remapping")

scopedAllocatorOptimization ::
                            forall f s t a b .
                              (Lens.Labels.HasLens "scopedAllocatorOptimization" f s t a b) =>
                              Lens.Family2.LensLike f s t a b
scopedAllocatorOptimization
  = Lens.Labels.lensOf
      ((Lens.Labels.proxy#) ::
         (Lens.Labels.Proxy#) "scopedAllocatorOptimization")

scopedAllocatorOpts ::
                    forall f s t a b .
                      (Lens.Labels.HasLens "scopedAllocatorOpts" f s t a b) =>
                      Lens.Family2.LensLike f s t a b
scopedAllocatorOpts
  = Lens.Labels.lensOf
      ((Lens.Labels.proxy#) ::
         (Lens.Labels.Proxy#) "scopedAllocatorOpts")

shapeOptimization ::
                  forall f s t a b .
                    (Lens.Labels.HasLens "shapeOptimization" f s t a b) =>
                    Lens.Family2.LensLike f s t a b
shapeOptimization
  = Lens.Labels.lensOf
      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "shapeOptimization")

value ::
      forall f s t a b . (Lens.Labels.HasLens "value" f s t a b) =>
        Lens.Family2.LensLike f s t a b
value
  = Lens.Labels.lensOf
      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "value")