All Downloads are FREE. Search and download functionalities are using the official Maven repository.

quivr.models.Proposition.scala Maven / Gradle / Ivy

The newest version!
// Generated by the Scala Plugin for the Protocol Buffer Compiler.
// Do not edit!
//
// Protofile syntax: PROTO3

package quivr.models

/** Condition that must be satisfied to unlock
  */
@SerialVersionUID(0L)
final case class Proposition(
    value: quivr.models.Proposition.Value = quivr.models.Proposition.Value.Empty,
    unknownFields: _root_.scalapb.UnknownFieldSet = _root_.scalapb.UnknownFieldSet.empty
    ) extends scalapb.GeneratedMessage with scalapb.lenses.Updatable[Proposition] {
    @transient
    private[this] var __serializedSizeMemoized: _root_.scala.Int = 0
    private[this] def __computeSerializedSize(): _root_.scala.Int = {
      var __size = 0
      if (value.locked.isDefined) {
        val __value = value.locked.get
        __size += 1 + _root_.com.google.protobuf.CodedOutputStream.computeUInt32SizeNoTag(__value.serializedSize) + __value.serializedSize
      };
      if (value.digest.isDefined) {
        val __value = value.digest.get
        __size += 1 + _root_.com.google.protobuf.CodedOutputStream.computeUInt32SizeNoTag(__value.serializedSize) + __value.serializedSize
      };
      if (value.digitalSignature.isDefined) {
        val __value = value.digitalSignature.get
        __size += 1 + _root_.com.google.protobuf.CodedOutputStream.computeUInt32SizeNoTag(__value.serializedSize) + __value.serializedSize
      };
      if (value.heightRange.isDefined) {
        val __value = value.heightRange.get
        __size += 1 + _root_.com.google.protobuf.CodedOutputStream.computeUInt32SizeNoTag(__value.serializedSize) + __value.serializedSize
      };
      if (value.tickRange.isDefined) {
        val __value = value.tickRange.get
        __size += 1 + _root_.com.google.protobuf.CodedOutputStream.computeUInt32SizeNoTag(__value.serializedSize) + __value.serializedSize
      };
      if (value.exactMatch.isDefined) {
        val __value = value.exactMatch.get
        __size += 1 + _root_.com.google.protobuf.CodedOutputStream.computeUInt32SizeNoTag(__value.serializedSize) + __value.serializedSize
      };
      if (value.lessThan.isDefined) {
        val __value = value.lessThan.get
        __size += 1 + _root_.com.google.protobuf.CodedOutputStream.computeUInt32SizeNoTag(__value.serializedSize) + __value.serializedSize
      };
      if (value.greaterThan.isDefined) {
        val __value = value.greaterThan.get
        __size += 1 + _root_.com.google.protobuf.CodedOutputStream.computeUInt32SizeNoTag(__value.serializedSize) + __value.serializedSize
      };
      if (value.equalTo.isDefined) {
        val __value = value.equalTo.get
        __size += 1 + _root_.com.google.protobuf.CodedOutputStream.computeUInt32SizeNoTag(__value.serializedSize) + __value.serializedSize
      };
      if (value.threshold.isDefined) {
        val __value = value.threshold.get
        __size += 1 + _root_.com.google.protobuf.CodedOutputStream.computeUInt32SizeNoTag(__value.serializedSize) + __value.serializedSize
      };
      if (value.not.isDefined) {
        val __value = value.not.get
        __size += 1 + _root_.com.google.protobuf.CodedOutputStream.computeUInt32SizeNoTag(__value.serializedSize) + __value.serializedSize
      };
      if (value.and.isDefined) {
        val __value = value.and.get
        __size += 1 + _root_.com.google.protobuf.CodedOutputStream.computeUInt32SizeNoTag(__value.serializedSize) + __value.serializedSize
      };
      if (value.or.isDefined) {
        val __value = value.or.get
        __size += 1 + _root_.com.google.protobuf.CodedOutputStream.computeUInt32SizeNoTag(__value.serializedSize) + __value.serializedSize
      };
      __size += unknownFields.serializedSize
      __size
    }
    override def serializedSize: _root_.scala.Int = {
      var __size = __serializedSizeMemoized
      if (__size == 0) {
        __size = __computeSerializedSize() + 1
        __serializedSizeMemoized = __size
      }
      __size - 1
      
    }
    def writeTo(`_output__`: _root_.com.google.protobuf.CodedOutputStream): _root_.scala.Unit = {
      value.locked.foreach { __v =>
        val __m = __v
        _output__.writeTag(1, 2)
        _output__.writeUInt32NoTag(__m.serializedSize)
        __m.writeTo(_output__)
      };
      value.digest.foreach { __v =>
        val __m = __v
        _output__.writeTag(2, 2)
        _output__.writeUInt32NoTag(__m.serializedSize)
        __m.writeTo(_output__)
      };
      value.digitalSignature.foreach { __v =>
        val __m = __v
        _output__.writeTag(3, 2)
        _output__.writeUInt32NoTag(__m.serializedSize)
        __m.writeTo(_output__)
      };
      value.heightRange.foreach { __v =>
        val __m = __v
        _output__.writeTag(4, 2)
        _output__.writeUInt32NoTag(__m.serializedSize)
        __m.writeTo(_output__)
      };
      value.tickRange.foreach { __v =>
        val __m = __v
        _output__.writeTag(5, 2)
        _output__.writeUInt32NoTag(__m.serializedSize)
        __m.writeTo(_output__)
      };
      value.exactMatch.foreach { __v =>
        val __m = __v
        _output__.writeTag(6, 2)
        _output__.writeUInt32NoTag(__m.serializedSize)
        __m.writeTo(_output__)
      };
      value.lessThan.foreach { __v =>
        val __m = __v
        _output__.writeTag(7, 2)
        _output__.writeUInt32NoTag(__m.serializedSize)
        __m.writeTo(_output__)
      };
      value.greaterThan.foreach { __v =>
        val __m = __v
        _output__.writeTag(8, 2)
        _output__.writeUInt32NoTag(__m.serializedSize)
        __m.writeTo(_output__)
      };
      value.equalTo.foreach { __v =>
        val __m = __v
        _output__.writeTag(9, 2)
        _output__.writeUInt32NoTag(__m.serializedSize)
        __m.writeTo(_output__)
      };
      value.threshold.foreach { __v =>
        val __m = __v
        _output__.writeTag(10, 2)
        _output__.writeUInt32NoTag(__m.serializedSize)
        __m.writeTo(_output__)
      };
      value.not.foreach { __v =>
        val __m = __v
        _output__.writeTag(11, 2)
        _output__.writeUInt32NoTag(__m.serializedSize)
        __m.writeTo(_output__)
      };
      value.and.foreach { __v =>
        val __m = __v
        _output__.writeTag(12, 2)
        _output__.writeUInt32NoTag(__m.serializedSize)
        __m.writeTo(_output__)
      };
      value.or.foreach { __v =>
        val __m = __v
        _output__.writeTag(13, 2)
        _output__.writeUInt32NoTag(__m.serializedSize)
        __m.writeTo(_output__)
      };
      unknownFields.writeTo(_output__)
    }
    def getLocked: quivr.models.Proposition.Locked = value.locked.getOrElse(quivr.models.Proposition.Locked.defaultInstance)
    def withLocked(__v: quivr.models.Proposition.Locked): Proposition = copy(value = quivr.models.Proposition.Value.Locked(__v))
    def getDigest: quivr.models.Proposition.Digest = value.digest.getOrElse(quivr.models.Proposition.Digest.defaultInstance)
    def withDigest(__v: quivr.models.Proposition.Digest): Proposition = copy(value = quivr.models.Proposition.Value.Digest(__v))
    def getDigitalSignature: quivr.models.Proposition.DigitalSignature = value.digitalSignature.getOrElse(quivr.models.Proposition.DigitalSignature.defaultInstance)
    def withDigitalSignature(__v: quivr.models.Proposition.DigitalSignature): Proposition = copy(value = quivr.models.Proposition.Value.DigitalSignature(__v))
    def getHeightRange: quivr.models.Proposition.HeightRange = value.heightRange.getOrElse(quivr.models.Proposition.HeightRange.defaultInstance)
    def withHeightRange(__v: quivr.models.Proposition.HeightRange): Proposition = copy(value = quivr.models.Proposition.Value.HeightRange(__v))
    def getTickRange: quivr.models.Proposition.TickRange = value.tickRange.getOrElse(quivr.models.Proposition.TickRange.defaultInstance)
    def withTickRange(__v: quivr.models.Proposition.TickRange): Proposition = copy(value = quivr.models.Proposition.Value.TickRange(__v))
    def getExactMatch: quivr.models.Proposition.ExactMatch = value.exactMatch.getOrElse(quivr.models.Proposition.ExactMatch.defaultInstance)
    def withExactMatch(__v: quivr.models.Proposition.ExactMatch): Proposition = copy(value = quivr.models.Proposition.Value.ExactMatch(__v))
    def getLessThan: quivr.models.Proposition.LessThan = value.lessThan.getOrElse(quivr.models.Proposition.LessThan.defaultInstance)
    def withLessThan(__v: quivr.models.Proposition.LessThan): Proposition = copy(value = quivr.models.Proposition.Value.LessThan(__v))
    def getGreaterThan: quivr.models.Proposition.GreaterThan = value.greaterThan.getOrElse(quivr.models.Proposition.GreaterThan.defaultInstance)
    def withGreaterThan(__v: quivr.models.Proposition.GreaterThan): Proposition = copy(value = quivr.models.Proposition.Value.GreaterThan(__v))
    def getEqualTo: quivr.models.Proposition.EqualTo = value.equalTo.getOrElse(quivr.models.Proposition.EqualTo.defaultInstance)
    def withEqualTo(__v: quivr.models.Proposition.EqualTo): Proposition = copy(value = quivr.models.Proposition.Value.EqualTo(__v))
    def getThreshold: quivr.models.Proposition.Threshold = value.threshold.getOrElse(quivr.models.Proposition.Threshold.defaultInstance)
    def withThreshold(__v: quivr.models.Proposition.Threshold): Proposition = copy(value = quivr.models.Proposition.Value.Threshold(__v))
    def getNot: quivr.models.Proposition.Not = value.not.getOrElse(quivr.models.Proposition.Not.defaultInstance)
    def withNot(__v: quivr.models.Proposition.Not): Proposition = copy(value = quivr.models.Proposition.Value.Not(__v))
    def getAnd: quivr.models.Proposition.And = value.and.getOrElse(quivr.models.Proposition.And.defaultInstance)
    def withAnd(__v: quivr.models.Proposition.And): Proposition = copy(value = quivr.models.Proposition.Value.And(__v))
    def getOr: quivr.models.Proposition.Or = value.or.getOrElse(quivr.models.Proposition.Or.defaultInstance)
    def withOr(__v: quivr.models.Proposition.Or): Proposition = copy(value = quivr.models.Proposition.Value.Or(__v))
    def clearValue: Proposition = copy(value = quivr.models.Proposition.Value.Empty)
    def withValue(__v: quivr.models.Proposition.Value): Proposition = copy(value = __v)
    def withUnknownFields(__v: _root_.scalapb.UnknownFieldSet) = copy(unknownFields = __v)
    def discardUnknownFields = copy(unknownFields = _root_.scalapb.UnknownFieldSet.empty)
    def getFieldByNumber(__fieldNumber: _root_.scala.Int): _root_.scala.Any = {
      (__fieldNumber: @_root_.scala.unchecked) match {
        case 1 => value.locked.orNull
        case 2 => value.digest.orNull
        case 3 => value.digitalSignature.orNull
        case 4 => value.heightRange.orNull
        case 5 => value.tickRange.orNull
        case 6 => value.exactMatch.orNull
        case 7 => value.lessThan.orNull
        case 8 => value.greaterThan.orNull
        case 9 => value.equalTo.orNull
        case 10 => value.threshold.orNull
        case 11 => value.not.orNull
        case 12 => value.and.orNull
        case 13 => value.or.orNull
      }
    }
    def getField(__field: _root_.scalapb.descriptors.FieldDescriptor): _root_.scalapb.descriptors.PValue = {
      _root_.scala.Predef.require(__field.containingMessage eq companion.scalaDescriptor)
      (__field.number: @_root_.scala.unchecked) match {
        case 1 => value.locked.map(_.toPMessage).getOrElse(_root_.scalapb.descriptors.PEmpty)
        case 2 => value.digest.map(_.toPMessage).getOrElse(_root_.scalapb.descriptors.PEmpty)
        case 3 => value.digitalSignature.map(_.toPMessage).getOrElse(_root_.scalapb.descriptors.PEmpty)
        case 4 => value.heightRange.map(_.toPMessage).getOrElse(_root_.scalapb.descriptors.PEmpty)
        case 5 => value.tickRange.map(_.toPMessage).getOrElse(_root_.scalapb.descriptors.PEmpty)
        case 6 => value.exactMatch.map(_.toPMessage).getOrElse(_root_.scalapb.descriptors.PEmpty)
        case 7 => value.lessThan.map(_.toPMessage).getOrElse(_root_.scalapb.descriptors.PEmpty)
        case 8 => value.greaterThan.map(_.toPMessage).getOrElse(_root_.scalapb.descriptors.PEmpty)
        case 9 => value.equalTo.map(_.toPMessage).getOrElse(_root_.scalapb.descriptors.PEmpty)
        case 10 => value.threshold.map(_.toPMessage).getOrElse(_root_.scalapb.descriptors.PEmpty)
        case 11 => value.not.map(_.toPMessage).getOrElse(_root_.scalapb.descriptors.PEmpty)
        case 12 => value.and.map(_.toPMessage).getOrElse(_root_.scalapb.descriptors.PEmpty)
        case 13 => value.or.map(_.toPMessage).getOrElse(_root_.scalapb.descriptors.PEmpty)
      }
    }
    def toProtoString: _root_.scala.Predef.String = _root_.scalapb.TextFormat.printToUnicodeString(this)
    def companion: quivr.models.Proposition.type = quivr.models.Proposition
    _root_.scalapb.validate.Validator.assertValid(this)(quivr.models.PropositionValidator)
    // @@protoc_insertion_point(GeneratedMessage[quivr.models.Proposition])
}

object Proposition extends scalapb.GeneratedMessageCompanion[quivr.models.Proposition] {
  implicit def messageCompanion: scalapb.GeneratedMessageCompanion[quivr.models.Proposition] = this
  def parseFrom(`_input__`: _root_.com.google.protobuf.CodedInputStream): quivr.models.Proposition = {
    var __value: quivr.models.Proposition.Value = quivr.models.Proposition.Value.Empty
    var `_unknownFields__`: _root_.scalapb.UnknownFieldSet.Builder = null
    var _done__ = false
    while (!_done__) {
      val _tag__ = _input__.readTag()
      _tag__ match {
        case 0 => _done__ = true
        case 10 =>
          __value = quivr.models.Proposition.Value.Locked(__value.locked.fold(_root_.scalapb.LiteParser.readMessage[quivr.models.Proposition.Locked](_input__))(_root_.scalapb.LiteParser.readMessage(_input__, _)))
        case 18 =>
          __value = quivr.models.Proposition.Value.Digest(__value.digest.fold(_root_.scalapb.LiteParser.readMessage[quivr.models.Proposition.Digest](_input__))(_root_.scalapb.LiteParser.readMessage(_input__, _)))
        case 26 =>
          __value = quivr.models.Proposition.Value.DigitalSignature(__value.digitalSignature.fold(_root_.scalapb.LiteParser.readMessage[quivr.models.Proposition.DigitalSignature](_input__))(_root_.scalapb.LiteParser.readMessage(_input__, _)))
        case 34 =>
          __value = quivr.models.Proposition.Value.HeightRange(__value.heightRange.fold(_root_.scalapb.LiteParser.readMessage[quivr.models.Proposition.HeightRange](_input__))(_root_.scalapb.LiteParser.readMessage(_input__, _)))
        case 42 =>
          __value = quivr.models.Proposition.Value.TickRange(__value.tickRange.fold(_root_.scalapb.LiteParser.readMessage[quivr.models.Proposition.TickRange](_input__))(_root_.scalapb.LiteParser.readMessage(_input__, _)))
        case 50 =>
          __value = quivr.models.Proposition.Value.ExactMatch(__value.exactMatch.fold(_root_.scalapb.LiteParser.readMessage[quivr.models.Proposition.ExactMatch](_input__))(_root_.scalapb.LiteParser.readMessage(_input__, _)))
        case 58 =>
          __value = quivr.models.Proposition.Value.LessThan(__value.lessThan.fold(_root_.scalapb.LiteParser.readMessage[quivr.models.Proposition.LessThan](_input__))(_root_.scalapb.LiteParser.readMessage(_input__, _)))
        case 66 =>
          __value = quivr.models.Proposition.Value.GreaterThan(__value.greaterThan.fold(_root_.scalapb.LiteParser.readMessage[quivr.models.Proposition.GreaterThan](_input__))(_root_.scalapb.LiteParser.readMessage(_input__, _)))
        case 74 =>
          __value = quivr.models.Proposition.Value.EqualTo(__value.equalTo.fold(_root_.scalapb.LiteParser.readMessage[quivr.models.Proposition.EqualTo](_input__))(_root_.scalapb.LiteParser.readMessage(_input__, _)))
        case 82 =>
          __value = quivr.models.Proposition.Value.Threshold(__value.threshold.fold(_root_.scalapb.LiteParser.readMessage[quivr.models.Proposition.Threshold](_input__))(_root_.scalapb.LiteParser.readMessage(_input__, _)))
        case 90 =>
          __value = quivr.models.Proposition.Value.Not(__value.not.fold(_root_.scalapb.LiteParser.readMessage[quivr.models.Proposition.Not](_input__))(_root_.scalapb.LiteParser.readMessage(_input__, _)))
        case 98 =>
          __value = quivr.models.Proposition.Value.And(__value.and.fold(_root_.scalapb.LiteParser.readMessage[quivr.models.Proposition.And](_input__))(_root_.scalapb.LiteParser.readMessage(_input__, _)))
        case 106 =>
          __value = quivr.models.Proposition.Value.Or(__value.or.fold(_root_.scalapb.LiteParser.readMessage[quivr.models.Proposition.Or](_input__))(_root_.scalapb.LiteParser.readMessage(_input__, _)))
        case tag =>
          if (_unknownFields__ == null) {
            _unknownFields__ = new _root_.scalapb.UnknownFieldSet.Builder()
          }
          _unknownFields__.parseField(tag, _input__)
      }
    }
    quivr.models.Proposition(
        value = __value,
        unknownFields = if (_unknownFields__ == null) _root_.scalapb.UnknownFieldSet.empty else _unknownFields__.result()
    )
  }
  implicit def messageReads: _root_.scalapb.descriptors.Reads[quivr.models.Proposition] = _root_.scalapb.descriptors.Reads{
    case _root_.scalapb.descriptors.PMessage(__fieldsMap) =>
      _root_.scala.Predef.require(__fieldsMap.keys.forall(_.containingMessage eq scalaDescriptor), "FieldDescriptor does not match message type.")
      quivr.models.Proposition(
        value = __fieldsMap.get(scalaDescriptor.findFieldByNumber(1).get).flatMap(_.as[_root_.scala.Option[quivr.models.Proposition.Locked]]).map(quivr.models.Proposition.Value.Locked(_))
            .orElse[quivr.models.Proposition.Value](__fieldsMap.get(scalaDescriptor.findFieldByNumber(2).get).flatMap(_.as[_root_.scala.Option[quivr.models.Proposition.Digest]]).map(quivr.models.Proposition.Value.Digest(_)))
            .orElse[quivr.models.Proposition.Value](__fieldsMap.get(scalaDescriptor.findFieldByNumber(3).get).flatMap(_.as[_root_.scala.Option[quivr.models.Proposition.DigitalSignature]]).map(quivr.models.Proposition.Value.DigitalSignature(_)))
            .orElse[quivr.models.Proposition.Value](__fieldsMap.get(scalaDescriptor.findFieldByNumber(4).get).flatMap(_.as[_root_.scala.Option[quivr.models.Proposition.HeightRange]]).map(quivr.models.Proposition.Value.HeightRange(_)))
            .orElse[quivr.models.Proposition.Value](__fieldsMap.get(scalaDescriptor.findFieldByNumber(5).get).flatMap(_.as[_root_.scala.Option[quivr.models.Proposition.TickRange]]).map(quivr.models.Proposition.Value.TickRange(_)))
            .orElse[quivr.models.Proposition.Value](__fieldsMap.get(scalaDescriptor.findFieldByNumber(6).get).flatMap(_.as[_root_.scala.Option[quivr.models.Proposition.ExactMatch]]).map(quivr.models.Proposition.Value.ExactMatch(_)))
            .orElse[quivr.models.Proposition.Value](__fieldsMap.get(scalaDescriptor.findFieldByNumber(7).get).flatMap(_.as[_root_.scala.Option[quivr.models.Proposition.LessThan]]).map(quivr.models.Proposition.Value.LessThan(_)))
            .orElse[quivr.models.Proposition.Value](__fieldsMap.get(scalaDescriptor.findFieldByNumber(8).get).flatMap(_.as[_root_.scala.Option[quivr.models.Proposition.GreaterThan]]).map(quivr.models.Proposition.Value.GreaterThan(_)))
            .orElse[quivr.models.Proposition.Value](__fieldsMap.get(scalaDescriptor.findFieldByNumber(9).get).flatMap(_.as[_root_.scala.Option[quivr.models.Proposition.EqualTo]]).map(quivr.models.Proposition.Value.EqualTo(_)))
            .orElse[quivr.models.Proposition.Value](__fieldsMap.get(scalaDescriptor.findFieldByNumber(10).get).flatMap(_.as[_root_.scala.Option[quivr.models.Proposition.Threshold]]).map(quivr.models.Proposition.Value.Threshold(_)))
            .orElse[quivr.models.Proposition.Value](__fieldsMap.get(scalaDescriptor.findFieldByNumber(11).get).flatMap(_.as[_root_.scala.Option[quivr.models.Proposition.Not]]).map(quivr.models.Proposition.Value.Not(_)))
            .orElse[quivr.models.Proposition.Value](__fieldsMap.get(scalaDescriptor.findFieldByNumber(12).get).flatMap(_.as[_root_.scala.Option[quivr.models.Proposition.And]]).map(quivr.models.Proposition.Value.And(_)))
            .orElse[quivr.models.Proposition.Value](__fieldsMap.get(scalaDescriptor.findFieldByNumber(13).get).flatMap(_.as[_root_.scala.Option[quivr.models.Proposition.Or]]).map(quivr.models.Proposition.Value.Or(_)))
            .getOrElse(quivr.models.Proposition.Value.Empty)
      )
    case _ => throw new RuntimeException("Expected PMessage")
  }
  def javaDescriptor: _root_.com.google.protobuf.Descriptors.Descriptor = PropositionProto.javaDescriptor.getMessageTypes().get(0)
  def scalaDescriptor: _root_.scalapb.descriptors.Descriptor = PropositionProto.scalaDescriptor.messages(0)
  def messageCompanionForFieldNumber(__number: _root_.scala.Int): _root_.scalapb.GeneratedMessageCompanion[_] = {
    var __out: _root_.scalapb.GeneratedMessageCompanion[_] = null
    (__number: @_root_.scala.unchecked) match {
      case 1 => __out = quivr.models.Proposition.Locked
      case 2 => __out = quivr.models.Proposition.Digest
      case 3 => __out = quivr.models.Proposition.DigitalSignature
      case 4 => __out = quivr.models.Proposition.HeightRange
      case 5 => __out = quivr.models.Proposition.TickRange
      case 6 => __out = quivr.models.Proposition.ExactMatch
      case 7 => __out = quivr.models.Proposition.LessThan
      case 8 => __out = quivr.models.Proposition.GreaterThan
      case 9 => __out = quivr.models.Proposition.EqualTo
      case 10 => __out = quivr.models.Proposition.Threshold
      case 11 => __out = quivr.models.Proposition.Not
      case 12 => __out = quivr.models.Proposition.And
      case 13 => __out = quivr.models.Proposition.Or
    }
    __out
  }
  lazy val nestedMessagesCompanions: Seq[_root_.scalapb.GeneratedMessageCompanion[_ <: _root_.scalapb.GeneratedMessage]] =
    Seq[_root_.scalapb.GeneratedMessageCompanion[_ <: _root_.scalapb.GeneratedMessage]](
      _root_.quivr.models.Proposition.Locked,
      _root_.quivr.models.Proposition.Digest,
      _root_.quivr.models.Proposition.DigitalSignature,
      _root_.quivr.models.Proposition.HeightRange,
      _root_.quivr.models.Proposition.TickRange,
      _root_.quivr.models.Proposition.ExactMatch,
      _root_.quivr.models.Proposition.LessThan,
      _root_.quivr.models.Proposition.GreaterThan,
      _root_.quivr.models.Proposition.EqualTo,
      _root_.quivr.models.Proposition.Threshold,
      _root_.quivr.models.Proposition.Not,
      _root_.quivr.models.Proposition.And,
      _root_.quivr.models.Proposition.Or
    )
  def enumCompanionForFieldNumber(__fieldNumber: _root_.scala.Int): _root_.scalapb.GeneratedEnumCompanion[_] = throw new MatchError(__fieldNumber)
  lazy val defaultInstance = quivr.models.Proposition(
    value = quivr.models.Proposition.Value.Empty
  )
  sealed trait Value extends _root_.scalapb.GeneratedOneof {
    def isEmpty: _root_.scala.Boolean = false
    def isDefined: _root_.scala.Boolean = true
    def isLocked: _root_.scala.Boolean = false
    def isDigest: _root_.scala.Boolean = false
    def isDigitalSignature: _root_.scala.Boolean = false
    def isHeightRange: _root_.scala.Boolean = false
    def isTickRange: _root_.scala.Boolean = false
    def isExactMatch: _root_.scala.Boolean = false
    def isLessThan: _root_.scala.Boolean = false
    def isGreaterThan: _root_.scala.Boolean = false
    def isEqualTo: _root_.scala.Boolean = false
    def isThreshold: _root_.scala.Boolean = false
    def isNot: _root_.scala.Boolean = false
    def isAnd: _root_.scala.Boolean = false
    def isOr: _root_.scala.Boolean = false
    def locked: _root_.scala.Option[quivr.models.Proposition.Locked] = _root_.scala.None
    def digest: _root_.scala.Option[quivr.models.Proposition.Digest] = _root_.scala.None
    def digitalSignature: _root_.scala.Option[quivr.models.Proposition.DigitalSignature] = _root_.scala.None
    def heightRange: _root_.scala.Option[quivr.models.Proposition.HeightRange] = _root_.scala.None
    def tickRange: _root_.scala.Option[quivr.models.Proposition.TickRange] = _root_.scala.None
    def exactMatch: _root_.scala.Option[quivr.models.Proposition.ExactMatch] = _root_.scala.None
    def lessThan: _root_.scala.Option[quivr.models.Proposition.LessThan] = _root_.scala.None
    def greaterThan: _root_.scala.Option[quivr.models.Proposition.GreaterThan] = _root_.scala.None
    def equalTo: _root_.scala.Option[quivr.models.Proposition.EqualTo] = _root_.scala.None
    def threshold: _root_.scala.Option[quivr.models.Proposition.Threshold] = _root_.scala.None
    def not: _root_.scala.Option[quivr.models.Proposition.Not] = _root_.scala.None
    def and: _root_.scala.Option[quivr.models.Proposition.And] = _root_.scala.None
    def or: _root_.scala.Option[quivr.models.Proposition.Or] = _root_.scala.None
  }
  object Value {
    @SerialVersionUID(0L)
    case object Empty extends quivr.models.Proposition.Value {
      type ValueType = _root_.scala.Nothing
      override def isEmpty: _root_.scala.Boolean = true
      override def isDefined: _root_.scala.Boolean = false
      override def number: _root_.scala.Int = 0
      override def value: _root_.scala.Nothing = throw new java.util.NoSuchElementException("Empty.value")
    }
  
    @SerialVersionUID(0L)
    final case class Locked(value: quivr.models.Proposition.Locked) extends quivr.models.Proposition.Value {
      type ValueType = quivr.models.Proposition.Locked
      override def isLocked: _root_.scala.Boolean = true
      override def locked: _root_.scala.Option[quivr.models.Proposition.Locked] = Some(value)
      override def number: _root_.scala.Int = 1
    }
    @SerialVersionUID(0L)
    final case class Digest(value: quivr.models.Proposition.Digest) extends quivr.models.Proposition.Value {
      type ValueType = quivr.models.Proposition.Digest
      override def isDigest: _root_.scala.Boolean = true
      override def digest: _root_.scala.Option[quivr.models.Proposition.Digest] = Some(value)
      override def number: _root_.scala.Int = 2
    }
    @SerialVersionUID(0L)
    final case class DigitalSignature(value: quivr.models.Proposition.DigitalSignature) extends quivr.models.Proposition.Value {
      type ValueType = quivr.models.Proposition.DigitalSignature
      override def isDigitalSignature: _root_.scala.Boolean = true
      override def digitalSignature: _root_.scala.Option[quivr.models.Proposition.DigitalSignature] = Some(value)
      override def number: _root_.scala.Int = 3
    }
    @SerialVersionUID(0L)
    final case class HeightRange(value: quivr.models.Proposition.HeightRange) extends quivr.models.Proposition.Value {
      type ValueType = quivr.models.Proposition.HeightRange
      override def isHeightRange: _root_.scala.Boolean = true
      override def heightRange: _root_.scala.Option[quivr.models.Proposition.HeightRange] = Some(value)
      override def number: _root_.scala.Int = 4
    }
    @SerialVersionUID(0L)
    final case class TickRange(value: quivr.models.Proposition.TickRange) extends quivr.models.Proposition.Value {
      type ValueType = quivr.models.Proposition.TickRange
      override def isTickRange: _root_.scala.Boolean = true
      override def tickRange: _root_.scala.Option[quivr.models.Proposition.TickRange] = Some(value)
      override def number: _root_.scala.Int = 5
    }
    @SerialVersionUID(0L)
    final case class ExactMatch(value: quivr.models.Proposition.ExactMatch) extends quivr.models.Proposition.Value {
      type ValueType = quivr.models.Proposition.ExactMatch
      override def isExactMatch: _root_.scala.Boolean = true
      override def exactMatch: _root_.scala.Option[quivr.models.Proposition.ExactMatch] = Some(value)
      override def number: _root_.scala.Int = 6
    }
    @SerialVersionUID(0L)
    final case class LessThan(value: quivr.models.Proposition.LessThan) extends quivr.models.Proposition.Value {
      type ValueType = quivr.models.Proposition.LessThan
      override def isLessThan: _root_.scala.Boolean = true
      override def lessThan: _root_.scala.Option[quivr.models.Proposition.LessThan] = Some(value)
      override def number: _root_.scala.Int = 7
    }
    @SerialVersionUID(0L)
    final case class GreaterThan(value: quivr.models.Proposition.GreaterThan) extends quivr.models.Proposition.Value {
      type ValueType = quivr.models.Proposition.GreaterThan
      override def isGreaterThan: _root_.scala.Boolean = true
      override def greaterThan: _root_.scala.Option[quivr.models.Proposition.GreaterThan] = Some(value)
      override def number: _root_.scala.Int = 8
    }
    @SerialVersionUID(0L)
    final case class EqualTo(value: quivr.models.Proposition.EqualTo) extends quivr.models.Proposition.Value {
      type ValueType = quivr.models.Proposition.EqualTo
      override def isEqualTo: _root_.scala.Boolean = true
      override def equalTo: _root_.scala.Option[quivr.models.Proposition.EqualTo] = Some(value)
      override def number: _root_.scala.Int = 9
    }
    @SerialVersionUID(0L)
    final case class Threshold(value: quivr.models.Proposition.Threshold) extends quivr.models.Proposition.Value {
      type ValueType = quivr.models.Proposition.Threshold
      override def isThreshold: _root_.scala.Boolean = true
      override def threshold: _root_.scala.Option[quivr.models.Proposition.Threshold] = Some(value)
      override def number: _root_.scala.Int = 10
    }
    @SerialVersionUID(0L)
    final case class Not(value: quivr.models.Proposition.Not) extends quivr.models.Proposition.Value {
      type ValueType = quivr.models.Proposition.Not
      override def isNot: _root_.scala.Boolean = true
      override def not: _root_.scala.Option[quivr.models.Proposition.Not] = Some(value)
      override def number: _root_.scala.Int = 11
    }
    @SerialVersionUID(0L)
    final case class And(value: quivr.models.Proposition.And) extends quivr.models.Proposition.Value {
      type ValueType = quivr.models.Proposition.And
      override def isAnd: _root_.scala.Boolean = true
      override def and: _root_.scala.Option[quivr.models.Proposition.And] = Some(value)
      override def number: _root_.scala.Int = 12
    }
    @SerialVersionUID(0L)
    final case class Or(value: quivr.models.Proposition.Or) extends quivr.models.Proposition.Value {
      type ValueType = quivr.models.Proposition.Or
      override def isOr: _root_.scala.Boolean = true
      override def or: _root_.scala.Option[quivr.models.Proposition.Or] = Some(value)
      override def number: _root_.scala.Int = 13
    }
  }
  /** Indicates that a proposition can never be satisfied
    *
    * @param data
    *   Optional metadata
    */
  @SerialVersionUID(0L)
  final case class Locked(
      data: _root_.scala.Option[quivr.models.Data] = _root_.scala.None,
      unknownFields: _root_.scalapb.UnknownFieldSet = _root_.scalapb.UnknownFieldSet.empty
      ) extends scalapb.GeneratedMessage with scalapb.lenses.Updatable[Locked] {
      @transient
      private[this] var __serializedSizeMemoized: _root_.scala.Int = 0
      private[this] def __computeSerializedSize(): _root_.scala.Int = {
        var __size = 0
        if (data.isDefined) {
          val __value = data.get
          __size += 1 + _root_.com.google.protobuf.CodedOutputStream.computeUInt32SizeNoTag(__value.serializedSize) + __value.serializedSize
        };
        __size += unknownFields.serializedSize
        __size
      }
      override def serializedSize: _root_.scala.Int = {
        var __size = __serializedSizeMemoized
        if (__size == 0) {
          __size = __computeSerializedSize() + 1
          __serializedSizeMemoized = __size
        }
        __size - 1
        
      }
      def writeTo(`_output__`: _root_.com.google.protobuf.CodedOutputStream): _root_.scala.Unit = {
        data.foreach { __v =>
          val __m = __v
          _output__.writeTag(1, 2)
          _output__.writeUInt32NoTag(__m.serializedSize)
          __m.writeTo(_output__)
        };
        unknownFields.writeTo(_output__)
      }
      def getData: quivr.models.Data = data.getOrElse(quivr.models.Data.defaultInstance)
      def clearData: Locked = copy(data = _root_.scala.None)
      def withData(__v: quivr.models.Data): Locked = copy(data = Option(__v))
      def withUnknownFields(__v: _root_.scalapb.UnknownFieldSet) = copy(unknownFields = __v)
      def discardUnknownFields = copy(unknownFields = _root_.scalapb.UnknownFieldSet.empty)
      def getFieldByNumber(__fieldNumber: _root_.scala.Int): _root_.scala.Any = {
        (__fieldNumber: @_root_.scala.unchecked) match {
          case 1 => data.orNull
        }
      }
      def getField(__field: _root_.scalapb.descriptors.FieldDescriptor): _root_.scalapb.descriptors.PValue = {
        _root_.scala.Predef.require(__field.containingMessage eq companion.scalaDescriptor)
        (__field.number: @_root_.scala.unchecked) match {
          case 1 => data.map(_.toPMessage).getOrElse(_root_.scalapb.descriptors.PEmpty)
        }
      }
      def toProtoString: _root_.scala.Predef.String = _root_.scalapb.TextFormat.printToUnicodeString(this)
      def companion: quivr.models.Proposition.Locked.type = quivr.models.Proposition.Locked
      // @@protoc_insertion_point(GeneratedMessage[quivr.models.Proposition.Locked])
  }
  
  object Locked extends scalapb.GeneratedMessageCompanion[quivr.models.Proposition.Locked] {
    implicit def messageCompanion: scalapb.GeneratedMessageCompanion[quivr.models.Proposition.Locked] = this
    def parseFrom(`_input__`: _root_.com.google.protobuf.CodedInputStream): quivr.models.Proposition.Locked = {
      var __data: _root_.scala.Option[quivr.models.Data] = _root_.scala.None
      var `_unknownFields__`: _root_.scalapb.UnknownFieldSet.Builder = null
      var _done__ = false
      while (!_done__) {
        val _tag__ = _input__.readTag()
        _tag__ match {
          case 0 => _done__ = true
          case 10 =>
            __data = _root_.scala.Option(__data.fold(_root_.scalapb.LiteParser.readMessage[quivr.models.Data](_input__))(_root_.scalapb.LiteParser.readMessage(_input__, _)))
          case tag =>
            if (_unknownFields__ == null) {
              _unknownFields__ = new _root_.scalapb.UnknownFieldSet.Builder()
            }
            _unknownFields__.parseField(tag, _input__)
        }
      }
      quivr.models.Proposition.Locked(
          data = __data,
          unknownFields = if (_unknownFields__ == null) _root_.scalapb.UnknownFieldSet.empty else _unknownFields__.result()
      )
    }
    implicit def messageReads: _root_.scalapb.descriptors.Reads[quivr.models.Proposition.Locked] = _root_.scalapb.descriptors.Reads{
      case _root_.scalapb.descriptors.PMessage(__fieldsMap) =>
        _root_.scala.Predef.require(__fieldsMap.keys.forall(_.containingMessage eq scalaDescriptor), "FieldDescriptor does not match message type.")
        quivr.models.Proposition.Locked(
          data = __fieldsMap.get(scalaDescriptor.findFieldByNumber(1).get).flatMap(_.as[_root_.scala.Option[quivr.models.Data]])
        )
      case _ => throw new RuntimeException("Expected PMessage")
    }
    def javaDescriptor: _root_.com.google.protobuf.Descriptors.Descriptor = quivr.models.Proposition.javaDescriptor.getNestedTypes().get(0)
    def scalaDescriptor: _root_.scalapb.descriptors.Descriptor = quivr.models.Proposition.scalaDescriptor.nestedMessages(0)
    def messageCompanionForFieldNumber(__number: _root_.scala.Int): _root_.scalapb.GeneratedMessageCompanion[_] = {
      var __out: _root_.scalapb.GeneratedMessageCompanion[_] = null
      (__number: @_root_.scala.unchecked) match {
        case 1 => __out = quivr.models.Data
      }
      __out
    }
    lazy val nestedMessagesCompanions: Seq[_root_.scalapb.GeneratedMessageCompanion[_ <: _root_.scalapb.GeneratedMessage]] = Seq.empty
    def enumCompanionForFieldNumber(__fieldNumber: _root_.scala.Int): _root_.scalapb.GeneratedEnumCompanion[_] = throw new MatchError(__fieldNumber)
    lazy val defaultInstance = quivr.models.Proposition.Locked(
      data = _root_.scala.None
    )
    implicit class LockedLens[UpperPB](_l: _root_.scalapb.lenses.Lens[UpperPB, quivr.models.Proposition.Locked]) extends _root_.scalapb.lenses.ObjectLens[UpperPB, quivr.models.Proposition.Locked](_l) {
      def data: _root_.scalapb.lenses.Lens[UpperPB, quivr.models.Data] = field(_.getData)((c_, f_) => c_.copy(data = _root_.scala.Option(f_)))
      def optionalData: _root_.scalapb.lenses.Lens[UpperPB, _root_.scala.Option[quivr.models.Data]] = field(_.data)((c_, f_) => c_.copy(data = f_))
    }
    final val DATA_FIELD_NUMBER = 1
    def of(
      data: _root_.scala.Option[quivr.models.Data]
    ): _root_.quivr.models.Proposition.Locked = _root_.quivr.models.Proposition.Locked(
      data
    )
    // @@protoc_insertion_point(GeneratedMessageCompanion[quivr.models.Proposition.Locked])
  }
  
  /** a proposition that can be satisfied if the proof contains the preimage matching the digest
    */
  @SerialVersionUID(0L)
  final case class Digest(
      routine: _root_.scala.Predef.String = "",
      digest: quivr.models.Digest,
      unknownFields: _root_.scalapb.UnknownFieldSet = _root_.scalapb.UnknownFieldSet.empty
      ) extends scalapb.GeneratedMessage with scalapb.lenses.Updatable[Digest] {
      @transient
      private[this] var __serializedSizeMemoized: _root_.scala.Int = 0
      private[this] def __computeSerializedSize(): _root_.scala.Int = {
        var __size = 0
        
        {
          val __value = routine
          if (!__value.isEmpty) {
            __size += _root_.com.google.protobuf.CodedOutputStream.computeStringSize(1, __value)
          }
        };
        
        {
          val __value = digest
          __size += 1 + _root_.com.google.protobuf.CodedOutputStream.computeUInt32SizeNoTag(__value.serializedSize) + __value.serializedSize
        };
        __size += unknownFields.serializedSize
        __size
      }
      override def serializedSize: _root_.scala.Int = {
        var __size = __serializedSizeMemoized
        if (__size == 0) {
          __size = __computeSerializedSize() + 1
          __serializedSizeMemoized = __size
        }
        __size - 1
        
      }
      def writeTo(`_output__`: _root_.com.google.protobuf.CodedOutputStream): _root_.scala.Unit = {
        {
          val __v = routine
          if (!__v.isEmpty) {
            _output__.writeString(1, __v)
          }
        };
        
        {
          val __v = digest
          _output__.writeTag(2, 2)
          _output__.writeUInt32NoTag(__v.serializedSize)
          __v.writeTo(_output__)
        };
        unknownFields.writeTo(_output__)
      }
      def withRoutine(__v: _root_.scala.Predef.String): Digest = copy(routine = __v)
      def withDigest(__v: quivr.models.Digest): Digest = copy(digest = __v)
      def withUnknownFields(__v: _root_.scalapb.UnknownFieldSet) = copy(unknownFields = __v)
      def discardUnknownFields = copy(unknownFields = _root_.scalapb.UnknownFieldSet.empty)
      def getFieldByNumber(__fieldNumber: _root_.scala.Int): _root_.scala.Any = {
        (__fieldNumber: @_root_.scala.unchecked) match {
          case 1 => {
            val __t = routine
            if (__t != "") __t else null
          }
          case 2 => digest
        }
      }
      def getField(__field: _root_.scalapb.descriptors.FieldDescriptor): _root_.scalapb.descriptors.PValue = {
        _root_.scala.Predef.require(__field.containingMessage eq companion.scalaDescriptor)
        (__field.number: @_root_.scala.unchecked) match {
          case 1 => _root_.scalapb.descriptors.PString(routine)
          case 2 => digest.toPMessage
        }
      }
      def toProtoString: _root_.scala.Predef.String = _root_.scalapb.TextFormat.printToUnicodeString(this)
      def companion: quivr.models.Proposition.Digest.type = quivr.models.Proposition.Digest
      // @@protoc_insertion_point(GeneratedMessage[quivr.models.Proposition.Digest])
  }
  
  object Digest extends scalapb.GeneratedMessageCompanion[quivr.models.Proposition.Digest] {
    implicit def messageCompanion: scalapb.GeneratedMessageCompanion[quivr.models.Proposition.Digest] = this
    def parseFrom(`_input__`: _root_.com.google.protobuf.CodedInputStream): quivr.models.Proposition.Digest = {
      var __requiredFields0: _root_.scala.Long = 0x1L
      var __routine: _root_.scala.Predef.String = ""
      var __digest: _root_.scala.Option[quivr.models.Digest] = _root_.scala.None
      var `_unknownFields__`: _root_.scalapb.UnknownFieldSet.Builder = null
      var _done__ = false
      while (!_done__) {
        val _tag__ = _input__.readTag()
        _tag__ match {
          case 0 => _done__ = true
          case 10 =>
            __routine = _input__.readStringRequireUtf8()
          case 18 =>
            __digest = _root_.scala.Some(__digest.fold(_root_.scalapb.LiteParser.readMessage[quivr.models.Digest](_input__))(_root_.scalapb.LiteParser.readMessage(_input__, _)))
            __requiredFields0 &= 0xfffffffffffffffeL
          case tag =>
            if (_unknownFields__ == null) {
              _unknownFields__ = new _root_.scalapb.UnknownFieldSet.Builder()
            }
            _unknownFields__.parseField(tag, _input__)
        }
      }
      if (__requiredFields0 != 0L) { throw new _root_.com.google.protobuf.InvalidProtocolBufferException("Message missing required fields.") } 
      quivr.models.Proposition.Digest(
          routine = __routine,
          digest = __digest.getOrElse(quivr.models.Digest.defaultInstance),
          unknownFields = if (_unknownFields__ == null) _root_.scalapb.UnknownFieldSet.empty else _unknownFields__.result()
      )
    }
    implicit def messageReads: _root_.scalapb.descriptors.Reads[quivr.models.Proposition.Digest] = _root_.scalapb.descriptors.Reads{
      case _root_.scalapb.descriptors.PMessage(__fieldsMap) =>
        _root_.scala.Predef.require(__fieldsMap.keys.forall(_.containingMessage eq scalaDescriptor), "FieldDescriptor does not match message type.")
        quivr.models.Proposition.Digest(
          routine = __fieldsMap.get(scalaDescriptor.findFieldByNumber(1).get).map(_.as[_root_.scala.Predef.String]).getOrElse(""),
          digest = __fieldsMap.get(scalaDescriptor.findFieldByNumber(2).get).get.as[quivr.models.Digest]
        )
      case _ => throw new RuntimeException("Expected PMessage")
    }
    def javaDescriptor: _root_.com.google.protobuf.Descriptors.Descriptor = quivr.models.Proposition.javaDescriptor.getNestedTypes().get(1)
    def scalaDescriptor: _root_.scalapb.descriptors.Descriptor = quivr.models.Proposition.scalaDescriptor.nestedMessages(1)
    def messageCompanionForFieldNumber(__number: _root_.scala.Int): _root_.scalapb.GeneratedMessageCompanion[_] = {
      var __out: _root_.scalapb.GeneratedMessageCompanion[_] = null
      (__number: @_root_.scala.unchecked) match {
        case 2 => __out = quivr.models.Digest
      }
      __out
    }
    lazy val nestedMessagesCompanions: Seq[_root_.scalapb.GeneratedMessageCompanion[_ <: _root_.scalapb.GeneratedMessage]] = Seq.empty
    def enumCompanionForFieldNumber(__fieldNumber: _root_.scala.Int): _root_.scalapb.GeneratedEnumCompanion[_] = throw new MatchError(__fieldNumber)
    lazy val defaultInstance = quivr.models.Proposition.Digest(
      routine = "",
      digest = quivr.models.Digest.defaultInstance
    )
    implicit class DigestLens[UpperPB](_l: _root_.scalapb.lenses.Lens[UpperPB, quivr.models.Proposition.Digest]) extends _root_.scalapb.lenses.ObjectLens[UpperPB, quivr.models.Proposition.Digest](_l) {
      def routine: _root_.scalapb.lenses.Lens[UpperPB, _root_.scala.Predef.String] = field(_.routine)((c_, f_) => c_.copy(routine = f_))
      def digest: _root_.scalapb.lenses.Lens[UpperPB, quivr.models.Digest] = field(_.digest)((c_, f_) => c_.copy(digest = f_))
    }
    final val ROUTINE_FIELD_NUMBER = 1
    final val DIGEST_FIELD_NUMBER = 2
    def of(
      routine: _root_.scala.Predef.String,
      digest: quivr.models.Digest
    ): _root_.quivr.models.Proposition.Digest = _root_.quivr.models.Proposition.Digest(
      routine,
      digest
    )
    // @@protoc_insertion_point(GeneratedMessageCompanion[quivr.models.Proposition.Digest])
  }
  
  /** a proposition that can be satisfied if the proof contains the signature
    */
  @SerialVersionUID(0L)
  final case class DigitalSignature(
      routine: _root_.scala.Predef.String = "",
      verificationKey: quivr.models.VerificationKey,
      unknownFields: _root_.scalapb.UnknownFieldSet = _root_.scalapb.UnknownFieldSet.empty
      ) extends scalapb.GeneratedMessage with scalapb.lenses.Updatable[DigitalSignature] {
      @transient
      private[this] var __serializedSizeMemoized: _root_.scala.Int = 0
      private[this] def __computeSerializedSize(): _root_.scala.Int = {
        var __size = 0
        
        {
          val __value = routine
          if (!__value.isEmpty) {
            __size += _root_.com.google.protobuf.CodedOutputStream.computeStringSize(1, __value)
          }
        };
        
        {
          val __value = verificationKey
          __size += 1 + _root_.com.google.protobuf.CodedOutputStream.computeUInt32SizeNoTag(__value.serializedSize) + __value.serializedSize
        };
        __size += unknownFields.serializedSize
        __size
      }
      override def serializedSize: _root_.scala.Int = {
        var __size = __serializedSizeMemoized
        if (__size == 0) {
          __size = __computeSerializedSize() + 1
          __serializedSizeMemoized = __size
        }
        __size - 1
        
      }
      def writeTo(`_output__`: _root_.com.google.protobuf.CodedOutputStream): _root_.scala.Unit = {
        {
          val __v = routine
          if (!__v.isEmpty) {
            _output__.writeString(1, __v)
          }
        };
        
        {
          val __v = verificationKey
          _output__.writeTag(2, 2)
          _output__.writeUInt32NoTag(__v.serializedSize)
          __v.writeTo(_output__)
        };
        unknownFields.writeTo(_output__)
      }
      def withRoutine(__v: _root_.scala.Predef.String): DigitalSignature = copy(routine = __v)
      def withVerificationKey(__v: quivr.models.VerificationKey): DigitalSignature = copy(verificationKey = __v)
      def withUnknownFields(__v: _root_.scalapb.UnknownFieldSet) = copy(unknownFields = __v)
      def discardUnknownFields = copy(unknownFields = _root_.scalapb.UnknownFieldSet.empty)
      def getFieldByNumber(__fieldNumber: _root_.scala.Int): _root_.scala.Any = {
        (__fieldNumber: @_root_.scala.unchecked) match {
          case 1 => {
            val __t = routine
            if (__t != "") __t else null
          }
          case 2 => verificationKey
        }
      }
      def getField(__field: _root_.scalapb.descriptors.FieldDescriptor): _root_.scalapb.descriptors.PValue = {
        _root_.scala.Predef.require(__field.containingMessage eq companion.scalaDescriptor)
        (__field.number: @_root_.scala.unchecked) match {
          case 1 => _root_.scalapb.descriptors.PString(routine)
          case 2 => verificationKey.toPMessage
        }
      }
      def toProtoString: _root_.scala.Predef.String = _root_.scalapb.TextFormat.printToUnicodeString(this)
      def companion: quivr.models.Proposition.DigitalSignature.type = quivr.models.Proposition.DigitalSignature
      // @@protoc_insertion_point(GeneratedMessage[quivr.models.Proposition.DigitalSignature])
  }
  
  object DigitalSignature extends scalapb.GeneratedMessageCompanion[quivr.models.Proposition.DigitalSignature] {
    implicit def messageCompanion: scalapb.GeneratedMessageCompanion[quivr.models.Proposition.DigitalSignature] = this
    def parseFrom(`_input__`: _root_.com.google.protobuf.CodedInputStream): quivr.models.Proposition.DigitalSignature = {
      var __requiredFields0: _root_.scala.Long = 0x1L
      var __routine: _root_.scala.Predef.String = ""
      var __verificationKey: _root_.scala.Option[quivr.models.VerificationKey] = _root_.scala.None
      var `_unknownFields__`: _root_.scalapb.UnknownFieldSet.Builder = null
      var _done__ = false
      while (!_done__) {
        val _tag__ = _input__.readTag()
        _tag__ match {
          case 0 => _done__ = true
          case 10 =>
            __routine = _input__.readStringRequireUtf8()
          case 18 =>
            __verificationKey = _root_.scala.Some(__verificationKey.fold(_root_.scalapb.LiteParser.readMessage[quivr.models.VerificationKey](_input__))(_root_.scalapb.LiteParser.readMessage(_input__, _)))
            __requiredFields0 &= 0xfffffffffffffffeL
          case tag =>
            if (_unknownFields__ == null) {
              _unknownFields__ = new _root_.scalapb.UnknownFieldSet.Builder()
            }
            _unknownFields__.parseField(tag, _input__)
        }
      }
      if (__requiredFields0 != 0L) { throw new _root_.com.google.protobuf.InvalidProtocolBufferException("Message missing required fields.") } 
      quivr.models.Proposition.DigitalSignature(
          routine = __routine,
          verificationKey = __verificationKey.getOrElse(quivr.models.VerificationKey.defaultInstance),
          unknownFields = if (_unknownFields__ == null) _root_.scalapb.UnknownFieldSet.empty else _unknownFields__.result()
      )
    }
    implicit def messageReads: _root_.scalapb.descriptors.Reads[quivr.models.Proposition.DigitalSignature] = _root_.scalapb.descriptors.Reads{
      case _root_.scalapb.descriptors.PMessage(__fieldsMap) =>
        _root_.scala.Predef.require(__fieldsMap.keys.forall(_.containingMessage eq scalaDescriptor), "FieldDescriptor does not match message type.")
        quivr.models.Proposition.DigitalSignature(
          routine = __fieldsMap.get(scalaDescriptor.findFieldByNumber(1).get).map(_.as[_root_.scala.Predef.String]).getOrElse(""),
          verificationKey = __fieldsMap.get(scalaDescriptor.findFieldByNumber(2).get).get.as[quivr.models.VerificationKey]
        )
      case _ => throw new RuntimeException("Expected PMessage")
    }
    def javaDescriptor: _root_.com.google.protobuf.Descriptors.Descriptor = quivr.models.Proposition.javaDescriptor.getNestedTypes().get(2)
    def scalaDescriptor: _root_.scalapb.descriptors.Descriptor = quivr.models.Proposition.scalaDescriptor.nestedMessages(2)
    def messageCompanionForFieldNumber(__number: _root_.scala.Int): _root_.scalapb.GeneratedMessageCompanion[_] = {
      var __out: _root_.scalapb.GeneratedMessageCompanion[_] = null
      (__number: @_root_.scala.unchecked) match {
        case 2 => __out = quivr.models.VerificationKey
      }
      __out
    }
    lazy val nestedMessagesCompanions: Seq[_root_.scalapb.GeneratedMessageCompanion[_ <: _root_.scalapb.GeneratedMessage]] = Seq.empty
    def enumCompanionForFieldNumber(__fieldNumber: _root_.scala.Int): _root_.scalapb.GeneratedEnumCompanion[_] = throw new MatchError(__fieldNumber)
    lazy val defaultInstance = quivr.models.Proposition.DigitalSignature(
      routine = "",
      verificationKey = quivr.models.VerificationKey.defaultInstance
    )
    implicit class DigitalSignatureLens[UpperPB](_l: _root_.scalapb.lenses.Lens[UpperPB, quivr.models.Proposition.DigitalSignature]) extends _root_.scalapb.lenses.ObjectLens[UpperPB, quivr.models.Proposition.DigitalSignature](_l) {
      def routine: _root_.scalapb.lenses.Lens[UpperPB, _root_.scala.Predef.String] = field(_.routine)((c_, f_) => c_.copy(routine = f_))
      def verificationKey: _root_.scalapb.lenses.Lens[UpperPB, quivr.models.VerificationKey] = field(_.verificationKey)((c_, f_) => c_.copy(verificationKey = f_))
    }
    final val ROUTINE_FIELD_NUMBER = 1
    final val VERIFICATIONKEY_FIELD_NUMBER = 2
    def of(
      routine: _root_.scala.Predef.String,
      verificationKey: quivr.models.VerificationKey
    ): _root_.quivr.models.Proposition.DigitalSignature = _root_.quivr.models.Proposition.DigitalSignature(
      routine,
      verificationKey
    )
    // @@protoc_insertion_point(GeneratedMessageCompanion[quivr.models.Proposition.DigitalSignature])
  }
  
  /** a proposition that can be satisfied if the specified chain falls within min and max height values
    */
  @SerialVersionUID(0L)
  final case class HeightRange(
      chain: _root_.scala.Predef.String = "",
      min: _root_.scala.Long = 0L,
      max: _root_.scala.Long = 0L,
      unknownFields: _root_.scalapb.UnknownFieldSet = _root_.scalapb.UnknownFieldSet.empty
      ) extends scalapb.GeneratedMessage with scalapb.lenses.Updatable[HeightRange] {
      @transient
      private[this] var __serializedSizeMemoized: _root_.scala.Int = 0
      private[this] def __computeSerializedSize(): _root_.scala.Int = {
        var __size = 0
        
        {
          val __value = chain
          if (!__value.isEmpty) {
            __size += _root_.com.google.protobuf.CodedOutputStream.computeStringSize(1, __value)
          }
        };
        
        {
          val __value = min
          if (__value != 0L) {
            __size += _root_.com.google.protobuf.CodedOutputStream.computeUInt64Size(2, __value)
          }
        };
        
        {
          val __value = max
          if (__value != 0L) {
            __size += _root_.com.google.protobuf.CodedOutputStream.computeUInt64Size(3, __value)
          }
        };
        __size += unknownFields.serializedSize
        __size
      }
      override def serializedSize: _root_.scala.Int = {
        var __size = __serializedSizeMemoized
        if (__size == 0) {
          __size = __computeSerializedSize() + 1
          __serializedSizeMemoized = __size
        }
        __size - 1
        
      }
      def writeTo(`_output__`: _root_.com.google.protobuf.CodedOutputStream): _root_.scala.Unit = {
        {
          val __v = chain
          if (!__v.isEmpty) {
            _output__.writeString(1, __v)
          }
        };
        {
          val __v = min
          if (__v != 0L) {
            _output__.writeUInt64(2, __v)
          }
        };
        {
          val __v = max
          if (__v != 0L) {
            _output__.writeUInt64(3, __v)
          }
        };
        unknownFields.writeTo(_output__)
      }
      def withChain(__v: _root_.scala.Predef.String): HeightRange = copy(chain = __v)
      def withMin(__v: _root_.scala.Long): HeightRange = copy(min = __v)
      def withMax(__v: _root_.scala.Long): HeightRange = copy(max = __v)
      def withUnknownFields(__v: _root_.scalapb.UnknownFieldSet) = copy(unknownFields = __v)
      def discardUnknownFields = copy(unknownFields = _root_.scalapb.UnknownFieldSet.empty)
      def getFieldByNumber(__fieldNumber: _root_.scala.Int): _root_.scala.Any = {
        (__fieldNumber: @_root_.scala.unchecked) match {
          case 1 => {
            val __t = chain
            if (__t != "") __t else null
          }
          case 2 => {
            val __t = min
            if (__t != 0L) __t else null
          }
          case 3 => {
            val __t = max
            if (__t != 0L) __t else null
          }
        }
      }
      def getField(__field: _root_.scalapb.descriptors.FieldDescriptor): _root_.scalapb.descriptors.PValue = {
        _root_.scala.Predef.require(__field.containingMessage eq companion.scalaDescriptor)
        (__field.number: @_root_.scala.unchecked) match {
          case 1 => _root_.scalapb.descriptors.PString(chain)
          case 2 => _root_.scalapb.descriptors.PLong(min)
          case 3 => _root_.scalapb.descriptors.PLong(max)
        }
      }
      def toProtoString: _root_.scala.Predef.String = _root_.scalapb.TextFormat.printToUnicodeString(this)
      def companion: quivr.models.Proposition.HeightRange.type = quivr.models.Proposition.HeightRange
      // @@protoc_insertion_point(GeneratedMessage[quivr.models.Proposition.HeightRange])
  }
  
  object HeightRange extends scalapb.GeneratedMessageCompanion[quivr.models.Proposition.HeightRange] {
    implicit def messageCompanion: scalapb.GeneratedMessageCompanion[quivr.models.Proposition.HeightRange] = this
    def parseFrom(`_input__`: _root_.com.google.protobuf.CodedInputStream): quivr.models.Proposition.HeightRange = {
      var __chain: _root_.scala.Predef.String = ""
      var __min: _root_.scala.Long = 0L
      var __max: _root_.scala.Long = 0L
      var `_unknownFields__`: _root_.scalapb.UnknownFieldSet.Builder = null
      var _done__ = false
      while (!_done__) {
        val _tag__ = _input__.readTag()
        _tag__ match {
          case 0 => _done__ = true
          case 10 =>
            __chain = _input__.readStringRequireUtf8()
          case 16 =>
            __min = _input__.readUInt64()
          case 24 =>
            __max = _input__.readUInt64()
          case tag =>
            if (_unknownFields__ == null) {
              _unknownFields__ = new _root_.scalapb.UnknownFieldSet.Builder()
            }
            _unknownFields__.parseField(tag, _input__)
        }
      }
      quivr.models.Proposition.HeightRange(
          chain = __chain,
          min = __min,
          max = __max,
          unknownFields = if (_unknownFields__ == null) _root_.scalapb.UnknownFieldSet.empty else _unknownFields__.result()
      )
    }
    implicit def messageReads: _root_.scalapb.descriptors.Reads[quivr.models.Proposition.HeightRange] = _root_.scalapb.descriptors.Reads{
      case _root_.scalapb.descriptors.PMessage(__fieldsMap) =>
        _root_.scala.Predef.require(__fieldsMap.keys.forall(_.containingMessage eq scalaDescriptor), "FieldDescriptor does not match message type.")
        quivr.models.Proposition.HeightRange(
          chain = __fieldsMap.get(scalaDescriptor.findFieldByNumber(1).get).map(_.as[_root_.scala.Predef.String]).getOrElse(""),
          min = __fieldsMap.get(scalaDescriptor.findFieldByNumber(2).get).map(_.as[_root_.scala.Long]).getOrElse(0L),
          max = __fieldsMap.get(scalaDescriptor.findFieldByNumber(3).get).map(_.as[_root_.scala.Long]).getOrElse(0L)
        )
      case _ => throw new RuntimeException("Expected PMessage")
    }
    def javaDescriptor: _root_.com.google.protobuf.Descriptors.Descriptor = quivr.models.Proposition.javaDescriptor.getNestedTypes().get(3)
    def scalaDescriptor: _root_.scalapb.descriptors.Descriptor = quivr.models.Proposition.scalaDescriptor.nestedMessages(3)
    def messageCompanionForFieldNumber(__number: _root_.scala.Int): _root_.scalapb.GeneratedMessageCompanion[_] = throw new MatchError(__number)
    lazy val nestedMessagesCompanions: Seq[_root_.scalapb.GeneratedMessageCompanion[_ <: _root_.scalapb.GeneratedMessage]] = Seq.empty
    def enumCompanionForFieldNumber(__fieldNumber: _root_.scala.Int): _root_.scalapb.GeneratedEnumCompanion[_] = throw new MatchError(__fieldNumber)
    lazy val defaultInstance = quivr.models.Proposition.HeightRange(
      chain = "",
      min = 0L,
      max = 0L
    )
    implicit class HeightRangeLens[UpperPB](_l: _root_.scalapb.lenses.Lens[UpperPB, quivr.models.Proposition.HeightRange]) extends _root_.scalapb.lenses.ObjectLens[UpperPB, quivr.models.Proposition.HeightRange](_l) {
      def chain: _root_.scalapb.lenses.Lens[UpperPB, _root_.scala.Predef.String] = field(_.chain)((c_, f_) => c_.copy(chain = f_))
      def min: _root_.scalapb.lenses.Lens[UpperPB, _root_.scala.Long] = field(_.min)((c_, f_) => c_.copy(min = f_))
      def max: _root_.scalapb.lenses.Lens[UpperPB, _root_.scala.Long] = field(_.max)((c_, f_) => c_.copy(max = f_))
    }
    final val CHAIN_FIELD_NUMBER = 1
    final val MIN_FIELD_NUMBER = 2
    final val MAX_FIELD_NUMBER = 3
    def of(
      chain: _root_.scala.Predef.String,
      min: _root_.scala.Long,
      max: _root_.scala.Long
    ): _root_.quivr.models.Proposition.HeightRange = _root_.quivr.models.Proposition.HeightRange(
      chain,
      min,
      max
    )
    // @@protoc_insertion_point(GeneratedMessageCompanion[quivr.models.Proposition.HeightRange])
  }
  
  /** a proposition that can be satisfied if the time value falls within the min and max
    */
  @SerialVersionUID(0L)
  final case class TickRange(
      min: _root_.scala.Long = 0L,
      max: _root_.scala.Long = 0L,
      unknownFields: _root_.scalapb.UnknownFieldSet = _root_.scalapb.UnknownFieldSet.empty
      ) extends scalapb.GeneratedMessage with scalapb.lenses.Updatable[TickRange] {
      @transient
      private[this] var __serializedSizeMemoized: _root_.scala.Int = 0
      private[this] def __computeSerializedSize(): _root_.scala.Int = {
        var __size = 0
        
        {
          val __value = min
          if (__value != 0L) {
            __size += _root_.com.google.protobuf.CodedOutputStream.computeUInt64Size(1, __value)
          }
        };
        
        {
          val __value = max
          if (__value != 0L) {
            __size += _root_.com.google.protobuf.CodedOutputStream.computeUInt64Size(2, __value)
          }
        };
        __size += unknownFields.serializedSize
        __size
      }
      override def serializedSize: _root_.scala.Int = {
        var __size = __serializedSizeMemoized
        if (__size == 0) {
          __size = __computeSerializedSize() + 1
          __serializedSizeMemoized = __size
        }
        __size - 1
        
      }
      def writeTo(`_output__`: _root_.com.google.protobuf.CodedOutputStream): _root_.scala.Unit = {
        {
          val __v = min
          if (__v != 0L) {
            _output__.writeUInt64(1, __v)
          }
        };
        {
          val __v = max
          if (__v != 0L) {
            _output__.writeUInt64(2, __v)
          }
        };
        unknownFields.writeTo(_output__)
      }
      def withMin(__v: _root_.scala.Long): TickRange = copy(min = __v)
      def withMax(__v: _root_.scala.Long): TickRange = copy(max = __v)
      def withUnknownFields(__v: _root_.scalapb.UnknownFieldSet) = copy(unknownFields = __v)
      def discardUnknownFields = copy(unknownFields = _root_.scalapb.UnknownFieldSet.empty)
      def getFieldByNumber(__fieldNumber: _root_.scala.Int): _root_.scala.Any = {
        (__fieldNumber: @_root_.scala.unchecked) match {
          case 1 => {
            val __t = min
            if (__t != 0L) __t else null
          }
          case 2 => {
            val __t = max
            if (__t != 0L) __t else null
          }
        }
      }
      def getField(__field: _root_.scalapb.descriptors.FieldDescriptor): _root_.scalapb.descriptors.PValue = {
        _root_.scala.Predef.require(__field.containingMessage eq companion.scalaDescriptor)
        (__field.number: @_root_.scala.unchecked) match {
          case 1 => _root_.scalapb.descriptors.PLong(min)
          case 2 => _root_.scalapb.descriptors.PLong(max)
        }
      }
      def toProtoString: _root_.scala.Predef.String = _root_.scalapb.TextFormat.printToUnicodeString(this)
      def companion: quivr.models.Proposition.TickRange.type = quivr.models.Proposition.TickRange
      // @@protoc_insertion_point(GeneratedMessage[quivr.models.Proposition.TickRange])
  }
  
  object TickRange extends scalapb.GeneratedMessageCompanion[quivr.models.Proposition.TickRange] {
    implicit def messageCompanion: scalapb.GeneratedMessageCompanion[quivr.models.Proposition.TickRange] = this
    def parseFrom(`_input__`: _root_.com.google.protobuf.CodedInputStream): quivr.models.Proposition.TickRange = {
      var __min: _root_.scala.Long = 0L
      var __max: _root_.scala.Long = 0L
      var `_unknownFields__`: _root_.scalapb.UnknownFieldSet.Builder = null
      var _done__ = false
      while (!_done__) {
        val _tag__ = _input__.readTag()
        _tag__ match {
          case 0 => _done__ = true
          case 8 =>
            __min = _input__.readUInt64()
          case 16 =>
            __max = _input__.readUInt64()
          case tag =>
            if (_unknownFields__ == null) {
              _unknownFields__ = new _root_.scalapb.UnknownFieldSet.Builder()
            }
            _unknownFields__.parseField(tag, _input__)
        }
      }
      quivr.models.Proposition.TickRange(
          min = __min,
          max = __max,
          unknownFields = if (_unknownFields__ == null) _root_.scalapb.UnknownFieldSet.empty else _unknownFields__.result()
      )
    }
    implicit def messageReads: _root_.scalapb.descriptors.Reads[quivr.models.Proposition.TickRange] = _root_.scalapb.descriptors.Reads{
      case _root_.scalapb.descriptors.PMessage(__fieldsMap) =>
        _root_.scala.Predef.require(__fieldsMap.keys.forall(_.containingMessage eq scalaDescriptor), "FieldDescriptor does not match message type.")
        quivr.models.Proposition.TickRange(
          min = __fieldsMap.get(scalaDescriptor.findFieldByNumber(1).get).map(_.as[_root_.scala.Long]).getOrElse(0L),
          max = __fieldsMap.get(scalaDescriptor.findFieldByNumber(2).get).map(_.as[_root_.scala.Long]).getOrElse(0L)
        )
      case _ => throw new RuntimeException("Expected PMessage")
    }
    def javaDescriptor: _root_.com.google.protobuf.Descriptors.Descriptor = quivr.models.Proposition.javaDescriptor.getNestedTypes().get(4)
    def scalaDescriptor: _root_.scalapb.descriptors.Descriptor = quivr.models.Proposition.scalaDescriptor.nestedMessages(4)
    def messageCompanionForFieldNumber(__number: _root_.scala.Int): _root_.scalapb.GeneratedMessageCompanion[_] = throw new MatchError(__number)
    lazy val nestedMessagesCompanions: Seq[_root_.scalapb.GeneratedMessageCompanion[_ <: _root_.scalapb.GeneratedMessage]] = Seq.empty
    def enumCompanionForFieldNumber(__fieldNumber: _root_.scala.Int): _root_.scalapb.GeneratedEnumCompanion[_] = throw new MatchError(__fieldNumber)
    lazy val defaultInstance = quivr.models.Proposition.TickRange(
      min = 0L,
      max = 0L
    )
    implicit class TickRangeLens[UpperPB](_l: _root_.scalapb.lenses.Lens[UpperPB, quivr.models.Proposition.TickRange]) extends _root_.scalapb.lenses.ObjectLens[UpperPB, quivr.models.Proposition.TickRange](_l) {
      def min: _root_.scalapb.lenses.Lens[UpperPB, _root_.scala.Long] = field(_.min)((c_, f_) => c_.copy(min = f_))
      def max: _root_.scalapb.lenses.Lens[UpperPB, _root_.scala.Long] = field(_.max)((c_, f_) => c_.copy(max = f_))
    }
    final val MIN_FIELD_NUMBER = 1
    final val MAX_FIELD_NUMBER = 2
    def of(
      min: _root_.scala.Long,
      max: _root_.scala.Long
    ): _root_.quivr.models.Proposition.TickRange = _root_.quivr.models.Proposition.TickRange(
      min,
      max
    )
    // @@protoc_insertion_point(GeneratedMessageCompanion[quivr.models.Proposition.TickRange])
  }
  
  /** a proposition that can be satisfied if the value at a location is an exact match of the compareTo value
    */
  @SerialVersionUID(0L)
  final case class ExactMatch(
      location: _root_.scala.Predef.String = "",
      compareTo: _root_.com.google.protobuf.ByteString = _root_.com.google.protobuf.ByteString.EMPTY,
      unknownFields: _root_.scalapb.UnknownFieldSet = _root_.scalapb.UnknownFieldSet.empty
      ) extends scalapb.GeneratedMessage with scalapb.lenses.Updatable[ExactMatch] {
      @transient
      private[this] var __serializedSizeMemoized: _root_.scala.Int = 0
      private[this] def __computeSerializedSize(): _root_.scala.Int = {
        var __size = 0
        
        {
          val __value = location
          if (!__value.isEmpty) {
            __size += _root_.com.google.protobuf.CodedOutputStream.computeStringSize(1, __value)
          }
        };
        
        {
          val __value = compareTo
          if (!__value.isEmpty) {
            __size += _root_.com.google.protobuf.CodedOutputStream.computeBytesSize(2, __value)
          }
        };
        __size += unknownFields.serializedSize
        __size
      }
      override def serializedSize: _root_.scala.Int = {
        var __size = __serializedSizeMemoized
        if (__size == 0) {
          __size = __computeSerializedSize() + 1
          __serializedSizeMemoized = __size
        }
        __size - 1
        
      }
      def writeTo(`_output__`: _root_.com.google.protobuf.CodedOutputStream): _root_.scala.Unit = {
        {
          val __v = location
          if (!__v.isEmpty) {
            _output__.writeString(1, __v)
          }
        };
        {
          val __v = compareTo
          if (!__v.isEmpty) {
            _output__.writeBytes(2, __v)
          }
        };
        unknownFields.writeTo(_output__)
      }
      def withLocation(__v: _root_.scala.Predef.String): ExactMatch = copy(location = __v)
      def withCompareTo(__v: _root_.com.google.protobuf.ByteString): ExactMatch = copy(compareTo = __v)
      def withUnknownFields(__v: _root_.scalapb.UnknownFieldSet) = copy(unknownFields = __v)
      def discardUnknownFields = copy(unknownFields = _root_.scalapb.UnknownFieldSet.empty)
      def getFieldByNumber(__fieldNumber: _root_.scala.Int): _root_.scala.Any = {
        (__fieldNumber: @_root_.scala.unchecked) match {
          case 1 => {
            val __t = location
            if (__t != "") __t else null
          }
          case 2 => {
            val __t = compareTo
            if (__t != _root_.com.google.protobuf.ByteString.EMPTY) __t else null
          }
        }
      }
      def getField(__field: _root_.scalapb.descriptors.FieldDescriptor): _root_.scalapb.descriptors.PValue = {
        _root_.scala.Predef.require(__field.containingMessage eq companion.scalaDescriptor)
        (__field.number: @_root_.scala.unchecked) match {
          case 1 => _root_.scalapb.descriptors.PString(location)
          case 2 => _root_.scalapb.descriptors.PByteString(compareTo)
        }
      }
      def toProtoString: _root_.scala.Predef.String = _root_.scalapb.TextFormat.printToUnicodeString(this)
      def companion: quivr.models.Proposition.ExactMatch.type = quivr.models.Proposition.ExactMatch
      // @@protoc_insertion_point(GeneratedMessage[quivr.models.Proposition.ExactMatch])
  }
  
  object ExactMatch extends scalapb.GeneratedMessageCompanion[quivr.models.Proposition.ExactMatch] {
    implicit def messageCompanion: scalapb.GeneratedMessageCompanion[quivr.models.Proposition.ExactMatch] = this
    def parseFrom(`_input__`: _root_.com.google.protobuf.CodedInputStream): quivr.models.Proposition.ExactMatch = {
      var __location: _root_.scala.Predef.String = ""
      var __compareTo: _root_.com.google.protobuf.ByteString = _root_.com.google.protobuf.ByteString.EMPTY
      var `_unknownFields__`: _root_.scalapb.UnknownFieldSet.Builder = null
      var _done__ = false
      while (!_done__) {
        val _tag__ = _input__.readTag()
        _tag__ match {
          case 0 => _done__ = true
          case 10 =>
            __location = _input__.readStringRequireUtf8()
          case 18 =>
            __compareTo = _input__.readBytes()
          case tag =>
            if (_unknownFields__ == null) {
              _unknownFields__ = new _root_.scalapb.UnknownFieldSet.Builder()
            }
            _unknownFields__.parseField(tag, _input__)
        }
      }
      quivr.models.Proposition.ExactMatch(
          location = __location,
          compareTo = __compareTo,
          unknownFields = if (_unknownFields__ == null) _root_.scalapb.UnknownFieldSet.empty else _unknownFields__.result()
      )
    }
    implicit def messageReads: _root_.scalapb.descriptors.Reads[quivr.models.Proposition.ExactMatch] = _root_.scalapb.descriptors.Reads{
      case _root_.scalapb.descriptors.PMessage(__fieldsMap) =>
        _root_.scala.Predef.require(__fieldsMap.keys.forall(_.containingMessage eq scalaDescriptor), "FieldDescriptor does not match message type.")
        quivr.models.Proposition.ExactMatch(
          location = __fieldsMap.get(scalaDescriptor.findFieldByNumber(1).get).map(_.as[_root_.scala.Predef.String]).getOrElse(""),
          compareTo = __fieldsMap.get(scalaDescriptor.findFieldByNumber(2).get).map(_.as[_root_.com.google.protobuf.ByteString]).getOrElse(_root_.com.google.protobuf.ByteString.EMPTY)
        )
      case _ => throw new RuntimeException("Expected PMessage")
    }
    def javaDescriptor: _root_.com.google.protobuf.Descriptors.Descriptor = quivr.models.Proposition.javaDescriptor.getNestedTypes().get(5)
    def scalaDescriptor: _root_.scalapb.descriptors.Descriptor = quivr.models.Proposition.scalaDescriptor.nestedMessages(5)
    def messageCompanionForFieldNumber(__number: _root_.scala.Int): _root_.scalapb.GeneratedMessageCompanion[_] = throw new MatchError(__number)
    lazy val nestedMessagesCompanions: Seq[_root_.scalapb.GeneratedMessageCompanion[_ <: _root_.scalapb.GeneratedMessage]] = Seq.empty
    def enumCompanionForFieldNumber(__fieldNumber: _root_.scala.Int): _root_.scalapb.GeneratedEnumCompanion[_] = throw new MatchError(__fieldNumber)
    lazy val defaultInstance = quivr.models.Proposition.ExactMatch(
      location = "",
      compareTo = _root_.com.google.protobuf.ByteString.EMPTY
    )
    implicit class ExactMatchLens[UpperPB](_l: _root_.scalapb.lenses.Lens[UpperPB, quivr.models.Proposition.ExactMatch]) extends _root_.scalapb.lenses.ObjectLens[UpperPB, quivr.models.Proposition.ExactMatch](_l) {
      def location: _root_.scalapb.lenses.Lens[UpperPB, _root_.scala.Predef.String] = field(_.location)((c_, f_) => c_.copy(location = f_))
      def compareTo: _root_.scalapb.lenses.Lens[UpperPB, _root_.com.google.protobuf.ByteString] = field(_.compareTo)((c_, f_) => c_.copy(compareTo = f_))
    }
    final val LOCATION_FIELD_NUMBER = 1
    final val COMPARETO_FIELD_NUMBER = 2
    def of(
      location: _root_.scala.Predef.String,
      compareTo: _root_.com.google.protobuf.ByteString
    ): _root_.quivr.models.Proposition.ExactMatch = _root_.quivr.models.Proposition.ExactMatch(
      location,
      compareTo
    )
    // @@protoc_insertion_point(GeneratedMessageCompanion[quivr.models.Proposition.ExactMatch])
  }
  
  /** a proposition that can be satisfied if the value at a location is less than the compareTo value
    */
  @SerialVersionUID(0L)
  final case class LessThan(
      location: _root_.scala.Predef.String = "",
      compareTo: quivr.models.Int128,
      unknownFields: _root_.scalapb.UnknownFieldSet = _root_.scalapb.UnknownFieldSet.empty
      ) extends scalapb.GeneratedMessage with scalapb.lenses.Updatable[LessThan] {
      @transient
      private[this] var __serializedSizeMemoized: _root_.scala.Int = 0
      private[this] def __computeSerializedSize(): _root_.scala.Int = {
        var __size = 0
        
        {
          val __value = location
          if (!__value.isEmpty) {
            __size += _root_.com.google.protobuf.CodedOutputStream.computeStringSize(1, __value)
          }
        };
        
        {
          val __value = compareTo
          __size += 1 + _root_.com.google.protobuf.CodedOutputStream.computeUInt32SizeNoTag(__value.serializedSize) + __value.serializedSize
        };
        __size += unknownFields.serializedSize
        __size
      }
      override def serializedSize: _root_.scala.Int = {
        var __size = __serializedSizeMemoized
        if (__size == 0) {
          __size = __computeSerializedSize() + 1
          __serializedSizeMemoized = __size
        }
        __size - 1
        
      }
      def writeTo(`_output__`: _root_.com.google.protobuf.CodedOutputStream): _root_.scala.Unit = {
        {
          val __v = location
          if (!__v.isEmpty) {
            _output__.writeString(1, __v)
          }
        };
        
        {
          val __v = compareTo
          _output__.writeTag(2, 2)
          _output__.writeUInt32NoTag(__v.serializedSize)
          __v.writeTo(_output__)
        };
        unknownFields.writeTo(_output__)
      }
      def withLocation(__v: _root_.scala.Predef.String): LessThan = copy(location = __v)
      def withCompareTo(__v: quivr.models.Int128): LessThan = copy(compareTo = __v)
      def withUnknownFields(__v: _root_.scalapb.UnknownFieldSet) = copy(unknownFields = __v)
      def discardUnknownFields = copy(unknownFields = _root_.scalapb.UnknownFieldSet.empty)
      def getFieldByNumber(__fieldNumber: _root_.scala.Int): _root_.scala.Any = {
        (__fieldNumber: @_root_.scala.unchecked) match {
          case 1 => {
            val __t = location
            if (__t != "") __t else null
          }
          case 2 => compareTo
        }
      }
      def getField(__field: _root_.scalapb.descriptors.FieldDescriptor): _root_.scalapb.descriptors.PValue = {
        _root_.scala.Predef.require(__field.containingMessage eq companion.scalaDescriptor)
        (__field.number: @_root_.scala.unchecked) match {
          case 1 => _root_.scalapb.descriptors.PString(location)
          case 2 => compareTo.toPMessage
        }
      }
      def toProtoString: _root_.scala.Predef.String = _root_.scalapb.TextFormat.printToUnicodeString(this)
      def companion: quivr.models.Proposition.LessThan.type = quivr.models.Proposition.LessThan
      // @@protoc_insertion_point(GeneratedMessage[quivr.models.Proposition.LessThan])
  }
  
  object LessThan extends scalapb.GeneratedMessageCompanion[quivr.models.Proposition.LessThan] {
    implicit def messageCompanion: scalapb.GeneratedMessageCompanion[quivr.models.Proposition.LessThan] = this
    def parseFrom(`_input__`: _root_.com.google.protobuf.CodedInputStream): quivr.models.Proposition.LessThan = {
      var __requiredFields0: _root_.scala.Long = 0x1L
      var __location: _root_.scala.Predef.String = ""
      var __compareTo: _root_.scala.Option[quivr.models.Int128] = _root_.scala.None
      var `_unknownFields__`: _root_.scalapb.UnknownFieldSet.Builder = null
      var _done__ = false
      while (!_done__) {
        val _tag__ = _input__.readTag()
        _tag__ match {
          case 0 => _done__ = true
          case 10 =>
            __location = _input__.readStringRequireUtf8()
          case 18 =>
            __compareTo = _root_.scala.Some(__compareTo.fold(_root_.scalapb.LiteParser.readMessage[quivr.models.Int128](_input__))(_root_.scalapb.LiteParser.readMessage(_input__, _)))
            __requiredFields0 &= 0xfffffffffffffffeL
          case tag =>
            if (_unknownFields__ == null) {
              _unknownFields__ = new _root_.scalapb.UnknownFieldSet.Builder()
            }
            _unknownFields__.parseField(tag, _input__)
        }
      }
      if (__requiredFields0 != 0L) { throw new _root_.com.google.protobuf.InvalidProtocolBufferException("Message missing required fields.") } 
      quivr.models.Proposition.LessThan(
          location = __location,
          compareTo = __compareTo.getOrElse(quivr.models.Int128.defaultInstance),
          unknownFields = if (_unknownFields__ == null) _root_.scalapb.UnknownFieldSet.empty else _unknownFields__.result()
      )
    }
    implicit def messageReads: _root_.scalapb.descriptors.Reads[quivr.models.Proposition.LessThan] = _root_.scalapb.descriptors.Reads{
      case _root_.scalapb.descriptors.PMessage(__fieldsMap) =>
        _root_.scala.Predef.require(__fieldsMap.keys.forall(_.containingMessage eq scalaDescriptor), "FieldDescriptor does not match message type.")
        quivr.models.Proposition.LessThan(
          location = __fieldsMap.get(scalaDescriptor.findFieldByNumber(1).get).map(_.as[_root_.scala.Predef.String]).getOrElse(""),
          compareTo = __fieldsMap.get(scalaDescriptor.findFieldByNumber(2).get).get.as[quivr.models.Int128]
        )
      case _ => throw new RuntimeException("Expected PMessage")
    }
    def javaDescriptor: _root_.com.google.protobuf.Descriptors.Descriptor = quivr.models.Proposition.javaDescriptor.getNestedTypes().get(6)
    def scalaDescriptor: _root_.scalapb.descriptors.Descriptor = quivr.models.Proposition.scalaDescriptor.nestedMessages(6)
    def messageCompanionForFieldNumber(__number: _root_.scala.Int): _root_.scalapb.GeneratedMessageCompanion[_] = {
      var __out: _root_.scalapb.GeneratedMessageCompanion[_] = null
      (__number: @_root_.scala.unchecked) match {
        case 2 => __out = quivr.models.Int128
      }
      __out
    }
    lazy val nestedMessagesCompanions: Seq[_root_.scalapb.GeneratedMessageCompanion[_ <: _root_.scalapb.GeneratedMessage]] = Seq.empty
    def enumCompanionForFieldNumber(__fieldNumber: _root_.scala.Int): _root_.scalapb.GeneratedEnumCompanion[_] = throw new MatchError(__fieldNumber)
    lazy val defaultInstance = quivr.models.Proposition.LessThan(
      location = "",
      compareTo = quivr.models.Int128.defaultInstance
    )
    implicit class LessThanLens[UpperPB](_l: _root_.scalapb.lenses.Lens[UpperPB, quivr.models.Proposition.LessThan]) extends _root_.scalapb.lenses.ObjectLens[UpperPB, quivr.models.Proposition.LessThan](_l) {
      def location: _root_.scalapb.lenses.Lens[UpperPB, _root_.scala.Predef.String] = field(_.location)((c_, f_) => c_.copy(location = f_))
      def compareTo: _root_.scalapb.lenses.Lens[UpperPB, quivr.models.Int128] = field(_.compareTo)((c_, f_) => c_.copy(compareTo = f_))
    }
    final val LOCATION_FIELD_NUMBER = 1
    final val COMPARETO_FIELD_NUMBER = 2
    def of(
      location: _root_.scala.Predef.String,
      compareTo: quivr.models.Int128
    ): _root_.quivr.models.Proposition.LessThan = _root_.quivr.models.Proposition.LessThan(
      location,
      compareTo
    )
    // @@protoc_insertion_point(GeneratedMessageCompanion[quivr.models.Proposition.LessThan])
  }
  
  /** a proposition that can be satisfied if the value at a location is greater than the compareTo value
    */
  @SerialVersionUID(0L)
  final case class GreaterThan(
      location: _root_.scala.Predef.String = "",
      compareTo: quivr.models.Int128,
      unknownFields: _root_.scalapb.UnknownFieldSet = _root_.scalapb.UnknownFieldSet.empty
      ) extends scalapb.GeneratedMessage with scalapb.lenses.Updatable[GreaterThan] {
      @transient
      private[this] var __serializedSizeMemoized: _root_.scala.Int = 0
      private[this] def __computeSerializedSize(): _root_.scala.Int = {
        var __size = 0
        
        {
          val __value = location
          if (!__value.isEmpty) {
            __size += _root_.com.google.protobuf.CodedOutputStream.computeStringSize(1, __value)
          }
        };
        
        {
          val __value = compareTo
          __size += 1 + _root_.com.google.protobuf.CodedOutputStream.computeUInt32SizeNoTag(__value.serializedSize) + __value.serializedSize
        };
        __size += unknownFields.serializedSize
        __size
      }
      override def serializedSize: _root_.scala.Int = {
        var __size = __serializedSizeMemoized
        if (__size == 0) {
          __size = __computeSerializedSize() + 1
          __serializedSizeMemoized = __size
        }
        __size - 1
        
      }
      def writeTo(`_output__`: _root_.com.google.protobuf.CodedOutputStream): _root_.scala.Unit = {
        {
          val __v = location
          if (!__v.isEmpty) {
            _output__.writeString(1, __v)
          }
        };
        
        {
          val __v = compareTo
          _output__.writeTag(2, 2)
          _output__.writeUInt32NoTag(__v.serializedSize)
          __v.writeTo(_output__)
        };
        unknownFields.writeTo(_output__)
      }
      def withLocation(__v: _root_.scala.Predef.String): GreaterThan = copy(location = __v)
      def withCompareTo(__v: quivr.models.Int128): GreaterThan = copy(compareTo = __v)
      def withUnknownFields(__v: _root_.scalapb.UnknownFieldSet) = copy(unknownFields = __v)
      def discardUnknownFields = copy(unknownFields = _root_.scalapb.UnknownFieldSet.empty)
      def getFieldByNumber(__fieldNumber: _root_.scala.Int): _root_.scala.Any = {
        (__fieldNumber: @_root_.scala.unchecked) match {
          case 1 => {
            val __t = location
            if (__t != "") __t else null
          }
          case 2 => compareTo
        }
      }
      def getField(__field: _root_.scalapb.descriptors.FieldDescriptor): _root_.scalapb.descriptors.PValue = {
        _root_.scala.Predef.require(__field.containingMessage eq companion.scalaDescriptor)
        (__field.number: @_root_.scala.unchecked) match {
          case 1 => _root_.scalapb.descriptors.PString(location)
          case 2 => compareTo.toPMessage
        }
      }
      def toProtoString: _root_.scala.Predef.String = _root_.scalapb.TextFormat.printToUnicodeString(this)
      def companion: quivr.models.Proposition.GreaterThan.type = quivr.models.Proposition.GreaterThan
      // @@protoc_insertion_point(GeneratedMessage[quivr.models.Proposition.GreaterThan])
  }
  
  object GreaterThan extends scalapb.GeneratedMessageCompanion[quivr.models.Proposition.GreaterThan] {
    implicit def messageCompanion: scalapb.GeneratedMessageCompanion[quivr.models.Proposition.GreaterThan] = this
    def parseFrom(`_input__`: _root_.com.google.protobuf.CodedInputStream): quivr.models.Proposition.GreaterThan = {
      var __requiredFields0: _root_.scala.Long = 0x1L
      var __location: _root_.scala.Predef.String = ""
      var __compareTo: _root_.scala.Option[quivr.models.Int128] = _root_.scala.None
      var `_unknownFields__`: _root_.scalapb.UnknownFieldSet.Builder = null
      var _done__ = false
      while (!_done__) {
        val _tag__ = _input__.readTag()
        _tag__ match {
          case 0 => _done__ = true
          case 10 =>
            __location = _input__.readStringRequireUtf8()
          case 18 =>
            __compareTo = _root_.scala.Some(__compareTo.fold(_root_.scalapb.LiteParser.readMessage[quivr.models.Int128](_input__))(_root_.scalapb.LiteParser.readMessage(_input__, _)))
            __requiredFields0 &= 0xfffffffffffffffeL
          case tag =>
            if (_unknownFields__ == null) {
              _unknownFields__ = new _root_.scalapb.UnknownFieldSet.Builder()
            }
            _unknownFields__.parseField(tag, _input__)
        }
      }
      if (__requiredFields0 != 0L) { throw new _root_.com.google.protobuf.InvalidProtocolBufferException("Message missing required fields.") } 
      quivr.models.Proposition.GreaterThan(
          location = __location,
          compareTo = __compareTo.getOrElse(quivr.models.Int128.defaultInstance),
          unknownFields = if (_unknownFields__ == null) _root_.scalapb.UnknownFieldSet.empty else _unknownFields__.result()
      )
    }
    implicit def messageReads: _root_.scalapb.descriptors.Reads[quivr.models.Proposition.GreaterThan] = _root_.scalapb.descriptors.Reads{
      case _root_.scalapb.descriptors.PMessage(__fieldsMap) =>
        _root_.scala.Predef.require(__fieldsMap.keys.forall(_.containingMessage eq scalaDescriptor), "FieldDescriptor does not match message type.")
        quivr.models.Proposition.GreaterThan(
          location = __fieldsMap.get(scalaDescriptor.findFieldByNumber(1).get).map(_.as[_root_.scala.Predef.String]).getOrElse(""),
          compareTo = __fieldsMap.get(scalaDescriptor.findFieldByNumber(2).get).get.as[quivr.models.Int128]
        )
      case _ => throw new RuntimeException("Expected PMessage")
    }
    def javaDescriptor: _root_.com.google.protobuf.Descriptors.Descriptor = quivr.models.Proposition.javaDescriptor.getNestedTypes().get(7)
    def scalaDescriptor: _root_.scalapb.descriptors.Descriptor = quivr.models.Proposition.scalaDescriptor.nestedMessages(7)
    def messageCompanionForFieldNumber(__number: _root_.scala.Int): _root_.scalapb.GeneratedMessageCompanion[_] = {
      var __out: _root_.scalapb.GeneratedMessageCompanion[_] = null
      (__number: @_root_.scala.unchecked) match {
        case 2 => __out = quivr.models.Int128
      }
      __out
    }
    lazy val nestedMessagesCompanions: Seq[_root_.scalapb.GeneratedMessageCompanion[_ <: _root_.scalapb.GeneratedMessage]] = Seq.empty
    def enumCompanionForFieldNumber(__fieldNumber: _root_.scala.Int): _root_.scalapb.GeneratedEnumCompanion[_] = throw new MatchError(__fieldNumber)
    lazy val defaultInstance = quivr.models.Proposition.GreaterThan(
      location = "",
      compareTo = quivr.models.Int128.defaultInstance
    )
    implicit class GreaterThanLens[UpperPB](_l: _root_.scalapb.lenses.Lens[UpperPB, quivr.models.Proposition.GreaterThan]) extends _root_.scalapb.lenses.ObjectLens[UpperPB, quivr.models.Proposition.GreaterThan](_l) {
      def location: _root_.scalapb.lenses.Lens[UpperPB, _root_.scala.Predef.String] = field(_.location)((c_, f_) => c_.copy(location = f_))
      def compareTo: _root_.scalapb.lenses.Lens[UpperPB, quivr.models.Int128] = field(_.compareTo)((c_, f_) => c_.copy(compareTo = f_))
    }
    final val LOCATION_FIELD_NUMBER = 1
    final val COMPARETO_FIELD_NUMBER = 2
    def of(
      location: _root_.scala.Predef.String,
      compareTo: quivr.models.Int128
    ): _root_.quivr.models.Proposition.GreaterThan = _root_.quivr.models.Proposition.GreaterThan(
      location,
      compareTo
    )
    // @@protoc_insertion_point(GeneratedMessageCompanion[quivr.models.Proposition.GreaterThan])
  }
  
  /** a proposition that can be satisfied if the value (int) at a location is equal to the compareTo value
    */
  @SerialVersionUID(0L)
  final case class EqualTo(
      location: _root_.scala.Predef.String = "",
      compareTo: quivr.models.Int128,
      unknownFields: _root_.scalapb.UnknownFieldSet = _root_.scalapb.UnknownFieldSet.empty
      ) extends scalapb.GeneratedMessage with scalapb.lenses.Updatable[EqualTo] {
      @transient
      private[this] var __serializedSizeMemoized: _root_.scala.Int = 0
      private[this] def __computeSerializedSize(): _root_.scala.Int = {
        var __size = 0
        
        {
          val __value = location
          if (!__value.isEmpty) {
            __size += _root_.com.google.protobuf.CodedOutputStream.computeStringSize(1, __value)
          }
        };
        
        {
          val __value = compareTo
          __size += 1 + _root_.com.google.protobuf.CodedOutputStream.computeUInt32SizeNoTag(__value.serializedSize) + __value.serializedSize
        };
        __size += unknownFields.serializedSize
        __size
      }
      override def serializedSize: _root_.scala.Int = {
        var __size = __serializedSizeMemoized
        if (__size == 0) {
          __size = __computeSerializedSize() + 1
          __serializedSizeMemoized = __size
        }
        __size - 1
        
      }
      def writeTo(`_output__`: _root_.com.google.protobuf.CodedOutputStream): _root_.scala.Unit = {
        {
          val __v = location
          if (!__v.isEmpty) {
            _output__.writeString(1, __v)
          }
        };
        
        {
          val __v = compareTo
          _output__.writeTag(2, 2)
          _output__.writeUInt32NoTag(__v.serializedSize)
          __v.writeTo(_output__)
        };
        unknownFields.writeTo(_output__)
      }
      def withLocation(__v: _root_.scala.Predef.String): EqualTo = copy(location = __v)
      def withCompareTo(__v: quivr.models.Int128): EqualTo = copy(compareTo = __v)
      def withUnknownFields(__v: _root_.scalapb.UnknownFieldSet) = copy(unknownFields = __v)
      def discardUnknownFields = copy(unknownFields = _root_.scalapb.UnknownFieldSet.empty)
      def getFieldByNumber(__fieldNumber: _root_.scala.Int): _root_.scala.Any = {
        (__fieldNumber: @_root_.scala.unchecked) match {
          case 1 => {
            val __t = location
            if (__t != "") __t else null
          }
          case 2 => compareTo
        }
      }
      def getField(__field: _root_.scalapb.descriptors.FieldDescriptor): _root_.scalapb.descriptors.PValue = {
        _root_.scala.Predef.require(__field.containingMessage eq companion.scalaDescriptor)
        (__field.number: @_root_.scala.unchecked) match {
          case 1 => _root_.scalapb.descriptors.PString(location)
          case 2 => compareTo.toPMessage
        }
      }
      def toProtoString: _root_.scala.Predef.String = _root_.scalapb.TextFormat.printToUnicodeString(this)
      def companion: quivr.models.Proposition.EqualTo.type = quivr.models.Proposition.EqualTo
      // @@protoc_insertion_point(GeneratedMessage[quivr.models.Proposition.EqualTo])
  }
  
  object EqualTo extends scalapb.GeneratedMessageCompanion[quivr.models.Proposition.EqualTo] {
    implicit def messageCompanion: scalapb.GeneratedMessageCompanion[quivr.models.Proposition.EqualTo] = this
    def parseFrom(`_input__`: _root_.com.google.protobuf.CodedInputStream): quivr.models.Proposition.EqualTo = {
      var __requiredFields0: _root_.scala.Long = 0x1L
      var __location: _root_.scala.Predef.String = ""
      var __compareTo: _root_.scala.Option[quivr.models.Int128] = _root_.scala.None
      var `_unknownFields__`: _root_.scalapb.UnknownFieldSet.Builder = null
      var _done__ = false
      while (!_done__) {
        val _tag__ = _input__.readTag()
        _tag__ match {
          case 0 => _done__ = true
          case 10 =>
            __location = _input__.readStringRequireUtf8()
          case 18 =>
            __compareTo = _root_.scala.Some(__compareTo.fold(_root_.scalapb.LiteParser.readMessage[quivr.models.Int128](_input__))(_root_.scalapb.LiteParser.readMessage(_input__, _)))
            __requiredFields0 &= 0xfffffffffffffffeL
          case tag =>
            if (_unknownFields__ == null) {
              _unknownFields__ = new _root_.scalapb.UnknownFieldSet.Builder()
            }
            _unknownFields__.parseField(tag, _input__)
        }
      }
      if (__requiredFields0 != 0L) { throw new _root_.com.google.protobuf.InvalidProtocolBufferException("Message missing required fields.") } 
      quivr.models.Proposition.EqualTo(
          location = __location,
          compareTo = __compareTo.getOrElse(quivr.models.Int128.defaultInstance),
          unknownFields = if (_unknownFields__ == null) _root_.scalapb.UnknownFieldSet.empty else _unknownFields__.result()
      )
    }
    implicit def messageReads: _root_.scalapb.descriptors.Reads[quivr.models.Proposition.EqualTo] = _root_.scalapb.descriptors.Reads{
      case _root_.scalapb.descriptors.PMessage(__fieldsMap) =>
        _root_.scala.Predef.require(__fieldsMap.keys.forall(_.containingMessage eq scalaDescriptor), "FieldDescriptor does not match message type.")
        quivr.models.Proposition.EqualTo(
          location = __fieldsMap.get(scalaDescriptor.findFieldByNumber(1).get).map(_.as[_root_.scala.Predef.String]).getOrElse(""),
          compareTo = __fieldsMap.get(scalaDescriptor.findFieldByNumber(2).get).get.as[quivr.models.Int128]
        )
      case _ => throw new RuntimeException("Expected PMessage")
    }
    def javaDescriptor: _root_.com.google.protobuf.Descriptors.Descriptor = quivr.models.Proposition.javaDescriptor.getNestedTypes().get(8)
    def scalaDescriptor: _root_.scalapb.descriptors.Descriptor = quivr.models.Proposition.scalaDescriptor.nestedMessages(8)
    def messageCompanionForFieldNumber(__number: _root_.scala.Int): _root_.scalapb.GeneratedMessageCompanion[_] = {
      var __out: _root_.scalapb.GeneratedMessageCompanion[_] = null
      (__number: @_root_.scala.unchecked) match {
        case 2 => __out = quivr.models.Int128
      }
      __out
    }
    lazy val nestedMessagesCompanions: Seq[_root_.scalapb.GeneratedMessageCompanion[_ <: _root_.scalapb.GeneratedMessage]] = Seq.empty
    def enumCompanionForFieldNumber(__fieldNumber: _root_.scala.Int): _root_.scalapb.GeneratedEnumCompanion[_] = throw new MatchError(__fieldNumber)
    lazy val defaultInstance = quivr.models.Proposition.EqualTo(
      location = "",
      compareTo = quivr.models.Int128.defaultInstance
    )
    implicit class EqualToLens[UpperPB](_l: _root_.scalapb.lenses.Lens[UpperPB, quivr.models.Proposition.EqualTo]) extends _root_.scalapb.lenses.ObjectLens[UpperPB, quivr.models.Proposition.EqualTo](_l) {
      def location: _root_.scalapb.lenses.Lens[UpperPB, _root_.scala.Predef.String] = field(_.location)((c_, f_) => c_.copy(location = f_))
      def compareTo: _root_.scalapb.lenses.Lens[UpperPB, quivr.models.Int128] = field(_.compareTo)((c_, f_) => c_.copy(compareTo = f_))
    }
    final val LOCATION_FIELD_NUMBER = 1
    final val COMPARETO_FIELD_NUMBER = 2
    def of(
      location: _root_.scala.Predef.String,
      compareTo: quivr.models.Int128
    ): _root_.quivr.models.Proposition.EqualTo = _root_.quivr.models.Proposition.EqualTo(
      location,
      compareTo
    )
    // @@protoc_insertion_point(GeneratedMessageCompanion[quivr.models.Proposition.EqualTo])
  }
  
  /** a proposition that can be satisfied if at least the threshold number of propositions are satisfied
    */
  @SerialVersionUID(0L)
  final case class Threshold(
      challenges: _root_.scala.Seq[quivr.models.Proposition] = _root_.scala.Seq.empty,
      threshold: _root_.scala.Int = 0,
      unknownFields: _root_.scalapb.UnknownFieldSet = _root_.scalapb.UnknownFieldSet.empty
      ) extends scalapb.GeneratedMessage with scalapb.lenses.Updatable[Threshold] {
      @transient
      private[this] var __serializedSizeMemoized: _root_.scala.Int = 0
      private[this] def __computeSerializedSize(): _root_.scala.Int = {
        var __size = 0
        challenges.foreach { __item =>
          val __value = __item
          __size += 1 + _root_.com.google.protobuf.CodedOutputStream.computeUInt32SizeNoTag(__value.serializedSize) + __value.serializedSize
        }
        
        {
          val __value = threshold
          if (__value != 0) {
            __size += _root_.com.google.protobuf.CodedOutputStream.computeUInt32Size(2, __value)
          }
        };
        __size += unknownFields.serializedSize
        __size
      }
      override def serializedSize: _root_.scala.Int = {
        var __size = __serializedSizeMemoized
        if (__size == 0) {
          __size = __computeSerializedSize() + 1
          __serializedSizeMemoized = __size
        }
        __size - 1
        
      }
      def writeTo(`_output__`: _root_.com.google.protobuf.CodedOutputStream): _root_.scala.Unit = {
        challenges.foreach { __v =>
          val __m = __v
          _output__.writeTag(1, 2)
          _output__.writeUInt32NoTag(__m.serializedSize)
          __m.writeTo(_output__)
        };
        {
          val __v = threshold
          if (__v != 0) {
            _output__.writeUInt32(2, __v)
          }
        };
        unknownFields.writeTo(_output__)
      }
      def clearChallenges = copy(challenges = _root_.scala.Seq.empty)
      def addChallenges(__vs: quivr.models.Proposition *): Threshold = addAllChallenges(__vs)
      def addAllChallenges(__vs: Iterable[quivr.models.Proposition]): Threshold = copy(challenges = challenges ++ __vs)
      def withChallenges(__v: _root_.scala.Seq[quivr.models.Proposition]): Threshold = copy(challenges = __v)
      def withThreshold(__v: _root_.scala.Int): Threshold = copy(threshold = __v)
      def withUnknownFields(__v: _root_.scalapb.UnknownFieldSet) = copy(unknownFields = __v)
      def discardUnknownFields = copy(unknownFields = _root_.scalapb.UnknownFieldSet.empty)
      def getFieldByNumber(__fieldNumber: _root_.scala.Int): _root_.scala.Any = {
        (__fieldNumber: @_root_.scala.unchecked) match {
          case 1 => challenges
          case 2 => {
            val __t = threshold
            if (__t != 0) __t else null
          }
        }
      }
      def getField(__field: _root_.scalapb.descriptors.FieldDescriptor): _root_.scalapb.descriptors.PValue = {
        _root_.scala.Predef.require(__field.containingMessage eq companion.scalaDescriptor)
        (__field.number: @_root_.scala.unchecked) match {
          case 1 => _root_.scalapb.descriptors.PRepeated(challenges.iterator.map(_.toPMessage).toVector)
          case 2 => _root_.scalapb.descriptors.PInt(threshold)
        }
      }
      def toProtoString: _root_.scala.Predef.String = _root_.scalapb.TextFormat.printToUnicodeString(this)
      def companion: quivr.models.Proposition.Threshold.type = quivr.models.Proposition.Threshold
      // @@protoc_insertion_point(GeneratedMessage[quivr.models.Proposition.Threshold])
  }
  
  object Threshold extends scalapb.GeneratedMessageCompanion[quivr.models.Proposition.Threshold] {
    implicit def messageCompanion: scalapb.GeneratedMessageCompanion[quivr.models.Proposition.Threshold] = this
    def parseFrom(`_input__`: _root_.com.google.protobuf.CodedInputStream): quivr.models.Proposition.Threshold = {
      val __challenges: _root_.scala.collection.immutable.VectorBuilder[quivr.models.Proposition] = new _root_.scala.collection.immutable.VectorBuilder[quivr.models.Proposition]
      var __threshold: _root_.scala.Int = 0
      var `_unknownFields__`: _root_.scalapb.UnknownFieldSet.Builder = null
      var _done__ = false
      while (!_done__) {
        val _tag__ = _input__.readTag()
        _tag__ match {
          case 0 => _done__ = true
          case 10 =>
            __challenges += _root_.scalapb.LiteParser.readMessage[quivr.models.Proposition](_input__)
          case 16 =>
            __threshold = _input__.readUInt32()
          case tag =>
            if (_unknownFields__ == null) {
              _unknownFields__ = new _root_.scalapb.UnknownFieldSet.Builder()
            }
            _unknownFields__.parseField(tag, _input__)
        }
      }
      quivr.models.Proposition.Threshold(
          challenges = __challenges.result(),
          threshold = __threshold,
          unknownFields = if (_unknownFields__ == null) _root_.scalapb.UnknownFieldSet.empty else _unknownFields__.result()
      )
    }
    implicit def messageReads: _root_.scalapb.descriptors.Reads[quivr.models.Proposition.Threshold] = _root_.scalapb.descriptors.Reads{
      case _root_.scalapb.descriptors.PMessage(__fieldsMap) =>
        _root_.scala.Predef.require(__fieldsMap.keys.forall(_.containingMessage eq scalaDescriptor), "FieldDescriptor does not match message type.")
        quivr.models.Proposition.Threshold(
          challenges = __fieldsMap.get(scalaDescriptor.findFieldByNumber(1).get).map(_.as[_root_.scala.Seq[quivr.models.Proposition]]).getOrElse(_root_.scala.Seq.empty),
          threshold = __fieldsMap.get(scalaDescriptor.findFieldByNumber(2).get).map(_.as[_root_.scala.Int]).getOrElse(0)
        )
      case _ => throw new RuntimeException("Expected PMessage")
    }
    def javaDescriptor: _root_.com.google.protobuf.Descriptors.Descriptor = quivr.models.Proposition.javaDescriptor.getNestedTypes().get(9)
    def scalaDescriptor: _root_.scalapb.descriptors.Descriptor = quivr.models.Proposition.scalaDescriptor.nestedMessages(9)
    def messageCompanionForFieldNumber(__number: _root_.scala.Int): _root_.scalapb.GeneratedMessageCompanion[_] = {
      var __out: _root_.scalapb.GeneratedMessageCompanion[_] = null
      (__number: @_root_.scala.unchecked) match {
        case 1 => __out = quivr.models.Proposition
      }
      __out
    }
    lazy val nestedMessagesCompanions: Seq[_root_.scalapb.GeneratedMessageCompanion[_ <: _root_.scalapb.GeneratedMessage]] = Seq.empty
    def enumCompanionForFieldNumber(__fieldNumber: _root_.scala.Int): _root_.scalapb.GeneratedEnumCompanion[_] = throw new MatchError(__fieldNumber)
    lazy val defaultInstance = quivr.models.Proposition.Threshold(
      challenges = _root_.scala.Seq.empty,
      threshold = 0
    )
    implicit class ThresholdLens[UpperPB](_l: _root_.scalapb.lenses.Lens[UpperPB, quivr.models.Proposition.Threshold]) extends _root_.scalapb.lenses.ObjectLens[UpperPB, quivr.models.Proposition.Threshold](_l) {
      def challenges: _root_.scalapb.lenses.Lens[UpperPB, _root_.scala.Seq[quivr.models.Proposition]] = field(_.challenges)((c_, f_) => c_.copy(challenges = f_))
      def threshold: _root_.scalapb.lenses.Lens[UpperPB, _root_.scala.Int] = field(_.threshold)((c_, f_) => c_.copy(threshold = f_))
    }
    final val CHALLENGES_FIELD_NUMBER = 1
    final val THRESHOLD_FIELD_NUMBER = 2
    def of(
      challenges: _root_.scala.Seq[quivr.models.Proposition],
      threshold: _root_.scala.Int
    ): _root_.quivr.models.Proposition.Threshold = _root_.quivr.models.Proposition.Threshold(
      challenges,
      threshold
    )
    // @@protoc_insertion_point(GeneratedMessageCompanion[quivr.models.Proposition.Threshold])
  }
  
  /** a proposition that can be satisfied if the proposition is contains is not satisfied
    */
  @SerialVersionUID(0L)
  final case class Not(
      proposition: quivr.models.Proposition,
      unknownFields: _root_.scalapb.UnknownFieldSet = _root_.scalapb.UnknownFieldSet.empty
      ) extends scalapb.GeneratedMessage with scalapb.lenses.Updatable[Not] {
      @transient
      private[this] var __serializedSizeMemoized: _root_.scala.Int = 0
      private[this] def __computeSerializedSize(): _root_.scala.Int = {
        var __size = 0
        
        {
          val __value = proposition
          __size += 1 + _root_.com.google.protobuf.CodedOutputStream.computeUInt32SizeNoTag(__value.serializedSize) + __value.serializedSize
        };
        __size += unknownFields.serializedSize
        __size
      }
      override def serializedSize: _root_.scala.Int = {
        var __size = __serializedSizeMemoized
        if (__size == 0) {
          __size = __computeSerializedSize() + 1
          __serializedSizeMemoized = __size
        }
        __size - 1
        
      }
      def writeTo(`_output__`: _root_.com.google.protobuf.CodedOutputStream): _root_.scala.Unit = {
        
        {
          val __v = proposition
          _output__.writeTag(1, 2)
          _output__.writeUInt32NoTag(__v.serializedSize)
          __v.writeTo(_output__)
        };
        unknownFields.writeTo(_output__)
      }
      def withProposition(__v: quivr.models.Proposition): Not = copy(proposition = __v)
      def withUnknownFields(__v: _root_.scalapb.UnknownFieldSet) = copy(unknownFields = __v)
      def discardUnknownFields = copy(unknownFields = _root_.scalapb.UnknownFieldSet.empty)
      def getFieldByNumber(__fieldNumber: _root_.scala.Int): _root_.scala.Any = {
        (__fieldNumber: @_root_.scala.unchecked) match {
          case 1 => proposition
        }
      }
      def getField(__field: _root_.scalapb.descriptors.FieldDescriptor): _root_.scalapb.descriptors.PValue = {
        _root_.scala.Predef.require(__field.containingMessage eq companion.scalaDescriptor)
        (__field.number: @_root_.scala.unchecked) match {
          case 1 => proposition.toPMessage
        }
      }
      def toProtoString: _root_.scala.Predef.String = _root_.scalapb.TextFormat.printToUnicodeString(this)
      def companion: quivr.models.Proposition.Not.type = quivr.models.Proposition.Not
      // @@protoc_insertion_point(GeneratedMessage[quivr.models.Proposition.Not])
  }
  
  object Not extends scalapb.GeneratedMessageCompanion[quivr.models.Proposition.Not] {
    implicit def messageCompanion: scalapb.GeneratedMessageCompanion[quivr.models.Proposition.Not] = this
    def parseFrom(`_input__`: _root_.com.google.protobuf.CodedInputStream): quivr.models.Proposition.Not = {
      var __requiredFields0: _root_.scala.Long = 0x1L
      var __proposition: _root_.scala.Option[quivr.models.Proposition] = _root_.scala.None
      var `_unknownFields__`: _root_.scalapb.UnknownFieldSet.Builder = null
      var _done__ = false
      while (!_done__) {
        val _tag__ = _input__.readTag()
        _tag__ match {
          case 0 => _done__ = true
          case 10 =>
            __proposition = _root_.scala.Some(__proposition.fold(_root_.scalapb.LiteParser.readMessage[quivr.models.Proposition](_input__))(_root_.scalapb.LiteParser.readMessage(_input__, _)))
            __requiredFields0 &= 0xfffffffffffffffeL
          case tag =>
            if (_unknownFields__ == null) {
              _unknownFields__ = new _root_.scalapb.UnknownFieldSet.Builder()
            }
            _unknownFields__.parseField(tag, _input__)
        }
      }
      if (__requiredFields0 != 0L) { throw new _root_.com.google.protobuf.InvalidProtocolBufferException("Message missing required fields.") } 
      quivr.models.Proposition.Not(
          proposition = __proposition.getOrElse(quivr.models.Proposition.defaultInstance),
          unknownFields = if (_unknownFields__ == null) _root_.scalapb.UnknownFieldSet.empty else _unknownFields__.result()
      )
    }
    implicit def messageReads: _root_.scalapb.descriptors.Reads[quivr.models.Proposition.Not] = _root_.scalapb.descriptors.Reads{
      case _root_.scalapb.descriptors.PMessage(__fieldsMap) =>
        _root_.scala.Predef.require(__fieldsMap.keys.forall(_.containingMessage eq scalaDescriptor), "FieldDescriptor does not match message type.")
        quivr.models.Proposition.Not(
          proposition = __fieldsMap.get(scalaDescriptor.findFieldByNumber(1).get).get.as[quivr.models.Proposition]
        )
      case _ => throw new RuntimeException("Expected PMessage")
    }
    def javaDescriptor: _root_.com.google.protobuf.Descriptors.Descriptor = quivr.models.Proposition.javaDescriptor.getNestedTypes().get(10)
    def scalaDescriptor: _root_.scalapb.descriptors.Descriptor = quivr.models.Proposition.scalaDescriptor.nestedMessages(10)
    def messageCompanionForFieldNumber(__number: _root_.scala.Int): _root_.scalapb.GeneratedMessageCompanion[_] = {
      var __out: _root_.scalapb.GeneratedMessageCompanion[_] = null
      (__number: @_root_.scala.unchecked) match {
        case 1 => __out = quivr.models.Proposition
      }
      __out
    }
    lazy val nestedMessagesCompanions: Seq[_root_.scalapb.GeneratedMessageCompanion[_ <: _root_.scalapb.GeneratedMessage]] = Seq.empty
    def enumCompanionForFieldNumber(__fieldNumber: _root_.scala.Int): _root_.scalapb.GeneratedEnumCompanion[_] = throw new MatchError(__fieldNumber)
    lazy val defaultInstance = quivr.models.Proposition.Not(
      proposition = quivr.models.Proposition.defaultInstance
    )
    implicit class NotLens[UpperPB](_l: _root_.scalapb.lenses.Lens[UpperPB, quivr.models.Proposition.Not]) extends _root_.scalapb.lenses.ObjectLens[UpperPB, quivr.models.Proposition.Not](_l) {
      def proposition: _root_.scalapb.lenses.Lens[UpperPB, quivr.models.Proposition] = field(_.proposition)((c_, f_) => c_.copy(proposition = f_))
    }
    final val PROPOSITION_FIELD_NUMBER = 1
    def of(
      proposition: quivr.models.Proposition
    ): _root_.quivr.models.Proposition.Not = _root_.quivr.models.Proposition.Not(
      proposition
    )
    // @@protoc_insertion_point(GeneratedMessageCompanion[quivr.models.Proposition.Not])
  }
  
  /** a proposition that can be satisfied if the prositions contained are both satisfied
    */
  @SerialVersionUID(0L)
  final case class And(
      left: quivr.models.Proposition,
      right: quivr.models.Proposition,
      unknownFields: _root_.scalapb.UnknownFieldSet = _root_.scalapb.UnknownFieldSet.empty
      ) extends scalapb.GeneratedMessage with scalapb.lenses.Updatable[And] {
      @transient
      private[this] var __serializedSizeMemoized: _root_.scala.Int = 0
      private[this] def __computeSerializedSize(): _root_.scala.Int = {
        var __size = 0
        
        {
          val __value = left
          __size += 1 + _root_.com.google.protobuf.CodedOutputStream.computeUInt32SizeNoTag(__value.serializedSize) + __value.serializedSize
        };
        
        {
          val __value = right
          __size += 1 + _root_.com.google.protobuf.CodedOutputStream.computeUInt32SizeNoTag(__value.serializedSize) + __value.serializedSize
        };
        __size += unknownFields.serializedSize
        __size
      }
      override def serializedSize: _root_.scala.Int = {
        var __size = __serializedSizeMemoized
        if (__size == 0) {
          __size = __computeSerializedSize() + 1
          __serializedSizeMemoized = __size
        }
        __size - 1
        
      }
      def writeTo(`_output__`: _root_.com.google.protobuf.CodedOutputStream): _root_.scala.Unit = {
        
        {
          val __v = left
          _output__.writeTag(1, 2)
          _output__.writeUInt32NoTag(__v.serializedSize)
          __v.writeTo(_output__)
        };
        
        {
          val __v = right
          _output__.writeTag(2, 2)
          _output__.writeUInt32NoTag(__v.serializedSize)
          __v.writeTo(_output__)
        };
        unknownFields.writeTo(_output__)
      }
      def withLeft(__v: quivr.models.Proposition): And = copy(left = __v)
      def withRight(__v: quivr.models.Proposition): And = copy(right = __v)
      def withUnknownFields(__v: _root_.scalapb.UnknownFieldSet) = copy(unknownFields = __v)
      def discardUnknownFields = copy(unknownFields = _root_.scalapb.UnknownFieldSet.empty)
      def getFieldByNumber(__fieldNumber: _root_.scala.Int): _root_.scala.Any = {
        (__fieldNumber: @_root_.scala.unchecked) match {
          case 1 => left
          case 2 => right
        }
      }
      def getField(__field: _root_.scalapb.descriptors.FieldDescriptor): _root_.scalapb.descriptors.PValue = {
        _root_.scala.Predef.require(__field.containingMessage eq companion.scalaDescriptor)
        (__field.number: @_root_.scala.unchecked) match {
          case 1 => left.toPMessage
          case 2 => right.toPMessage
        }
      }
      def toProtoString: _root_.scala.Predef.String = _root_.scalapb.TextFormat.printToUnicodeString(this)
      def companion: quivr.models.Proposition.And.type = quivr.models.Proposition.And
      // @@protoc_insertion_point(GeneratedMessage[quivr.models.Proposition.And])
  }
  
  object And extends scalapb.GeneratedMessageCompanion[quivr.models.Proposition.And] {
    implicit def messageCompanion: scalapb.GeneratedMessageCompanion[quivr.models.Proposition.And] = this
    def parseFrom(`_input__`: _root_.com.google.protobuf.CodedInputStream): quivr.models.Proposition.And = {
      var __requiredFields0: _root_.scala.Long = 0x3L
      var __left: _root_.scala.Option[quivr.models.Proposition] = _root_.scala.None
      var __right: _root_.scala.Option[quivr.models.Proposition] = _root_.scala.None
      var `_unknownFields__`: _root_.scalapb.UnknownFieldSet.Builder = null
      var _done__ = false
      while (!_done__) {
        val _tag__ = _input__.readTag()
        _tag__ match {
          case 0 => _done__ = true
          case 10 =>
            __left = _root_.scala.Some(__left.fold(_root_.scalapb.LiteParser.readMessage[quivr.models.Proposition](_input__))(_root_.scalapb.LiteParser.readMessage(_input__, _)))
            __requiredFields0 &= 0xfffffffffffffffeL
          case 18 =>
            __right = _root_.scala.Some(__right.fold(_root_.scalapb.LiteParser.readMessage[quivr.models.Proposition](_input__))(_root_.scalapb.LiteParser.readMessage(_input__, _)))
            __requiredFields0 &= 0xfffffffffffffffdL
          case tag =>
            if (_unknownFields__ == null) {
              _unknownFields__ = new _root_.scalapb.UnknownFieldSet.Builder()
            }
            _unknownFields__.parseField(tag, _input__)
        }
      }
      if (__requiredFields0 != 0L) { throw new _root_.com.google.protobuf.InvalidProtocolBufferException("Message missing required fields.") } 
      quivr.models.Proposition.And(
          left = __left.getOrElse(quivr.models.Proposition.defaultInstance),
          right = __right.getOrElse(quivr.models.Proposition.defaultInstance),
          unknownFields = if (_unknownFields__ == null) _root_.scalapb.UnknownFieldSet.empty else _unknownFields__.result()
      )
    }
    implicit def messageReads: _root_.scalapb.descriptors.Reads[quivr.models.Proposition.And] = _root_.scalapb.descriptors.Reads{
      case _root_.scalapb.descriptors.PMessage(__fieldsMap) =>
        _root_.scala.Predef.require(__fieldsMap.keys.forall(_.containingMessage eq scalaDescriptor), "FieldDescriptor does not match message type.")
        quivr.models.Proposition.And(
          left = __fieldsMap.get(scalaDescriptor.findFieldByNumber(1).get).get.as[quivr.models.Proposition],
          right = __fieldsMap.get(scalaDescriptor.findFieldByNumber(2).get).get.as[quivr.models.Proposition]
        )
      case _ => throw new RuntimeException("Expected PMessage")
    }
    def javaDescriptor: _root_.com.google.protobuf.Descriptors.Descriptor = quivr.models.Proposition.javaDescriptor.getNestedTypes().get(11)
    def scalaDescriptor: _root_.scalapb.descriptors.Descriptor = quivr.models.Proposition.scalaDescriptor.nestedMessages(11)
    def messageCompanionForFieldNumber(__number: _root_.scala.Int): _root_.scalapb.GeneratedMessageCompanion[_] = {
      var __out: _root_.scalapb.GeneratedMessageCompanion[_] = null
      (__number: @_root_.scala.unchecked) match {
        case 1 => __out = quivr.models.Proposition
        case 2 => __out = quivr.models.Proposition
      }
      __out
    }
    lazy val nestedMessagesCompanions: Seq[_root_.scalapb.GeneratedMessageCompanion[_ <: _root_.scalapb.GeneratedMessage]] = Seq.empty
    def enumCompanionForFieldNumber(__fieldNumber: _root_.scala.Int): _root_.scalapb.GeneratedEnumCompanion[_] = throw new MatchError(__fieldNumber)
    lazy val defaultInstance = quivr.models.Proposition.And(
      left = quivr.models.Proposition.defaultInstance,
      right = quivr.models.Proposition.defaultInstance
    )
    implicit class AndLens[UpperPB](_l: _root_.scalapb.lenses.Lens[UpperPB, quivr.models.Proposition.And]) extends _root_.scalapb.lenses.ObjectLens[UpperPB, quivr.models.Proposition.And](_l) {
      def left: _root_.scalapb.lenses.Lens[UpperPB, quivr.models.Proposition] = field(_.left)((c_, f_) => c_.copy(left = f_))
      def right: _root_.scalapb.lenses.Lens[UpperPB, quivr.models.Proposition] = field(_.right)((c_, f_) => c_.copy(right = f_))
    }
    final val LEFT_FIELD_NUMBER = 1
    final val RIGHT_FIELD_NUMBER = 2
    def of(
      left: quivr.models.Proposition,
      right: quivr.models.Proposition
    ): _root_.quivr.models.Proposition.And = _root_.quivr.models.Proposition.And(
      left,
      right
    )
    // @@protoc_insertion_point(GeneratedMessageCompanion[quivr.models.Proposition.And])
  }
  
  /** a proposition that can be satisfied if either of the propositions contained are both satisfied
    */
  @SerialVersionUID(0L)
  final case class Or(
      left: quivr.models.Proposition,
      right: quivr.models.Proposition,
      unknownFields: _root_.scalapb.UnknownFieldSet = _root_.scalapb.UnknownFieldSet.empty
      ) extends scalapb.GeneratedMessage with scalapb.lenses.Updatable[Or] {
      @transient
      private[this] var __serializedSizeMemoized: _root_.scala.Int = 0
      private[this] def __computeSerializedSize(): _root_.scala.Int = {
        var __size = 0
        
        {
          val __value = left
          __size += 1 + _root_.com.google.protobuf.CodedOutputStream.computeUInt32SizeNoTag(__value.serializedSize) + __value.serializedSize
        };
        
        {
          val __value = right
          __size += 1 + _root_.com.google.protobuf.CodedOutputStream.computeUInt32SizeNoTag(__value.serializedSize) + __value.serializedSize
        };
        __size += unknownFields.serializedSize
        __size
      }
      override def serializedSize: _root_.scala.Int = {
        var __size = __serializedSizeMemoized
        if (__size == 0) {
          __size = __computeSerializedSize() + 1
          __serializedSizeMemoized = __size
        }
        __size - 1
        
      }
      def writeTo(`_output__`: _root_.com.google.protobuf.CodedOutputStream): _root_.scala.Unit = {
        
        {
          val __v = left
          _output__.writeTag(1, 2)
          _output__.writeUInt32NoTag(__v.serializedSize)
          __v.writeTo(_output__)
        };
        
        {
          val __v = right
          _output__.writeTag(2, 2)
          _output__.writeUInt32NoTag(__v.serializedSize)
          __v.writeTo(_output__)
        };
        unknownFields.writeTo(_output__)
      }
      def withLeft(__v: quivr.models.Proposition): Or = copy(left = __v)
      def withRight(__v: quivr.models.Proposition): Or = copy(right = __v)
      def withUnknownFields(__v: _root_.scalapb.UnknownFieldSet) = copy(unknownFields = __v)
      def discardUnknownFields = copy(unknownFields = _root_.scalapb.UnknownFieldSet.empty)
      def getFieldByNumber(__fieldNumber: _root_.scala.Int): _root_.scala.Any = {
        (__fieldNumber: @_root_.scala.unchecked) match {
          case 1 => left
          case 2 => right
        }
      }
      def getField(__field: _root_.scalapb.descriptors.FieldDescriptor): _root_.scalapb.descriptors.PValue = {
        _root_.scala.Predef.require(__field.containingMessage eq companion.scalaDescriptor)
        (__field.number: @_root_.scala.unchecked) match {
          case 1 => left.toPMessage
          case 2 => right.toPMessage
        }
      }
      def toProtoString: _root_.scala.Predef.String = _root_.scalapb.TextFormat.printToUnicodeString(this)
      def companion: quivr.models.Proposition.Or.type = quivr.models.Proposition.Or
      // @@protoc_insertion_point(GeneratedMessage[quivr.models.Proposition.Or])
  }
  
  object Or extends scalapb.GeneratedMessageCompanion[quivr.models.Proposition.Or] {
    implicit def messageCompanion: scalapb.GeneratedMessageCompanion[quivr.models.Proposition.Or] = this
    def parseFrom(`_input__`: _root_.com.google.protobuf.CodedInputStream): quivr.models.Proposition.Or = {
      var __requiredFields0: _root_.scala.Long = 0x3L
      var __left: _root_.scala.Option[quivr.models.Proposition] = _root_.scala.None
      var __right: _root_.scala.Option[quivr.models.Proposition] = _root_.scala.None
      var `_unknownFields__`: _root_.scalapb.UnknownFieldSet.Builder = null
      var _done__ = false
      while (!_done__) {
        val _tag__ = _input__.readTag()
        _tag__ match {
          case 0 => _done__ = true
          case 10 =>
            __left = _root_.scala.Some(__left.fold(_root_.scalapb.LiteParser.readMessage[quivr.models.Proposition](_input__))(_root_.scalapb.LiteParser.readMessage(_input__, _)))
            __requiredFields0 &= 0xfffffffffffffffeL
          case 18 =>
            __right = _root_.scala.Some(__right.fold(_root_.scalapb.LiteParser.readMessage[quivr.models.Proposition](_input__))(_root_.scalapb.LiteParser.readMessage(_input__, _)))
            __requiredFields0 &= 0xfffffffffffffffdL
          case tag =>
            if (_unknownFields__ == null) {
              _unknownFields__ = new _root_.scalapb.UnknownFieldSet.Builder()
            }
            _unknownFields__.parseField(tag, _input__)
        }
      }
      if (__requiredFields0 != 0L) { throw new _root_.com.google.protobuf.InvalidProtocolBufferException("Message missing required fields.") } 
      quivr.models.Proposition.Or(
          left = __left.getOrElse(quivr.models.Proposition.defaultInstance),
          right = __right.getOrElse(quivr.models.Proposition.defaultInstance),
          unknownFields = if (_unknownFields__ == null) _root_.scalapb.UnknownFieldSet.empty else _unknownFields__.result()
      )
    }
    implicit def messageReads: _root_.scalapb.descriptors.Reads[quivr.models.Proposition.Or] = _root_.scalapb.descriptors.Reads{
      case _root_.scalapb.descriptors.PMessage(__fieldsMap) =>
        _root_.scala.Predef.require(__fieldsMap.keys.forall(_.containingMessage eq scalaDescriptor), "FieldDescriptor does not match message type.")
        quivr.models.Proposition.Or(
          left = __fieldsMap.get(scalaDescriptor.findFieldByNumber(1).get).get.as[quivr.models.Proposition],
          right = __fieldsMap.get(scalaDescriptor.findFieldByNumber(2).get).get.as[quivr.models.Proposition]
        )
      case _ => throw new RuntimeException("Expected PMessage")
    }
    def javaDescriptor: _root_.com.google.protobuf.Descriptors.Descriptor = quivr.models.Proposition.javaDescriptor.getNestedTypes().get(12)
    def scalaDescriptor: _root_.scalapb.descriptors.Descriptor = quivr.models.Proposition.scalaDescriptor.nestedMessages(12)
    def messageCompanionForFieldNumber(__number: _root_.scala.Int): _root_.scalapb.GeneratedMessageCompanion[_] = {
      var __out: _root_.scalapb.GeneratedMessageCompanion[_] = null
      (__number: @_root_.scala.unchecked) match {
        case 1 => __out = quivr.models.Proposition
        case 2 => __out = quivr.models.Proposition
      }
      __out
    }
    lazy val nestedMessagesCompanions: Seq[_root_.scalapb.GeneratedMessageCompanion[_ <: _root_.scalapb.GeneratedMessage]] = Seq.empty
    def enumCompanionForFieldNumber(__fieldNumber: _root_.scala.Int): _root_.scalapb.GeneratedEnumCompanion[_] = throw new MatchError(__fieldNumber)
    lazy val defaultInstance = quivr.models.Proposition.Or(
      left = quivr.models.Proposition.defaultInstance,
      right = quivr.models.Proposition.defaultInstance
    )
    implicit class OrLens[UpperPB](_l: _root_.scalapb.lenses.Lens[UpperPB, quivr.models.Proposition.Or]) extends _root_.scalapb.lenses.ObjectLens[UpperPB, quivr.models.Proposition.Or](_l) {
      def left: _root_.scalapb.lenses.Lens[UpperPB, quivr.models.Proposition] = field(_.left)((c_, f_) => c_.copy(left = f_))
      def right: _root_.scalapb.lenses.Lens[UpperPB, quivr.models.Proposition] = field(_.right)((c_, f_) => c_.copy(right = f_))
    }
    final val LEFT_FIELD_NUMBER = 1
    final val RIGHT_FIELD_NUMBER = 2
    def of(
      left: quivr.models.Proposition,
      right: quivr.models.Proposition
    ): _root_.quivr.models.Proposition.Or = _root_.quivr.models.Proposition.Or(
      left,
      right
    )
    // @@protoc_insertion_point(GeneratedMessageCompanion[quivr.models.Proposition.Or])
  }
  
  implicit class PropositionLens[UpperPB](_l: _root_.scalapb.lenses.Lens[UpperPB, quivr.models.Proposition]) extends _root_.scalapb.lenses.ObjectLens[UpperPB, quivr.models.Proposition](_l) {
    def locked: _root_.scalapb.lenses.Lens[UpperPB, quivr.models.Proposition.Locked] = field(_.getLocked)((c_, f_) => c_.copy(value = quivr.models.Proposition.Value.Locked(f_)))
    def digest: _root_.scalapb.lenses.Lens[UpperPB, quivr.models.Proposition.Digest] = field(_.getDigest)((c_, f_) => c_.copy(value = quivr.models.Proposition.Value.Digest(f_)))
    def digitalSignature: _root_.scalapb.lenses.Lens[UpperPB, quivr.models.Proposition.DigitalSignature] = field(_.getDigitalSignature)((c_, f_) => c_.copy(value = quivr.models.Proposition.Value.DigitalSignature(f_)))
    def heightRange: _root_.scalapb.lenses.Lens[UpperPB, quivr.models.Proposition.HeightRange] = field(_.getHeightRange)((c_, f_) => c_.copy(value = quivr.models.Proposition.Value.HeightRange(f_)))
    def tickRange: _root_.scalapb.lenses.Lens[UpperPB, quivr.models.Proposition.TickRange] = field(_.getTickRange)((c_, f_) => c_.copy(value = quivr.models.Proposition.Value.TickRange(f_)))
    def exactMatch: _root_.scalapb.lenses.Lens[UpperPB, quivr.models.Proposition.ExactMatch] = field(_.getExactMatch)((c_, f_) => c_.copy(value = quivr.models.Proposition.Value.ExactMatch(f_)))
    def lessThan: _root_.scalapb.lenses.Lens[UpperPB, quivr.models.Proposition.LessThan] = field(_.getLessThan)((c_, f_) => c_.copy(value = quivr.models.Proposition.Value.LessThan(f_)))
    def greaterThan: _root_.scalapb.lenses.Lens[UpperPB, quivr.models.Proposition.GreaterThan] = field(_.getGreaterThan)((c_, f_) => c_.copy(value = quivr.models.Proposition.Value.GreaterThan(f_)))
    def equalTo: _root_.scalapb.lenses.Lens[UpperPB, quivr.models.Proposition.EqualTo] = field(_.getEqualTo)((c_, f_) => c_.copy(value = quivr.models.Proposition.Value.EqualTo(f_)))
    def threshold: _root_.scalapb.lenses.Lens[UpperPB, quivr.models.Proposition.Threshold] = field(_.getThreshold)((c_, f_) => c_.copy(value = quivr.models.Proposition.Value.Threshold(f_)))
    def not: _root_.scalapb.lenses.Lens[UpperPB, quivr.models.Proposition.Not] = field(_.getNot)((c_, f_) => c_.copy(value = quivr.models.Proposition.Value.Not(f_)))
    def and: _root_.scalapb.lenses.Lens[UpperPB, quivr.models.Proposition.And] = field(_.getAnd)((c_, f_) => c_.copy(value = quivr.models.Proposition.Value.And(f_)))
    def or: _root_.scalapb.lenses.Lens[UpperPB, quivr.models.Proposition.Or] = field(_.getOr)((c_, f_) => c_.copy(value = quivr.models.Proposition.Value.Or(f_)))
    def value: _root_.scalapb.lenses.Lens[UpperPB, quivr.models.Proposition.Value] = field(_.value)((c_, f_) => c_.copy(value = f_))
  }
  final val LOCKED_FIELD_NUMBER = 1
  final val DIGEST_FIELD_NUMBER = 2
  final val DIGITALSIGNATURE_FIELD_NUMBER = 3
  final val HEIGHTRANGE_FIELD_NUMBER = 4
  final val TICKRANGE_FIELD_NUMBER = 5
  final val EXACTMATCH_FIELD_NUMBER = 6
  final val LESSTHAN_FIELD_NUMBER = 7
  final val GREATERTHAN_FIELD_NUMBER = 8
  final val EQUALTO_FIELD_NUMBER = 9
  final val THRESHOLD_FIELD_NUMBER = 10
  final val NOT_FIELD_NUMBER = 11
  final val AND_FIELD_NUMBER = 12
  final val OR_FIELD_NUMBER = 13
  def of(
    value: quivr.models.Proposition.Value
  ): _root_.quivr.models.Proposition = _root_.quivr.models.Proposition(
    value
  )
  implicit def validator: scalapb.validate.Validator[quivr.models.Proposition] = quivr.models.PropositionValidator
  // @@protoc_insertion_point(GeneratedMessageCompanion[quivr.models.Proposition])
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy