#
# Autogenerated by Thrift Compiler (0.9.3)
#
# DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING
#
#  options string: py
#

from thrift.Thrift import TType, TMessageType, TException, TApplicationException
import koverse.thriftgen.security.ttypes
import koverse.thriftgen.ttypes


from thrift.transport import TTransport
from thrift.protocol import TBinaryProtocol, TProtocol
try:
  from thrift.protocol import fastbinary
except:
  fastbinary = None


class TExecutionMethod:
  INLINE = 0
  MAPREDUCE = 1
  RDBMS = 2

  _VALUES_TO_NAMES = {
    0: "INLINE",
    1: "MAPREDUCE",
    2: "RDBMS",
  }

  _NAMES_TO_VALUES = {
    "INLINE": 0,
    "MAPREDUCE": 1,
    "RDBMS": 2,
  }

class TJobType:
  IMPORT = 0
  TRANSFORM = 1
  EXPORT = 2
  DELETE = 3
  INDEXING = 4
  REINDEXING = 5
  SAMPLING = 6
  STATISTICS = 7
  SCHEMA = 8

  _VALUES_TO_NAMES = {
    0: "IMPORT",
    1: "TRANSFORM",
    2: "EXPORT",
    3: "DELETE",
    4: "INDEXING",
    5: "REINDEXING",
    6: "SAMPLING",
    7: "STATISTICS",
    8: "SCHEMA",
  }

  _NAMES_TO_VALUES = {
    "IMPORT": 0,
    "TRANSFORM": 1,
    "EXPORT": 2,
    "DELETE": 3,
    "INDEXING": 4,
    "REINDEXING": 5,
    "SAMPLING": 6,
    "STATISTICS": 7,
    "SCHEMA": 8,
  }

class TTransformStageType:
  COMBINE = 0
  KV_MAP = 1
  RECORD_MAP = 2
  REDUCE = 3
  PIG = 4

  _VALUES_TO_NAMES = {
    0: "COMBINE",
    1: "KV_MAP",
    2: "RECORD_MAP",
    3: "REDUCE",
    4: "PIG",
  }

  _NAMES_TO_VALUES = {
    "COMBINE": 0,
    "KV_MAP": 1,
    "RECORD_MAP": 2,
    "REDUCE": 3,
    "PIG": 4,
  }


class TJobError:
  """
  Attributes:
   - text
  """

  thrift_spec = (
    None, # 0
    (1, TType.STRING, 'text', None, None, ), # 1
  )

  def __init__(self, text=None,):
    self.text = text

  def read(self, iprot):
    if iprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None and fastbinary is not None:
      fastbinary.decode_binary(self, iprot.trans, (self.__class__, self.thrift_spec))
      return
    iprot.readStructBegin()
    while True:
      (fname, ftype, fid) = iprot.readFieldBegin()
      if ftype == TType.STOP:
        break
      if fid == 1:
        if ftype == TType.STRING:
          self.text = iprot.readString()
        else:
          iprot.skip(ftype)
      else:
        iprot.skip(ftype)
      iprot.readFieldEnd()
    iprot.readStructEnd()

  def write(self, oprot):
    if oprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and self.thrift_spec is not None and fastbinary is not None:
      oprot.trans.write(fastbinary.encode_binary(self, (self.__class__, self.thrift_spec)))
      return
    oprot.writeStructBegin('TJobError')
    if self.text is not None:
      oprot.writeFieldBegin('text', TType.STRING, 1)
      oprot.writeString(self.text)
      oprot.writeFieldEnd()
    oprot.writeFieldStop()
    oprot.writeStructEnd()

  def validate(self):
    return


  def __hash__(self):
    value = 17
    value = (value * 31) ^ hash(self.text)
    return value

  def __repr__(self):
    L = ['%s=%r' % (key, value)
      for key, value in self.__dict__.iteritems()]
    return '%s(%s)' % (self.__class__.__name__, ', '.join(L))

  def __eq__(self, other):
    return isinstance(other, self.__class__) and self.__dict__ == other.__dict__

  def __ne__(self, other):
    return not (self == other)

class TJobAbstract:
  """
  Attributes:
   - id
   - userId
   - creationDate
   - startedDate
   - endedDate
   - status
   - errorDetail
   - statusMessage
   - userAcknowledged
   - origin
   - overrideBlockedStatus
   - type
   - progress
   - dataSetId
   - inputDataSetIds
   - outputDataSetId
   - errors
   - backendUserInterfaceUrl
   - recordCount
   - name
  """

  thrift_spec = (
    None, # 0
    (1, TType.I64, 'id', None, None, ), # 1
    (2, TType.I64, 'userId', None, None, ), # 2
    (3, TType.I64, 'creationDate', None, None, ), # 3
    (4, TType.I64, 'startedDate', None, None, ), # 4
    (5, TType.I64, 'endedDate', None, None, ), # 5
    (6, TType.STRING, 'status', None, None, ), # 6
    (7, TType.STRING, 'errorDetail', None, None, ), # 7
    (8, TType.STRING, 'statusMessage', None, None, ), # 8
    (9, TType.BOOL, 'userAcknowledged', None, None, ), # 9
    (10, TType.STRING, 'origin', None, None, ), # 10
    (11, TType.BOOL, 'overrideBlockedStatus', None, None, ), # 11
    (12, TType.I32, 'type', None, None, ), # 12
    (13, TType.DOUBLE, 'progress', None, None, ), # 13
    (14, TType.STRING, 'dataSetId', None, None, ), # 14
    (15, TType.LIST, 'inputDataSetIds', (TType.STRING,None), None, ), # 15
    (16, TType.STRING, 'outputDataSetId', None, None, ), # 16
    (17, TType.LIST, 'errors', (TType.STRUCT,(TJobError, TJobError.thrift_spec)), None, ), # 17
    (18, TType.STRING, 'backendUserInterfaceUrl', None, None, ), # 18
    (19, TType.I64, 'recordCount', None, None, ), # 19
    (20, TType.STRING, 'name', None, None, ), # 20
  )

  def __init__(self, id=None, userId=None, creationDate=None, startedDate=None, endedDate=None, status=None, errorDetail=None, statusMessage=None, userAcknowledged=None, origin=None, overrideBlockedStatus=None, type=None, progress=None, dataSetId=None, inputDataSetIds=None, outputDataSetId=None, errors=None, backendUserInterfaceUrl=None, recordCount=None, name=None,):
    self.id = id
    self.userId = userId
    self.creationDate = creationDate
    self.startedDate = startedDate
    self.endedDate = endedDate
    self.status = status
    self.errorDetail = errorDetail
    self.statusMessage = statusMessage
    self.userAcknowledged = userAcknowledged
    self.origin = origin
    self.overrideBlockedStatus = overrideBlockedStatus
    self.type = type
    self.progress = progress
    self.dataSetId = dataSetId
    self.inputDataSetIds = inputDataSetIds
    self.outputDataSetId = outputDataSetId
    self.errors = errors
    self.backendUserInterfaceUrl = backendUserInterfaceUrl
    self.recordCount = recordCount
    self.name = name

  def read(self, iprot):
    if iprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None and fastbinary is not None:
      fastbinary.decode_binary(self, iprot.trans, (self.__class__, self.thrift_spec))
      return
    iprot.readStructBegin()
    while True:
      (fname, ftype, fid) = iprot.readFieldBegin()
      if ftype == TType.STOP:
        break
      if fid == 1:
        if ftype == TType.I64:
          self.id = iprot.readI64()
        else:
          iprot.skip(ftype)
      elif fid == 2:
        if ftype == TType.I64:
          self.userId = iprot.readI64()
        else:
          iprot.skip(ftype)
      elif fid == 3:
        if ftype == TType.I64:
          self.creationDate = iprot.readI64()
        else:
          iprot.skip(ftype)
      elif fid == 4:
        if ftype == TType.I64:
          self.startedDate = iprot.readI64()
        else:
          iprot.skip(ftype)
      elif fid == 5:
        if ftype == TType.I64:
          self.endedDate = iprot.readI64()
        else:
          iprot.skip(ftype)
      elif fid == 6:
        if ftype == TType.STRING:
          self.status = iprot.readString()
        else:
          iprot.skip(ftype)
      elif fid == 7:
        if ftype == TType.STRING:
          self.errorDetail = iprot.readString()
        else:
          iprot.skip(ftype)
      elif fid == 8:
        if ftype == TType.STRING:
          self.statusMessage = iprot.readString()
        else:
          iprot.skip(ftype)
      elif fid == 9:
        if ftype == TType.BOOL:
          self.userAcknowledged = iprot.readBool()
        else:
          iprot.skip(ftype)
      elif fid == 10:
        if ftype == TType.STRING:
          self.origin = iprot.readString()
        else:
          iprot.skip(ftype)
      elif fid == 11:
        if ftype == TType.BOOL:
          self.overrideBlockedStatus = iprot.readBool()
        else:
          iprot.skip(ftype)
      elif fid == 12:
        if ftype == TType.I32:
          self.type = iprot.readI32()
        else:
          iprot.skip(ftype)
      elif fid == 13:
        if ftype == TType.DOUBLE:
          self.progress = iprot.readDouble()
        else:
          iprot.skip(ftype)
      elif fid == 14:
        if ftype == TType.STRING:
          self.dataSetId = iprot.readString()
        else:
          iprot.skip(ftype)
      elif fid == 15:
        if ftype == TType.LIST:
          self.inputDataSetIds = []
          (_etype3, _size0) = iprot.readListBegin()
          for _i4 in xrange(_size0):
            _elem5 = iprot.readString()
            self.inputDataSetIds.append(_elem5)
          iprot.readListEnd()
        else:
          iprot.skip(ftype)
      elif fid == 16:
        if ftype == TType.STRING:
          self.outputDataSetId = iprot.readString()
        else:
          iprot.skip(ftype)
      elif fid == 17:
        if ftype == TType.LIST:
          self.errors = []
          (_etype9, _size6) = iprot.readListBegin()
          for _i10 in xrange(_size6):
            _elem11 = TJobError()
            _elem11.read(iprot)
            self.errors.append(_elem11)
          iprot.readListEnd()
        else:
          iprot.skip(ftype)
      elif fid == 18:
        if ftype == TType.STRING:
          self.backendUserInterfaceUrl = iprot.readString()
        else:
          iprot.skip(ftype)
      elif fid == 19:
        if ftype == TType.I64:
          self.recordCount = iprot.readI64()
        else:
          iprot.skip(ftype)
      elif fid == 20:
        if ftype == TType.STRING:
          self.name = iprot.readString()
        else:
          iprot.skip(ftype)
      else:
        iprot.skip(ftype)
      iprot.readFieldEnd()
    iprot.readStructEnd()

  def write(self, oprot):
    if oprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and self.thrift_spec is not None and fastbinary is not None:
      oprot.trans.write(fastbinary.encode_binary(self, (self.__class__, self.thrift_spec)))
      return
    oprot.writeStructBegin('TJobAbstract')
    if self.id is not None:
      oprot.writeFieldBegin('id', TType.I64, 1)
      oprot.writeI64(self.id)
      oprot.writeFieldEnd()
    if self.userId is not None:
      oprot.writeFieldBegin('userId', TType.I64, 2)
      oprot.writeI64(self.userId)
      oprot.writeFieldEnd()
    if self.creationDate is not None:
      oprot.writeFieldBegin('creationDate', TType.I64, 3)
      oprot.writeI64(self.creationDate)
      oprot.writeFieldEnd()
    if self.startedDate is not None:
      oprot.writeFieldBegin('startedDate', TType.I64, 4)
      oprot.writeI64(self.startedDate)
      oprot.writeFieldEnd()
    if self.endedDate is not None:
      oprot.writeFieldBegin('endedDate', TType.I64, 5)
      oprot.writeI64(self.endedDate)
      oprot.writeFieldEnd()
    if self.status is not None:
      oprot.writeFieldBegin('status', TType.STRING, 6)
      oprot.writeString(self.status)
      oprot.writeFieldEnd()
    if self.errorDetail is not None:
      oprot.writeFieldBegin('errorDetail', TType.STRING, 7)
      oprot.writeString(self.errorDetail)
      oprot.writeFieldEnd()
    if self.statusMessage is not None:
      oprot.writeFieldBegin('statusMessage', TType.STRING, 8)
      oprot.writeString(self.statusMessage)
      oprot.writeFieldEnd()
    if self.userAcknowledged is not None:
      oprot.writeFieldBegin('userAcknowledged', TType.BOOL, 9)
      oprot.writeBool(self.userAcknowledged)
      oprot.writeFieldEnd()
    if self.origin is not None:
      oprot.writeFieldBegin('origin', TType.STRING, 10)
      oprot.writeString(self.origin)
      oprot.writeFieldEnd()
    if self.overrideBlockedStatus is not None:
      oprot.writeFieldBegin('overrideBlockedStatus', TType.BOOL, 11)
      oprot.writeBool(self.overrideBlockedStatus)
      oprot.writeFieldEnd()
    if self.type is not None:
      oprot.writeFieldBegin('type', TType.I32, 12)
      oprot.writeI32(self.type)
      oprot.writeFieldEnd()
    if self.progress is not None:
      oprot.writeFieldBegin('progress', TType.DOUBLE, 13)
      oprot.writeDouble(self.progress)
      oprot.writeFieldEnd()
    if self.dataSetId is not None:
      oprot.writeFieldBegin('dataSetId', TType.STRING, 14)
      oprot.writeString(self.dataSetId)
      oprot.writeFieldEnd()
    if self.inputDataSetIds is not None:
      oprot.writeFieldBegin('inputDataSetIds', TType.LIST, 15)
      oprot.writeListBegin(TType.STRING, len(self.inputDataSetIds))
      for iter12 in self.inputDataSetIds:
        oprot.writeString(iter12)
      oprot.writeListEnd()
      oprot.writeFieldEnd()
    if self.outputDataSetId is not None:
      oprot.writeFieldBegin('outputDataSetId', TType.STRING, 16)
      oprot.writeString(self.outputDataSetId)
      oprot.writeFieldEnd()
    if self.errors is not None:
      oprot.writeFieldBegin('errors', TType.LIST, 17)
      oprot.writeListBegin(TType.STRUCT, len(self.errors))
      for iter13 in self.errors:
        iter13.write(oprot)
      oprot.writeListEnd()
      oprot.writeFieldEnd()
    if self.backendUserInterfaceUrl is not None:
      oprot.writeFieldBegin('backendUserInterfaceUrl', TType.STRING, 18)
      oprot.writeString(self.backendUserInterfaceUrl)
      oprot.writeFieldEnd()
    if self.recordCount is not None:
      oprot.writeFieldBegin('recordCount', TType.I64, 19)
      oprot.writeI64(self.recordCount)
      oprot.writeFieldEnd()
    if self.name is not None:
      oprot.writeFieldBegin('name', TType.STRING, 20)
      oprot.writeString(self.name)
      oprot.writeFieldEnd()
    oprot.writeFieldStop()
    oprot.writeStructEnd()

  def validate(self):
    return


  def __hash__(self):
    value = 17
    value = (value * 31) ^ hash(self.id)
    value = (value * 31) ^ hash(self.userId)
    value = (value * 31) ^ hash(self.creationDate)
    value = (value * 31) ^ hash(self.startedDate)
    value = (value * 31) ^ hash(self.endedDate)
    value = (value * 31) ^ hash(self.status)
    value = (value * 31) ^ hash(self.errorDetail)
    value = (value * 31) ^ hash(self.statusMessage)
    value = (value * 31) ^ hash(self.userAcknowledged)
    value = (value * 31) ^ hash(self.origin)
    value = (value * 31) ^ hash(self.overrideBlockedStatus)
    value = (value * 31) ^ hash(self.type)
    value = (value * 31) ^ hash(self.progress)
    value = (value * 31) ^ hash(self.dataSetId)
    value = (value * 31) ^ hash(self.inputDataSetIds)
    value = (value * 31) ^ hash(self.outputDataSetId)
    value = (value * 31) ^ hash(self.errors)
    value = (value * 31) ^ hash(self.backendUserInterfaceUrl)
    value = (value * 31) ^ hash(self.recordCount)
    value = (value * 31) ^ hash(self.name)
    return value

  def __repr__(self):
    L = ['%s=%r' % (key, value)
      for key, value in self.__dict__.iteritems()]
    return '%s(%s)' % (self.__class__.__name__, ', '.join(L))

  def __eq__(self, other):
    return isinstance(other, self.__class__) and self.__dict__ == other.__dict__

  def __ne__(self, other):
    return not (self == other)

class TBatchId:
  """
  Attributes:
   - timestampSeconds
   - jobId
   - jobType
  """

  thrift_spec = (
    None, # 0
    (1, TType.I64, 'timestampSeconds', None, None, ), # 1
    (2, TType.I64, 'jobId', None, None, ), # 2
    (3, TType.BYTE, 'jobType', None, None, ), # 3
  )

  def __init__(self, timestampSeconds=None, jobId=None, jobType=None,):
    self.timestampSeconds = timestampSeconds
    self.jobId = jobId
    self.jobType = jobType

  def read(self, iprot):
    if iprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None and fastbinary is not None:
      fastbinary.decode_binary(self, iprot.trans, (self.__class__, self.thrift_spec))
      return
    iprot.readStructBegin()
    while True:
      (fname, ftype, fid) = iprot.readFieldBegin()
      if ftype == TType.STOP:
        break
      if fid == 1:
        if ftype == TType.I64:
          self.timestampSeconds = iprot.readI64()
        else:
          iprot.skip(ftype)
      elif fid == 2:
        if ftype == TType.I64:
          self.jobId = iprot.readI64()
        else:
          iprot.skip(ftype)
      elif fid == 3:
        if ftype == TType.BYTE:
          self.jobType = iprot.readByte()
        else:
          iprot.skip(ftype)
      else:
        iprot.skip(ftype)
      iprot.readFieldEnd()
    iprot.readStructEnd()

  def write(self, oprot):
    if oprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and self.thrift_spec is not None and fastbinary is not None:
      oprot.trans.write(fastbinary.encode_binary(self, (self.__class__, self.thrift_spec)))
      return
    oprot.writeStructBegin('TBatchId')
    if self.timestampSeconds is not None:
      oprot.writeFieldBegin('timestampSeconds', TType.I64, 1)
      oprot.writeI64(self.timestampSeconds)
      oprot.writeFieldEnd()
    if self.jobId is not None:
      oprot.writeFieldBegin('jobId', TType.I64, 2)
      oprot.writeI64(self.jobId)
      oprot.writeFieldEnd()
    if self.jobType is not None:
      oprot.writeFieldBegin('jobType', TType.BYTE, 3)
      oprot.writeByte(self.jobType)
      oprot.writeFieldEnd()
    oprot.writeFieldStop()
    oprot.writeStructEnd()

  def validate(self):
    return


  def __hash__(self):
    value = 17
    value = (value * 31) ^ hash(self.timestampSeconds)
    value = (value * 31) ^ hash(self.jobId)
    value = (value * 31) ^ hash(self.jobType)
    return value

  def __repr__(self):
    L = ['%s=%r' % (key, value)
      for key, value in self.__dict__.iteritems()]
    return '%s(%s)' % (self.__class__.__name__, ', '.join(L))

  def __eq__(self, other):
    return isinstance(other, self.__class__) and self.__dict__ == other.__dict__

  def __ne__(self, other):
    return not (self == other)

class TBatchJob:
  """
  Attributes:
   - jobAbstract
   - minInputBatchId
   - maxInputBatchId
   - minOutputBatchId
   - maxOutputBatchId
  """

  thrift_spec = (
    None, # 0
    (1, TType.STRUCT, 'jobAbstract', (TJobAbstract, TJobAbstract.thrift_spec), None, ), # 1
    (2, TType.STRUCT, 'minInputBatchId', (TBatchId, TBatchId.thrift_spec), None, ), # 2
    (3, TType.STRUCT, 'maxInputBatchId', (TBatchId, TBatchId.thrift_spec), None, ), # 3
    (4, TType.STRUCT, 'minOutputBatchId', (TBatchId, TBatchId.thrift_spec), None, ), # 4
    (5, TType.STRUCT, 'maxOutputBatchId', (TBatchId, TBatchId.thrift_spec), None, ), # 5
  )

  def __init__(self, jobAbstract=None, minInputBatchId=None, maxInputBatchId=None, minOutputBatchId=None, maxOutputBatchId=None,):
    self.jobAbstract = jobAbstract
    self.minInputBatchId = minInputBatchId
    self.maxInputBatchId = maxInputBatchId
    self.minOutputBatchId = minOutputBatchId
    self.maxOutputBatchId = maxOutputBatchId

  def read(self, iprot):
    if iprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None and fastbinary is not None:
      fastbinary.decode_binary(self, iprot.trans, (self.__class__, self.thrift_spec))
      return
    iprot.readStructBegin()
    while True:
      (fname, ftype, fid) = iprot.readFieldBegin()
      if ftype == TType.STOP:
        break
      if fid == 1:
        if ftype == TType.STRUCT:
          self.jobAbstract = TJobAbstract()
          self.jobAbstract.read(iprot)
        else:
          iprot.skip(ftype)
      elif fid == 2:
        if ftype == TType.STRUCT:
          self.minInputBatchId = TBatchId()
          self.minInputBatchId.read(iprot)
        else:
          iprot.skip(ftype)
      elif fid == 3:
        if ftype == TType.STRUCT:
          self.maxInputBatchId = TBatchId()
          self.maxInputBatchId.read(iprot)
        else:
          iprot.skip(ftype)
      elif fid == 4:
        if ftype == TType.STRUCT:
          self.minOutputBatchId = TBatchId()
          self.minOutputBatchId.read(iprot)
        else:
          iprot.skip(ftype)
      elif fid == 5:
        if ftype == TType.STRUCT:
          self.maxOutputBatchId = TBatchId()
          self.maxOutputBatchId.read(iprot)
        else:
          iprot.skip(ftype)
      else:
        iprot.skip(ftype)
      iprot.readFieldEnd()
    iprot.readStructEnd()

  def write(self, oprot):
    if oprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and self.thrift_spec is not None and fastbinary is not None:
      oprot.trans.write(fastbinary.encode_binary(self, (self.__class__, self.thrift_spec)))
      return
    oprot.writeStructBegin('TBatchJob')
    if self.jobAbstract is not None:
      oprot.writeFieldBegin('jobAbstract', TType.STRUCT, 1)
      self.jobAbstract.write(oprot)
      oprot.writeFieldEnd()
    if self.minInputBatchId is not None:
      oprot.writeFieldBegin('minInputBatchId', TType.STRUCT, 2)
      self.minInputBatchId.write(oprot)
      oprot.writeFieldEnd()
    if self.maxInputBatchId is not None:
      oprot.writeFieldBegin('maxInputBatchId', TType.STRUCT, 3)
      self.maxInputBatchId.write(oprot)
      oprot.writeFieldEnd()
    if self.minOutputBatchId is not None:
      oprot.writeFieldBegin('minOutputBatchId', TType.STRUCT, 4)
      self.minOutputBatchId.write(oprot)
      oprot.writeFieldEnd()
    if self.maxOutputBatchId is not None:
      oprot.writeFieldBegin('maxOutputBatchId', TType.STRUCT, 5)
      self.maxOutputBatchId.write(oprot)
      oprot.writeFieldEnd()
    oprot.writeFieldStop()
    oprot.writeStructEnd()

  def validate(self):
    return


  def __hash__(self):
    value = 17
    value = (value * 31) ^ hash(self.jobAbstract)
    value = (value * 31) ^ hash(self.minInputBatchId)
    value = (value * 31) ^ hash(self.maxInputBatchId)
    value = (value * 31) ^ hash(self.minOutputBatchId)
    value = (value * 31) ^ hash(self.maxOutputBatchId)
    return value

  def __repr__(self):
    L = ['%s=%r' % (key, value)
      for key, value in self.__dict__.iteritems()]
    return '%s(%s)' % (self.__class__.__name__, ', '.join(L))

  def __eq__(self, other):
    return isinstance(other, self.__class__) and self.__dict__ == other.__dict__

  def __ne__(self, other):
    return not (self == other)

class TSourcePermission:
  """
  Attributes:
   - id
   - groupId
   - permissionsTypes
  """

  thrift_spec = (
    None, # 0
    (1, TType.I64, 'id', None, None, ), # 1
    (2, TType.I64, 'groupId', None, None, ), # 2
    (3, TType.LIST, 'permissionsTypes', (TType.STRING,None), None, ), # 3
  )

  def __init__(self, id=None, groupId=None, permissionsTypes=None,):
    self.id = id
    self.groupId = groupId
    self.permissionsTypes = permissionsTypes

  def read(self, iprot):
    if iprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None and fastbinary is not None:
      fastbinary.decode_binary(self, iprot.trans, (self.__class__, self.thrift_spec))
      return
    iprot.readStructBegin()
    while True:
      (fname, ftype, fid) = iprot.readFieldBegin()
      if ftype == TType.STOP:
        break
      if fid == 1:
        if ftype == TType.I64:
          self.id = iprot.readI64()
        else:
          iprot.skip(ftype)
      elif fid == 2:
        if ftype == TType.I64:
          self.groupId = iprot.readI64()
        else:
          iprot.skip(ftype)
      elif fid == 3:
        if ftype == TType.LIST:
          self.permissionsTypes = []
          (_etype17, _size14) = iprot.readListBegin()
          for _i18 in xrange(_size14):
            _elem19 = iprot.readString()
            self.permissionsTypes.append(_elem19)
          iprot.readListEnd()
        else:
          iprot.skip(ftype)
      else:
        iprot.skip(ftype)
      iprot.readFieldEnd()
    iprot.readStructEnd()

  def write(self, oprot):
    if oprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and self.thrift_spec is not None and fastbinary is not None:
      oprot.trans.write(fastbinary.encode_binary(self, (self.__class__, self.thrift_spec)))
      return
    oprot.writeStructBegin('TSourcePermission')
    if self.id is not None:
      oprot.writeFieldBegin('id', TType.I64, 1)
      oprot.writeI64(self.id)
      oprot.writeFieldEnd()
    if self.groupId is not None:
      oprot.writeFieldBegin('groupId', TType.I64, 2)
      oprot.writeI64(self.groupId)
      oprot.writeFieldEnd()
    if self.permissionsTypes is not None:
      oprot.writeFieldBegin('permissionsTypes', TType.LIST, 3)
      oprot.writeListBegin(TType.STRING, len(self.permissionsTypes))
      for iter20 in self.permissionsTypes:
        oprot.writeString(iter20)
      oprot.writeListEnd()
      oprot.writeFieldEnd()
    oprot.writeFieldStop()
    oprot.writeStructEnd()

  def validate(self):
    return


  def __hash__(self):
    value = 17
    value = (value * 31) ^ hash(self.id)
    value = (value * 31) ^ hash(self.groupId)
    value = (value * 31) ^ hash(self.permissionsTypes)
    return value

  def __repr__(self):
    L = ['%s=%r' % (key, value)
      for key, value in self.__dict__.iteritems()]
    return '%s(%s)' % (self.__class__.__name__, ', '.join(L))

  def __eq__(self, other):
    return isinstance(other, self.__class__) and self.__dict__ == other.__dict__

  def __ne__(self, other):
    return not (self == other)

class TSourceTypeDescription:
  """
  Attributes:
   - sourceTypeDescriptionId
   - name
   - version
   - executionMethod
   - implementationClassName
   - sourceTypeId
   - customParameterFormJavascriptPath
   - parameters
   - addOnId
   - disabled
   - flowParameters
  """

  thrift_spec = (
    None, # 0
    (1, TType.I64, 'sourceTypeDescriptionId', None, None, ), # 1
    (2, TType.STRING, 'name', None, None, ), # 2
    (3, TType.STRING, 'version', None, None, ), # 3
    (4, TType.I32, 'executionMethod', None, None, ), # 4
    (5, TType.STRING, 'implementationClassName', None, None, ), # 5
    (6, TType.STRING, 'sourceTypeId', None, None, ), # 6
    (7, TType.STRING, 'customParameterFormJavascriptPath', None, None, ), # 7
    (8, TType.LIST, 'parameters', (TType.STRUCT,(koverse.thriftgen.ttypes.TParameter, koverse.thriftgen.ttypes.TParameter.thrift_spec)), None, ), # 8
    (9, TType.I64, 'addOnId', None, None, ), # 9
    (10, TType.BOOL, 'disabled', None, None, ), # 10
    (11, TType.LIST, 'flowParameters', (TType.STRUCT,(koverse.thriftgen.ttypes.TParameter, koverse.thriftgen.ttypes.TParameter.thrift_spec)), None, ), # 11
  )

  def __init__(self, sourceTypeDescriptionId=None, name=None, version=None, executionMethod=None, implementationClassName=None, sourceTypeId=None, customParameterFormJavascriptPath=None, parameters=None, addOnId=None, disabled=None, flowParameters=None,):
    self.sourceTypeDescriptionId = sourceTypeDescriptionId
    self.name = name
    self.version = version
    self.executionMethod = executionMethod
    self.implementationClassName = implementationClassName
    self.sourceTypeId = sourceTypeId
    self.customParameterFormJavascriptPath = customParameterFormJavascriptPath
    self.parameters = parameters
    self.addOnId = addOnId
    self.disabled = disabled
    self.flowParameters = flowParameters

  def read(self, iprot):
    if iprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None and fastbinary is not None:
      fastbinary.decode_binary(self, iprot.trans, (self.__class__, self.thrift_spec))
      return
    iprot.readStructBegin()
    while True:
      (fname, ftype, fid) = iprot.readFieldBegin()
      if ftype == TType.STOP:
        break
      if fid == 1:
        if ftype == TType.I64:
          self.sourceTypeDescriptionId = iprot.readI64()
        else:
          iprot.skip(ftype)
      elif fid == 2:
        if ftype == TType.STRING:
          self.name = iprot.readString()
        else:
          iprot.skip(ftype)
      elif fid == 3:
        if ftype == TType.STRING:
          self.version = iprot.readString()
        else:
          iprot.skip(ftype)
      elif fid == 4:
        if ftype == TType.I32:
          self.executionMethod = iprot.readI32()
        else:
          iprot.skip(ftype)
      elif fid == 5:
        if ftype == TType.STRING:
          self.implementationClassName = iprot.readString()
        else:
          iprot.skip(ftype)
      elif fid == 6:
        if ftype == TType.STRING:
          self.sourceTypeId = iprot.readString()
        else:
          iprot.skip(ftype)
      elif fid == 7:
        if ftype == TType.STRING:
          self.customParameterFormJavascriptPath = iprot.readString()
        else:
          iprot.skip(ftype)
      elif fid == 8:
        if ftype == TType.LIST:
          self.parameters = []
          (_etype24, _size21) = iprot.readListBegin()
          for _i25 in xrange(_size21):
            _elem26 = koverse.thriftgen.ttypes.TParameter()
            _elem26.read(iprot)
            self.parameters.append(_elem26)
          iprot.readListEnd()
        else:
          iprot.skip(ftype)
      elif fid == 9:
        if ftype == TType.I64:
          self.addOnId = iprot.readI64()
        else:
          iprot.skip(ftype)
      elif fid == 10:
        if ftype == TType.BOOL:
          self.disabled = iprot.readBool()
        else:
          iprot.skip(ftype)
      elif fid == 11:
        if ftype == TType.LIST:
          self.flowParameters = []
          (_etype30, _size27) = iprot.readListBegin()
          for _i31 in xrange(_size27):
            _elem32 = koverse.thriftgen.ttypes.TParameter()
            _elem32.read(iprot)
            self.flowParameters.append(_elem32)
          iprot.readListEnd()
        else:
          iprot.skip(ftype)
      else:
        iprot.skip(ftype)
      iprot.readFieldEnd()
    iprot.readStructEnd()

  def write(self, oprot):
    if oprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and self.thrift_spec is not None and fastbinary is not None:
      oprot.trans.write(fastbinary.encode_binary(self, (self.__class__, self.thrift_spec)))
      return
    oprot.writeStructBegin('TSourceTypeDescription')
    if self.sourceTypeDescriptionId is not None:
      oprot.writeFieldBegin('sourceTypeDescriptionId', TType.I64, 1)
      oprot.writeI64(self.sourceTypeDescriptionId)
      oprot.writeFieldEnd()
    if self.name is not None:
      oprot.writeFieldBegin('name', TType.STRING, 2)
      oprot.writeString(self.name)
      oprot.writeFieldEnd()
    if self.version is not None:
      oprot.writeFieldBegin('version', TType.STRING, 3)
      oprot.writeString(self.version)
      oprot.writeFieldEnd()
    if self.executionMethod is not None:
      oprot.writeFieldBegin('executionMethod', TType.I32, 4)
      oprot.writeI32(self.executionMethod)
      oprot.writeFieldEnd()
    if self.implementationClassName is not None:
      oprot.writeFieldBegin('implementationClassName', TType.STRING, 5)
      oprot.writeString(self.implementationClassName)
      oprot.writeFieldEnd()
    if self.sourceTypeId is not None:
      oprot.writeFieldBegin('sourceTypeId', TType.STRING, 6)
      oprot.writeString(self.sourceTypeId)
      oprot.writeFieldEnd()
    if self.customParameterFormJavascriptPath is not None:
      oprot.writeFieldBegin('customParameterFormJavascriptPath', TType.STRING, 7)
      oprot.writeString(self.customParameterFormJavascriptPath)
      oprot.writeFieldEnd()
    if self.parameters is not None:
      oprot.writeFieldBegin('parameters', TType.LIST, 8)
      oprot.writeListBegin(TType.STRUCT, len(self.parameters))
      for iter33 in self.parameters:
        iter33.write(oprot)
      oprot.writeListEnd()
      oprot.writeFieldEnd()
    if self.addOnId is not None:
      oprot.writeFieldBegin('addOnId', TType.I64, 9)
      oprot.writeI64(self.addOnId)
      oprot.writeFieldEnd()
    if self.disabled is not None:
      oprot.writeFieldBegin('disabled', TType.BOOL, 10)
      oprot.writeBool(self.disabled)
      oprot.writeFieldEnd()
    if self.flowParameters is not None:
      oprot.writeFieldBegin('flowParameters', TType.LIST, 11)
      oprot.writeListBegin(TType.STRUCT, len(self.flowParameters))
      for iter34 in self.flowParameters:
        iter34.write(oprot)
      oprot.writeListEnd()
      oprot.writeFieldEnd()
    oprot.writeFieldStop()
    oprot.writeStructEnd()

  def validate(self):
    return


  def __hash__(self):
    value = 17
    value = (value * 31) ^ hash(self.sourceTypeDescriptionId)
    value = (value * 31) ^ hash(self.name)
    value = (value * 31) ^ hash(self.version)
    value = (value * 31) ^ hash(self.executionMethod)
    value = (value * 31) ^ hash(self.implementationClassName)
    value = (value * 31) ^ hash(self.sourceTypeId)
    value = (value * 31) ^ hash(self.customParameterFormJavascriptPath)
    value = (value * 31) ^ hash(self.parameters)
    value = (value * 31) ^ hash(self.addOnId)
    value = (value * 31) ^ hash(self.disabled)
    value = (value * 31) ^ hash(self.flowParameters)
    return value

  def __repr__(self):
    L = ['%s=%r' % (key, value)
      for key, value in self.__dict__.iteritems()]
    return '%s(%s)' % (self.__class__.__name__, ', '.join(L))

  def __eq__(self, other):
    return isinstance(other, self.__class__) and self.__dict__ == other.__dict__

  def __ne__(self, other):
    return not (self == other)

class TImportTransformConfiguration:
  """
  Attributes:
   - typeId
   - implementationClassName
   - config
   - importFlowId
   - id
   - position
   - enabled
  """

  thrift_spec = (
    None, # 0
    (1, TType.STRING, 'typeId', None, None, ), # 1
    (2, TType.STRING, 'implementationClassName', None, None, ), # 2
    (3, TType.MAP, 'config', (TType.STRING,None,TType.STRUCT,(koverse.thriftgen.ttypes.TConfigValue, koverse.thriftgen.ttypes.TConfigValue.thrift_spec)), None, ), # 3
    (4, TType.I64, 'importFlowId', None, None, ), # 4
    (5, TType.I64, 'id', None, None, ), # 5
    (6, TType.I64, 'position', None, None, ), # 6
    (7, TType.BOOL, 'enabled', None, None, ), # 7
  )

  def __init__(self, typeId=None, implementationClassName=None, config=None, importFlowId=None, id=None, position=None, enabled=None,):
    self.typeId = typeId
    self.implementationClassName = implementationClassName
    self.config = config
    self.importFlowId = importFlowId
    self.id = id
    self.position = position
    self.enabled = enabled

  def read(self, iprot):
    if iprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None and fastbinary is not None:
      fastbinary.decode_binary(self, iprot.trans, (self.__class__, self.thrift_spec))
      return
    iprot.readStructBegin()
    while True:
      (fname, ftype, fid) = iprot.readFieldBegin()
      if ftype == TType.STOP:
        break
      if fid == 1:
        if ftype == TType.STRING:
          self.typeId = iprot.readString()
        else:
          iprot.skip(ftype)
      elif fid == 2:
        if ftype == TType.STRING:
          self.implementationClassName = iprot.readString()
        else:
          iprot.skip(ftype)
      elif fid == 3:
        if ftype == TType.MAP:
          self.config = {}
          (_ktype36, _vtype37, _size35 ) = iprot.readMapBegin()
          for _i39 in xrange(_size35):
            _key40 = iprot.readString()
            _val41 = koverse.thriftgen.ttypes.TConfigValue()
            _val41.read(iprot)
            self.config[_key40] = _val41
          iprot.readMapEnd()
        else:
          iprot.skip(ftype)
      elif fid == 4:
        if ftype == TType.I64:
          self.importFlowId = iprot.readI64()
        else:
          iprot.skip(ftype)
      elif fid == 5:
        if ftype == TType.I64:
          self.id = iprot.readI64()
        else:
          iprot.skip(ftype)
      elif fid == 6:
        if ftype == TType.I64:
          self.position = iprot.readI64()
        else:
          iprot.skip(ftype)
      elif fid == 7:
        if ftype == TType.BOOL:
          self.enabled = iprot.readBool()
        else:
          iprot.skip(ftype)
      else:
        iprot.skip(ftype)
      iprot.readFieldEnd()
    iprot.readStructEnd()

  def write(self, oprot):
    if oprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and self.thrift_spec is not None and fastbinary is not None:
      oprot.trans.write(fastbinary.encode_binary(self, (self.__class__, self.thrift_spec)))
      return
    oprot.writeStructBegin('TImportTransformConfiguration')
    if self.typeId is not None:
      oprot.writeFieldBegin('typeId', TType.STRING, 1)
      oprot.writeString(self.typeId)
      oprot.writeFieldEnd()
    if self.implementationClassName is not None:
      oprot.writeFieldBegin('implementationClassName', TType.STRING, 2)
      oprot.writeString(self.implementationClassName)
      oprot.writeFieldEnd()
    if self.config is not None:
      oprot.writeFieldBegin('config', TType.MAP, 3)
      oprot.writeMapBegin(TType.STRING, TType.STRUCT, len(self.config))
      for kiter42,viter43 in self.config.items():
        oprot.writeString(kiter42)
        viter43.write(oprot)
      oprot.writeMapEnd()
      oprot.writeFieldEnd()
    if self.importFlowId is not None:
      oprot.writeFieldBegin('importFlowId', TType.I64, 4)
      oprot.writeI64(self.importFlowId)
      oprot.writeFieldEnd()
    if self.id is not None:
      oprot.writeFieldBegin('id', TType.I64, 5)
      oprot.writeI64(self.id)
      oprot.writeFieldEnd()
    if self.position is not None:
      oprot.writeFieldBegin('position', TType.I64, 6)
      oprot.writeI64(self.position)
      oprot.writeFieldEnd()
    if self.enabled is not None:
      oprot.writeFieldBegin('enabled', TType.BOOL, 7)
      oprot.writeBool(self.enabled)
      oprot.writeFieldEnd()
    oprot.writeFieldStop()
    oprot.writeStructEnd()

  def validate(self):
    return


  def __hash__(self):
    value = 17
    value = (value * 31) ^ hash(self.typeId)
    value = (value * 31) ^ hash(self.implementationClassName)
    value = (value * 31) ^ hash(self.config)
    value = (value * 31) ^ hash(self.importFlowId)
    value = (value * 31) ^ hash(self.id)
    value = (value * 31) ^ hash(self.position)
    value = (value * 31) ^ hash(self.enabled)
    return value

  def __repr__(self):
    L = ['%s=%r' % (key, value)
      for key, value in self.__dict__.iteritems()]
    return '%s(%s)' % (self.__class__.__name__, ', '.join(L))

  def __eq__(self, other):
    return isinstance(other, self.__class__) and self.__dict__ == other.__dict__

  def __ne__(self, other):
    return not (self == other)

class TSource:
  """
  Attributes:
   - sourceId
   - name
   - typeId
   - parameters
   - disabled
   - userId
   - importFlowId
   - clearOutputDataSet
  """

  thrift_spec = (
    None, # 0
    (1, TType.I64, 'sourceId', None, None, ), # 1
    (2, TType.STRING, 'name', None, None, ), # 2
    (3, TType.STRING, 'typeId', None, None, ), # 3
    (4, TType.MAP, 'parameters', (TType.STRING,None,TType.STRING,None), None, ), # 4
    (5, TType.BOOL, 'disabled', None, None, ), # 5
    (6, TType.I64, 'userId', None, None, ), # 6
    (7, TType.I64, 'importFlowId', None, None, ), # 7
    (8, TType.BOOL, 'clearOutputDataSet', None, None, ), # 8
  )

  def __init__(self, sourceId=None, name=None, typeId=None, parameters=None, disabled=None, userId=None, importFlowId=None, clearOutputDataSet=None,):
    self.sourceId = sourceId
    self.name = name
    self.typeId = typeId
    self.parameters = parameters
    self.disabled = disabled
    self.userId = userId
    self.importFlowId = importFlowId
    self.clearOutputDataSet = clearOutputDataSet

  def read(self, iprot):
    if iprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None and fastbinary is not None:
      fastbinary.decode_binary(self, iprot.trans, (self.__class__, self.thrift_spec))
      return
    iprot.readStructBegin()
    while True:
      (fname, ftype, fid) = iprot.readFieldBegin()
      if ftype == TType.STOP:
        break
      if fid == 1:
        if ftype == TType.I64:
          self.sourceId = iprot.readI64()
        else:
          iprot.skip(ftype)
      elif fid == 2:
        if ftype == TType.STRING:
          self.name = iprot.readString()
        else:
          iprot.skip(ftype)
      elif fid == 3:
        if ftype == TType.STRING:
          self.typeId = iprot.readString()
        else:
          iprot.skip(ftype)
      elif fid == 4:
        if ftype == TType.MAP:
          self.parameters = {}
          (_ktype45, _vtype46, _size44 ) = iprot.readMapBegin()
          for _i48 in xrange(_size44):
            _key49 = iprot.readString()
            _val50 = iprot.readString()
            self.parameters[_key49] = _val50
          iprot.readMapEnd()
        else:
          iprot.skip(ftype)
      elif fid == 5:
        if ftype == TType.BOOL:
          self.disabled = iprot.readBool()
        else:
          iprot.skip(ftype)
      elif fid == 6:
        if ftype == TType.I64:
          self.userId = iprot.readI64()
        else:
          iprot.skip(ftype)
      elif fid == 7:
        if ftype == TType.I64:
          self.importFlowId = iprot.readI64()
        else:
          iprot.skip(ftype)
      elif fid == 8:
        if ftype == TType.BOOL:
          self.clearOutputDataSet = iprot.readBool()
        else:
          iprot.skip(ftype)
      else:
        iprot.skip(ftype)
      iprot.readFieldEnd()
    iprot.readStructEnd()

  def write(self, oprot):
    if oprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and self.thrift_spec is not None and fastbinary is not None:
      oprot.trans.write(fastbinary.encode_binary(self, (self.__class__, self.thrift_spec)))
      return
    oprot.writeStructBegin('TSource')
    if self.sourceId is not None:
      oprot.writeFieldBegin('sourceId', TType.I64, 1)
      oprot.writeI64(self.sourceId)
      oprot.writeFieldEnd()
    if self.name is not None:
      oprot.writeFieldBegin('name', TType.STRING, 2)
      oprot.writeString(self.name)
      oprot.writeFieldEnd()
    if self.typeId is not None:
      oprot.writeFieldBegin('typeId', TType.STRING, 3)
      oprot.writeString(self.typeId)
      oprot.writeFieldEnd()
    if self.parameters is not None:
      oprot.writeFieldBegin('parameters', TType.MAP, 4)
      oprot.writeMapBegin(TType.STRING, TType.STRING, len(self.parameters))
      for kiter51,viter52 in self.parameters.items():
        oprot.writeString(kiter51)
        oprot.writeString(viter52)
      oprot.writeMapEnd()
      oprot.writeFieldEnd()
    if self.disabled is not None:
      oprot.writeFieldBegin('disabled', TType.BOOL, 5)
      oprot.writeBool(self.disabled)
      oprot.writeFieldEnd()
    if self.userId is not None:
      oprot.writeFieldBegin('userId', TType.I64, 6)
      oprot.writeI64(self.userId)
      oprot.writeFieldEnd()
    if self.importFlowId is not None:
      oprot.writeFieldBegin('importFlowId', TType.I64, 7)
      oprot.writeI64(self.importFlowId)
      oprot.writeFieldEnd()
    if self.clearOutputDataSet is not None:
      oprot.writeFieldBegin('clearOutputDataSet', TType.BOOL, 8)
      oprot.writeBool(self.clearOutputDataSet)
      oprot.writeFieldEnd()
    oprot.writeFieldStop()
    oprot.writeStructEnd()

  def validate(self):
    return


  def __hash__(self):
    value = 17
    value = (value * 31) ^ hash(self.sourceId)
    value = (value * 31) ^ hash(self.name)
    value = (value * 31) ^ hash(self.typeId)
    value = (value * 31) ^ hash(self.parameters)
    value = (value * 31) ^ hash(self.disabled)
    value = (value * 31) ^ hash(self.userId)
    value = (value * 31) ^ hash(self.importFlowId)
    value = (value * 31) ^ hash(self.clearOutputDataSet)
    return value

  def __repr__(self):
    L = ['%s=%r' % (key, value)
      for key, value in self.__dict__.iteritems()]
    return '%s(%s)' % (self.__class__.__name__, ', '.join(L))

  def __eq__(self, other):
    return isinstance(other, self.__class__) and self.__dict__ == other.__dict__

  def __ne__(self, other):
    return not (self == other)

class TImportTransformDescription:
  """
  Attributes:
   - displayName
   - typeId
   - description
   - implementationClassName
   - parameters
  """

  thrift_spec = (
    None, # 0
    (1, TType.STRING, 'displayName', None, None, ), # 1
    (2, TType.STRING, 'typeId', None, None, ), # 2
    (3, TType.STRING, 'description', None, None, ), # 3
    (4, TType.STRING, 'implementationClassName', None, None, ), # 4
    (5, TType.LIST, 'parameters', (TType.STRUCT,(koverse.thriftgen.ttypes.TParameter, koverse.thriftgen.ttypes.TParameter.thrift_spec)), None, ), # 5
  )

  def __init__(self, displayName=None, typeId=None, description=None, implementationClassName=None, parameters=None,):
    self.displayName = displayName
    self.typeId = typeId
    self.description = description
    self.implementationClassName = implementationClassName
    self.parameters = parameters

  def read(self, iprot):
    if iprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None and fastbinary is not None:
      fastbinary.decode_binary(self, iprot.trans, (self.__class__, self.thrift_spec))
      return
    iprot.readStructBegin()
    while True:
      (fname, ftype, fid) = iprot.readFieldBegin()
      if ftype == TType.STOP:
        break
      if fid == 1:
        if ftype == TType.STRING:
          self.displayName = iprot.readString()
        else:
          iprot.skip(ftype)
      elif fid == 2:
        if ftype == TType.STRING:
          self.typeId = iprot.readString()
        else:
          iprot.skip(ftype)
      elif fid == 3:
        if ftype == TType.STRING:
          self.description = iprot.readString()
        else:
          iprot.skip(ftype)
      elif fid == 4:
        if ftype == TType.STRING:
          self.implementationClassName = iprot.readString()
        else:
          iprot.skip(ftype)
      elif fid == 5:
        if ftype == TType.LIST:
          self.parameters = []
          (_etype56, _size53) = iprot.readListBegin()
          for _i57 in xrange(_size53):
            _elem58 = koverse.thriftgen.ttypes.TParameter()
            _elem58.read(iprot)
            self.parameters.append(_elem58)
          iprot.readListEnd()
        else:
          iprot.skip(ftype)
      else:
        iprot.skip(ftype)
      iprot.readFieldEnd()
    iprot.readStructEnd()

  def write(self, oprot):
    if oprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and self.thrift_spec is not None and fastbinary is not None:
      oprot.trans.write(fastbinary.encode_binary(self, (self.__class__, self.thrift_spec)))
      return
    oprot.writeStructBegin('TImportTransformDescription')
    if self.displayName is not None:
      oprot.writeFieldBegin('displayName', TType.STRING, 1)
      oprot.writeString(self.displayName)
      oprot.writeFieldEnd()
    if self.typeId is not None:
      oprot.writeFieldBegin('typeId', TType.STRING, 2)
      oprot.writeString(self.typeId)
      oprot.writeFieldEnd()
    if self.description is not None:
      oprot.writeFieldBegin('description', TType.STRING, 3)
      oprot.writeString(self.description)
      oprot.writeFieldEnd()
    if self.implementationClassName is not None:
      oprot.writeFieldBegin('implementationClassName', TType.STRING, 4)
      oprot.writeString(self.implementationClassName)
      oprot.writeFieldEnd()
    if self.parameters is not None:
      oprot.writeFieldBegin('parameters', TType.LIST, 5)
      oprot.writeListBegin(TType.STRUCT, len(self.parameters))
      for iter59 in self.parameters:
        iter59.write(oprot)
      oprot.writeListEnd()
      oprot.writeFieldEnd()
    oprot.writeFieldStop()
    oprot.writeStructEnd()

  def validate(self):
    return


  def __hash__(self):
    value = 17
    value = (value * 31) ^ hash(self.displayName)
    value = (value * 31) ^ hash(self.typeId)
    value = (value * 31) ^ hash(self.description)
    value = (value * 31) ^ hash(self.implementationClassName)
    value = (value * 31) ^ hash(self.parameters)
    return value

  def __repr__(self):
    L = ['%s=%r' % (key, value)
      for key, value in self.__dict__.iteritems()]
    return '%s(%s)' % (self.__class__.__name__, ', '.join(L))

  def __eq__(self, other):
    return isinstance(other, self.__class__) and self.__dict__ == other.__dict__

  def __ne__(self, other):
    return not (self == other)

class TImportJob:
  """
  Attributes:
   - jobAbstract
   - hadoopName
   - sourceId
   - collectionId
   - className
   - jobType
   - recordCount
   - transforms
   - responsibleUserId
  """

  thrift_spec = (
    None, # 0
    (1, TType.STRUCT, 'jobAbstract', (TJobAbstract, TJobAbstract.thrift_spec), None, ), # 1
    (2, TType.STRING, 'hadoopName', None, None, ), # 2
    (3, TType.I64, 'sourceId', None, None, ), # 3
    (4, TType.STRING, 'collectionId', None, None, ), # 4
    (5, TType.STRING, 'className', None, None, ), # 5
    (6, TType.I32, 'jobType', None, None, ), # 6
    (7, TType.I64, 'recordCount', None, None, ), # 7
    (8, TType.LIST, 'transforms', (TType.STRUCT,(TImportTransformConfiguration, TImportTransformConfiguration.thrift_spec)), None, ), # 8
    (9, TType.I64, 'responsibleUserId', None, None, ), # 9
  )

  def __init__(self, jobAbstract=None, hadoopName=None, sourceId=None, collectionId=None, className=None, jobType=None, recordCount=None, transforms=None, responsibleUserId=None,):
    self.jobAbstract = jobAbstract
    self.hadoopName = hadoopName
    self.sourceId = sourceId
    self.collectionId = collectionId
    self.className = className
    self.jobType = jobType
    self.recordCount = recordCount
    self.transforms = transforms
    self.responsibleUserId = responsibleUserId

  def read(self, iprot):
    if iprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None and fastbinary is not None:
      fastbinary.decode_binary(self, iprot.trans, (self.__class__, self.thrift_spec))
      return
    iprot.readStructBegin()
    while True:
      (fname, ftype, fid) = iprot.readFieldBegin()
      if ftype == TType.STOP:
        break
      if fid == 1:
        if ftype == TType.STRUCT:
          self.jobAbstract = TJobAbstract()
          self.jobAbstract.read(iprot)
        else:
          iprot.skip(ftype)
      elif fid == 2:
        if ftype == TType.STRING:
          self.hadoopName = iprot.readString()
        else:
          iprot.skip(ftype)
      elif fid == 3:
        if ftype == TType.I64:
          self.sourceId = iprot.readI64()
        else:
          iprot.skip(ftype)
      elif fid == 4:
        if ftype == TType.STRING:
          self.collectionId = iprot.readString()
        else:
          iprot.skip(ftype)
      elif fid == 5:
        if ftype == TType.STRING:
          self.className = iprot.readString()
        else:
          iprot.skip(ftype)
      elif fid == 6:
        if ftype == TType.I32:
          self.jobType = iprot.readI32()
        else:
          iprot.skip(ftype)
      elif fid == 7:
        if ftype == TType.I64:
          self.recordCount = iprot.readI64()
        else:
          iprot.skip(ftype)
      elif fid == 8:
        if ftype == TType.LIST:
          self.transforms = []
          (_etype63, _size60) = iprot.readListBegin()
          for _i64 in xrange(_size60):
            _elem65 = TImportTransformConfiguration()
            _elem65.read(iprot)
            self.transforms.append(_elem65)
          iprot.readListEnd()
        else:
          iprot.skip(ftype)
      elif fid == 9:
        if ftype == TType.I64:
          self.responsibleUserId = iprot.readI64()
        else:
          iprot.skip(ftype)
      else:
        iprot.skip(ftype)
      iprot.readFieldEnd()
    iprot.readStructEnd()

  def write(self, oprot):
    if oprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and self.thrift_spec is not None and fastbinary is not None:
      oprot.trans.write(fastbinary.encode_binary(self, (self.__class__, self.thrift_spec)))
      return
    oprot.writeStructBegin('TImportJob')
    if self.jobAbstract is not None:
      oprot.writeFieldBegin('jobAbstract', TType.STRUCT, 1)
      self.jobAbstract.write(oprot)
      oprot.writeFieldEnd()
    if self.hadoopName is not None:
      oprot.writeFieldBegin('hadoopName', TType.STRING, 2)
      oprot.writeString(self.hadoopName)
      oprot.writeFieldEnd()
    if self.sourceId is not None:
      oprot.writeFieldBegin('sourceId', TType.I64, 3)
      oprot.writeI64(self.sourceId)
      oprot.writeFieldEnd()
    if self.collectionId is not None:
      oprot.writeFieldBegin('collectionId', TType.STRING, 4)
      oprot.writeString(self.collectionId)
      oprot.writeFieldEnd()
    if self.className is not None:
      oprot.writeFieldBegin('className', TType.STRING, 5)
      oprot.writeString(self.className)
      oprot.writeFieldEnd()
    if self.jobType is not None:
      oprot.writeFieldBegin('jobType', TType.I32, 6)
      oprot.writeI32(self.jobType)
      oprot.writeFieldEnd()
    if self.recordCount is not None:
      oprot.writeFieldBegin('recordCount', TType.I64, 7)
      oprot.writeI64(self.recordCount)
      oprot.writeFieldEnd()
    if self.transforms is not None:
      oprot.writeFieldBegin('transforms', TType.LIST, 8)
      oprot.writeListBegin(TType.STRUCT, len(self.transforms))
      for iter66 in self.transforms:
        iter66.write(oprot)
      oprot.writeListEnd()
      oprot.writeFieldEnd()
    if self.responsibleUserId is not None:
      oprot.writeFieldBegin('responsibleUserId', TType.I64, 9)
      oprot.writeI64(self.responsibleUserId)
      oprot.writeFieldEnd()
    oprot.writeFieldStop()
    oprot.writeStructEnd()

  def validate(self):
    return


  def __hash__(self):
    value = 17
    value = (value * 31) ^ hash(self.jobAbstract)
    value = (value * 31) ^ hash(self.hadoopName)
    value = (value * 31) ^ hash(self.sourceId)
    value = (value * 31) ^ hash(self.collectionId)
    value = (value * 31) ^ hash(self.className)
    value = (value * 31) ^ hash(self.jobType)
    value = (value * 31) ^ hash(self.recordCount)
    value = (value * 31) ^ hash(self.transforms)
    value = (value * 31) ^ hash(self.responsibleUserId)
    return value

  def __repr__(self):
    L = ['%s=%r' % (key, value)
      for key, value in self.__dict__.iteritems()]
    return '%s(%s)' % (self.__class__.__name__, ', '.join(L))

  def __eq__(self, other):
    return isinstance(other, self.__class__) and self.__dict__ == other.__dict__

  def __ne__(self, other):
    return not (self == other)

class TTransformSchedule:
  """
  Attributes:
   - schedule
   - transformId
  """

  thrift_spec = (
    None, # 0
    (1, TType.STRUCT, 'schedule', (koverse.thriftgen.ttypes.TSchedule, koverse.thriftgen.ttypes.TSchedule.thrift_spec), None, ), # 1
    (2, TType.I64, 'transformId', None, None, ), # 2
  )

  def __init__(self, schedule=None, transformId=None,):
    self.schedule = schedule
    self.transformId = transformId

  def read(self, iprot):
    if iprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None and fastbinary is not None:
      fastbinary.decode_binary(self, iprot.trans, (self.__class__, self.thrift_spec))
      return
    iprot.readStructBegin()
    while True:
      (fname, ftype, fid) = iprot.readFieldBegin()
      if ftype == TType.STOP:
        break
      if fid == 1:
        if ftype == TType.STRUCT:
          self.schedule = koverse.thriftgen.ttypes.TSchedule()
          self.schedule.read(iprot)
        else:
          iprot.skip(ftype)
      elif fid == 2:
        if ftype == TType.I64:
          self.transformId = iprot.readI64()
        else:
          iprot.skip(ftype)
      else:
        iprot.skip(ftype)
      iprot.readFieldEnd()
    iprot.readStructEnd()

  def write(self, oprot):
    if oprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and self.thrift_spec is not None and fastbinary is not None:
      oprot.trans.write(fastbinary.encode_binary(self, (self.__class__, self.thrift_spec)))
      return
    oprot.writeStructBegin('TTransformSchedule')
    if self.schedule is not None:
      oprot.writeFieldBegin('schedule', TType.STRUCT, 1)
      self.schedule.write(oprot)
      oprot.writeFieldEnd()
    if self.transformId is not None:
      oprot.writeFieldBegin('transformId', TType.I64, 2)
      oprot.writeI64(self.transformId)
      oprot.writeFieldEnd()
    oprot.writeFieldStop()
    oprot.writeStructEnd()

  def validate(self):
    return


  def __hash__(self):
    value = 17
    value = (value * 31) ^ hash(self.schedule)
    value = (value * 31) ^ hash(self.transformId)
    return value

  def __repr__(self):
    L = ['%s=%r' % (key, value)
      for key, value in self.__dict__.iteritems()]
    return '%s(%s)' % (self.__class__.__name__, ', '.join(L))

  def __eq__(self, other):
    return isinstance(other, self.__class__) and self.__dict__ == other.__dict__

  def __ne__(self, other):
    return not (self == other)

class TExportSchedule:
  """
  Attributes:
   - schedule
   - sinkId
  """

  thrift_spec = (
    None, # 0
    (1, TType.STRUCT, 'schedule', (koverse.thriftgen.ttypes.TSchedule, koverse.thriftgen.ttypes.TSchedule.thrift_spec), None, ), # 1
    (2, TType.I64, 'sinkId', None, None, ), # 2
  )

  def __init__(self, schedule=None, sinkId=None,):
    self.schedule = schedule
    self.sinkId = sinkId

  def read(self, iprot):
    if iprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None and fastbinary is not None:
      fastbinary.decode_binary(self, iprot.trans, (self.__class__, self.thrift_spec))
      return
    iprot.readStructBegin()
    while True:
      (fname, ftype, fid) = iprot.readFieldBegin()
      if ftype == TType.STOP:
        break
      if fid == 1:
        if ftype == TType.STRUCT:
          self.schedule = koverse.thriftgen.ttypes.TSchedule()
          self.schedule.read(iprot)
        else:
          iprot.skip(ftype)
      elif fid == 2:
        if ftype == TType.I64:
          self.sinkId = iprot.readI64()
        else:
          iprot.skip(ftype)
      else:
        iprot.skip(ftype)
      iprot.readFieldEnd()
    iprot.readStructEnd()

  def write(self, oprot):
    if oprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and self.thrift_spec is not None and fastbinary is not None:
      oprot.trans.write(fastbinary.encode_binary(self, (self.__class__, self.thrift_spec)))
      return
    oprot.writeStructBegin('TExportSchedule')
    if self.schedule is not None:
      oprot.writeFieldBegin('schedule', TType.STRUCT, 1)
      self.schedule.write(oprot)
      oprot.writeFieldEnd()
    if self.sinkId is not None:
      oprot.writeFieldBegin('sinkId', TType.I64, 2)
      oprot.writeI64(self.sinkId)
      oprot.writeFieldEnd()
    oprot.writeFieldStop()
    oprot.writeStructEnd()

  def validate(self):
    return


  def __hash__(self):
    value = 17
    value = (value * 31) ^ hash(self.schedule)
    value = (value * 31) ^ hash(self.sinkId)
    return value

  def __repr__(self):
    L = ['%s=%r' % (key, value)
      for key, value in self.__dict__.iteritems()]
    return '%s(%s)' % (self.__class__.__name__, ', '.join(L))

  def __eq__(self, other):
    return isinstance(other, self.__class__) and self.__dict__ == other.__dict__

  def __ne__(self, other):
    return not (self == other)

class TImportFlowSchedule:
  """
  Attributes:
   - schedule
   - importFlowId
  """

  thrift_spec = (
    None, # 0
    (1, TType.STRUCT, 'schedule', (koverse.thriftgen.ttypes.TSchedule, koverse.thriftgen.ttypes.TSchedule.thrift_spec), None, ), # 1
    (2, TType.I64, 'importFlowId', None, None, ), # 2
  )

  def __init__(self, schedule=None, importFlowId=None,):
    self.schedule = schedule
    self.importFlowId = importFlowId

  def read(self, iprot):
    if iprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None and fastbinary is not None:
      fastbinary.decode_binary(self, iprot.trans, (self.__class__, self.thrift_spec))
      return
    iprot.readStructBegin()
    while True:
      (fname, ftype, fid) = iprot.readFieldBegin()
      if ftype == TType.STOP:
        break
      if fid == 1:
        if ftype == TType.STRUCT:
          self.schedule = koverse.thriftgen.ttypes.TSchedule()
          self.schedule.read(iprot)
        else:
          iprot.skip(ftype)
      elif fid == 2:
        if ftype == TType.I64:
          self.importFlowId = iprot.readI64()
        else:
          iprot.skip(ftype)
      else:
        iprot.skip(ftype)
      iprot.readFieldEnd()
    iprot.readStructEnd()

  def write(self, oprot):
    if oprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and self.thrift_spec is not None and fastbinary is not None:
      oprot.trans.write(fastbinary.encode_binary(self, (self.__class__, self.thrift_spec)))
      return
    oprot.writeStructBegin('TImportFlowSchedule')
    if self.schedule is not None:
      oprot.writeFieldBegin('schedule', TType.STRUCT, 1)
      self.schedule.write(oprot)
      oprot.writeFieldEnd()
    if self.importFlowId is not None:
      oprot.writeFieldBegin('importFlowId', TType.I64, 2)
      oprot.writeI64(self.importFlowId)
      oprot.writeFieldEnd()
    oprot.writeFieldStop()
    oprot.writeStructEnd()

  def validate(self):
    return


  def __hash__(self):
    value = 17
    value = (value * 31) ^ hash(self.schedule)
    value = (value * 31) ^ hash(self.importFlowId)
    return value

  def __repr__(self):
    L = ['%s=%r' % (key, value)
      for key, value in self.__dict__.iteritems()]
    return '%s(%s)' % (self.__class__.__name__, ', '.join(L))

  def __eq__(self, other):
    return isinstance(other, self.__class__) and self.__dict__ == other.__dict__

  def __ne__(self, other):
    return not (self == other)

class TImportFlow:
  """
  Attributes:
   - importFlowId
   - creationDate
   - disabledDate
   - lastUpdatedDate
   - executionCount
   - lastExecutionDate
   - sourceId
   - dataCollectionId
   - responsibleUserId
   - type
   - disabled
   - schedules
   - transforms
   - configurationOptions
   - ingestState
  """

  thrift_spec = (
    None, # 0
    (1, TType.I64, 'importFlowId', None, None, ), # 1
    (2, TType.I64, 'creationDate', None, None, ), # 2
    (3, TType.I64, 'disabledDate', None, None, ), # 3
    (4, TType.I64, 'lastUpdatedDate', None, None, ), # 4
    (5, TType.I64, 'executionCount', None, None, ), # 5
    (6, TType.I64, 'lastExecutionDate', None, None, ), # 6
    (7, TType.I64, 'sourceId', None, None, ), # 7
    (8, TType.STRING, 'dataCollectionId', None, None, ), # 8
    (9, TType.I64, 'responsibleUserId', None, None, ), # 9
    (10, TType.STRING, 'type', None, None, ), # 10
    (11, TType.BOOL, 'disabled', None, None, ), # 11
    (12, TType.LIST, 'schedules', (TType.STRUCT,(TImportFlowSchedule, TImportFlowSchedule.thrift_spec)), None, ), # 12
    (13, TType.LIST, 'transforms', (TType.STRUCT,(TImportTransformConfiguration, TImportTransformConfiguration.thrift_spec)), None, ), # 13
    (14, TType.MAP, 'configurationOptions', (TType.STRING,None,TType.STRING,None), None, ), # 14
    (15, TType.MAP, 'ingestState', (TType.STRING,None,TType.STRING,None), None, ), # 15
  )

  def __init__(self, importFlowId=None, creationDate=None, disabledDate=None, lastUpdatedDate=None, executionCount=None, lastExecutionDate=None, sourceId=None, dataCollectionId=None, responsibleUserId=None, type=None, disabled=None, schedules=None, transforms=None, configurationOptions=None, ingestState=None,):
    self.importFlowId = importFlowId
    self.creationDate = creationDate
    self.disabledDate = disabledDate
    self.lastUpdatedDate = lastUpdatedDate
    self.executionCount = executionCount
    self.lastExecutionDate = lastExecutionDate
    self.sourceId = sourceId
    self.dataCollectionId = dataCollectionId
    self.responsibleUserId = responsibleUserId
    self.type = type
    self.disabled = disabled
    self.schedules = schedules
    self.transforms = transforms
    self.configurationOptions = configurationOptions
    self.ingestState = ingestState

  def read(self, iprot):
    if iprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None and fastbinary is not None:
      fastbinary.decode_binary(self, iprot.trans, (self.__class__, self.thrift_spec))
      return
    iprot.readStructBegin()
    while True:
      (fname, ftype, fid) = iprot.readFieldBegin()
      if ftype == TType.STOP:
        break
      if fid == 1:
        if ftype == TType.I64:
          self.importFlowId = iprot.readI64()
        else:
          iprot.skip(ftype)
      elif fid == 2:
        if ftype == TType.I64:
          self.creationDate = iprot.readI64()
        else:
          iprot.skip(ftype)
      elif fid == 3:
        if ftype == TType.I64:
          self.disabledDate = iprot.readI64()
        else:
          iprot.skip(ftype)
      elif fid == 4:
        if ftype == TType.I64:
          self.lastUpdatedDate = iprot.readI64()
        else:
          iprot.skip(ftype)
      elif fid == 5:
        if ftype == TType.I64:
          self.executionCount = iprot.readI64()
        else:
          iprot.skip(ftype)
      elif fid == 6:
        if ftype == TType.I64:
          self.lastExecutionDate = iprot.readI64()
        else:
          iprot.skip(ftype)
      elif fid == 7:
        if ftype == TType.I64:
          self.sourceId = iprot.readI64()
        else:
          iprot.skip(ftype)
      elif fid == 8:
        if ftype == TType.STRING:
          self.dataCollectionId = iprot.readString()
        else:
          iprot.skip(ftype)
      elif fid == 9:
        if ftype == TType.I64:
          self.responsibleUserId = iprot.readI64()
        else:
          iprot.skip(ftype)
      elif fid == 10:
        if ftype == TType.STRING:
          self.type = iprot.readString()
        else:
          iprot.skip(ftype)
      elif fid == 11:
        if ftype == TType.BOOL:
          self.disabled = iprot.readBool()
        else:
          iprot.skip(ftype)
      elif fid == 12:
        if ftype == TType.LIST:
          self.schedules = []
          (_etype70, _size67) = iprot.readListBegin()
          for _i71 in xrange(_size67):
            _elem72 = TImportFlowSchedule()
            _elem72.read(iprot)
            self.schedules.append(_elem72)
          iprot.readListEnd()
        else:
          iprot.skip(ftype)
      elif fid == 13:
        if ftype == TType.LIST:
          self.transforms = []
          (_etype76, _size73) = iprot.readListBegin()
          for _i77 in xrange(_size73):
            _elem78 = TImportTransformConfiguration()
            _elem78.read(iprot)
            self.transforms.append(_elem78)
          iprot.readListEnd()
        else:
          iprot.skip(ftype)
      elif fid == 14:
        if ftype == TType.MAP:
          self.configurationOptions = {}
          (_ktype80, _vtype81, _size79 ) = iprot.readMapBegin()
          for _i83 in xrange(_size79):
            _key84 = iprot.readString()
            _val85 = iprot.readString()
            self.configurationOptions[_key84] = _val85
          iprot.readMapEnd()
        else:
          iprot.skip(ftype)
      elif fid == 15:
        if ftype == TType.MAP:
          self.ingestState = {}
          (_ktype87, _vtype88, _size86 ) = iprot.readMapBegin()
          for _i90 in xrange(_size86):
            _key91 = iprot.readString()
            _val92 = iprot.readString()
            self.ingestState[_key91] = _val92
          iprot.readMapEnd()
        else:
          iprot.skip(ftype)
      else:
        iprot.skip(ftype)
      iprot.readFieldEnd()
    iprot.readStructEnd()

  def write(self, oprot):
    if oprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and self.thrift_spec is not None and fastbinary is not None:
      oprot.trans.write(fastbinary.encode_binary(self, (self.__class__, self.thrift_spec)))
      return
    oprot.writeStructBegin('TImportFlow')
    if self.importFlowId is not None:
      oprot.writeFieldBegin('importFlowId', TType.I64, 1)
      oprot.writeI64(self.importFlowId)
      oprot.writeFieldEnd()
    if self.creationDate is not None:
      oprot.writeFieldBegin('creationDate', TType.I64, 2)
      oprot.writeI64(self.creationDate)
      oprot.writeFieldEnd()
    if self.disabledDate is not None:
      oprot.writeFieldBegin('disabledDate', TType.I64, 3)
      oprot.writeI64(self.disabledDate)
      oprot.writeFieldEnd()
    if self.lastUpdatedDate is not None:
      oprot.writeFieldBegin('lastUpdatedDate', TType.I64, 4)
      oprot.writeI64(self.lastUpdatedDate)
      oprot.writeFieldEnd()
    if self.executionCount is not None:
      oprot.writeFieldBegin('executionCount', TType.I64, 5)
      oprot.writeI64(self.executionCount)
      oprot.writeFieldEnd()
    if self.lastExecutionDate is not None:
      oprot.writeFieldBegin('lastExecutionDate', TType.I64, 6)
      oprot.writeI64(self.lastExecutionDate)
      oprot.writeFieldEnd()
    if self.sourceId is not None:
      oprot.writeFieldBegin('sourceId', TType.I64, 7)
      oprot.writeI64(self.sourceId)
      oprot.writeFieldEnd()
    if self.dataCollectionId is not None:
      oprot.writeFieldBegin('dataCollectionId', TType.STRING, 8)
      oprot.writeString(self.dataCollectionId)
      oprot.writeFieldEnd()
    if self.responsibleUserId is not None:
      oprot.writeFieldBegin('responsibleUserId', TType.I64, 9)
      oprot.writeI64(self.responsibleUserId)
      oprot.writeFieldEnd()
    if self.type is not None:
      oprot.writeFieldBegin('type', TType.STRING, 10)
      oprot.writeString(self.type)
      oprot.writeFieldEnd()
    if self.disabled is not None:
      oprot.writeFieldBegin('disabled', TType.BOOL, 11)
      oprot.writeBool(self.disabled)
      oprot.writeFieldEnd()
    if self.schedules is not None:
      oprot.writeFieldBegin('schedules', TType.LIST, 12)
      oprot.writeListBegin(TType.STRUCT, len(self.schedules))
      for iter93 in self.schedules:
        iter93.write(oprot)
      oprot.writeListEnd()
      oprot.writeFieldEnd()
    if self.transforms is not None:
      oprot.writeFieldBegin('transforms', TType.LIST, 13)
      oprot.writeListBegin(TType.STRUCT, len(self.transforms))
      for iter94 in self.transforms:
        iter94.write(oprot)
      oprot.writeListEnd()
      oprot.writeFieldEnd()
    if self.configurationOptions is not None:
      oprot.writeFieldBegin('configurationOptions', TType.MAP, 14)
      oprot.writeMapBegin(TType.STRING, TType.STRING, len(self.configurationOptions))
      for kiter95,viter96 in self.configurationOptions.items():
        oprot.writeString(kiter95)
        oprot.writeString(viter96)
      oprot.writeMapEnd()
      oprot.writeFieldEnd()
    if self.ingestState is not None:
      oprot.writeFieldBegin('ingestState', TType.MAP, 15)
      oprot.writeMapBegin(TType.STRING, TType.STRING, len(self.ingestState))
      for kiter97,viter98 in self.ingestState.items():
        oprot.writeString(kiter97)
        oprot.writeString(viter98)
      oprot.writeMapEnd()
      oprot.writeFieldEnd()
    oprot.writeFieldStop()
    oprot.writeStructEnd()

  def validate(self):
    return


  def __hash__(self):
    value = 17
    value = (value * 31) ^ hash(self.importFlowId)
    value = (value * 31) ^ hash(self.creationDate)
    value = (value * 31) ^ hash(self.disabledDate)
    value = (value * 31) ^ hash(self.lastUpdatedDate)
    value = (value * 31) ^ hash(self.executionCount)
    value = (value * 31) ^ hash(self.lastExecutionDate)
    value = (value * 31) ^ hash(self.sourceId)
    value = (value * 31) ^ hash(self.dataCollectionId)
    value = (value * 31) ^ hash(self.responsibleUserId)
    value = (value * 31) ^ hash(self.type)
    value = (value * 31) ^ hash(self.disabled)
    value = (value * 31) ^ hash(self.schedules)
    value = (value * 31) ^ hash(self.transforms)
    value = (value * 31) ^ hash(self.configurationOptions)
    value = (value * 31) ^ hash(self.ingestState)
    return value

  def __repr__(self):
    L = ['%s=%r' % (key, value)
      for key, value in self.__dict__.iteritems()]
    return '%s(%s)' % (self.__class__.__name__, ', '.join(L))

  def __eq__(self, other):
    return isinstance(other, self.__class__) and self.__dict__ == other.__dict__

  def __ne__(self, other):
    return not (self == other)

class TTransformTypeStageDescription:
  """
  Attributes:
   - options
   - className
   - stageType
   - mapInputKeyClassName
   - mapInputValueClassName
   - mapOutputKeyClassName
   - mapOutputValueClassName
  """

  thrift_spec = (
    None, # 0
    (1, TType.MAP, 'options', (TType.STRING,None,TType.STRING,None), None, ), # 1
    (2, TType.STRING, 'className', None, None, ), # 2
    (3, TType.I32, 'stageType', None, None, ), # 3
    (4, TType.STRING, 'mapInputKeyClassName', None, None, ), # 4
    (5, TType.STRING, 'mapInputValueClassName', None, None, ), # 5
    (6, TType.STRING, 'mapOutputKeyClassName', None, None, ), # 6
    (7, TType.STRING, 'mapOutputValueClassName', None, None, ), # 7
  )

  def __init__(self, options=None, className=None, stageType=None, mapInputKeyClassName=None, mapInputValueClassName=None, mapOutputKeyClassName=None, mapOutputValueClassName=None,):
    self.options = options
    self.className = className
    self.stageType = stageType
    self.mapInputKeyClassName = mapInputKeyClassName
    self.mapInputValueClassName = mapInputValueClassName
    self.mapOutputKeyClassName = mapOutputKeyClassName
    self.mapOutputValueClassName = mapOutputValueClassName

  def read(self, iprot):
    if iprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None and fastbinary is not None:
      fastbinary.decode_binary(self, iprot.trans, (self.__class__, self.thrift_spec))
      return
    iprot.readStructBegin()
    while True:
      (fname, ftype, fid) = iprot.readFieldBegin()
      if ftype == TType.STOP:
        break
      if fid == 1:
        if ftype == TType.MAP:
          self.options = {}
          (_ktype100, _vtype101, _size99 ) = iprot.readMapBegin()
          for _i103 in xrange(_size99):
            _key104 = iprot.readString()
            _val105 = iprot.readString()
            self.options[_key104] = _val105
          iprot.readMapEnd()
        else:
          iprot.skip(ftype)
      elif fid == 2:
        if ftype == TType.STRING:
          self.className = iprot.readString()
        else:
          iprot.skip(ftype)
      elif fid == 3:
        if ftype == TType.I32:
          self.stageType = iprot.readI32()
        else:
          iprot.skip(ftype)
      elif fid == 4:
        if ftype == TType.STRING:
          self.mapInputKeyClassName = iprot.readString()
        else:
          iprot.skip(ftype)
      elif fid == 5:
        if ftype == TType.STRING:
          self.mapInputValueClassName = iprot.readString()
        else:
          iprot.skip(ftype)
      elif fid == 6:
        if ftype == TType.STRING:
          self.mapOutputKeyClassName = iprot.readString()
        else:
          iprot.skip(ftype)
      elif fid == 7:
        if ftype == TType.STRING:
          self.mapOutputValueClassName = iprot.readString()
        else:
          iprot.skip(ftype)
      else:
        iprot.skip(ftype)
      iprot.readFieldEnd()
    iprot.readStructEnd()

  def write(self, oprot):
    if oprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and self.thrift_spec is not None and fastbinary is not None:
      oprot.trans.write(fastbinary.encode_binary(self, (self.__class__, self.thrift_spec)))
      return
    oprot.writeStructBegin('TTransformTypeStageDescription')
    if self.options is not None:
      oprot.writeFieldBegin('options', TType.MAP, 1)
      oprot.writeMapBegin(TType.STRING, TType.STRING, len(self.options))
      for kiter106,viter107 in self.options.items():
        oprot.writeString(kiter106)
        oprot.writeString(viter107)
      oprot.writeMapEnd()
      oprot.writeFieldEnd()
    if self.className is not None:
      oprot.writeFieldBegin('className', TType.STRING, 2)
      oprot.writeString(self.className)
      oprot.writeFieldEnd()
    if self.stageType is not None:
      oprot.writeFieldBegin('stageType', TType.I32, 3)
      oprot.writeI32(self.stageType)
      oprot.writeFieldEnd()
    if self.mapInputKeyClassName is not None:
      oprot.writeFieldBegin('mapInputKeyClassName', TType.STRING, 4)
      oprot.writeString(self.mapInputKeyClassName)
      oprot.writeFieldEnd()
    if self.mapInputValueClassName is not None:
      oprot.writeFieldBegin('mapInputValueClassName', TType.STRING, 5)
      oprot.writeString(self.mapInputValueClassName)
      oprot.writeFieldEnd()
    if self.mapOutputKeyClassName is not None:
      oprot.writeFieldBegin('mapOutputKeyClassName', TType.STRING, 6)
      oprot.writeString(self.mapOutputKeyClassName)
      oprot.writeFieldEnd()
    if self.mapOutputValueClassName is not None:
      oprot.writeFieldBegin('mapOutputValueClassName', TType.STRING, 7)
      oprot.writeString(self.mapOutputValueClassName)
      oprot.writeFieldEnd()
    oprot.writeFieldStop()
    oprot.writeStructEnd()

  def validate(self):
    return


  def __hash__(self):
    value = 17
    value = (value * 31) ^ hash(self.options)
    value = (value * 31) ^ hash(self.className)
    value = (value * 31) ^ hash(self.stageType)
    value = (value * 31) ^ hash(self.mapInputKeyClassName)
    value = (value * 31) ^ hash(self.mapInputValueClassName)
    value = (value * 31) ^ hash(self.mapOutputKeyClassName)
    value = (value * 31) ^ hash(self.mapOutputValueClassName)
    return value

  def __repr__(self):
    L = ['%s=%r' % (key, value)
      for key, value in self.__dict__.iteritems()]
    return '%s(%s)' % (self.__class__.__name__, ', '.join(L))

  def __eq__(self, other):
    return isinstance(other, self.__class__) and self.__dict__ == other.__dict__

  def __ne__(self, other):
    return not (self == other)

class TTransform:
  """
  Attributes:
   - transformId
   - name
   - type
   - userId
   - jobIds
   - parameters
   - backend
   - disabled
   - creationDate
   - lastUpdatedDate
   - replaceOutputData
   - scheduleType
   - minimumExecutionPeriod
   - inputDataWindowType
   - inputDataSlidingWindowSizeSeconds
   - inputDataSlidingWindowOffsetSeconds
  """

  thrift_spec = (
    None, # 0
    (1, TType.I64, 'transformId', None, None, ), # 1
    (2, TType.STRING, 'name', None, None, ), # 2
    (3, TType.STRING, 'type', None, None, ), # 3
    (4, TType.I64, 'userId', None, None, ), # 4
    (5, TType.LIST, 'jobIds', (TType.I64,None), None, ), # 5
    (6, TType.MAP, 'parameters', (TType.STRING,None,TType.STRUCT,(koverse.thriftgen.ttypes.TConfigValue, koverse.thriftgen.ttypes.TConfigValue.thrift_spec)), None, ), # 6
    (7, TType.STRING, 'backend', None, None, ), # 7
    (8, TType.BOOL, 'disabled', None, None, ), # 8
    (9, TType.I64, 'creationDate', None, None, ), # 9
    (10, TType.I64, 'lastUpdatedDate', None, None, ), # 10
    (11, TType.BOOL, 'replaceOutputData', None, None, ), # 11
    (12, TType.STRING, 'scheduleType', None, None, ), # 12
    (13, TType.I64, 'minimumExecutionPeriod', None, None, ), # 13
    (14, TType.STRING, 'inputDataWindowType', None, None, ), # 14
    (15, TType.I64, 'inputDataSlidingWindowSizeSeconds', None, None, ), # 15
    (16, TType.I64, 'inputDataSlidingWindowOffsetSeconds', None, None, ), # 16
  )

  def __init__(self, transformId=None, name=None, type=None, userId=None, jobIds=None, parameters=None, backend=None, disabled=None, creationDate=None, lastUpdatedDate=None, replaceOutputData=None, scheduleType=None, minimumExecutionPeriod=None, inputDataWindowType=None, inputDataSlidingWindowSizeSeconds=None, inputDataSlidingWindowOffsetSeconds=None,):
    self.transformId = transformId
    self.name = name
    self.type = type
    self.userId = userId
    self.jobIds = jobIds
    self.parameters = parameters
    self.backend = backend
    self.disabled = disabled
    self.creationDate = creationDate
    self.lastUpdatedDate = lastUpdatedDate
    self.replaceOutputData = replaceOutputData
    self.scheduleType = scheduleType
    self.minimumExecutionPeriod = minimumExecutionPeriod
    self.inputDataWindowType = inputDataWindowType
    self.inputDataSlidingWindowSizeSeconds = inputDataSlidingWindowSizeSeconds
    self.inputDataSlidingWindowOffsetSeconds = inputDataSlidingWindowOffsetSeconds

  def read(self, iprot):
    if iprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None and fastbinary is not None:
      fastbinary.decode_binary(self, iprot.trans, (self.__class__, self.thrift_spec))
      return
    iprot.readStructBegin()
    while True:
      (fname, ftype, fid) = iprot.readFieldBegin()
      if ftype == TType.STOP:
        break
      if fid == 1:
        if ftype == TType.I64:
          self.transformId = iprot.readI64()
        else:
          iprot.skip(ftype)
      elif fid == 2:
        if ftype == TType.STRING:
          self.name = iprot.readString()
        else:
          iprot.skip(ftype)
      elif fid == 3:
        if ftype == TType.STRING:
          self.type = iprot.readString()
        else:
          iprot.skip(ftype)
      elif fid == 4:
        if ftype == TType.I64:
          self.userId = iprot.readI64()
        else:
          iprot.skip(ftype)
      elif fid == 5:
        if ftype == TType.LIST:
          self.jobIds = []
          (_etype111, _size108) = iprot.readListBegin()
          for _i112 in xrange(_size108):
            _elem113 = iprot.readI64()
            self.jobIds.append(_elem113)
          iprot.readListEnd()
        else:
          iprot.skip(ftype)
      elif fid == 6:
        if ftype == TType.MAP:
          self.parameters = {}
          (_ktype115, _vtype116, _size114 ) = iprot.readMapBegin()
          for _i118 in xrange(_size114):
            _key119 = iprot.readString()
            _val120 = koverse.thriftgen.ttypes.TConfigValue()
            _val120.read(iprot)
            self.parameters[_key119] = _val120
          iprot.readMapEnd()
        else:
          iprot.skip(ftype)
      elif fid == 7:
        if ftype == TType.STRING:
          self.backend = iprot.readString()
        else:
          iprot.skip(ftype)
      elif fid == 8:
        if ftype == TType.BOOL:
          self.disabled = iprot.readBool()
        else:
          iprot.skip(ftype)
      elif fid == 9:
        if ftype == TType.I64:
          self.creationDate = iprot.readI64()
        else:
          iprot.skip(ftype)
      elif fid == 10:
        if ftype == TType.I64:
          self.lastUpdatedDate = iprot.readI64()
        else:
          iprot.skip(ftype)
      elif fid == 11:
        if ftype == TType.BOOL:
          self.replaceOutputData = iprot.readBool()
        else:
          iprot.skip(ftype)
      elif fid == 12:
        if ftype == TType.STRING:
          self.scheduleType = iprot.readString()
        else:
          iprot.skip(ftype)
      elif fid == 13:
        if ftype == TType.I64:
          self.minimumExecutionPeriod = iprot.readI64()
        else:
          iprot.skip(ftype)
      elif fid == 14:
        if ftype == TType.STRING:
          self.inputDataWindowType = iprot.readString()
        else:
          iprot.skip(ftype)
      elif fid == 15:
        if ftype == TType.I64:
          self.inputDataSlidingWindowSizeSeconds = iprot.readI64()
        else:
          iprot.skip(ftype)
      elif fid == 16:
        if ftype == TType.I64:
          self.inputDataSlidingWindowOffsetSeconds = iprot.readI64()
        else:
          iprot.skip(ftype)
      else:
        iprot.skip(ftype)
      iprot.readFieldEnd()
    iprot.readStructEnd()

  def write(self, oprot):
    if oprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and self.thrift_spec is not None and fastbinary is not None:
      oprot.trans.write(fastbinary.encode_binary(self, (self.__class__, self.thrift_spec)))
      return
    oprot.writeStructBegin('TTransform')
    if self.transformId is not None:
      oprot.writeFieldBegin('transformId', TType.I64, 1)
      oprot.writeI64(self.transformId)
      oprot.writeFieldEnd()
    if self.name is not None:
      oprot.writeFieldBegin('name', TType.STRING, 2)
      oprot.writeString(self.name)
      oprot.writeFieldEnd()
    if self.type is not None:
      oprot.writeFieldBegin('type', TType.STRING, 3)
      oprot.writeString(self.type)
      oprot.writeFieldEnd()
    if self.userId is not None:
      oprot.writeFieldBegin('userId', TType.I64, 4)
      oprot.writeI64(self.userId)
      oprot.writeFieldEnd()
    if self.jobIds is not None:
      oprot.writeFieldBegin('jobIds', TType.LIST, 5)
      oprot.writeListBegin(TType.I64, len(self.jobIds))
      for iter121 in self.jobIds:
        oprot.writeI64(iter121)
      oprot.writeListEnd()
      oprot.writeFieldEnd()
    if self.parameters is not None:
      oprot.writeFieldBegin('parameters', TType.MAP, 6)
      oprot.writeMapBegin(TType.STRING, TType.STRUCT, len(self.parameters))
      for kiter122,viter123 in self.parameters.items():
        oprot.writeString(kiter122)
        viter123.write(oprot)
      oprot.writeMapEnd()
      oprot.writeFieldEnd()
    if self.backend is not None:
      oprot.writeFieldBegin('backend', TType.STRING, 7)
      oprot.writeString(self.backend)
      oprot.writeFieldEnd()
    if self.disabled is not None:
      oprot.writeFieldBegin('disabled', TType.BOOL, 8)
      oprot.writeBool(self.disabled)
      oprot.writeFieldEnd()
    if self.creationDate is not None:
      oprot.writeFieldBegin('creationDate', TType.I64, 9)
      oprot.writeI64(self.creationDate)
      oprot.writeFieldEnd()
    if self.lastUpdatedDate is not None:
      oprot.writeFieldBegin('lastUpdatedDate', TType.I64, 10)
      oprot.writeI64(self.lastUpdatedDate)
      oprot.writeFieldEnd()
    if self.replaceOutputData is not None:
      oprot.writeFieldBegin('replaceOutputData', TType.BOOL, 11)
      oprot.writeBool(self.replaceOutputData)
      oprot.writeFieldEnd()
    if self.scheduleType is not None:
      oprot.writeFieldBegin('scheduleType', TType.STRING, 12)
      oprot.writeString(self.scheduleType)
      oprot.writeFieldEnd()
    if self.minimumExecutionPeriod is not None:
      oprot.writeFieldBegin('minimumExecutionPeriod', TType.I64, 13)
      oprot.writeI64(self.minimumExecutionPeriod)
      oprot.writeFieldEnd()
    if self.inputDataWindowType is not None:
      oprot.writeFieldBegin('inputDataWindowType', TType.STRING, 14)
      oprot.writeString(self.inputDataWindowType)
      oprot.writeFieldEnd()
    if self.inputDataSlidingWindowSizeSeconds is not None:
      oprot.writeFieldBegin('inputDataSlidingWindowSizeSeconds', TType.I64, 15)
      oprot.writeI64(self.inputDataSlidingWindowSizeSeconds)
      oprot.writeFieldEnd()
    if self.inputDataSlidingWindowOffsetSeconds is not None:
      oprot.writeFieldBegin('inputDataSlidingWindowOffsetSeconds', TType.I64, 16)
      oprot.writeI64(self.inputDataSlidingWindowOffsetSeconds)
      oprot.writeFieldEnd()
    oprot.writeFieldStop()
    oprot.writeStructEnd()

  def validate(self):
    return


  def __hash__(self):
    value = 17
    value = (value * 31) ^ hash(self.transformId)
    value = (value * 31) ^ hash(self.name)
    value = (value * 31) ^ hash(self.type)
    value = (value * 31) ^ hash(self.userId)
    value = (value * 31) ^ hash(self.jobIds)
    value = (value * 31) ^ hash(self.parameters)
    value = (value * 31) ^ hash(self.backend)
    value = (value * 31) ^ hash(self.disabled)
    value = (value * 31) ^ hash(self.creationDate)
    value = (value * 31) ^ hash(self.lastUpdatedDate)
    value = (value * 31) ^ hash(self.replaceOutputData)
    value = (value * 31) ^ hash(self.scheduleType)
    value = (value * 31) ^ hash(self.minimumExecutionPeriod)
    value = (value * 31) ^ hash(self.inputDataWindowType)
    value = (value * 31) ^ hash(self.inputDataSlidingWindowSizeSeconds)
    value = (value * 31) ^ hash(self.inputDataSlidingWindowOffsetSeconds)
    return value

  def __repr__(self):
    L = ['%s=%r' % (key, value)
      for key, value in self.__dict__.iteritems()]
    return '%s(%s)' % (self.__class__.__name__, ', '.join(L))

  def __eq__(self, other):
    return isinstance(other, self.__class__) and self.__dict__ == other.__dict__

  def __ne__(self, other):
    return not (self == other)

class TTransformJob:
  """
  Attributes:
   - batchJob
   - transformId
   - parameters
   - stages
   - transformTypeId
   - requestedWorkers
   - backend
   - replaceOutputData
   - minimumExecutionPeriod
   - inputDataWindowType
   - inputDataSlidingWindowSizeSeconds
   - hadoopName
   - mapreduceJobIds
  """

  thrift_spec = (
    None, # 0
    (1, TType.STRUCT, 'batchJob', (TBatchJob, TBatchJob.thrift_spec), None, ), # 1
    (2, TType.I64, 'transformId', None, None, ), # 2
    (3, TType.MAP, 'parameters', (TType.STRING,None,TType.STRUCT,(koverse.thriftgen.ttypes.TConfigValue, koverse.thriftgen.ttypes.TConfigValue.thrift_spec)), None, ), # 3
    (4, TType.LIST, 'stages', (TType.STRUCT,(TTransformTypeStageDescription, TTransformTypeStageDescription.thrift_spec)), None, ), # 4
    (5, TType.I64, 'transformTypeId', None, None, ), # 5
    (6, TType.I32, 'requestedWorkers', None, None, ), # 6
    (7, TType.STRING, 'backend', None, None, ), # 7
    (8, TType.BOOL, 'replaceOutputData', None, None, ), # 8
    (9, TType.I64, 'minimumExecutionPeriod', None, None, ), # 9
    (10, TType.STRING, 'inputDataWindowType', None, None, ), # 10
    (11, TType.I64, 'inputDataSlidingWindowSizeSeconds', None, None, ), # 11
    (12, TType.STRING, 'hadoopName', None, None, ), # 12
    (13, TType.SET, 'mapreduceJobIds', (TType.STRING,None), None, ), # 13
  )

  def __init__(self, batchJob=None, transformId=None, parameters=None, stages=None, transformTypeId=None, requestedWorkers=None, backend=None, replaceOutputData=None, minimumExecutionPeriod=None, inputDataWindowType=None, inputDataSlidingWindowSizeSeconds=None, hadoopName=None, mapreduceJobIds=None,):
    self.batchJob = batchJob
    self.transformId = transformId
    self.parameters = parameters
    self.stages = stages
    self.transformTypeId = transformTypeId
    self.requestedWorkers = requestedWorkers
    self.backend = backend
    self.replaceOutputData = replaceOutputData
    self.minimumExecutionPeriod = minimumExecutionPeriod
    self.inputDataWindowType = inputDataWindowType
    self.inputDataSlidingWindowSizeSeconds = inputDataSlidingWindowSizeSeconds
    self.hadoopName = hadoopName
    self.mapreduceJobIds = mapreduceJobIds

  def read(self, iprot):
    if iprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None and fastbinary is not None:
      fastbinary.decode_binary(self, iprot.trans, (self.__class__, self.thrift_spec))
      return
    iprot.readStructBegin()
    while True:
      (fname, ftype, fid) = iprot.readFieldBegin()
      if ftype == TType.STOP:
        break
      if fid == 1:
        if ftype == TType.STRUCT:
          self.batchJob = TBatchJob()
          self.batchJob.read(iprot)
        else:
          iprot.skip(ftype)
      elif fid == 2:
        if ftype == TType.I64:
          self.transformId = iprot.readI64()
        else:
          iprot.skip(ftype)
      elif fid == 3:
        if ftype == TType.MAP:
          self.parameters = {}
          (_ktype125, _vtype126, _size124 ) = iprot.readMapBegin()
          for _i128 in xrange(_size124):
            _key129 = iprot.readString()
            _val130 = koverse.thriftgen.ttypes.TConfigValue()
            _val130.read(iprot)
            self.parameters[_key129] = _val130
          iprot.readMapEnd()
        else:
          iprot.skip(ftype)
      elif fid == 4:
        if ftype == TType.LIST:
          self.stages = []
          (_etype134, _size131) = iprot.readListBegin()
          for _i135 in xrange(_size131):
            _elem136 = TTransformTypeStageDescription()
            _elem136.read(iprot)
            self.stages.append(_elem136)
          iprot.readListEnd()
        else:
          iprot.skip(ftype)
      elif fid == 5:
        if ftype == TType.I64:
          self.transformTypeId = iprot.readI64()
        else:
          iprot.skip(ftype)
      elif fid == 6:
        if ftype == TType.I32:
          self.requestedWorkers = iprot.readI32()
        else:
          iprot.skip(ftype)
      elif fid == 7:
        if ftype == TType.STRING:
          self.backend = iprot.readString()
        else:
          iprot.skip(ftype)
      elif fid == 8:
        if ftype == TType.BOOL:
          self.replaceOutputData = iprot.readBool()
        else:
          iprot.skip(ftype)
      elif fid == 9:
        if ftype == TType.I64:
          self.minimumExecutionPeriod = iprot.readI64()
        else:
          iprot.skip(ftype)
      elif fid == 10:
        if ftype == TType.STRING:
          self.inputDataWindowType = iprot.readString()
        else:
          iprot.skip(ftype)
      elif fid == 11:
        if ftype == TType.I64:
          self.inputDataSlidingWindowSizeSeconds = iprot.readI64()
        else:
          iprot.skip(ftype)
      elif fid == 12:
        if ftype == TType.STRING:
          self.hadoopName = iprot.readString()
        else:
          iprot.skip(ftype)
      elif fid == 13:
        if ftype == TType.SET:
          self.mapreduceJobIds = set()
          (_etype140, _size137) = iprot.readSetBegin()
          for _i141 in xrange(_size137):
            _elem142 = iprot.readString()
            self.mapreduceJobIds.add(_elem142)
          iprot.readSetEnd()
        else:
          iprot.skip(ftype)
      else:
        iprot.skip(ftype)
      iprot.readFieldEnd()
    iprot.readStructEnd()

  def write(self, oprot):
    if oprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and self.thrift_spec is not None and fastbinary is not None:
      oprot.trans.write(fastbinary.encode_binary(self, (self.__class__, self.thrift_spec)))
      return
    oprot.writeStructBegin('TTransformJob')
    if self.batchJob is not None:
      oprot.writeFieldBegin('batchJob', TType.STRUCT, 1)
      self.batchJob.write(oprot)
      oprot.writeFieldEnd()
    if self.transformId is not None:
      oprot.writeFieldBegin('transformId', TType.I64, 2)
      oprot.writeI64(self.transformId)
      oprot.writeFieldEnd()
    if self.parameters is not None:
      oprot.writeFieldBegin('parameters', TType.MAP, 3)
      oprot.writeMapBegin(TType.STRING, TType.STRUCT, len(self.parameters))
      for kiter143,viter144 in self.parameters.items():
        oprot.writeString(kiter143)
        viter144.write(oprot)
      oprot.writeMapEnd()
      oprot.writeFieldEnd()
    if self.stages is not None:
      oprot.writeFieldBegin('stages', TType.LIST, 4)
      oprot.writeListBegin(TType.STRUCT, len(self.stages))
      for iter145 in self.stages:
        iter145.write(oprot)
      oprot.writeListEnd()
      oprot.writeFieldEnd()
    if self.transformTypeId is not None:
      oprot.writeFieldBegin('transformTypeId', TType.I64, 5)
      oprot.writeI64(self.transformTypeId)
      oprot.writeFieldEnd()
    if self.requestedWorkers is not None:
      oprot.writeFieldBegin('requestedWorkers', TType.I32, 6)
      oprot.writeI32(self.requestedWorkers)
      oprot.writeFieldEnd()
    if self.backend is not None:
      oprot.writeFieldBegin('backend', TType.STRING, 7)
      oprot.writeString(self.backend)
      oprot.writeFieldEnd()
    if self.replaceOutputData is not None:
      oprot.writeFieldBegin('replaceOutputData', TType.BOOL, 8)
      oprot.writeBool(self.replaceOutputData)
      oprot.writeFieldEnd()
    if self.minimumExecutionPeriod is not None:
      oprot.writeFieldBegin('minimumExecutionPeriod', TType.I64, 9)
      oprot.writeI64(self.minimumExecutionPeriod)
      oprot.writeFieldEnd()
    if self.inputDataWindowType is not None:
      oprot.writeFieldBegin('inputDataWindowType', TType.STRING, 10)
      oprot.writeString(self.inputDataWindowType)
      oprot.writeFieldEnd()
    if self.inputDataSlidingWindowSizeSeconds is not None:
      oprot.writeFieldBegin('inputDataSlidingWindowSizeSeconds', TType.I64, 11)
      oprot.writeI64(self.inputDataSlidingWindowSizeSeconds)
      oprot.writeFieldEnd()
    if self.hadoopName is not None:
      oprot.writeFieldBegin('hadoopName', TType.STRING, 12)
      oprot.writeString(self.hadoopName)
      oprot.writeFieldEnd()
    if self.mapreduceJobIds is not None:
      oprot.writeFieldBegin('mapreduceJobIds', TType.SET, 13)
      oprot.writeSetBegin(TType.STRING, len(self.mapreduceJobIds))
      for iter146 in self.mapreduceJobIds:
        oprot.writeString(iter146)
      oprot.writeSetEnd()
      oprot.writeFieldEnd()
    oprot.writeFieldStop()
    oprot.writeStructEnd()

  def validate(self):
    return


  def __hash__(self):
    value = 17
    value = (value * 31) ^ hash(self.batchJob)
    value = (value * 31) ^ hash(self.transformId)
    value = (value * 31) ^ hash(self.parameters)
    value = (value * 31) ^ hash(self.stages)
    value = (value * 31) ^ hash(self.transformTypeId)
    value = (value * 31) ^ hash(self.requestedWorkers)
    value = (value * 31) ^ hash(self.backend)
    value = (value * 31) ^ hash(self.replaceOutputData)
    value = (value * 31) ^ hash(self.minimumExecutionPeriod)
    value = (value * 31) ^ hash(self.inputDataWindowType)
    value = (value * 31) ^ hash(self.inputDataSlidingWindowSizeSeconds)
    value = (value * 31) ^ hash(self.hadoopName)
    value = (value * 31) ^ hash(self.mapreduceJobIds)
    return value

  def __repr__(self):
    L = ['%s=%r' % (key, value)
      for key, value in self.__dict__.iteritems()]
    return '%s(%s)' % (self.__class__.__name__, ', '.join(L))

  def __eq__(self, other):
    return isinstance(other, self.__class__) and self.__dict__ == other.__dict__

  def __ne__(self, other):
    return not (self == other)

class TTransformType:
  """
  Attributes:
   - id
   - jobTypeId
   - name
   - parameters
   - disabled
   - addOnId
   - transformClassName
   - version
   - supportsIncrementalProcessing
   - stages
   - description
  """

  thrift_spec = (
    None, # 0
    (1, TType.I64, 'id', None, None, ), # 1
    (2, TType.STRING, 'jobTypeId', None, None, ), # 2
    (3, TType.STRING, 'name', None, None, ), # 3
    (4, TType.LIST, 'parameters', (TType.STRUCT,(koverse.thriftgen.ttypes.TParameter, koverse.thriftgen.ttypes.TParameter.thrift_spec)), None, ), # 4
    (5, TType.BOOL, 'disabled', None, None, ), # 5
    (6, TType.I64, 'addOnId', None, None, ), # 6
    (7, TType.STRING, 'transformClassName', None, None, ), # 7
    (8, TType.STRING, 'version', None, None, ), # 8
    (9, TType.BOOL, 'supportsIncrementalProcessing', None, None, ), # 9
    (10, TType.LIST, 'stages', (TType.STRUCT,(TTransformTypeStageDescription, TTransformTypeStageDescription.thrift_spec)), None, ), # 10
    (11, TType.STRING, 'description', None, None, ), # 11
  )

  def __init__(self, id=None, jobTypeId=None, name=None, parameters=None, disabled=None, addOnId=None, transformClassName=None, version=None, supportsIncrementalProcessing=None, stages=None, description=None,):
    self.id = id
    self.jobTypeId = jobTypeId
    self.name = name
    self.parameters = parameters
    self.disabled = disabled
    self.addOnId = addOnId
    self.transformClassName = transformClassName
    self.version = version
    self.supportsIncrementalProcessing = supportsIncrementalProcessing
    self.stages = stages
    self.description = description

  def read(self, iprot):
    if iprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None and fastbinary is not None:
      fastbinary.decode_binary(self, iprot.trans, (self.__class__, self.thrift_spec))
      return
    iprot.readStructBegin()
    while True:
      (fname, ftype, fid) = iprot.readFieldBegin()
      if ftype == TType.STOP:
        break
      if fid == 1:
        if ftype == TType.I64:
          self.id = iprot.readI64()
        else:
          iprot.skip(ftype)
      elif fid == 2:
        if ftype == TType.STRING:
          self.jobTypeId = iprot.readString()
        else:
          iprot.skip(ftype)
      elif fid == 3:
        if ftype == TType.STRING:
          self.name = iprot.readString()
        else:
          iprot.skip(ftype)
      elif fid == 4:
        if ftype == TType.LIST:
          self.parameters = []
          (_etype150, _size147) = iprot.readListBegin()
          for _i151 in xrange(_size147):
            _elem152 = koverse.thriftgen.ttypes.TParameter()
            _elem152.read(iprot)
            self.parameters.append(_elem152)
          iprot.readListEnd()
        else:
          iprot.skip(ftype)
      elif fid == 5:
        if ftype == TType.BOOL:
          self.disabled = iprot.readBool()
        else:
          iprot.skip(ftype)
      elif fid == 6:
        if ftype == TType.I64:
          self.addOnId = iprot.readI64()
        else:
          iprot.skip(ftype)
      elif fid == 7:
        if ftype == TType.STRING:
          self.transformClassName = iprot.readString()
        else:
          iprot.skip(ftype)
      elif fid == 8:
        if ftype == TType.STRING:
          self.version = iprot.readString()
        else:
          iprot.skip(ftype)
      elif fid == 9:
        if ftype == TType.BOOL:
          self.supportsIncrementalProcessing = iprot.readBool()
        else:
          iprot.skip(ftype)
      elif fid == 10:
        if ftype == TType.LIST:
          self.stages = []
          (_etype156, _size153) = iprot.readListBegin()
          for _i157 in xrange(_size153):
            _elem158 = TTransformTypeStageDescription()
            _elem158.read(iprot)
            self.stages.append(_elem158)
          iprot.readListEnd()
        else:
          iprot.skip(ftype)
      elif fid == 11:
        if ftype == TType.STRING:
          self.description = iprot.readString()
        else:
          iprot.skip(ftype)
      else:
        iprot.skip(ftype)
      iprot.readFieldEnd()
    iprot.readStructEnd()

  def write(self, oprot):
    if oprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and self.thrift_spec is not None and fastbinary is not None:
      oprot.trans.write(fastbinary.encode_binary(self, (self.__class__, self.thrift_spec)))
      return
    oprot.writeStructBegin('TTransformType')
    if self.id is not None:
      oprot.writeFieldBegin('id', TType.I64, 1)
      oprot.writeI64(self.id)
      oprot.writeFieldEnd()
    if self.jobTypeId is not None:
      oprot.writeFieldBegin('jobTypeId', TType.STRING, 2)
      oprot.writeString(self.jobTypeId)
      oprot.writeFieldEnd()
    if self.name is not None:
      oprot.writeFieldBegin('name', TType.STRING, 3)
      oprot.writeString(self.name)
      oprot.writeFieldEnd()
    if self.parameters is not None:
      oprot.writeFieldBegin('parameters', TType.LIST, 4)
      oprot.writeListBegin(TType.STRUCT, len(self.parameters))
      for iter159 in self.parameters:
        iter159.write(oprot)
      oprot.writeListEnd()
      oprot.writeFieldEnd()
    if self.disabled is not None:
      oprot.writeFieldBegin('disabled', TType.BOOL, 5)
      oprot.writeBool(self.disabled)
      oprot.writeFieldEnd()
    if self.addOnId is not None:
      oprot.writeFieldBegin('addOnId', TType.I64, 6)
      oprot.writeI64(self.addOnId)
      oprot.writeFieldEnd()
    if self.transformClassName is not None:
      oprot.writeFieldBegin('transformClassName', TType.STRING, 7)
      oprot.writeString(self.transformClassName)
      oprot.writeFieldEnd()
    if self.version is not None:
      oprot.writeFieldBegin('version', TType.STRING, 8)
      oprot.writeString(self.version)
      oprot.writeFieldEnd()
    if self.supportsIncrementalProcessing is not None:
      oprot.writeFieldBegin('supportsIncrementalProcessing', TType.BOOL, 9)
      oprot.writeBool(self.supportsIncrementalProcessing)
      oprot.writeFieldEnd()
    if self.stages is not None:
      oprot.writeFieldBegin('stages', TType.LIST, 10)
      oprot.writeListBegin(TType.STRUCT, len(self.stages))
      for iter160 in self.stages:
        iter160.write(oprot)
      oprot.writeListEnd()
      oprot.writeFieldEnd()
    if self.description is not None:
      oprot.writeFieldBegin('description', TType.STRING, 11)
      oprot.writeString(self.description)
      oprot.writeFieldEnd()
    oprot.writeFieldStop()
    oprot.writeStructEnd()

  def validate(self):
    return


  def __hash__(self):
    value = 17
    value = (value * 31) ^ hash(self.id)
    value = (value * 31) ^ hash(self.jobTypeId)
    value = (value * 31) ^ hash(self.name)
    value = (value * 31) ^ hash(self.parameters)
    value = (value * 31) ^ hash(self.disabled)
    value = (value * 31) ^ hash(self.addOnId)
    value = (value * 31) ^ hash(self.transformClassName)
    value = (value * 31) ^ hash(self.version)
    value = (value * 31) ^ hash(self.supportsIncrementalProcessing)
    value = (value * 31) ^ hash(self.stages)
    value = (value * 31) ^ hash(self.description)
    return value

  def __repr__(self):
    L = ['%s=%r' % (key, value)
      for key, value in self.__dict__.iteritems()]
    return '%s(%s)' % (self.__class__.__name__, ', '.join(L))

  def __eq__(self, other):
    return isinstance(other, self.__class__) and self.__dict__ == other.__dict__

  def __ne__(self, other):
    return not (self == other)

class TExportTransformDescription:
  """
  Attributes:
   - displayName
   - typeId
   - description
   - implementationClassName
   - parameters
  """

  thrift_spec = (
    None, # 0
    (1, TType.STRING, 'displayName', None, None, ), # 1
    (2, TType.STRING, 'typeId', None, None, ), # 2
    (3, TType.STRING, 'description', None, None, ), # 3
    (4, TType.STRING, 'implementationClassName', None, None, ), # 4
    (5, TType.LIST, 'parameters', (TType.STRUCT,(koverse.thriftgen.ttypes.TParameter, koverse.thriftgen.ttypes.TParameter.thrift_spec)), None, ), # 5
  )

  def __init__(self, displayName=None, typeId=None, description=None, implementationClassName=None, parameters=None,):
    self.displayName = displayName
    self.typeId = typeId
    self.description = description
    self.implementationClassName = implementationClassName
    self.parameters = parameters

  def read(self, iprot):
    if iprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None and fastbinary is not None:
      fastbinary.decode_binary(self, iprot.trans, (self.__class__, self.thrift_spec))
      return
    iprot.readStructBegin()
    while True:
      (fname, ftype, fid) = iprot.readFieldBegin()
      if ftype == TType.STOP:
        break
      if fid == 1:
        if ftype == TType.STRING:
          self.displayName = iprot.readString()
        else:
          iprot.skip(ftype)
      elif fid == 2:
        if ftype == TType.STRING:
          self.typeId = iprot.readString()
        else:
          iprot.skip(ftype)
      elif fid == 3:
        if ftype == TType.STRING:
          self.description = iprot.readString()
        else:
          iprot.skip(ftype)
      elif fid == 4:
        if ftype == TType.STRING:
          self.implementationClassName = iprot.readString()
        else:
          iprot.skip(ftype)
      elif fid == 5:
        if ftype == TType.LIST:
          self.parameters = []
          (_etype164, _size161) = iprot.readListBegin()
          for _i165 in xrange(_size161):
            _elem166 = koverse.thriftgen.ttypes.TParameter()
            _elem166.read(iprot)
            self.parameters.append(_elem166)
          iprot.readListEnd()
        else:
          iprot.skip(ftype)
      else:
        iprot.skip(ftype)
      iprot.readFieldEnd()
    iprot.readStructEnd()

  def write(self, oprot):
    if oprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and self.thrift_spec is not None and fastbinary is not None:
      oprot.trans.write(fastbinary.encode_binary(self, (self.__class__, self.thrift_spec)))
      return
    oprot.writeStructBegin('TExportTransformDescription')
    if self.displayName is not None:
      oprot.writeFieldBegin('displayName', TType.STRING, 1)
      oprot.writeString(self.displayName)
      oprot.writeFieldEnd()
    if self.typeId is not None:
      oprot.writeFieldBegin('typeId', TType.STRING, 2)
      oprot.writeString(self.typeId)
      oprot.writeFieldEnd()
    if self.description is not None:
      oprot.writeFieldBegin('description', TType.STRING, 3)
      oprot.writeString(self.description)
      oprot.writeFieldEnd()
    if self.implementationClassName is not None:
      oprot.writeFieldBegin('implementationClassName', TType.STRING, 4)
      oprot.writeString(self.implementationClassName)
      oprot.writeFieldEnd()
    if self.parameters is not None:
      oprot.writeFieldBegin('parameters', TType.LIST, 5)
      oprot.writeListBegin(TType.STRUCT, len(self.parameters))
      for iter167 in self.parameters:
        iter167.write(oprot)
      oprot.writeListEnd()
      oprot.writeFieldEnd()
    oprot.writeFieldStop()
    oprot.writeStructEnd()

  def validate(self):
    return


  def __hash__(self):
    value = 17
    value = (value * 31) ^ hash(self.displayName)
    value = (value * 31) ^ hash(self.typeId)
    value = (value * 31) ^ hash(self.description)
    value = (value * 31) ^ hash(self.implementationClassName)
    value = (value * 31) ^ hash(self.parameters)
    return value

  def __repr__(self):
    L = ['%s=%r' % (key, value)
      for key, value in self.__dict__.iteritems()]
    return '%s(%s)' % (self.__class__.__name__, ', '.join(L))

  def __eq__(self, other):
    return isinstance(other, self.__class__) and self.__dict__ == other.__dict__

  def __ne__(self, other):
    return not (self == other)

class TExportTransformConfiguration:
  """
  Attributes:
   - typeId
   - implementationClassName
   - config
  """

  thrift_spec = (
    None, # 0
    (1, TType.STRING, 'typeId', None, None, ), # 1
    (2, TType.STRING, 'implementationClassName', None, None, ), # 2
    (3, TType.MAP, 'config', (TType.STRING,None,TType.STRUCT,(koverse.thriftgen.ttypes.TConfigValue, koverse.thriftgen.ttypes.TConfigValue.thrift_spec)), None, ), # 3
  )

  def __init__(self, typeId=None, implementationClassName=None, config=None,):
    self.typeId = typeId
    self.implementationClassName = implementationClassName
    self.config = config

  def read(self, iprot):
    if iprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None and fastbinary is not None:
      fastbinary.decode_binary(self, iprot.trans, (self.__class__, self.thrift_spec))
      return
    iprot.readStructBegin()
    while True:
      (fname, ftype, fid) = iprot.readFieldBegin()
      if ftype == TType.STOP:
        break
      if fid == 1:
        if ftype == TType.STRING:
          self.typeId = iprot.readString()
        else:
          iprot.skip(ftype)
      elif fid == 2:
        if ftype == TType.STRING:
          self.implementationClassName = iprot.readString()
        else:
          iprot.skip(ftype)
      elif fid == 3:
        if ftype == TType.MAP:
          self.config = {}
          (_ktype169, _vtype170, _size168 ) = iprot.readMapBegin()
          for _i172 in xrange(_size168):
            _key173 = iprot.readString()
            _val174 = koverse.thriftgen.ttypes.TConfigValue()
            _val174.read(iprot)
            self.config[_key173] = _val174
          iprot.readMapEnd()
        else:
          iprot.skip(ftype)
      else:
        iprot.skip(ftype)
      iprot.readFieldEnd()
    iprot.readStructEnd()

  def write(self, oprot):
    if oprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and self.thrift_spec is not None and fastbinary is not None:
      oprot.trans.write(fastbinary.encode_binary(self, (self.__class__, self.thrift_spec)))
      return
    oprot.writeStructBegin('TExportTransformConfiguration')
    if self.typeId is not None:
      oprot.writeFieldBegin('typeId', TType.STRING, 1)
      oprot.writeString(self.typeId)
      oprot.writeFieldEnd()
    if self.implementationClassName is not None:
      oprot.writeFieldBegin('implementationClassName', TType.STRING, 2)
      oprot.writeString(self.implementationClassName)
      oprot.writeFieldEnd()
    if self.config is not None:
      oprot.writeFieldBegin('config', TType.MAP, 3)
      oprot.writeMapBegin(TType.STRING, TType.STRUCT, len(self.config))
      for kiter175,viter176 in self.config.items():
        oprot.writeString(kiter175)
        viter176.write(oprot)
      oprot.writeMapEnd()
      oprot.writeFieldEnd()
    oprot.writeFieldStop()
    oprot.writeStructEnd()

  def validate(self):
    return


  def __hash__(self):
    value = 17
    value = (value * 31) ^ hash(self.typeId)
    value = (value * 31) ^ hash(self.implementationClassName)
    value = (value * 31) ^ hash(self.config)
    return value

  def __repr__(self):
    L = ['%s=%r' % (key, value)
      for key, value in self.__dict__.iteritems()]
    return '%s(%s)' % (self.__class__.__name__, ', '.join(L))

  def __eq__(self, other):
    return isinstance(other, self.__class__) and self.__dict__ == other.__dict__

  def __ne__(self, other):
    return not (self == other)

class TSink:
  """
  Attributes:
   - id
   - name
   - type
   - parameters
   - disabled
   - scheduleType
   - transforms
   - inputDataWindowType
  """

  thrift_spec = (
    None, # 0
    (1, TType.I64, 'id', None, None, ), # 1
    (2, TType.STRING, 'name', None, None, ), # 2
    (3, TType.STRING, 'type', None, None, ), # 3
    (4, TType.MAP, 'parameters', (TType.STRING,None,TType.STRING,None), None, ), # 4
    (5, TType.BOOL, 'disabled', None, None, ), # 5
    (6, TType.STRING, 'scheduleType', None, None, ), # 6
    (7, TType.LIST, 'transforms', (TType.STRUCT,(TExportTransformConfiguration, TExportTransformConfiguration.thrift_spec)), None, ), # 7
    (8, TType.STRING, 'inputDataWindowType', None, None, ), # 8
  )

  def __init__(self, id=None, name=None, type=None, parameters=None, disabled=None, scheduleType=None, transforms=None, inputDataWindowType=None,):
    self.id = id
    self.name = name
    self.type = type
    self.parameters = parameters
    self.disabled = disabled
    self.scheduleType = scheduleType
    self.transforms = transforms
    self.inputDataWindowType = inputDataWindowType

  def read(self, iprot):
    if iprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None and fastbinary is not None:
      fastbinary.decode_binary(self, iprot.trans, (self.__class__, self.thrift_spec))
      return
    iprot.readStructBegin()
    while True:
      (fname, ftype, fid) = iprot.readFieldBegin()
      if ftype == TType.STOP:
        break
      if fid == 1:
        if ftype == TType.I64:
          self.id = iprot.readI64()
        else:
          iprot.skip(ftype)
      elif fid == 2:
        if ftype == TType.STRING:
          self.name = iprot.readString()
        else:
          iprot.skip(ftype)
      elif fid == 3:
        if ftype == TType.STRING:
          self.type = iprot.readString()
        else:
          iprot.skip(ftype)
      elif fid == 4:
        if ftype == TType.MAP:
          self.parameters = {}
          (_ktype178, _vtype179, _size177 ) = iprot.readMapBegin()
          for _i181 in xrange(_size177):
            _key182 = iprot.readString()
            _val183 = iprot.readString()
            self.parameters[_key182] = _val183
          iprot.readMapEnd()
        else:
          iprot.skip(ftype)
      elif fid == 5:
        if ftype == TType.BOOL:
          self.disabled = iprot.readBool()
        else:
          iprot.skip(ftype)
      elif fid == 6:
        if ftype == TType.STRING:
          self.scheduleType = iprot.readString()
        else:
          iprot.skip(ftype)
      elif fid == 7:
        if ftype == TType.LIST:
          self.transforms = []
          (_etype187, _size184) = iprot.readListBegin()
          for _i188 in xrange(_size184):
            _elem189 = TExportTransformConfiguration()
            _elem189.read(iprot)
            self.transforms.append(_elem189)
          iprot.readListEnd()
        else:
          iprot.skip(ftype)
      elif fid == 8:
        if ftype == TType.STRING:
          self.inputDataWindowType = iprot.readString()
        else:
          iprot.skip(ftype)
      else:
        iprot.skip(ftype)
      iprot.readFieldEnd()
    iprot.readStructEnd()

  def write(self, oprot):
    if oprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and self.thrift_spec is not None and fastbinary is not None:
      oprot.trans.write(fastbinary.encode_binary(self, (self.__class__, self.thrift_spec)))
      return
    oprot.writeStructBegin('TSink')
    if self.id is not None:
      oprot.writeFieldBegin('id', TType.I64, 1)
      oprot.writeI64(self.id)
      oprot.writeFieldEnd()
    if self.name is not None:
      oprot.writeFieldBegin('name', TType.STRING, 2)
      oprot.writeString(self.name)
      oprot.writeFieldEnd()
    if self.type is not None:
      oprot.writeFieldBegin('type', TType.STRING, 3)
      oprot.writeString(self.type)
      oprot.writeFieldEnd()
    if self.parameters is not None:
      oprot.writeFieldBegin('parameters', TType.MAP, 4)
      oprot.writeMapBegin(TType.STRING, TType.STRING, len(self.parameters))
      for kiter190,viter191 in self.parameters.items():
        oprot.writeString(kiter190)
        oprot.writeString(viter191)
      oprot.writeMapEnd()
      oprot.writeFieldEnd()
    if self.disabled is not None:
      oprot.writeFieldBegin('disabled', TType.BOOL, 5)
      oprot.writeBool(self.disabled)
      oprot.writeFieldEnd()
    if self.scheduleType is not None:
      oprot.writeFieldBegin('scheduleType', TType.STRING, 6)
      oprot.writeString(self.scheduleType)
      oprot.writeFieldEnd()
    if self.transforms is not None:
      oprot.writeFieldBegin('transforms', TType.LIST, 7)
      oprot.writeListBegin(TType.STRUCT, len(self.transforms))
      for iter192 in self.transforms:
        iter192.write(oprot)
      oprot.writeListEnd()
      oprot.writeFieldEnd()
    if self.inputDataWindowType is not None:
      oprot.writeFieldBegin('inputDataWindowType', TType.STRING, 8)
      oprot.writeString(self.inputDataWindowType)
      oprot.writeFieldEnd()
    oprot.writeFieldStop()
    oprot.writeStructEnd()

  def validate(self):
    return


  def __hash__(self):
    value = 17
    value = (value * 31) ^ hash(self.id)
    value = (value * 31) ^ hash(self.name)
    value = (value * 31) ^ hash(self.type)
    value = (value * 31) ^ hash(self.parameters)
    value = (value * 31) ^ hash(self.disabled)
    value = (value * 31) ^ hash(self.scheduleType)
    value = (value * 31) ^ hash(self.transforms)
    value = (value * 31) ^ hash(self.inputDataWindowType)
    return value

  def __repr__(self):
    L = ['%s=%r' % (key, value)
      for key, value in self.__dict__.iteritems()]
    return '%s(%s)' % (self.__class__.__name__, ', '.join(L))

  def __eq__(self, other):
    return isinstance(other, self.__class__) and self.__dict__ == other.__dict__

  def __ne__(self, other):
    return not (self == other)

class TSinkTypeDescription:
  """
  Attributes:
   - id
   - name
   - executionMethod
   - implementationClassName
   - sinkTypeId
   - sinkParameters
   - addOnId
   - disabled
   - version
  """

  thrift_spec = (
    None, # 0
    (1, TType.I64, 'id', None, None, ), # 1
    (2, TType.STRING, 'name', None, None, ), # 2
    (3, TType.I32, 'executionMethod', None, None, ), # 3
    (4, TType.STRING, 'implementationClassName', None, None, ), # 4
    (5, TType.STRING, 'sinkTypeId', None, None, ), # 5
    (6, TType.LIST, 'sinkParameters', (TType.STRUCT,(koverse.thriftgen.ttypes.TParameter, koverse.thriftgen.ttypes.TParameter.thrift_spec)), None, ), # 6
    (7, TType.I64, 'addOnId', None, None, ), # 7
    (8, TType.BOOL, 'disabled', None, None, ), # 8
    (9, TType.STRING, 'version', None, None, ), # 9
  )

  def __init__(self, id=None, name=None, executionMethod=None, implementationClassName=None, sinkTypeId=None, sinkParameters=None, addOnId=None, disabled=None, version=None,):
    self.id = id
    self.name = name
    self.executionMethod = executionMethod
    self.implementationClassName = implementationClassName
    self.sinkTypeId = sinkTypeId
    self.sinkParameters = sinkParameters
    self.addOnId = addOnId
    self.disabled = disabled
    self.version = version

  def read(self, iprot):
    if iprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None and fastbinary is not None:
      fastbinary.decode_binary(self, iprot.trans, (self.__class__, self.thrift_spec))
      return
    iprot.readStructBegin()
    while True:
      (fname, ftype, fid) = iprot.readFieldBegin()
      if ftype == TType.STOP:
        break
      if fid == 1:
        if ftype == TType.I64:
          self.id = iprot.readI64()
        else:
          iprot.skip(ftype)
      elif fid == 2:
        if ftype == TType.STRING:
          self.name = iprot.readString()
        else:
          iprot.skip(ftype)
      elif fid == 3:
        if ftype == TType.I32:
          self.executionMethod = iprot.readI32()
        else:
          iprot.skip(ftype)
      elif fid == 4:
        if ftype == TType.STRING:
          self.implementationClassName = iprot.readString()
        else:
          iprot.skip(ftype)
      elif fid == 5:
        if ftype == TType.STRING:
          self.sinkTypeId = iprot.readString()
        else:
          iprot.skip(ftype)
      elif fid == 6:
        if ftype == TType.LIST:
          self.sinkParameters = []
          (_etype196, _size193) = iprot.readListBegin()
          for _i197 in xrange(_size193):
            _elem198 = koverse.thriftgen.ttypes.TParameter()
            _elem198.read(iprot)
            self.sinkParameters.append(_elem198)
          iprot.readListEnd()
        else:
          iprot.skip(ftype)
      elif fid == 7:
        if ftype == TType.I64:
          self.addOnId = iprot.readI64()
        else:
          iprot.skip(ftype)
      elif fid == 8:
        if ftype == TType.BOOL:
          self.disabled = iprot.readBool()
        else:
          iprot.skip(ftype)
      elif fid == 9:
        if ftype == TType.STRING:
          self.version = iprot.readString()
        else:
          iprot.skip(ftype)
      else:
        iprot.skip(ftype)
      iprot.readFieldEnd()
    iprot.readStructEnd()

  def write(self, oprot):
    if oprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and self.thrift_spec is not None and fastbinary is not None:
      oprot.trans.write(fastbinary.encode_binary(self, (self.__class__, self.thrift_spec)))
      return
    oprot.writeStructBegin('TSinkTypeDescription')
    if self.id is not None:
      oprot.writeFieldBegin('id', TType.I64, 1)
      oprot.writeI64(self.id)
      oprot.writeFieldEnd()
    if self.name is not None:
      oprot.writeFieldBegin('name', TType.STRING, 2)
      oprot.writeString(self.name)
      oprot.writeFieldEnd()
    if self.executionMethod is not None:
      oprot.writeFieldBegin('executionMethod', TType.I32, 3)
      oprot.writeI32(self.executionMethod)
      oprot.writeFieldEnd()
    if self.implementationClassName is not None:
      oprot.writeFieldBegin('implementationClassName', TType.STRING, 4)
      oprot.writeString(self.implementationClassName)
      oprot.writeFieldEnd()
    if self.sinkTypeId is not None:
      oprot.writeFieldBegin('sinkTypeId', TType.STRING, 5)
      oprot.writeString(self.sinkTypeId)
      oprot.writeFieldEnd()
    if self.sinkParameters is not None:
      oprot.writeFieldBegin('sinkParameters', TType.LIST, 6)
      oprot.writeListBegin(TType.STRUCT, len(self.sinkParameters))
      for iter199 in self.sinkParameters:
        iter199.write(oprot)
      oprot.writeListEnd()
      oprot.writeFieldEnd()
    if self.addOnId is not None:
      oprot.writeFieldBegin('addOnId', TType.I64, 7)
      oprot.writeI64(self.addOnId)
      oprot.writeFieldEnd()
    if self.disabled is not None:
      oprot.writeFieldBegin('disabled', TType.BOOL, 8)
      oprot.writeBool(self.disabled)
      oprot.writeFieldEnd()
    if self.version is not None:
      oprot.writeFieldBegin('version', TType.STRING, 9)
      oprot.writeString(self.version)
      oprot.writeFieldEnd()
    oprot.writeFieldStop()
    oprot.writeStructEnd()

  def validate(self):
    return


  def __hash__(self):
    value = 17
    value = (value * 31) ^ hash(self.id)
    value = (value * 31) ^ hash(self.name)
    value = (value * 31) ^ hash(self.executionMethod)
    value = (value * 31) ^ hash(self.implementationClassName)
    value = (value * 31) ^ hash(self.sinkTypeId)
    value = (value * 31) ^ hash(self.sinkParameters)
    value = (value * 31) ^ hash(self.addOnId)
    value = (value * 31) ^ hash(self.disabled)
    value = (value * 31) ^ hash(self.version)
    return value

  def __repr__(self):
    L = ['%s=%r' % (key, value)
      for key, value in self.__dict__.iteritems()]
    return '%s(%s)' % (self.__class__.__name__, ', '.join(L))

  def __eq__(self, other):
    return isinstance(other, self.__class__) and self.__dict__ == other.__dict__

  def __ne__(self, other):
    return not (self == other)

class TExportJob:
  """
  Attributes:
   - jobAbstract
   - hadoopName
   - sinkId
   - sourceCollectionId
   - parameters
   - className
   - timeField
   - timeFormat
   - recordCount
   - transforms
   - inputDataWindowType
  """

  thrift_spec = (
    None, # 0
    (1, TType.STRUCT, 'jobAbstract', (TJobAbstract, TJobAbstract.thrift_spec), None, ), # 1
    (2, TType.STRING, 'hadoopName', None, None, ), # 2
    (3, TType.I64, 'sinkId', None, None, ), # 3
    (4, TType.STRING, 'sourceCollectionId', None, None, ), # 4
    (5, TType.MAP, 'parameters', (TType.STRING,None,TType.STRING,None), None, ), # 5
    (6, TType.STRING, 'className', None, None, ), # 6
    (7, TType.STRING, 'timeField', None, None, ), # 7
    (8, TType.STRING, 'timeFormat', None, None, ), # 8
    (9, TType.I64, 'recordCount', None, None, ), # 9
    (10, TType.LIST, 'transforms', (TType.STRUCT,(TExportTransformConfiguration, TExportTransformConfiguration.thrift_spec)), None, ), # 10
    (11, TType.STRING, 'inputDataWindowType', None, None, ), # 11
  )

  def __init__(self, jobAbstract=None, hadoopName=None, sinkId=None, sourceCollectionId=None, parameters=None, className=None, timeField=None, timeFormat=None, recordCount=None, transforms=None, inputDataWindowType=None,):
    self.jobAbstract = jobAbstract
    self.hadoopName = hadoopName
    self.sinkId = sinkId
    self.sourceCollectionId = sourceCollectionId
    self.parameters = parameters
    self.className = className
    self.timeField = timeField
    self.timeFormat = timeFormat
    self.recordCount = recordCount
    self.transforms = transforms
    self.inputDataWindowType = inputDataWindowType

  def read(self, iprot):
    if iprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None and fastbinary is not None:
      fastbinary.decode_binary(self, iprot.trans, (self.__class__, self.thrift_spec))
      return
    iprot.readStructBegin()
    while True:
      (fname, ftype, fid) = iprot.readFieldBegin()
      if ftype == TType.STOP:
        break
      if fid == 1:
        if ftype == TType.STRUCT:
          self.jobAbstract = TJobAbstract()
          self.jobAbstract.read(iprot)
        else:
          iprot.skip(ftype)
      elif fid == 2:
        if ftype == TType.STRING:
          self.hadoopName = iprot.readString()
        else:
          iprot.skip(ftype)
      elif fid == 3:
        if ftype == TType.I64:
          self.sinkId = iprot.readI64()
        else:
          iprot.skip(ftype)
      elif fid == 4:
        if ftype == TType.STRING:
          self.sourceCollectionId = iprot.readString()
        else:
          iprot.skip(ftype)
      elif fid == 5:
        if ftype == TType.MAP:
          self.parameters = {}
          (_ktype201, _vtype202, _size200 ) = iprot.readMapBegin()
          for _i204 in xrange(_size200):
            _key205 = iprot.readString()
            _val206 = iprot.readString()
            self.parameters[_key205] = _val206
          iprot.readMapEnd()
        else:
          iprot.skip(ftype)
      elif fid == 6:
        if ftype == TType.STRING:
          self.className = iprot.readString()
        else:
          iprot.skip(ftype)
      elif fid == 7:
        if ftype == TType.STRING:
          self.timeField = iprot.readString()
        else:
          iprot.skip(ftype)
      elif fid == 8:
        if ftype == TType.STRING:
          self.timeFormat = iprot.readString()
        else:
          iprot.skip(ftype)
      elif fid == 9:
        if ftype == TType.I64:
          self.recordCount = iprot.readI64()
        else:
          iprot.skip(ftype)
      elif fid == 10:
        if ftype == TType.LIST:
          self.transforms = []
          (_etype210, _size207) = iprot.readListBegin()
          for _i211 in xrange(_size207):
            _elem212 = TExportTransformConfiguration()
            _elem212.read(iprot)
            self.transforms.append(_elem212)
          iprot.readListEnd()
        else:
          iprot.skip(ftype)
      elif fid == 11:
        if ftype == TType.STRING:
          self.inputDataWindowType = iprot.readString()
        else:
          iprot.skip(ftype)
      else:
        iprot.skip(ftype)
      iprot.readFieldEnd()
    iprot.readStructEnd()

  def write(self, oprot):
    if oprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and self.thrift_spec is not None and fastbinary is not None:
      oprot.trans.write(fastbinary.encode_binary(self, (self.__class__, self.thrift_spec)))
      return
    oprot.writeStructBegin('TExportJob')
    if self.jobAbstract is not None:
      oprot.writeFieldBegin('jobAbstract', TType.STRUCT, 1)
      self.jobAbstract.write(oprot)
      oprot.writeFieldEnd()
    if self.hadoopName is not None:
      oprot.writeFieldBegin('hadoopName', TType.STRING, 2)
      oprot.writeString(self.hadoopName)
      oprot.writeFieldEnd()
    if self.sinkId is not None:
      oprot.writeFieldBegin('sinkId', TType.I64, 3)
      oprot.writeI64(self.sinkId)
      oprot.writeFieldEnd()
    if self.sourceCollectionId is not None:
      oprot.writeFieldBegin('sourceCollectionId', TType.STRING, 4)
      oprot.writeString(self.sourceCollectionId)
      oprot.writeFieldEnd()
    if self.parameters is not None:
      oprot.writeFieldBegin('parameters', TType.MAP, 5)
      oprot.writeMapBegin(TType.STRING, TType.STRING, len(self.parameters))
      for kiter213,viter214 in self.parameters.items():
        oprot.writeString(kiter213)
        oprot.writeString(viter214)
      oprot.writeMapEnd()
      oprot.writeFieldEnd()
    if self.className is not None:
      oprot.writeFieldBegin('className', TType.STRING, 6)
      oprot.writeString(self.className)
      oprot.writeFieldEnd()
    if self.timeField is not None:
      oprot.writeFieldBegin('timeField', TType.STRING, 7)
      oprot.writeString(self.timeField)
      oprot.writeFieldEnd()
    if self.timeFormat is not None:
      oprot.writeFieldBegin('timeFormat', TType.STRING, 8)
      oprot.writeString(self.timeFormat)
      oprot.writeFieldEnd()
    if self.recordCount is not None:
      oprot.writeFieldBegin('recordCount', TType.I64, 9)
      oprot.writeI64(self.recordCount)
      oprot.writeFieldEnd()
    if self.transforms is not None:
      oprot.writeFieldBegin('transforms', TType.LIST, 10)
      oprot.writeListBegin(TType.STRUCT, len(self.transforms))
      for iter215 in self.transforms:
        iter215.write(oprot)
      oprot.writeListEnd()
      oprot.writeFieldEnd()
    if self.inputDataWindowType is not None:
      oprot.writeFieldBegin('inputDataWindowType', TType.STRING, 11)
      oprot.writeString(self.inputDataWindowType)
      oprot.writeFieldEnd()
    oprot.writeFieldStop()
    oprot.writeStructEnd()

  def validate(self):
    return


  def __hash__(self):
    value = 17
    value = (value * 31) ^ hash(self.jobAbstract)
    value = (value * 31) ^ hash(self.hadoopName)
    value = (value * 31) ^ hash(self.sinkId)
    value = (value * 31) ^ hash(self.sourceCollectionId)
    value = (value * 31) ^ hash(self.parameters)
    value = (value * 31) ^ hash(self.className)
    value = (value * 31) ^ hash(self.timeField)
    value = (value * 31) ^ hash(self.timeFormat)
    value = (value * 31) ^ hash(self.recordCount)
    value = (value * 31) ^ hash(self.transforms)
    value = (value * 31) ^ hash(self.inputDataWindowType)
    return value

  def __repr__(self):
    L = ['%s=%r' % (key, value)
      for key, value in self.__dict__.iteritems()]
    return '%s(%s)' % (self.__class__.__name__, ', '.join(L))

  def __eq__(self, other):
    return isinstance(other, self.__class__) and self.__dict__ == other.__dict__

  def __ne__(self, other):
    return not (self == other)

class TExportFileFormatDescription:
  """
  Attributes:
   - id
   - name
   - implementationClassName
   - typeId
   - description
   - parameters
   - addOnId
   - disabled
   - version
  """

  thrift_spec = (
    None, # 0
    (1, TType.I64, 'id', None, None, ), # 1
    (2, TType.STRING, 'name', None, None, ), # 2
    (3, TType.STRING, 'implementationClassName', None, None, ), # 3
    (4, TType.STRING, 'typeId', None, None, ), # 4
    (5, TType.STRING, 'description', None, None, ), # 5
    (6, TType.LIST, 'parameters', (TType.STRUCT,(koverse.thriftgen.ttypes.TParameter, koverse.thriftgen.ttypes.TParameter.thrift_spec)), None, ), # 6
    (7, TType.I64, 'addOnId', None, None, ), # 7
    (8, TType.BOOL, 'disabled', None, None, ), # 8
    (9, TType.STRING, 'version', None, None, ), # 9
  )

  def __init__(self, id=None, name=None, implementationClassName=None, typeId=None, description=None, parameters=None, addOnId=None, disabled=None, version=None,):
    self.id = id
    self.name = name
    self.implementationClassName = implementationClassName
    self.typeId = typeId
    self.description = description
    self.parameters = parameters
    self.addOnId = addOnId
    self.disabled = disabled
    self.version = version

  def read(self, iprot):
    if iprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None and fastbinary is not None:
      fastbinary.decode_binary(self, iprot.trans, (self.__class__, self.thrift_spec))
      return
    iprot.readStructBegin()
    while True:
      (fname, ftype, fid) = iprot.readFieldBegin()
      if ftype == TType.STOP:
        break
      if fid == 1:
        if ftype == TType.I64:
          self.id = iprot.readI64()
        else:
          iprot.skip(ftype)
      elif fid == 2:
        if ftype == TType.STRING:
          self.name = iprot.readString()
        else:
          iprot.skip(ftype)
      elif fid == 3:
        if ftype == TType.STRING:
          self.implementationClassName = iprot.readString()
        else:
          iprot.skip(ftype)
      elif fid == 4:
        if ftype == TType.STRING:
          self.typeId = iprot.readString()
        else:
          iprot.skip(ftype)
      elif fid == 5:
        if ftype == TType.STRING:
          self.description = iprot.readString()
        else:
          iprot.skip(ftype)
      elif fid == 6:
        if ftype == TType.LIST:
          self.parameters = []
          (_etype219, _size216) = iprot.readListBegin()
          for _i220 in xrange(_size216):
            _elem221 = koverse.thriftgen.ttypes.TParameter()
            _elem221.read(iprot)
            self.parameters.append(_elem221)
          iprot.readListEnd()
        else:
          iprot.skip(ftype)
      elif fid == 7:
        if ftype == TType.I64:
          self.addOnId = iprot.readI64()
        else:
          iprot.skip(ftype)
      elif fid == 8:
        if ftype == TType.BOOL:
          self.disabled = iprot.readBool()
        else:
          iprot.skip(ftype)
      elif fid == 9:
        if ftype == TType.STRING:
          self.version = iprot.readString()
        else:
          iprot.skip(ftype)
      else:
        iprot.skip(ftype)
      iprot.readFieldEnd()
    iprot.readStructEnd()

  def write(self, oprot):
    if oprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and self.thrift_spec is not None and fastbinary is not None:
      oprot.trans.write(fastbinary.encode_binary(self, (self.__class__, self.thrift_spec)))
      return
    oprot.writeStructBegin('TExportFileFormatDescription')
    if self.id is not None:
      oprot.writeFieldBegin('id', TType.I64, 1)
      oprot.writeI64(self.id)
      oprot.writeFieldEnd()
    if self.name is not None:
      oprot.writeFieldBegin('name', TType.STRING, 2)
      oprot.writeString(self.name)
      oprot.writeFieldEnd()
    if self.implementationClassName is not None:
      oprot.writeFieldBegin('implementationClassName', TType.STRING, 3)
      oprot.writeString(self.implementationClassName)
      oprot.writeFieldEnd()
    if self.typeId is not None:
      oprot.writeFieldBegin('typeId', TType.STRING, 4)
      oprot.writeString(self.typeId)
      oprot.writeFieldEnd()
    if self.description is not None:
      oprot.writeFieldBegin('description', TType.STRING, 5)
      oprot.writeString(self.description)
      oprot.writeFieldEnd()
    if self.parameters is not None:
      oprot.writeFieldBegin('parameters', TType.LIST, 6)
      oprot.writeListBegin(TType.STRUCT, len(self.parameters))
      for iter222 in self.parameters:
        iter222.write(oprot)
      oprot.writeListEnd()
      oprot.writeFieldEnd()
    if self.addOnId is not None:
      oprot.writeFieldBegin('addOnId', TType.I64, 7)
      oprot.writeI64(self.addOnId)
      oprot.writeFieldEnd()
    if self.disabled is not None:
      oprot.writeFieldBegin('disabled', TType.BOOL, 8)
      oprot.writeBool(self.disabled)
      oprot.writeFieldEnd()
    if self.version is not None:
      oprot.writeFieldBegin('version', TType.STRING, 9)
      oprot.writeString(self.version)
      oprot.writeFieldEnd()
    oprot.writeFieldStop()
    oprot.writeStructEnd()

  def validate(self):
    return


  def __hash__(self):
    value = 17
    value = (value * 31) ^ hash(self.id)
    value = (value * 31) ^ hash(self.name)
    value = (value * 31) ^ hash(self.implementationClassName)
    value = (value * 31) ^ hash(self.typeId)
    value = (value * 31) ^ hash(self.description)
    value = (value * 31) ^ hash(self.parameters)
    value = (value * 31) ^ hash(self.addOnId)
    value = (value * 31) ^ hash(self.disabled)
    value = (value * 31) ^ hash(self.version)
    return value

  def __repr__(self):
    L = ['%s=%r' % (key, value)
      for key, value in self.__dict__.iteritems()]
    return '%s(%s)' % (self.__class__.__name__, ', '.join(L))

  def __eq__(self, other):
    return isinstance(other, self.__class__) and self.__dict__ == other.__dict__

  def __ne__(self, other):
    return not (self == other)

class TRecordsProviderDescription:
  """
  Attributes:
   - id
   - name
   - implementationClassName
   - typeId
   - description
   - parameters
   - addOnId
   - disabled
   - version
   - priority
   - extensions
  """

  thrift_spec = (
    None, # 0
    (1, TType.I64, 'id', None, None, ), # 1
    (2, TType.STRING, 'name', None, None, ), # 2
    (3, TType.STRING, 'implementationClassName', None, None, ), # 3
    (4, TType.STRING, 'typeId', None, None, ), # 4
    (5, TType.STRING, 'description', None, None, ), # 5
    (6, TType.LIST, 'parameters', (TType.STRUCT,(koverse.thriftgen.ttypes.TParameter, koverse.thriftgen.ttypes.TParameter.thrift_spec)), None, ), # 6
    (7, TType.I64, 'addOnId', None, None, ), # 7
    (8, TType.BOOL, 'disabled', None, None, ), # 8
    (9, TType.STRING, 'version', None, None, ), # 9
    (10, TType.I32, 'priority', None, None, ), # 10
    (11, TType.SET, 'extensions', (TType.STRING,None), None, ), # 11
  )

  def __init__(self, id=None, name=None, implementationClassName=None, typeId=None, description=None, parameters=None, addOnId=None, disabled=None, version=None, priority=None, extensions=None,):
    self.id = id
    self.name = name
    self.implementationClassName = implementationClassName
    self.typeId = typeId
    self.description = description
    self.parameters = parameters
    self.addOnId = addOnId
    self.disabled = disabled
    self.version = version
    self.priority = priority
    self.extensions = extensions

  def read(self, iprot):
    if iprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None and fastbinary is not None:
      fastbinary.decode_binary(self, iprot.trans, (self.__class__, self.thrift_spec))
      return
    iprot.readStructBegin()
    while True:
      (fname, ftype, fid) = iprot.readFieldBegin()
      if ftype == TType.STOP:
        break
      if fid == 1:
        if ftype == TType.I64:
          self.id = iprot.readI64()
        else:
          iprot.skip(ftype)
      elif fid == 2:
        if ftype == TType.STRING:
          self.name = iprot.readString()
        else:
          iprot.skip(ftype)
      elif fid == 3:
        if ftype == TType.STRING:
          self.implementationClassName = iprot.readString()
        else:
          iprot.skip(ftype)
      elif fid == 4:
        if ftype == TType.STRING:
          self.typeId = iprot.readString()
        else:
          iprot.skip(ftype)
      elif fid == 5:
        if ftype == TType.STRING:
          self.description = iprot.readString()
        else:
          iprot.skip(ftype)
      elif fid == 6:
        if ftype == TType.LIST:
          self.parameters = []
          (_etype226, _size223) = iprot.readListBegin()
          for _i227 in xrange(_size223):
            _elem228 = koverse.thriftgen.ttypes.TParameter()
            _elem228.read(iprot)
            self.parameters.append(_elem228)
          iprot.readListEnd()
        else:
          iprot.skip(ftype)
      elif fid == 7:
        if ftype == TType.I64:
          self.addOnId = iprot.readI64()
        else:
          iprot.skip(ftype)
      elif fid == 8:
        if ftype == TType.BOOL:
          self.disabled = iprot.readBool()
        else:
          iprot.skip(ftype)
      elif fid == 9:
        if ftype == TType.STRING:
          self.version = iprot.readString()
        else:
          iprot.skip(ftype)
      elif fid == 10:
        if ftype == TType.I32:
          self.priority = iprot.readI32()
        else:
          iprot.skip(ftype)
      elif fid == 11:
        if ftype == TType.SET:
          self.extensions = set()
          (_etype232, _size229) = iprot.readSetBegin()
          for _i233 in xrange(_size229):
            _elem234 = iprot.readString()
            self.extensions.add(_elem234)
          iprot.readSetEnd()
        else:
          iprot.skip(ftype)
      else:
        iprot.skip(ftype)
      iprot.readFieldEnd()
    iprot.readStructEnd()

  def write(self, oprot):
    if oprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and self.thrift_spec is not None and fastbinary is not None:
      oprot.trans.write(fastbinary.encode_binary(self, (self.__class__, self.thrift_spec)))
      return
    oprot.writeStructBegin('TRecordsProviderDescription')
    if self.id is not None:
      oprot.writeFieldBegin('id', TType.I64, 1)
      oprot.writeI64(self.id)
      oprot.writeFieldEnd()
    if self.name is not None:
      oprot.writeFieldBegin('name', TType.STRING, 2)
      oprot.writeString(self.name)
      oprot.writeFieldEnd()
    if self.implementationClassName is not None:
      oprot.writeFieldBegin('implementationClassName', TType.STRING, 3)
      oprot.writeString(self.implementationClassName)
      oprot.writeFieldEnd()
    if self.typeId is not None:
      oprot.writeFieldBegin('typeId', TType.STRING, 4)
      oprot.writeString(self.typeId)
      oprot.writeFieldEnd()
    if self.description is not None:
      oprot.writeFieldBegin('description', TType.STRING, 5)
      oprot.writeString(self.description)
      oprot.writeFieldEnd()
    if self.parameters is not None:
      oprot.writeFieldBegin('parameters', TType.LIST, 6)
      oprot.writeListBegin(TType.STRUCT, len(self.parameters))
      for iter235 in self.parameters:
        iter235.write(oprot)
      oprot.writeListEnd()
      oprot.writeFieldEnd()
    if self.addOnId is not None:
      oprot.writeFieldBegin('addOnId', TType.I64, 7)
      oprot.writeI64(self.addOnId)
      oprot.writeFieldEnd()
    if self.disabled is not None:
      oprot.writeFieldBegin('disabled', TType.BOOL, 8)
      oprot.writeBool(self.disabled)
      oprot.writeFieldEnd()
    if self.version is not None:
      oprot.writeFieldBegin('version', TType.STRING, 9)
      oprot.writeString(self.version)
      oprot.writeFieldEnd()
    if self.priority is not None:
      oprot.writeFieldBegin('priority', TType.I32, 10)
      oprot.writeI32(self.priority)
      oprot.writeFieldEnd()
    if self.extensions is not None:
      oprot.writeFieldBegin('extensions', TType.SET, 11)
      oprot.writeSetBegin(TType.STRING, len(self.extensions))
      for iter236 in self.extensions:
        oprot.writeString(iter236)
      oprot.writeSetEnd()
      oprot.writeFieldEnd()
    oprot.writeFieldStop()
    oprot.writeStructEnd()

  def validate(self):
    return


  def __hash__(self):
    value = 17
    value = (value * 31) ^ hash(self.id)
    value = (value * 31) ^ hash(self.name)
    value = (value * 31) ^ hash(self.implementationClassName)
    value = (value * 31) ^ hash(self.typeId)
    value = (value * 31) ^ hash(self.description)
    value = (value * 31) ^ hash(self.parameters)
    value = (value * 31) ^ hash(self.addOnId)
    value = (value * 31) ^ hash(self.disabled)
    value = (value * 31) ^ hash(self.version)
    value = (value * 31) ^ hash(self.priority)
    value = (value * 31) ^ hash(self.extensions)
    return value

  def __repr__(self):
    L = ['%s=%r' % (key, value)
      for key, value in self.__dict__.iteritems()]
    return '%s(%s)' % (self.__class__.__name__, ', '.join(L))

  def __eq__(self, other):
    return isinstance(other, self.__class__) and self.__dict__ == other.__dict__

  def __ne__(self, other):
    return not (self == other)

class TDataCollectionBatchJob:
  """
  Attributes:
   - batchJob
   - collectionId
   - hadoopJobName
   - mapProgress
   - reduceProgress
  """

  thrift_spec = (
    None, # 0
    (1, TType.STRUCT, 'batchJob', (TBatchJob, TBatchJob.thrift_spec), None, ), # 1
    (2, TType.STRING, 'collectionId', None, None, ), # 2
    (3, TType.STRING, 'hadoopJobName', None, None, ), # 3
    (4, TType.DOUBLE, 'mapProgress', None, None, ), # 4
    (5, TType.DOUBLE, 'reduceProgress', None, None, ), # 5
  )

  def __init__(self, batchJob=None, collectionId=None, hadoopJobName=None, mapProgress=None, reduceProgress=None,):
    self.batchJob = batchJob
    self.collectionId = collectionId
    self.hadoopJobName = hadoopJobName
    self.mapProgress = mapProgress
    self.reduceProgress = reduceProgress

  def read(self, iprot):
    if iprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None and fastbinary is not None:
      fastbinary.decode_binary(self, iprot.trans, (self.__class__, self.thrift_spec))
      return
    iprot.readStructBegin()
    while True:
      (fname, ftype, fid) = iprot.readFieldBegin()
      if ftype == TType.STOP:
        break
      if fid == 1:
        if ftype == TType.STRUCT:
          self.batchJob = TBatchJob()
          self.batchJob.read(iprot)
        else:
          iprot.skip(ftype)
      elif fid == 2:
        if ftype == TType.STRING:
          self.collectionId = iprot.readString()
        else:
          iprot.skip(ftype)
      elif fid == 3:
        if ftype == TType.STRING:
          self.hadoopJobName = iprot.readString()
        else:
          iprot.skip(ftype)
      elif fid == 4:
        if ftype == TType.DOUBLE:
          self.mapProgress = iprot.readDouble()
        else:
          iprot.skip(ftype)
      elif fid == 5:
        if ftype == TType.DOUBLE:
          self.reduceProgress = iprot.readDouble()
        else:
          iprot.skip(ftype)
      else:
        iprot.skip(ftype)
      iprot.readFieldEnd()
    iprot.readStructEnd()

  def write(self, oprot):
    if oprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and self.thrift_spec is not None and fastbinary is not None:
      oprot.trans.write(fastbinary.encode_binary(self, (self.__class__, self.thrift_spec)))
      return
    oprot.writeStructBegin('TDataCollectionBatchJob')
    if self.batchJob is not None:
      oprot.writeFieldBegin('batchJob', TType.STRUCT, 1)
      self.batchJob.write(oprot)
      oprot.writeFieldEnd()
    if self.collectionId is not None:
      oprot.writeFieldBegin('collectionId', TType.STRING, 2)
      oprot.writeString(self.collectionId)
      oprot.writeFieldEnd()
    if self.hadoopJobName is not None:
      oprot.writeFieldBegin('hadoopJobName', TType.STRING, 3)
      oprot.writeString(self.hadoopJobName)
      oprot.writeFieldEnd()
    if self.mapProgress is not None:
      oprot.writeFieldBegin('mapProgress', TType.DOUBLE, 4)
      oprot.writeDouble(self.mapProgress)
      oprot.writeFieldEnd()
    if self.reduceProgress is not None:
      oprot.writeFieldBegin('reduceProgress', TType.DOUBLE, 5)
      oprot.writeDouble(self.reduceProgress)
      oprot.writeFieldEnd()
    oprot.writeFieldStop()
    oprot.writeStructEnd()

  def validate(self):
    return


  def __hash__(self):
    value = 17
    value = (value * 31) ^ hash(self.batchJob)
    value = (value * 31) ^ hash(self.collectionId)
    value = (value * 31) ^ hash(self.hadoopJobName)
    value = (value * 31) ^ hash(self.mapProgress)
    value = (value * 31) ^ hash(self.reduceProgress)
    return value

  def __repr__(self):
    L = ['%s=%r' % (key, value)
      for key, value in self.__dict__.iteritems()]
    return '%s(%s)' % (self.__class__.__name__, ', '.join(L))

  def __eq__(self, other):
    return isinstance(other, self.__class__) and self.__dict__ == other.__dict__

  def __ne__(self, other):
    return not (self == other)

class TImportSample:
  """
  Attributes:
   - problems
   - records
   - flatSchema
   - parserClassName
   - problemDetails
  """

  thrift_spec = (
    None, # 0
    (1, TType.LIST, 'problems', (TType.STRING,None), None, ), # 1
    (2, TType.LIST, 'records', (TType.STRUCT,(koverse.thriftgen.ttypes.TSimpleRecord, koverse.thriftgen.ttypes.TSimpleRecord.thrift_spec)), None, ), # 2
    (3, TType.BOOL, 'flatSchema', None, None, ), # 3
    (4, TType.STRING, 'parserClassName', None, None, ), # 4
    (5, TType.LIST, 'problemDetails', (TType.STRING,None), None, ), # 5
  )

  def __init__(self, problems=None, records=None, flatSchema=None, parserClassName=None, problemDetails=None,):
    self.problems = problems
    self.records = records
    self.flatSchema = flatSchema
    self.parserClassName = parserClassName
    self.problemDetails = problemDetails

  def read(self, iprot):
    if iprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None and fastbinary is not None:
      fastbinary.decode_binary(self, iprot.trans, (self.__class__, self.thrift_spec))
      return
    iprot.readStructBegin()
    while True:
      (fname, ftype, fid) = iprot.readFieldBegin()
      if ftype == TType.STOP:
        break
      if fid == 1:
        if ftype == TType.LIST:
          self.problems = []
          (_etype240, _size237) = iprot.readListBegin()
          for _i241 in xrange(_size237):
            _elem242 = iprot.readString()
            self.problems.append(_elem242)
          iprot.readListEnd()
        else:
          iprot.skip(ftype)
      elif fid == 2:
        if ftype == TType.LIST:
          self.records = []
          (_etype246, _size243) = iprot.readListBegin()
          for _i247 in xrange(_size243):
            _elem248 = koverse.thriftgen.ttypes.TSimpleRecord()
            _elem248.read(iprot)
            self.records.append(_elem248)
          iprot.readListEnd()
        else:
          iprot.skip(ftype)
      elif fid == 3:
        if ftype == TType.BOOL:
          self.flatSchema = iprot.readBool()
        else:
          iprot.skip(ftype)
      elif fid == 4:
        if ftype == TType.STRING:
          self.parserClassName = iprot.readString()
        else:
          iprot.skip(ftype)
      elif fid == 5:
        if ftype == TType.LIST:
          self.problemDetails = []
          (_etype252, _size249) = iprot.readListBegin()
          for _i253 in xrange(_size249):
            _elem254 = iprot.readString()
            self.problemDetails.append(_elem254)
          iprot.readListEnd()
        else:
          iprot.skip(ftype)
      else:
        iprot.skip(ftype)
      iprot.readFieldEnd()
    iprot.readStructEnd()

  def write(self, oprot):
    if oprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and self.thrift_spec is not None and fastbinary is not None:
      oprot.trans.write(fastbinary.encode_binary(self, (self.__class__, self.thrift_spec)))
      return
    oprot.writeStructBegin('TImportSample')
    if self.problems is not None:
      oprot.writeFieldBegin('problems', TType.LIST, 1)
      oprot.writeListBegin(TType.STRING, len(self.problems))
      for iter255 in self.problems:
        oprot.writeString(iter255)
      oprot.writeListEnd()
      oprot.writeFieldEnd()
    if self.records is not None:
      oprot.writeFieldBegin('records', TType.LIST, 2)
      oprot.writeListBegin(TType.STRUCT, len(self.records))
      for iter256 in self.records:
        iter256.write(oprot)
      oprot.writeListEnd()
      oprot.writeFieldEnd()
    if self.flatSchema is not None:
      oprot.writeFieldBegin('flatSchema', TType.BOOL, 3)
      oprot.writeBool(self.flatSchema)
      oprot.writeFieldEnd()
    if self.parserClassName is not None:
      oprot.writeFieldBegin('parserClassName', TType.STRING, 4)
      oprot.writeString(self.parserClassName)
      oprot.writeFieldEnd()
    if self.problemDetails is not None:
      oprot.writeFieldBegin('problemDetails', TType.LIST, 5)
      oprot.writeListBegin(TType.STRING, len(self.problemDetails))
      for iter257 in self.problemDetails:
        oprot.writeString(iter257)
      oprot.writeListEnd()
      oprot.writeFieldEnd()
    oprot.writeFieldStop()
    oprot.writeStructEnd()

  def validate(self):
    return


  def __hash__(self):
    value = 17
    value = (value * 31) ^ hash(self.problems)
    value = (value * 31) ^ hash(self.records)
    value = (value * 31) ^ hash(self.flatSchema)
    value = (value * 31) ^ hash(self.parserClassName)
    value = (value * 31) ^ hash(self.problemDetails)
    return value

  def __repr__(self):
    L = ['%s=%r' % (key, value)
      for key, value in self.__dict__.iteritems()]
    return '%s(%s)' % (self.__class__.__name__, ', '.join(L))

  def __eq__(self, other):
    return isinstance(other, self.__class__) and self.__dict__ == other.__dict__

  def __ne__(self, other):
    return not (self == other)

class TWorkflow:
  """
  Attributes:
   - id
   - name
   - notificationEmails
   - importFlowIds
   - transformIds
   - sinkIds
   - successImportFlowId
   - successTransformId
   - successSinkId
  """

  thrift_spec = (
    None, # 0
    (1, TType.I64, 'id', None, None, ), # 1
    (2, TType.STRING, 'name', None, None, ), # 2
    (3, TType.LIST, 'notificationEmails', (TType.STRING,None), None, ), # 3
    (4, TType.LIST, 'importFlowIds', (TType.I64,None), None, ), # 4
    (5, TType.LIST, 'transformIds', (TType.I64,None), None, ), # 5
    (6, TType.LIST, 'sinkIds', (TType.I64,None), None, ), # 6
    (7, TType.I64, 'successImportFlowId', None, None, ), # 7
    (8, TType.I64, 'successTransformId', None, None, ), # 8
    (9, TType.I64, 'successSinkId', None, None, ), # 9
  )

  def __init__(self, id=None, name=None, notificationEmails=None, importFlowIds=None, transformIds=None, sinkIds=None, successImportFlowId=None, successTransformId=None, successSinkId=None,):
    self.id = id
    self.name = name
    self.notificationEmails = notificationEmails
    self.importFlowIds = importFlowIds
    self.transformIds = transformIds
    self.sinkIds = sinkIds
    self.successImportFlowId = successImportFlowId
    self.successTransformId = successTransformId
    self.successSinkId = successSinkId

  def read(self, iprot):
    if iprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None and fastbinary is not None:
      fastbinary.decode_binary(self, iprot.trans, (self.__class__, self.thrift_spec))
      return
    iprot.readStructBegin()
    while True:
      (fname, ftype, fid) = iprot.readFieldBegin()
      if ftype == TType.STOP:
        break
      if fid == 1:
        if ftype == TType.I64:
          self.id = iprot.readI64()
        else:
          iprot.skip(ftype)
      elif fid == 2:
        if ftype == TType.STRING:
          self.name = iprot.readString()
        else:
          iprot.skip(ftype)
      elif fid == 3:
        if ftype == TType.LIST:
          self.notificationEmails = []
          (_etype261, _size258) = iprot.readListBegin()
          for _i262 in xrange(_size258):
            _elem263 = iprot.readString()
            self.notificationEmails.append(_elem263)
          iprot.readListEnd()
        else:
          iprot.skip(ftype)
      elif fid == 4:
        if ftype == TType.LIST:
          self.importFlowIds = []
          (_etype267, _size264) = iprot.readListBegin()
          for _i268 in xrange(_size264):
            _elem269 = iprot.readI64()
            self.importFlowIds.append(_elem269)
          iprot.readListEnd()
        else:
          iprot.skip(ftype)
      elif fid == 5:
        if ftype == TType.LIST:
          self.transformIds = []
          (_etype273, _size270) = iprot.readListBegin()
          for _i274 in xrange(_size270):
            _elem275 = iprot.readI64()
            self.transformIds.append(_elem275)
          iprot.readListEnd()
        else:
          iprot.skip(ftype)
      elif fid == 6:
        if ftype == TType.LIST:
          self.sinkIds = []
          (_etype279, _size276) = iprot.readListBegin()
          for _i280 in xrange(_size276):
            _elem281 = iprot.readI64()
            self.sinkIds.append(_elem281)
          iprot.readListEnd()
        else:
          iprot.skip(ftype)
      elif fid == 7:
        if ftype == TType.I64:
          self.successImportFlowId = iprot.readI64()
        else:
          iprot.skip(ftype)
      elif fid == 8:
        if ftype == TType.I64:
          self.successTransformId = iprot.readI64()
        else:
          iprot.skip(ftype)
      elif fid == 9:
        if ftype == TType.I64:
          self.successSinkId = iprot.readI64()
        else:
          iprot.skip(ftype)
      else:
        iprot.skip(ftype)
      iprot.readFieldEnd()
    iprot.readStructEnd()

  def write(self, oprot):
    if oprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and self.thrift_spec is not None and fastbinary is not None:
      oprot.trans.write(fastbinary.encode_binary(self, (self.__class__, self.thrift_spec)))
      return
    oprot.writeStructBegin('TWorkflow')
    if self.id is not None:
      oprot.writeFieldBegin('id', TType.I64, 1)
      oprot.writeI64(self.id)
      oprot.writeFieldEnd()
    if self.name is not None:
      oprot.writeFieldBegin('name', TType.STRING, 2)
      oprot.writeString(self.name)
      oprot.writeFieldEnd()
    if self.notificationEmails is not None:
      oprot.writeFieldBegin('notificationEmails', TType.LIST, 3)
      oprot.writeListBegin(TType.STRING, len(self.notificationEmails))
      for iter282 in self.notificationEmails:
        oprot.writeString(iter282)
      oprot.writeListEnd()
      oprot.writeFieldEnd()
    if self.importFlowIds is not None:
      oprot.writeFieldBegin('importFlowIds', TType.LIST, 4)
      oprot.writeListBegin(TType.I64, len(self.importFlowIds))
      for iter283 in self.importFlowIds:
        oprot.writeI64(iter283)
      oprot.writeListEnd()
      oprot.writeFieldEnd()
    if self.transformIds is not None:
      oprot.writeFieldBegin('transformIds', TType.LIST, 5)
      oprot.writeListBegin(TType.I64, len(self.transformIds))
      for iter284 in self.transformIds:
        oprot.writeI64(iter284)
      oprot.writeListEnd()
      oprot.writeFieldEnd()
    if self.sinkIds is not None:
      oprot.writeFieldBegin('sinkIds', TType.LIST, 6)
      oprot.writeListBegin(TType.I64, len(self.sinkIds))
      for iter285 in self.sinkIds:
        oprot.writeI64(iter285)
      oprot.writeListEnd()
      oprot.writeFieldEnd()
    if self.successImportFlowId is not None:
      oprot.writeFieldBegin('successImportFlowId', TType.I64, 7)
      oprot.writeI64(self.successImportFlowId)
      oprot.writeFieldEnd()
    if self.successTransformId is not None:
      oprot.writeFieldBegin('successTransformId', TType.I64, 8)
      oprot.writeI64(self.successTransformId)
      oprot.writeFieldEnd()
    if self.successSinkId is not None:
      oprot.writeFieldBegin('successSinkId', TType.I64, 9)
      oprot.writeI64(self.successSinkId)
      oprot.writeFieldEnd()
    oprot.writeFieldStop()
    oprot.writeStructEnd()

  def validate(self):
    return


  def __hash__(self):
    value = 17
    value = (value * 31) ^ hash(self.id)
    value = (value * 31) ^ hash(self.name)
    value = (value * 31) ^ hash(self.notificationEmails)
    value = (value * 31) ^ hash(self.importFlowIds)
    value = (value * 31) ^ hash(self.transformIds)
    value = (value * 31) ^ hash(self.sinkIds)
    value = (value * 31) ^ hash(self.successImportFlowId)
    value = (value * 31) ^ hash(self.successTransformId)
    value = (value * 31) ^ hash(self.successSinkId)
    return value

  def __repr__(self):
    L = ['%s=%r' % (key, value)
      for key, value in self.__dict__.iteritems()]
    return '%s(%s)' % (self.__class__.__name__, ', '.join(L))

  def __eq__(self, other):
    return isinstance(other, self.__class__) and self.__dict__ == other.__dict__

  def __ne__(self, other):
    return not (self == other)
