From 730ca1abf560e1493a58cfd7248a821788adf879 Mon Sep 17 00:00:00 2001 From: Vaci Koblizek Date: Tue, 20 Oct 2020 21:42:20 +0100 Subject: [PATCH] question cleanup --- compiler/src/main/cpp/capnpc-java.c++ | 4 +- .../java/org/capnproto/CallContextHook.java | 6 +- .../main/java/org/capnproto/Capability.java | 119 +- .../main/java/org/capnproto/ClientHook.java | 4 +- .../org/capnproto/DispatchCallResult.java | 8 +- .../main/java/org/capnproto/ExportTable.java | 6 +- .../main/java/org/capnproto/QueuedClient.java | 50 - .../java/org/capnproto/QueuedPipeline.java | 28 - .../main/java/org/capnproto/RpcDumper.java | 103 + .../main/java/org/capnproto/RpcException.java | 7 +- .../src/main/java/org/capnproto/RpcState.java | 569 +- .../main/java/org/capnproto/RpcSystem.java | 44 +- .../src/main/java/org/capnproto/Schema.java | 7916 +++++++++++++++++ .../main/java/org/capnproto/Serialize.java | 2 +- .../java/org/capnproto/TwoPartyClient.java | 14 +- .../java/org/capnproto/TwoPartyRpcSystem.java | 4 + .../java/org/capnproto/TwoPartyServer.java | 107 +- .../org/capnproto/TwoPartyVatNetwork.java | 59 +- .../main/java/org/capnproto/VatNetwork.java | 2 + .../src/main/java/org/capnproto/schema.capnp | 533 ++ .../org/capnproto/LocalCapabilityTest.java | 66 + .../test/java/org/capnproto/RpcStateTest.java | 16 +- .../test/java/org/capnproto/TwoPartyTest.java | 166 +- .../test/java/org/capnproto/demo/Demo.java | 12 +- 24 files changed, 9438 insertions(+), 407 deletions(-) delete mode 100644 runtime/src/main/java/org/capnproto/QueuedClient.java delete mode 100644 runtime/src/main/java/org/capnproto/QueuedPipeline.java create mode 100644 runtime/src/main/java/org/capnproto/RpcDumper.java create mode 100644 runtime/src/main/java/org/capnproto/Schema.java create mode 100644 runtime/src/main/java/org/capnproto/schema.capnp create mode 100644 runtime/src/test/java/org/capnproto/LocalCapabilityTest.java diff --git a/compiler/src/main/cpp/capnpc-java.c++ b/compiler/src/main/cpp/capnpc-java.c++ index 23c0654..5943aac 100644 --- a/compiler/src/main/cpp/capnpc-java.c++ +++ b/compiler/src/main/cpp/capnpc-java.c++ @@ -1758,7 +1758,7 @@ private: " }\n"), kj::strTree( - " protected java.util.concurrent.CompletableFuture ", identifierName, "(org.capnproto.StreamingCallContext<", shortParamType, ".Reader> context) {\n" + " protected java.util.concurrent.CompletableFuture ", identifierName, "(org.capnproto.StreamingCallContext<", shortParamType, ".Reader> context) {\n" " return org.capnproto.Capability.Server.internalUnimplemented(\n" " \"", interfaceProto.getDisplayName(), "\", \"", methodName, "\",\n" " 0x", interfaceIdHex, "L, (short)", methodId, ");\n" @@ -1780,7 +1780,7 @@ private: " }\n"), kj::strTree( - " protected java.util.concurrent.CompletableFuture ", identifierName, "(org.capnproto.CallContext<", shortParamType, ".Reader, ", shortResultType, ".Builder> context) {\n" + " protected java.util.concurrent.CompletableFuture ", identifierName, "(org.capnproto.CallContext<", shortParamType, ".Reader, ", shortResultType, ".Builder> context) {\n" " return org.capnproto.Capability.Server.internalUnimplemented(\n" " \"", interfaceProto.getDisplayName(), "\", \"", methodName, "\",\n" " 0x", interfaceIdHex, "L, (short)", methodId, ");\n" diff --git a/runtime/src/main/java/org/capnproto/CallContextHook.java b/runtime/src/main/java/org/capnproto/CallContextHook.java index 71ebcdb..08f85c9 100644 --- a/runtime/src/main/java/org/capnproto/CallContextHook.java +++ b/runtime/src/main/java/org/capnproto/CallContextHook.java @@ -7,7 +7,11 @@ public interface CallContextHook { void releaseParams(); - AnyPointer.Builder getResults(); + default AnyPointer.Builder getResults() { + return getResults(0); + } + + AnyPointer.Builder getResults(int sizeHint); CompletableFuture tailCall(RequestHook request); diff --git a/runtime/src/main/java/org/capnproto/Capability.java b/runtime/src/main/java/org/capnproto/Capability.java index 262cc83..8dfed40 100644 --- a/runtime/src/main/java/org/capnproto/Capability.java +++ b/runtime/src/main/java/org/capnproto/Capability.java @@ -162,7 +162,7 @@ public final class Capability { return BRAND; } - CompletableFuture callInternal(long interfaceId, short methodId, CallContextHook context) { + CompletableFuture callInternal(long interfaceId, short methodId, CallContextHook context) { var result = dispatchCall( interfaceId, methodId, @@ -212,7 +212,7 @@ public final class Capability { long interfaceId, short methodId, CallContext context); - protected static DispatchCallResult streamResult(CompletableFuture result) { + protected static DispatchCallResult streamResult(CompletableFuture result) { // For streaming calls, we need to add an evalNow() here so that exceptions thrown // directly from the call can propagate to later calls. If we don't capture the // exception properly then the caller will never find out that this is a streaming @@ -222,35 +222,35 @@ public final class Capability { return new DispatchCallResult(result, true); } - protected static DispatchCallResult result(CompletableFuture result) { + protected static DispatchCallResult result(CompletableFuture result) { return new DispatchCallResult(result, false); } - protected static CompletableFuture internalUnimplemented(String actualInterfaceName, long requestedTypeId) { + protected static CompletableFuture internalUnimplemented(String actualInterfaceName, long requestedTypeId) { return CompletableFuture.failedFuture(RpcException.unimplemented( "Method not implemented. " + actualInterfaceName + " " + requestedTypeId)); } - protected static CompletableFuture internalUnimplemented(String interfaceName, long typeId, short methodId) { + protected static CompletableFuture internalUnimplemented(String interfaceName, long typeId, short methodId) { return CompletableFuture.failedFuture(RpcException.unimplemented( "Method not implemented. " + interfaceName + " " + typeId + " " + methodId)); } - protected static CompletableFuture internalUnimplemented(String interfaceName, String methodName, long typeId, short methodId) { + protected static CompletableFuture internalUnimplemented(String interfaceName, String methodName, long typeId, short methodId) { return CompletableFuture.failedFuture(RpcException.unimplemented( "Method not implemented. " + interfaceName + " " + typeId + " " + methodName + " " + methodId)); } } public static ClientHook newLocalPromiseClient(CompletionStage promise) { - return new QueuedClient(promise); + return new QueuedClient(promise.toCompletableFuture()); } public static PipelineHook newLocalPromisePipeline(CompletionStage promise) { - return new QueuedPipeline(promise); + return new QueuedPipeline(promise.toCompletableFuture()); } - static class LocalRequest implements RequestHook { + private static class LocalRequest implements RequestHook { final MessageBuilder message = new MessageBuilder(); final long interfaceId; @@ -290,11 +290,11 @@ public final class Capability { } } - static final class LocalPipeline implements PipelineHook { - final CallContextHook context; - final AnyPointer.Reader results; + private static final class LocalPipeline implements PipelineHook { + private final CallContextHook context; + private final AnyPointer.Reader results; - public LocalPipeline(CallContextHook context) { + LocalPipeline(CallContextHook context) { this.context = context; this.results = context.getResults().asReader(); } @@ -305,11 +305,16 @@ public final class Capability { } } - static class LocalResponse implements ResponseHook { - final MessageBuilder message = new MessageBuilder(); + private static final class LocalResponse implements ResponseHook { + + final MessageBuilder message; + + LocalResponse(int sizeHint) { + this.message = new MessageBuilder(sizeHint); + } } - static class LocalCallContext implements CallContextHook { + private static class LocalCallContext implements CallContextHook { final CompletableFuture cancelAllowed; MessageBuilder request; @@ -336,9 +341,9 @@ public final class Capability { } @Override - public AnyPointer.Builder getResults() { + public AnyPointer.Builder getResults(int sizeHint) { if (this.response == null) { - var localResponse = new LocalResponse(); + var localResponse = new LocalResponse(sizeHint); this.responseBuilder = localResponse.message.getRoot(AnyPointer.factory); this.response = new Response<>(this.responseBuilder.asReader(), localResponse); } @@ -409,4 +414,82 @@ public final class Capability { }; } + // Call queues + // + // These classes handle pipelining in the case where calls need to be queued in-memory until some + // local operation completes. + + // A PipelineHook which simply queues calls while waiting for a PipelineHook to which to forward them. + private static final class QueuedPipeline implements PipelineHook { + + private final CompletableFuture promise; + private final CompletionStage selfResolutionOp; + PipelineHook redirect; + + QueuedPipeline(CompletableFuture promiseParam) { + this.promise = promiseParam; + this.selfResolutionOp = promise.handle((pipeline, exc) -> { + this.redirect = exc == null + ? pipeline + : PipelineHook.newBrokenPipeline(exc); + return null; + }); + } + + @Override + public final ClientHook getPipelinedCap(PipelineOp[] ops) { + return redirect != null + ? redirect.getPipelinedCap(ops) + : new QueuedClient(this.promise.thenApply( + pipeline -> pipeline.getPipelinedCap(ops))); + } + } + + // A ClientHook which simply queues calls while waiting for a ClientHook to which to forward them. + private static class QueuedClient implements ClientHook { + + private final CompletableFuture promise; + private final CompletableFuture promiseForCallForwarding; + private final CompletableFuture promiseForClientResolution; + private final CompletableFuture setResolutionOp; + private ClientHook redirect; + + QueuedClient(CompletableFuture promise) { + // TODO revisit futures + this.promise = promise; + this.promiseForCallForwarding = promise.toCompletableFuture().copy(); + this.promiseForClientResolution = promise.toCompletableFuture().copy(); + this.setResolutionOp = promise.thenAccept(inner -> { + this.redirect = inner; + }).exceptionally(exc -> { + this.redirect = newBrokenCap(exc); + return null; + }); + } + + @Override + public Request newCall(long interfaceId, short methodId) { + var hook = new LocalRequest(interfaceId, methodId, this); + var root = hook.message.getRoot(AnyPointer.factory); + return new Request<>(root, AnyPointer.factory, hook); + } + + @Override + public VoidPromiseAndPipeline call(long interfaceId, short methodId, CallContextHook ctx) { + var callResultPromise = this.promiseForCallForwarding.thenApply(client -> client.call(interfaceId, methodId, ctx)); + var pipelinePromise = callResultPromise.thenApply(callResult -> callResult.pipeline); + var pipeline = new QueuedPipeline(pipelinePromise); + return new VoidPromiseAndPipeline(callResultPromise.thenAccept(x -> {}), pipeline); + } + + @Override + public ClientHook getResolved() { + return redirect; + } + + @Override + public CompletionStage whenMoreResolved() { + return promiseForClientResolution.copy(); + } + } } diff --git a/runtime/src/main/java/org/capnproto/ClientHook.java b/runtime/src/main/java/org/capnproto/ClientHook.java index 55b12a9..b5dc613 100644 --- a/runtime/src/main/java/org/capnproto/ClientHook.java +++ b/runtime/src/main/java/org/capnproto/ClientHook.java @@ -44,10 +44,10 @@ public interface ClientHook { } final class VoidPromiseAndPipeline { - public final CompletionStage promise; + public final CompletionStage promise; public final PipelineHook pipeline; - VoidPromiseAndPipeline(CompletionStage promise, PipelineHook pipeline) { + VoidPromiseAndPipeline(CompletionStage promise, PipelineHook pipeline) { this.promise = promise; this.pipeline = pipeline; } diff --git a/runtime/src/main/java/org/capnproto/DispatchCallResult.java b/runtime/src/main/java/org/capnproto/DispatchCallResult.java index de3fb4d..536a2a0 100644 --- a/runtime/src/main/java/org/capnproto/DispatchCallResult.java +++ b/runtime/src/main/java/org/capnproto/DispatchCallResult.java @@ -4,10 +4,10 @@ import java.util.concurrent.CompletableFuture; public final class DispatchCallResult { - private final CompletableFuture promise; + private final CompletableFuture promise; private final boolean streaming; - public DispatchCallResult(CompletableFuture promise, boolean isStreaming) { + public DispatchCallResult(CompletableFuture promise, boolean isStreaming) { this.promise = promise; this.streaming = isStreaming; } @@ -16,8 +16,8 @@ public final class DispatchCallResult { this(CompletableFuture.failedFuture(exc), false); } - public CompletableFuture getPromise() { - return promise; + public CompletableFuture getPromise() { + return promise.copy(); } public boolean isStreaming() { diff --git a/runtime/src/main/java/org/capnproto/ExportTable.java b/runtime/src/main/java/org/capnproto/ExportTable.java index f91a7e0..dcd7730 100644 --- a/runtime/src/main/java/org/capnproto/ExportTable.java +++ b/runtime/src/main/java/org/capnproto/ExportTable.java @@ -8,9 +8,9 @@ import java.util.function.Consumer; abstract class ExportTable implements Iterable { - final HashMap slots = new HashMap<>(); - final Queue freeIds = new PriorityQueue<>(); - int max = 0; + private final HashMap slots = new HashMap<>(); + private final Queue freeIds = new PriorityQueue<>(); + private int max = 0; abstract T newExportable(int id); diff --git a/runtime/src/main/java/org/capnproto/QueuedClient.java b/runtime/src/main/java/org/capnproto/QueuedClient.java deleted file mode 100644 index 752dde3..0000000 --- a/runtime/src/main/java/org/capnproto/QueuedClient.java +++ /dev/null @@ -1,50 +0,0 @@ -package org.capnproto; - -import java.util.concurrent.CompletionStage; - -class QueuedClient implements ClientHook { - - final CompletionStage promise; - final CompletionStage promiseForCallForwarding; - final CompletionStage promiseForClientResolution; - final CompletionStage setResolutionOp; - ClientHook redirect; - - QueuedClient(CompletionStage promise) { - // TODO revisit futures - this.promise = promise.toCompletableFuture().copy(); - this.promiseForCallForwarding = promise.toCompletableFuture().copy(); - this.promiseForClientResolution = promise.toCompletableFuture().copy(); - this.setResolutionOp = promise.thenAccept(inner -> { - this.redirect = inner; - }).exceptionally(exc -> { - this.redirect = Capability.newBrokenCap(exc); - return null; - }); - } - - @Override - public Request newCall(long interfaceId, short methodId) { - var hook = new Capability.LocalRequest(interfaceId, methodId, this); - var root = hook.message.getRoot(AnyPointer.factory); - return new Request<>(root, AnyPointer.factory, hook); - } - - @Override - public VoidPromiseAndPipeline call(long interfaceId, short methodId, CallContextHook ctx) { - var callResultPromise = this.promiseForCallForwarding.thenApply(client -> client.call(interfaceId, methodId, ctx)); - var pipelinePromise = callResultPromise.thenApply(callResult -> callResult.pipeline); - var pipeline = new QueuedPipeline(pipelinePromise); - return new VoidPromiseAndPipeline(callResultPromise, pipeline); - } - - @Override - public ClientHook getResolved() { - return redirect; - } - - @Override - public CompletionStage whenMoreResolved() { - return promiseForClientResolution; - } -} diff --git a/runtime/src/main/java/org/capnproto/QueuedPipeline.java b/runtime/src/main/java/org/capnproto/QueuedPipeline.java deleted file mode 100644 index 27508f5..0000000 --- a/runtime/src/main/java/org/capnproto/QueuedPipeline.java +++ /dev/null @@ -1,28 +0,0 @@ -package org.capnproto; - -import java.util.concurrent.CompletionStage; - -final class QueuedPipeline implements PipelineHook { - - final CompletionStage promise; - final CompletionStage selfResolutionOp; - PipelineHook redirect; - - public QueuedPipeline(CompletionStage promiseParam) { - this.promise = promiseParam; - this.selfResolutionOp = promise.handle((pipeline, exc) -> { - this.redirect = exc == null - ? pipeline - : PipelineHook.newBrokenPipeline(exc); - return null; - }); - } - - @Override - public final ClientHook getPipelinedCap(PipelineOp[] ops) { - return redirect != null - ? redirect.getPipelinedCap(ops) - : new QueuedClient(this.promise.thenApply( - pipeline -> pipeline.getPipelinedCap(ops))); - } -} diff --git a/runtime/src/main/java/org/capnproto/RpcDumper.java b/runtime/src/main/java/org/capnproto/RpcDumper.java new file mode 100644 index 0000000..0a2f902 --- /dev/null +++ b/runtime/src/main/java/org/capnproto/RpcDumper.java @@ -0,0 +1,103 @@ +package org.capnproto; + +import java.util.HashMap; +import java.util.Map; + +public class RpcDumper { + + private final Map schemas = new HashMap<>(); + private final Map clientReturnTypes = new HashMap<>(); + private final Map serverReturnTypes = new HashMap<>(); + + void addSchema(long schemaId, Schema.Node.Reader node) { + this.schemas.put(schemaId, node); + } + + private void setReturnType(RpcTwoPartyProtocol.Side side, int schemaId, long schema) { + switch (side) { + case CLIENT: + clientReturnTypes.put(schemaId, schema); + break; + case SERVER: + serverReturnTypes.put(schemaId, schema); + default: + break; + } + } + + private Long getReturnType(RpcTwoPartyProtocol.Side side, int schemaId) { + switch (side) { + case CLIENT: + return clientReturnTypes.get(schemaId); + case SERVER: + return serverReturnTypes.get(schemaId); + default: + break; + } + return -1L; + } + + String dump(RpcProtocol.Message.Reader message, RpcTwoPartyProtocol.Side sender) { + switch (message.which()) { + case CALL: { + var call = message.getCall(); + var iface = call.getInterfaceId(); + var schema = this.schemas.get(iface); + if (schema == null || !schema.isInterface()) { + break; + } + + var interfaceSchema = schema.getInterface(); + + var methods = interfaceSchema.getMethods(); + if (call.getMethodId() >= methods.size()) { + break; + } + + var method = methods.get(call.getMethodId()); + var interfaceName = schema.getDisplayName().toString(); + var paramType = method.getParamStructType(); + var resultType = method.getResultStructType(); + + if (call.getSendResultsTo().isCaller()) { + var questionId = call.getQuestionId(); + setReturnType(sender, call.getQuestionId(), resultType); + } + + var payload = call.getParams(); + var params = payload.getContent(); + var sendResultsTo = call.getSendResultsTo(); + + return sender.name() + "(" + call.getQuestionId() + "): call " + + call.getTarget() + " <- " + interfaceName + "." + + method.getName().toString() + " " + params + " caps:[" + + payload.getCapTable() + "]" + (sendResultsTo.isCaller() ? "" : (" sendResultsTo:" + sendResultsTo)); + } + + case RETURN: { + var ret = message.getReturn(); + var returnType = getReturnType( + sender == RpcTwoPartyProtocol.Side.CLIENT + ? RpcTwoPartyProtocol.Side.SERVER + : RpcTwoPartyProtocol.Side.CLIENT, + ret.getAnswerId()); + if (ret.which() != RpcProtocol.Return.Which.RESULTS) { + break; + } + var payload = ret.getResults(); + return sender.name() + "(" + ret.getAnswerId() + "): return " + payload + + " caps:[" + payload.getCapTable() + "]"; + } + + case BOOTSTRAP: { + var restore = message.getBootstrap(); + setReturnType(sender, restore.getQuestionId(), 0); + return sender.name() + "(" + restore.getQuestionId() + "): bootstrap " + + restore.getDeprecatedObjectId(); + } + default: + break; + } + return ""; + } +} diff --git a/runtime/src/main/java/org/capnproto/RpcException.java b/runtime/src/main/java/org/capnproto/RpcException.java index a3202be..cccc689 100644 --- a/runtime/src/main/java/org/capnproto/RpcException.java +++ b/runtime/src/main/java/org/capnproto/RpcException.java @@ -5,7 +5,8 @@ public final class RpcException extends java.lang.Exception { public enum Type { UNKNOWN, UNIMPLEMENTED, - FAILED + FAILED, + DISCONNECTED } private Type type; @@ -27,6 +28,10 @@ public final class RpcException extends java.lang.Exception { return new RpcException(Type.FAILED, message); } + public static RpcException disconnected(String message) { + return new RpcException(Type.DISCONNECTED, message); + } + static void fromException(Throwable exc, RpcProtocol.Exception.Builder builder) { builder.setReason(exc.getMessage()); builder.setType(RpcProtocol.Exception.Type.FAILED); diff --git a/runtime/src/main/java/org/capnproto/RpcState.java b/runtime/src/main/java/org/capnproto/RpcState.java index 92cad37..ff9844e 100644 --- a/runtime/src/main/java/org/capnproto/RpcState.java +++ b/runtime/src/main/java/org/capnproto/RpcState.java @@ -1,40 +1,50 @@ package org.capnproto; +import java.io.IOException; import java.lang.ref.ReferenceQueue; import java.lang.ref.WeakReference; import java.util.*; import java.util.concurrent.Callable; import java.util.concurrent.CompletableFuture; import java.util.concurrent.CompletionStage; +import java.util.function.Consumer; final class RpcState { - final class Question { - final int id; - CompletableFuture response = new CompletableFuture<>(); - List paramExports; - boolean isAwaitingReturn = false; - boolean isTailCall = false; - boolean skipFinish = false; + private static int messageSizeHint() { + return 1 + RpcProtocol.Message.factory.structSize().total(); + } - Question(int id) { + private static int MESSAGE_TARGET_SIZE_HINT + = RpcProtocol.MessageTarget.factory.structSize().total() + + RpcProtocol.PromisedAnswer.factory.structSize().total() + + 16; + + private static int CAP_DESCRIPTOR_SIZE_HINT + = RpcProtocol.CapDescriptor.factory.structSize().total() + + RpcProtocol.PromisedAnswer.factory.structSize().total(); + + private final class QuestionDisposer { + + final int id; + boolean skipFinish; + boolean isAwaitingReturn; + + QuestionDisposer(int id) { this.id = id; } - void reject(Throwable exc) { - this.response.completeExceptionally(exc); - this.finish(); - } + void dispose() { + var ref = questions.find(this.id); + if (ref != null) { + assert false: "Question ID no longer on table?"; + return; + } - void answer(RpcResponse response) { - this.response.complete(response); - this.finish(); - } - - void finish() { - assert questions.find(this.id) != null : "Question ID no longer on table?"; if (isConnected() && !this.skipFinish) { - var message = connection.newOutgoingMessage(1024); + var sizeHint = messageSizeHint() + + RpcProtocol.Finish.factory.structSize().total(); + var message = connection.newOutgoingMessage(sizeHint); var builder = message.getBody().getAs(RpcProtocol.Message.factory).initFinish(); builder.setQuestionId(this.id); builder.setReleaseResultCaps(this.isAwaitingReturn); @@ -45,7 +55,104 @@ final class RpcState { // Remove question ID from the table. Must do this *after* sending `Finish` to ensure that // the ID is not re-allocated before the `Finish` message can be sent. assert !this.isAwaitingReturn; - questions.erase(id, this); + questions.erase(id); + } + } + + private final class QuestionRef extends WeakReference { + + private final QuestionDisposer disposer; + + QuestionRef(Question question) { + super(question, questionRefQueue); + this.disposer = question.disposer; + } + + void dispose() { + this.disposer.dispose(); + } + } + + private final class Question { + + CompletableFuture response = new CompletableFuture<>(); + int[] paramExports = new int[0]; + private final QuestionDisposer disposer; + boolean isTailCall = false; + + Question(int id) { + this.disposer = new QuestionDisposer(id); + } + + public int getId() { + return this.disposer.id; + } + + public void setAwaitingReturn(boolean value) { + this.disposer.isAwaitingReturn = value; + } + + void reject(Throwable exc) { + this.response.completeExceptionally(exc); + } + + void answer(RpcResponse response) { + this.response.complete(response); + } + + public boolean isAwaitingReturn() { + return this.disposer.isAwaitingReturn; + } + + public void setSkipFinish(boolean value) { + this.disposer.skipFinish = value; + } + } + + class QuestionExportTable implements Iterable { + private final HashMap> slots = new HashMap<>(); + private final Queue freeIds = new PriorityQueue<>(); + private int max = 0; + + public Question find(int id) { + var ref = this.slots.get(id); + return ref == null ? null : ref.get(); + } + + public Question erase(int id) { + var value = this.slots.get(id); + if (value != null) { + freeIds.add(id); + this.slots.remove(id); + return value.get(); + } else { + return null; + } + } + + public Question next() { + int id = freeIds.isEmpty() ? max++ : freeIds.remove(); + var value = new Question(id); + var prev = slots.put(id, new QuestionRef(value)); + assert prev == null; + return value; + } + + @Override + public Iterator iterator() { + return this.slots.values() + .stream() + .map(ref -> ref.get()) + .filter(question -> question != null) + .iterator(); + } + + @Override + public void forEach(Consumer action) { + var iter = this.iterator(); + while (iter.hasNext()) { + action.accept(iter.next()); + } } } @@ -55,7 +162,7 @@ final class RpcState { PipelineHook pipeline; CompletionStage redirectedResults; RpcCallContext callContext; - List resultExports; + int[] resultExports; Answer(int answerId) { this.answerId = answerId; @@ -123,12 +230,20 @@ final class RpcState { } }; - private final ExportTable questions = new ExportTable() { + /* + private final ExportTable questions = new ExportTable<>() { @Override - Question newExportable(int id) { - return new Question(id); + QuestionRef newExportable(int id) { + return new QuestionRef(new Question(id)); } }; +*/ + private final QuestionExportTable questions = new QuestionExportTable(); /*{ + @Override + Question newExportable(int id) { + return new Question(id); + } +*/ private final ImportTable answers = new ImportTable<>() { @Override @@ -151,15 +266,117 @@ final class RpcState { } }; - private final HashMap exportsByCap = new HashMap<>(); - private final VatNetwork.Connection connection; + private final Map exportsByCap = new HashMap<>(); private final Capability.Client bootstrapInterface; + private final VatNetwork.Connection connection; + private final CompletableFuture onDisconnect; private Throwable disconnected = null; - private CompletableFuture messageReady = CompletableFuture.completedFuture(null); + private CompletableFuture messageReady = CompletableFuture.completedFuture(null); + private final String name; + private final CompletableFuture messageLoop; + private final ReferenceQueue questionRefQueue = new ReferenceQueue<>(); - RpcState(VatNetwork.Connection connection, Capability.Client bootstrapInterface) { - this.connection = connection; + RpcState( Capability.Client bootstrapInterface, + VatNetwork.Connection connection, + CompletableFuture onDisconnect) { this.bootstrapInterface = bootstrapInterface; + this.connection = connection; + this.onDisconnect = onDisconnect; + this.messageLoop = this.doMessageLoop(); + + if (this.connection instanceof TwoPartyVatNetwork) { + this.name = ((TwoPartyVatNetwork)this.connection).getSide().toString(); + } + else { + this.name = this.toString(); + } + } + + public CompletableFuture getMessageLoop() { + return this.messageLoop; + } + + CompletableFuture disconnect(Throwable exc) { + if (isDisconnected()) { + return CompletableFuture.failedFuture(this.disconnected); + } + + var networkExc = RpcException.disconnected(exc.getMessage()); + + // All current questions complete with exceptions. + for (var question: questions) { + question.reject(networkExc); + } + + List pipelinesToRelease = new ArrayList<>(); + List clientsToRelease = new ArrayList<>(); + List> tailCallsToRelease = new ArrayList<>(); + List> resolveOpsToRelease = new ArrayList<>(); + + for (var answer : answers) { + if (answer.pipeline != null) { + pipelinesToRelease.add(answer.pipeline); + answer.pipeline = null; + } + + if (answer.redirectedResults != null) { + tailCallsToRelease.add(answer.redirectedResults); + answer.redirectedResults = null; + } + + if (answer.callContext != null) { + answer.callContext.requestCancel(); + } + } + + for (var export : exports) { + clientsToRelease.add(export.clientHook); + resolveOpsToRelease.add(export.resolveOp); + export.clientHook = null; + export.resolveOp = null; + export.refcount = 0; + } + + for (var imp : imports) { + if (imp.promise != null) { + imp.promise.completeExceptionally(networkExc); + } + } + + for (var embargo : embargos) { + if (embargo.disembargo != null) { + embargo.disembargo.completeExceptionally(networkExc); + } + } + + try { + var message = this.connection.newOutgoingMessage(1024); + RpcException.fromException(exc, message.getBody().getAs(RpcProtocol.Message.factory).initAbort()); + message.send(); + } + catch (Exception abortFailed) { + // no-op + } + + var onShutdown = this.connection.shutdown().handle((x, ioExc) -> { + if (ioExc == null) { + return CompletableFuture.completedFuture(null); + } + + // TODO IOException? + assert !(ioExc instanceof IOException); + + if (ioExc instanceof RpcException) { + var rpcExc = (RpcException)exc; + if (rpcExc.getType() == RpcException.Type.DISCONNECTED) { + return CompletableFuture.completedFuture(null); + } + } + return CompletableFuture.failedFuture(ioExc); + }); + + this.disconnected = networkExc; + return onShutdown.thenCompose(x -> CompletableFuture.failedFuture(networkExc)); } final boolean isDisconnected() { @@ -171,83 +388,52 @@ final class RpcState { } // Run func() before the next IO event. - private CompletableFuture evalLast(Callable func) { - return this.messageReady.thenCompose(x -> { + private void evalLast(Callable func) { + this.messageReady = this.messageReady.thenCompose(x -> { try { - return CompletableFuture.completedFuture(func.call()); + func.call(); } catch (java.lang.Exception exc) { return CompletableFuture.failedFuture(exc); } + return CompletableFuture.completedFuture(null); }); } ClientHook restore() { var question = questions.next(); - question.isAwaitingReturn = true; - question.paramExports = List.of(); + question.setAwaitingReturn(true); var message = connection.newOutgoingMessage(64); var builder = message.getBody().initAs(RpcProtocol.Message.factory).initBootstrap(); - builder.setQuestionId(question.id); + builder.setQuestionId(question.getId()); message.send(); var pipeline = new RpcPipeline(question); return pipeline.getPipelinedCap(new PipelineOp[0]); } - // run message loop once - final CompletableFuture runOnce() { + private final CompletableFuture doMessageLoop() { this.cleanupImports(); + this.cleanupQuestions(); if (isDisconnected()) { - return CompletableFuture.failedFuture(disconnected); - } - - if (!messageReady.isDone()) { - return messageReady; - } - - messageReady = connection.receiveIncomingMessage().thenAccept(message -> { - try { - handleMessage(message); - } - catch (Exception exc) { - this.disconnected = exc; - } - }).exceptionally(exc -> { - this.disconnected = exc; - return null; - }); - - return messageReady; - } - - // run message loop until promise is completed - public final CompletableFuture messageLoop(CompletableFuture done) { - this.cleanupImports(); - - if (done.isDone()) { - return done; - } - - if (isDisconnected()) { - done.completeExceptionally(disconnected); - return done; + return CompletableFuture.failedFuture(this.disconnected); } return connection.receiveIncomingMessage().thenCompose(message -> { try { handleMessage(message); + } catch (Throwable rpcExc) { + // either we received an Abort message from peer + // or internal RpcState is bad. + return this.disconnect(rpcExc); } - catch (Exception exc) { - done.completeExceptionally(exc); - } - return messageLoop(done); - }); + return this.doMessageLoop(); + + }).exceptionallyCompose(exc -> this.disconnect(exc)); } synchronized void handleMessage(IncomingRpcMessage message) throws RpcException { var reader = message.getBody().getAs(RpcProtocol.Message.factory); - System.out.println(reader.which()); switch (reader.which()) { case UNIMPLEMENTED: handleUnimplemented(reader.getUnimplemented()); @@ -437,7 +623,6 @@ final class RpcState { } void handleReturn(IncomingRpcMessage message, RpcProtocol.Return.Reader callReturn) { - var exportsToRelease = new ArrayList(); var question = questions.find(callReturn.getAnswerId()); if (question == null) { @@ -445,29 +630,35 @@ final class RpcState { return; } - if (!question.isAwaitingReturn) { + if (!question.isAwaitingReturn()) { assert false: "Duplicate Return"; return; } + question.setAwaitingReturn(false); - question.isAwaitingReturn = false; + var exportsToRelease = new int[0]; if (callReturn.getReleaseParamCaps()) { - exportsToRelease.addAll(question.paramExports); - question.paramExports = List.of(); + exportsToRelease = question.paramExports; + question.paramExports = new int[0]; } if (callReturn.isTakeFromOtherQuestion()) { - assert false: "Not implemented"; - // TODO process isTakeFromOtherQuestion... + var answer = this.answers.find(callReturn.getTakeFromOtherQuestion()); + if (answer != null) { + answer.redirectedResults = null; + } + //this.questions.erase(callReturn.getAnswerId()); + this.releaseExports(exportsToRelease); return; } switch (callReturn.which()) { case RESULTS: if (question.isTailCall) { - // TODO resultsSentElsewhere - return; + assert false: "Tail call `Return` must set `resultsSentElsewhere`, not `results`."; + break; } + var payload = callReturn.getResults(); var capTable = receiveCaps(payload.getCapTable(), message.getAttachedFds()); // TODO question, message unused in RpcResponseImpl @@ -478,7 +669,7 @@ final class RpcState { case EXCEPTION: if (question.isTailCall) { assert false: "Tail call `Return` must set `resultsSentElsewhere`, not `exception`."; - return; + break; } question.reject(RpcException.toException(callReturn.getException())); break; @@ -490,7 +681,7 @@ final class RpcState { case RESULTS_SENT_ELSEWHERE: if (!question.isTailCall) { assert false: "`Return` had `resultsSentElsewhere` but this was not a tail call."; - return; + break; } // Tail calls are fulfilled with a null pointer. question.answer(() -> null); @@ -501,11 +692,11 @@ final class RpcState { var answer = answers.find(other); if (answer == null) { assert false: "`Return.takeFromOtherQuestion` had invalid answer ID."; - return; + break; } if (answer.redirectedResults == null) { assert false: "`Return.takeFromOtherQuestion` referenced a call that did not use `sendResultsTo.yourself`."; - return; + break; } question.response = answer.redirectedResults.toCompletableFuture(); answer.redirectedResults = null; @@ -513,24 +704,24 @@ final class RpcState { default: assert false : "Unknown 'Return' type."; - return; + break; } + + this.releaseExports(exportsToRelease); } void handleFinish(RpcProtocol.Finish.Reader finish) { - List exportsToRelease = null; var answer = answers.find(finish.getQuestionId()); if (answer == null || !answer.active) { assert false: "'Finish' for invalid question ID."; return; } - if (finish.getReleaseResultCaps()) { - exportsToRelease = answer.resultExports; - } - answer.resultExports = null; + var exportsToRelease = finish.getReleaseResultCaps() + ? answer.resultExports + : null; - var pipelineToRelease = answer.pipeline; + answer.resultExports = null; answer.pipeline = null; // If the call isn't actually done yet, cancel it. Otherwise, we can go ahead and erase the @@ -540,13 +731,15 @@ final class RpcState { ctx.requestCancel(); } else { - answers.erase(finish.getQuestionId()); + var questionId = finish.getQuestionId(); + answers.erase(questionId); } + + this.releaseExports(exportsToRelease); } void handleResolve(IncomingRpcMessage message, RpcProtocol.Resolve.Reader resolve) { - - var imp = imports.find(resolve.getPromiseId()); + var imp = this.imports.find(resolve.getPromiseId()); if (imp == null) { return; } @@ -559,10 +752,12 @@ final class RpcState { switch (resolve.which()) { case CAP: - imp.promise.complete(receiveCap(resolve.getCap(), message.getAttachedFds())); + var cap = receiveCap(resolve.getCap(), message.getAttachedFds()); + imp.promise.complete(cap); break; case EXCEPTION: - imp.promise.completeExceptionally(RpcException.toException(resolve.getException())); + var exc = RpcException.toException(resolve.getException()); + imp.promise.completeExceptionally(exc); break; default: assert false; @@ -571,7 +766,7 @@ final class RpcState { } private void handleRelease(RpcProtocol.Release.Reader release) { - releaseExport(release.getId(), release.getReferenceCount()); + this.releaseExport(release.getId(), release.getReferenceCount()); } void handleDisembargo(RpcProtocol.Disembargo.Reader disembargo) { @@ -640,9 +835,9 @@ final class RpcState { } } - private List writeDescriptors(ClientHook[] capTable, RpcProtocol.Payload.Builder payload, List fds) { + private int[] writeDescriptors(ClientHook[] capTable, RpcProtocol.Payload.Builder payload, List fds) { if (capTable.length == 0) { - return List.of(); + return new int[0]; } var capTableBuilder = payload.initCapTable(capTable.length); @@ -655,14 +850,15 @@ final class RpcState { } var exportId = writeDescriptor(cap, capTableBuilder.get(ii), fds); - if (exportId != null) { - exports.add(exportId); - } + exports.add(exportId); } - return exports; + + return exports.stream() + .mapToInt(Integer::intValue) + .toArray(); } - private Integer writeDescriptor(ClientHook cap, RpcProtocol.CapDescriptor.Builder descriptor, List fds) { + private int writeDescriptor(ClientHook cap, RpcProtocol.CapDescriptor.Builder descriptor, List fds) { ClientHook inner = cap; for (;;) { var resolved = inner.getResolved(); @@ -709,7 +905,6 @@ final class RpcState { } CompletionStage resolveExportedPromise(int exportId, CompletionStage promise) { - return promise.thenCompose(resolution -> { if (isDisconnected()) { return CompletableFuture.completedFuture(null); @@ -764,6 +959,12 @@ final class RpcState { }); } + void releaseExports(int[] exports) { + for (var exportId : exports) { + this.releaseExport(exportId, 1); + } + } + void releaseExport(int exportId, int refcount) { var export = exports.find(exportId); if (export == null) { @@ -910,8 +1111,9 @@ final class RpcState { case PROMISED_ANSWER: var promisedAnswer = target.getPromisedAnswer(); - var base = answers.find(promisedAnswer.getQuestionId()); - if (base == null || !base.active) { + var questionId = promisedAnswer.getQuestionId(); + var base = answers.put(questionId); + if (!base.active) { assert false: "PromisedAnswer.questionId is not a current question."; return null; } @@ -995,7 +1197,7 @@ final class RpcState { return payload.getContent().imbue(capTable); } - List send() { + int[] send() { var capTable = this.capTable.getTable(); var fds = List.of(); var exports = writeDescriptors(capTable, payload, fds); @@ -1014,18 +1216,20 @@ final class RpcState { } } - private static final class LocallyRedirectedRpcResponse implements RpcServerResponse, RpcResponse { + private static final class LocallyRedirectedRpcResponse + implements RpcServerResponse, + RpcResponse { private final MessageBuilder message = new MessageBuilder(); @Override public AnyPointer.Builder getResultsBuilder() { - return message.getRoot(AnyPointer.factory); + return this.message.getRoot(AnyPointer.factory); } @Override public AnyPointer.Reader getResults() { - return getResultsBuilder().asReader(); + return this.getResultsBuilder().asReader(); } } @@ -1044,6 +1248,7 @@ final class RpcState { private RpcProtocol.Return.Builder returnMessage; private boolean redirectResults = false; private boolean responseSent = false; + private CompletableFuture tailCallPipelineFuture; private boolean cancelRequested = false; private boolean cancelAllowed = false; @@ -1074,14 +1279,17 @@ final class RpcState { } @Override - public AnyPointer.Builder getResults() { + public AnyPointer.Builder getResults(int sizeHint) { if (this.response == null) { if (this.redirectResults || isDisconnected()) { this.response = new LocallyRedirectedRpcResponse(); } else { - var message = connection.newOutgoingMessage(1024); + sizeHint += messageSizeHint() + + RpcProtocol.Payload.factory.structSize().total() + + RpcProtocol.Return.factory.structSize().total(); + var message = connection.newOutgoingMessage(sizeHint); this.returnMessage = message.getBody().initAs(RpcProtocol.Message.factory).initReturn(); this.response = new RpcServerResponseImpl(message, returnMessage.getResults()); } @@ -1091,8 +1299,12 @@ final class RpcState { } @Override - public CompletableFuture tailCall(RequestHook request) { - return null; + public CompletableFuture tailCall(RequestHook request) { + var result = this.directTailCall(request); + if (this.tailCallPipelineFuture != null) { + this.tailCallPipelineFuture.complete(result.pipeline); + } + return result.promise.toCompletableFuture().copy(); } @Override @@ -1134,7 +1346,7 @@ final class RpcState { this.returnMessage.setAnswerId(this.answerId); this.returnMessage.setReleaseParamCaps(false); - List exports = List.of(); + var exports = new int[0]; try { exports = ((RpcServerResponseImpl) response).send(); } catch (Throwable exc) { @@ -1143,7 +1355,7 @@ final class RpcState { } // If no caps in the results, the pipeline is irrelevant. - boolean shouldFreePipeline = exports.isEmpty(); + boolean shouldFreePipeline = exports.length == 0; cleanupAnswerTable(exports, shouldFreePipeline); } @@ -1163,7 +1375,7 @@ final class RpcState { message.send(); } - cleanupAnswerTable(List.of(), false); + cleanupAnswerTable(new int[0], false); } private boolean isFirstResponder() { @@ -1174,9 +1386,9 @@ final class RpcState { return true; } - private void cleanupAnswerTable(List resultExports, boolean shouldFreePipeline) { + private void cleanupAnswerTable(int[] resultExports, boolean shouldFreePipeline) { if (this.cancelRequested) { - assert resultExports.size() == 0; + assert resultExports.length == 0; answers.erase(this.answerId); return; } @@ -1186,7 +1398,7 @@ final class RpcState { answer.resultExports = resultExports; if (shouldFreePipeline) { - assert resultExports.size() == 0; + assert resultExports.length == 0; answer.pipeline = null; } } @@ -1320,15 +1532,22 @@ final class RpcState { class RpcRequest implements RequestHook { - final RpcClient target; - final OutgoingRpcMessage message; - final BuilderCapabilityTable capTable = new BuilderCapabilityTable(); - final RpcProtocol.Call.Builder callBuilder; - final AnyPointer.Builder paramsBuilder; + private final RpcClient target; + private final OutgoingRpcMessage message; + private final BuilderCapabilityTable capTable = new BuilderCapabilityTable(); + private final RpcProtocol.Call.Builder callBuilder; + private final AnyPointer.Builder paramsBuilder; RpcRequest(RpcClient target) { + this(target, 0); + } + + RpcRequest(RpcClient target, int sizeHint) { this.target = target; - this.message = connection.newOutgoingMessage(1024); + sizeHint += RpcProtocol.Call.factory.structSize().total() + + RpcProtocol.Payload.factory.structSize().total() + + MESSAGE_TARGET_SIZE_HINT; + this.message = connection.newOutgoingMessage(sizeHint); this.callBuilder = message.getBody().getAs(RpcProtocol.Message.factory).initCall(); this.paramsBuilder = callBuilder.getParams().getContent().imbue(this.capTable); } @@ -1355,15 +1574,20 @@ final class RpcState { return replacement.hook.send(); } - var question = sendInternal(false); + final var question = sendInternal(false); // The pipeline must get notified of resolution before the app does to maintain ordering. var pipeline = new RpcPipeline(question, question.response); - var appPromise = question.response.thenApply(hook -> { - return new Response<>(hook.getResults(), hook); - }); - return new RemotePromise<>(appPromise, pipeline); + var appPromise = question.response.thenApply( + hook -> new Response<>(hook.getResults(), hook)); + + // complete when either the message loop completes (exceptionally) or + // the appPromise is fulfilled + var loop = CompletableFuture.anyOf( + getMessageLoop(), appPromise).thenCompose(x -> appPromise); + + return new RemotePromise<>(loop, pipeline); } @Override @@ -1378,19 +1602,19 @@ final class RpcState { var exports = writeDescriptors(capTable.getTable(), callBuilder.getParams(), fds); message.setFds(fds); var question = questions.next(); - question.isAwaitingReturn = true; + question.setAwaitingReturn(true); question.isTailCall = isTailCall; question.paramExports = exports; - callBuilder.setQuestionId(question.id); + callBuilder.setQuestionId(question.getId()); if (isTailCall) { callBuilder.getSendResultsTo().getYourself(); } try { message.send(); } catch (Exception exc) { - question.isAwaitingReturn = false; - question.skipFinish = true; + question.setAwaitingReturn(false); + question.setSkipFinish(true); question.reject(exc); } return question; @@ -1483,6 +1707,16 @@ final class RpcState { } } + private void cleanupQuestions() { + while (true) { + var ref = (QuestionRef)this.questionRefQueue.poll(); + if (ref == null) { + break; + } + ref.dispose(); + } + } + enum ResolutionType { UNRESOLVED, REMOTE, @@ -1491,16 +1725,17 @@ final class RpcState { BROKEN } - class PromiseClient extends RpcClient { - final ClientHook cap; - final Integer importId; - final CompletableFuture promise; - boolean receivedCall = false; - ResolutionType resolutionType = ResolutionType.UNRESOLVED; + private class PromiseClient extends RpcClient { - public PromiseClient(RpcClient initial, - CompletableFuture eventual, - Integer importId) { + private final ClientHook cap; + private final Integer importId; + private final CompletableFuture promise; + private boolean receivedCall = false; + private ResolutionType resolutionType = ResolutionType.UNRESOLVED; + + PromiseClient(RpcClient initial, + CompletableFuture eventual, + Integer importId) { this.cap = initial; this.importId = importId; this.promise = eventual.thenApply(resolution -> resolve(resolution)); @@ -1538,8 +1773,8 @@ final class RpcState { } } else { - if (replacementBrand == NULL_CAPABILITY_BRAND || - replacementBrand == BROKEN_CAPABILITY_BRAND) { + if (replacementBrand == NULL_CAPABILITY_BRAND + || replacementBrand == BROKEN_CAPABILITY_BRAND) { resolutionType = ResolutionType.BROKEN; } else { @@ -1554,25 +1789,19 @@ final class RpcState { if (resolutionType == ResolutionType.REFLECTED && receivedCall && !isDisconnected()) { var message = connection.newOutgoingMessage(1024); var disembargo = message.getBody().initAs(RpcProtocol.Message.factory).initDisembargo(); - { - var redirect = RpcState.this.writeTarget(cap, disembargo.initTarget()); - assert redirect == null; - } + var redirect = RpcState.this.writeTarget(cap, disembargo.initTarget()); + assert redirect == null; var embargo = embargos.next(); + embargo.disembargo = new CompletableFuture<>(); disembargo.getContext().setSenderLoopback(embargo.id); - embargo.disembargo = new CompletableFuture<>(); - final ClientHook finalReplacement = replacement; - var embargoPromise = embargo.disembargo.thenApply(x -> { - return finalReplacement; - }); - + var embargoPromise = embargo.disembargo.thenApply(x -> finalReplacement); replacement = Capability.newLocalPromiseClient(embargoPromise); message.send(); - } + return replacement; } @@ -1587,19 +1816,19 @@ final class RpcState { @Override public Integer writeDescriptor(RpcProtocol.CapDescriptor.Builder target, List fds) { - receivedCall = true; + this.receivedCall = true; return RpcState.this.writeDescriptor(cap, target, fds); } @Override public ClientHook writeTarget(RpcProtocol.MessageTarget.Builder target) { - receivedCall = true; + this.receivedCall = true; return RpcState.this.writeTarget(cap, target); } @Override public ClientHook getInnermostClient() { - receivedCall = true; + this.receivedCall = true; return RpcState.this.getInnermostClient(cap); } @@ -1609,7 +1838,7 @@ final class RpcState { } } - class PipelineClient extends RpcClient { + private class PipelineClient extends RpcClient { private final Question question; private final PipelineOp[] ops; @@ -1632,7 +1861,7 @@ final class RpcState { @Override public Integer writeDescriptor(RpcProtocol.CapDescriptor.Builder descriptor, List fds) { var promisedAnswer = descriptor.initReceiverAnswer(); - promisedAnswer.setQuestionId(question.id); + promisedAnswer.setQuestionId(question.getId()); PipelineOp.FromPipelineOps(ops, promisedAnswer); return null; } @@ -1640,7 +1869,7 @@ final class RpcState { @Override public ClientHook writeTarget(RpcProtocol.MessageTarget.Builder target) { var builder = target.initPromisedAnswer(); - builder.setQuestionId(question.id); + builder.setQuestionId(question.getId()); PipelineOp.FromPipelineOps(ops, builder); return null; } diff --git a/runtime/src/main/java/org/capnproto/RpcSystem.java b/runtime/src/main/java/org/capnproto/RpcSystem.java index 69624d9..a47bdea 100644 --- a/runtime/src/main/java/org/capnproto/RpcSystem.java +++ b/runtime/src/main/java/org/capnproto/RpcSystem.java @@ -9,11 +9,22 @@ public abstract class RpcSystem { final VatNetwork network; final Capability.Client bootstrapInterface; final Map connections = new HashMap<>(); - CompletableFuture acceptCompleted = CompletableFuture.completedFuture(null); + final CompletableFuture messageLoop; + final CompletableFuture acceptLoop; public RpcSystem(VatNetwork network, Capability.Client bootstrapInterface) { this.network = network; this.bootstrapInterface = bootstrapInterface; + this.acceptLoop = doAcceptLoop(); + this.messageLoop = doMessageLoop(); + } + + public CompletableFuture getMessageLoop() { + return this.messageLoop; + } + + private CompletableFuture getAcceptLoop() { + return this.acceptLoop; } public void accept(VatNetwork.Connection connection) { @@ -21,24 +32,27 @@ public abstract class RpcSystem { } synchronized RpcState getConnectionState(VatNetwork.Connection connection) { + + var onDisconnect = new CompletableFuture().thenAccept(lostConnection -> { + this.connections.remove(lostConnection); + }); + return connections.computeIfAbsent(connection, key -> - new RpcState(key, bootstrapInterface)); + new RpcState(bootstrapInterface, connection, onDisconnect)); } - public final CompletableFuture runOnce() { - var done = acceptLoop(); + private final CompletableFuture doAcceptLoop() { + return this.network.baseAccept().thenCompose(connection -> { + this.accept(connection); + return this.doAcceptLoop(); + }); + } + + private final CompletableFuture doMessageLoop() { + var accept = this.getAcceptLoop(); for (var conn : connections.values()) { - done = CompletableFuture.anyOf(done, conn.runOnce()); + accept = accept.acceptEither(conn.getMessageLoop(), x -> {}); } - return done; - } - - - CompletableFuture acceptLoop() { - if (this.acceptCompleted.isDone()) { - var accepted = this.network.baseAccept(); - this.acceptCompleted = accepted.thenAccept(this::accept); - } - return this.acceptCompleted; + return accept.thenCompose(x -> this.doMessageLoop()); } } diff --git a/runtime/src/main/java/org/capnproto/Schema.java b/runtime/src/main/java/org/capnproto/Schema.java new file mode 100644 index 0000000..bca5e0c --- /dev/null +++ b/runtime/src/main/java/org/capnproto/Schema.java @@ -0,0 +1,7916 @@ +// Generated by Cap'n Proto compiler, DO NOT EDIT +// source: schema.capnp + +package org.capnproto; + +public final class Schema { + public static class Node { + public static final org.capnproto.StructSize STRUCT_SIZE = new org.capnproto.StructSize((short)5,(short)6); + public static final class Factory + extends org.capnproto.StructFactory + implements org.capnproto.PipelineFactory { + public Factory() { + } + public final Reader constructReader(org.capnproto.SegmentReader segment, int data,int pointers, int dataSize, short pointerCount, int nestingLimit) { + return new Reader(segment,data,pointers,dataSize,pointerCount,nestingLimit); + } + public final Builder constructBuilder(org.capnproto.SegmentBuilder segment, int data,int pointers, int dataSize, short pointerCount) { + return new Builder(segment, data, pointers, dataSize, pointerCount); + } + public final org.capnproto.StructSize structSize() { + return Node.STRUCT_SIZE; + } + public final Reader asReader(Builder builder) { + return builder.asReader(); + } + public Pipeline newPipeline(org.capnproto.RemotePromise promise) { + return new Pipeline(promise); + } + } + public static final Factory factory = new Factory(); + public static final org.capnproto.StructList.Factory listFactory = + new org.capnproto.StructList.Factory(factory); + public static final class Builder extends org.capnproto.StructBuilder { + Builder(org.capnproto.SegmentBuilder segment, int data, int pointers,int dataSize, short pointerCount){ + super(segment, data, pointers, dataSize, pointerCount); + } + public Which which() { + switch(_getShortField(6)) { + case 0 : return Which.FILE; + case 1 : return Which.STRUCT; + case 2 : return Which.ENUM; + case 3 : return Which.INTERFACE; + case 4 : return Which.CONST; + case 5 : return Which.ANNOTATION; + default: return Which._NOT_IN_SCHEMA; + } + } + public final Reader asReader() { + return new Reader(segment, data, pointers, dataSize, pointerCount, 0x7fffffff); + } + public final long getId() { + return _getLongField(0); + } + public final void setId(long value) { + _setLongField(0, value); + } + + public final boolean hasDisplayName() { + return !_pointerFieldIsNull(0); + } + public final org.capnproto.Text.Builder getDisplayName() { + return _getPointerField(org.capnproto.Text.factory, 0, null, 0, 0); + } + public final void setDisplayName(org.capnproto.Text.Reader value) { + _setPointerField(org.capnproto.Text.factory, 0, value); + } + public final void setDisplayName(String value) { + _setPointerField(org.capnproto.Text.factory, 0, new org.capnproto.Text.Reader(value)); + } + public final org.capnproto.Text.Builder initDisplayName(int size) { + return _initPointerField(org.capnproto.Text.factory, 0, size); + } + public final int getDisplayNamePrefixLength() { + return _getIntField(2); + } + public final void setDisplayNamePrefixLength(int value) { + _setIntField(2, value); + } + + public final long getScopeId() { + return _getLongField(2); + } + public final void setScopeId(long value) { + _setLongField(2, value); + } + + public final boolean hasNestedNodes() { + return !_pointerFieldIsNull(1); + } + public final org.capnproto.StructList.Builder getNestedNodes() { + return _getPointerField(org.capnproto.Schema.Node.NestedNode.listFactory, 1, null, 0); + } + public final void setNestedNodes(org.capnproto.StructList.Reader value) { + _setPointerField(org.capnproto.Schema.Node.NestedNode.listFactory, 1, value); + } + public final org.capnproto.StructList.Builder initNestedNodes(int size) { + return _initPointerField(org.capnproto.Schema.Node.NestedNode.listFactory, 1, size); + } + public final boolean hasAnnotations() { + return !_pointerFieldIsNull(2); + } + public final org.capnproto.StructList.Builder getAnnotations() { + return _getPointerField(org.capnproto.Schema.Annotation.listFactory, 2, null, 0); + } + public final void setAnnotations(org.capnproto.StructList.Reader value) { + _setPointerField(org.capnproto.Schema.Annotation.listFactory, 2, value); + } + public final org.capnproto.StructList.Builder initAnnotations(int size) { + return _initPointerField(org.capnproto.Schema.Annotation.listFactory, 2, size); + } + public final boolean isFile() { + return which() == Node.Which.FILE; + } + public final org.capnproto.Void getFile() { + assert which() == Node.Which.FILE: + "Must check which() before get()ing a union member."; + return org.capnproto.Void.VOID; + } + public final void setFile(org.capnproto.Void value) { + _setShortField(6, (short)Node.Which.FILE.ordinal()); + } + + public final boolean isStruct() { + return which() == Node.Which.STRUCT; + } + public final Struct.Builder getStruct() { + return new Node.Struct.Builder(segment, data, pointers, dataSize, pointerCount); + } + public final Struct.Builder initStruct() { + _setShortField(6, (short)Node.Which.STRUCT.ordinal()); + _setShortField(7,(short)0); + _setShortField(12,(short)0); + _setShortField(13,(short)0); + _setBooleanField(224,false); + _setShortField(15,(short)0); + _setIntField(8,0); + _clearPointerField(3); + return new Node.Struct.Builder(segment, data, pointers, dataSize, pointerCount); + } + + public final boolean isEnum() { + return which() == Node.Which.ENUM; + } + public final Enum.Builder getEnum() { + return new Node.Enum.Builder(segment, data, pointers, dataSize, pointerCount); + } + public final Enum.Builder initEnum() { + _setShortField(6, (short)Node.Which.ENUM.ordinal()); + _clearPointerField(3); + return new Node.Enum.Builder(segment, data, pointers, dataSize, pointerCount); + } + + public final boolean isInterface() { + return which() == Node.Which.INTERFACE; + } + public final Interface.Builder getInterface() { + return new Node.Interface.Builder(segment, data, pointers, dataSize, pointerCount); + } + public final Interface.Builder initInterface() { + _setShortField(6, (short)Node.Which.INTERFACE.ordinal()); + _clearPointerField(3); + _clearPointerField(4); + return new Node.Interface.Builder(segment, data, pointers, dataSize, pointerCount); + } + + public final boolean isConst() { + return which() == Node.Which.CONST; + } + public final Const.Builder getConst() { + return new Node.Const.Builder(segment, data, pointers, dataSize, pointerCount); + } + public final Const.Builder initConst() { + _setShortField(6, (short)Node.Which.CONST.ordinal()); + _clearPointerField(3); + _clearPointerField(4); + return new Node.Const.Builder(segment, data, pointers, dataSize, pointerCount); + } + + public final boolean isAnnotation() { + return which() == Node.Which.ANNOTATION; + } + public final Annotation.Builder getAnnotation() { + return new Node.Annotation.Builder(segment, data, pointers, dataSize, pointerCount); + } + public final Annotation.Builder initAnnotation() { + _setShortField(6, (short)Node.Which.ANNOTATION.ordinal()); + _setBooleanField(112,false); + _setBooleanField(113,false); + _setBooleanField(114,false); + _setBooleanField(115,false); + _setBooleanField(116,false); + _setBooleanField(117,false); + _setBooleanField(118,false); + _setBooleanField(119,false); + _setBooleanField(120,false); + _setBooleanField(121,false); + _setBooleanField(122,false); + _setBooleanField(123,false); + _clearPointerField(3); + return new Node.Annotation.Builder(segment, data, pointers, dataSize, pointerCount); + } + + public final boolean hasParameters() { + return !_pointerFieldIsNull(5); + } + public final org.capnproto.StructList.Builder getParameters() { + return _getPointerField(org.capnproto.Schema.Node.Parameter.listFactory, 5, null, 0); + } + public final void setParameters(org.capnproto.StructList.Reader value) { + _setPointerField(org.capnproto.Schema.Node.Parameter.listFactory, 5, value); + } + public final org.capnproto.StructList.Builder initParameters(int size) { + return _initPointerField(org.capnproto.Schema.Node.Parameter.listFactory, 5, size); + } + public final boolean getIsGeneric() { + return _getBooleanField(288); + } + public final void setIsGeneric(boolean value) { + _setBooleanField(288, value); + } + + } + + public static final class Reader extends org.capnproto.StructReader { + Reader(org.capnproto.SegmentReader segment, int data, int pointers,int dataSize, short pointerCount, int nestingLimit){ + super(segment, data, pointers, dataSize, pointerCount, nestingLimit); + } + + public Which which() { + switch(_getShortField(6)) { + case 0 : return Which.FILE; + case 1 : return Which.STRUCT; + case 2 : return Which.ENUM; + case 3 : return Which.INTERFACE; + case 4 : return Which.CONST; + case 5 : return Which.ANNOTATION; + default: return Which._NOT_IN_SCHEMA; + } + } + public final long getId() { + return _getLongField(0); + } + + public boolean hasDisplayName() { + return !_pointerFieldIsNull(0); + } + public org.capnproto.Text.Reader getDisplayName() { + return _getPointerField(org.capnproto.Text.factory, 0, null, 0, 0); + } + + public final int getDisplayNamePrefixLength() { + return _getIntField(2); + } + + public final long getScopeId() { + return _getLongField(2); + } + + public final boolean hasNestedNodes() { + return !_pointerFieldIsNull(1); + } + public final org.capnproto.StructList.Reader getNestedNodes() { + return _getPointerField(org.capnproto.Schema.Node.NestedNode.listFactory, 1, null, 0); + } + + public final boolean hasAnnotations() { + return !_pointerFieldIsNull(2); + } + public final org.capnproto.StructList.Reader getAnnotations() { + return _getPointerField(org.capnproto.Schema.Annotation.listFactory, 2, null, 0); + } + + public final boolean isFile() { + return which() == Node.Which.FILE; + } + public final org.capnproto.Void getFile() { + assert which() == Node.Which.FILE: + "Must check which() before get()ing a union member."; + return org.capnproto.Void.VOID; + } + + public final boolean isStruct() { + return which() == Node.Which.STRUCT; + } + public Struct.Reader getStruct() { + return new Node.Struct.Reader(segment, data, pointers, dataSize, pointerCount, nestingLimit); + } + + public final boolean isEnum() { + return which() == Node.Which.ENUM; + } + public Enum.Reader getEnum() { + return new Node.Enum.Reader(segment, data, pointers, dataSize, pointerCount, nestingLimit); + } + + public final boolean isInterface() { + return which() == Node.Which.INTERFACE; + } + public Interface.Reader getInterface() { + return new Node.Interface.Reader(segment, data, pointers, dataSize, pointerCount, nestingLimit); + } + + public final boolean isConst() { + return which() == Node.Which.CONST; + } + public Const.Reader getConst() { + return new Node.Const.Reader(segment, data, pointers, dataSize, pointerCount, nestingLimit); + } + + public final boolean isAnnotation() { + return which() == Node.Which.ANNOTATION; + } + public Annotation.Reader getAnnotation() { + return new Node.Annotation.Reader(segment, data, pointers, dataSize, pointerCount, nestingLimit); + } + + public final boolean hasParameters() { + return !_pointerFieldIsNull(5); + } + public final org.capnproto.StructList.Reader getParameters() { + return _getPointerField(org.capnproto.Schema.Node.Parameter.listFactory, 5, null, 0); + } + + public final boolean getIsGeneric() { + return _getBooleanField(288); + } + + } + + public enum Which { + FILE, + STRUCT, + ENUM, + INTERFACE, + CONST, + ANNOTATION, + _NOT_IN_SCHEMA, + } + public static class Parameter { + public static final org.capnproto.StructSize STRUCT_SIZE = new org.capnproto.StructSize((short)0,(short)1); + public static final class Factory + extends org.capnproto.StructFactory + implements org.capnproto.PipelineFactory { + public Factory() { + } + public final Reader constructReader(org.capnproto.SegmentReader segment, int data,int pointers, int dataSize, short pointerCount, int nestingLimit) { + return new Reader(segment,data,pointers,dataSize,pointerCount,nestingLimit); + } + public final Builder constructBuilder(org.capnproto.SegmentBuilder segment, int data,int pointers, int dataSize, short pointerCount) { + return new Builder(segment, data, pointers, dataSize, pointerCount); + } + public final org.capnproto.StructSize structSize() { + return Node.Parameter.STRUCT_SIZE; + } + public final Reader asReader(Builder builder) { + return builder.asReader(); + } + public Pipeline newPipeline(org.capnproto.RemotePromise promise) { + return new Pipeline(promise); + } + } + public static final Factory factory = new Factory(); + public static final org.capnproto.StructList.Factory listFactory = + new org.capnproto.StructList.Factory(factory); + public static final class Builder extends org.capnproto.StructBuilder { + Builder(org.capnproto.SegmentBuilder segment, int data, int pointers,int dataSize, short pointerCount){ + super(segment, data, pointers, dataSize, pointerCount); + } + public final Reader asReader() { + return new Reader(segment, data, pointers, dataSize, pointerCount, 0x7fffffff); + } + public final boolean hasName() { + return !_pointerFieldIsNull(0); + } + public final org.capnproto.Text.Builder getName() { + return _getPointerField(org.capnproto.Text.factory, 0, null, 0, 0); + } + public final void setName(org.capnproto.Text.Reader value) { + _setPointerField(org.capnproto.Text.factory, 0, value); + } + public final void setName(String value) { + _setPointerField(org.capnproto.Text.factory, 0, new org.capnproto.Text.Reader(value)); + } + public final org.capnproto.Text.Builder initName(int size) { + return _initPointerField(org.capnproto.Text.factory, 0, size); + } + } + + public static final class Reader extends org.capnproto.StructReader { + Reader(org.capnproto.SegmentReader segment, int data, int pointers,int dataSize, short pointerCount, int nestingLimit){ + super(segment, data, pointers, dataSize, pointerCount, nestingLimit); + } + + public boolean hasName() { + return !_pointerFieldIsNull(0); + } + public org.capnproto.Text.Reader getName() { + return _getPointerField(org.capnproto.Text.factory, 0, null, 0, 0); + } + + } + + public static class Pipeline extends org.capnproto.Pipeline { + public Pipeline(org.capnproto.RemotePromise remotePromise) { + super(org.capnproto.RemotePromise.fromTypeless(factory, remotePromise)); + } + } + } + + public static class NestedNode { + public static final org.capnproto.StructSize STRUCT_SIZE = new org.capnproto.StructSize((short)1,(short)1); + public static final class Factory + extends org.capnproto.StructFactory + implements org.capnproto.PipelineFactory { + public Factory() { + } + public final Reader constructReader(org.capnproto.SegmentReader segment, int data,int pointers, int dataSize, short pointerCount, int nestingLimit) { + return new Reader(segment,data,pointers,dataSize,pointerCount,nestingLimit); + } + public final Builder constructBuilder(org.capnproto.SegmentBuilder segment, int data,int pointers, int dataSize, short pointerCount) { + return new Builder(segment, data, pointers, dataSize, pointerCount); + } + public final org.capnproto.StructSize structSize() { + return Node.NestedNode.STRUCT_SIZE; + } + public final Reader asReader(Builder builder) { + return builder.asReader(); + } + public Pipeline newPipeline(org.capnproto.RemotePromise promise) { + return new Pipeline(promise); + } + } + public static final Factory factory = new Factory(); + public static final org.capnproto.StructList.Factory listFactory = + new org.capnproto.StructList.Factory(factory); + public static final class Builder extends org.capnproto.StructBuilder { + Builder(org.capnproto.SegmentBuilder segment, int data, int pointers,int dataSize, short pointerCount){ + super(segment, data, pointers, dataSize, pointerCount); + } + public final Reader asReader() { + return new Reader(segment, data, pointers, dataSize, pointerCount, 0x7fffffff); + } + public final boolean hasName() { + return !_pointerFieldIsNull(0); + } + public final org.capnproto.Text.Builder getName() { + return _getPointerField(org.capnproto.Text.factory, 0, null, 0, 0); + } + public final void setName(org.capnproto.Text.Reader value) { + _setPointerField(org.capnproto.Text.factory, 0, value); + } + public final void setName(String value) { + _setPointerField(org.capnproto.Text.factory, 0, new org.capnproto.Text.Reader(value)); + } + public final org.capnproto.Text.Builder initName(int size) { + return _initPointerField(org.capnproto.Text.factory, 0, size); + } + public final long getId() { + return _getLongField(0); + } + public final void setId(long value) { + _setLongField(0, value); + } + + } + + public static final class Reader extends org.capnproto.StructReader { + Reader(org.capnproto.SegmentReader segment, int data, int pointers,int dataSize, short pointerCount, int nestingLimit){ + super(segment, data, pointers, dataSize, pointerCount, nestingLimit); + } + + public boolean hasName() { + return !_pointerFieldIsNull(0); + } + public org.capnproto.Text.Reader getName() { + return _getPointerField(org.capnproto.Text.factory, 0, null, 0, 0); + } + + public final long getId() { + return _getLongField(0); + } + + } + + public static class Pipeline extends org.capnproto.Pipeline { + public Pipeline(org.capnproto.RemotePromise remotePromise) { + super(org.capnproto.RemotePromise.fromTypeless(factory, remotePromise)); + } + } + } + + public static class SourceInfo { + public static final org.capnproto.StructSize STRUCT_SIZE = new org.capnproto.StructSize((short)1,(short)2); + public static final class Factory + extends org.capnproto.StructFactory + implements org.capnproto.PipelineFactory { + public Factory() { + } + public final Reader constructReader(org.capnproto.SegmentReader segment, int data,int pointers, int dataSize, short pointerCount, int nestingLimit) { + return new Reader(segment,data,pointers,dataSize,pointerCount,nestingLimit); + } + public final Builder constructBuilder(org.capnproto.SegmentBuilder segment, int data,int pointers, int dataSize, short pointerCount) { + return new Builder(segment, data, pointers, dataSize, pointerCount); + } + public final org.capnproto.StructSize structSize() { + return Node.SourceInfo.STRUCT_SIZE; + } + public final Reader asReader(Builder builder) { + return builder.asReader(); + } + public Pipeline newPipeline(org.capnproto.RemotePromise promise) { + return new Pipeline(promise); + } + } + public static final Factory factory = new Factory(); + public static final org.capnproto.StructList.Factory listFactory = + new org.capnproto.StructList.Factory(factory); + public static final class Builder extends org.capnproto.StructBuilder { + Builder(org.capnproto.SegmentBuilder segment, int data, int pointers,int dataSize, short pointerCount){ + super(segment, data, pointers, dataSize, pointerCount); + } + public final Reader asReader() { + return new Reader(segment, data, pointers, dataSize, pointerCount, 0x7fffffff); + } + public final long getId() { + return _getLongField(0); + } + public final void setId(long value) { + _setLongField(0, value); + } + + public final boolean hasDocComment() { + return !_pointerFieldIsNull(0); + } + public final org.capnproto.Text.Builder getDocComment() { + return _getPointerField(org.capnproto.Text.factory, 0, null, 0, 0); + } + public final void setDocComment(org.capnproto.Text.Reader value) { + _setPointerField(org.capnproto.Text.factory, 0, value); + } + public final void setDocComment(String value) { + _setPointerField(org.capnproto.Text.factory, 0, new org.capnproto.Text.Reader(value)); + } + public final org.capnproto.Text.Builder initDocComment(int size) { + return _initPointerField(org.capnproto.Text.factory, 0, size); + } + public final boolean hasMembers() { + return !_pointerFieldIsNull(1); + } + public final org.capnproto.StructList.Builder getMembers() { + return _getPointerField(org.capnproto.Schema.Node.SourceInfo.Member.listFactory, 1, null, 0); + } + public final void setMembers(org.capnproto.StructList.Reader value) { + _setPointerField(org.capnproto.Schema.Node.SourceInfo.Member.listFactory, 1, value); + } + public final org.capnproto.StructList.Builder initMembers(int size) { + return _initPointerField(org.capnproto.Schema.Node.SourceInfo.Member.listFactory, 1, size); + } + } + + public static final class Reader extends org.capnproto.StructReader { + Reader(org.capnproto.SegmentReader segment, int data, int pointers,int dataSize, short pointerCount, int nestingLimit){ + super(segment, data, pointers, dataSize, pointerCount, nestingLimit); + } + + public final long getId() { + return _getLongField(0); + } + + public boolean hasDocComment() { + return !_pointerFieldIsNull(0); + } + public org.capnproto.Text.Reader getDocComment() { + return _getPointerField(org.capnproto.Text.factory, 0, null, 0, 0); + } + + public final boolean hasMembers() { + return !_pointerFieldIsNull(1); + } + public final org.capnproto.StructList.Reader getMembers() { + return _getPointerField(org.capnproto.Schema.Node.SourceInfo.Member.listFactory, 1, null, 0); + } + + } + + public static class Member { + public static final org.capnproto.StructSize STRUCT_SIZE = new org.capnproto.StructSize((short)0,(short)1); + public static final class Factory + extends org.capnproto.StructFactory + implements org.capnproto.PipelineFactory { + public Factory() { + } + public final Reader constructReader(org.capnproto.SegmentReader segment, int data,int pointers, int dataSize, short pointerCount, int nestingLimit) { + return new Reader(segment,data,pointers,dataSize,pointerCount,nestingLimit); + } + public final Builder constructBuilder(org.capnproto.SegmentBuilder segment, int data,int pointers, int dataSize, short pointerCount) { + return new Builder(segment, data, pointers, dataSize, pointerCount); + } + public final org.capnproto.StructSize structSize() { + return Node.SourceInfo.Member.STRUCT_SIZE; + } + public final Reader asReader(Builder builder) { + return builder.asReader(); + } + public Pipeline newPipeline(org.capnproto.RemotePromise promise) { + return new Pipeline(promise); + } + } + public static final Factory factory = new Factory(); + public static final org.capnproto.StructList.Factory listFactory = + new org.capnproto.StructList.Factory(factory); + public static final class Builder extends org.capnproto.StructBuilder { + Builder(org.capnproto.SegmentBuilder segment, int data, int pointers,int dataSize, short pointerCount){ + super(segment, data, pointers, dataSize, pointerCount); + } + public final Reader asReader() { + return new Reader(segment, data, pointers, dataSize, pointerCount, 0x7fffffff); + } + public final boolean hasDocComment() { + return !_pointerFieldIsNull(0); + } + public final org.capnproto.Text.Builder getDocComment() { + return _getPointerField(org.capnproto.Text.factory, 0, null, 0, 0); + } + public final void setDocComment(org.capnproto.Text.Reader value) { + _setPointerField(org.capnproto.Text.factory, 0, value); + } + public final void setDocComment(String value) { + _setPointerField(org.capnproto.Text.factory, 0, new org.capnproto.Text.Reader(value)); + } + public final org.capnproto.Text.Builder initDocComment(int size) { + return _initPointerField(org.capnproto.Text.factory, 0, size); + } + } + + public static final class Reader extends org.capnproto.StructReader { + Reader(org.capnproto.SegmentReader segment, int data, int pointers,int dataSize, short pointerCount, int nestingLimit){ + super(segment, data, pointers, dataSize, pointerCount, nestingLimit); + } + + public boolean hasDocComment() { + return !_pointerFieldIsNull(0); + } + public org.capnproto.Text.Reader getDocComment() { + return _getPointerField(org.capnproto.Text.factory, 0, null, 0, 0); + } + + } + + public static class Pipeline extends org.capnproto.Pipeline { + public Pipeline(org.capnproto.RemotePromise remotePromise) { + super(org.capnproto.RemotePromise.fromTypeless(factory, remotePromise)); + } + } + } + + public static class Pipeline extends org.capnproto.Pipeline { + public Pipeline(org.capnproto.RemotePromise remotePromise) { + super(org.capnproto.RemotePromise.fromTypeless(factory, remotePromise)); + } + } + } + + public static class Struct { + public static final org.capnproto.StructSize STRUCT_SIZE = new org.capnproto.StructSize((short)5,(short)6); + public static final class Factory + extends org.capnproto.StructFactory + implements org.capnproto.PipelineFactory { + public Factory() { + } + public final Reader constructReader(org.capnproto.SegmentReader segment, int data,int pointers, int dataSize, short pointerCount, int nestingLimit) { + return new Reader(segment,data,pointers,dataSize,pointerCount,nestingLimit); + } + public final Builder constructBuilder(org.capnproto.SegmentBuilder segment, int data,int pointers, int dataSize, short pointerCount) { + return new Builder(segment, data, pointers, dataSize, pointerCount); + } + public final org.capnproto.StructSize structSize() { + return Node.Struct.STRUCT_SIZE; + } + public final Reader asReader(Builder builder) { + return builder.asReader(); + } + public Pipeline newPipeline(org.capnproto.RemotePromise promise) { + return new Pipeline(promise); + } + } + public static final Factory factory = new Factory(); + public static final org.capnproto.StructList.Factory listFactory = + new org.capnproto.StructList.Factory(factory); + public static final class Builder extends org.capnproto.StructBuilder { + Builder(org.capnproto.SegmentBuilder segment, int data, int pointers,int dataSize, short pointerCount){ + super(segment, data, pointers, dataSize, pointerCount); + } + public final Reader asReader() { + return new Reader(segment, data, pointers, dataSize, pointerCount, 0x7fffffff); + } + public final short getDataWordCount() { + return _getShortField(7); + } + public final void setDataWordCount(short value) { + _setShortField(7, value); + } + + public final short getPointerCount() { + return _getShortField(12); + } + public final void setPointerCount(short value) { + _setShortField(12, value); + } + + public final org.capnproto.Schema.ElementSize getPreferredListEncoding() { + switch(_getShortField(13)) { + case 0 : return org.capnproto.Schema.ElementSize.EMPTY; + case 1 : return org.capnproto.Schema.ElementSize.BIT; + case 2 : return org.capnproto.Schema.ElementSize.BYTE; + case 3 : return org.capnproto.Schema.ElementSize.TWO_BYTES; + case 4 : return org.capnproto.Schema.ElementSize.FOUR_BYTES; + case 5 : return org.capnproto.Schema.ElementSize.EIGHT_BYTES; + case 6 : return org.capnproto.Schema.ElementSize.POINTER; + case 7 : return org.capnproto.Schema.ElementSize.INLINE_COMPOSITE; + default: return org.capnproto.Schema.ElementSize._NOT_IN_SCHEMA; + } + } + public final void setPreferredListEncoding(org.capnproto.Schema.ElementSize value) { + _setShortField(13, (short)value.ordinal()); + } + + public final boolean getIsGroup() { + return _getBooleanField(224); + } + public final void setIsGroup(boolean value) { + _setBooleanField(224, value); + } + + public final short getDiscriminantCount() { + return _getShortField(15); + } + public final void setDiscriminantCount(short value) { + _setShortField(15, value); + } + + public final int getDiscriminantOffset() { + return _getIntField(8); + } + public final void setDiscriminantOffset(int value) { + _setIntField(8, value); + } + + public final boolean hasFields() { + return !_pointerFieldIsNull(3); + } + public final org.capnproto.StructList.Builder getFields() { + return _getPointerField(org.capnproto.Schema.Field.listFactory, 3, null, 0); + } + public final void setFields(org.capnproto.StructList.Reader value) { + _setPointerField(org.capnproto.Schema.Field.listFactory, 3, value); + } + public final org.capnproto.StructList.Builder initFields(int size) { + return _initPointerField(org.capnproto.Schema.Field.listFactory, 3, size); + } + } + + public static final class Reader extends org.capnproto.StructReader { + Reader(org.capnproto.SegmentReader segment, int data, int pointers,int dataSize, short pointerCount, int nestingLimit){ + super(segment, data, pointers, dataSize, pointerCount, nestingLimit); + } + + public final short getDataWordCount() { + return _getShortField(7); + } + + public final short getPointerCount() { + return _getShortField(12); + } + + public final org.capnproto.Schema.ElementSize getPreferredListEncoding() { + switch(_getShortField(13)) { + case 0 : return org.capnproto.Schema.ElementSize.EMPTY; + case 1 : return org.capnproto.Schema.ElementSize.BIT; + case 2 : return org.capnproto.Schema.ElementSize.BYTE; + case 3 : return org.capnproto.Schema.ElementSize.TWO_BYTES; + case 4 : return org.capnproto.Schema.ElementSize.FOUR_BYTES; + case 5 : return org.capnproto.Schema.ElementSize.EIGHT_BYTES; + case 6 : return org.capnproto.Schema.ElementSize.POINTER; + case 7 : return org.capnproto.Schema.ElementSize.INLINE_COMPOSITE; + default: return org.capnproto.Schema.ElementSize._NOT_IN_SCHEMA; + } + } + + public final boolean getIsGroup() { + return _getBooleanField(224); + } + + public final short getDiscriminantCount() { + return _getShortField(15); + } + + public final int getDiscriminantOffset() { + return _getIntField(8); + } + + public final boolean hasFields() { + return !_pointerFieldIsNull(3); + } + public final org.capnproto.StructList.Reader getFields() { + return _getPointerField(org.capnproto.Schema.Field.listFactory, 3, null, 0); + } + + } + + public static class Pipeline extends org.capnproto.Pipeline { + public Pipeline(org.capnproto.RemotePromise remotePromise) { + super(org.capnproto.RemotePromise.fromTypeless(factory, remotePromise)); + } + } + } + + public static class Enum { + public static final org.capnproto.StructSize STRUCT_SIZE = new org.capnproto.StructSize((short)5,(short)6); + public static final class Factory + extends org.capnproto.StructFactory + implements org.capnproto.PipelineFactory { + public Factory() { + } + public final Reader constructReader(org.capnproto.SegmentReader segment, int data,int pointers, int dataSize, short pointerCount, int nestingLimit) { + return new Reader(segment,data,pointers,dataSize,pointerCount,nestingLimit); + } + public final Builder constructBuilder(org.capnproto.SegmentBuilder segment, int data,int pointers, int dataSize, short pointerCount) { + return new Builder(segment, data, pointers, dataSize, pointerCount); + } + public final org.capnproto.StructSize structSize() { + return Node.Enum.STRUCT_SIZE; + } + public final Reader asReader(Builder builder) { + return builder.asReader(); + } + public Pipeline newPipeline(org.capnproto.RemotePromise promise) { + return new Pipeline(promise); + } + } + public static final Factory factory = new Factory(); + public static final org.capnproto.StructList.Factory listFactory = + new org.capnproto.StructList.Factory(factory); + public static final class Builder extends org.capnproto.StructBuilder { + Builder(org.capnproto.SegmentBuilder segment, int data, int pointers,int dataSize, short pointerCount){ + super(segment, data, pointers, dataSize, pointerCount); + } + public final Reader asReader() { + return new Reader(segment, data, pointers, dataSize, pointerCount, 0x7fffffff); + } + public final boolean hasEnumerants() { + return !_pointerFieldIsNull(3); + } + public final org.capnproto.StructList.Builder getEnumerants() { + return _getPointerField(org.capnproto.Schema.Enumerant.listFactory, 3, null, 0); + } + public final void setEnumerants(org.capnproto.StructList.Reader value) { + _setPointerField(org.capnproto.Schema.Enumerant.listFactory, 3, value); + } + public final org.capnproto.StructList.Builder initEnumerants(int size) { + return _initPointerField(org.capnproto.Schema.Enumerant.listFactory, 3, size); + } + } + + public static final class Reader extends org.capnproto.StructReader { + Reader(org.capnproto.SegmentReader segment, int data, int pointers,int dataSize, short pointerCount, int nestingLimit){ + super(segment, data, pointers, dataSize, pointerCount, nestingLimit); + } + + public final boolean hasEnumerants() { + return !_pointerFieldIsNull(3); + } + public final org.capnproto.StructList.Reader getEnumerants() { + return _getPointerField(org.capnproto.Schema.Enumerant.listFactory, 3, null, 0); + } + + } + + public static class Pipeline extends org.capnproto.Pipeline { + public Pipeline(org.capnproto.RemotePromise remotePromise) { + super(org.capnproto.RemotePromise.fromTypeless(factory, remotePromise)); + } + } + } + + public static class Interface { + public static final org.capnproto.StructSize STRUCT_SIZE = new org.capnproto.StructSize((short)5,(short)6); + public static final class Factory + extends org.capnproto.StructFactory + implements org.capnproto.PipelineFactory { + public Factory() { + } + public final Reader constructReader(org.capnproto.SegmentReader segment, int data,int pointers, int dataSize, short pointerCount, int nestingLimit) { + return new Reader(segment,data,pointers,dataSize,pointerCount,nestingLimit); + } + public final Builder constructBuilder(org.capnproto.SegmentBuilder segment, int data,int pointers, int dataSize, short pointerCount) { + return new Builder(segment, data, pointers, dataSize, pointerCount); + } + public final org.capnproto.StructSize structSize() { + return Node.Interface.STRUCT_SIZE; + } + public final Reader asReader(Builder builder) { + return builder.asReader(); + } + public Pipeline newPipeline(org.capnproto.RemotePromise promise) { + return new Pipeline(promise); + } + } + public static final Factory factory = new Factory(); + public static final org.capnproto.StructList.Factory listFactory = + new org.capnproto.StructList.Factory(factory); + public static final class Builder extends org.capnproto.StructBuilder { + Builder(org.capnproto.SegmentBuilder segment, int data, int pointers,int dataSize, short pointerCount){ + super(segment, data, pointers, dataSize, pointerCount); + } + public final Reader asReader() { + return new Reader(segment, data, pointers, dataSize, pointerCount, 0x7fffffff); + } + public final boolean hasMethods() { + return !_pointerFieldIsNull(3); + } + public final org.capnproto.StructList.Builder getMethods() { + return _getPointerField(org.capnproto.Schema.Method.listFactory, 3, null, 0); + } + public final void setMethods(org.capnproto.StructList.Reader value) { + _setPointerField(org.capnproto.Schema.Method.listFactory, 3, value); + } + public final org.capnproto.StructList.Builder initMethods(int size) { + return _initPointerField(org.capnproto.Schema.Method.listFactory, 3, size); + } + public final boolean hasSuperclasses() { + return !_pointerFieldIsNull(4); + } + public final org.capnproto.StructList.Builder getSuperclasses() { + return _getPointerField(org.capnproto.Schema.Superclass.listFactory, 4, null, 0); + } + public final void setSuperclasses(org.capnproto.StructList.Reader value) { + _setPointerField(org.capnproto.Schema.Superclass.listFactory, 4, value); + } + public final org.capnproto.StructList.Builder initSuperclasses(int size) { + return _initPointerField(org.capnproto.Schema.Superclass.listFactory, 4, size); + } + } + + public static final class Reader extends org.capnproto.StructReader { + Reader(org.capnproto.SegmentReader segment, int data, int pointers,int dataSize, short pointerCount, int nestingLimit){ + super(segment, data, pointers, dataSize, pointerCount, nestingLimit); + } + + public final boolean hasMethods() { + return !_pointerFieldIsNull(3); + } + public final org.capnproto.StructList.Reader getMethods() { + return _getPointerField(org.capnproto.Schema.Method.listFactory, 3, null, 0); + } + + public final boolean hasSuperclasses() { + return !_pointerFieldIsNull(4); + } + public final org.capnproto.StructList.Reader getSuperclasses() { + return _getPointerField(org.capnproto.Schema.Superclass.listFactory, 4, null, 0); + } + + } + + public static class Pipeline extends org.capnproto.Pipeline { + public Pipeline(org.capnproto.RemotePromise remotePromise) { + super(org.capnproto.RemotePromise.fromTypeless(factory, remotePromise)); + } + } + } + + public static class Const { + public static final org.capnproto.StructSize STRUCT_SIZE = new org.capnproto.StructSize((short)5,(short)6); + public static final class Factory + extends org.capnproto.StructFactory + implements org.capnproto.PipelineFactory { + public Factory() { + } + public final Reader constructReader(org.capnproto.SegmentReader segment, int data,int pointers, int dataSize, short pointerCount, int nestingLimit) { + return new Reader(segment,data,pointers,dataSize,pointerCount,nestingLimit); + } + public final Builder constructBuilder(org.capnproto.SegmentBuilder segment, int data,int pointers, int dataSize, short pointerCount) { + return new Builder(segment, data, pointers, dataSize, pointerCount); + } + public final org.capnproto.StructSize structSize() { + return Node.Const.STRUCT_SIZE; + } + public final Reader asReader(Builder builder) { + return builder.asReader(); + } + public Pipeline newPipeline(org.capnproto.RemotePromise promise) { + return new Pipeline(promise); + } + } + public static final Factory factory = new Factory(); + public static final org.capnproto.StructList.Factory listFactory = + new org.capnproto.StructList.Factory(factory); + public static final class Builder extends org.capnproto.StructBuilder { + Builder(org.capnproto.SegmentBuilder segment, int data, int pointers,int dataSize, short pointerCount){ + super(segment, data, pointers, dataSize, pointerCount); + } + public final Reader asReader() { + return new Reader(segment, data, pointers, dataSize, pointerCount, 0x7fffffff); + } + public final org.capnproto.Schema.Type.Builder getType() { + return _getPointerField(org.capnproto.Schema.Type.factory, 3, null, 0); + } + public final void setType(org.capnproto.Schema.Type.Reader value) { + _setPointerField(org.capnproto.Schema.Type.factory,3, value); + } + public final org.capnproto.Schema.Type.Builder initType() { + return _initPointerField(org.capnproto.Schema.Type.factory,3, 0); + } + public final org.capnproto.Schema.Value.Builder getValue() { + return _getPointerField(org.capnproto.Schema.Value.factory, 4, null, 0); + } + public final void setValue(org.capnproto.Schema.Value.Reader value) { + _setPointerField(org.capnproto.Schema.Value.factory,4, value); + } + public final org.capnproto.Schema.Value.Builder initValue() { + return _initPointerField(org.capnproto.Schema.Value.factory,4, 0); + } + } + + public static final class Reader extends org.capnproto.StructReader { + Reader(org.capnproto.SegmentReader segment, int data, int pointers,int dataSize, short pointerCount, int nestingLimit){ + super(segment, data, pointers, dataSize, pointerCount, nestingLimit); + } + + public boolean hasType() { + return !_pointerFieldIsNull(3); + } + public org.capnproto.Schema.Type.Reader getType() { + return _getPointerField(org.capnproto.Schema.Type.factory,3,null, 0); + } + + public boolean hasValue() { + return !_pointerFieldIsNull(4); + } + public org.capnproto.Schema.Value.Reader getValue() { + return _getPointerField(org.capnproto.Schema.Value.factory,4,null, 0); + } + + } + + public static class Pipeline extends org.capnproto.Pipeline { + public Pipeline(org.capnproto.RemotePromise remotePromise) { + super(org.capnproto.RemotePromise.fromTypeless(factory, remotePromise)); + } + } + } + + public static class Annotation { + public static final org.capnproto.StructSize STRUCT_SIZE = new org.capnproto.StructSize((short)5,(short)6); + public static final class Factory + extends org.capnproto.StructFactory + implements org.capnproto.PipelineFactory { + public Factory() { + } + public final Reader constructReader(org.capnproto.SegmentReader segment, int data,int pointers, int dataSize, short pointerCount, int nestingLimit) { + return new Reader(segment,data,pointers,dataSize,pointerCount,nestingLimit); + } + public final Builder constructBuilder(org.capnproto.SegmentBuilder segment, int data,int pointers, int dataSize, short pointerCount) { + return new Builder(segment, data, pointers, dataSize, pointerCount); + } + public final org.capnproto.StructSize structSize() { + return Node.Annotation.STRUCT_SIZE; + } + public final Reader asReader(Builder builder) { + return builder.asReader(); + } + public Pipeline newPipeline(org.capnproto.RemotePromise promise) { + return new Pipeline(promise); + } + } + public static final Factory factory = new Factory(); + public static final org.capnproto.StructList.Factory listFactory = + new org.capnproto.StructList.Factory(factory); + public static final class Builder extends org.capnproto.StructBuilder { + Builder(org.capnproto.SegmentBuilder segment, int data, int pointers,int dataSize, short pointerCount){ + super(segment, data, pointers, dataSize, pointerCount); + } + public final Reader asReader() { + return new Reader(segment, data, pointers, dataSize, pointerCount, 0x7fffffff); + } + public final org.capnproto.Schema.Type.Builder getType() { + return _getPointerField(org.capnproto.Schema.Type.factory, 3, null, 0); + } + public final void setType(org.capnproto.Schema.Type.Reader value) { + _setPointerField(org.capnproto.Schema.Type.factory,3, value); + } + public final org.capnproto.Schema.Type.Builder initType() { + return _initPointerField(org.capnproto.Schema.Type.factory,3, 0); + } + public final boolean getTargetsFile() { + return _getBooleanField(112); + } + public final void setTargetsFile(boolean value) { + _setBooleanField(112, value); + } + + public final boolean getTargetsConst() { + return _getBooleanField(113); + } + public final void setTargetsConst(boolean value) { + _setBooleanField(113, value); + } + + public final boolean getTargetsEnum() { + return _getBooleanField(114); + } + public final void setTargetsEnum(boolean value) { + _setBooleanField(114, value); + } + + public final boolean getTargetsEnumerant() { + return _getBooleanField(115); + } + public final void setTargetsEnumerant(boolean value) { + _setBooleanField(115, value); + } + + public final boolean getTargetsStruct() { + return _getBooleanField(116); + } + public final void setTargetsStruct(boolean value) { + _setBooleanField(116, value); + } + + public final boolean getTargetsField() { + return _getBooleanField(117); + } + public final void setTargetsField(boolean value) { + _setBooleanField(117, value); + } + + public final boolean getTargetsUnion() { + return _getBooleanField(118); + } + public final void setTargetsUnion(boolean value) { + _setBooleanField(118, value); + } + + public final boolean getTargetsGroup() { + return _getBooleanField(119); + } + public final void setTargetsGroup(boolean value) { + _setBooleanField(119, value); + } + + public final boolean getTargetsInterface() { + return _getBooleanField(120); + } + public final void setTargetsInterface(boolean value) { + _setBooleanField(120, value); + } + + public final boolean getTargetsMethod() { + return _getBooleanField(121); + } + public final void setTargetsMethod(boolean value) { + _setBooleanField(121, value); + } + + public final boolean getTargetsParam() { + return _getBooleanField(122); + } + public final void setTargetsParam(boolean value) { + _setBooleanField(122, value); + } + + public final boolean getTargetsAnnotation() { + return _getBooleanField(123); + } + public final void setTargetsAnnotation(boolean value) { + _setBooleanField(123, value); + } + + } + + public static final class Reader extends org.capnproto.StructReader { + Reader(org.capnproto.SegmentReader segment, int data, int pointers,int dataSize, short pointerCount, int nestingLimit){ + super(segment, data, pointers, dataSize, pointerCount, nestingLimit); + } + + public boolean hasType() { + return !_pointerFieldIsNull(3); + } + public org.capnproto.Schema.Type.Reader getType() { + return _getPointerField(org.capnproto.Schema.Type.factory,3,null, 0); + } + + public final boolean getTargetsFile() { + return _getBooleanField(112); + } + + public final boolean getTargetsConst() { + return _getBooleanField(113); + } + + public final boolean getTargetsEnum() { + return _getBooleanField(114); + } + + public final boolean getTargetsEnumerant() { + return _getBooleanField(115); + } + + public final boolean getTargetsStruct() { + return _getBooleanField(116); + } + + public final boolean getTargetsField() { + return _getBooleanField(117); + } + + public final boolean getTargetsUnion() { + return _getBooleanField(118); + } + + public final boolean getTargetsGroup() { + return _getBooleanField(119); + } + + public final boolean getTargetsInterface() { + return _getBooleanField(120); + } + + public final boolean getTargetsMethod() { + return _getBooleanField(121); + } + + public final boolean getTargetsParam() { + return _getBooleanField(122); + } + + public final boolean getTargetsAnnotation() { + return _getBooleanField(123); + } + + } + + public static class Pipeline extends org.capnproto.Pipeline { + public Pipeline(org.capnproto.RemotePromise remotePromise) { + super(org.capnproto.RemotePromise.fromTypeless(factory, remotePromise)); + } + } + } + + public static class Pipeline extends org.capnproto.Pipeline { + public Pipeline(org.capnproto.RemotePromise remotePromise) { + super(org.capnproto.RemotePromise.fromTypeless(factory, remotePromise)); + } + } + } + + public static class Field { + public static final org.capnproto.StructSize STRUCT_SIZE = new org.capnproto.StructSize((short)3,(short)4); + public static final class Factory + extends org.capnproto.StructFactory + implements org.capnproto.PipelineFactory { + public Factory() { + } + public final Reader constructReader(org.capnproto.SegmentReader segment, int data,int pointers, int dataSize, short pointerCount, int nestingLimit) { + return new Reader(segment,data,pointers,dataSize,pointerCount,nestingLimit); + } + public final Builder constructBuilder(org.capnproto.SegmentBuilder segment, int data,int pointers, int dataSize, short pointerCount) { + return new Builder(segment, data, pointers, dataSize, pointerCount); + } + public final org.capnproto.StructSize structSize() { + return Field.STRUCT_SIZE; + } + public final Reader asReader(Builder builder) { + return builder.asReader(); + } + public Pipeline newPipeline(org.capnproto.RemotePromise promise) { + return new Pipeline(promise); + } + } + public static final Factory factory = new Factory(); + public static final org.capnproto.StructList.Factory listFactory = + new org.capnproto.StructList.Factory(factory); + public static final class Builder extends org.capnproto.StructBuilder { + Builder(org.capnproto.SegmentBuilder segment, int data, int pointers,int dataSize, short pointerCount){ + super(segment, data, pointers, dataSize, pointerCount); + } + public Which which() { + switch(_getShortField(4)) { + case 0 : return Which.SLOT; + case 1 : return Which.GROUP; + default: return Which._NOT_IN_SCHEMA; + } + } + public final Reader asReader() { + return new Reader(segment, data, pointers, dataSize, pointerCount, 0x7fffffff); + } + public final boolean hasName() { + return !_pointerFieldIsNull(0); + } + public final org.capnproto.Text.Builder getName() { + return _getPointerField(org.capnproto.Text.factory, 0, null, 0, 0); + } + public final void setName(org.capnproto.Text.Reader value) { + _setPointerField(org.capnproto.Text.factory, 0, value); + } + public final void setName(String value) { + _setPointerField(org.capnproto.Text.factory, 0, new org.capnproto.Text.Reader(value)); + } + public final org.capnproto.Text.Builder initName(int size) { + return _initPointerField(org.capnproto.Text.factory, 0, size); + } + public final short getCodeOrder() { + return _getShortField(0); + } + public final void setCodeOrder(short value) { + _setShortField(0, value); + } + + public final boolean hasAnnotations() { + return !_pointerFieldIsNull(1); + } + public final org.capnproto.StructList.Builder getAnnotations() { + return _getPointerField(org.capnproto.Schema.Annotation.listFactory, 1, null, 0); + } + public final void setAnnotations(org.capnproto.StructList.Reader value) { + _setPointerField(org.capnproto.Schema.Annotation.listFactory, 1, value); + } + public final org.capnproto.StructList.Builder initAnnotations(int size) { + return _initPointerField(org.capnproto.Schema.Annotation.listFactory, 1, size); + } + public final short getDiscriminantValue() { + return _getShortField(1, (short)-1); + } + public final void setDiscriminantValue(short value) { + _setShortField(1, value, (short)-1); + } + + public final boolean isSlot() { + return which() == Field.Which.SLOT; + } + public final Slot.Builder getSlot() { + return new Field.Slot.Builder(segment, data, pointers, dataSize, pointerCount); + } + public final Slot.Builder initSlot() { + _setShortField(4, (short)Field.Which.SLOT.ordinal()); + _setIntField(1,0); + _setBooleanField(128,false); + _clearPointerField(2); + _clearPointerField(3); + return new Field.Slot.Builder(segment, data, pointers, dataSize, pointerCount); + } + + public final boolean isGroup() { + return which() == Field.Which.GROUP; + } + public final Group.Builder getGroup() { + return new Field.Group.Builder(segment, data, pointers, dataSize, pointerCount); + } + public final Group.Builder initGroup() { + _setShortField(4, (short)Field.Which.GROUP.ordinal()); + _setLongField(2,0L); + return new Field.Group.Builder(segment, data, pointers, dataSize, pointerCount); + } + + public final Ordinal.Builder getOrdinal() { + return new Field.Ordinal.Builder(segment, data, pointers, dataSize, pointerCount); + } + public final Ordinal.Builder initOrdinal() { + _setShortField(5,(short)0); + _setShortField(6,(short)0); + return new Field.Ordinal.Builder(segment, data, pointers, dataSize, pointerCount); + } + + } + + public static final class Reader extends org.capnproto.StructReader { + Reader(org.capnproto.SegmentReader segment, int data, int pointers,int dataSize, short pointerCount, int nestingLimit){ + super(segment, data, pointers, dataSize, pointerCount, nestingLimit); + } + + public Which which() { + switch(_getShortField(4)) { + case 0 : return Which.SLOT; + case 1 : return Which.GROUP; + default: return Which._NOT_IN_SCHEMA; + } + } + public boolean hasName() { + return !_pointerFieldIsNull(0); + } + public org.capnproto.Text.Reader getName() { + return _getPointerField(org.capnproto.Text.factory, 0, null, 0, 0); + } + + public final short getCodeOrder() { + return _getShortField(0); + } + + public final boolean hasAnnotations() { + return !_pointerFieldIsNull(1); + } + public final org.capnproto.StructList.Reader getAnnotations() { + return _getPointerField(org.capnproto.Schema.Annotation.listFactory, 1, null, 0); + } + + public final short getDiscriminantValue() { + return _getShortField(1, (short)-1); + } + + public final boolean isSlot() { + return which() == Field.Which.SLOT; + } + public Slot.Reader getSlot() { + return new Field.Slot.Reader(segment, data, pointers, dataSize, pointerCount, nestingLimit); + } + + public final boolean isGroup() { + return which() == Field.Which.GROUP; + } + public Group.Reader getGroup() { + return new Field.Group.Reader(segment, data, pointers, dataSize, pointerCount, nestingLimit); + } + + public Ordinal.Reader getOrdinal() { + return new Field.Ordinal.Reader(segment, data, pointers, dataSize, pointerCount, nestingLimit); + } + + } + + public enum Which { + SLOT, + GROUP, + _NOT_IN_SCHEMA, + } + public static final short NO_DISCRIMINANT = -1; + public static class Slot { + public static final org.capnproto.StructSize STRUCT_SIZE = new org.capnproto.StructSize((short)3,(short)4); + public static final class Factory + extends org.capnproto.StructFactory + implements org.capnproto.PipelineFactory { + public Factory() { + } + public final Reader constructReader(org.capnproto.SegmentReader segment, int data,int pointers, int dataSize, short pointerCount, int nestingLimit) { + return new Reader(segment,data,pointers,dataSize,pointerCount,nestingLimit); + } + public final Builder constructBuilder(org.capnproto.SegmentBuilder segment, int data,int pointers, int dataSize, short pointerCount) { + return new Builder(segment, data, pointers, dataSize, pointerCount); + } + public final org.capnproto.StructSize structSize() { + return Field.Slot.STRUCT_SIZE; + } + public final Reader asReader(Builder builder) { + return builder.asReader(); + } + public Pipeline newPipeline(org.capnproto.RemotePromise promise) { + return new Pipeline(promise); + } + } + public static final Factory factory = new Factory(); + public static final org.capnproto.StructList.Factory listFactory = + new org.capnproto.StructList.Factory(factory); + public static final class Builder extends org.capnproto.StructBuilder { + Builder(org.capnproto.SegmentBuilder segment, int data, int pointers,int dataSize, short pointerCount){ + super(segment, data, pointers, dataSize, pointerCount); + } + public final Reader asReader() { + return new Reader(segment, data, pointers, dataSize, pointerCount, 0x7fffffff); + } + public final int getOffset() { + return _getIntField(1); + } + public final void setOffset(int value) { + _setIntField(1, value); + } + + public final org.capnproto.Schema.Type.Builder getType() { + return _getPointerField(org.capnproto.Schema.Type.factory, 2, null, 0); + } + public final void setType(org.capnproto.Schema.Type.Reader value) { + _setPointerField(org.capnproto.Schema.Type.factory,2, value); + } + public final org.capnproto.Schema.Type.Builder initType() { + return _initPointerField(org.capnproto.Schema.Type.factory,2, 0); + } + public final org.capnproto.Schema.Value.Builder getDefaultValue() { + return _getPointerField(org.capnproto.Schema.Value.factory, 3, null, 0); + } + public final void setDefaultValue(org.capnproto.Schema.Value.Reader value) { + _setPointerField(org.capnproto.Schema.Value.factory,3, value); + } + public final org.capnproto.Schema.Value.Builder initDefaultValue() { + return _initPointerField(org.capnproto.Schema.Value.factory,3, 0); + } + public final boolean getHadExplicitDefault() { + return _getBooleanField(128); + } + public final void setHadExplicitDefault(boolean value) { + _setBooleanField(128, value); + } + + } + + public static final class Reader extends org.capnproto.StructReader { + Reader(org.capnproto.SegmentReader segment, int data, int pointers,int dataSize, short pointerCount, int nestingLimit){ + super(segment, data, pointers, dataSize, pointerCount, nestingLimit); + } + + public final int getOffset() { + return _getIntField(1); + } + + public boolean hasType() { + return !_pointerFieldIsNull(2); + } + public org.capnproto.Schema.Type.Reader getType() { + return _getPointerField(org.capnproto.Schema.Type.factory,2,null, 0); + } + + public boolean hasDefaultValue() { + return !_pointerFieldIsNull(3); + } + public org.capnproto.Schema.Value.Reader getDefaultValue() { + return _getPointerField(org.capnproto.Schema.Value.factory,3,null, 0); + } + + public final boolean getHadExplicitDefault() { + return _getBooleanField(128); + } + + } + + public static class Pipeline extends org.capnproto.Pipeline { + public Pipeline(org.capnproto.RemotePromise remotePromise) { + super(org.capnproto.RemotePromise.fromTypeless(factory, remotePromise)); + } + } + } + + public static class Group { + public static final org.capnproto.StructSize STRUCT_SIZE = new org.capnproto.StructSize((short)3,(short)4); + public static final class Factory + extends org.capnproto.StructFactory + implements org.capnproto.PipelineFactory { + public Factory() { + } + public final Reader constructReader(org.capnproto.SegmentReader segment, int data,int pointers, int dataSize, short pointerCount, int nestingLimit) { + return new Reader(segment,data,pointers,dataSize,pointerCount,nestingLimit); + } + public final Builder constructBuilder(org.capnproto.SegmentBuilder segment, int data,int pointers, int dataSize, short pointerCount) { + return new Builder(segment, data, pointers, dataSize, pointerCount); + } + public final org.capnproto.StructSize structSize() { + return Field.Group.STRUCT_SIZE; + } + public final Reader asReader(Builder builder) { + return builder.asReader(); + } + public Pipeline newPipeline(org.capnproto.RemotePromise promise) { + return new Pipeline(promise); + } + } + public static final Factory factory = new Factory(); + public static final org.capnproto.StructList.Factory listFactory = + new org.capnproto.StructList.Factory(factory); + public static final class Builder extends org.capnproto.StructBuilder { + Builder(org.capnproto.SegmentBuilder segment, int data, int pointers,int dataSize, short pointerCount){ + super(segment, data, pointers, dataSize, pointerCount); + } + public final Reader asReader() { + return new Reader(segment, data, pointers, dataSize, pointerCount, 0x7fffffff); + } + public final long getTypeId() { + return _getLongField(2); + } + public final void setTypeId(long value) { + _setLongField(2, value); + } + + } + + public static final class Reader extends org.capnproto.StructReader { + Reader(org.capnproto.SegmentReader segment, int data, int pointers,int dataSize, short pointerCount, int nestingLimit){ + super(segment, data, pointers, dataSize, pointerCount, nestingLimit); + } + + public final long getTypeId() { + return _getLongField(2); + } + + } + + public static class Pipeline extends org.capnproto.Pipeline { + public Pipeline(org.capnproto.RemotePromise remotePromise) { + super(org.capnproto.RemotePromise.fromTypeless(factory, remotePromise)); + } + } + } + + public static class Ordinal { + public static final org.capnproto.StructSize STRUCT_SIZE = new org.capnproto.StructSize((short)3,(short)4); + public static final class Factory + extends org.capnproto.StructFactory + implements org.capnproto.PipelineFactory { + public Factory() { + } + public final Reader constructReader(org.capnproto.SegmentReader segment, int data,int pointers, int dataSize, short pointerCount, int nestingLimit) { + return new Reader(segment,data,pointers,dataSize,pointerCount,nestingLimit); + } + public final Builder constructBuilder(org.capnproto.SegmentBuilder segment, int data,int pointers, int dataSize, short pointerCount) { + return new Builder(segment, data, pointers, dataSize, pointerCount); + } + public final org.capnproto.StructSize structSize() { + return Field.Ordinal.STRUCT_SIZE; + } + public final Reader asReader(Builder builder) { + return builder.asReader(); + } + public Pipeline newPipeline(org.capnproto.RemotePromise promise) { + return new Pipeline(promise); + } + } + public static final Factory factory = new Factory(); + public static final org.capnproto.StructList.Factory listFactory = + new org.capnproto.StructList.Factory(factory); + public static final class Builder extends org.capnproto.StructBuilder { + Builder(org.capnproto.SegmentBuilder segment, int data, int pointers,int dataSize, short pointerCount){ + super(segment, data, pointers, dataSize, pointerCount); + } + public Which which() { + switch(_getShortField(5)) { + case 0 : return Which.IMPLICIT; + case 1 : return Which.EXPLICIT; + default: return Which._NOT_IN_SCHEMA; + } + } + public final Reader asReader() { + return new Reader(segment, data, pointers, dataSize, pointerCount, 0x7fffffff); + } + public final boolean isImplicit() { + return which() == Field.Ordinal.Which.IMPLICIT; + } + public final org.capnproto.Void getImplicit() { + assert which() == Field.Ordinal.Which.IMPLICIT: + "Must check which() before get()ing a union member."; + return org.capnproto.Void.VOID; + } + public final void setImplicit(org.capnproto.Void value) { + _setShortField(5, (short)Field.Ordinal.Which.IMPLICIT.ordinal()); + } + + public final boolean isExplicit() { + return which() == Field.Ordinal.Which.EXPLICIT; + } + public final short getExplicit() { + assert which() == Field.Ordinal.Which.EXPLICIT: + "Must check which() before get()ing a union member."; + return _getShortField(6); + } + public final void setExplicit(short value) { + _setShortField(5, (short)Field.Ordinal.Which.EXPLICIT.ordinal()); + _setShortField(6, value); + } + + } + + public static final class Reader extends org.capnproto.StructReader { + Reader(org.capnproto.SegmentReader segment, int data, int pointers,int dataSize, short pointerCount, int nestingLimit){ + super(segment, data, pointers, dataSize, pointerCount, nestingLimit); + } + + public Which which() { + switch(_getShortField(5)) { + case 0 : return Which.IMPLICIT; + case 1 : return Which.EXPLICIT; + default: return Which._NOT_IN_SCHEMA; + } + } + public final boolean isImplicit() { + return which() == Field.Ordinal.Which.IMPLICIT; + } + public final org.capnproto.Void getImplicit() { + assert which() == Field.Ordinal.Which.IMPLICIT: + "Must check which() before get()ing a union member."; + return org.capnproto.Void.VOID; + } + + public final boolean isExplicit() { + return which() == Field.Ordinal.Which.EXPLICIT; + } + public final short getExplicit() { + assert which() == Field.Ordinal.Which.EXPLICIT: + "Must check which() before get()ing a union member."; + return _getShortField(6); + } + + } + + public enum Which { + IMPLICIT, + EXPLICIT, + _NOT_IN_SCHEMA, + } + public static class Pipeline extends org.capnproto.Pipeline { + public Pipeline(org.capnproto.RemotePromise remotePromise) { + super(org.capnproto.RemotePromise.fromTypeless(factory, remotePromise)); + } + } + } + + public static class Pipeline extends org.capnproto.Pipeline { + public Pipeline(org.capnproto.RemotePromise remotePromise) { + super(org.capnproto.RemotePromise.fromTypeless(factory, remotePromise)); + } + } + } + + public static class Enumerant { + public static final org.capnproto.StructSize STRUCT_SIZE = new org.capnproto.StructSize((short)1,(short)2); + public static final class Factory + extends org.capnproto.StructFactory + implements org.capnproto.PipelineFactory { + public Factory() { + } + public final Reader constructReader(org.capnproto.SegmentReader segment, int data,int pointers, int dataSize, short pointerCount, int nestingLimit) { + return new Reader(segment,data,pointers,dataSize,pointerCount,nestingLimit); + } + public final Builder constructBuilder(org.capnproto.SegmentBuilder segment, int data,int pointers, int dataSize, short pointerCount) { + return new Builder(segment, data, pointers, dataSize, pointerCount); + } + public final org.capnproto.StructSize structSize() { + return Enumerant.STRUCT_SIZE; + } + public final Reader asReader(Builder builder) { + return builder.asReader(); + } + public Pipeline newPipeline(org.capnproto.RemotePromise promise) { + return new Pipeline(promise); + } + } + public static final Factory factory = new Factory(); + public static final org.capnproto.StructList.Factory listFactory = + new org.capnproto.StructList.Factory(factory); + public static final class Builder extends org.capnproto.StructBuilder { + Builder(org.capnproto.SegmentBuilder segment, int data, int pointers,int dataSize, short pointerCount){ + super(segment, data, pointers, dataSize, pointerCount); + } + public final Reader asReader() { + return new Reader(segment, data, pointers, dataSize, pointerCount, 0x7fffffff); + } + public final boolean hasName() { + return !_pointerFieldIsNull(0); + } + public final org.capnproto.Text.Builder getName() { + return _getPointerField(org.capnproto.Text.factory, 0, null, 0, 0); + } + public final void setName(org.capnproto.Text.Reader value) { + _setPointerField(org.capnproto.Text.factory, 0, value); + } + public final void setName(String value) { + _setPointerField(org.capnproto.Text.factory, 0, new org.capnproto.Text.Reader(value)); + } + public final org.capnproto.Text.Builder initName(int size) { + return _initPointerField(org.capnproto.Text.factory, 0, size); + } + public final short getCodeOrder() { + return _getShortField(0); + } + public final void setCodeOrder(short value) { + _setShortField(0, value); + } + + public final boolean hasAnnotations() { + return !_pointerFieldIsNull(1); + } + public final org.capnproto.StructList.Builder getAnnotations() { + return _getPointerField(org.capnproto.Schema.Annotation.listFactory, 1, null, 0); + } + public final void setAnnotations(org.capnproto.StructList.Reader value) { + _setPointerField(org.capnproto.Schema.Annotation.listFactory, 1, value); + } + public final org.capnproto.StructList.Builder initAnnotations(int size) { + return _initPointerField(org.capnproto.Schema.Annotation.listFactory, 1, size); + } + } + + public static final class Reader extends org.capnproto.StructReader { + Reader(org.capnproto.SegmentReader segment, int data, int pointers,int dataSize, short pointerCount, int nestingLimit){ + super(segment, data, pointers, dataSize, pointerCount, nestingLimit); + } + + public boolean hasName() { + return !_pointerFieldIsNull(0); + } + public org.capnproto.Text.Reader getName() { + return _getPointerField(org.capnproto.Text.factory, 0, null, 0, 0); + } + + public final short getCodeOrder() { + return _getShortField(0); + } + + public final boolean hasAnnotations() { + return !_pointerFieldIsNull(1); + } + public final org.capnproto.StructList.Reader getAnnotations() { + return _getPointerField(org.capnproto.Schema.Annotation.listFactory, 1, null, 0); + } + + } + + public static class Pipeline extends org.capnproto.Pipeline { + public Pipeline(org.capnproto.RemotePromise remotePromise) { + super(org.capnproto.RemotePromise.fromTypeless(factory, remotePromise)); + } + } + } + + public static class Superclass { + public static final org.capnproto.StructSize STRUCT_SIZE = new org.capnproto.StructSize((short)1,(short)1); + public static final class Factory + extends org.capnproto.StructFactory + implements org.capnproto.PipelineFactory { + public Factory() { + } + public final Reader constructReader(org.capnproto.SegmentReader segment, int data,int pointers, int dataSize, short pointerCount, int nestingLimit) { + return new Reader(segment,data,pointers,dataSize,pointerCount,nestingLimit); + } + public final Builder constructBuilder(org.capnproto.SegmentBuilder segment, int data,int pointers, int dataSize, short pointerCount) { + return new Builder(segment, data, pointers, dataSize, pointerCount); + } + public final org.capnproto.StructSize structSize() { + return Superclass.STRUCT_SIZE; + } + public final Reader asReader(Builder builder) { + return builder.asReader(); + } + public Pipeline newPipeline(org.capnproto.RemotePromise promise) { + return new Pipeline(promise); + } + } + public static final Factory factory = new Factory(); + public static final org.capnproto.StructList.Factory listFactory = + new org.capnproto.StructList.Factory(factory); + public static final class Builder extends org.capnproto.StructBuilder { + Builder(org.capnproto.SegmentBuilder segment, int data, int pointers,int dataSize, short pointerCount){ + super(segment, data, pointers, dataSize, pointerCount); + } + public final Reader asReader() { + return new Reader(segment, data, pointers, dataSize, pointerCount, 0x7fffffff); + } + public final long getId() { + return _getLongField(0); + } + public final void setId(long value) { + _setLongField(0, value); + } + + public final org.capnproto.Schema.Brand.Builder getBrand() { + return _getPointerField(org.capnproto.Schema.Brand.factory, 0, null, 0); + } + public final void setBrand(org.capnproto.Schema.Brand.Reader value) { + _setPointerField(org.capnproto.Schema.Brand.factory,0, value); + } + public final org.capnproto.Schema.Brand.Builder initBrand() { + return _initPointerField(org.capnproto.Schema.Brand.factory,0, 0); + } + } + + public static final class Reader extends org.capnproto.StructReader { + Reader(org.capnproto.SegmentReader segment, int data, int pointers,int dataSize, short pointerCount, int nestingLimit){ + super(segment, data, pointers, dataSize, pointerCount, nestingLimit); + } + + public final long getId() { + return _getLongField(0); + } + + public boolean hasBrand() { + return !_pointerFieldIsNull(0); + } + public org.capnproto.Schema.Brand.Reader getBrand() { + return _getPointerField(org.capnproto.Schema.Brand.factory,0,null, 0); + } + + } + + public static class Pipeline extends org.capnproto.Pipeline { + public Pipeline(org.capnproto.RemotePromise remotePromise) { + super(org.capnproto.RemotePromise.fromTypeless(factory, remotePromise)); + } + } + } + + public static class Method { + public static final org.capnproto.StructSize STRUCT_SIZE = new org.capnproto.StructSize((short)3,(short)5); + public static final class Factory + extends org.capnproto.StructFactory + implements org.capnproto.PipelineFactory { + public Factory() { + } + public final Reader constructReader(org.capnproto.SegmentReader segment, int data,int pointers, int dataSize, short pointerCount, int nestingLimit) { + return new Reader(segment,data,pointers,dataSize,pointerCount,nestingLimit); + } + public final Builder constructBuilder(org.capnproto.SegmentBuilder segment, int data,int pointers, int dataSize, short pointerCount) { + return new Builder(segment, data, pointers, dataSize, pointerCount); + } + public final org.capnproto.StructSize structSize() { + return Method.STRUCT_SIZE; + } + public final Reader asReader(Builder builder) { + return builder.asReader(); + } + public Pipeline newPipeline(org.capnproto.RemotePromise promise) { + return new Pipeline(promise); + } + } + public static final Factory factory = new Factory(); + public static final org.capnproto.StructList.Factory listFactory = + new org.capnproto.StructList.Factory(factory); + public static final class Builder extends org.capnproto.StructBuilder { + Builder(org.capnproto.SegmentBuilder segment, int data, int pointers,int dataSize, short pointerCount){ + super(segment, data, pointers, dataSize, pointerCount); + } + public final Reader asReader() { + return new Reader(segment, data, pointers, dataSize, pointerCount, 0x7fffffff); + } + public final boolean hasName() { + return !_pointerFieldIsNull(0); + } + public final org.capnproto.Text.Builder getName() { + return _getPointerField(org.capnproto.Text.factory, 0, null, 0, 0); + } + public final void setName(org.capnproto.Text.Reader value) { + _setPointerField(org.capnproto.Text.factory, 0, value); + } + public final void setName(String value) { + _setPointerField(org.capnproto.Text.factory, 0, new org.capnproto.Text.Reader(value)); + } + public final org.capnproto.Text.Builder initName(int size) { + return _initPointerField(org.capnproto.Text.factory, 0, size); + } + public final short getCodeOrder() { + return _getShortField(0); + } + public final void setCodeOrder(short value) { + _setShortField(0, value); + } + + public final long getParamStructType() { + return _getLongField(1); + } + public final void setParamStructType(long value) { + _setLongField(1, value); + } + + public final long getResultStructType() { + return _getLongField(2); + } + public final void setResultStructType(long value) { + _setLongField(2, value); + } + + public final boolean hasAnnotations() { + return !_pointerFieldIsNull(1); + } + public final org.capnproto.StructList.Builder getAnnotations() { + return _getPointerField(org.capnproto.Schema.Annotation.listFactory, 1, null, 0); + } + public final void setAnnotations(org.capnproto.StructList.Reader value) { + _setPointerField(org.capnproto.Schema.Annotation.listFactory, 1, value); + } + public final org.capnproto.StructList.Builder initAnnotations(int size) { + return _initPointerField(org.capnproto.Schema.Annotation.listFactory, 1, size); + } + public final org.capnproto.Schema.Brand.Builder getParamBrand() { + return _getPointerField(org.capnproto.Schema.Brand.factory, 2, null, 0); + } + public final void setParamBrand(org.capnproto.Schema.Brand.Reader value) { + _setPointerField(org.capnproto.Schema.Brand.factory,2, value); + } + public final org.capnproto.Schema.Brand.Builder initParamBrand() { + return _initPointerField(org.capnproto.Schema.Brand.factory,2, 0); + } + public final org.capnproto.Schema.Brand.Builder getResultBrand() { + return _getPointerField(org.capnproto.Schema.Brand.factory, 3, null, 0); + } + public final void setResultBrand(org.capnproto.Schema.Brand.Reader value) { + _setPointerField(org.capnproto.Schema.Brand.factory,3, value); + } + public final org.capnproto.Schema.Brand.Builder initResultBrand() { + return _initPointerField(org.capnproto.Schema.Brand.factory,3, 0); + } + public final boolean hasImplicitParameters() { + return !_pointerFieldIsNull(4); + } + public final org.capnproto.StructList.Builder getImplicitParameters() { + return _getPointerField(org.capnproto.Schema.Node.Parameter.listFactory, 4, null, 0); + } + public final void setImplicitParameters(org.capnproto.StructList.Reader value) { + _setPointerField(org.capnproto.Schema.Node.Parameter.listFactory, 4, value); + } + public final org.capnproto.StructList.Builder initImplicitParameters(int size) { + return _initPointerField(org.capnproto.Schema.Node.Parameter.listFactory, 4, size); + } + } + + public static final class Reader extends org.capnproto.StructReader { + Reader(org.capnproto.SegmentReader segment, int data, int pointers,int dataSize, short pointerCount, int nestingLimit){ + super(segment, data, pointers, dataSize, pointerCount, nestingLimit); + } + + public boolean hasName() { + return !_pointerFieldIsNull(0); + } + public org.capnproto.Text.Reader getName() { + return _getPointerField(org.capnproto.Text.factory, 0, null, 0, 0); + } + + public final short getCodeOrder() { + return _getShortField(0); + } + + public final long getParamStructType() { + return _getLongField(1); + } + + public final long getResultStructType() { + return _getLongField(2); + } + + public final boolean hasAnnotations() { + return !_pointerFieldIsNull(1); + } + public final org.capnproto.StructList.Reader getAnnotations() { + return _getPointerField(org.capnproto.Schema.Annotation.listFactory, 1, null, 0); + } + + public boolean hasParamBrand() { + return !_pointerFieldIsNull(2); + } + public org.capnproto.Schema.Brand.Reader getParamBrand() { + return _getPointerField(org.capnproto.Schema.Brand.factory,2,null, 0); + } + + public boolean hasResultBrand() { + return !_pointerFieldIsNull(3); + } + public org.capnproto.Schema.Brand.Reader getResultBrand() { + return _getPointerField(org.capnproto.Schema.Brand.factory,3,null, 0); + } + + public final boolean hasImplicitParameters() { + return !_pointerFieldIsNull(4); + } + public final org.capnproto.StructList.Reader getImplicitParameters() { + return _getPointerField(org.capnproto.Schema.Node.Parameter.listFactory, 4, null, 0); + } + + } + + public static class Pipeline extends org.capnproto.Pipeline { + public Pipeline(org.capnproto.RemotePromise remotePromise) { + super(org.capnproto.RemotePromise.fromTypeless(factory, remotePromise)); + } + } + } + + public static class Type { + public static final org.capnproto.StructSize STRUCT_SIZE = new org.capnproto.StructSize((short)3,(short)1); + public static final class Factory + extends org.capnproto.StructFactory + implements org.capnproto.PipelineFactory { + public Factory() { + } + public final Reader constructReader(org.capnproto.SegmentReader segment, int data,int pointers, int dataSize, short pointerCount, int nestingLimit) { + return new Reader(segment,data,pointers,dataSize,pointerCount,nestingLimit); + } + public final Builder constructBuilder(org.capnproto.SegmentBuilder segment, int data,int pointers, int dataSize, short pointerCount) { + return new Builder(segment, data, pointers, dataSize, pointerCount); + } + public final org.capnproto.StructSize structSize() { + return Type.STRUCT_SIZE; + } + public final Reader asReader(Builder builder) { + return builder.asReader(); + } + public Pipeline newPipeline(org.capnproto.RemotePromise promise) { + return new Pipeline(promise); + } + } + public static final Factory factory = new Factory(); + public static final org.capnproto.StructList.Factory listFactory = + new org.capnproto.StructList.Factory(factory); + public static final class Builder extends org.capnproto.StructBuilder { + Builder(org.capnproto.SegmentBuilder segment, int data, int pointers,int dataSize, short pointerCount){ + super(segment, data, pointers, dataSize, pointerCount); + } + public Which which() { + switch(_getShortField(0)) { + case 0 : return Which.VOID; + case 1 : return Which.BOOL; + case 2 : return Which.INT8; + case 3 : return Which.INT16; + case 4 : return Which.INT32; + case 5 : return Which.INT64; + case 6 : return Which.UINT8; + case 7 : return Which.UINT16; + case 8 : return Which.UINT32; + case 9 : return Which.UINT64; + case 10 : return Which.FLOAT32; + case 11 : return Which.FLOAT64; + case 12 : return Which.TEXT; + case 13 : return Which.DATA; + case 14 : return Which.LIST; + case 15 : return Which.ENUM; + case 16 : return Which.STRUCT; + case 17 : return Which.INTERFACE; + case 18 : return Which.ANY_POINTER; + default: return Which._NOT_IN_SCHEMA; + } + } + public final Reader asReader() { + return new Reader(segment, data, pointers, dataSize, pointerCount, 0x7fffffff); + } + public final boolean isVoid() { + return which() == Type.Which.VOID; + } + public final org.capnproto.Void getVoid() { + assert which() == Type.Which.VOID: + "Must check which() before get()ing a union member."; + return org.capnproto.Void.VOID; + } + public final void setVoid(org.capnproto.Void value) { + _setShortField(0, (short)Type.Which.VOID.ordinal()); + } + + public final boolean isBool() { + return which() == Type.Which.BOOL; + } + public final org.capnproto.Void getBool() { + assert which() == Type.Which.BOOL: + "Must check which() before get()ing a union member."; + return org.capnproto.Void.VOID; + } + public final void setBool(org.capnproto.Void value) { + _setShortField(0, (short)Type.Which.BOOL.ordinal()); + } + + public final boolean isInt8() { + return which() == Type.Which.INT8; + } + public final org.capnproto.Void getInt8() { + assert which() == Type.Which.INT8: + "Must check which() before get()ing a union member."; + return org.capnproto.Void.VOID; + } + public final void setInt8(org.capnproto.Void value) { + _setShortField(0, (short)Type.Which.INT8.ordinal()); + } + + public final boolean isInt16() { + return which() == Type.Which.INT16; + } + public final org.capnproto.Void getInt16() { + assert which() == Type.Which.INT16: + "Must check which() before get()ing a union member."; + return org.capnproto.Void.VOID; + } + public final void setInt16(org.capnproto.Void value) { + _setShortField(0, (short)Type.Which.INT16.ordinal()); + } + + public final boolean isInt32() { + return which() == Type.Which.INT32; + } + public final org.capnproto.Void getInt32() { + assert which() == Type.Which.INT32: + "Must check which() before get()ing a union member."; + return org.capnproto.Void.VOID; + } + public final void setInt32(org.capnproto.Void value) { + _setShortField(0, (short)Type.Which.INT32.ordinal()); + } + + public final boolean isInt64() { + return which() == Type.Which.INT64; + } + public final org.capnproto.Void getInt64() { + assert which() == Type.Which.INT64: + "Must check which() before get()ing a union member."; + return org.capnproto.Void.VOID; + } + public final void setInt64(org.capnproto.Void value) { + _setShortField(0, (short)Type.Which.INT64.ordinal()); + } + + public final boolean isUint8() { + return which() == Type.Which.UINT8; + } + public final org.capnproto.Void getUint8() { + assert which() == Type.Which.UINT8: + "Must check which() before get()ing a union member."; + return org.capnproto.Void.VOID; + } + public final void setUint8(org.capnproto.Void value) { + _setShortField(0, (short)Type.Which.UINT8.ordinal()); + } + + public final boolean isUint16() { + return which() == Type.Which.UINT16; + } + public final org.capnproto.Void getUint16() { + assert which() == Type.Which.UINT16: + "Must check which() before get()ing a union member."; + return org.capnproto.Void.VOID; + } + public final void setUint16(org.capnproto.Void value) { + _setShortField(0, (short)Type.Which.UINT16.ordinal()); + } + + public final boolean isUint32() { + return which() == Type.Which.UINT32; + } + public final org.capnproto.Void getUint32() { + assert which() == Type.Which.UINT32: + "Must check which() before get()ing a union member."; + return org.capnproto.Void.VOID; + } + public final void setUint32(org.capnproto.Void value) { + _setShortField(0, (short)Type.Which.UINT32.ordinal()); + } + + public final boolean isUint64() { + return which() == Type.Which.UINT64; + } + public final org.capnproto.Void getUint64() { + assert which() == Type.Which.UINT64: + "Must check which() before get()ing a union member."; + return org.capnproto.Void.VOID; + } + public final void setUint64(org.capnproto.Void value) { + _setShortField(0, (short)Type.Which.UINT64.ordinal()); + } + + public final boolean isFloat32() { + return which() == Type.Which.FLOAT32; + } + public final org.capnproto.Void getFloat32() { + assert which() == Type.Which.FLOAT32: + "Must check which() before get()ing a union member."; + return org.capnproto.Void.VOID; + } + public final void setFloat32(org.capnproto.Void value) { + _setShortField(0, (short)Type.Which.FLOAT32.ordinal()); + } + + public final boolean isFloat64() { + return which() == Type.Which.FLOAT64; + } + public final org.capnproto.Void getFloat64() { + assert which() == Type.Which.FLOAT64: + "Must check which() before get()ing a union member."; + return org.capnproto.Void.VOID; + } + public final void setFloat64(org.capnproto.Void value) { + _setShortField(0, (short)Type.Which.FLOAT64.ordinal()); + } + + public final boolean isText() { + return which() == Type.Which.TEXT; + } + public final org.capnproto.Void getText() { + assert which() == Type.Which.TEXT: + "Must check which() before get()ing a union member."; + return org.capnproto.Void.VOID; + } + public final void setText(org.capnproto.Void value) { + _setShortField(0, (short)Type.Which.TEXT.ordinal()); + } + + public final boolean isData() { + return which() == Type.Which.DATA; + } + public final org.capnproto.Void getData() { + assert which() == Type.Which.DATA: + "Must check which() before get()ing a union member."; + return org.capnproto.Void.VOID; + } + public final void setData(org.capnproto.Void value) { + _setShortField(0, (short)Type.Which.DATA.ordinal()); + } + + public final boolean isList() { + return which() == Type.Which.LIST; + } + public final List.Builder getList() { + return new Type.List.Builder(segment, data, pointers, dataSize, pointerCount); + } + public final List.Builder initList() { + _setShortField(0, (short)Type.Which.LIST.ordinal()); + _clearPointerField(0); + return new Type.List.Builder(segment, data, pointers, dataSize, pointerCount); + } + + public final boolean isEnum() { + return which() == Type.Which.ENUM; + } + public final Enum.Builder getEnum() { + return new Type.Enum.Builder(segment, data, pointers, dataSize, pointerCount); + } + public final Enum.Builder initEnum() { + _setShortField(0, (short)Type.Which.ENUM.ordinal()); + _setLongField(1,0L); + _clearPointerField(0); + return new Type.Enum.Builder(segment, data, pointers, dataSize, pointerCount); + } + + public final boolean isStruct() { + return which() == Type.Which.STRUCT; + } + public final Struct.Builder getStruct() { + return new Type.Struct.Builder(segment, data, pointers, dataSize, pointerCount); + } + public final Struct.Builder initStruct() { + _setShortField(0, (short)Type.Which.STRUCT.ordinal()); + _setLongField(1,0L); + _clearPointerField(0); + return new Type.Struct.Builder(segment, data, pointers, dataSize, pointerCount); + } + + public final boolean isInterface() { + return which() == Type.Which.INTERFACE; + } + public final Interface.Builder getInterface() { + return new Type.Interface.Builder(segment, data, pointers, dataSize, pointerCount); + } + public final Interface.Builder initInterface() { + _setShortField(0, (short)Type.Which.INTERFACE.ordinal()); + _setLongField(1,0L); + _clearPointerField(0); + return new Type.Interface.Builder(segment, data, pointers, dataSize, pointerCount); + } + + public final boolean isAnyPointer() { + return which() == Type.Which.ANY_POINTER; + } + public final AnyPointer.Builder getAnyPointer() { + return new Type.AnyPointer.Builder(segment, data, pointers, dataSize, pointerCount); + } + public final AnyPointer.Builder initAnyPointer() { + _setShortField(0, (short)Type.Which.ANY_POINTER.ordinal()); + _setShortField(4,(short)0); + _setShortField(5,(short)0); + _setLongField(2,0L); + return new Type.AnyPointer.Builder(segment, data, pointers, dataSize, pointerCount); + } + + } + + public static final class Reader extends org.capnproto.StructReader { + Reader(org.capnproto.SegmentReader segment, int data, int pointers,int dataSize, short pointerCount, int nestingLimit){ + super(segment, data, pointers, dataSize, pointerCount, nestingLimit); + } + + public Which which() { + switch(_getShortField(0)) { + case 0 : return Which.VOID; + case 1 : return Which.BOOL; + case 2 : return Which.INT8; + case 3 : return Which.INT16; + case 4 : return Which.INT32; + case 5 : return Which.INT64; + case 6 : return Which.UINT8; + case 7 : return Which.UINT16; + case 8 : return Which.UINT32; + case 9 : return Which.UINT64; + case 10 : return Which.FLOAT32; + case 11 : return Which.FLOAT64; + case 12 : return Which.TEXT; + case 13 : return Which.DATA; + case 14 : return Which.LIST; + case 15 : return Which.ENUM; + case 16 : return Which.STRUCT; + case 17 : return Which.INTERFACE; + case 18 : return Which.ANY_POINTER; + default: return Which._NOT_IN_SCHEMA; + } + } + public final boolean isVoid() { + return which() == Type.Which.VOID; + } + public final org.capnproto.Void getVoid() { + assert which() == Type.Which.VOID: + "Must check which() before get()ing a union member."; + return org.capnproto.Void.VOID; + } + + public final boolean isBool() { + return which() == Type.Which.BOOL; + } + public final org.capnproto.Void getBool() { + assert which() == Type.Which.BOOL: + "Must check which() before get()ing a union member."; + return org.capnproto.Void.VOID; + } + + public final boolean isInt8() { + return which() == Type.Which.INT8; + } + public final org.capnproto.Void getInt8() { + assert which() == Type.Which.INT8: + "Must check which() before get()ing a union member."; + return org.capnproto.Void.VOID; + } + + public final boolean isInt16() { + return which() == Type.Which.INT16; + } + public final org.capnproto.Void getInt16() { + assert which() == Type.Which.INT16: + "Must check which() before get()ing a union member."; + return org.capnproto.Void.VOID; + } + + public final boolean isInt32() { + return which() == Type.Which.INT32; + } + public final org.capnproto.Void getInt32() { + assert which() == Type.Which.INT32: + "Must check which() before get()ing a union member."; + return org.capnproto.Void.VOID; + } + + public final boolean isInt64() { + return which() == Type.Which.INT64; + } + public final org.capnproto.Void getInt64() { + assert which() == Type.Which.INT64: + "Must check which() before get()ing a union member."; + return org.capnproto.Void.VOID; + } + + public final boolean isUint8() { + return which() == Type.Which.UINT8; + } + public final org.capnproto.Void getUint8() { + assert which() == Type.Which.UINT8: + "Must check which() before get()ing a union member."; + return org.capnproto.Void.VOID; + } + + public final boolean isUint16() { + return which() == Type.Which.UINT16; + } + public final org.capnproto.Void getUint16() { + assert which() == Type.Which.UINT16: + "Must check which() before get()ing a union member."; + return org.capnproto.Void.VOID; + } + + public final boolean isUint32() { + return which() == Type.Which.UINT32; + } + public final org.capnproto.Void getUint32() { + assert which() == Type.Which.UINT32: + "Must check which() before get()ing a union member."; + return org.capnproto.Void.VOID; + } + + public final boolean isUint64() { + return which() == Type.Which.UINT64; + } + public final org.capnproto.Void getUint64() { + assert which() == Type.Which.UINT64: + "Must check which() before get()ing a union member."; + return org.capnproto.Void.VOID; + } + + public final boolean isFloat32() { + return which() == Type.Which.FLOAT32; + } + public final org.capnproto.Void getFloat32() { + assert which() == Type.Which.FLOAT32: + "Must check which() before get()ing a union member."; + return org.capnproto.Void.VOID; + } + + public final boolean isFloat64() { + return which() == Type.Which.FLOAT64; + } + public final org.capnproto.Void getFloat64() { + assert which() == Type.Which.FLOAT64: + "Must check which() before get()ing a union member."; + return org.capnproto.Void.VOID; + } + + public final boolean isText() { + return which() == Type.Which.TEXT; + } + public final org.capnproto.Void getText() { + assert which() == Type.Which.TEXT: + "Must check which() before get()ing a union member."; + return org.capnproto.Void.VOID; + } + + public final boolean isData() { + return which() == Type.Which.DATA; + } + public final org.capnproto.Void getData() { + assert which() == Type.Which.DATA: + "Must check which() before get()ing a union member."; + return org.capnproto.Void.VOID; + } + + public final boolean isList() { + return which() == Type.Which.LIST; + } + public List.Reader getList() { + return new Type.List.Reader(segment, data, pointers, dataSize, pointerCount, nestingLimit); + } + + public final boolean isEnum() { + return which() == Type.Which.ENUM; + } + public Enum.Reader getEnum() { + return new Type.Enum.Reader(segment, data, pointers, dataSize, pointerCount, nestingLimit); + } + + public final boolean isStruct() { + return which() == Type.Which.STRUCT; + } + public Struct.Reader getStruct() { + return new Type.Struct.Reader(segment, data, pointers, dataSize, pointerCount, nestingLimit); + } + + public final boolean isInterface() { + return which() == Type.Which.INTERFACE; + } + public Interface.Reader getInterface() { + return new Type.Interface.Reader(segment, data, pointers, dataSize, pointerCount, nestingLimit); + } + + public final boolean isAnyPointer() { + return which() == Type.Which.ANY_POINTER; + } + public AnyPointer.Reader getAnyPointer() { + return new Type.AnyPointer.Reader(segment, data, pointers, dataSize, pointerCount, nestingLimit); + } + + } + + public enum Which { + VOID, + BOOL, + INT8, + INT16, + INT32, + INT64, + UINT8, + UINT16, + UINT32, + UINT64, + FLOAT32, + FLOAT64, + TEXT, + DATA, + LIST, + ENUM, + STRUCT, + INTERFACE, + ANY_POINTER, + _NOT_IN_SCHEMA, + } + public static class List { + public static final org.capnproto.StructSize STRUCT_SIZE = new org.capnproto.StructSize((short)3,(short)1); + public static final class Factory + extends org.capnproto.StructFactory + implements org.capnproto.PipelineFactory { + public Factory() { + } + public final Reader constructReader(org.capnproto.SegmentReader segment, int data,int pointers, int dataSize, short pointerCount, int nestingLimit) { + return new Reader(segment,data,pointers,dataSize,pointerCount,nestingLimit); + } + public final Builder constructBuilder(org.capnproto.SegmentBuilder segment, int data,int pointers, int dataSize, short pointerCount) { + return new Builder(segment, data, pointers, dataSize, pointerCount); + } + public final org.capnproto.StructSize structSize() { + return Type.List.STRUCT_SIZE; + } + public final Reader asReader(Builder builder) { + return builder.asReader(); + } + public Pipeline newPipeline(org.capnproto.RemotePromise promise) { + return new Pipeline(promise); + } + } + public static final Factory factory = new Factory(); + public static final org.capnproto.StructList.Factory listFactory = + new org.capnproto.StructList.Factory(factory); + public static final class Builder extends org.capnproto.StructBuilder { + Builder(org.capnproto.SegmentBuilder segment, int data, int pointers,int dataSize, short pointerCount){ + super(segment, data, pointers, dataSize, pointerCount); + } + public final Reader asReader() { + return new Reader(segment, data, pointers, dataSize, pointerCount, 0x7fffffff); + } + public final org.capnproto.Schema.Type.Builder getElementType() { + return _getPointerField(org.capnproto.Schema.Type.factory, 0, null, 0); + } + public final void setElementType(org.capnproto.Schema.Type.Reader value) { + _setPointerField(org.capnproto.Schema.Type.factory,0, value); + } + public final org.capnproto.Schema.Type.Builder initElementType() { + return _initPointerField(org.capnproto.Schema.Type.factory,0, 0); + } + } + + public static final class Reader extends org.capnproto.StructReader { + Reader(org.capnproto.SegmentReader segment, int data, int pointers,int dataSize, short pointerCount, int nestingLimit){ + super(segment, data, pointers, dataSize, pointerCount, nestingLimit); + } + + public boolean hasElementType() { + return !_pointerFieldIsNull(0); + } + public org.capnproto.Schema.Type.Reader getElementType() { + return _getPointerField(org.capnproto.Schema.Type.factory,0,null, 0); + } + + } + + public static class Pipeline extends org.capnproto.Pipeline { + public Pipeline(org.capnproto.RemotePromise remotePromise) { + super(org.capnproto.RemotePromise.fromTypeless(factory, remotePromise)); + } + } + } + + public static class Enum { + public static final org.capnproto.StructSize STRUCT_SIZE = new org.capnproto.StructSize((short)3,(short)1); + public static final class Factory + extends org.capnproto.StructFactory + implements org.capnproto.PipelineFactory { + public Factory() { + } + public final Reader constructReader(org.capnproto.SegmentReader segment, int data,int pointers, int dataSize, short pointerCount, int nestingLimit) { + return new Reader(segment,data,pointers,dataSize,pointerCount,nestingLimit); + } + public final Builder constructBuilder(org.capnproto.SegmentBuilder segment, int data,int pointers, int dataSize, short pointerCount) { + return new Builder(segment, data, pointers, dataSize, pointerCount); + } + public final org.capnproto.StructSize structSize() { + return Type.Enum.STRUCT_SIZE; + } + public final Reader asReader(Builder builder) { + return builder.asReader(); + } + public Pipeline newPipeline(org.capnproto.RemotePromise promise) { + return new Pipeline(promise); + } + } + public static final Factory factory = new Factory(); + public static final org.capnproto.StructList.Factory listFactory = + new org.capnproto.StructList.Factory(factory); + public static final class Builder extends org.capnproto.StructBuilder { + Builder(org.capnproto.SegmentBuilder segment, int data, int pointers,int dataSize, short pointerCount){ + super(segment, data, pointers, dataSize, pointerCount); + } + public final Reader asReader() { + return new Reader(segment, data, pointers, dataSize, pointerCount, 0x7fffffff); + } + public final long getTypeId() { + return _getLongField(1); + } + public final void setTypeId(long value) { + _setLongField(1, value); + } + + public final org.capnproto.Schema.Brand.Builder getBrand() { + return _getPointerField(org.capnproto.Schema.Brand.factory, 0, null, 0); + } + public final void setBrand(org.capnproto.Schema.Brand.Reader value) { + _setPointerField(org.capnproto.Schema.Brand.factory,0, value); + } + public final org.capnproto.Schema.Brand.Builder initBrand() { + return _initPointerField(org.capnproto.Schema.Brand.factory,0, 0); + } + } + + public static final class Reader extends org.capnproto.StructReader { + Reader(org.capnproto.SegmentReader segment, int data, int pointers,int dataSize, short pointerCount, int nestingLimit){ + super(segment, data, pointers, dataSize, pointerCount, nestingLimit); + } + + public final long getTypeId() { + return _getLongField(1); + } + + public boolean hasBrand() { + return !_pointerFieldIsNull(0); + } + public org.capnproto.Schema.Brand.Reader getBrand() { + return _getPointerField(org.capnproto.Schema.Brand.factory,0,null, 0); + } + + } + + public static class Pipeline extends org.capnproto.Pipeline { + public Pipeline(org.capnproto.RemotePromise remotePromise) { + super(org.capnproto.RemotePromise.fromTypeless(factory, remotePromise)); + } + } + } + + public static class Struct { + public static final org.capnproto.StructSize STRUCT_SIZE = new org.capnproto.StructSize((short)3,(short)1); + public static final class Factory + extends org.capnproto.StructFactory + implements org.capnproto.PipelineFactory { + public Factory() { + } + public final Reader constructReader(org.capnproto.SegmentReader segment, int data,int pointers, int dataSize, short pointerCount, int nestingLimit) { + return new Reader(segment,data,pointers,dataSize,pointerCount,nestingLimit); + } + public final Builder constructBuilder(org.capnproto.SegmentBuilder segment, int data,int pointers, int dataSize, short pointerCount) { + return new Builder(segment, data, pointers, dataSize, pointerCount); + } + public final org.capnproto.StructSize structSize() { + return Type.Struct.STRUCT_SIZE; + } + public final Reader asReader(Builder builder) { + return builder.asReader(); + } + public Pipeline newPipeline(org.capnproto.RemotePromise promise) { + return new Pipeline(promise); + } + } + public static final Factory factory = new Factory(); + public static final org.capnproto.StructList.Factory listFactory = + new org.capnproto.StructList.Factory(factory); + public static final class Builder extends org.capnproto.StructBuilder { + Builder(org.capnproto.SegmentBuilder segment, int data, int pointers,int dataSize, short pointerCount){ + super(segment, data, pointers, dataSize, pointerCount); + } + public final Reader asReader() { + return new Reader(segment, data, pointers, dataSize, pointerCount, 0x7fffffff); + } + public final long getTypeId() { + return _getLongField(1); + } + public final void setTypeId(long value) { + _setLongField(1, value); + } + + public final org.capnproto.Schema.Brand.Builder getBrand() { + return _getPointerField(org.capnproto.Schema.Brand.factory, 0, null, 0); + } + public final void setBrand(org.capnproto.Schema.Brand.Reader value) { + _setPointerField(org.capnproto.Schema.Brand.factory,0, value); + } + public final org.capnproto.Schema.Brand.Builder initBrand() { + return _initPointerField(org.capnproto.Schema.Brand.factory,0, 0); + } + } + + public static final class Reader extends org.capnproto.StructReader { + Reader(org.capnproto.SegmentReader segment, int data, int pointers,int dataSize, short pointerCount, int nestingLimit){ + super(segment, data, pointers, dataSize, pointerCount, nestingLimit); + } + + public final long getTypeId() { + return _getLongField(1); + } + + public boolean hasBrand() { + return !_pointerFieldIsNull(0); + } + public org.capnproto.Schema.Brand.Reader getBrand() { + return _getPointerField(org.capnproto.Schema.Brand.factory,0,null, 0); + } + + } + + public static class Pipeline extends org.capnproto.Pipeline { + public Pipeline(org.capnproto.RemotePromise remotePromise) { + super(org.capnproto.RemotePromise.fromTypeless(factory, remotePromise)); + } + } + } + + public static class Interface { + public static final org.capnproto.StructSize STRUCT_SIZE = new org.capnproto.StructSize((short)3,(short)1); + public static final class Factory + extends org.capnproto.StructFactory + implements org.capnproto.PipelineFactory { + public Factory() { + } + public final Reader constructReader(org.capnproto.SegmentReader segment, int data,int pointers, int dataSize, short pointerCount, int nestingLimit) { + return new Reader(segment,data,pointers,dataSize,pointerCount,nestingLimit); + } + public final Builder constructBuilder(org.capnproto.SegmentBuilder segment, int data,int pointers, int dataSize, short pointerCount) { + return new Builder(segment, data, pointers, dataSize, pointerCount); + } + public final org.capnproto.StructSize structSize() { + return Type.Interface.STRUCT_SIZE; + } + public final Reader asReader(Builder builder) { + return builder.asReader(); + } + public Pipeline newPipeline(org.capnproto.RemotePromise promise) { + return new Pipeline(promise); + } + } + public static final Factory factory = new Factory(); + public static final org.capnproto.StructList.Factory listFactory = + new org.capnproto.StructList.Factory(factory); + public static final class Builder extends org.capnproto.StructBuilder { + Builder(org.capnproto.SegmentBuilder segment, int data, int pointers,int dataSize, short pointerCount){ + super(segment, data, pointers, dataSize, pointerCount); + } + public final Reader asReader() { + return new Reader(segment, data, pointers, dataSize, pointerCount, 0x7fffffff); + } + public final long getTypeId() { + return _getLongField(1); + } + public final void setTypeId(long value) { + _setLongField(1, value); + } + + public final org.capnproto.Schema.Brand.Builder getBrand() { + return _getPointerField(org.capnproto.Schema.Brand.factory, 0, null, 0); + } + public final void setBrand(org.capnproto.Schema.Brand.Reader value) { + _setPointerField(org.capnproto.Schema.Brand.factory,0, value); + } + public final org.capnproto.Schema.Brand.Builder initBrand() { + return _initPointerField(org.capnproto.Schema.Brand.factory,0, 0); + } + } + + public static final class Reader extends org.capnproto.StructReader { + Reader(org.capnproto.SegmentReader segment, int data, int pointers,int dataSize, short pointerCount, int nestingLimit){ + super(segment, data, pointers, dataSize, pointerCount, nestingLimit); + } + + public final long getTypeId() { + return _getLongField(1); + } + + public boolean hasBrand() { + return !_pointerFieldIsNull(0); + } + public org.capnproto.Schema.Brand.Reader getBrand() { + return _getPointerField(org.capnproto.Schema.Brand.factory,0,null, 0); + } + + } + + public static class Pipeline extends org.capnproto.Pipeline { + public Pipeline(org.capnproto.RemotePromise remotePromise) { + super(org.capnproto.RemotePromise.fromTypeless(factory, remotePromise)); + } + } + } + + public static class AnyPointer { + public static final org.capnproto.StructSize STRUCT_SIZE = new org.capnproto.StructSize((short)3,(short)1); + public static final class Factory + extends org.capnproto.StructFactory + implements org.capnproto.PipelineFactory { + public Factory() { + } + public final Reader constructReader(org.capnproto.SegmentReader segment, int data,int pointers, int dataSize, short pointerCount, int nestingLimit) { + return new Reader(segment,data,pointers,dataSize,pointerCount,nestingLimit); + } + public final Builder constructBuilder(org.capnproto.SegmentBuilder segment, int data,int pointers, int dataSize, short pointerCount) { + return new Builder(segment, data, pointers, dataSize, pointerCount); + } + public final org.capnproto.StructSize structSize() { + return Type.AnyPointer.STRUCT_SIZE; + } + public final Reader asReader(Builder builder) { + return builder.asReader(); + } + public Pipeline newPipeline(org.capnproto.RemotePromise promise) { + return new Pipeline(promise); + } + } + public static final Factory factory = new Factory(); + public static final org.capnproto.StructList.Factory listFactory = + new org.capnproto.StructList.Factory(factory); + public static final class Builder extends org.capnproto.StructBuilder { + Builder(org.capnproto.SegmentBuilder segment, int data, int pointers,int dataSize, short pointerCount){ + super(segment, data, pointers, dataSize, pointerCount); + } + public Which which() { + switch(_getShortField(4)) { + case 0 : return Which.UNCONSTRAINED; + case 1 : return Which.PARAMETER; + case 2 : return Which.IMPLICIT_METHOD_PARAMETER; + default: return Which._NOT_IN_SCHEMA; + } + } + public final Reader asReader() { + return new Reader(segment, data, pointers, dataSize, pointerCount, 0x7fffffff); + } + public final boolean isUnconstrained() { + return which() == Type.AnyPointer.Which.UNCONSTRAINED; + } + public final Unconstrained.Builder getUnconstrained() { + return new Type.AnyPointer.Unconstrained.Builder(segment, data, pointers, dataSize, pointerCount); + } + public final Unconstrained.Builder initUnconstrained() { + _setShortField(4, (short)Type.AnyPointer.Which.UNCONSTRAINED.ordinal()); + _setShortField(5,(short)0); + return new Type.AnyPointer.Unconstrained.Builder(segment, data, pointers, dataSize, pointerCount); + } + + public final boolean isParameter() { + return which() == Type.AnyPointer.Which.PARAMETER; + } + public final Parameter.Builder getParameter() { + return new Type.AnyPointer.Parameter.Builder(segment, data, pointers, dataSize, pointerCount); + } + public final Parameter.Builder initParameter() { + _setShortField(4, (short)Type.AnyPointer.Which.PARAMETER.ordinal()); + _setShortField(5,(short)0); + _setLongField(2,0L); + return new Type.AnyPointer.Parameter.Builder(segment, data, pointers, dataSize, pointerCount); + } + + public final boolean isImplicitMethodParameter() { + return which() == Type.AnyPointer.Which.IMPLICIT_METHOD_PARAMETER; + } + public final ImplicitMethodParameter.Builder getImplicitMethodParameter() { + return new Type.AnyPointer.ImplicitMethodParameter.Builder(segment, data, pointers, dataSize, pointerCount); + } + public final ImplicitMethodParameter.Builder initImplicitMethodParameter() { + _setShortField(4, (short)Type.AnyPointer.Which.IMPLICIT_METHOD_PARAMETER.ordinal()); + _setShortField(5,(short)0); + return new Type.AnyPointer.ImplicitMethodParameter.Builder(segment, data, pointers, dataSize, pointerCount); + } + + } + + public static final class Reader extends org.capnproto.StructReader { + Reader(org.capnproto.SegmentReader segment, int data, int pointers,int dataSize, short pointerCount, int nestingLimit){ + super(segment, data, pointers, dataSize, pointerCount, nestingLimit); + } + + public Which which() { + switch(_getShortField(4)) { + case 0 : return Which.UNCONSTRAINED; + case 1 : return Which.PARAMETER; + case 2 : return Which.IMPLICIT_METHOD_PARAMETER; + default: return Which._NOT_IN_SCHEMA; + } + } + public final boolean isUnconstrained() { + return which() == Type.AnyPointer.Which.UNCONSTRAINED; + } + public Unconstrained.Reader getUnconstrained() { + return new Type.AnyPointer.Unconstrained.Reader(segment, data, pointers, dataSize, pointerCount, nestingLimit); + } + + public final boolean isParameter() { + return which() == Type.AnyPointer.Which.PARAMETER; + } + public Parameter.Reader getParameter() { + return new Type.AnyPointer.Parameter.Reader(segment, data, pointers, dataSize, pointerCount, nestingLimit); + } + + public final boolean isImplicitMethodParameter() { + return which() == Type.AnyPointer.Which.IMPLICIT_METHOD_PARAMETER; + } + public ImplicitMethodParameter.Reader getImplicitMethodParameter() { + return new Type.AnyPointer.ImplicitMethodParameter.Reader(segment, data, pointers, dataSize, pointerCount, nestingLimit); + } + + } + + public enum Which { + UNCONSTRAINED, + PARAMETER, + IMPLICIT_METHOD_PARAMETER, + _NOT_IN_SCHEMA, + } + public static class Unconstrained { + public static final org.capnproto.StructSize STRUCT_SIZE = new org.capnproto.StructSize((short)3,(short)1); + public static final class Factory + extends org.capnproto.StructFactory + implements org.capnproto.PipelineFactory { + public Factory() { + } + public final Reader constructReader(org.capnproto.SegmentReader segment, int data,int pointers, int dataSize, short pointerCount, int nestingLimit) { + return new Reader(segment,data,pointers,dataSize,pointerCount,nestingLimit); + } + public final Builder constructBuilder(org.capnproto.SegmentBuilder segment, int data,int pointers, int dataSize, short pointerCount) { + return new Builder(segment, data, pointers, dataSize, pointerCount); + } + public final org.capnproto.StructSize structSize() { + return Type.AnyPointer.Unconstrained.STRUCT_SIZE; + } + public final Reader asReader(Builder builder) { + return builder.asReader(); + } + public Pipeline newPipeline(org.capnproto.RemotePromise promise) { + return new Pipeline(promise); + } + } + public static final Factory factory = new Factory(); + public static final org.capnproto.StructList.Factory listFactory = + new org.capnproto.StructList.Factory(factory); + public static final class Builder extends org.capnproto.StructBuilder { + Builder(org.capnproto.SegmentBuilder segment, int data, int pointers,int dataSize, short pointerCount){ + super(segment, data, pointers, dataSize, pointerCount); + } + public Which which() { + switch(_getShortField(5)) { + case 0 : return Which.ANY_KIND; + case 1 : return Which.STRUCT; + case 2 : return Which.LIST; + case 3 : return Which.CAPABILITY; + default: return Which._NOT_IN_SCHEMA; + } + } + public final Reader asReader() { + return new Reader(segment, data, pointers, dataSize, pointerCount, 0x7fffffff); + } + public final boolean isAnyKind() { + return which() == Type.AnyPointer.Unconstrained.Which.ANY_KIND; + } + public final org.capnproto.Void getAnyKind() { + assert which() == Type.AnyPointer.Unconstrained.Which.ANY_KIND: + "Must check which() before get()ing a union member."; + return org.capnproto.Void.VOID; + } + public final void setAnyKind(org.capnproto.Void value) { + _setShortField(5, (short)Type.AnyPointer.Unconstrained.Which.ANY_KIND.ordinal()); + } + + public final boolean isStruct() { + return which() == Type.AnyPointer.Unconstrained.Which.STRUCT; + } + public final org.capnproto.Void getStruct() { + assert which() == Type.AnyPointer.Unconstrained.Which.STRUCT: + "Must check which() before get()ing a union member."; + return org.capnproto.Void.VOID; + } + public final void setStruct(org.capnproto.Void value) { + _setShortField(5, (short)Type.AnyPointer.Unconstrained.Which.STRUCT.ordinal()); + } + + public final boolean isList() { + return which() == Type.AnyPointer.Unconstrained.Which.LIST; + } + public final org.capnproto.Void getList() { + assert which() == Type.AnyPointer.Unconstrained.Which.LIST: + "Must check which() before get()ing a union member."; + return org.capnproto.Void.VOID; + } + public final void setList(org.capnproto.Void value) { + _setShortField(5, (short)Type.AnyPointer.Unconstrained.Which.LIST.ordinal()); + } + + public final boolean isCapability() { + return which() == Type.AnyPointer.Unconstrained.Which.CAPABILITY; + } + public final org.capnproto.Void getCapability() { + assert which() == Type.AnyPointer.Unconstrained.Which.CAPABILITY: + "Must check which() before get()ing a union member."; + return org.capnproto.Void.VOID; + } + public final void setCapability(org.capnproto.Void value) { + _setShortField(5, (short)Type.AnyPointer.Unconstrained.Which.CAPABILITY.ordinal()); + } + + } + + public static final class Reader extends org.capnproto.StructReader { + Reader(org.capnproto.SegmentReader segment, int data, int pointers,int dataSize, short pointerCount, int nestingLimit){ + super(segment, data, pointers, dataSize, pointerCount, nestingLimit); + } + + public Which which() { + switch(_getShortField(5)) { + case 0 : return Which.ANY_KIND; + case 1 : return Which.STRUCT; + case 2 : return Which.LIST; + case 3 : return Which.CAPABILITY; + default: return Which._NOT_IN_SCHEMA; + } + } + public final boolean isAnyKind() { + return which() == Type.AnyPointer.Unconstrained.Which.ANY_KIND; + } + public final org.capnproto.Void getAnyKind() { + assert which() == Type.AnyPointer.Unconstrained.Which.ANY_KIND: + "Must check which() before get()ing a union member."; + return org.capnproto.Void.VOID; + } + + public final boolean isStruct() { + return which() == Type.AnyPointer.Unconstrained.Which.STRUCT; + } + public final org.capnproto.Void getStruct() { + assert which() == Type.AnyPointer.Unconstrained.Which.STRUCT: + "Must check which() before get()ing a union member."; + return org.capnproto.Void.VOID; + } + + public final boolean isList() { + return which() == Type.AnyPointer.Unconstrained.Which.LIST; + } + public final org.capnproto.Void getList() { + assert which() == Type.AnyPointer.Unconstrained.Which.LIST: + "Must check which() before get()ing a union member."; + return org.capnproto.Void.VOID; + } + + public final boolean isCapability() { + return which() == Type.AnyPointer.Unconstrained.Which.CAPABILITY; + } + public final org.capnproto.Void getCapability() { + assert which() == Type.AnyPointer.Unconstrained.Which.CAPABILITY: + "Must check which() before get()ing a union member."; + return org.capnproto.Void.VOID; + } + + } + + public enum Which { + ANY_KIND, + STRUCT, + LIST, + CAPABILITY, + _NOT_IN_SCHEMA, + } + public static class Pipeline extends org.capnproto.Pipeline { + public Pipeline(org.capnproto.RemotePromise remotePromise) { + super(org.capnproto.RemotePromise.fromTypeless(factory, remotePromise)); + } + } + } + + public static class Parameter { + public static final org.capnproto.StructSize STRUCT_SIZE = new org.capnproto.StructSize((short)3,(short)1); + public static final class Factory + extends org.capnproto.StructFactory + implements org.capnproto.PipelineFactory { + public Factory() { + } + public final Reader constructReader(org.capnproto.SegmentReader segment, int data,int pointers, int dataSize, short pointerCount, int nestingLimit) { + return new Reader(segment,data,pointers,dataSize,pointerCount,nestingLimit); + } + public final Builder constructBuilder(org.capnproto.SegmentBuilder segment, int data,int pointers, int dataSize, short pointerCount) { + return new Builder(segment, data, pointers, dataSize, pointerCount); + } + public final org.capnproto.StructSize structSize() { + return Type.AnyPointer.Parameter.STRUCT_SIZE; + } + public final Reader asReader(Builder builder) { + return builder.asReader(); + } + public Pipeline newPipeline(org.capnproto.RemotePromise promise) { + return new Pipeline(promise); + } + } + public static final Factory factory = new Factory(); + public static final org.capnproto.StructList.Factory listFactory = + new org.capnproto.StructList.Factory(factory); + public static final class Builder extends org.capnproto.StructBuilder { + Builder(org.capnproto.SegmentBuilder segment, int data, int pointers,int dataSize, short pointerCount){ + super(segment, data, pointers, dataSize, pointerCount); + } + public final Reader asReader() { + return new Reader(segment, data, pointers, dataSize, pointerCount, 0x7fffffff); + } + public final long getScopeId() { + return _getLongField(2); + } + public final void setScopeId(long value) { + _setLongField(2, value); + } + + public final short getParameterIndex() { + return _getShortField(5); + } + public final void setParameterIndex(short value) { + _setShortField(5, value); + } + + } + + public static final class Reader extends org.capnproto.StructReader { + Reader(org.capnproto.SegmentReader segment, int data, int pointers,int dataSize, short pointerCount, int nestingLimit){ + super(segment, data, pointers, dataSize, pointerCount, nestingLimit); + } + + public final long getScopeId() { + return _getLongField(2); + } + + public final short getParameterIndex() { + return _getShortField(5); + } + + } + + public static class Pipeline extends org.capnproto.Pipeline { + public Pipeline(org.capnproto.RemotePromise remotePromise) { + super(org.capnproto.RemotePromise.fromTypeless(factory, remotePromise)); + } + } + } + + public static class ImplicitMethodParameter { + public static final org.capnproto.StructSize STRUCT_SIZE = new org.capnproto.StructSize((short)3,(short)1); + public static final class Factory + extends org.capnproto.StructFactory + implements org.capnproto.PipelineFactory { + public Factory() { + } + public final Reader constructReader(org.capnproto.SegmentReader segment, int data,int pointers, int dataSize, short pointerCount, int nestingLimit) { + return new Reader(segment,data,pointers,dataSize,pointerCount,nestingLimit); + } + public final Builder constructBuilder(org.capnproto.SegmentBuilder segment, int data,int pointers, int dataSize, short pointerCount) { + return new Builder(segment, data, pointers, dataSize, pointerCount); + } + public final org.capnproto.StructSize structSize() { + return Type.AnyPointer.ImplicitMethodParameter.STRUCT_SIZE; + } + public final Reader asReader(Builder builder) { + return builder.asReader(); + } + public Pipeline newPipeline(org.capnproto.RemotePromise promise) { + return new Pipeline(promise); + } + } + public static final Factory factory = new Factory(); + public static final org.capnproto.StructList.Factory listFactory = + new org.capnproto.StructList.Factory(factory); + public static final class Builder extends org.capnproto.StructBuilder { + Builder(org.capnproto.SegmentBuilder segment, int data, int pointers,int dataSize, short pointerCount){ + super(segment, data, pointers, dataSize, pointerCount); + } + public final Reader asReader() { + return new Reader(segment, data, pointers, dataSize, pointerCount, 0x7fffffff); + } + public final short getParameterIndex() { + return _getShortField(5); + } + public final void setParameterIndex(short value) { + _setShortField(5, value); + } + + } + + public static final class Reader extends org.capnproto.StructReader { + Reader(org.capnproto.SegmentReader segment, int data, int pointers,int dataSize, short pointerCount, int nestingLimit){ + super(segment, data, pointers, dataSize, pointerCount, nestingLimit); + } + + public final short getParameterIndex() { + return _getShortField(5); + } + + } + + public static class Pipeline extends org.capnproto.Pipeline { + public Pipeline(org.capnproto.RemotePromise remotePromise) { + super(org.capnproto.RemotePromise.fromTypeless(factory, remotePromise)); + } + } + } + + public static class Pipeline extends org.capnproto.Pipeline { + public Pipeline(org.capnproto.RemotePromise remotePromise) { + super(org.capnproto.RemotePromise.fromTypeless(factory, remotePromise)); + } + } + } + + public static class Pipeline extends org.capnproto.Pipeline { + public Pipeline(org.capnproto.RemotePromise remotePromise) { + super(org.capnproto.RemotePromise.fromTypeless(factory, remotePromise)); + } + } + } + + public static class Brand { + public static final org.capnproto.StructSize STRUCT_SIZE = new org.capnproto.StructSize((short)0,(short)1); + public static final class Factory + extends org.capnproto.StructFactory + implements org.capnproto.PipelineFactory { + public Factory() { + } + public final Reader constructReader(org.capnproto.SegmentReader segment, int data,int pointers, int dataSize, short pointerCount, int nestingLimit) { + return new Reader(segment,data,pointers,dataSize,pointerCount,nestingLimit); + } + public final Builder constructBuilder(org.capnproto.SegmentBuilder segment, int data,int pointers, int dataSize, short pointerCount) { + return new Builder(segment, data, pointers, dataSize, pointerCount); + } + public final org.capnproto.StructSize structSize() { + return Brand.STRUCT_SIZE; + } + public final Reader asReader(Builder builder) { + return builder.asReader(); + } + public Pipeline newPipeline(org.capnproto.RemotePromise promise) { + return new Pipeline(promise); + } + } + public static final Factory factory = new Factory(); + public static final org.capnproto.StructList.Factory listFactory = + new org.capnproto.StructList.Factory(factory); + public static final class Builder extends org.capnproto.StructBuilder { + Builder(org.capnproto.SegmentBuilder segment, int data, int pointers,int dataSize, short pointerCount){ + super(segment, data, pointers, dataSize, pointerCount); + } + public final Reader asReader() { + return new Reader(segment, data, pointers, dataSize, pointerCount, 0x7fffffff); + } + public final boolean hasScopes() { + return !_pointerFieldIsNull(0); + } + public final org.capnproto.StructList.Builder getScopes() { + return _getPointerField(org.capnproto.Schema.Brand.Scope.listFactory, 0, null, 0); + } + public final void setScopes(org.capnproto.StructList.Reader value) { + _setPointerField(org.capnproto.Schema.Brand.Scope.listFactory, 0, value); + } + public final org.capnproto.StructList.Builder initScopes(int size) { + return _initPointerField(org.capnproto.Schema.Brand.Scope.listFactory, 0, size); + } + } + + public static final class Reader extends org.capnproto.StructReader { + Reader(org.capnproto.SegmentReader segment, int data, int pointers,int dataSize, short pointerCount, int nestingLimit){ + super(segment, data, pointers, dataSize, pointerCount, nestingLimit); + } + + public final boolean hasScopes() { + return !_pointerFieldIsNull(0); + } + public final org.capnproto.StructList.Reader getScopes() { + return _getPointerField(org.capnproto.Schema.Brand.Scope.listFactory, 0, null, 0); + } + + } + + public static class Scope { + public static final org.capnproto.StructSize STRUCT_SIZE = new org.capnproto.StructSize((short)2,(short)1); + public static final class Factory + extends org.capnproto.StructFactory + implements org.capnproto.PipelineFactory { + public Factory() { + } + public final Reader constructReader(org.capnproto.SegmentReader segment, int data,int pointers, int dataSize, short pointerCount, int nestingLimit) { + return new Reader(segment,data,pointers,dataSize,pointerCount,nestingLimit); + } + public final Builder constructBuilder(org.capnproto.SegmentBuilder segment, int data,int pointers, int dataSize, short pointerCount) { + return new Builder(segment, data, pointers, dataSize, pointerCount); + } + public final org.capnproto.StructSize structSize() { + return Brand.Scope.STRUCT_SIZE; + } + public final Reader asReader(Builder builder) { + return builder.asReader(); + } + public Pipeline newPipeline(org.capnproto.RemotePromise promise) { + return new Pipeline(promise); + } + } + public static final Factory factory = new Factory(); + public static final org.capnproto.StructList.Factory listFactory = + new org.capnproto.StructList.Factory(factory); + public static final class Builder extends org.capnproto.StructBuilder { + Builder(org.capnproto.SegmentBuilder segment, int data, int pointers,int dataSize, short pointerCount){ + super(segment, data, pointers, dataSize, pointerCount); + } + public Which which() { + switch(_getShortField(4)) { + case 0 : return Which.BIND; + case 1 : return Which.INHERIT; + default: return Which._NOT_IN_SCHEMA; + } + } + public final Reader asReader() { + return new Reader(segment, data, pointers, dataSize, pointerCount, 0x7fffffff); + } + public final long getScopeId() { + return _getLongField(0); + } + public final void setScopeId(long value) { + _setLongField(0, value); + } + + public final boolean isBind() { + return which() == Brand.Scope.Which.BIND; + } + public final boolean hasBind() { + return !_pointerFieldIsNull(0); + } + public final org.capnproto.StructList.Builder getBind() { + return _getPointerField(org.capnproto.Schema.Brand.Binding.listFactory, 0, null, 0); + } + public final void setBind(org.capnproto.StructList.Reader value) { + _setShortField(4, (short)Brand.Scope.Which.BIND.ordinal()); + _setPointerField(org.capnproto.Schema.Brand.Binding.listFactory, 0, value); + } + public final org.capnproto.StructList.Builder initBind(int size) { + _setShortField(4, (short)Brand.Scope.Which.BIND.ordinal()); + return _initPointerField(org.capnproto.Schema.Brand.Binding.listFactory, 0, size); + } + public final boolean isInherit() { + return which() == Brand.Scope.Which.INHERIT; + } + public final org.capnproto.Void getInherit() { + assert which() == Brand.Scope.Which.INHERIT: + "Must check which() before get()ing a union member."; + return org.capnproto.Void.VOID; + } + public final void setInherit(org.capnproto.Void value) { + _setShortField(4, (short)Brand.Scope.Which.INHERIT.ordinal()); + } + + } + + public static final class Reader extends org.capnproto.StructReader { + Reader(org.capnproto.SegmentReader segment, int data, int pointers,int dataSize, short pointerCount, int nestingLimit){ + super(segment, data, pointers, dataSize, pointerCount, nestingLimit); + } + + public Which which() { + switch(_getShortField(4)) { + case 0 : return Which.BIND; + case 1 : return Which.INHERIT; + default: return Which._NOT_IN_SCHEMA; + } + } + public final long getScopeId() { + return _getLongField(0); + } + + public final boolean isBind() { + return which() == Brand.Scope.Which.BIND; + } + public final boolean hasBind() { + return !_pointerFieldIsNull(0); + } + public final org.capnproto.StructList.Reader getBind() { + return _getPointerField(org.capnproto.Schema.Brand.Binding.listFactory, 0, null, 0); + } + + public final boolean isInherit() { + return which() == Brand.Scope.Which.INHERIT; + } + public final org.capnproto.Void getInherit() { + assert which() == Brand.Scope.Which.INHERIT: + "Must check which() before get()ing a union member."; + return org.capnproto.Void.VOID; + } + + } + + public enum Which { + BIND, + INHERIT, + _NOT_IN_SCHEMA, + } + public static class Pipeline extends org.capnproto.Pipeline { + public Pipeline(org.capnproto.RemotePromise remotePromise) { + super(org.capnproto.RemotePromise.fromTypeless(factory, remotePromise)); + } + } + } + + public static class Binding { + public static final org.capnproto.StructSize STRUCT_SIZE = new org.capnproto.StructSize((short)1,(short)1); + public static final class Factory + extends org.capnproto.StructFactory + implements org.capnproto.PipelineFactory { + public Factory() { + } + public final Reader constructReader(org.capnproto.SegmentReader segment, int data,int pointers, int dataSize, short pointerCount, int nestingLimit) { + return new Reader(segment,data,pointers,dataSize,pointerCount,nestingLimit); + } + public final Builder constructBuilder(org.capnproto.SegmentBuilder segment, int data,int pointers, int dataSize, short pointerCount) { + return new Builder(segment, data, pointers, dataSize, pointerCount); + } + public final org.capnproto.StructSize structSize() { + return Brand.Binding.STRUCT_SIZE; + } + public final Reader asReader(Builder builder) { + return builder.asReader(); + } + public Pipeline newPipeline(org.capnproto.RemotePromise promise) { + return new Pipeline(promise); + } + } + public static final Factory factory = new Factory(); + public static final org.capnproto.StructList.Factory listFactory = + new org.capnproto.StructList.Factory(factory); + public static final class Builder extends org.capnproto.StructBuilder { + Builder(org.capnproto.SegmentBuilder segment, int data, int pointers,int dataSize, short pointerCount){ + super(segment, data, pointers, dataSize, pointerCount); + } + public Which which() { + switch(_getShortField(0)) { + case 0 : return Which.UNBOUND; + case 1 : return Which.TYPE; + default: return Which._NOT_IN_SCHEMA; + } + } + public final Reader asReader() { + return new Reader(segment, data, pointers, dataSize, pointerCount, 0x7fffffff); + } + public final boolean isUnbound() { + return which() == Brand.Binding.Which.UNBOUND; + } + public final org.capnproto.Void getUnbound() { + assert which() == Brand.Binding.Which.UNBOUND: + "Must check which() before get()ing a union member."; + return org.capnproto.Void.VOID; + } + public final void setUnbound(org.capnproto.Void value) { + _setShortField(0, (short)Brand.Binding.Which.UNBOUND.ordinal()); + } + + public final boolean isType() { + return which() == Brand.Binding.Which.TYPE; + } + public final org.capnproto.Schema.Type.Builder getType() { + assert which() == Brand.Binding.Which.TYPE: + "Must check which() before get()ing a union member."; + return _getPointerField(org.capnproto.Schema.Type.factory, 0, null, 0); + } + public final void setType(org.capnproto.Schema.Type.Reader value) { + _setShortField(0, (short)Brand.Binding.Which.TYPE.ordinal()); + _setPointerField(org.capnproto.Schema.Type.factory,0, value); + } + public final org.capnproto.Schema.Type.Builder initType() { + _setShortField(0, (short)Brand.Binding.Which.TYPE.ordinal()); + return _initPointerField(org.capnproto.Schema.Type.factory,0, 0); + } + } + + public static final class Reader extends org.capnproto.StructReader { + Reader(org.capnproto.SegmentReader segment, int data, int pointers,int dataSize, short pointerCount, int nestingLimit){ + super(segment, data, pointers, dataSize, pointerCount, nestingLimit); + } + + public Which which() { + switch(_getShortField(0)) { + case 0 : return Which.UNBOUND; + case 1 : return Which.TYPE; + default: return Which._NOT_IN_SCHEMA; + } + } + public final boolean isUnbound() { + return which() == Brand.Binding.Which.UNBOUND; + } + public final org.capnproto.Void getUnbound() { + assert which() == Brand.Binding.Which.UNBOUND: + "Must check which() before get()ing a union member."; + return org.capnproto.Void.VOID; + } + + public final boolean isType() { + return which() == Brand.Binding.Which.TYPE; + } + public boolean hasType() { + return !_pointerFieldIsNull(0); + } + public org.capnproto.Schema.Type.Reader getType() { + assert which() == Brand.Binding.Which.TYPE: + "Must check which() before get()ing a union member."; + return _getPointerField(org.capnproto.Schema.Type.factory,0,null, 0); + } + + } + + public enum Which { + UNBOUND, + TYPE, + _NOT_IN_SCHEMA, + } + public static class Pipeline extends org.capnproto.Pipeline { + public Pipeline(org.capnproto.RemotePromise remotePromise) { + super(org.capnproto.RemotePromise.fromTypeless(factory, remotePromise)); + } + } + } + + public static class Pipeline extends org.capnproto.Pipeline { + public Pipeline(org.capnproto.RemotePromise remotePromise) { + super(org.capnproto.RemotePromise.fromTypeless(factory, remotePromise)); + } + } + } + + public static class Value { + public static final org.capnproto.StructSize STRUCT_SIZE = new org.capnproto.StructSize((short)2,(short)1); + public static final class Factory + extends org.capnproto.StructFactory + implements org.capnproto.PipelineFactory { + public Factory() { + } + public final Reader constructReader(org.capnproto.SegmentReader segment, int data,int pointers, int dataSize, short pointerCount, int nestingLimit) { + return new Reader(segment,data,pointers,dataSize,pointerCount,nestingLimit); + } + public final Builder constructBuilder(org.capnproto.SegmentBuilder segment, int data,int pointers, int dataSize, short pointerCount) { + return new Builder(segment, data, pointers, dataSize, pointerCount); + } + public final org.capnproto.StructSize structSize() { + return Value.STRUCT_SIZE; + } + public final Reader asReader(Builder builder) { + return builder.asReader(); + } + public Pipeline newPipeline(org.capnproto.RemotePromise promise) { + return new Pipeline(promise); + } + } + public static final Factory factory = new Factory(); + public static final org.capnproto.StructList.Factory listFactory = + new org.capnproto.StructList.Factory(factory); + public static final class Builder extends org.capnproto.StructBuilder { + Builder(org.capnproto.SegmentBuilder segment, int data, int pointers,int dataSize, short pointerCount){ + super(segment, data, pointers, dataSize, pointerCount); + } + public Which which() { + switch(_getShortField(0)) { + case 0 : return Which.VOID; + case 1 : return Which.BOOL; + case 2 : return Which.INT8; + case 3 : return Which.INT16; + case 4 : return Which.INT32; + case 5 : return Which.INT64; + case 6 : return Which.UINT8; + case 7 : return Which.UINT16; + case 8 : return Which.UINT32; + case 9 : return Which.UINT64; + case 10 : return Which.FLOAT32; + case 11 : return Which.FLOAT64; + case 12 : return Which.TEXT; + case 13 : return Which.DATA; + case 14 : return Which.LIST; + case 15 : return Which.ENUM; + case 16 : return Which.STRUCT; + case 17 : return Which.INTERFACE; + case 18 : return Which.ANY_POINTER; + default: return Which._NOT_IN_SCHEMA; + } + } + public final Reader asReader() { + return new Reader(segment, data, pointers, dataSize, pointerCount, 0x7fffffff); + } + public final boolean isVoid() { + return which() == Value.Which.VOID; + } + public final org.capnproto.Void getVoid() { + assert which() == Value.Which.VOID: + "Must check which() before get()ing a union member."; + return org.capnproto.Void.VOID; + } + public final void setVoid(org.capnproto.Void value) { + _setShortField(0, (short)Value.Which.VOID.ordinal()); + } + + public final boolean isBool() { + return which() == Value.Which.BOOL; + } + public final boolean getBool() { + assert which() == Value.Which.BOOL: + "Must check which() before get()ing a union member."; + return _getBooleanField(16); + } + public final void setBool(boolean value) { + _setShortField(0, (short)Value.Which.BOOL.ordinal()); + _setBooleanField(16, value); + } + + public final boolean isInt8() { + return which() == Value.Which.INT8; + } + public final byte getInt8() { + assert which() == Value.Which.INT8: + "Must check which() before get()ing a union member."; + return _getByteField(2); + } + public final void setInt8(byte value) { + _setShortField(0, (short)Value.Which.INT8.ordinal()); + _setByteField(2, value); + } + + public final boolean isInt16() { + return which() == Value.Which.INT16; + } + public final short getInt16() { + assert which() == Value.Which.INT16: + "Must check which() before get()ing a union member."; + return _getShortField(1); + } + public final void setInt16(short value) { + _setShortField(0, (short)Value.Which.INT16.ordinal()); + _setShortField(1, value); + } + + public final boolean isInt32() { + return which() == Value.Which.INT32; + } + public final int getInt32() { + assert which() == Value.Which.INT32: + "Must check which() before get()ing a union member."; + return _getIntField(1); + } + public final void setInt32(int value) { + _setShortField(0, (short)Value.Which.INT32.ordinal()); + _setIntField(1, value); + } + + public final boolean isInt64() { + return which() == Value.Which.INT64; + } + public final long getInt64() { + assert which() == Value.Which.INT64: + "Must check which() before get()ing a union member."; + return _getLongField(1); + } + public final void setInt64(long value) { + _setShortField(0, (short)Value.Which.INT64.ordinal()); + _setLongField(1, value); + } + + public final boolean isUint8() { + return which() == Value.Which.UINT8; + } + public final byte getUint8() { + assert which() == Value.Which.UINT8: + "Must check which() before get()ing a union member."; + return _getByteField(2); + } + public final void setUint8(byte value) { + _setShortField(0, (short)Value.Which.UINT8.ordinal()); + _setByteField(2, value); + } + + public final boolean isUint16() { + return which() == Value.Which.UINT16; + } + public final short getUint16() { + assert which() == Value.Which.UINT16: + "Must check which() before get()ing a union member."; + return _getShortField(1); + } + public final void setUint16(short value) { + _setShortField(0, (short)Value.Which.UINT16.ordinal()); + _setShortField(1, value); + } + + public final boolean isUint32() { + return which() == Value.Which.UINT32; + } + public final int getUint32() { + assert which() == Value.Which.UINT32: + "Must check which() before get()ing a union member."; + return _getIntField(1); + } + public final void setUint32(int value) { + _setShortField(0, (short)Value.Which.UINT32.ordinal()); + _setIntField(1, value); + } + + public final boolean isUint64() { + return which() == Value.Which.UINT64; + } + public final long getUint64() { + assert which() == Value.Which.UINT64: + "Must check which() before get()ing a union member."; + return _getLongField(1); + } + public final void setUint64(long value) { + _setShortField(0, (short)Value.Which.UINT64.ordinal()); + _setLongField(1, value); + } + + public final boolean isFloat32() { + return which() == Value.Which.FLOAT32; + } + public final float getFloat32() { + assert which() == Value.Which.FLOAT32: + "Must check which() before get()ing a union member."; + return _getFloatField(1); + } + public final void setFloat32(float value) { + _setShortField(0, (short)Value.Which.FLOAT32.ordinal()); + _setFloatField(1, value); + } + + public final boolean isFloat64() { + return which() == Value.Which.FLOAT64; + } + public final double getFloat64() { + assert which() == Value.Which.FLOAT64: + "Must check which() before get()ing a union member."; + return _getDoubleField(1); + } + public final void setFloat64(double value) { + _setShortField(0, (short)Value.Which.FLOAT64.ordinal()); + _setDoubleField(1, value); + } + + public final boolean isText() { + return which() == Value.Which.TEXT; + } + public final boolean hasText() { + if (which() != Value.Which.TEXT) return false; + return !_pointerFieldIsNull(0); + } + public final org.capnproto.Text.Builder getText() { + return _getPointerField(org.capnproto.Text.factory, 0, null, 0, 0); + } + public final void setText(org.capnproto.Text.Reader value) { + _setShortField(0, (short)Value.Which.TEXT.ordinal()); + _setPointerField(org.capnproto.Text.factory, 0, value); + } + public final void setText(String value) { + _setShortField(0, (short)Value.Which.TEXT.ordinal()); + _setPointerField(org.capnproto.Text.factory, 0, new org.capnproto.Text.Reader(value)); + } + public final org.capnproto.Text.Builder initText(int size) { + _setShortField(0, (short)Value.Which.TEXT.ordinal()); + return _initPointerField(org.capnproto.Text.factory, 0, size); + } + public final boolean isData() { + return which() == Value.Which.DATA; + } + public final boolean hasData() { + if (which() != Value.Which.DATA) return false; + return !_pointerFieldIsNull(0); + } + public final org.capnproto.Data.Builder getData() { + return _getPointerField(org.capnproto.Data.factory, 0, null, 0, 0); + } + public final void setData(org.capnproto.Data.Reader value) { + _setShortField(0, (short)Value.Which.DATA.ordinal()); + _setPointerField(org.capnproto.Data.factory, 0, value); + } + public final void setData(byte [] value) { + _setShortField(0, (short)Value.Which.DATA.ordinal()); + _setPointerField(org.capnproto.Data.factory, 0, new org.capnproto.Data.Reader(value)); + } + public final org.capnproto.Data.Builder initData(int size) { + _setShortField(0, (short)Value.Which.DATA.ordinal()); + return _initPointerField(org.capnproto.Data.factory, 0, size); + } + public final boolean isList() { + return which() == Value.Which.LIST; + } + public final boolean hasList() { + return !_pointerFieldIsNull(0); + } + public org.capnproto.AnyPointer.Builder getList() { + assert which() == Value.Which.LIST: + "Must check which() before get()ing a union member."; + return _getPointerField(org.capnproto.AnyPointer.factory, 0); + } + public org.capnproto.AnyPointer.Builder initList() { + _setShortField(0, (short)Value.Which.LIST.ordinal()); + return _initPointerField(org.capnproto.AnyPointer.factory, 0, 0); + } + public org.capnproto.AnyPointer.Builder initList(int size) { + _setShortField(0, (short)Value.Which.LIST.ordinal()); + return _initPointerField(org.capnproto.AnyPointer.factory, 0, size); + } + + public final boolean isEnum() { + return which() == Value.Which.ENUM; + } + public final short getEnum() { + assert which() == Value.Which.ENUM: + "Must check which() before get()ing a union member."; + return _getShortField(1); + } + public final void setEnum(short value) { + _setShortField(0, (short)Value.Which.ENUM.ordinal()); + _setShortField(1, value); + } + + public final boolean isStruct() { + return which() == Value.Which.STRUCT; + } + public final boolean hasStruct() { + return !_pointerFieldIsNull(0); + } + public org.capnproto.AnyPointer.Builder getStruct() { + assert which() == Value.Which.STRUCT: + "Must check which() before get()ing a union member."; + return _getPointerField(org.capnproto.AnyPointer.factory, 0); + } + public org.capnproto.AnyPointer.Builder initStruct() { + _setShortField(0, (short)Value.Which.STRUCT.ordinal()); + return _initPointerField(org.capnproto.AnyPointer.factory, 0, 0); + } + public org.capnproto.AnyPointer.Builder initStruct(int size) { + _setShortField(0, (short)Value.Which.STRUCT.ordinal()); + return _initPointerField(org.capnproto.AnyPointer.factory, 0, size); + } + + public final boolean isInterface() { + return which() == Value.Which.INTERFACE; + } + public final org.capnproto.Void getInterface() { + assert which() == Value.Which.INTERFACE: + "Must check which() before get()ing a union member."; + return org.capnproto.Void.VOID; + } + public final void setInterface(org.capnproto.Void value) { + _setShortField(0, (short)Value.Which.INTERFACE.ordinal()); + } + + public final boolean isAnyPointer() { + return which() == Value.Which.ANY_POINTER; + } + public final boolean hasAnyPointer() { + return !_pointerFieldIsNull(0); + } + public org.capnproto.AnyPointer.Builder getAnyPointer() { + assert which() == Value.Which.ANY_POINTER: + "Must check which() before get()ing a union member."; + return _getPointerField(org.capnproto.AnyPointer.factory, 0); + } + public org.capnproto.AnyPointer.Builder initAnyPointer() { + _setShortField(0, (short)Value.Which.ANY_POINTER.ordinal()); + return _initPointerField(org.capnproto.AnyPointer.factory, 0, 0); + } + public org.capnproto.AnyPointer.Builder initAnyPointer(int size) { + _setShortField(0, (short)Value.Which.ANY_POINTER.ordinal()); + return _initPointerField(org.capnproto.AnyPointer.factory, 0, size); + } + + } + + public static final class Reader extends org.capnproto.StructReader { + Reader(org.capnproto.SegmentReader segment, int data, int pointers,int dataSize, short pointerCount, int nestingLimit){ + super(segment, data, pointers, dataSize, pointerCount, nestingLimit); + } + + public Which which() { + switch(_getShortField(0)) { + case 0 : return Which.VOID; + case 1 : return Which.BOOL; + case 2 : return Which.INT8; + case 3 : return Which.INT16; + case 4 : return Which.INT32; + case 5 : return Which.INT64; + case 6 : return Which.UINT8; + case 7 : return Which.UINT16; + case 8 : return Which.UINT32; + case 9 : return Which.UINT64; + case 10 : return Which.FLOAT32; + case 11 : return Which.FLOAT64; + case 12 : return Which.TEXT; + case 13 : return Which.DATA; + case 14 : return Which.LIST; + case 15 : return Which.ENUM; + case 16 : return Which.STRUCT; + case 17 : return Which.INTERFACE; + case 18 : return Which.ANY_POINTER; + default: return Which._NOT_IN_SCHEMA; + } + } + public final boolean isVoid() { + return which() == Value.Which.VOID; + } + public final org.capnproto.Void getVoid() { + assert which() == Value.Which.VOID: + "Must check which() before get()ing a union member."; + return org.capnproto.Void.VOID; + } + + public final boolean isBool() { + return which() == Value.Which.BOOL; + } + public final boolean getBool() { + assert which() == Value.Which.BOOL: + "Must check which() before get()ing a union member."; + return _getBooleanField(16); + } + + public final boolean isInt8() { + return which() == Value.Which.INT8; + } + public final byte getInt8() { + assert which() == Value.Which.INT8: + "Must check which() before get()ing a union member."; + return _getByteField(2); + } + + public final boolean isInt16() { + return which() == Value.Which.INT16; + } + public final short getInt16() { + assert which() == Value.Which.INT16: + "Must check which() before get()ing a union member."; + return _getShortField(1); + } + + public final boolean isInt32() { + return which() == Value.Which.INT32; + } + public final int getInt32() { + assert which() == Value.Which.INT32: + "Must check which() before get()ing a union member."; + return _getIntField(1); + } + + public final boolean isInt64() { + return which() == Value.Which.INT64; + } + public final long getInt64() { + assert which() == Value.Which.INT64: + "Must check which() before get()ing a union member."; + return _getLongField(1); + } + + public final boolean isUint8() { + return which() == Value.Which.UINT8; + } + public final byte getUint8() { + assert which() == Value.Which.UINT8: + "Must check which() before get()ing a union member."; + return _getByteField(2); + } + + public final boolean isUint16() { + return which() == Value.Which.UINT16; + } + public final short getUint16() { + assert which() == Value.Which.UINT16: + "Must check which() before get()ing a union member."; + return _getShortField(1); + } + + public final boolean isUint32() { + return which() == Value.Which.UINT32; + } + public final int getUint32() { + assert which() == Value.Which.UINT32: + "Must check which() before get()ing a union member."; + return _getIntField(1); + } + + public final boolean isUint64() { + return which() == Value.Which.UINT64; + } + public final long getUint64() { + assert which() == Value.Which.UINT64: + "Must check which() before get()ing a union member."; + return _getLongField(1); + } + + public final boolean isFloat32() { + return which() == Value.Which.FLOAT32; + } + public final float getFloat32() { + assert which() == Value.Which.FLOAT32: + "Must check which() before get()ing a union member."; + return _getFloatField(1); + } + + public final boolean isFloat64() { + return which() == Value.Which.FLOAT64; + } + public final double getFloat64() { + assert which() == Value.Which.FLOAT64: + "Must check which() before get()ing a union member."; + return _getDoubleField(1); + } + + public final boolean isText() { + return which() == Value.Which.TEXT; + } + public boolean hasText() { + if (which() != Value.Which.TEXT) return false; + return !_pointerFieldIsNull(0); + } + public org.capnproto.Text.Reader getText() { + return _getPointerField(org.capnproto.Text.factory, 0, null, 0, 0); + } + + public final boolean isData() { + return which() == Value.Which.DATA; + } + public boolean hasData() { + if (which() != Value.Which.DATA) return false; + return !_pointerFieldIsNull(0); + } + public org.capnproto.Data.Reader getData() { + return _getPointerField(org.capnproto.Data.factory, 0, null, 0, 0); + } + + public final boolean isList() { + return which() == Value.Which.LIST; + } + public boolean hasList() { + if (which() != Value.Which.LIST) return false; + return !_pointerFieldIsNull(0); + } + public org.capnproto.AnyPointer.Reader getList() { + assert which() == Value.Which.LIST: + "Must check which() before get()ing a union member."; + return _getPointerField(org.capnproto.AnyPointer.factory, 0); + } + public final boolean isEnum() { + return which() == Value.Which.ENUM; + } + public final short getEnum() { + assert which() == Value.Which.ENUM: + "Must check which() before get()ing a union member."; + return _getShortField(1); + } + + public final boolean isStruct() { + return which() == Value.Which.STRUCT; + } + public boolean hasStruct() { + if (which() != Value.Which.STRUCT) return false; + return !_pointerFieldIsNull(0); + } + public org.capnproto.AnyPointer.Reader getStruct() { + assert which() == Value.Which.STRUCT: + "Must check which() before get()ing a union member."; + return _getPointerField(org.capnproto.AnyPointer.factory, 0); + } + public final boolean isInterface() { + return which() == Value.Which.INTERFACE; + } + public final org.capnproto.Void getInterface() { + assert which() == Value.Which.INTERFACE: + "Must check which() before get()ing a union member."; + return org.capnproto.Void.VOID; + } + + public final boolean isAnyPointer() { + return which() == Value.Which.ANY_POINTER; + } + public boolean hasAnyPointer() { + if (which() != Value.Which.ANY_POINTER) return false; + return !_pointerFieldIsNull(0); + } + public org.capnproto.AnyPointer.Reader getAnyPointer() { + assert which() == Value.Which.ANY_POINTER: + "Must check which() before get()ing a union member."; + return _getPointerField(org.capnproto.AnyPointer.factory, 0); + } + } + + public enum Which { + VOID, + BOOL, + INT8, + INT16, + INT32, + INT64, + UINT8, + UINT16, + UINT32, + UINT64, + FLOAT32, + FLOAT64, + TEXT, + DATA, + LIST, + ENUM, + STRUCT, + INTERFACE, + ANY_POINTER, + _NOT_IN_SCHEMA, + } + public static class Pipeline extends org.capnproto.Pipeline { + public Pipeline(org.capnproto.RemotePromise remotePromise) { + super(org.capnproto.RemotePromise.fromTypeless(factory, remotePromise)); + } + } + } + + public static class Annotation { + public static final org.capnproto.StructSize STRUCT_SIZE = new org.capnproto.StructSize((short)1,(short)2); + public static final class Factory + extends org.capnproto.StructFactory + implements org.capnproto.PipelineFactory { + public Factory() { + } + public final Reader constructReader(org.capnproto.SegmentReader segment, int data,int pointers, int dataSize, short pointerCount, int nestingLimit) { + return new Reader(segment,data,pointers,dataSize,pointerCount,nestingLimit); + } + public final Builder constructBuilder(org.capnproto.SegmentBuilder segment, int data,int pointers, int dataSize, short pointerCount) { + return new Builder(segment, data, pointers, dataSize, pointerCount); + } + public final org.capnproto.StructSize structSize() { + return Annotation.STRUCT_SIZE; + } + public final Reader asReader(Builder builder) { + return builder.asReader(); + } + public Pipeline newPipeline(org.capnproto.RemotePromise promise) { + return new Pipeline(promise); + } + } + public static final Factory factory = new Factory(); + public static final org.capnproto.StructList.Factory listFactory = + new org.capnproto.StructList.Factory(factory); + public static final class Builder extends org.capnproto.StructBuilder { + Builder(org.capnproto.SegmentBuilder segment, int data, int pointers,int dataSize, short pointerCount){ + super(segment, data, pointers, dataSize, pointerCount); + } + public final Reader asReader() { + return new Reader(segment, data, pointers, dataSize, pointerCount, 0x7fffffff); + } + public final long getId() { + return _getLongField(0); + } + public final void setId(long value) { + _setLongField(0, value); + } + + public final org.capnproto.Schema.Value.Builder getValue() { + return _getPointerField(org.capnproto.Schema.Value.factory, 0, null, 0); + } + public final void setValue(org.capnproto.Schema.Value.Reader value) { + _setPointerField(org.capnproto.Schema.Value.factory,0, value); + } + public final org.capnproto.Schema.Value.Builder initValue() { + return _initPointerField(org.capnproto.Schema.Value.factory,0, 0); + } + public final org.capnproto.Schema.Brand.Builder getBrand() { + return _getPointerField(org.capnproto.Schema.Brand.factory, 1, null, 0); + } + public final void setBrand(org.capnproto.Schema.Brand.Reader value) { + _setPointerField(org.capnproto.Schema.Brand.factory,1, value); + } + public final org.capnproto.Schema.Brand.Builder initBrand() { + return _initPointerField(org.capnproto.Schema.Brand.factory,1, 0); + } + } + + public static final class Reader extends org.capnproto.StructReader { + Reader(org.capnproto.SegmentReader segment, int data, int pointers,int dataSize, short pointerCount, int nestingLimit){ + super(segment, data, pointers, dataSize, pointerCount, nestingLimit); + } + + public final long getId() { + return _getLongField(0); + } + + public boolean hasValue() { + return !_pointerFieldIsNull(0); + } + public org.capnproto.Schema.Value.Reader getValue() { + return _getPointerField(org.capnproto.Schema.Value.factory,0,null, 0); + } + + public boolean hasBrand() { + return !_pointerFieldIsNull(1); + } + public org.capnproto.Schema.Brand.Reader getBrand() { + return _getPointerField(org.capnproto.Schema.Brand.factory,1,null, 0); + } + + } + + public static class Pipeline extends org.capnproto.Pipeline { + public Pipeline(org.capnproto.RemotePromise remotePromise) { + super(org.capnproto.RemotePromise.fromTypeless(factory, remotePromise)); + } + } + } + + public enum ElementSize { + EMPTY, + BIT, + BYTE, + TWO_BYTES, + FOUR_BYTES, + EIGHT_BYTES, + POINTER, + INLINE_COMPOSITE, + _NOT_IN_SCHEMA, + } + + public static class CapnpVersion { + public static final org.capnproto.StructSize STRUCT_SIZE = new org.capnproto.StructSize((short)1,(short)0); + public static final class Factory + extends org.capnproto.StructFactory + implements org.capnproto.PipelineFactory { + public Factory() { + } + public final Reader constructReader(org.capnproto.SegmentReader segment, int data,int pointers, int dataSize, short pointerCount, int nestingLimit) { + return new Reader(segment,data,pointers,dataSize,pointerCount,nestingLimit); + } + public final Builder constructBuilder(org.capnproto.SegmentBuilder segment, int data,int pointers, int dataSize, short pointerCount) { + return new Builder(segment, data, pointers, dataSize, pointerCount); + } + public final org.capnproto.StructSize structSize() { + return CapnpVersion.STRUCT_SIZE; + } + public final Reader asReader(Builder builder) { + return builder.asReader(); + } + public Pipeline newPipeline(org.capnproto.RemotePromise promise) { + return new Pipeline(promise); + } + } + public static final Factory factory = new Factory(); + public static final org.capnproto.StructList.Factory listFactory = + new org.capnproto.StructList.Factory(factory); + public static final class Builder extends org.capnproto.StructBuilder { + Builder(org.capnproto.SegmentBuilder segment, int data, int pointers,int dataSize, short pointerCount){ + super(segment, data, pointers, dataSize, pointerCount); + } + public final Reader asReader() { + return new Reader(segment, data, pointers, dataSize, pointerCount, 0x7fffffff); + } + public final short getMajor() { + return _getShortField(0); + } + public final void setMajor(short value) { + _setShortField(0, value); + } + + public final byte getMinor() { + return _getByteField(2); + } + public final void setMinor(byte value) { + _setByteField(2, value); + } + + public final byte getMicro() { + return _getByteField(3); + } + public final void setMicro(byte value) { + _setByteField(3, value); + } + + } + + public static final class Reader extends org.capnproto.StructReader { + Reader(org.capnproto.SegmentReader segment, int data, int pointers,int dataSize, short pointerCount, int nestingLimit){ + super(segment, data, pointers, dataSize, pointerCount, nestingLimit); + } + + public final short getMajor() { + return _getShortField(0); + } + + public final byte getMinor() { + return _getByteField(2); + } + + public final byte getMicro() { + return _getByteField(3); + } + + } + + public static class Pipeline extends org.capnproto.Pipeline { + public Pipeline(org.capnproto.RemotePromise remotePromise) { + super(org.capnproto.RemotePromise.fromTypeless(factory, remotePromise)); + } + } + } + + public static class CodeGeneratorRequest { + public static final org.capnproto.StructSize STRUCT_SIZE = new org.capnproto.StructSize((short)0,(short)4); + public static final class Factory + extends org.capnproto.StructFactory + implements org.capnproto.PipelineFactory { + public Factory() { + } + public final Reader constructReader(org.capnproto.SegmentReader segment, int data,int pointers, int dataSize, short pointerCount, int nestingLimit) { + return new Reader(segment,data,pointers,dataSize,pointerCount,nestingLimit); + } + public final Builder constructBuilder(org.capnproto.SegmentBuilder segment, int data,int pointers, int dataSize, short pointerCount) { + return new Builder(segment, data, pointers, dataSize, pointerCount); + } + public final org.capnproto.StructSize structSize() { + return CodeGeneratorRequest.STRUCT_SIZE; + } + public final Reader asReader(Builder builder) { + return builder.asReader(); + } + public Pipeline newPipeline(org.capnproto.RemotePromise promise) { + return new Pipeline(promise); + } + } + public static final Factory factory = new Factory(); + public static final org.capnproto.StructList.Factory listFactory = + new org.capnproto.StructList.Factory(factory); + public static final class Builder extends org.capnproto.StructBuilder { + Builder(org.capnproto.SegmentBuilder segment, int data, int pointers,int dataSize, short pointerCount){ + super(segment, data, pointers, dataSize, pointerCount); + } + public final Reader asReader() { + return new Reader(segment, data, pointers, dataSize, pointerCount, 0x7fffffff); + } + public final boolean hasNodes() { + return !_pointerFieldIsNull(0); + } + public final org.capnproto.StructList.Builder getNodes() { + return _getPointerField(org.capnproto.Schema.Node.listFactory, 0, null, 0); + } + public final void setNodes(org.capnproto.StructList.Reader value) { + _setPointerField(org.capnproto.Schema.Node.listFactory, 0, value); + } + public final org.capnproto.StructList.Builder initNodes(int size) { + return _initPointerField(org.capnproto.Schema.Node.listFactory, 0, size); + } + public final boolean hasRequestedFiles() { + return !_pointerFieldIsNull(1); + } + public final org.capnproto.StructList.Builder getRequestedFiles() { + return _getPointerField(org.capnproto.Schema.CodeGeneratorRequest.RequestedFile.listFactory, 1, null, 0); + } + public final void setRequestedFiles(org.capnproto.StructList.Reader value) { + _setPointerField(org.capnproto.Schema.CodeGeneratorRequest.RequestedFile.listFactory, 1, value); + } + public final org.capnproto.StructList.Builder initRequestedFiles(int size) { + return _initPointerField(org.capnproto.Schema.CodeGeneratorRequest.RequestedFile.listFactory, 1, size); + } + public final org.capnproto.Schema.CapnpVersion.Builder getCapnpVersion() { + return _getPointerField(org.capnproto.Schema.CapnpVersion.factory, 2, null, 0); + } + public final void setCapnpVersion(org.capnproto.Schema.CapnpVersion.Reader value) { + _setPointerField(org.capnproto.Schema.CapnpVersion.factory,2, value); + } + public final org.capnproto.Schema.CapnpVersion.Builder initCapnpVersion() { + return _initPointerField(org.capnproto.Schema.CapnpVersion.factory,2, 0); + } + public final boolean hasSourceInfo() { + return !_pointerFieldIsNull(3); + } + public final org.capnproto.StructList.Builder getSourceInfo() { + return _getPointerField(org.capnproto.Schema.Node.SourceInfo.listFactory, 3, null, 0); + } + public final void setSourceInfo(org.capnproto.StructList.Reader value) { + _setPointerField(org.capnproto.Schema.Node.SourceInfo.listFactory, 3, value); + } + public final org.capnproto.StructList.Builder initSourceInfo(int size) { + return _initPointerField(org.capnproto.Schema.Node.SourceInfo.listFactory, 3, size); + } + } + + public static final class Reader extends org.capnproto.StructReader { + Reader(org.capnproto.SegmentReader segment, int data, int pointers,int dataSize, short pointerCount, int nestingLimit){ + super(segment, data, pointers, dataSize, pointerCount, nestingLimit); + } + + public final boolean hasNodes() { + return !_pointerFieldIsNull(0); + } + public final org.capnproto.StructList.Reader getNodes() { + return _getPointerField(org.capnproto.Schema.Node.listFactory, 0, null, 0); + } + + public final boolean hasRequestedFiles() { + return !_pointerFieldIsNull(1); + } + public final org.capnproto.StructList.Reader getRequestedFiles() { + return _getPointerField(org.capnproto.Schema.CodeGeneratorRequest.RequestedFile.listFactory, 1, null, 0); + } + + public boolean hasCapnpVersion() { + return !_pointerFieldIsNull(2); + } + public org.capnproto.Schema.CapnpVersion.Reader getCapnpVersion() { + return _getPointerField(org.capnproto.Schema.CapnpVersion.factory,2,null, 0); + } + + public final boolean hasSourceInfo() { + return !_pointerFieldIsNull(3); + } + public final org.capnproto.StructList.Reader getSourceInfo() { + return _getPointerField(org.capnproto.Schema.Node.SourceInfo.listFactory, 3, null, 0); + } + + } + + public static class RequestedFile { + public static final org.capnproto.StructSize STRUCT_SIZE = new org.capnproto.StructSize((short)1,(short)2); + public static final class Factory + extends org.capnproto.StructFactory + implements org.capnproto.PipelineFactory { + public Factory() { + } + public final Reader constructReader(org.capnproto.SegmentReader segment, int data,int pointers, int dataSize, short pointerCount, int nestingLimit) { + return new Reader(segment,data,pointers,dataSize,pointerCount,nestingLimit); + } + public final Builder constructBuilder(org.capnproto.SegmentBuilder segment, int data,int pointers, int dataSize, short pointerCount) { + return new Builder(segment, data, pointers, dataSize, pointerCount); + } + public final org.capnproto.StructSize structSize() { + return CodeGeneratorRequest.RequestedFile.STRUCT_SIZE; + } + public final Reader asReader(Builder builder) { + return builder.asReader(); + } + public Pipeline newPipeline(org.capnproto.RemotePromise promise) { + return new Pipeline(promise); + } + } + public static final Factory factory = new Factory(); + public static final org.capnproto.StructList.Factory listFactory = + new org.capnproto.StructList.Factory(factory); + public static final class Builder extends org.capnproto.StructBuilder { + Builder(org.capnproto.SegmentBuilder segment, int data, int pointers,int dataSize, short pointerCount){ + super(segment, data, pointers, dataSize, pointerCount); + } + public final Reader asReader() { + return new Reader(segment, data, pointers, dataSize, pointerCount, 0x7fffffff); + } + public final long getId() { + return _getLongField(0); + } + public final void setId(long value) { + _setLongField(0, value); + } + + public final boolean hasFilename() { + return !_pointerFieldIsNull(0); + } + public final org.capnproto.Text.Builder getFilename() { + return _getPointerField(org.capnproto.Text.factory, 0, null, 0, 0); + } + public final void setFilename(org.capnproto.Text.Reader value) { + _setPointerField(org.capnproto.Text.factory, 0, value); + } + public final void setFilename(String value) { + _setPointerField(org.capnproto.Text.factory, 0, new org.capnproto.Text.Reader(value)); + } + public final org.capnproto.Text.Builder initFilename(int size) { + return _initPointerField(org.capnproto.Text.factory, 0, size); + } + public final boolean hasImports() { + return !_pointerFieldIsNull(1); + } + public final org.capnproto.StructList.Builder getImports() { + return _getPointerField(org.capnproto.Schema.CodeGeneratorRequest.RequestedFile.Import.listFactory, 1, null, 0); + } + public final void setImports(org.capnproto.StructList.Reader value) { + _setPointerField(org.capnproto.Schema.CodeGeneratorRequest.RequestedFile.Import.listFactory, 1, value); + } + public final org.capnproto.StructList.Builder initImports(int size) { + return _initPointerField(org.capnproto.Schema.CodeGeneratorRequest.RequestedFile.Import.listFactory, 1, size); + } + } + + public static final class Reader extends org.capnproto.StructReader { + Reader(org.capnproto.SegmentReader segment, int data, int pointers,int dataSize, short pointerCount, int nestingLimit){ + super(segment, data, pointers, dataSize, pointerCount, nestingLimit); + } + + public final long getId() { + return _getLongField(0); + } + + public boolean hasFilename() { + return !_pointerFieldIsNull(0); + } + public org.capnproto.Text.Reader getFilename() { + return _getPointerField(org.capnproto.Text.factory, 0, null, 0, 0); + } + + public final boolean hasImports() { + return !_pointerFieldIsNull(1); + } + public final org.capnproto.StructList.Reader getImports() { + return _getPointerField(org.capnproto.Schema.CodeGeneratorRequest.RequestedFile.Import.listFactory, 1, null, 0); + } + + } + + public static class Import { + public static final org.capnproto.StructSize STRUCT_SIZE = new org.capnproto.StructSize((short)1,(short)1); + public static final class Factory + extends org.capnproto.StructFactory + implements org.capnproto.PipelineFactory { + public Factory() { + } + public final Reader constructReader(org.capnproto.SegmentReader segment, int data,int pointers, int dataSize, short pointerCount, int nestingLimit) { + return new Reader(segment,data,pointers,dataSize,pointerCount,nestingLimit); + } + public final Builder constructBuilder(org.capnproto.SegmentBuilder segment, int data,int pointers, int dataSize, short pointerCount) { + return new Builder(segment, data, pointers, dataSize, pointerCount); + } + public final org.capnproto.StructSize structSize() { + return CodeGeneratorRequest.RequestedFile.Import.STRUCT_SIZE; + } + public final Reader asReader(Builder builder) { + return builder.asReader(); + } + public Pipeline newPipeline(org.capnproto.RemotePromise promise) { + return new Pipeline(promise); + } + } + public static final Factory factory = new Factory(); + public static final org.capnproto.StructList.Factory listFactory = + new org.capnproto.StructList.Factory(factory); + public static final class Builder extends org.capnproto.StructBuilder { + Builder(org.capnproto.SegmentBuilder segment, int data, int pointers,int dataSize, short pointerCount){ + super(segment, data, pointers, dataSize, pointerCount); + } + public final Reader asReader() { + return new Reader(segment, data, pointers, dataSize, pointerCount, 0x7fffffff); + } + public final long getId() { + return _getLongField(0); + } + public final void setId(long value) { + _setLongField(0, value); + } + + public final boolean hasName() { + return !_pointerFieldIsNull(0); + } + public final org.capnproto.Text.Builder getName() { + return _getPointerField(org.capnproto.Text.factory, 0, null, 0, 0); + } + public final void setName(org.capnproto.Text.Reader value) { + _setPointerField(org.capnproto.Text.factory, 0, value); + } + public final void setName(String value) { + _setPointerField(org.capnproto.Text.factory, 0, new org.capnproto.Text.Reader(value)); + } + public final org.capnproto.Text.Builder initName(int size) { + return _initPointerField(org.capnproto.Text.factory, 0, size); + } + } + + public static final class Reader extends org.capnproto.StructReader { + Reader(org.capnproto.SegmentReader segment, int data, int pointers,int dataSize, short pointerCount, int nestingLimit){ + super(segment, data, pointers, dataSize, pointerCount, nestingLimit); + } + + public final long getId() { + return _getLongField(0); + } + + public boolean hasName() { + return !_pointerFieldIsNull(0); + } + public org.capnproto.Text.Reader getName() { + return _getPointerField(org.capnproto.Text.factory, 0, null, 0, 0); + } + + } + + public static class Pipeline extends org.capnproto.Pipeline { + public Pipeline(org.capnproto.RemotePromise remotePromise) { + super(org.capnproto.RemotePromise.fromTypeless(factory, remotePromise)); + } + } + } + + public static class Pipeline extends org.capnproto.Pipeline { + public Pipeline(org.capnproto.RemotePromise remotePromise) { + super(org.capnproto.RemotePromise.fromTypeless(factory, remotePromise)); + } + } + } + + public static class Pipeline extends org.capnproto.Pipeline { + public Pipeline(org.capnproto.RemotePromise remotePromise) { + super(org.capnproto.RemotePromise.fromTypeless(factory, remotePromise)); + } + } + } + + +public static final class Schemas { +public static final org.capnproto.SegmentReader b_e682ab4cf923a417 = + org.capnproto.GeneratedClassSupport.decodeRawBytes( + "\u0000\u0000\u0000\u0000\u0005\u0000\u0006\u0000" + + "\u0017\u00a4\u0023\u00f9\u004c\u00ab\u0082\u00e6" + + "\u0031\u0000\u0000\u0000\u0001\u0000\u0005\u0000" + + "\u00d9\u0072\u004c\u0062\u0009\u00c5\u003f\u00a9" + + "\u0006\u0000\u0007\u0000\u0000\u0000\u0006\u0000" + + "\u0006\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0015\u0000\u0000\u0000\u00b2\u0001\u0000\u0000" + + "\u002d\u0000\u0000\u0000\u0037\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0059\u0000\u0000\u0000\u0017\u0003\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0072\u0075\u006e\u0074\u0069\u006d\u0065\u002f" + + "\u0073\u0072\u0063\u002f\u006d\u0061\u0069\u006e" + + "\u002f\u006a\u0061\u0076\u0061\u002f\u006f\u0072" + + "\u0067\u002f\u0063\u0061\u0070\u006e\u0070\u0072" + + "\u006f\u0074\u006f\u002f\u0073\u0063\u0068\u0065" + + "\u006d\u0061\u002e\u0063\u0061\u0070\u006e\u0070" + + "\u003a\u004e\u006f\u0064\u0065\u0000\u0000\u0000" + + "\u000c\u0000\u0000\u0000\u0001\u0000\u0001\u0000" + + "\u00b1\u00a3\u000f\u00f1\u00cc\u001b\u0052\u00b9" + + "\u0011\u0000\u0000\u0000\u0052\u0000\u0000\u0000" + + "\u0042\u00c2\u000f\u00fa\u00bb\u0055\u00bf\u00de" + + "\u0011\u0000\u0000\u0000\u005a\u0000\u0000\u0000" + + "\u00ae\u0057\u0013\u0004\u00e3\u001d\u008e\u00f3" + + "\u0011\u0000\u0000\u0000\u005a\u0000\u0000\u0000" + + "\u0050\u0061\u0072\u0061\u006d\u0065\u0074\u0065" + + "\u0072\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u004e\u0065\u0073\u0074\u0065\u0064\u004e\u006f" + + "\u0064\u0065\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0053\u006f\u0075\u0072\u0063\u0065\u0049\u006e" + + "\u0066\u006f\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0038\u0000\u0000\u0000\u0003\u0000\u0004\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0001\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0079\u0001\u0000\u0000\u001a\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0074\u0001\u0000\u0000\u0003\u0000\u0001\u0000" + + "\u0080\u0001\u0000\u0000\u0002\u0000\u0001\u0000" + + "\u0001\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0001\u0000\u0001\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u007d\u0001\u0000\u0000\u0062\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u007c\u0001\u0000\u0000\u0003\u0000\u0001\u0000" + + "\u0088\u0001\u0000\u0000\u0002\u0000\u0001\u0000" + + "\u0002\u0000\u0000\u0000\u0002\u0000\u0000\u0000" + + "\u0000\u0000\u0001\u0000\u0002\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0085\u0001\u0000\u0000\u00c2\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0088\u0001\u0000\u0000\u0003\u0000\u0001\u0000" + + "\u0094\u0001\u0000\u0000\u0002\u0000\u0001\u0000" + + "\u0003\u0000\u0000\u0000\u0002\u0000\u0000\u0000" + + "\u0000\u0000\u0001\u0000\u0003\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0091\u0001\u0000\u0000\u0042\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u008c\u0001\u0000\u0000\u0003\u0000\u0001\u0000" + + "\u0098\u0001\u0000\u0000\u0002\u0000\u0001\u0000" + + "\u0006\u0000\u0000\u0000\u0001\u0000\u0000\u0000" + + "\u0000\u0000\u0001\u0000\u0004\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0095\u0001\u0000\u0000\u0062\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0094\u0001\u0000\u0000\u0003\u0000\u0001\u0000" + + "\u00b0\u0001\u0000\u0000\u0002\u0000\u0001\u0000" + + "\u0007\u0000\u0000\u0000\u0002\u0000\u0000\u0000" + + "\u0000\u0000\u0001\u0000\u0005\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u00ad\u0001\u0000\u0000\u0062\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u00ac\u0001\u0000\u0000\u0003\u0000\u0001\u0000" + + "\u00c8\u0001\u0000\u0000\u0002\u0000\u0001\u0000" + + "\u0008\u0000\u00ff\u00ff\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0001\u0000\u0006\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u00c5\u0001\u0000\u0000\u002a\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u00c0\u0001\u0000\u0000\u0003\u0000\u0001\u0000" + + "\u00cc\u0001\u0000\u0000\u0002\u0000\u0001\u0000" + + "\u0009\u0000\u00fe\u00ff\u0000\u0000\u0000\u0000" + + "\u0001\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0035\u0044\u00fb\u0037\u009b\u00b1\u00a0\u009e" + + "\u00c9\u0001\u0000\u0000\u003a\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\n\u0000\u00fd\u00ff\u0000\u0000\u0000\u0000" + + "\u0001\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0098\u00f5\u0033\u0043\u0036\u00b3\u004a\u00b5" + + "\u00b1\u0001\u0000\u0000\u002a\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u000b\u0000\u00fc\u00ff\u0000\u0000\u0000\u0000" + + "\u0001\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u008f\u0021\u00c2\u00f0\u00cf\u0053\u0027\u00e8" + + "\u0099\u0001\u0000\u0000\u0052\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u000c\u0000\u00fb\u00ff\u0000\u0000\u0000\u0000" + + "\u0001\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0020\u0094\r\u007a\u00ac\u00a5\u008a\u00b1" + + "\u0085\u0001\u0000\u0000\u0032\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\r\u0000\u00fa\u00ff\u0000\u0000\u0000\u0000" + + "\u0001\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0090\u0002\n\u0040\u00d4\u0019\u0016\u00ec" + + "\u006d\u0001\u0000\u0000\u005a\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0004\u0000\u0000\u0000\u0005\u0000\u0000\u0000" + + "\u0000\u0000\u0001\u0000\u0020\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0059\u0001\u0000\u0000\u005a\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0058\u0001\u0000\u0000\u0003\u0000\u0001\u0000" + + "\u0074\u0001\u0000\u0000\u0002\u0000\u0001\u0000" + + "\u0005\u0000\u0000\u0000\u0020\u0001\u0000\u0000" + + "\u0000\u0000\u0001\u0000\u0021\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0071\u0001\u0000\u0000\u0052\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0070\u0001\u0000\u0000\u0003\u0000\u0001\u0000" + + "\u007c\u0001\u0000\u0000\u0002\u0000\u0001\u0000" + + "\u0069\u0064\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0009\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0009\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0064\u0069\u0073\u0070\u006c\u0061\u0079\u004e" + + "\u0061\u006d\u0065\u0000\u0000\u0000\u0000\u0000" + + "\u000c\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u000c\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0064\u0069\u0073\u0070\u006c\u0061\u0079\u004e" + + "\u0061\u006d\u0065\u0050\u0072\u0065\u0066\u0069" + + "\u0078\u004c\u0065\u006e\u0067\u0074\u0068\u0000" + + "\u0008\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0008\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0073\u0063\u006f\u0070\u0065\u0049\u0064\u0000" + + "\u0009\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0009\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u006e\u0065\u0073\u0074\u0065\u0064\u004e\u006f" + + "\u0064\u0065\u0073\u0000\u0000\u0000\u0000\u0000" + + "\u000e\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0003\u0000\u0001\u0000" + + "\u0010\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0042\u00c2\u000f\u00fa\u00bb\u0055\u00bf\u00de" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u000e\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0061\u006e\u006e\u006f\u0074\u0061\u0074\u0069" + + "\u006f\u006e\u0073\u0000\u0000\u0000\u0000\u0000" + + "\u000e\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0003\u0000\u0001\u0000" + + "\u0010\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0042\u0075\u0025\u00ab\r\u0095\u00c8\u00f1" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u000e\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0066\u0069\u006c\u0065\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0073\u0074\u0072\u0075\u0063\u0074\u0000\u0000" + + "\u0065\u006e\u0075\u006d\u0000\u0000\u0000\u0000" + + "\u0069\u006e\u0074\u0065\u0072\u0066\u0061\u0063" + + "\u0065\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0063\u006f\u006e\u0073\u0074\u0000\u0000\u0000" + + "\u0061\u006e\u006e\u006f\u0074\u0061\u0074\u0069" + + "\u006f\u006e\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0070\u0061\u0072\u0061\u006d\u0065\u0074\u0065" + + "\u0072\u0073\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u000e\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0003\u0000\u0001\u0000" + + "\u0010\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u00b1\u00a3\u000f\u00f1\u00cc\u001b\u0052\u00b9" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u000e\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0069\u0073\u0047\u0065\u006e\u0065\u0072\u0069" + + "\u0063\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0001\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0001\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + ""); +public static final org.capnproto.SegmentReader b_b9521bccf10fa3b1 = + org.capnproto.GeneratedClassSupport.decodeRawBytes( + "\u0000\u0000\u0000\u0000\u0005\u0000\u0006\u0000" + + "\u00b1\u00a3\u000f\u00f1\u00cc\u001b\u0052\u00b9" + + "\u0036\u0000\u0000\u0000\u0001\u0000\u0000\u0000" + + "\u0017\u00a4\u0023\u00f9\u004c\u00ab\u0082\u00e6" + + "\u0001\u0000\u0007\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0015\u0000\u0000\u0000\u0002\u0002\u0000\u0000" + + "\u0031\u0000\u0000\u0000\u0007\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u002d\u0000\u0000\u0000\u003f\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0072\u0075\u006e\u0074\u0069\u006d\u0065\u002f" + + "\u0073\u0072\u0063\u002f\u006d\u0061\u0069\u006e" + + "\u002f\u006a\u0061\u0076\u0061\u002f\u006f\u0072" + + "\u0067\u002f\u0063\u0061\u0070\u006e\u0070\u0072" + + "\u006f\u0074\u006f\u002f\u0073\u0063\u0068\u0065" + + "\u006d\u0061\u002e\u0063\u0061\u0070\u006e\u0070" + + "\u003a\u004e\u006f\u0064\u0065\u002e\u0050\u0061" + + "\u0072\u0061\u006d\u0065\u0074\u0065\u0072\u0000" + + "\u0000\u0000\u0000\u0000\u0001\u0000\u0001\u0000" + + "\u0004\u0000\u0000\u0000\u0003\u0000\u0004\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0001\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\r\u0000\u0000\u0000\u002a\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0008\u0000\u0000\u0000\u0003\u0000\u0001\u0000" + + "\u0014\u0000\u0000\u0000\u0002\u0000\u0001\u0000" + + "\u006e\u0061\u006d\u0065\u0000\u0000\u0000\u0000" + + "\u000c\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u000c\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + ""); +public static final org.capnproto.SegmentReader b_debf55bbfa0fc242 = + org.capnproto.GeneratedClassSupport.decodeRawBytes( + "\u0000\u0000\u0000\u0000\u0005\u0000\u0006\u0000" + + "\u0042\u00c2\u000f\u00fa\u00bb\u0055\u00bf\u00de" + + "\u0036\u0000\u0000\u0000\u0001\u0000\u0001\u0000" + + "\u0017\u00a4\u0023\u00f9\u004c\u00ab\u0082\u00e6" + + "\u0001\u0000\u0007\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0015\u0000\u0000\u0000\n\u0002\u0000\u0000" + + "\u0035\u0000\u0000\u0000\u0007\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0031\u0000\u0000\u0000\u0077\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0072\u0075\u006e\u0074\u0069\u006d\u0065\u002f" + + "\u0073\u0072\u0063\u002f\u006d\u0061\u0069\u006e" + + "\u002f\u006a\u0061\u0076\u0061\u002f\u006f\u0072" + + "\u0067\u002f\u0063\u0061\u0070\u006e\u0070\u0072" + + "\u006f\u0074\u006f\u002f\u0073\u0063\u0068\u0065" + + "\u006d\u0061\u002e\u0063\u0061\u0070\u006e\u0070" + + "\u003a\u004e\u006f\u0064\u0065\u002e\u004e\u0065" + + "\u0073\u0074\u0065\u0064\u004e\u006f\u0064\u0065" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0001\u0000\u0001\u0000" + + "\u0008\u0000\u0000\u0000\u0003\u0000\u0004\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0001\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0029\u0000\u0000\u0000\u002a\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0024\u0000\u0000\u0000\u0003\u0000\u0001\u0000" + + "\u0030\u0000\u0000\u0000\u0002\u0000\u0001\u0000" + + "\u0001\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0001\u0000\u0001\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u002d\u0000\u0000\u0000\u001a\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0028\u0000\u0000\u0000\u0003\u0000\u0001\u0000" + + "\u0034\u0000\u0000\u0000\u0002\u0000\u0001\u0000" + + "\u006e\u0061\u006d\u0065\u0000\u0000\u0000\u0000" + + "\u000c\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u000c\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0069\u0064\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0009\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0009\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + ""); +public static final org.capnproto.SegmentReader b_f38e1de3041357ae = + org.capnproto.GeneratedClassSupport.decodeRawBytes( + "\u0000\u0000\u0000\u0000\u0005\u0000\u0006\u0000" + + "\u00ae\u0057\u0013\u0004\u00e3\u001d\u008e\u00f3" + + "\u0036\u0000\u0000\u0000\u0001\u0000\u0001\u0000" + + "\u0017\u00a4\u0023\u00f9\u004c\u00ab\u0082\u00e6" + + "\u0002\u0000\u0007\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0015\u0000\u0000\u0000\n\u0002\u0000\u0000" + + "\u0035\u0000\u0000\u0000\u0017\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u003d\u0000\u0000\u0000\u00af\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0072\u0075\u006e\u0074\u0069\u006d\u0065\u002f" + + "\u0073\u0072\u0063\u002f\u006d\u0061\u0069\u006e" + + "\u002f\u006a\u0061\u0076\u0061\u002f\u006f\u0072" + + "\u0067\u002f\u0063\u0061\u0070\u006e\u0070\u0072" + + "\u006f\u0074\u006f\u002f\u0073\u0063\u0068\u0065" + + "\u006d\u0061\u002e\u0063\u0061\u0070\u006e\u0070" + + "\u003a\u004e\u006f\u0064\u0065\u002e\u0053\u006f" + + "\u0075\u0072\u0063\u0065\u0049\u006e\u0066\u006f" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0004\u0000\u0000\u0000\u0001\u0000\u0001\u0000" + + "\u00a2\u001f\u008e\u0089\u0038\u0090\u00ba\u00c2" + + "\u0001\u0000\u0000\u0000\u003a\u0000\u0000\u0000" + + "\u004d\u0065\u006d\u0062\u0065\u0072\u0000\u0000" + + "\u000c\u0000\u0000\u0000\u0003\u0000\u0004\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0001\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0045\u0000\u0000\u0000\u001a\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0040\u0000\u0000\u0000\u0003\u0000\u0001\u0000" + + "\u004c\u0000\u0000\u0000\u0002\u0000\u0001\u0000" + + "\u0001\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0001\u0000\u0001\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0049\u0000\u0000\u0000\u005a\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0048\u0000\u0000\u0000\u0003\u0000\u0001\u0000" + + "\u0054\u0000\u0000\u0000\u0002\u0000\u0001\u0000" + + "\u0002\u0000\u0000\u0000\u0001\u0000\u0000\u0000" + + "\u0000\u0000\u0001\u0000\u0002\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0051\u0000\u0000\u0000\u0042\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u004c\u0000\u0000\u0000\u0003\u0000\u0001\u0000" + + "\u0068\u0000\u0000\u0000\u0002\u0000\u0001\u0000" + + "\u0069\u0064\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0009\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0009\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0064\u006f\u0063\u0043\u006f\u006d\u006d\u0065" + + "\u006e\u0074\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u000c\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u000c\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u006d\u0065\u006d\u0062\u0065\u0072\u0073\u0000" + + "\u000e\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0003\u0000\u0001\u0000" + + "\u0010\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u00a2\u001f\u008e\u0089\u0038\u0090\u00ba\u00c2" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u000e\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + ""); +public static final org.capnproto.SegmentReader b_c2ba9038898e1fa2 = + org.capnproto.GeneratedClassSupport.decodeRawBytes( + "\u0000\u0000\u0000\u0000\u0005\u0000\u0006\u0000" + + "\u00a2\u001f\u008e\u0089\u0038\u0090\u00ba\u00c2" + + "\u0041\u0000\u0000\u0000\u0001\u0000\u0000\u0000" + + "\u00ae\u0057\u0013\u0004\u00e3\u001d\u008e\u00f3" + + "\u0001\u0000\u0007\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0015\u0000\u0000\u0000\u0042\u0002\u0000\u0000" + + "\u0035\u0000\u0000\u0000\u0007\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0031\u0000\u0000\u0000\u003f\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0072\u0075\u006e\u0074\u0069\u006d\u0065\u002f" + + "\u0073\u0072\u0063\u002f\u006d\u0061\u0069\u006e" + + "\u002f\u006a\u0061\u0076\u0061\u002f\u006f\u0072" + + "\u0067\u002f\u0063\u0061\u0070\u006e\u0070\u0072" + + "\u006f\u0074\u006f\u002f\u0073\u0063\u0068\u0065" + + "\u006d\u0061\u002e\u0063\u0061\u0070\u006e\u0070" + + "\u003a\u004e\u006f\u0064\u0065\u002e\u0053\u006f" + + "\u0075\u0072\u0063\u0065\u0049\u006e\u0066\u006f" + + "\u002e\u004d\u0065\u006d\u0062\u0065\u0072\u0000" + + "\u0000\u0000\u0000\u0000\u0001\u0000\u0001\u0000" + + "\u0004\u0000\u0000\u0000\u0003\u0000\u0004\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0001\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\r\u0000\u0000\u0000\u005a\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u000c\u0000\u0000\u0000\u0003\u0000\u0001\u0000" + + "\u0018\u0000\u0000\u0000\u0002\u0000\u0001\u0000" + + "\u0064\u006f\u0063\u0043\u006f\u006d\u006d\u0065" + + "\u006e\u0074\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u000c\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u000c\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + ""); +public static final org.capnproto.SegmentReader b_9ea0b19b37fb4435 = + org.capnproto.GeneratedClassSupport.decodeRawBytes( + "\u0000\u0000\u0000\u0000\u0005\u0000\u0006\u0000" + + "\u0035\u0044\u00fb\u0037\u009b\u00b1\u00a0\u009e" + + "\u0036\u0000\u0000\u0000\u0001\u0000\u0005\u0000" + + "\u0017\u00a4\u0023\u00f9\u004c\u00ab\u0082\u00e6" + + "\u0006\u0000\u0007\u0000\u0001\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0015\u0000\u0000\u0000\u00ea\u0001\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0029\u0000\u0000\u0000\u008f\u0001\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0072\u0075\u006e\u0074\u0069\u006d\u0065\u002f" + + "\u0073\u0072\u0063\u002f\u006d\u0061\u0069\u006e" + + "\u002f\u006a\u0061\u0076\u0061\u002f\u006f\u0072" + + "\u0067\u002f\u0063\u0061\u0070\u006e\u0070\u0072" + + "\u006f\u0074\u006f\u002f\u0073\u0063\u0068\u0065" + + "\u006d\u0061\u002e\u0063\u0061\u0070\u006e\u0070" + + "\u003a\u004e\u006f\u0064\u0065\u002e\u0073\u0074" + + "\u0072\u0075\u0063\u0074\u0000\u0000\u0000\u0000" + + "\u001c\u0000\u0000\u0000\u0003\u0000\u0004\u0000" + + "\u0000\u0000\u0000\u0000\u0007\u0000\u0000\u0000" + + "\u0000\u0000\u0001\u0000\u0007\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u00b5\u0000\u0000\u0000\u0072\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u00b4\u0000\u0000\u0000\u0003\u0000\u0001\u0000" + + "\u00c0\u0000\u0000\u0000\u0002\u0000\u0001\u0000" + + "\u0001\u0000\u0000\u0000\u000c\u0000\u0000\u0000" + + "\u0000\u0000\u0001\u0000\u0008\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u00bd\u0000\u0000\u0000\u006a\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u00bc\u0000\u0000\u0000\u0003\u0000\u0001\u0000" + + "\u00c8\u0000\u0000\u0000\u0002\u0000\u0001\u0000" + + "\u0002\u0000\u0000\u0000\r\u0000\u0000\u0000" + + "\u0000\u0000\u0001\u0000\u0009\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u00c5\u0000\u0000\u0000\u00b2\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u00c8\u0000\u0000\u0000\u0003\u0000\u0001\u0000" + + "\u00d4\u0000\u0000\u0000\u0002\u0000\u0001\u0000" + + "\u0003\u0000\u0000\u0000\u00e0\u0000\u0000\u0000" + + "\u0000\u0000\u0001\u0000\n\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u00d1\u0000\u0000\u0000\u0042\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u00cc\u0000\u0000\u0000\u0003\u0000\u0001\u0000" + + "\u00d8\u0000\u0000\u0000\u0002\u0000\u0001\u0000" + + "\u0004\u0000\u0000\u0000\u000f\u0000\u0000\u0000" + + "\u0000\u0000\u0001\u0000\u000b\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u00d5\u0000\u0000\u0000\u0092\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u00d8\u0000\u0000\u0000\u0003\u0000\u0001\u0000" + + "\u00e4\u0000\u0000\u0000\u0002\u0000\u0001\u0000" + + "\u0005\u0000\u0000\u0000\u0008\u0000\u0000\u0000" + + "\u0000\u0000\u0001\u0000\u000c\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u00e1\u0000\u0000\u0000\u009a\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u00e4\u0000\u0000\u0000\u0003\u0000\u0001\u0000" + + "\u00f0\u0000\u0000\u0000\u0002\u0000\u0001\u0000" + + "\u0006\u0000\u0000\u0000\u0003\u0000\u0000\u0000" + + "\u0000\u0000\u0001\u0000\r\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u00ed\u0000\u0000\u0000\u003a\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u00e8\u0000\u0000\u0000\u0003\u0000\u0001\u0000" + + "\u0004\u0001\u0000\u0000\u0002\u0000\u0001\u0000" + + "\u0064\u0061\u0074\u0061\u0057\u006f\u0072\u0064" + + "\u0043\u006f\u0075\u006e\u0074\u0000\u0000\u0000" + + "\u0007\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0007\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0070\u006f\u0069\u006e\u0074\u0065\u0072\u0043" + + "\u006f\u0075\u006e\u0074\u0000\u0000\u0000\u0000" + + "\u0007\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0007\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0070\u0072\u0065\u0066\u0065\u0072\u0072\u0065" + + "\u0064\u004c\u0069\u0073\u0074\u0045\u006e\u0063" + + "\u006f\u0064\u0069\u006e\u0067\u0000\u0000\u0000" + + "\u000f\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0026\u0019\u0052\u00ba\u007d\u008f\u0095\u00d1" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u000f\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0069\u0073\u0047\u0072\u006f\u0075\u0070\u0000" + + "\u0001\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0001\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0064\u0069\u0073\u0063\u0072\u0069\u006d\u0069" + + "\u006e\u0061\u006e\u0074\u0043\u006f\u0075\u006e" + + "\u0074\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0007\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0007\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0064\u0069\u0073\u0063\u0072\u0069\u006d\u0069" + + "\u006e\u0061\u006e\u0074\u004f\u0066\u0066\u0073" + + "\u0065\u0074\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0008\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0008\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0066\u0069\u0065\u006c\u0064\u0073\u0000\u0000" + + "\u000e\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0003\u0000\u0001\u0000" + + "\u0010\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u005f\u00f4\u004a\u001f\u00a4\u0050\u00ad\u009a" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u000e\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + ""); +public static final org.capnproto.SegmentReader b_b54ab3364333f598 = + org.capnproto.GeneratedClassSupport.decodeRawBytes( + "\u0000\u0000\u0000\u0000\u0005\u0000\u0006\u0000" + + "\u0098\u00f5\u0033\u0043\u0036\u00b3\u004a\u00b5" + + "\u0036\u0000\u0000\u0000\u0001\u0000\u0005\u0000" + + "\u0017\u00a4\u0023\u00f9\u004c\u00ab\u0082\u00e6" + + "\u0006\u0000\u0007\u0000\u0001\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0015\u0000\u0000\u0000\u00da\u0001\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0029\u0000\u0000\u0000\u003f\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0072\u0075\u006e\u0074\u0069\u006d\u0065\u002f" + + "\u0073\u0072\u0063\u002f\u006d\u0061\u0069\u006e" + + "\u002f\u006a\u0061\u0076\u0061\u002f\u006f\u0072" + + "\u0067\u002f\u0063\u0061\u0070\u006e\u0070\u0072" + + "\u006f\u0074\u006f\u002f\u0073\u0063\u0068\u0065" + + "\u006d\u0061\u002e\u0063\u0061\u0070\u006e\u0070" + + "\u003a\u004e\u006f\u0064\u0065\u002e\u0065\u006e" + + "\u0075\u006d\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0004\u0000\u0000\u0000\u0003\u0000\u0004\u0000" + + "\u0000\u0000\u0000\u0000\u0003\u0000\u0000\u0000" + + "\u0000\u0000\u0001\u0000\u000e\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\r\u0000\u0000\u0000\u005a\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u000c\u0000\u0000\u0000\u0003\u0000\u0001\u0000" + + "\u0028\u0000\u0000\u0000\u0002\u0000\u0001\u0000" + + "\u0065\u006e\u0075\u006d\u0065\u0072\u0061\u006e" + + "\u0074\u0073\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u000e\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0003\u0000\u0001\u0000" + + "\u0010\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u004d\u009a\u0054\u00dc\u00eb\u007c\u008a\u0097" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u000e\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + ""); +public static final org.capnproto.SegmentReader b_e82753cff0c2218f = + org.capnproto.GeneratedClassSupport.decodeRawBytes( + "\u0000\u0000\u0000\u0000\u0005\u0000\u0006\u0000" + + "\u008f\u0021\u00c2\u00f0\u00cf\u0053\u0027\u00e8" + + "\u0036\u0000\u0000\u0000\u0001\u0000\u0005\u0000" + + "\u0017\u00a4\u0023\u00f9\u004c\u00ab\u0082\u00e6" + + "\u0006\u0000\u0007\u0000\u0001\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0015\u0000\u0000\u0000\u0002\u0002\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0029\u0000\u0000\u0000\u0077\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0072\u0075\u006e\u0074\u0069\u006d\u0065\u002f" + + "\u0073\u0072\u0063\u002f\u006d\u0061\u0069\u006e" + + "\u002f\u006a\u0061\u0076\u0061\u002f\u006f\u0072" + + "\u0067\u002f\u0063\u0061\u0070\u006e\u0070\u0072" + + "\u006f\u0074\u006f\u002f\u0073\u0063\u0068\u0065" + + "\u006d\u0061\u002e\u0063\u0061\u0070\u006e\u0070" + + "\u003a\u004e\u006f\u0064\u0065\u002e\u0069\u006e" + + "\u0074\u0065\u0072\u0066\u0061\u0063\u0065\u0000" + + "\u0008\u0000\u0000\u0000\u0003\u0000\u0004\u0000" + + "\u0000\u0000\u0000\u0000\u0003\u0000\u0000\u0000" + + "\u0000\u0000\u0001\u0000\u000f\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0029\u0000\u0000\u0000\u0042\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0024\u0000\u0000\u0000\u0003\u0000\u0001\u0000" + + "\u0040\u0000\u0000\u0000\u0002\u0000\u0001\u0000" + + "\u0001\u0000\u0000\u0000\u0004\u0000\u0000\u0000" + + "\u0000\u0000\u0001\u0000\u001f\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u003d\u0000\u0000\u0000\u006a\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u003c\u0000\u0000\u0000\u0003\u0000\u0001\u0000" + + "\u0058\u0000\u0000\u0000\u0002\u0000\u0001\u0000" + + "\u006d\u0065\u0074\u0068\u006f\u0064\u0073\u0000" + + "\u000e\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0003\u0000\u0001\u0000" + + "\u0010\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0080\u004d\u0033\u003b\u00e2\u00cc\u0000\u0095" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u000e\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0073\u0075\u0070\u0065\u0072\u0063\u006c\u0061" + + "\u0073\u0073\u0065\u0073\u0000\u0000\u0000\u0000" + + "\u000e\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0003\u0000\u0001\u0000" + + "\u0010\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u00f8\u00d7\u00a4\u00d0\u009e\u002a\u0096\u00a9" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u000e\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + ""); +public static final org.capnproto.SegmentReader b_b18aa5ac7a0d9420 = + org.capnproto.GeneratedClassSupport.decodeRawBytes( + "\u0000\u0000\u0000\u0000\u0005\u0000\u0006\u0000" + + "\u0020\u0094\r\u007a\u00ac\u00a5\u008a\u00b1" + + "\u0036\u0000\u0000\u0000\u0001\u0000\u0005\u0000" + + "\u0017\u00a4\u0023\u00f9\u004c\u00ab\u0082\u00e6" + + "\u0006\u0000\u0007\u0000\u0001\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0015\u0000\u0000\u0000\u00e2\u0001\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0029\u0000\u0000\u0000\u0077\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0072\u0075\u006e\u0074\u0069\u006d\u0065\u002f" + + "\u0073\u0072\u0063\u002f\u006d\u0061\u0069\u006e" + + "\u002f\u006a\u0061\u0076\u0061\u002f\u006f\u0072" + + "\u0067\u002f\u0063\u0061\u0070\u006e\u0070\u0072" + + "\u006f\u0074\u006f\u002f\u0073\u0063\u0068\u0065" + + "\u006d\u0061\u002e\u0063\u0061\u0070\u006e\u0070" + + "\u003a\u004e\u006f\u0064\u0065\u002e\u0063\u006f" + + "\u006e\u0073\u0074\u0000\u0000\u0000\u0000\u0000" + + "\u0008\u0000\u0000\u0000\u0003\u0000\u0004\u0000" + + "\u0000\u0000\u0000\u0000\u0003\u0000\u0000\u0000" + + "\u0000\u0000\u0001\u0000\u0010\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0029\u0000\u0000\u0000\u002a\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0024\u0000\u0000\u0000\u0003\u0000\u0001\u0000" + + "\u0030\u0000\u0000\u0000\u0002\u0000\u0001\u0000" + + "\u0001\u0000\u0000\u0000\u0004\u0000\u0000\u0000" + + "\u0000\u0000\u0001\u0000\u0011\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u002d\u0000\u0000\u0000\u0032\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0028\u0000\u0000\u0000\u0003\u0000\u0001\u0000" + + "\u0034\u0000\u0000\u0000\u0002\u0000\u0001\u0000" + + "\u0074\u0079\u0070\u0065\u0000\u0000\u0000\u0000" + + "\u0010\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0060\u00cc\u00f9\u00e1\u00ed\u0078\u0073\u00d0" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0010\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0076\u0061\u006c\u0075\u0065\u0000\u0000\u0000" + + "\u0010\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u009b\u000c\u00b0\u00d7\u00d2\u00dc\u0023\u00ce" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0010\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + ""); +public static final org.capnproto.SegmentReader b_ec1619d4400a0290 = + org.capnproto.GeneratedClassSupport.decodeRawBytes( + "\u0000\u0000\u0000\u0000\u0005\u0000\u0006\u0000" + + "\u0090\u0002\n\u0040\u00d4\u0019\u0016\u00ec" + + "\u0036\u0000\u0000\u0000\u0001\u0000\u0005\u0000" + + "\u0017\u00a4\u0023\u00f9\u004c\u00ab\u0082\u00e6" + + "\u0006\u0000\u0007\u0000\u0001\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0015\u0000\u0000\u0000\n\u0002\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u002d\u0000\u0000\u0000\u00df\u0002\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0072\u0075\u006e\u0074\u0069\u006d\u0065\u002f" + + "\u0073\u0072\u0063\u002f\u006d\u0061\u0069\u006e" + + "\u002f\u006a\u0061\u0076\u0061\u002f\u006f\u0072" + + "\u0067\u002f\u0063\u0061\u0070\u006e\u0070\u0072" + + "\u006f\u0074\u006f\u002f\u0073\u0063\u0068\u0065" + + "\u006d\u0061\u002e\u0063\u0061\u0070\u006e\u0070" + + "\u003a\u004e\u006f\u0064\u0065\u002e\u0061\u006e" + + "\u006e\u006f\u0074\u0061\u0074\u0069\u006f\u006e" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0034\u0000\u0000\u0000\u0003\u0000\u0004\u0000" + + "\u0000\u0000\u0000\u0000\u0003\u0000\u0000\u0000" + + "\u0000\u0000\u0001\u0000\u0012\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u005d\u0001\u0000\u0000\u002a\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0058\u0001\u0000\u0000\u0003\u0000\u0001\u0000" + + "\u0064\u0001\u0000\u0000\u0002\u0000\u0001\u0000" + + "\u0001\u0000\u0000\u0000\u0070\u0000\u0000\u0000" + + "\u0000\u0000\u0001\u0000\u0013\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0061\u0001\u0000\u0000\u0062\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0060\u0001\u0000\u0000\u0003\u0000\u0001\u0000" + + "\u006c\u0001\u0000\u0000\u0002\u0000\u0001\u0000" + + "\u0002\u0000\u0000\u0000\u0071\u0000\u0000\u0000" + + "\u0000\u0000\u0001\u0000\u0014\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0069\u0001\u0000\u0000\u006a\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0068\u0001\u0000\u0000\u0003\u0000\u0001\u0000" + + "\u0074\u0001\u0000\u0000\u0002\u0000\u0001\u0000" + + "\u0003\u0000\u0000\u0000\u0072\u0000\u0000\u0000" + + "\u0000\u0000\u0001\u0000\u0015\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0071\u0001\u0000\u0000\u0062\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0070\u0001\u0000\u0000\u0003\u0000\u0001\u0000" + + "\u007c\u0001\u0000\u0000\u0002\u0000\u0001\u0000" + + "\u0004\u0000\u0000\u0000\u0073\u0000\u0000\u0000" + + "\u0000\u0000\u0001\u0000\u0016\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0079\u0001\u0000\u0000\u008a\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u007c\u0001\u0000\u0000\u0003\u0000\u0001\u0000" + + "\u0088\u0001\u0000\u0000\u0002\u0000\u0001\u0000" + + "\u0005\u0000\u0000\u0000\u0074\u0000\u0000\u0000" + + "\u0000\u0000\u0001\u0000\u0017\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0085\u0001\u0000\u0000\u0072\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0084\u0001\u0000\u0000\u0003\u0000\u0001\u0000" + + "\u0090\u0001\u0000\u0000\u0002\u0000\u0001\u0000" + + "\u0006\u0000\u0000\u0000\u0075\u0000\u0000\u0000" + + "\u0000\u0000\u0001\u0000\u0018\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u008d\u0001\u0000\u0000\u006a\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u008c\u0001\u0000\u0000\u0003\u0000\u0001\u0000" + + "\u0098\u0001\u0000\u0000\u0002\u0000\u0001\u0000" + + "\u0007\u0000\u0000\u0000\u0076\u0000\u0000\u0000" + + "\u0000\u0000\u0001\u0000\u0019\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0095\u0001\u0000\u0000\u006a\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0094\u0001\u0000\u0000\u0003\u0000\u0001\u0000" + + "\u00a0\u0001\u0000\u0000\u0002\u0000\u0001\u0000" + + "\u0008\u0000\u0000\u0000\u0077\u0000\u0000\u0000" + + "\u0000\u0000\u0001\u0000\u001a\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u009d\u0001\u0000\u0000\u006a\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u009c\u0001\u0000\u0000\u0003\u0000\u0001\u0000" + + "\u00a8\u0001\u0000\u0000\u0002\u0000\u0001\u0000" + + "\u0009\u0000\u0000\u0000\u0078\u0000\u0000\u0000" + + "\u0000\u0000\u0001\u0000\u001b\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u00a5\u0001\u0000\u0000\u008a\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u00a8\u0001\u0000\u0000\u0003\u0000\u0001\u0000" + + "\u00b4\u0001\u0000\u0000\u0002\u0000\u0001\u0000" + + "\n\u0000\u0000\u0000\u0079\u0000\u0000\u0000" + + "\u0000\u0000\u0001\u0000\u001c\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u00b1\u0001\u0000\u0000\u0072\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u00b0\u0001\u0000\u0000\u0003\u0000\u0001\u0000" + + "\u00bc\u0001\u0000\u0000\u0002\u0000\u0001\u0000" + + "\u000b\u0000\u0000\u0000\u007a\u0000\u0000\u0000" + + "\u0000\u0000\u0001\u0000\u001d\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u00b9\u0001\u0000\u0000\u006a\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u00b8\u0001\u0000\u0000\u0003\u0000\u0001\u0000" + + "\u00c4\u0001\u0000\u0000\u0002\u0000\u0001\u0000" + + "\u000c\u0000\u0000\u0000\u007b\u0000\u0000\u0000" + + "\u0000\u0000\u0001\u0000\u001e\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u00c1\u0001\u0000\u0000\u0092\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u00c4\u0001\u0000\u0000\u0003\u0000\u0001\u0000" + + "\u00d0\u0001\u0000\u0000\u0002\u0000\u0001\u0000" + + "\u0074\u0079\u0070\u0065\u0000\u0000\u0000\u0000" + + "\u0010\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0060\u00cc\u00f9\u00e1\u00ed\u0078\u0073\u00d0" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0010\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0074\u0061\u0072\u0067\u0065\u0074\u0073\u0046" + + "\u0069\u006c\u0065\u0000\u0000\u0000\u0000\u0000" + + "\u0001\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0001\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0074\u0061\u0072\u0067\u0065\u0074\u0073\u0043" + + "\u006f\u006e\u0073\u0074\u0000\u0000\u0000\u0000" + + "\u0001\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0001\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0074\u0061\u0072\u0067\u0065\u0074\u0073\u0045" + + "\u006e\u0075\u006d\u0000\u0000\u0000\u0000\u0000" + + "\u0001\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0001\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0074\u0061\u0072\u0067\u0065\u0074\u0073\u0045" + + "\u006e\u0075\u006d\u0065\u0072\u0061\u006e\u0074" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0001\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0001\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0074\u0061\u0072\u0067\u0065\u0074\u0073\u0053" + + "\u0074\u0072\u0075\u0063\u0074\u0000\u0000\u0000" + + "\u0001\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0001\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0074\u0061\u0072\u0067\u0065\u0074\u0073\u0046" + + "\u0069\u0065\u006c\u0064\u0000\u0000\u0000\u0000" + + "\u0001\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0001\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0074\u0061\u0072\u0067\u0065\u0074\u0073\u0055" + + "\u006e\u0069\u006f\u006e\u0000\u0000\u0000\u0000" + + "\u0001\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0001\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0074\u0061\u0072\u0067\u0065\u0074\u0073\u0047" + + "\u0072\u006f\u0075\u0070\u0000\u0000\u0000\u0000" + + "\u0001\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0001\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0074\u0061\u0072\u0067\u0065\u0074\u0073\u0049" + + "\u006e\u0074\u0065\u0072\u0066\u0061\u0063\u0065" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0001\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0001\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0074\u0061\u0072\u0067\u0065\u0074\u0073\u004d" + + "\u0065\u0074\u0068\u006f\u0064\u0000\u0000\u0000" + + "\u0001\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0001\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0074\u0061\u0072\u0067\u0065\u0074\u0073\u0050" + + "\u0061\u0072\u0061\u006d\u0000\u0000\u0000\u0000" + + "\u0001\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0001\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0074\u0061\u0072\u0067\u0065\u0074\u0073\u0041" + + "\u006e\u006e\u006f\u0074\u0061\u0074\u0069\u006f" + + "\u006e\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0001\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0001\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + ""); +public static final org.capnproto.SegmentReader b_9aad50a41f4af45f = + org.capnproto.GeneratedClassSupport.decodeRawBytes( + "\u0000\u0000\u0000\u0000\u0005\u0000\u0006\u0000" + + "\u005f\u00f4\u004a\u001f\u00a4\u0050\u00ad\u009a" + + "\u0031\u0000\u0000\u0000\u0001\u0000\u0003\u0000" + + "\u00d9\u0072\u004c\u0062\u0009\u00c5\u003f\u00a9" + + "\u0004\u0000\u0007\u0000\u0000\u0000\u0002\u0000" + + "\u0004\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0015\u0000\u0000\u0000\u00ba\u0001\u0000\u0000" + + "\u002d\u0000\u0000\u0000\u0017\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0039\u0000\u0000\u0000\u008f\u0001\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0072\u0075\u006e\u0074\u0069\u006d\u0065\u002f" + + "\u0073\u0072\u0063\u002f\u006d\u0061\u0069\u006e" + + "\u002f\u006a\u0061\u0076\u0061\u002f\u006f\u0072" + + "\u0067\u002f\u0063\u0061\u0070\u006e\u0070\u0072" + + "\u006f\u0074\u006f\u002f\u0073\u0063\u0068\u0065" + + "\u006d\u0061\u002e\u0063\u0061\u0070\u006e\u0070" + + "\u003a\u0046\u0069\u0065\u006c\u0064\u0000\u0000" + + "\u0004\u0000\u0000\u0000\u0001\u0000\u0001\u0000" + + "\u0012\u00c7\u00fe\u007c\u00be\u004c\u00b1\u0097" + + "\u0001\u0000\u0000\u0000\u007a\u0000\u0000\u0000" + + "\u006e\u006f\u0044\u0069\u0073\u0063\u0072\u0069" + + "\u006d\u0069\u006e\u0061\u006e\u0074\u0000\u0000" + + "\u001c\u0000\u0000\u0000\u0003\u0000\u0004\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0001\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u00b5\u0000\u0000\u0000\u002a\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u00b0\u0000\u0000\u0000\u0003\u0000\u0001\u0000" + + "\u00bc\u0000\u0000\u0000\u0002\u0000\u0001\u0000" + + "\u0001\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0001\u0000\u0001\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u00b9\u0000\u0000\u0000\u0052\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u00b8\u0000\u0000\u0000\u0003\u0000\u0001\u0000" + + "\u00c4\u0000\u0000\u0000\u0002\u0000\u0001\u0000" + + "\u0002\u0000\u0000\u0000\u0001\u0000\u0000\u0000" + + "\u0000\u0000\u0001\u0000\u0002\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u00c1\u0000\u0000\u0000\u0062\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u00c0\u0000\u0000\u0000\u0003\u0000\u0001\u0000" + + "\u00dc\u0000\u0000\u0000\u0002\u0000\u0001\u0000" + + "\u0003\u0000\u0000\u0000\u0001\u0000\u0000\u0000" + + "\u0000\u0000\u0001\u0000\u0003\u0000\u0000\u0000" + + "\u0001\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u00d9\u0000\u0000\u0000\u0092\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u00dc\u0000\u0000\u0000\u0003\u0000\u0001\u0000" + + "\u00e8\u0000\u0000\u0000\u0002\u0000\u0001\u0000" + + "\u0004\u0000\u00ff\u00ff\u0000\u0000\u0000\u0000" + + "\u0001\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u006f\u0074\u00b4\u006b\u0047\u0005\u0023\u00c4" + + "\u00e5\u0000\u0000\u0000\u002a\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0005\u0000\u00fe\u00ff\u0000\u0000\u0000\u0000" + + "\u0001\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0011\u001d\u00db\u0068\u00db\u00cd\u00fc\u00ca" + + "\u00cd\u0000\u0000\u0000\u0032\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0006\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0001\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u00e6\u000b\u0087\u0087\u00c2\u00d5\u0090\u00bb" + + "\u00b5\u0000\u0000\u0000\u0042\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u006e\u0061\u006d\u0065\u0000\u0000\u0000\u0000" + + "\u000c\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u000c\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0063\u006f\u0064\u0065\u004f\u0072\u0064\u0065" + + "\u0072\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0007\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0007\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0061\u006e\u006e\u006f\u0074\u0061\u0074\u0069" + + "\u006f\u006e\u0073\u0000\u0000\u0000\u0000\u0000" + + "\u000e\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0003\u0000\u0001\u0000" + + "\u0010\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0042\u0075\u0025\u00ab\r\u0095\u00c8\u00f1" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u000e\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0064\u0069\u0073\u0063\u0072\u0069\u006d\u0069" + + "\u006e\u0061\u006e\u0074\u0056\u0061\u006c\u0075" + + "\u0065\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0007\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0007\u0000\u00ff\u00ff\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0073\u006c\u006f\u0074\u0000\u0000\u0000\u0000" + + "\u0067\u0072\u006f\u0075\u0070\u0000\u0000\u0000" + + "\u006f\u0072\u0064\u0069\u006e\u0061\u006c\u0000" + ""); +public static final org.capnproto.SegmentReader b_97b14cbe7cfec712 = + org.capnproto.GeneratedClassSupport.decodeRawBytes( + "\u0000\u0000\u0000\u0000\u0005\u0000\u0006\u0000" + + "\u0012\u00c7\u00fe\u007c\u00be\u004c\u00b1\u0097" + + "\u0037\u0000\u0000\u0000\u0004\u0000\u0000\u0000" + + "\u005f\u00f4\u004a\u001f\u00a4\u0050\u00ad\u009a" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0015\u0000\u0000\u0000\u0032\u0002\u0000\u0000" + + "\u0035\u0000\u0000\u0000\u0007\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0030\u0000\u0000\u0000\u0003\u0000\u0001\u0000" + + "\u003c\u0000\u0000\u0000\u0002\u0000\u0001\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0072\u0075\u006e\u0074\u0069\u006d\u0065\u002f" + + "\u0073\u0072\u0063\u002f\u006d\u0061\u0069\u006e" + + "\u002f\u006a\u0061\u0076\u0061\u002f\u006f\u0072" + + "\u0067\u002f\u0063\u0061\u0070\u006e\u0070\u0072" + + "\u006f\u0074\u006f\u002f\u0073\u0063\u0068\u0065" + + "\u006d\u0061\u002e\u0063\u0061\u0070\u006e\u0070" + + "\u003a\u0046\u0069\u0065\u006c\u0064\u002e\u006e" + + "\u006f\u0044\u0069\u0073\u0063\u0072\u0069\u006d" + + "\u0069\u006e\u0061\u006e\u0074\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0001\u0000\u0001\u0000" + + "\u0007\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0007\u0000\u00ff\u00ff\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + ""); +public static final org.capnproto.SegmentReader b_c42305476bb4746f = + org.capnproto.GeneratedClassSupport.decodeRawBytes( + "\u0000\u0000\u0000\u0000\u0005\u0000\u0006\u0000" + + "\u006f\u0074\u00b4\u006b\u0047\u0005\u0023\u00c4" + + "\u0037\u0000\u0000\u0000\u0001\u0000\u0003\u0000" + + "\u005f\u00f4\u004a\u001f\u00a4\u0050\u00ad\u009a" + + "\u0004\u0000\u0007\u0000\u0001\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0015\u0000\u0000\u0000\u00e2\u0001\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0029\u0000\u0000\u0000\u00e7\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0072\u0075\u006e\u0074\u0069\u006d\u0065\u002f" + + "\u0073\u0072\u0063\u002f\u006d\u0061\u0069\u006e" + + "\u002f\u006a\u0061\u0076\u0061\u002f\u006f\u0072" + + "\u0067\u002f\u0063\u0061\u0070\u006e\u0070\u0072" + + "\u006f\u0074\u006f\u002f\u0073\u0063\u0068\u0065" + + "\u006d\u0061\u002e\u0063\u0061\u0070\u006e\u0070" + + "\u003a\u0046\u0069\u0065\u006c\u0064\u002e\u0073" + + "\u006c\u006f\u0074\u0000\u0000\u0000\u0000\u0000" + + "\u0010\u0000\u0000\u0000\u0003\u0000\u0004\u0000" + + "\u0000\u0000\u0000\u0000\u0001\u0000\u0000\u0000" + + "\u0000\u0000\u0001\u0000\u0004\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0061\u0000\u0000\u0000\u003a\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\\\u0000\u0000\u0000\u0003\u0000\u0001\u0000" + + "\u0068\u0000\u0000\u0000\u0002\u0000\u0001\u0000" + + "\u0001\u0000\u0000\u0000\u0002\u0000\u0000\u0000" + + "\u0000\u0000\u0001\u0000\u0005\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0065\u0000\u0000\u0000\u002a\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0060\u0000\u0000\u0000\u0003\u0000\u0001\u0000" + + "\u006c\u0000\u0000\u0000\u0002\u0000\u0001\u0000" + + "\u0002\u0000\u0000\u0000\u0003\u0000\u0000\u0000" + + "\u0000\u0000\u0001\u0000\u0006\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0069\u0000\u0000\u0000\u006a\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0068\u0000\u0000\u0000\u0003\u0000\u0001\u0000" + + "\u0074\u0000\u0000\u0000\u0002\u0000\u0001\u0000" + + "\u0003\u0000\u0000\u0000\u0080\u0000\u0000\u0000" + + "\u0000\u0000\u0001\u0000\n\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0071\u0000\u0000\u0000\u009a\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0074\u0000\u0000\u0000\u0003\u0000\u0001\u0000" + + "\u0080\u0000\u0000\u0000\u0002\u0000\u0001\u0000" + + "\u006f\u0066\u0066\u0073\u0065\u0074\u0000\u0000" + + "\u0008\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0008\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0074\u0079\u0070\u0065\u0000\u0000\u0000\u0000" + + "\u0010\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0060\u00cc\u00f9\u00e1\u00ed\u0078\u0073\u00d0" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0010\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0064\u0065\u0066\u0061\u0075\u006c\u0074\u0056" + + "\u0061\u006c\u0075\u0065\u0000\u0000\u0000\u0000" + + "\u0010\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u009b\u000c\u00b0\u00d7\u00d2\u00dc\u0023\u00ce" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0010\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0068\u0061\u0064\u0045\u0078\u0070\u006c\u0069" + + "\u0063\u0069\u0074\u0044\u0065\u0066\u0061\u0075" + + "\u006c\u0074\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0001\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0001\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + ""); +public static final org.capnproto.SegmentReader b_cafccddb68db1d11 = + org.capnproto.GeneratedClassSupport.decodeRawBytes( + "\u0000\u0000\u0000\u0000\u0005\u0000\u0006\u0000" + + "\u0011\u001d\u00db\u0068\u00db\u00cd\u00fc\u00ca" + + "\u0037\u0000\u0000\u0000\u0001\u0000\u0003\u0000" + + "\u005f\u00f4\u004a\u001f\u00a4\u0050\u00ad\u009a" + + "\u0004\u0000\u0007\u0000\u0001\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0015\u0000\u0000\u0000\u00ea\u0001\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0029\u0000\u0000\u0000\u003f\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0072\u0075\u006e\u0074\u0069\u006d\u0065\u002f" + + "\u0073\u0072\u0063\u002f\u006d\u0061\u0069\u006e" + + "\u002f\u006a\u0061\u0076\u0061\u002f\u006f\u0072" + + "\u0067\u002f\u0063\u0061\u0070\u006e\u0070\u0072" + + "\u006f\u0074\u006f\u002f\u0073\u0063\u0068\u0065" + + "\u006d\u0061\u002e\u0063\u0061\u0070\u006e\u0070" + + "\u003a\u0046\u0069\u0065\u006c\u0064\u002e\u0067" + + "\u0072\u006f\u0075\u0070\u0000\u0000\u0000\u0000" + + "\u0004\u0000\u0000\u0000\u0003\u0000\u0004\u0000" + + "\u0000\u0000\u0000\u0000\u0002\u0000\u0000\u0000" + + "\u0000\u0000\u0001\u0000\u0007\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\r\u0000\u0000\u0000\u003a\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0008\u0000\u0000\u0000\u0003\u0000\u0001\u0000" + + "\u0014\u0000\u0000\u0000\u0002\u0000\u0001\u0000" + + "\u0074\u0079\u0070\u0065\u0049\u0064\u0000\u0000" + + "\u0009\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0009\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + ""); +public static final org.capnproto.SegmentReader b_bb90d5c287870be6 = + org.capnproto.GeneratedClassSupport.decodeRawBytes( + "\u0000\u0000\u0000\u0000\u0005\u0000\u0006\u0000" + + "\u00e6\u000b\u0087\u0087\u00c2\u00d5\u0090\u00bb" + + "\u0037\u0000\u0000\u0000\u0001\u0000\u0003\u0000" + + "\u005f\u00f4\u004a\u001f\u00a4\u0050\u00ad\u009a" + + "\u0004\u0000\u0007\u0000\u0001\u0000\u0002\u0000" + + "\u0005\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0015\u0000\u0000\u0000\u00fa\u0001\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0029\u0000\u0000\u0000\u0077\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0072\u0075\u006e\u0074\u0069\u006d\u0065\u002f" + + "\u0073\u0072\u0063\u002f\u006d\u0061\u0069\u006e" + + "\u002f\u006a\u0061\u0076\u0061\u002f\u006f\u0072" + + "\u0067\u002f\u0063\u0061\u0070\u006e\u0070\u0072" + + "\u006f\u0074\u006f\u002f\u0073\u0063\u0068\u0065" + + "\u006d\u0061\u002e\u0063\u0061\u0070\u006e\u0070" + + "\u003a\u0046\u0069\u0065\u006c\u0064\u002e\u006f" + + "\u0072\u0064\u0069\u006e\u0061\u006c\u0000\u0000" + + "\u0008\u0000\u0000\u0000\u0003\u0000\u0004\u0000" + + "\u0000\u0000\u00ff\u00ff\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0001\u0000\u0008\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0029\u0000\u0000\u0000\u004a\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0028\u0000\u0000\u0000\u0003\u0000\u0001\u0000" + + "\u0034\u0000\u0000\u0000\u0002\u0000\u0001\u0000" + + "\u0001\u0000\u00fe\u00ff\u0006\u0000\u0000\u0000" + + "\u0000\u0000\u0001\u0000\u0009\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0031\u0000\u0000\u0000\u004a\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0030\u0000\u0000\u0000\u0003\u0000\u0001\u0000" + + "\u003c\u0000\u0000\u0000\u0002\u0000\u0001\u0000" + + "\u0069\u006d\u0070\u006c\u0069\u0063\u0069\u0074" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0065\u0078\u0070\u006c\u0069\u0063\u0069\u0074" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0007\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0007\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + ""); +public static final org.capnproto.SegmentReader b_978a7cebdc549a4d = + org.capnproto.GeneratedClassSupport.decodeRawBytes( + "\u0000\u0000\u0000\u0000\u0005\u0000\u0006\u0000" + + "\u004d\u009a\u0054\u00dc\u00eb\u007c\u008a\u0097" + + "\u0031\u0000\u0000\u0000\u0001\u0000\u0001\u0000" + + "\u00d9\u0072\u004c\u0062\u0009\u00c5\u003f\u00a9" + + "\u0002\u0000\u0007\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0015\u0000\u0000\u0000\u00da\u0001\u0000\u0000" + + "\u0031\u0000\u0000\u0000\u0007\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u002d\u0000\u0000\u0000\u00af\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0072\u0075\u006e\u0074\u0069\u006d\u0065\u002f" + + "\u0073\u0072\u0063\u002f\u006d\u0061\u0069\u006e" + + "\u002f\u006a\u0061\u0076\u0061\u002f\u006f\u0072" + + "\u0067\u002f\u0063\u0061\u0070\u006e\u0070\u0072" + + "\u006f\u0074\u006f\u002f\u0073\u0063\u0068\u0065" + + "\u006d\u0061\u002e\u0063\u0061\u0070\u006e\u0070" + + "\u003a\u0045\u006e\u0075\u006d\u0065\u0072\u0061" + + "\u006e\u0074\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0001\u0000\u0001\u0000" + + "\u000c\u0000\u0000\u0000\u0003\u0000\u0004\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0001\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0045\u0000\u0000\u0000\u002a\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0040\u0000\u0000\u0000\u0003\u0000\u0001\u0000" + + "\u004c\u0000\u0000\u0000\u0002\u0000\u0001\u0000" + + "\u0001\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0001\u0000\u0001\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0049\u0000\u0000\u0000\u0052\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0048\u0000\u0000\u0000\u0003\u0000\u0001\u0000" + + "\u0054\u0000\u0000\u0000\u0002\u0000\u0001\u0000" + + "\u0002\u0000\u0000\u0000\u0001\u0000\u0000\u0000" + + "\u0000\u0000\u0001\u0000\u0002\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0051\u0000\u0000\u0000\u0062\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0050\u0000\u0000\u0000\u0003\u0000\u0001\u0000" + + "\u006c\u0000\u0000\u0000\u0002\u0000\u0001\u0000" + + "\u006e\u0061\u006d\u0065\u0000\u0000\u0000\u0000" + + "\u000c\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u000c\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0063\u006f\u0064\u0065\u004f\u0072\u0064\u0065" + + "\u0072\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0007\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0007\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0061\u006e\u006e\u006f\u0074\u0061\u0074\u0069" + + "\u006f\u006e\u0073\u0000\u0000\u0000\u0000\u0000" + + "\u000e\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0003\u0000\u0001\u0000" + + "\u0010\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0042\u0075\u0025\u00ab\r\u0095\u00c8\u00f1" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u000e\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + ""); +public static final org.capnproto.SegmentReader b_a9962a9ed0a4d7f8 = + org.capnproto.GeneratedClassSupport.decodeRawBytes( + "\u0000\u0000\u0000\u0000\u0005\u0000\u0006\u0000" + + "\u00f8\u00d7\u00a4\u00d0\u009e\u002a\u0096\u00a9" + + "\u0031\u0000\u0000\u0000\u0001\u0000\u0001\u0000" + + "\u00d9\u0072\u004c\u0062\u0009\u00c5\u003f\u00a9" + + "\u0001\u0000\u0007\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0015\u0000\u0000\u0000\u00e2\u0001\u0000\u0000" + + "\u0031\u0000\u0000\u0000\u0007\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u002d\u0000\u0000\u0000\u0077\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0072\u0075\u006e\u0074\u0069\u006d\u0065\u002f" + + "\u0073\u0072\u0063\u002f\u006d\u0061\u0069\u006e" + + "\u002f\u006a\u0061\u0076\u0061\u002f\u006f\u0072" + + "\u0067\u002f\u0063\u0061\u0070\u006e\u0070\u0072" + + "\u006f\u0074\u006f\u002f\u0073\u0063\u0068\u0065" + + "\u006d\u0061\u002e\u0063\u0061\u0070\u006e\u0070" + + "\u003a\u0053\u0075\u0070\u0065\u0072\u0063\u006c" + + "\u0061\u0073\u0073\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0001\u0000\u0001\u0000" + + "\u0008\u0000\u0000\u0000\u0003\u0000\u0004\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0001\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0029\u0000\u0000\u0000\u001a\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0024\u0000\u0000\u0000\u0003\u0000\u0001\u0000" + + "\u0030\u0000\u0000\u0000\u0002\u0000\u0001\u0000" + + "\u0001\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0001\u0000\u0001\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u002d\u0000\u0000\u0000\u0032\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0028\u0000\u0000\u0000\u0003\u0000\u0001\u0000" + + "\u0034\u0000\u0000\u0000\u0002\u0000\u0001\u0000" + + "\u0069\u0064\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0009\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0009\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0062\u0072\u0061\u006e\u0064\u0000\u0000\u0000" + + "\u0010\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u002b\u0042\u0065\u0060\u00f0\u0055\u0034\u0090" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0010\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + ""); +public static final org.capnproto.SegmentReader b_9500cce23b334d80 = + org.capnproto.GeneratedClassSupport.decodeRawBytes( + "\u0000\u0000\u0000\u0000\u0005\u0000\u0006\u0000" + + "\u0080\u004d\u0033\u003b\u00e2\u00cc\u0000\u0095" + + "\u0031\u0000\u0000\u0000\u0001\u0000\u0003\u0000" + + "\u00d9\u0072\u004c\u0062\u0009\u00c5\u003f\u00a9" + + "\u0005\u0000\u0007\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0015\u0000\u0000\u0000\u00c2\u0001\u0000\u0000" + + "\u002d\u0000\u0000\u0000\u0007\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0029\u0000\u0000\u0000\u00c7\u0001\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0072\u0075\u006e\u0074\u0069\u006d\u0065\u002f" + + "\u0073\u0072\u0063\u002f\u006d\u0061\u0069\u006e" + + "\u002f\u006a\u0061\u0076\u0061\u002f\u006f\u0072" + + "\u0067\u002f\u0063\u0061\u0070\u006e\u0070\u0072" + + "\u006f\u0074\u006f\u002f\u0073\u0063\u0068\u0065" + + "\u006d\u0061\u002e\u0063\u0061\u0070\u006e\u0070" + + "\u003a\u004d\u0065\u0074\u0068\u006f\u0064\u0000" + + "\u0000\u0000\u0000\u0000\u0001\u0000\u0001\u0000" + + "\u0020\u0000\u0000\u0000\u0003\u0000\u0004\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0001\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u00d1\u0000\u0000\u0000\u002a\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u00cc\u0000\u0000\u0000\u0003\u0000\u0001\u0000" + + "\u00d8\u0000\u0000\u0000\u0002\u0000\u0001\u0000" + + "\u0001\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0001\u0000\u0001\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u00d5\u0000\u0000\u0000\u0052\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u00d4\u0000\u0000\u0000\u0003\u0000\u0001\u0000" + + "\u00e0\u0000\u0000\u0000\u0002\u0000\u0001\u0000" + + "\u0003\u0000\u0000\u0000\u0001\u0000\u0000\u0000" + + "\u0000\u0000\u0001\u0000\u0002\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u00dd\u0000\u0000\u0000\u0082\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u00dc\u0000\u0000\u0000\u0003\u0000\u0001\u0000" + + "\u00e8\u0000\u0000\u0000\u0002\u0000\u0001\u0000" + + "\u0005\u0000\u0000\u0000\u0002\u0000\u0000\u0000" + + "\u0000\u0000\u0001\u0000\u0003\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u00e5\u0000\u0000\u0000\u008a\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u00e8\u0000\u0000\u0000\u0003\u0000\u0001\u0000" + + "\u00f4\u0000\u0000\u0000\u0002\u0000\u0001\u0000" + + "\u0007\u0000\u0000\u0000\u0001\u0000\u0000\u0000" + + "\u0000\u0000\u0001\u0000\u0004\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u00f1\u0000\u0000\u0000\u0062\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u00f0\u0000\u0000\u0000\u0003\u0000\u0001\u0000" + + "\u000c\u0001\u0000\u0000\u0002\u0000\u0001\u0000" + + "\u0004\u0000\u0000\u0000\u0002\u0000\u0000\u0000" + + "\u0000\u0000\u0001\u0000\u0005\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0009\u0001\u0000\u0000\u005a\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0008\u0001\u0000\u0000\u0003\u0000\u0001\u0000" + + "\u0014\u0001\u0000\u0000\u0002\u0000\u0001\u0000" + + "\u0006\u0000\u0000\u0000\u0003\u0000\u0000\u0000" + + "\u0000\u0000\u0001\u0000\u0006\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0011\u0001\u0000\u0000\u0062\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0010\u0001\u0000\u0000\u0003\u0000\u0001\u0000" + + "\u001c\u0001\u0000\u0000\u0002\u0000\u0001\u0000" + + "\u0002\u0000\u0000\u0000\u0004\u0000\u0000\u0000" + + "\u0000\u0000\u0001\u0000\u0007\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0019\u0001\u0000\u0000\u009a\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u001c\u0001\u0000\u0000\u0003\u0000\u0001\u0000" + + "\u0038\u0001\u0000\u0000\u0002\u0000\u0001\u0000" + + "\u006e\u0061\u006d\u0065\u0000\u0000\u0000\u0000" + + "\u000c\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u000c\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0063\u006f\u0064\u0065\u004f\u0072\u0064\u0065" + + "\u0072\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0007\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0007\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0070\u0061\u0072\u0061\u006d\u0053\u0074\u0072" + + "\u0075\u0063\u0074\u0054\u0079\u0070\u0065\u0000" + + "\u0009\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0009\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0072\u0065\u0073\u0075\u006c\u0074\u0053\u0074" + + "\u0072\u0075\u0063\u0074\u0054\u0079\u0070\u0065" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0009\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0009\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0061\u006e\u006e\u006f\u0074\u0061\u0074\u0069" + + "\u006f\u006e\u0073\u0000\u0000\u0000\u0000\u0000" + + "\u000e\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0003\u0000\u0001\u0000" + + "\u0010\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0042\u0075\u0025\u00ab\r\u0095\u00c8\u00f1" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u000e\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0070\u0061\u0072\u0061\u006d\u0042\u0072\u0061" + + "\u006e\u0064\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0010\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u002b\u0042\u0065\u0060\u00f0\u0055\u0034\u0090" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0010\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0072\u0065\u0073\u0075\u006c\u0074\u0042\u0072" + + "\u0061\u006e\u0064\u0000\u0000\u0000\u0000\u0000" + + "\u0010\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u002b\u0042\u0065\u0060\u00f0\u0055\u0034\u0090" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0010\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0069\u006d\u0070\u006c\u0069\u0063\u0069\u0074" + + "\u0050\u0061\u0072\u0061\u006d\u0065\u0074\u0065" + + "\u0072\u0073\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u000e\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0003\u0000\u0001\u0000" + + "\u0010\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u00b1\u00a3\u000f\u00f1\u00cc\u001b\u0052\u00b9" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u000e\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + ""); +public static final org.capnproto.SegmentReader b_d07378ede1f9cc60 = + org.capnproto.GeneratedClassSupport.decodeRawBytes( + "\u0000\u0000\u0000\u0000\u0005\u0000\u0006\u0000" + + "\u0060\u00cc\u00f9\u00e1\u00ed\u0078\u0073\u00d0" + + "\u0031\u0000\u0000\u0000\u0001\u0000\u0003\u0000" + + "\u00d9\u0072\u004c\u0062\u0009\u00c5\u003f\u00a9" + + "\u0001\u0000\u0007\u0000\u0000\u0000\u0013\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0015\u0000\u0000\u0000\u00b2\u0001\u0000\u0000" + + "\u002d\u0000\u0000\u0000\u0007\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0029\u0000\u0000\u0000\u002f\u0004\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0072\u0075\u006e\u0074\u0069\u006d\u0065\u002f" + + "\u0073\u0072\u0063\u002f\u006d\u0061\u0069\u006e" + + "\u002f\u006a\u0061\u0076\u0061\u002f\u006f\u0072" + + "\u0067\u002f\u0063\u0061\u0070\u006e\u0070\u0072" + + "\u006f\u0074\u006f\u002f\u0073\u0063\u0068\u0065" + + "\u006d\u0061\u002e\u0063\u0061\u0070\u006e\u0070" + + "\u003a\u0054\u0079\u0070\u0065\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0001\u0000\u0001\u0000" + + "\u004c\u0000\u0000\u0000\u0003\u0000\u0004\u0000" + + "\u0000\u0000\u00ff\u00ff\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0001\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0005\u0002\u0000\u0000\u002a\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0002\u0000\u0000\u0003\u0000\u0001\u0000" + + "\u000c\u0002\u0000\u0000\u0002\u0000\u0001\u0000" + + "\u0001\u0000\u00fe\u00ff\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0001\u0000\u0001\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0009\u0002\u0000\u0000\u002a\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0004\u0002\u0000\u0000\u0003\u0000\u0001\u0000" + + "\u0010\u0002\u0000\u0000\u0002\u0000\u0001\u0000" + + "\u0002\u0000\u00fd\u00ff\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0001\u0000\u0002\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\r\u0002\u0000\u0000\u002a\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0008\u0002\u0000\u0000\u0003\u0000\u0001\u0000" + + "\u0014\u0002\u0000\u0000\u0002\u0000\u0001\u0000" + + "\u0003\u0000\u00fc\u00ff\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0001\u0000\u0003\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0011\u0002\u0000\u0000\u0032\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u000c\u0002\u0000\u0000\u0003\u0000\u0001\u0000" + + "\u0018\u0002\u0000\u0000\u0002\u0000\u0001\u0000" + + "\u0004\u0000\u00fb\u00ff\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0001\u0000\u0004\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0015\u0002\u0000\u0000\u0032\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0010\u0002\u0000\u0000\u0003\u0000\u0001\u0000" + + "\u001c\u0002\u0000\u0000\u0002\u0000\u0001\u0000" + + "\u0005\u0000\u00fa\u00ff\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0001\u0000\u0005\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0019\u0002\u0000\u0000\u0032\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0014\u0002\u0000\u0000\u0003\u0000\u0001\u0000" + + "\u0020\u0002\u0000\u0000\u0002\u0000\u0001\u0000" + + "\u0006\u0000\u00f9\u00ff\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0001\u0000\u0006\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u001d\u0002\u0000\u0000\u0032\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0018\u0002\u0000\u0000\u0003\u0000\u0001\u0000" + + "\u0024\u0002\u0000\u0000\u0002\u0000\u0001\u0000" + + "\u0007\u0000\u00f8\u00ff\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0001\u0000\u0007\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0021\u0002\u0000\u0000\u003a\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u001c\u0002\u0000\u0000\u0003\u0000\u0001\u0000" + + "\u0028\u0002\u0000\u0000\u0002\u0000\u0001\u0000" + + "\u0008\u0000\u00f7\u00ff\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0001\u0000\u0008\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0025\u0002\u0000\u0000\u003a\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0020\u0002\u0000\u0000\u0003\u0000\u0001\u0000" + + "\u002c\u0002\u0000\u0000\u0002\u0000\u0001\u0000" + + "\u0009\u0000\u00f6\u00ff\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0001\u0000\u0009\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0029\u0002\u0000\u0000\u003a\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0024\u0002\u0000\u0000\u0003\u0000\u0001\u0000" + + "\u0030\u0002\u0000\u0000\u0002\u0000\u0001\u0000" + + "\n\u0000\u00f5\u00ff\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0001\u0000\n\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u002d\u0002\u0000\u0000\u0042\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0028\u0002\u0000\u0000\u0003\u0000\u0001\u0000" + + "\u0034\u0002\u0000\u0000\u0002\u0000\u0001\u0000" + + "\u000b\u0000\u00f4\u00ff\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0001\u0000\u000b\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0031\u0002\u0000\u0000\u0042\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u002c\u0002\u0000\u0000\u0003\u0000\u0001\u0000" + + "\u0038\u0002\u0000\u0000\u0002\u0000\u0001\u0000" + + "\u000c\u0000\u00f3\u00ff\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0001\u0000\u000c\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0035\u0002\u0000\u0000\u002a\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0030\u0002\u0000\u0000\u0003\u0000\u0001\u0000" + + "\u003c\u0002\u0000\u0000\u0002\u0000\u0001\u0000" + + "\r\u0000\u00f2\u00ff\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0001\u0000\r\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0039\u0002\u0000\u0000\u002a\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0034\u0002\u0000\u0000\u0003\u0000\u0001\u0000" + + "\u0040\u0002\u0000\u0000\u0002\u0000\u0001\u0000" + + "\u000e\u0000\u00f1\u00ff\u0000\u0000\u0000\u0000" + + "\u0001\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0097\u00ea\u0060\n\u0025\u0039\u00e7\u0087" + + "\u003d\u0002\u0000\u0000\u002a\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u000f\u0000\u00f0\u00ff\u0000\u0000\u0000\u0000" + + "\u0001\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u00a9\u0087\u007f\u001a\u0071\u0078\u000e\u009e" + + "\u0025\u0002\u0000\u0000\u002a\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0010\u0000\u00ef\u00ff\u0000\u0000\u0000\u0000" + + "\u0001\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u00d3\u00c6\u004c\u00ef\u0060\u006f\u003a\u00ac" + + "\r\u0002\u0000\u0000\u003a\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0011\u0000\u00ee\u00ff\u0000\u0000\u0000\u0000" + + "\u0001\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u00bf\u000c\u00fb\u00f7\u0069\u00ca\u008b\u00ed" + + "\u00f5\u0001\u0000\u0000\u0052\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0012\u0000\u00ed\u00ff\u0000\u0000\u0000\u0000" + + "\u0001\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u00f1\u0049\u003e\u00a2\u00e8\u003f\u0057\u00c2" + + "\u00e1\u0001\u0000\u0000\u005a\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0076\u006f\u0069\u0064\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0062\u006f\u006f\u006c\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0069\u006e\u0074\u0038\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0069\u006e\u0074\u0031\u0036\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0069\u006e\u0074\u0033\u0032\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0069\u006e\u0074\u0036\u0034\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0075\u0069\u006e\u0074\u0038\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0075\u0069\u006e\u0074\u0031\u0036\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0075\u0069\u006e\u0074\u0033\u0032\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0075\u0069\u006e\u0074\u0036\u0034\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0066\u006c\u006f\u0061\u0074\u0033\u0032\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0066\u006c\u006f\u0061\u0074\u0036\u0034\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0074\u0065\u0078\u0074\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0064\u0061\u0074\u0061\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u006c\u0069\u0073\u0074\u0000\u0000\u0000\u0000" + + "\u0065\u006e\u0075\u006d\u0000\u0000\u0000\u0000" + + "\u0073\u0074\u0072\u0075\u0063\u0074\u0000\u0000" + + "\u0069\u006e\u0074\u0065\u0072\u0066\u0061\u0063" + + "\u0065\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0061\u006e\u0079\u0050\u006f\u0069\u006e\u0074" + + "\u0065\u0072\u0000\u0000\u0000\u0000\u0000\u0000" + ""); +public static final org.capnproto.SegmentReader b_87e739250a60ea97 = + org.capnproto.GeneratedClassSupport.decodeRawBytes( + "\u0000\u0000\u0000\u0000\u0005\u0000\u0006\u0000" + + "\u0097\u00ea\u0060\n\u0025\u0039\u00e7\u0087" + + "\u0036\u0000\u0000\u0000\u0001\u0000\u0003\u0000" + + "\u0060\u00cc\u00f9\u00e1\u00ed\u0078\u0073\u00d0" + + "\u0001\u0000\u0007\u0000\u0001\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0015\u0000\u0000\u0000\u00da\u0001\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0029\u0000\u0000\u0000\u003f\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0072\u0075\u006e\u0074\u0069\u006d\u0065\u002f" + + "\u0073\u0072\u0063\u002f\u006d\u0061\u0069\u006e" + + "\u002f\u006a\u0061\u0076\u0061\u002f\u006f\u0072" + + "\u0067\u002f\u0063\u0061\u0070\u006e\u0070\u0072" + + "\u006f\u0074\u006f\u002f\u0073\u0063\u0068\u0065" + + "\u006d\u0061\u002e\u0063\u0061\u0070\u006e\u0070" + + "\u003a\u0054\u0079\u0070\u0065\u002e\u006c\u0069" + + "\u0073\u0074\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0004\u0000\u0000\u0000\u0003\u0000\u0004\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0001\u0000\u000e\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\r\u0000\u0000\u0000\u0062\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u000c\u0000\u0000\u0000\u0003\u0000\u0001\u0000" + + "\u0018\u0000\u0000\u0000\u0002\u0000\u0001\u0000" + + "\u0065\u006c\u0065\u006d\u0065\u006e\u0074\u0054" + + "\u0079\u0070\u0065\u0000\u0000\u0000\u0000\u0000" + + "\u0010\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0060\u00cc\u00f9\u00e1\u00ed\u0078\u0073\u00d0" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0010\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + ""); +public static final org.capnproto.SegmentReader b_9e0e78711a7f87a9 = + org.capnproto.GeneratedClassSupport.decodeRawBytes( + "\u0000\u0000\u0000\u0000\u0005\u0000\u0006\u0000" + + "\u00a9\u0087\u007f\u001a\u0071\u0078\u000e\u009e" + + "\u0036\u0000\u0000\u0000\u0001\u0000\u0003\u0000" + + "\u0060\u00cc\u00f9\u00e1\u00ed\u0078\u0073\u00d0" + + "\u0001\u0000\u0007\u0000\u0001\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0015\u0000\u0000\u0000\u00da\u0001\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0029\u0000\u0000\u0000\u0077\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0072\u0075\u006e\u0074\u0069\u006d\u0065\u002f" + + "\u0073\u0072\u0063\u002f\u006d\u0061\u0069\u006e" + + "\u002f\u006a\u0061\u0076\u0061\u002f\u006f\u0072" + + "\u0067\u002f\u0063\u0061\u0070\u006e\u0070\u0072" + + "\u006f\u0074\u006f\u002f\u0073\u0063\u0068\u0065" + + "\u006d\u0061\u002e\u0063\u0061\u0070\u006e\u0070" + + "\u003a\u0054\u0079\u0070\u0065\u002e\u0065\u006e" + + "\u0075\u006d\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0008\u0000\u0000\u0000\u0003\u0000\u0004\u0000" + + "\u0000\u0000\u0000\u0000\u0001\u0000\u0000\u0000" + + "\u0000\u0000\u0001\u0000\u000f\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0029\u0000\u0000\u0000\u003a\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0024\u0000\u0000\u0000\u0003\u0000\u0001\u0000" + + "\u0030\u0000\u0000\u0000\u0002\u0000\u0001\u0000" + + "\u0001\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0001\u0000\u0015\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u002d\u0000\u0000\u0000\u0032\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0028\u0000\u0000\u0000\u0003\u0000\u0001\u0000" + + "\u0034\u0000\u0000\u0000\u0002\u0000\u0001\u0000" + + "\u0074\u0079\u0070\u0065\u0049\u0064\u0000\u0000" + + "\u0009\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0009\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0062\u0072\u0061\u006e\u0064\u0000\u0000\u0000" + + "\u0010\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u002b\u0042\u0065\u0060\u00f0\u0055\u0034\u0090" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0010\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + ""); +public static final org.capnproto.SegmentReader b_ac3a6f60ef4cc6d3 = + org.capnproto.GeneratedClassSupport.decodeRawBytes( + "\u0000\u0000\u0000\u0000\u0005\u0000\u0006\u0000" + + "\u00d3\u00c6\u004c\u00ef\u0060\u006f\u003a\u00ac" + + "\u0036\u0000\u0000\u0000\u0001\u0000\u0003\u0000" + + "\u0060\u00cc\u00f9\u00e1\u00ed\u0078\u0073\u00d0" + + "\u0001\u0000\u0007\u0000\u0001\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0015\u0000\u0000\u0000\u00ea\u0001\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0029\u0000\u0000\u0000\u0077\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0072\u0075\u006e\u0074\u0069\u006d\u0065\u002f" + + "\u0073\u0072\u0063\u002f\u006d\u0061\u0069\u006e" + + "\u002f\u006a\u0061\u0076\u0061\u002f\u006f\u0072" + + "\u0067\u002f\u0063\u0061\u0070\u006e\u0070\u0072" + + "\u006f\u0074\u006f\u002f\u0073\u0063\u0068\u0065" + + "\u006d\u0061\u002e\u0063\u0061\u0070\u006e\u0070" + + "\u003a\u0054\u0079\u0070\u0065\u002e\u0073\u0074" + + "\u0072\u0075\u0063\u0074\u0000\u0000\u0000\u0000" + + "\u0008\u0000\u0000\u0000\u0003\u0000\u0004\u0000" + + "\u0000\u0000\u0000\u0000\u0001\u0000\u0000\u0000" + + "\u0000\u0000\u0001\u0000\u0010\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0029\u0000\u0000\u0000\u003a\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0024\u0000\u0000\u0000\u0003\u0000\u0001\u0000" + + "\u0030\u0000\u0000\u0000\u0002\u0000\u0001\u0000" + + "\u0001\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0001\u0000\u0016\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u002d\u0000\u0000\u0000\u0032\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0028\u0000\u0000\u0000\u0003\u0000\u0001\u0000" + + "\u0034\u0000\u0000\u0000\u0002\u0000\u0001\u0000" + + "\u0074\u0079\u0070\u0065\u0049\u0064\u0000\u0000" + + "\u0009\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0009\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0062\u0072\u0061\u006e\u0064\u0000\u0000\u0000" + + "\u0010\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u002b\u0042\u0065\u0060\u00f0\u0055\u0034\u0090" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0010\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + ""); +public static final org.capnproto.SegmentReader b_ed8bca69f7fb0cbf = + org.capnproto.GeneratedClassSupport.decodeRawBytes( + "\u0000\u0000\u0000\u0000\u0005\u0000\u0006\u0000" + + "\u00bf\u000c\u00fb\u00f7\u0069\u00ca\u008b\u00ed" + + "\u0036\u0000\u0000\u0000\u0001\u0000\u0003\u0000" + + "\u0060\u00cc\u00f9\u00e1\u00ed\u0078\u0073\u00d0" + + "\u0001\u0000\u0007\u0000\u0001\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0015\u0000\u0000\u0000\u0002\u0002\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0029\u0000\u0000\u0000\u0077\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0072\u0075\u006e\u0074\u0069\u006d\u0065\u002f" + + "\u0073\u0072\u0063\u002f\u006d\u0061\u0069\u006e" + + "\u002f\u006a\u0061\u0076\u0061\u002f\u006f\u0072" + + "\u0067\u002f\u0063\u0061\u0070\u006e\u0070\u0072" + + "\u006f\u0074\u006f\u002f\u0073\u0063\u0068\u0065" + + "\u006d\u0061\u002e\u0063\u0061\u0070\u006e\u0070" + + "\u003a\u0054\u0079\u0070\u0065\u002e\u0069\u006e" + + "\u0074\u0065\u0072\u0066\u0061\u0063\u0065\u0000" + + "\u0008\u0000\u0000\u0000\u0003\u0000\u0004\u0000" + + "\u0000\u0000\u0000\u0000\u0001\u0000\u0000\u0000" + + "\u0000\u0000\u0001\u0000\u0011\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0029\u0000\u0000\u0000\u003a\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0024\u0000\u0000\u0000\u0003\u0000\u0001\u0000" + + "\u0030\u0000\u0000\u0000\u0002\u0000\u0001\u0000" + + "\u0001\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0001\u0000\u0017\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u002d\u0000\u0000\u0000\u0032\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0028\u0000\u0000\u0000\u0003\u0000\u0001\u0000" + + "\u0034\u0000\u0000\u0000\u0002\u0000\u0001\u0000" + + "\u0074\u0079\u0070\u0065\u0049\u0064\u0000\u0000" + + "\u0009\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0009\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0062\u0072\u0061\u006e\u0064\u0000\u0000\u0000" + + "\u0010\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u002b\u0042\u0065\u0060\u00f0\u0055\u0034\u0090" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0010\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + ""); +public static final org.capnproto.SegmentReader b_c2573fe8a23e49f1 = + org.capnproto.GeneratedClassSupport.decodeRawBytes( + "\u0000\u0000\u0000\u0000\u0005\u0000\u0006\u0000" + + "\u00f1\u0049\u003e\u00a2\u00e8\u003f\u0057\u00c2" + + "\u0036\u0000\u0000\u0000\u0001\u0000\u0003\u0000" + + "\u0060\u00cc\u00f9\u00e1\u00ed\u0078\u0073\u00d0" + + "\u0001\u0000\u0007\u0000\u0001\u0000\u0003\u0000" + + "\u0004\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0015\u0000\u0000\u0000\n\u0002\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u002d\u0000\u0000\u0000\u00af\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0072\u0075\u006e\u0074\u0069\u006d\u0065\u002f" + + "\u0073\u0072\u0063\u002f\u006d\u0061\u0069\u006e" + + "\u002f\u006a\u0061\u0076\u0061\u002f\u006f\u0072" + + "\u0067\u002f\u0063\u0061\u0070\u006e\u0070\u0072" + + "\u006f\u0074\u006f\u002f\u0073\u0063\u0068\u0065" + + "\u006d\u0061\u002e\u0063\u0061\u0070\u006e\u0070" + + "\u003a\u0054\u0079\u0070\u0065\u002e\u0061\u006e" + + "\u0079\u0050\u006f\u0069\u006e\u0074\u0065\u0072" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u000c\u0000\u0000\u0000\u0003\u0000\u0004\u0000" + + "\u0000\u0000\u00ff\u00ff\u0000\u0000\u0000\u0000" + + "\u0001\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0056\u0036\u0059\u00fe\u0079\u005f\u003b\u008e" + + "\u0045\u0000\u0000\u0000\u0072\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0001\u0000\u00fe\u00ff\u0000\u0000\u0000\u0000" + + "\u0001\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0085\u004a\u0061\u00f4\u0024\u00f7\u00d1\u009d" + + "\u0031\u0000\u0000\u0000\u0052\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0002\u0000\u00fd\u00ff\u0000\u0000\u0000\u0000" + + "\u0001\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0074\u00e2\u0056\u000c\u0012\u00c9\u00ef\u00ba" + + "\u001d\u0000\u0000\u0000\u00c2\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0075\u006e\u0063\u006f\u006e\u0073\u0074\u0072" + + "\u0061\u0069\u006e\u0065\u0064\u0000\u0000\u0000" + + "\u0070\u0061\u0072\u0061\u006d\u0065\u0074\u0065" + + "\u0072\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0069\u006d\u0070\u006c\u0069\u0063\u0069\u0074" + + "\u004d\u0065\u0074\u0068\u006f\u0064\u0050\u0061" + + "\u0072\u0061\u006d\u0065\u0074\u0065\u0072\u0000" + ""); +public static final org.capnproto.SegmentReader b_8e3b5f79fe593656 = + org.capnproto.GeneratedClassSupport.decodeRawBytes( + "\u0000\u0000\u0000\u0000\u0005\u0000\u0006\u0000" + + "\u0056\u0036\u0059\u00fe\u0079\u005f\u003b\u008e" + + "\u0041\u0000\u0000\u0000\u0001\u0000\u0003\u0000" + + "\u00f1\u0049\u003e\u00a2\u00e8\u003f\u0057\u00c2" + + "\u0001\u0000\u0007\u0000\u0001\u0000\u0004\u0000" + + "\u0005\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0015\u0000\u0000\u0000\u007a\u0002\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0031\u0000\u0000\u0000\u00e7\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0072\u0075\u006e\u0074\u0069\u006d\u0065\u002f" + + "\u0073\u0072\u0063\u002f\u006d\u0061\u0069\u006e" + + "\u002f\u006a\u0061\u0076\u0061\u002f\u006f\u0072" + + "\u0067\u002f\u0063\u0061\u0070\u006e\u0070\u0072" + + "\u006f\u0074\u006f\u002f\u0073\u0063\u0068\u0065" + + "\u006d\u0061\u002e\u0063\u0061\u0070\u006e\u0070" + + "\u003a\u0054\u0079\u0070\u0065\u002e\u0061\u006e" + + "\u0079\u0050\u006f\u0069\u006e\u0074\u0065\u0072" + + "\u002e\u0075\u006e\u0063\u006f\u006e\u0073\u0074" + + "\u0072\u0061\u0069\u006e\u0065\u0064\u0000\u0000" + + "\u0010\u0000\u0000\u0000\u0003\u0000\u0004\u0000" + + "\u0000\u0000\u00ff\u00ff\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0001\u0000\u0012\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0061\u0000\u0000\u0000\u0042\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\\\u0000\u0000\u0000\u0003\u0000\u0001\u0000" + + "\u0068\u0000\u0000\u0000\u0002\u0000\u0001\u0000" + + "\u0001\u0000\u00fe\u00ff\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0001\u0000\u0019\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0065\u0000\u0000\u0000\u003a\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0060\u0000\u0000\u0000\u0003\u0000\u0001\u0000" + + "\u006c\u0000\u0000\u0000\u0002\u0000\u0001\u0000" + + "\u0002\u0000\u00fd\u00ff\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0001\u0000\u001a\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0069\u0000\u0000\u0000\u002a\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0064\u0000\u0000\u0000\u0003\u0000\u0001\u0000" + + "\u0070\u0000\u0000\u0000\u0002\u0000\u0001\u0000" + + "\u0003\u0000\u00fc\u00ff\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0001\u0000\u001b\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u006d\u0000\u0000\u0000\u005a\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u006c\u0000\u0000\u0000\u0003\u0000\u0001\u0000" + + "\u0078\u0000\u0000\u0000\u0002\u0000\u0001\u0000" + + "\u0061\u006e\u0079\u004b\u0069\u006e\u0064\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0073\u0074\u0072\u0075\u0063\u0074\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u006c\u0069\u0073\u0074\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0063\u0061\u0070\u0061\u0062\u0069\u006c\u0069" + + "\u0074\u0079\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + ""); +public static final org.capnproto.SegmentReader b_9dd1f724f4614a85 = + org.capnproto.GeneratedClassSupport.decodeRawBytes( + "\u0000\u0000\u0000\u0000\u0005\u0000\u0006\u0000" + + "\u0085\u004a\u0061\u00f4\u0024\u00f7\u00d1\u009d" + + "\u0041\u0000\u0000\u0000\u0001\u0000\u0003\u0000" + + "\u00f1\u0049\u003e\u00a2\u00e8\u003f\u0057\u00c2" + + "\u0001\u0000\u0007\u0000\u0001\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0015\u0000\u0000\u0000\u005a\u0002\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0031\u0000\u0000\u0000\u0077\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0072\u0075\u006e\u0074\u0069\u006d\u0065\u002f" + + "\u0073\u0072\u0063\u002f\u006d\u0061\u0069\u006e" + + "\u002f\u006a\u0061\u0076\u0061\u002f\u006f\u0072" + + "\u0067\u002f\u0063\u0061\u0070\u006e\u0070\u0072" + + "\u006f\u0074\u006f\u002f\u0073\u0063\u0068\u0065" + + "\u006d\u0061\u002e\u0063\u0061\u0070\u006e\u0070" + + "\u003a\u0054\u0079\u0070\u0065\u002e\u0061\u006e" + + "\u0079\u0050\u006f\u0069\u006e\u0074\u0065\u0072" + + "\u002e\u0070\u0061\u0072\u0061\u006d\u0065\u0074" + + "\u0065\u0072\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0008\u0000\u0000\u0000\u0003\u0000\u0004\u0000" + + "\u0000\u0000\u0000\u0000\u0002\u0000\u0000\u0000" + + "\u0000\u0000\u0001\u0000\u0013\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0029\u0000\u0000\u0000\u0042\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0024\u0000\u0000\u0000\u0003\u0000\u0001\u0000" + + "\u0030\u0000\u0000\u0000\u0002\u0000\u0001\u0000" + + "\u0001\u0000\u0000\u0000\u0005\u0000\u0000\u0000" + + "\u0000\u0000\u0001\u0000\u0014\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u002d\u0000\u0000\u0000\u007a\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u002c\u0000\u0000\u0000\u0003\u0000\u0001\u0000" + + "\u0038\u0000\u0000\u0000\u0002\u0000\u0001\u0000" + + "\u0073\u0063\u006f\u0070\u0065\u0049\u0064\u0000" + + "\u0009\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0009\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0070\u0061\u0072\u0061\u006d\u0065\u0074\u0065" + + "\u0072\u0049\u006e\u0064\u0065\u0078\u0000\u0000" + + "\u0007\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0007\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + ""); +public static final org.capnproto.SegmentReader b_baefc9120c56e274 = + org.capnproto.GeneratedClassSupport.decodeRawBytes( + "\u0000\u0000\u0000\u0000\u0005\u0000\u0006\u0000" + + "\u0074\u00e2\u0056\u000c\u0012\u00c9\u00ef\u00ba" + + "\u0041\u0000\u0000\u0000\u0001\u0000\u0003\u0000" + + "\u00f1\u0049\u003e\u00a2\u00e8\u003f\u0057\u00c2" + + "\u0001\u0000\u0007\u0000\u0001\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0015\u0000\u0000\u0000\u00ca\u0002\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0039\u0000\u0000\u0000\u003f\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0072\u0075\u006e\u0074\u0069\u006d\u0065\u002f" + + "\u0073\u0072\u0063\u002f\u006d\u0061\u0069\u006e" + + "\u002f\u006a\u0061\u0076\u0061\u002f\u006f\u0072" + + "\u0067\u002f\u0063\u0061\u0070\u006e\u0070\u0072" + + "\u006f\u0074\u006f\u002f\u0073\u0063\u0068\u0065" + + "\u006d\u0061\u002e\u0063\u0061\u0070\u006e\u0070" + + "\u003a\u0054\u0079\u0070\u0065\u002e\u0061\u006e" + + "\u0079\u0050\u006f\u0069\u006e\u0074\u0065\u0072" + + "\u002e\u0069\u006d\u0070\u006c\u0069\u0063\u0069" + + "\u0074\u004d\u0065\u0074\u0068\u006f\u0064\u0050" + + "\u0061\u0072\u0061\u006d\u0065\u0074\u0065\u0072" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0004\u0000\u0000\u0000\u0003\u0000\u0004\u0000" + + "\u0000\u0000\u0000\u0000\u0005\u0000\u0000\u0000" + + "\u0000\u0000\u0001\u0000\u0018\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\r\u0000\u0000\u0000\u007a\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u000c\u0000\u0000\u0000\u0003\u0000\u0001\u0000" + + "\u0018\u0000\u0000\u0000\u0002\u0000\u0001\u0000" + + "\u0070\u0061\u0072\u0061\u006d\u0065\u0074\u0065" + + "\u0072\u0049\u006e\u0064\u0065\u0078\u0000\u0000" + + "\u0007\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0007\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + ""); +public static final org.capnproto.SegmentReader b_903455f06065422b = + org.capnproto.GeneratedClassSupport.decodeRawBytes( + "\u0000\u0000\u0000\u0000\u0005\u0000\u0006\u0000" + + "\u002b\u0042\u0065\u0060\u00f0\u0055\u0034\u0090" + + "\u0031\u0000\u0000\u0000\u0001\u0000\u0000\u0000" + + "\u00d9\u0072\u004c\u0062\u0009\u00c5\u003f\u00a9" + + "\u0001\u0000\u0007\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0015\u0000\u0000\u0000\u00ba\u0001\u0000\u0000" + + "\u002d\u0000\u0000\u0000\u0027\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0041\u0000\u0000\u0000\u003f\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0072\u0075\u006e\u0074\u0069\u006d\u0065\u002f" + + "\u0073\u0072\u0063\u002f\u006d\u0061\u0069\u006e" + + "\u002f\u006a\u0061\u0076\u0061\u002f\u006f\u0072" + + "\u0067\u002f\u0063\u0061\u0070\u006e\u0070\u0072" + + "\u006f\u0074\u006f\u002f\u0073\u0063\u0068\u0065" + + "\u006d\u0061\u002e\u0063\u0061\u0070\u006e\u0070" + + "\u003a\u0042\u0072\u0061\u006e\u0064\u0000\u0000" + + "\u0008\u0000\u0000\u0000\u0001\u0000\u0001\u0000" + + "\u00c9\u006b\u0063\u00a9\u0085\u0034\u00d7\u00ab" + + "\u0009\u0000\u0000\u0000\u0032\u0000\u0000\u0000" + + "\u00fc\u00e7\u009e\u0096\u0016\u00cd\u0063\u00c8" + + "\u0005\u0000\u0000\u0000\u0042\u0000\u0000\u0000" + + "\u0053\u0063\u006f\u0070\u0065\u0000\u0000\u0000" + + "\u0042\u0069\u006e\u0064\u0069\u006e\u0067\u0000" + + "\u0004\u0000\u0000\u0000\u0003\u0000\u0004\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0001\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\r\u0000\u0000\u0000\u003a\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0008\u0000\u0000\u0000\u0003\u0000\u0001\u0000" + + "\u0024\u0000\u0000\u0000\u0002\u0000\u0001\u0000" + + "\u0073\u0063\u006f\u0070\u0065\u0073\u0000\u0000" + + "\u000e\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0003\u0000\u0001\u0000" + + "\u0010\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u00c9\u006b\u0063\u00a9\u0085\u0034\u00d7\u00ab" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u000e\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + ""); +public static final org.capnproto.SegmentReader b_abd73485a9636bc9 = + org.capnproto.GeneratedClassSupport.decodeRawBytes( + "\u0000\u0000\u0000\u0000\u0005\u0000\u0006\u0000" + + "\u00c9\u006b\u0063\u00a9\u0085\u0034\u00d7\u00ab" + + "\u0037\u0000\u0000\u0000\u0001\u0000\u0002\u0000" + + "\u002b\u0042\u0065\u0060\u00f0\u0055\u0034\u0090" + + "\u0001\u0000\u0007\u0000\u0000\u0000\u0002\u0000" + + "\u0004\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0015\u0000\u0000\u0000\u00ea\u0001\u0000\u0000" + + "\u0031\u0000\u0000\u0000\u0007\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u002d\u0000\u0000\u0000\u00af\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0072\u0075\u006e\u0074\u0069\u006d\u0065\u002f" + + "\u0073\u0072\u0063\u002f\u006d\u0061\u0069\u006e" + + "\u002f\u006a\u0061\u0076\u0061\u002f\u006f\u0072" + + "\u0067\u002f\u0063\u0061\u0070\u006e\u0070\u0072" + + "\u006f\u0074\u006f\u002f\u0073\u0063\u0068\u0065" + + "\u006d\u0061\u002e\u0063\u0061\u0070\u006e\u0070" + + "\u003a\u0042\u0072\u0061\u006e\u0064\u002e\u0053" + + "\u0063\u006f\u0070\u0065\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0001\u0000\u0001\u0000" + + "\u000c\u0000\u0000\u0000\u0003\u0000\u0004\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0001\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0045\u0000\u0000\u0000\u0042\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0040\u0000\u0000\u0000\u0003\u0000\u0001\u0000" + + "\u004c\u0000\u0000\u0000\u0002\u0000\u0001\u0000" + + "\u0001\u0000\u00ff\u00ff\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0001\u0000\u0001\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0049\u0000\u0000\u0000\u002a\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0044\u0000\u0000\u0000\u0003\u0000\u0001\u0000" + + "\u0060\u0000\u0000\u0000\u0002\u0000\u0001\u0000" + + "\u0002\u0000\u00fe\u00ff\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0001\u0000\u0002\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u005d\u0000\u0000\u0000\u0042\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0058\u0000\u0000\u0000\u0003\u0000\u0001\u0000" + + "\u0064\u0000\u0000\u0000\u0002\u0000\u0001\u0000" + + "\u0073\u0063\u006f\u0070\u0065\u0049\u0064\u0000" + + "\u0009\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0009\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0062\u0069\u006e\u0064\u0000\u0000\u0000\u0000" + + "\u000e\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0003\u0000\u0001\u0000" + + "\u0010\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u00fc\u00e7\u009e\u0096\u0016\u00cd\u0063\u00c8" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u000e\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0069\u006e\u0068\u0065\u0072\u0069\u0074\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + ""); +public static final org.capnproto.SegmentReader b_c863cd16969ee7fc = + org.capnproto.GeneratedClassSupport.decodeRawBytes( + "\u0000\u0000\u0000\u0000\u0005\u0000\u0006\u0000" + + "\u00fc\u00e7\u009e\u0096\u0016\u00cd\u0063\u00c8" + + "\u0037\u0000\u0000\u0000\u0001\u0000\u0001\u0000" + + "\u002b\u0042\u0065\u0060\u00f0\u0055\u0034\u0090" + + "\u0001\u0000\u0007\u0000\u0000\u0000\u0002\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0015\u0000\u0000\u0000\u00fa\u0001\u0000\u0000" + + "\u0031\u0000\u0000\u0000\u0007\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u002d\u0000\u0000\u0000\u0077\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0072\u0075\u006e\u0074\u0069\u006d\u0065\u002f" + + "\u0073\u0072\u0063\u002f\u006d\u0061\u0069\u006e" + + "\u002f\u006a\u0061\u0076\u0061\u002f\u006f\u0072" + + "\u0067\u002f\u0063\u0061\u0070\u006e\u0070\u0072" + + "\u006f\u0074\u006f\u002f\u0073\u0063\u0068\u0065" + + "\u006d\u0061\u002e\u0063\u0061\u0070\u006e\u0070" + + "\u003a\u0042\u0072\u0061\u006e\u0064\u002e\u0042" + + "\u0069\u006e\u0064\u0069\u006e\u0067\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0001\u0000\u0001\u0000" + + "\u0008\u0000\u0000\u0000\u0003\u0000\u0004\u0000" + + "\u0000\u0000\u00ff\u00ff\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0001\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0029\u0000\u0000\u0000\u0042\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0024\u0000\u0000\u0000\u0003\u0000\u0001\u0000" + + "\u0030\u0000\u0000\u0000\u0002\u0000\u0001\u0000" + + "\u0001\u0000\u00fe\u00ff\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0001\u0000\u0001\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u002d\u0000\u0000\u0000\u002a\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0028\u0000\u0000\u0000\u0003\u0000\u0001\u0000" + + "\u0034\u0000\u0000\u0000\u0002\u0000\u0001\u0000" + + "\u0075\u006e\u0062\u006f\u0075\u006e\u0064\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0074\u0079\u0070\u0065\u0000\u0000\u0000\u0000" + + "\u0010\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0060\u00cc\u00f9\u00e1\u00ed\u0078\u0073\u00d0" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0010\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + ""); +public static final org.capnproto.SegmentReader b_ce23dcd2d7b00c9b = + org.capnproto.GeneratedClassSupport.decodeRawBytes( + "\u0000\u0000\u0000\u0000\u0005\u0000\u0006\u0000" + + "\u009b\u000c\u00b0\u00d7\u00d2\u00dc\u0023\u00ce" + + "\u0031\u0000\u0000\u0000\u0001\u0000\u0002\u0000" + + "\u00d9\u0072\u004c\u0062\u0009\u00c5\u003f\u00a9" + + "\u0001\u0000\u0007\u0000\u0000\u0000\u0013\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0015\u0000\u0000\u0000\u00ba\u0001\u0000\u0000" + + "\u002d\u0000\u0000\u0000\u0007\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0029\u0000\u0000\u0000\u002f\u0004\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0072\u0075\u006e\u0074\u0069\u006d\u0065\u002f" + + "\u0073\u0072\u0063\u002f\u006d\u0061\u0069\u006e" + + "\u002f\u006a\u0061\u0076\u0061\u002f\u006f\u0072" + + "\u0067\u002f\u0063\u0061\u0070\u006e\u0070\u0072" + + "\u006f\u0074\u006f\u002f\u0073\u0063\u0068\u0065" + + "\u006d\u0061\u002e\u0063\u0061\u0070\u006e\u0070" + + "\u003a\u0056\u0061\u006c\u0075\u0065\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0001\u0000\u0001\u0000" + + "\u004c\u0000\u0000\u0000\u0003\u0000\u0004\u0000" + + "\u0000\u0000\u00ff\u00ff\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0001\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0005\u0002\u0000\u0000\u002a\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0002\u0000\u0000\u0003\u0000\u0001\u0000" + + "\u000c\u0002\u0000\u0000\u0002\u0000\u0001\u0000" + + "\u0001\u0000\u00fe\u00ff\u0010\u0000\u0000\u0000" + + "\u0000\u0000\u0001\u0000\u0001\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0009\u0002\u0000\u0000\u002a\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0004\u0002\u0000\u0000\u0003\u0000\u0001\u0000" + + "\u0010\u0002\u0000\u0000\u0002\u0000\u0001\u0000" + + "\u0002\u0000\u00fd\u00ff\u0002\u0000\u0000\u0000" + + "\u0000\u0000\u0001\u0000\u0002\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\r\u0002\u0000\u0000\u002a\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0008\u0002\u0000\u0000\u0003\u0000\u0001\u0000" + + "\u0014\u0002\u0000\u0000\u0002\u0000\u0001\u0000" + + "\u0003\u0000\u00fc\u00ff\u0001\u0000\u0000\u0000" + + "\u0000\u0000\u0001\u0000\u0003\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0011\u0002\u0000\u0000\u0032\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u000c\u0002\u0000\u0000\u0003\u0000\u0001\u0000" + + "\u0018\u0002\u0000\u0000\u0002\u0000\u0001\u0000" + + "\u0004\u0000\u00fb\u00ff\u0001\u0000\u0000\u0000" + + "\u0000\u0000\u0001\u0000\u0004\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0015\u0002\u0000\u0000\u0032\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0010\u0002\u0000\u0000\u0003\u0000\u0001\u0000" + + "\u001c\u0002\u0000\u0000\u0002\u0000\u0001\u0000" + + "\u0005\u0000\u00fa\u00ff\u0001\u0000\u0000\u0000" + + "\u0000\u0000\u0001\u0000\u0005\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0019\u0002\u0000\u0000\u0032\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0014\u0002\u0000\u0000\u0003\u0000\u0001\u0000" + + "\u0020\u0002\u0000\u0000\u0002\u0000\u0001\u0000" + + "\u0006\u0000\u00f9\u00ff\u0002\u0000\u0000\u0000" + + "\u0000\u0000\u0001\u0000\u0006\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u001d\u0002\u0000\u0000\u0032\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0018\u0002\u0000\u0000\u0003\u0000\u0001\u0000" + + "\u0024\u0002\u0000\u0000\u0002\u0000\u0001\u0000" + + "\u0007\u0000\u00f8\u00ff\u0001\u0000\u0000\u0000" + + "\u0000\u0000\u0001\u0000\u0007\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0021\u0002\u0000\u0000\u003a\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u001c\u0002\u0000\u0000\u0003\u0000\u0001\u0000" + + "\u0028\u0002\u0000\u0000\u0002\u0000\u0001\u0000" + + "\u0008\u0000\u00f7\u00ff\u0001\u0000\u0000\u0000" + + "\u0000\u0000\u0001\u0000\u0008\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0025\u0002\u0000\u0000\u003a\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0020\u0002\u0000\u0000\u0003\u0000\u0001\u0000" + + "\u002c\u0002\u0000\u0000\u0002\u0000\u0001\u0000" + + "\u0009\u0000\u00f6\u00ff\u0001\u0000\u0000\u0000" + + "\u0000\u0000\u0001\u0000\u0009\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0029\u0002\u0000\u0000\u003a\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0024\u0002\u0000\u0000\u0003\u0000\u0001\u0000" + + "\u0030\u0002\u0000\u0000\u0002\u0000\u0001\u0000" + + "\n\u0000\u00f5\u00ff\u0001\u0000\u0000\u0000" + + "\u0000\u0000\u0001\u0000\n\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u002d\u0002\u0000\u0000\u0042\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0028\u0002\u0000\u0000\u0003\u0000\u0001\u0000" + + "\u0034\u0002\u0000\u0000\u0002\u0000\u0001\u0000" + + "\u000b\u0000\u00f4\u00ff\u0001\u0000\u0000\u0000" + + "\u0000\u0000\u0001\u0000\u000b\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0031\u0002\u0000\u0000\u0042\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u002c\u0002\u0000\u0000\u0003\u0000\u0001\u0000" + + "\u0038\u0002\u0000\u0000\u0002\u0000\u0001\u0000" + + "\u000c\u0000\u00f3\u00ff\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0001\u0000\u000c\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0035\u0002\u0000\u0000\u002a\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0030\u0002\u0000\u0000\u0003\u0000\u0001\u0000" + + "\u003c\u0002\u0000\u0000\u0002\u0000\u0001\u0000" + + "\r\u0000\u00f2\u00ff\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0001\u0000\r\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0039\u0002\u0000\u0000\u002a\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0034\u0002\u0000\u0000\u0003\u0000\u0001\u0000" + + "\u0040\u0002\u0000\u0000\u0002\u0000\u0001\u0000" + + "\u000e\u0000\u00f1\u00ff\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0001\u0000\u000e\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u003d\u0002\u0000\u0000\u002a\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0038\u0002\u0000\u0000\u0003\u0000\u0001\u0000" + + "\u0044\u0002\u0000\u0000\u0002\u0000\u0001\u0000" + + "\u000f\u0000\u00f0\u00ff\u0001\u0000\u0000\u0000" + + "\u0000\u0000\u0001\u0000\u000f\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0041\u0002\u0000\u0000\u002a\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u003c\u0002\u0000\u0000\u0003\u0000\u0001\u0000" + + "\u0048\u0002\u0000\u0000\u0002\u0000\u0001\u0000" + + "\u0010\u0000\u00ef\u00ff\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0001\u0000\u0010\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0045\u0002\u0000\u0000\u003a\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0040\u0002\u0000\u0000\u0003\u0000\u0001\u0000" + + "\u004c\u0002\u0000\u0000\u0002\u0000\u0001\u0000" + + "\u0011\u0000\u00ee\u00ff\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0001\u0000\u0011\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0049\u0002\u0000\u0000\u0052\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0048\u0002\u0000\u0000\u0003\u0000\u0001\u0000" + + "\u0054\u0002\u0000\u0000\u0002\u0000\u0001\u0000" + + "\u0012\u0000\u00ed\u00ff\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0001\u0000\u0012\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0051\u0002\u0000\u0000\u005a\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0050\u0002\u0000\u0000\u0003\u0000\u0001\u0000" + + "\\\u0002\u0000\u0000\u0002\u0000\u0001\u0000" + + "\u0076\u006f\u0069\u0064\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0062\u006f\u006f\u006c\u0000\u0000\u0000\u0000" + + "\u0001\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0001\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0069\u006e\u0074\u0038\u0000\u0000\u0000\u0000" + + "\u0002\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0002\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0069\u006e\u0074\u0031\u0036\u0000\u0000\u0000" + + "\u0003\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0003\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0069\u006e\u0074\u0033\u0032\u0000\u0000\u0000" + + "\u0004\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0004\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0069\u006e\u0074\u0036\u0034\u0000\u0000\u0000" + + "\u0005\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0005\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0075\u0069\u006e\u0074\u0038\u0000\u0000\u0000" + + "\u0006\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0006\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0075\u0069\u006e\u0074\u0031\u0036\u0000\u0000" + + "\u0007\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0007\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0075\u0069\u006e\u0074\u0033\u0032\u0000\u0000" + + "\u0008\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0008\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0075\u0069\u006e\u0074\u0036\u0034\u0000\u0000" + + "\u0009\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0009\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0066\u006c\u006f\u0061\u0074\u0033\u0032\u0000" + + "\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0066\u006c\u006f\u0061\u0074\u0036\u0034\u0000" + + "\u000b\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u000b\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0074\u0065\u0078\u0074\u0000\u0000\u0000\u0000" + + "\u000c\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u000c\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0064\u0061\u0074\u0061\u0000\u0000\u0000\u0000" + + "\r\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\r\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u006c\u0069\u0073\u0074\u0000\u0000\u0000\u0000" + + "\u0012\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0012\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0065\u006e\u0075\u006d\u0000\u0000\u0000\u0000" + + "\u0007\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0007\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0073\u0074\u0072\u0075\u0063\u0074\u0000\u0000" + + "\u0012\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0012\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0069\u006e\u0074\u0065\u0072\u0066\u0061\u0063" + + "\u0065\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0061\u006e\u0079\u0050\u006f\u0069\u006e\u0074" + + "\u0065\u0072\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0012\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0012\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + ""); +public static final org.capnproto.SegmentReader b_f1c8950dab257542 = + org.capnproto.GeneratedClassSupport.decodeRawBytes( + "\u0000\u0000\u0000\u0000\u0005\u0000\u0006\u0000" + + "\u0042\u0075\u0025\u00ab\r\u0095\u00c8\u00f1" + + "\u0031\u0000\u0000\u0000\u0001\u0000\u0001\u0000" + + "\u00d9\u0072\u004c\u0062\u0009\u00c5\u003f\u00a9" + + "\u0002\u0000\u0007\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0015\u0000\u0000\u0000\u00e2\u0001\u0000\u0000" + + "\u0031\u0000\u0000\u0000\u0007\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u002d\u0000\u0000\u0000\u00af\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0072\u0075\u006e\u0074\u0069\u006d\u0065\u002f" + + "\u0073\u0072\u0063\u002f\u006d\u0061\u0069\u006e" + + "\u002f\u006a\u0061\u0076\u0061\u002f\u006f\u0072" + + "\u0067\u002f\u0063\u0061\u0070\u006e\u0070\u0072" + + "\u006f\u0074\u006f\u002f\u0073\u0063\u0068\u0065" + + "\u006d\u0061\u002e\u0063\u0061\u0070\u006e\u0070" + + "\u003a\u0041\u006e\u006e\u006f\u0074\u0061\u0074" + + "\u0069\u006f\u006e\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0001\u0000\u0001\u0000" + + "\u000c\u0000\u0000\u0000\u0003\u0000\u0004\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0001\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0045\u0000\u0000\u0000\u001a\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0040\u0000\u0000\u0000\u0003\u0000\u0001\u0000" + + "\u004c\u0000\u0000\u0000\u0002\u0000\u0001\u0000" + + "\u0002\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0001\u0000\u0001\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0049\u0000\u0000\u0000\u0032\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0044\u0000\u0000\u0000\u0003\u0000\u0001\u0000" + + "\u0050\u0000\u0000\u0000\u0002\u0000\u0001\u0000" + + "\u0001\u0000\u0000\u0000\u0001\u0000\u0000\u0000" + + "\u0000\u0000\u0001\u0000\u0002\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u004d\u0000\u0000\u0000\u0032\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0048\u0000\u0000\u0000\u0003\u0000\u0001\u0000" + + "\u0054\u0000\u0000\u0000\u0002\u0000\u0001\u0000" + + "\u0069\u0064\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0009\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0009\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0076\u0061\u006c\u0075\u0065\u0000\u0000\u0000" + + "\u0010\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u009b\u000c\u00b0\u00d7\u00d2\u00dc\u0023\u00ce" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0010\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0062\u0072\u0061\u006e\u0064\u0000\u0000\u0000" + + "\u0010\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u002b\u0042\u0065\u0060\u00f0\u0055\u0034\u0090" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0010\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + ""); +public static final org.capnproto.SegmentReader b_d1958f7dba521926 = + org.capnproto.GeneratedClassSupport.decodeRawBytes( + "\u0000\u0000\u0000\u0000\u0005\u0000\u0006\u0000" + + "\u0026\u0019\u0052\u00ba\u007d\u008f\u0095\u00d1" + + "\u0031\u0000\u0000\u0000\u0002\u0000\u0000\u0000" + + "\u00d9\u0072\u004c\u0062\u0009\u00c5\u003f\u00a9" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0015\u0000\u0000\u0000\u00ea\u0001\u0000\u0000" + + "\u0031\u0000\u0000\u0000\u0007\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u002d\u0000\u0000\u0000\u00c7\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0072\u0075\u006e\u0074\u0069\u006d\u0065\u002f" + + "\u0073\u0072\u0063\u002f\u006d\u0061\u0069\u006e" + + "\u002f\u006a\u0061\u0076\u0061\u002f\u006f\u0072" + + "\u0067\u002f\u0063\u0061\u0070\u006e\u0070\u0072" + + "\u006f\u0074\u006f\u002f\u0073\u0063\u0068\u0065" + + "\u006d\u0061\u002e\u0063\u0061\u0070\u006e\u0070" + + "\u003a\u0045\u006c\u0065\u006d\u0065\u006e\u0074" + + "\u0053\u0069\u007a\u0065\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0001\u0000\u0001\u0000" + + "\u0020\u0000\u0000\u0000\u0001\u0000\u0002\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0059\u0000\u0000\u0000\u0032\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0001\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0051\u0000\u0000\u0000\"\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0002\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0049\u0000\u0000\u0000\u002a\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0003\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0041\u0000\u0000\u0000\u004a\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0004\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u003d\u0000\u0000\u0000\u0052\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0005\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0039\u0000\u0000\u0000\u005a\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0006\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0035\u0000\u0000\u0000\u0042\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0007\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u002d\u0000\u0000\u0000\u0082\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0065\u006d\u0070\u0074\u0079\u0000\u0000\u0000" + + "\u0062\u0069\u0074\u0000\u0000\u0000\u0000\u0000" + + "\u0062\u0079\u0074\u0065\u0000\u0000\u0000\u0000" + + "\u0074\u0077\u006f\u0042\u0079\u0074\u0065\u0073" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0066\u006f\u0075\u0072\u0042\u0079\u0074\u0065" + + "\u0073\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0065\u0069\u0067\u0068\u0074\u0042\u0079\u0074" + + "\u0065\u0073\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0070\u006f\u0069\u006e\u0074\u0065\u0072\u0000" + + "\u0069\u006e\u006c\u0069\u006e\u0065\u0043\u006f" + + "\u006d\u0070\u006f\u0073\u0069\u0074\u0065\u0000" + ""); +public static final org.capnproto.SegmentReader b_d85d305b7d839963 = + org.capnproto.GeneratedClassSupport.decodeRawBytes( + "\u0000\u0000\u0000\u0000\u0005\u0000\u0006\u0000" + + "\u0063\u0099\u0083\u007d\u005b\u0030\u005d\u00d8" + + "\u0031\u0000\u0000\u0000\u0001\u0000\u0001\u0000" + + "\u00d9\u0072\u004c\u0062\u0009\u00c5\u003f\u00a9" + + "\u0000\u0000\u0007\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0015\u0000\u0000\u0000\u00f2\u0001\u0000\u0000" + + "\u0031\u0000\u0000\u0000\u0007\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u002d\u0000\u0000\u0000\u00af\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0072\u0075\u006e\u0074\u0069\u006d\u0065\u002f" + + "\u0073\u0072\u0063\u002f\u006d\u0061\u0069\u006e" + + "\u002f\u006a\u0061\u0076\u0061\u002f\u006f\u0072" + + "\u0067\u002f\u0063\u0061\u0070\u006e\u0070\u0072" + + "\u006f\u0074\u006f\u002f\u0073\u0063\u0068\u0065" + + "\u006d\u0061\u002e\u0063\u0061\u0070\u006e\u0070" + + "\u003a\u0043\u0061\u0070\u006e\u0070\u0056\u0065" + + "\u0072\u0073\u0069\u006f\u006e\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0001\u0000\u0001\u0000" + + "\u000c\u0000\u0000\u0000\u0003\u0000\u0004\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0001\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0045\u0000\u0000\u0000\u0032\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0040\u0000\u0000\u0000\u0003\u0000\u0001\u0000" + + "\u004c\u0000\u0000\u0000\u0002\u0000\u0001\u0000" + + "\u0001\u0000\u0000\u0000\u0002\u0000\u0000\u0000" + + "\u0000\u0000\u0001\u0000\u0001\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0049\u0000\u0000\u0000\u0032\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0044\u0000\u0000\u0000\u0003\u0000\u0001\u0000" + + "\u0050\u0000\u0000\u0000\u0002\u0000\u0001\u0000" + + "\u0002\u0000\u0000\u0000\u0003\u0000\u0000\u0000" + + "\u0000\u0000\u0001\u0000\u0002\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u004d\u0000\u0000\u0000\u0032\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0048\u0000\u0000\u0000\u0003\u0000\u0001\u0000" + + "\u0054\u0000\u0000\u0000\u0002\u0000\u0001\u0000" + + "\u006d\u0061\u006a\u006f\u0072\u0000\u0000\u0000" + + "\u0007\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0007\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u006d\u0069\u006e\u006f\u0072\u0000\u0000\u0000" + + "\u0006\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0006\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u006d\u0069\u0063\u0072\u006f\u0000\u0000\u0000" + + "\u0006\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0006\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + ""); +public static final org.capnproto.SegmentReader b_bfc546f6210ad7ce = + org.capnproto.GeneratedClassSupport.decodeRawBytes( + "\u0000\u0000\u0000\u0000\u0005\u0000\u0006\u0000" + + "\u00ce\u00d7\n\u0021\u00f6\u0046\u00c5\u00bf" + + "\u0031\u0000\u0000\u0000\u0001\u0000\u0000\u0000" + + "\u00d9\u0072\u004c\u0062\u0009\u00c5\u003f\u00a9" + + "\u0004\u0000\u0007\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0015\u0000\u0000\u0000\u0032\u0002\u0000\u0000" + + "\u0035\u0000\u0000\u0000\u0017\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0041\u0000\u0000\u0000\u00e7\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0072\u0075\u006e\u0074\u0069\u006d\u0065\u002f" + + "\u0073\u0072\u0063\u002f\u006d\u0061\u0069\u006e" + + "\u002f\u006a\u0061\u0076\u0061\u002f\u006f\u0072" + + "\u0067\u002f\u0063\u0061\u0070\u006e\u0070\u0072" + + "\u006f\u0074\u006f\u002f\u0073\u0063\u0068\u0065" + + "\u006d\u0061\u002e\u0063\u0061\u0070\u006e\u0070" + + "\u003a\u0043\u006f\u0064\u0065\u0047\u0065\u006e" + + "\u0065\u0072\u0061\u0074\u006f\u0072\u0052\u0065" + + "\u0071\u0075\u0065\u0073\u0074\u0000\u0000\u0000" + + "\u0004\u0000\u0000\u0000\u0001\u0000\u0001\u0000" + + "\u0062\u0000\u0081\u002e\u00b0\u000e\u00ea\u00cf" + + "\u0001\u0000\u0000\u0000\u0072\u0000\u0000\u0000" + + "\u0052\u0065\u0071\u0075\u0065\u0073\u0074\u0065" + + "\u0064\u0046\u0069\u006c\u0065\u0000\u0000\u0000" + + "\u0010\u0000\u0000\u0000\u0003\u0000\u0004\u0000" + + "\u0001\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0001\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0061\u0000\u0000\u0000\u0032\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\\\u0000\u0000\u0000\u0003\u0000\u0001\u0000" + + "\u0078\u0000\u0000\u0000\u0002\u0000\u0001\u0000" + + "\u0003\u0000\u0000\u0000\u0001\u0000\u0000\u0000" + + "\u0000\u0000\u0001\u0000\u0001\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0075\u0000\u0000\u0000\u007a\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0074\u0000\u0000\u0000\u0003\u0000\u0001\u0000" + + "\u0090\u0000\u0000\u0000\u0002\u0000\u0001\u0000" + + "\u0000\u0000\u0000\u0000\u0002\u0000\u0000\u0000" + + "\u0000\u0000\u0001\u0000\u0002\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u008d\u0000\u0000\u0000\u006a\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u008c\u0000\u0000\u0000\u0003\u0000\u0001\u0000" + + "\u0098\u0000\u0000\u0000\u0002\u0000\u0001\u0000" + + "\u0002\u0000\u0000\u0000\u0003\u0000\u0000\u0000" + + "\u0000\u0000\u0001\u0000\u0003\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0095\u0000\u0000\u0000\u005a\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0094\u0000\u0000\u0000\u0003\u0000\u0001\u0000" + + "\u00b0\u0000\u0000\u0000\u0002\u0000\u0001\u0000" + + "\u006e\u006f\u0064\u0065\u0073\u0000\u0000\u0000" + + "\u000e\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0003\u0000\u0001\u0000" + + "\u0010\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0017\u00a4\u0023\u00f9\u004c\u00ab\u0082\u00e6" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u000e\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0072\u0065\u0071\u0075\u0065\u0073\u0074\u0065" + + "\u0064\u0046\u0069\u006c\u0065\u0073\u0000\u0000" + + "\u000e\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0003\u0000\u0001\u0000" + + "\u0010\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0062\u0000\u0081\u002e\u00b0\u000e\u00ea\u00cf" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u000e\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0063\u0061\u0070\u006e\u0070\u0056\u0065\u0072" + + "\u0073\u0069\u006f\u006e\u0000\u0000\u0000\u0000" + + "\u0010\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0063\u0099\u0083\u007d\u005b\u0030\u005d\u00d8" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0010\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0073\u006f\u0075\u0072\u0063\u0065\u0049\u006e" + + "\u0066\u006f\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u000e\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0003\u0000\u0001\u0000" + + "\u0010\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u00ae\u0057\u0013\u0004\u00e3\u001d\u008e\u00f3" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u000e\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + ""); +public static final org.capnproto.SegmentReader b_cfea0eb02e810062 = + org.capnproto.GeneratedClassSupport.decodeRawBytes( + "\u0000\u0000\u0000\u0000\u0005\u0000\u0006\u0000" + + "\u0062\u0000\u0081\u002e\u00b0\u000e\u00ea\u00cf" + + "\u0046\u0000\u0000\u0000\u0001\u0000\u0001\u0000" + + "\u00ce\u00d7\n\u0021\u00f6\u0046\u00c5\u00bf" + + "\u0002\u0000\u0007\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0015\u0000\u0000\u0000\u00a2\u0002\u0000\u0000" + + "\u003d\u0000\u0000\u0000\u0017\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0045\u0000\u0000\u0000\u00af\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0072\u0075\u006e\u0074\u0069\u006d\u0065\u002f" + + "\u0073\u0072\u0063\u002f\u006d\u0061\u0069\u006e" + + "\u002f\u006a\u0061\u0076\u0061\u002f\u006f\u0072" + + "\u0067\u002f\u0063\u0061\u0070\u006e\u0070\u0072" + + "\u006f\u0074\u006f\u002f\u0073\u0063\u0068\u0065" + + "\u006d\u0061\u002e\u0063\u0061\u0070\u006e\u0070" + + "\u003a\u0043\u006f\u0064\u0065\u0047\u0065\u006e" + + "\u0065\u0072\u0061\u0074\u006f\u0072\u0052\u0065" + + "\u0071\u0075\u0065\u0073\u0074\u002e\u0052\u0065" + + "\u0071\u0075\u0065\u0073\u0074\u0065\u0064\u0046" + + "\u0069\u006c\u0065\u0000\u0000\u0000\u0000\u0000" + + "\u0004\u0000\u0000\u0000\u0001\u0000\u0001\u0000" + + "\u00e5\u0057\u0023\u0012\u0093\u0041\u0050\u00ae" + + "\u0001\u0000\u0000\u0000\u003a\u0000\u0000\u0000" + + "\u0049\u006d\u0070\u006f\u0072\u0074\u0000\u0000" + + "\u000c\u0000\u0000\u0000\u0003\u0000\u0004\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0001\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0045\u0000\u0000\u0000\u001a\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0040\u0000\u0000\u0000\u0003\u0000\u0001\u0000" + + "\u004c\u0000\u0000\u0000\u0002\u0000\u0001\u0000" + + "\u0001\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0001\u0000\u0001\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0049\u0000\u0000\u0000\u004a\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0048\u0000\u0000\u0000\u0003\u0000\u0001\u0000" + + "\u0054\u0000\u0000\u0000\u0002\u0000\u0001\u0000" + + "\u0002\u0000\u0000\u0000\u0001\u0000\u0000\u0000" + + "\u0000\u0000\u0001\u0000\u0002\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0051\u0000\u0000\u0000\u0042\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u004c\u0000\u0000\u0000\u0003\u0000\u0001\u0000" + + "\u0068\u0000\u0000\u0000\u0002\u0000\u0001\u0000" + + "\u0069\u0064\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0009\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0009\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0066\u0069\u006c\u0065\u006e\u0061\u006d\u0065" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u000c\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u000c\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0069\u006d\u0070\u006f\u0072\u0074\u0073\u0000" + + "\u000e\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0003\u0000\u0001\u0000" + + "\u0010\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u00e5\u0057\u0023\u0012\u0093\u0041\u0050\u00ae" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u000e\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + ""); +public static final org.capnproto.SegmentReader b_ae504193122357e5 = + org.capnproto.GeneratedClassSupport.decodeRawBytes( + "\u0000\u0000\u0000\u0000\u0005\u0000\u0006\u0000" + + "\u00e5\u0057\u0023\u0012\u0093\u0041\u0050\u00ae" + + "\u0054\u0000\u0000\u0000\u0001\u0000\u0001\u0000" + + "\u0062\u0000\u0081\u002e\u00b0\u000e\u00ea\u00cf" + + "\u0001\u0000\u0007\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0015\u0000\u0000\u0000\u00da\u0002\u0000\u0000" + + "\u0041\u0000\u0000\u0000\u0007\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u003d\u0000\u0000\u0000\u0077\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0072\u0075\u006e\u0074\u0069\u006d\u0065\u002f" + + "\u0073\u0072\u0063\u002f\u006d\u0061\u0069\u006e" + + "\u002f\u006a\u0061\u0076\u0061\u002f\u006f\u0072" + + "\u0067\u002f\u0063\u0061\u0070\u006e\u0070\u0072" + + "\u006f\u0074\u006f\u002f\u0073\u0063\u0068\u0065" + + "\u006d\u0061\u002e\u0063\u0061\u0070\u006e\u0070" + + "\u003a\u0043\u006f\u0064\u0065\u0047\u0065\u006e" + + "\u0065\u0072\u0061\u0074\u006f\u0072\u0052\u0065" + + "\u0071\u0075\u0065\u0073\u0074\u002e\u0052\u0065" + + "\u0071\u0075\u0065\u0073\u0074\u0065\u0064\u0046" + + "\u0069\u006c\u0065\u002e\u0049\u006d\u0070\u006f" + + "\u0072\u0074\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0001\u0000\u0001\u0000" + + "\u0008\u0000\u0000\u0000\u0003\u0000\u0004\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0001\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0029\u0000\u0000\u0000\u001a\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0024\u0000\u0000\u0000\u0003\u0000\u0001\u0000" + + "\u0030\u0000\u0000\u0000\u0002\u0000\u0001\u0000" + + "\u0001\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0001\u0000\u0001\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u002d\u0000\u0000\u0000\u002a\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0028\u0000\u0000\u0000\u0003\u0000\u0001\u0000" + + "\u0034\u0000\u0000\u0000\u0002\u0000\u0001\u0000" + + "\u0069\u0064\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0009\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0009\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u006e\u0061\u006d\u0065\u0000\u0000\u0000\u0000" + + "\u000c\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u000c\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + ""); +} +} + diff --git a/runtime/src/main/java/org/capnproto/Serialize.java b/runtime/src/main/java/org/capnproto/Serialize.java index 60b829a..7bdc158 100644 --- a/runtime/src/main/java/org/capnproto/Serialize.java +++ b/runtime/src/main/java/org/capnproto/Serialize.java @@ -342,7 +342,7 @@ public final class Serialize { table.putInt(4 * (ii + 1), segments[ii].limit() / 8); } - outputChannel.write(table, 0, new CompletionHandler() { + outputChannel.write(table, 0, new CompletionHandler<>() { @Override public void completed(Integer result, Integer attachment) { diff --git a/runtime/src/main/java/org/capnproto/TwoPartyClient.java b/runtime/src/main/java/org/capnproto/TwoPartyClient.java index ee3a89c..c088499 100644 --- a/runtime/src/main/java/org/capnproto/TwoPartyClient.java +++ b/runtime/src/main/java/org/capnproto/TwoPartyClient.java @@ -1,6 +1,6 @@ package org.capnproto; -import java.nio.channels.AsynchronousByteChannel; +import java.nio.channels.AsynchronousSocketChannel; import java.util.concurrent.CompletableFuture; public class TwoPartyClient { @@ -8,15 +8,15 @@ public class TwoPartyClient { private final TwoPartyVatNetwork network; private final TwoPartyRpcSystem rpcSystem; - public TwoPartyClient(AsynchronousByteChannel channel) { + public TwoPartyClient(AsynchronousSocketChannel channel) { this(channel, null); } - public TwoPartyClient(AsynchronousByteChannel channel, Capability.Client bootstrapInterface) { + public TwoPartyClient(AsynchronousSocketChannel channel, Capability.Client bootstrapInterface) { this(channel, bootstrapInterface, RpcTwoPartyProtocol.Side.CLIENT); } - public TwoPartyClient(AsynchronousByteChannel channel, + public TwoPartyClient(AsynchronousSocketChannel channel, Capability.Client bootstrapInterface, RpcTwoPartyProtocol.Side side) { this.network = new TwoPartyVatNetwork(channel, side); @@ -32,7 +32,13 @@ public class TwoPartyClient { return rpcSystem.bootstrap(vatId.asReader()); } + public CompletableFuture onDisconnect() { + return this.network.onDisconnect(); + } + + /* public CompletableFuture runOnce() { return this.rpcSystem.runOnce(); } + */ } diff --git a/runtime/src/main/java/org/capnproto/TwoPartyRpcSystem.java b/runtime/src/main/java/org/capnproto/TwoPartyRpcSystem.java index c99092a..1add9f9 100644 --- a/runtime/src/main/java/org/capnproto/TwoPartyRpcSystem.java +++ b/runtime/src/main/java/org/capnproto/TwoPartyRpcSystem.java @@ -7,6 +7,10 @@ public class TwoPartyRpcSystem super(network, bootstrapInterface); } + public TwoPartyRpcSystem(TwoPartyVatNetwork network, Capability.Server bootstrapInterface) { + super(network, new Capability.Client(bootstrapInterface)); + } + public Capability.Client bootstrap(RpcTwoPartyProtocol.VatId.Reader vatId) { var connection = this.network.baseConnect(vatId); var state = getConnectionState(connection); diff --git a/runtime/src/main/java/org/capnproto/TwoPartyServer.java b/runtime/src/main/java/org/capnproto/TwoPartyServer.java index f34d261..1aac7a5 100644 --- a/runtime/src/main/java/org/capnproto/TwoPartyServer.java +++ b/runtime/src/main/java/org/capnproto/TwoPartyServer.java @@ -1,64 +1,145 @@ package org.capnproto; -import java.nio.channels.AsynchronousByteChannel; import java.nio.channels.AsynchronousServerSocketChannel; import java.nio.channels.AsynchronousSocketChannel; import java.nio.channels.CompletionHandler; import java.util.ArrayList; import java.util.List; import java.util.concurrent.CompletableFuture; +import java.util.concurrent.CompletionStage; public class TwoPartyServer { private class AcceptedConnection { - final AsynchronousByteChannel channel; + final AsynchronousSocketChannel channel; final TwoPartyVatNetwork network; final TwoPartyRpcSystem rpcSystem; + private final CompletableFuture messageLoop; - AcceptedConnection(Capability.Client bootstrapInterface, AsynchronousByteChannel channel) { + AcceptedConnection(Capability.Client bootstrapInterface, AsynchronousSocketChannel channel) { this.channel = channel; this.network = new TwoPartyVatNetwork(channel, RpcTwoPartyProtocol.Side.SERVER); this.rpcSystem = new TwoPartyRpcSystem(network, bootstrapInterface); + this.messageLoop = this.rpcSystem.getMessageLoop().exceptionally(exc -> { + connections.remove(this); + return null; + }); } - public CompletableFuture runOnce() { - return this.rpcSystem.runOnce(); + public CompletableFuture getMessageLoop() { + return this.messageLoop; + } + } + + class ConnectionReceiver { + AsynchronousServerSocketChannel listener; + final CompletableFuture messageLoop; + public ConnectionReceiver(AsynchronousServerSocketChannel listener) { + this.listener = listener; + this.messageLoop = doMessageLoop(); + } + + public CompletableFuture getMessageLoop() { + return this.messageLoop; + } + + private CompletableFuture doMessageLoop() { + final var accepted = new CompletableFuture(); + listener.accept(null, new CompletionHandler<>() { + + @Override + public void completed(AsynchronousSocketChannel channel, Object attachment) { + accepted.complete(channel); + } + + @Override + public void failed(Throwable exc, Object attachment) { + accepted.completeExceptionally(exc); + } + }); + return accepted.thenCompose(channel -> CompletableFuture.allOf( + accept(channel), + doMessageLoop())); } } private final Capability.Client bootstrapInterface; private final List connections = new ArrayList<>(); - private final List listeners = new ArrayList<>(); + private final List listeners = new ArrayList<>(); + private final CompletableFuture messageLoop; public TwoPartyServer(Capability.Client bootstrapInterface) { this.bootstrapInterface = bootstrapInterface; + this.messageLoop = doMessageLoop(); } - private synchronized void accept(AsynchronousByteChannel channel) { + public TwoPartyServer(Capability.Server bootstrapServer) { + this(new Capability.Client(bootstrapServer)); + } + + private CompletableFuture getMessageLoop() { + return this.messageLoop; + } + + public CompletableFuture drain() { + CompletableFuture done = new CompletableFuture<>(); + for (var conn: this.connections) { + done = CompletableFuture.allOf(done, conn.getMessageLoop()); + } + return done; + } + + private CompletableFuture accept(AsynchronousSocketChannel channel) { var connection = new AcceptedConnection(this.bootstrapInterface, channel); this.connections.add(connection); + return connection.network.onDisconnect().whenComplete((x, exc) -> { + this.connections.remove(connection); + }); } +/* + private final CompletableFuture acceptLoop(AsynchronousServerSocketChannel listener) { + final var accepted = new CompletableFuture(); + listener.accept(null, new CompletionHandler<>() { - public void listen(AsynchronousServerSocketChannel listener) { - listener.accept(null, new CompletionHandler() { @Override public void completed(AsynchronousSocketChannel channel, Object attachment) { - accept(channel); - listen(listener); + accepted.complete(channel); } @Override public void failed(Throwable exc, Object attachment) { - listeners.remove(listener); + accepted.completeExceptionally(exc); } }); + return accepted.thenCompose(channel -> CompletableFuture.anyOf( + accept(channel), + acceptLoop(listener))); + } +*/ + public CompletableFuture listen(AsynchronousServerSocketChannel listener) { + var receiver = new ConnectionReceiver(listener); + this.listeners.add(receiver); + return receiver.getMessageLoop(); } - public synchronized CompletableFuture runOnce() { + private CompletableFuture doMessageLoop() { + var done = new CompletableFuture<>(); + for (var conn: this.connections) { + done = CompletableFuture.anyOf(done, conn.getMessageLoop()); + } + for (var listener: this.listeners) { + done = CompletableFuture.anyOf(done, listener.getMessageLoop()); + } + return done.thenCompose(x -> doMessageLoop()); + } + + /* + public CompletableFuture runOnce() { var done = new CompletableFuture<>(); for (var conn: connections) { done = CompletableFuture.anyOf(done, conn.runOnce()); } return done; } + */ } diff --git a/runtime/src/main/java/org/capnproto/TwoPartyVatNetwork.java b/runtime/src/main/java/org/capnproto/TwoPartyVatNetwork.java index 3a20469..c1e60f1 100644 --- a/runtime/src/main/java/org/capnproto/TwoPartyVatNetwork.java +++ b/runtime/src/main/java/org/capnproto/TwoPartyVatNetwork.java @@ -1,22 +1,23 @@ package org.capnproto; -import java.nio.channels.AsynchronousByteChannel; +import java.nio.channels.AsynchronousSocketChannel; import java.util.List; import java.util.concurrent.CompletableFuture; -import java.util.concurrent.Executor; -import java.util.concurrent.Executors; public class TwoPartyVatNetwork - implements VatNetwork, VatNetwork.Connection { + implements VatNetwork, + VatNetwork.Connection { - private CompletableFuture writeCompleted = CompletableFuture.completedFuture(null); - private final Executor executor = Executors.newSingleThreadExecutor(); - private final AsynchronousByteChannel channel; + private CompletableFuture previousWrite = CompletableFuture.completedFuture(null); + private final CompletableFuture peerDisconnected = new CompletableFuture<>(); + private final AsynchronousSocketChannel channel; private final RpcTwoPartyProtocol.Side side; private final MessageBuilder peerVatId = new MessageBuilder(4); private boolean accepted; - public TwoPartyVatNetwork(AsynchronousByteChannel channel, RpcTwoPartyProtocol.Side side) { + public final RpcDumper dumper = new RpcDumper(); + + public TwoPartyVatNetwork(AsynchronousSocketChannel channel, RpcTwoPartyProtocol.Side side) { this.channel = channel; this.side = side; this.peerVatId.initRoot(RpcTwoPartyProtocol.VatId.factory).setSide( @@ -33,11 +34,12 @@ public class TwoPartyVatNetwork return peerVatId.getRoot(RpcTwoPartyProtocol.VatId.factory).asReader(); } + public VatNetwork.Connection asConnection() { + return this; + } + private Connection connect(RpcTwoPartyProtocol.VatId.Reader vatId) { - if (vatId.getSide() != side) { - return this; - } - return null; + return vatId.getSide() != side ? this : null; } private CompletableFuture accept() { @@ -58,8 +60,33 @@ public class TwoPartyVatNetwork @Override public CompletableFuture receiveIncomingMessage() { - return Serialize.readAsync(channel).thenApply(message -> { - return new IncomingMessage(message); + return Serialize.readAsync(channel).whenComplete((x, exc) -> { + if (exc != null) { + this.peerDisconnected.complete(null); + } + }).thenApply(reader -> { + var msg = new IncomingMessage(reader); + var dump = this.dumper.dump(msg.getBody().getAs(RpcProtocol.Message.factory), getSide()); + if (!dump.isEmpty()) { + System.out.println(dump); + } + return msg; + }); + } + + @Override + public CompletableFuture onDisconnect() { + return this.peerDisconnected.copy(); + } + + @Override + public CompletableFuture shutdown() { + return this.previousWrite.whenComplete((x, exc) -> { + try { + this.channel.shutdownOutput(); + } + catch (Exception ioExc) { + } }); } @@ -70,7 +97,7 @@ public class TwoPartyVatNetwork @Override public CompletableFuture baseAccept() { - return this.accept().thenApply(conn -> conn); + return this.accept(); } final class OutgoingMessage implements OutgoingRpcMessage { @@ -94,7 +121,7 @@ public class TwoPartyVatNetwork @Override public void send() { - writeCompleted = writeCompleted.thenCompose( + previousWrite = previousWrite.thenCompose( x -> Serialize.writeAsync(channel, message) ); } diff --git a/runtime/src/main/java/org/capnproto/VatNetwork.java b/runtime/src/main/java/org/capnproto/VatNetwork.java index 4292150..c5cf2fd 100644 --- a/runtime/src/main/java/org/capnproto/VatNetwork.java +++ b/runtime/src/main/java/org/capnproto/VatNetwork.java @@ -7,6 +7,8 @@ public interface VatNetwork { interface Connection { OutgoingRpcMessage newOutgoingMessage(int firstSegmentWordSize); CompletableFuture receiveIncomingMessage(); + CompletableFuture onDisconnect(); + CompletableFuture shutdown(); } Connection baseConnect(VatId hostId); diff --git a/runtime/src/main/java/org/capnproto/schema.capnp b/runtime/src/main/java/org/capnproto/schema.capnp new file mode 100644 index 0000000..fd9bf0b --- /dev/null +++ b/runtime/src/main/java/org/capnproto/schema.capnp @@ -0,0 +1,533 @@ +# Copyright (c) 2013-2014 Sandstorm Development Group, Inc. and contributors +# Licensed under the MIT License: +# +# Permission is hereby granted, free of charge, to any person obtaining a copy +# of this software and associated documentation files (the "Software"), to deal +# in the Software without restriction, including without limitation the rights +# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +# copies of the Software, and to permit persons to whom the Software is +# furnished to do so, subject to the following conditions: +# +# The above copyright notice and this permission notice shall be included in +# all copies or substantial portions of the Software. +# +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +# THE SOFTWARE. + +using Cxx = import "/capnp/c++.capnp"; + +@0xa93fc509624c72d9; +$Cxx.namespace("capnp::schema"); + +using Java = import "/capnp/java.capnp"; +$Java.package("org.capnproto"); +$Java.outerClassname("Schema"); + +using Id = UInt64; +# The globally-unique ID of a file, type, or annotation. + +struct Node { + id @0 :Id; + + displayName @1 :Text; + # Name to present to humans to identify this Node. You should not attempt to parse this. Its + # format could change. It is not guaranteed to be unique. + # + # (On Zooko's triangle, this is the node's nickname.) + + displayNamePrefixLength @2 :UInt32; + # If you want a shorter version of `displayName` (just naming this node, without its surrounding + # scope), chop off this many characters from the beginning of `displayName`. + + scopeId @3 :Id; + # ID of the lexical parent node. Typically, the scope node will have a NestedNode pointing back + # at this node, but robust code should avoid relying on this (and, in fact, group nodes are not + # listed in the outer struct's nestedNodes, since they are listed in the fields). `scopeId` is + # zero if the node has no parent, which is normally only the case with files, but should be + # allowed for any kind of node (in order to make runtime type generation easier). + + parameters @32 :List(Parameter); + # If this node is parameterized (generic), the list of parameters. Empty for non-generic types. + + isGeneric @33 :Bool; + # True if this node is generic, meaning that it or one of its parent scopes has a non-empty + # `parameters`. + + struct Parameter { + # Information about one of the node's parameters. + + name @0 :Text; + } + + nestedNodes @4 :List(NestedNode); + # List of nodes nested within this node, along with the names under which they were declared. + + struct NestedNode { + name @0 :Text; + # Unqualified symbol name. Unlike Node.displayName, this *can* be used programmatically. + # + # (On Zooko's triangle, this is the node's petname according to its parent scope.) + + id @1 :Id; + # ID of the nested node. Typically, the target node's scopeId points back to this node, but + # robust code should avoid relying on this. + } + + annotations @5 :List(Annotation); + # Annotations applied to this node. + + union { + # Info specific to each kind of node. + + file @6 :Void; + + struct :group { + dataWordCount @7 :UInt16; + # Size of the data section, in words. + + pointerCount @8 :UInt16; + # Size of the pointer section, in pointers (which are one word each). + + preferredListEncoding @9 :ElementSize; + # The preferred element size to use when encoding a list of this struct. If this is anything + # other than `inlineComposite` then the struct is one word or less in size and is a candidate + # for list packing optimization. + + isGroup @10 :Bool; + # If true, then this "struct" node is actually not an independent node, but merely represents + # some named union or group within a particular parent struct. This node's scopeId refers + # to the parent struct, which may itself be a union/group in yet another struct. + # + # All group nodes share the same dataWordCount and pointerCount as the top-level + # struct, and their fields live in the same ordinal and offset spaces as all other fields in + # the struct. + # + # Note that a named union is considered a special kind of group -- in fact, a named union + # is exactly equivalent to a group that contains nothing but an unnamed union. + + discriminantCount @11 :UInt16; + # Number of fields in this struct which are members of an anonymous union, and thus may + # overlap. If this is non-zero, then a 16-bit discriminant is present indicating which + # of the overlapping fields is active. This can never be 1 -- if it is non-zero, it must be + # two or more. + # + # Note that the fields of an unnamed union are considered fields of the scope containing the + # union -- an unnamed union is not its own group. So, a top-level struct may contain a + # non-zero discriminant count. Named unions, on the other hand, are equivalent to groups + # containing unnamed unions. So, a named union has its own independent schema node, with + # `isGroup` = true. + + discriminantOffset @12 :UInt32; + # If `discriminantCount` is non-zero, this is the offset of the union discriminant, in + # multiples of 16 bits. + + fields @13 :List(Field); + # Fields defined within this scope (either the struct's top-level fields, or the fields of + # a particular group; see `isGroup`). + # + # The fields are sorted by ordinal number, but note that because groups share the same + # ordinal space, the field's index in this list is not necessarily exactly its ordinal. + # On the other hand, the field's position in this list does remain the same even as the + # protocol evolves, since it is not possible to insert or remove an earlier ordinal. + # Therefore, for most use cases, if you want to identify a field by number, it may make the + # most sense to use the field's index in this list rather than its ordinal. + } + + enum :group { + enumerants@14 :List(Enumerant); + # Enumerants ordered by numeric value (ordinal). + } + + interface :group { + methods @15 :List(Method); + # Methods ordered by ordinal. + + superclasses @31 :List(Superclass); + # Superclasses of this interface. + } + + const :group { + type @16 :Type; + value @17 :Value; + } + + annotation :group { + type @18 :Type; + + targetsFile @19 :Bool; + targetsConst @20 :Bool; + targetsEnum @21 :Bool; + targetsEnumerant @22 :Bool; + targetsStruct @23 :Bool; + targetsField @24 :Bool; + targetsUnion @25 :Bool; + targetsGroup @26 :Bool; + targetsInterface @27 :Bool; + targetsMethod @28 :Bool; + targetsParam @29 :Bool; + targetsAnnotation @30 :Bool; + } + } + + struct SourceInfo { + # Additional information about a node which is not needed at runtime, but may be useful for + # documentation or debugging purposes. This is kept in a separate struct to make sure it + # doesn't accidentally get included in contexts where it is not needed. The + # `CodeGeneratorRequest` includes this information in a separate array. + + id @0 :Id; + # ID of the Node which this info describes. + + docComment @1 :Text; + # The top-level doc comment for the Node. + + members @2 :List(Member); + # Information about each member -- i.e. fields (for structs), enumerants (for enums), or + # methods (for interfaces). + # + # This list is the same length and order as the corresponding list in the Node, i.e. + # Node.struct.fields, Node.enum.enumerants, or Node.interface.methods. + + struct Member { + docComment @0 :Text; + # Doc comment on the member. + } + + # TODO(someday): Record location of the declaration in the original source code. + } +} + +struct Field { + # Schema for a field of a struct. + + name @0 :Text; + + codeOrder @1 :UInt16; + # Indicates where this member appeared in the code, relative to other members. + # Code ordering may have semantic relevance -- programmers tend to place related fields + # together. So, using code ordering makes sense in human-readable formats where ordering is + # otherwise irrelevant, like JSON. The values of codeOrder are tightly-packed, so the maximum + # value is count(members) - 1. Fields that are members of a union are only ordered relative to + # the other members of that union, so the maximum value there is count(union.members). + + annotations @2 :List(Annotation); + + const noDiscriminant :UInt16 = 0xffff; + + discriminantValue @3 :UInt16 = Field.noDiscriminant; + # If the field is in a union, this is the value which the union's discriminant should take when + # the field is active. If the field is not in a union, this is 0xffff. + + union { + slot :group { + # A regular, non-group, non-fixed-list field. + + offset @4 :UInt32; + # Offset, in units of the field's size, from the beginning of the section in which the field + # resides. E.g. for a UInt32 field, multiply this by 4 to get the byte offset from the + # beginning of the data section. + + type @5 :Type; + defaultValue @6 :Value; + + hadExplicitDefault @10 :Bool; + # Whether the default value was specified explicitly. Non-explicit default values are always + # zero or empty values. Usually, whether the default value was explicit shouldn't matter. + # The main use case for this flag is for structs representing method parameters: + # explicitly-defaulted parameters may be allowed to be omitted when calling the method. + } + + group :group { + # A group. + + typeId @7 :Id; + # The ID of the group's node. + } + } + + ordinal :union { + implicit @8 :Void; + explicit @9 :UInt16; + # The original ordinal number given to the field. You probably should NOT use this; if you need + # a numeric identifier for a field, use its position within the field array for its scope. + # The ordinal is given here mainly just so that the original schema text can be reproduced given + # the compiled version -- i.e. so that `capnp compile -ocapnp` can do its job. + } +} + +struct Enumerant { + # Schema for member of an enum. + + name @0 :Text; + + codeOrder @1 :UInt16; + # Specifies order in which the enumerants were declared in the code. + # Like Struct.Field.codeOrder. + + annotations @2 :List(Annotation); +} + +struct Superclass { + id @0 :Id; + brand @1 :Brand; +} + +struct Method { + # Schema for method of an interface. + + name @0 :Text; + + codeOrder @1 :UInt16; + # Specifies order in which the methods were declared in the code. + # Like Struct.Field.codeOrder. + + implicitParameters @7 :List(Node.Parameter); + # The parameters listed in [] (typically, type / generic parameters), whose bindings are intended + # to be inferred rather than specified explicitly, although not all languages support this. + + paramStructType @2 :Id; + # ID of the parameter struct type. If a named parameter list was specified in the method + # declaration (rather than a single struct parameter type) then a corresponding struct type is + # auto-generated. Such an auto-generated type will not be listed in the interface's + # `nestedNodes` and its `scopeId` will be zero -- it is completely detached from the namespace. + # (Awkwardly, it does of course inherit generic parameters from the method's scope, which makes + # this a situation where you can't just climb the scope chain to find where a particular + # generic parameter was introduced. Making the `scopeId` zero was a mistake.) + + paramBrand @5 :Brand; + # Brand of param struct type. + + resultStructType @3 :Id; + # ID of the return struct type; similar to `paramStructType`. + + resultBrand @6 :Brand; + # Brand of result struct type. + + annotations @4 :List(Annotation); +} + +struct Type { + # Represents a type expression. + + union { + # The ordinals intentionally match those of Value. + + void @0 :Void; + bool @1 :Void; + int8 @2 :Void; + int16 @3 :Void; + int32 @4 :Void; + int64 @5 :Void; + uint8 @6 :Void; + uint16 @7 :Void; + uint32 @8 :Void; + uint64 @9 :Void; + float32 @10 :Void; + float64 @11 :Void; + text @12 :Void; + data @13 :Void; + + list :group { + elementType @14 :Type; + } + + enum :group { + typeId @15 :Id; + brand @21 :Brand; + } + struct :group { + typeId @16 :Id; + brand @22 :Brand; + } + interface :group { + typeId @17 :Id; + brand @23 :Brand; + } + + anyPointer :union { + unconstrained :union { + # A regular AnyPointer. + # + # The name "unconstrained" means as opposed to constraining it to match a type parameter. + # In retrospect this name is probably a poor choice given that it may still be constrained + # to be a struct, list, or capability. + + anyKind @18 :Void; # truly AnyPointer + struct @25 :Void; # AnyStruct + list @26 :Void; # AnyList + capability @27 :Void; # Capability + } + + parameter :group { + # This is actually a reference to a type parameter defined within this scope. + + scopeId @19 :Id; + # ID of the generic type whose parameter we're referencing. This should be a parent of the + # current scope. + + parameterIndex @20 :UInt16; + # Index of the parameter within the generic type's parameter list. + } + + implicitMethodParameter :group { + # This is actually a reference to an implicit (generic) parameter of a method. The only + # legal context for this type to appear is inside Method.paramBrand or Method.resultBrand. + + parameterIndex @24 :UInt16; + } + } + } +} + +struct Brand { + # Specifies bindings for parameters of generics. Since these bindings turn a generic into a + # non-generic, we call it the "brand". + + scopes @0 :List(Scope); + # For each of the target type and each of its parent scopes, a parameterization may be included + # in this list. If no parameterization is included for a particular relevant scope, then either + # that scope has no parameters or all parameters should be considered to be `AnyPointer`. + + struct Scope { + scopeId @0 :Id; + # ID of the scope to which these params apply. + + union { + bind @1 :List(Binding); + # List of parameter bindings. + + inherit @2 :Void; + # The place where this Brand appears is actually within this scope or a sub-scope, + # and the bindings for this scope should be inherited from the reference point. + } + } + + struct Binding { + union { + unbound @0 :Void; + type @1 :Type; + + # TODO(someday): Allow non-type parameters? Unsure if useful. + } + } +} + +struct Value { + # Represents a value, e.g. a field default value, constant value, or annotation value. + + union { + # The ordinals intentionally match those of Type. + + void @0 :Void; + bool @1 :Bool; + int8 @2 :Int8; + int16 @3 :Int16; + int32 @4 :Int32; + int64 @5 :Int64; + uint8 @6 :UInt8; + uint16 @7 :UInt16; + uint32 @8 :UInt32; + uint64 @9 :UInt64; + float32 @10 :Float32; + float64 @11 :Float64; + text @12 :Text; + data @13 :Data; + + list @14 :AnyPointer; + + enum @15 :UInt16; + struct @16 :AnyPointer; + + interface @17 :Void; + # The only interface value that can be represented statically is "null", whose methods always + # throw exceptions. + + anyPointer @18 :AnyPointer; + } +} + +struct Annotation { + # Describes an annotation applied to a declaration. Note AnnotationNode describes the + # annotation's declaration, while this describes a use of the annotation. + + id @0 :Id; + # ID of the annotation node. + + brand @2 :Brand; + # Brand of the annotation. + # + # Note that the annotation itself is not allowed to be parameterized, but its scope might be. + + value @1 :Value; +} + +enum ElementSize { + # Possible element sizes for encoded lists. These correspond exactly to the possible values of + # the 3-bit element size component of a list pointer. + + empty @0; # aka "void", but that's a keyword. + bit @1; + byte @2; + twoBytes @3; + fourBytes @4; + eightBytes @5; + pointer @6; + inlineComposite @7; +} + +struct CapnpVersion { + major @0 :UInt16; + minor @1 :UInt8; + micro @2 :UInt8; +} + +struct CodeGeneratorRequest { + capnpVersion @2 :CapnpVersion; + # Version of the `capnp` executable. Generally, code generators should ignore this, but the code + # generators that ship with `capnp` itself will print a warning if this mismatches since that + # probably indicates something is misconfigured. + # + # The first version of 'capnp' to set this was 0.6.0. So, if it's missing, the compiler version + # is older than that. + + nodes @0 :List(Node); + # All nodes parsed by the compiler, including for the files on the command line and their + # imports. + + sourceInfo @3 :List(Node.SourceInfo); + # Information about the original source code for each node, where available. This array may be + # omitted or may be missing some nodes if no info is available for them. + + requestedFiles @1 :List(RequestedFile); + # Files which were listed on the command line. + + struct RequestedFile { + id @0 :Id; + # ID of the file. + + filename @1 :Text; + # Name of the file as it appeared on the command-line (minus the src-prefix). You may use + # this to decide where to write the output. + + imports @2 :List(Import); + # List of all imported paths seen in this file. + + struct Import { + id @0 :Id; + # ID of the imported file. + + name @1 :Text; + # Name which *this* file used to refer to the foreign file. This may be a relative name. + # This information is provided because it might be useful for code generation, e.g. to + # generate #include directives in C++. We don't put this in Node.file because this + # information is only meaningful at compile time anyway. + # + # (On Zooko's triangle, this is the import's petname according to the importing file.) + } + } +} diff --git a/runtime/src/test/java/org/capnproto/LocalCapabilityTest.java b/runtime/src/test/java/org/capnproto/LocalCapabilityTest.java new file mode 100644 index 0000000..716d9a1 --- /dev/null +++ b/runtime/src/test/java/org/capnproto/LocalCapabilityTest.java @@ -0,0 +1,66 @@ +package org.capnproto; + +import org.capnproto.demo.Demo; +import org.junit.Assert; +import org.junit.Test; + +import java.util.concurrent.CompletableFuture; +import java.util.concurrent.ExecutionException; + +public class LocalCapabilityTest { + + @Test + public void testLocalServer() throws ExecutionException, InterruptedException { + var demo = new TestCap0Impl(); + var client = new Demo.TestCap0.Client(demo); + var request = client.testMethod0Request(); + var params = request.getParams(); + params.setParam0(4321); + var response = request.send(); + var results = response.get(); + Assert.assertEquals(params.getParam0(), results.getResult0()); + } + + @Test + public void testGenericServer() throws ExecutionException, InterruptedException { + var demo = new TestCap0Impl(); + var client = new Demo.TestCap0.Client(demo); + var request = client.testMethod0Request(); + var params = request.getParams(); + var response = request.send(); + var results = response.get(); + Assert.assertEquals(params.getParam0(), results.getResult0()); + } + + @Test + public void testLocalTwoStagePipeline() { + + var server0 = new Demo.Iface0.Server() { + boolean method0called = false; + + @Override + protected CompletableFuture method0(CallContext ctx) { + method0called = true; + return CompletableFuture.completedFuture(null); + } + }; + + var server1 = new Demo.Iface1.Server() { + @Override + protected CompletableFuture method1(CallContext ctx) { + ctx.getResults().setResult0(new Demo.Iface0.Client(server0)); + return CompletableFuture.completedFuture(null); + } + }; + + var iface1Client = new Demo.Iface1.Client(server1); + var request1 = iface1Client.method1Request(); + var response = request1.send(); + var iface0 = response.getResult0(); + var request0 = iface0.method0Request(); + var response0 = request0.send(); + response0.join(); + Assert.assertTrue(!response0.isCompletedExceptionally()); + Assert.assertTrue(server0.method0called); + } +} diff --git a/runtime/src/test/java/org/capnproto/RpcStateTest.java b/runtime/src/test/java/org/capnproto/RpcStateTest.java index 4d5f2e9..9635078 100644 --- a/runtime/src/test/java/org/capnproto/RpcStateTest.java +++ b/runtime/src/test/java/org/capnproto/RpcStateTest.java @@ -25,7 +25,8 @@ public class RpcStateTest { class TestConnection implements VatNetwork.Connection { - Executor executor = Executors.newSingleThreadExecutor(); + private final CompletableFuture disconnect = new CompletableFuture<>(); + @Override public OutgoingRpcMessage newOutgoingMessage(int firstSegmentWordSize) { var message = new MessageBuilder(); @@ -52,6 +53,17 @@ public class RpcStateTest { public CompletableFuture receiveIncomingMessage() { return null; } + + @Override + public CompletableFuture onDisconnect() { + return this.disconnect.copy(); + } + + @Override + public CompletableFuture shutdown() { + this.disconnect.complete(null); + return this.disconnect.copy(); + } } TestConnection connection; @@ -63,7 +75,7 @@ public class RpcStateTest { public void setUp() throws Exception { connection = new TestConnection(); bootstrapInterface = new Capability.Client(Capability.newNullCap()); - rpc = new RpcState(connection, bootstrapInterface); + rpc = new RpcState(bootstrapInterface, connection, connection.disconnect); } @After diff --git a/runtime/src/test/java/org/capnproto/TwoPartyTest.java b/runtime/src/test/java/org/capnproto/TwoPartyTest.java index 7ffe216..2dd81f8 100644 --- a/runtime/src/test/java/org/capnproto/TwoPartyTest.java +++ b/runtime/src/test/java/org/capnproto/TwoPartyTest.java @@ -6,24 +6,27 @@ import org.junit.Assert; import org.junit.Before; import org.junit.Test; +import java.io.IOException; import java.nio.channels.AsynchronousServerSocketChannel; import java.nio.channels.AsynchronousSocketChannel; import java.util.concurrent.CompletableFuture; import java.util.concurrent.ExecutionException; +import java.util.concurrent.TimeoutException; class TestCap0Impl extends Demo.TestCap0.Server { final Demo.TestCap1.Client testCap1a = new Demo.TestCap1.Client(new TestCap1Impl()); final Demo.TestCap1.Client testCap1b = new Demo.TestCap1.Client(new TestCap1Impl()); - public CompletableFuture testMethod0(CallContext ctx) { + public CompletableFuture testMethod0(CallContext ctx) { var params = ctx.getParams(); var results = ctx.getResults(); results.setResult0(params.getParam0()); + ctx.releaseParams(); return CompletableFuture.completedFuture(null); } - public CompletableFuture testMethod1(CallContext ctx) { + public CompletableFuture testMethod1(CallContext ctx) { var params = ctx.getParams(); var results = ctx.getResults(); var res0 = results.getResult0(); @@ -39,11 +42,29 @@ class TestCap0Impl extends Demo.TestCap0.Server { class TestCap1Impl extends Demo.TestCap1.Server { } + public class TwoPartyTest { + private Thread runServer(TwoPartyVatNetwork network) { + var thread = new Thread(() -> { + try { + network.onDisconnect().get(); + } catch (InterruptedException e) { + e.printStackTrace(); + } catch (ExecutionException e) { + e.printStackTrace(); + } + }, "Server"); + + thread.start(); + return thread; + } + AsynchronousServerSocketChannel serverSocket; AsynchronousSocketChannel clientSocket; TwoPartyClient client; + TwoPartyVatNetwork serverNetwork; + Thread serverThread; @Before public void setUp() throws Exception { @@ -52,14 +73,19 @@ public class TwoPartyTest { this.clientSocket = AsynchronousSocketChannel.open(); this.clientSocket.connect(this.serverSocket.getLocalAddress()).get(); - this.client = new TwoPartyClient(clientSocket); + + var socket = serverSocket.accept().get(); + this.serverNetwork = new TwoPartyVatNetwork(socket, RpcTwoPartyProtocol.Side.SERVER); + //this.serverNetwork.dumper.addSchema(Demo.TestCap1); + this.serverThread = runServer(this.serverNetwork); } @After public void tearDown() throws Exception { this.clientSocket.close(); this.serverSocket.close(); + this.serverThread.join(); this.client = null; } @@ -73,36 +99,87 @@ public class TwoPartyTest { } @Test - public void testBasic() throws ExecutionException, InterruptedException { - var capServer = new TestCap0Impl(); - var server = new TwoPartyServer(new Demo.TestCap0.Client(capServer)); - server.listen(serverSocket); - var demoClient = new Demo.TestCap0.Client(this.client.bootstrap()); - var request = demoClient.testMethod0Request(); + public void testBasic() throws ExecutionException, InterruptedException, IOException { + var server = new TwoPartyRpcSystem(this.serverNetwork, new TestCap0Impl()); + + var demo = new Demo.TestCap0.Client(this.client.bootstrap()); + var request = demo.testMethod0Request(); var params = request.getParams(); params.setParam0(4321); var response = request.send(); - while (!response.isDone()) { - CompletableFuture.anyOf(response, this.client.runOnce(), server.runOnce()).join(); - } + response.get(); Assert.assertTrue(response.isDone()); var results = response.get(); Assert.assertEquals(params.getParam0(), results.getResult0()); + this.clientSocket.shutdownOutput(); + serverThread.join(); + } + + @Test + public void testBasicCleanup() throws ExecutionException, InterruptedException, TimeoutException { + var server = new TwoPartyRpcSystem(this.serverNetwork, new TestCap0Impl()); + var demo = new Demo.TestCap0.Client(this.client.bootstrap()); + var request = demo.testMethod0Request(); + var params = request.getParams(); + params.setParam0(4321); + var response = request.send(); + response.get(); + Assert.assertTrue(response.isDone()); + var results = response.get(); + Assert.assertEquals(params.getParam0(), results.getResult0()); + + demo = null; + } + + @Test + public void testShutdown() throws InterruptedException, IOException { + var server = new TwoPartyRpcSystem(this.serverNetwork, new TestCap0Impl()); + var demo = new Demo.TestCap0.Client(this.client.bootstrap()); + this.clientSocket.shutdownOutput(); + serverThread.join(); + } + + @Test + public void testCallThrows() throws ExecutionException, InterruptedException { + var impl = new Demo.TestCap0.Server() { + public CompletableFuture testMethod0(CallContext ctx) { + return CompletableFuture.failedFuture(new RuntimeException("Call to testMethod0 failed")); + } + public CompletableFuture testMethod1(CallContext ctx) { + return CompletableFuture.completedFuture(null); + } + }; + + var rpcSystem = new TwoPartyRpcSystem(this.serverNetwork, impl); + + var demoClient = new Demo.TestCap0.Client(this.client.bootstrap()); + { + var request = demoClient.testMethod0Request(); + var response = request.send(); + while (!response.isDone()) { + CompletableFuture.anyOf(response).exceptionally(exc -> { return null; }); + } + Assert.assertTrue(response.isCompletedExceptionally()); + } + + // test that the system is still valid + { + var request = demoClient.testMethod1Request(); + var response = request.send(); + response.get(); + Assert.assertFalse(response.isCompletedExceptionally()); + } } @Test public void testReturnCap() throws ExecutionException, InterruptedException { // send a capability back from the server to the client var capServer = new TestCap0Impl(); - var server = new TwoPartyServer(new Demo.TestCap0.Client(capServer)); - server.listen(serverSocket); + var rpcSystem = new TwoPartyRpcSystem(this.serverNetwork, capServer); var demoClient = new Demo.TestCap0.Client(this.client.bootstrap()); var request = demoClient.testMethod1Request(); - var params = request.getParams(); var response = request.send(); - while (!response.isDone()) { - CompletableFuture.anyOf(response, this.client.runOnce(), server.runOnce()).join(); - } + response.get(); Assert.assertTrue(response.isDone()); var results = response.get(); @@ -114,58 +191,5 @@ public class TwoPartyTest { Assert.assertFalse(cap2.isNull()); } - @Test - public void testLocalServer() throws ExecutionException, InterruptedException { - var demo = new TestCap0Impl(); - var client = new Demo.TestCap0.Client(demo); - var request = client.testMethod0Request(); - var params = request.getParams(); - params.setParam0(4321); - var response = request.send(); - var results = response.get(); - Assert.assertEquals(params.getParam0(), results.getResult0()); - } - @Test - public void testGenericServer() throws ExecutionException, InterruptedException { - var demo = new TestCap0Impl(); - var client = new Demo.TestCap0.Client(demo); - var request = client.testMethod0Request(); - var params = request.getParams(); - var response = request.send(); - var results = response.get(); - Assert.assertEquals(params.getParam0(), results.getResult0()); - } - - @Test - public void testLocalTwoStagePipeline() { - - var server0 = new Demo.Iface0.Server() { - boolean method0called = false; - - @Override - protected CompletableFuture method0(CallContext ctx) { - method0called = true; - return CompletableFuture.completedFuture(null); - } - }; - - var server1 = new Demo.Iface1.Server() { - @Override - protected CompletableFuture method1(CallContext ctx) { - ctx.getResults().setResult0(new Demo.Iface0.Client(server0)); - return CompletableFuture.completedFuture(null); - } - }; - - var iface1Client = new Demo.Iface1.Client(server1); - var request1 = iface1Client.method1Request(); - var response = request1.send(); - var iface0 = response.getResult0(); - var request0 = iface0.method0Request(); - var response0 = request0.send(); - response0.join(); - Assert.assertTrue(!response0.isCompletedExceptionally()); - Assert.assertTrue(server0.method0called); - } } \ No newline at end of file diff --git a/runtime/src/test/java/org/capnproto/demo/Demo.java b/runtime/src/test/java/org/capnproto/demo/Demo.java index c77cf16..492b882 100644 --- a/runtime/src/test/java/org/capnproto/demo/Demo.java +++ b/runtime/src/test/java/org/capnproto/demo/Demo.java @@ -411,13 +411,13 @@ public final class Demo { } } - protected java.util.concurrent.CompletableFuture method0(org.capnproto.CallContext context) { + protected java.util.concurrent.CompletableFuture method0(org.capnproto.CallContext context) { return org.capnproto.Capability.Server.internalUnimplemented( "runtime/src/test/java/org/capnproto/demo/demo.capnp:Iface0", "method0", 0xac6d126c2fac16ebL, (short)0); } - protected java.util.concurrent.CompletableFuture method1(org.capnproto.StreamingCallContext context) { + protected java.util.concurrent.CompletableFuture method1(org.capnproto.StreamingCallContext context) { return org.capnproto.Capability.Server.internalUnimplemented( "runtime/src/test/java/org/capnproto/demo/demo.capnp:Iface0", "method1", 0xac6d126c2fac16ebL, (short)1); @@ -715,13 +715,13 @@ public final class Demo { } } - protected java.util.concurrent.CompletableFuture testMethod0(org.capnproto.CallContext context) { + protected java.util.concurrent.CompletableFuture testMethod0(org.capnproto.CallContext context) { return org.capnproto.Capability.Server.internalUnimplemented( "runtime/src/test/java/org/capnproto/demo/demo.capnp:TestCap0", "testMethod0", 0x9c0c5ee4bb0cc725L, (short)0); } - protected java.util.concurrent.CompletableFuture testMethod1(org.capnproto.CallContext context) { + protected java.util.concurrent.CompletableFuture testMethod1(org.capnproto.CallContext context) { return org.capnproto.Capability.Server.internalUnimplemented( "runtime/src/test/java/org/capnproto/demo/demo.capnp:TestCap0", "testMethod1", 0x9c0c5ee4bb0cc725L, (short)1); @@ -829,13 +829,13 @@ public final class Demo { } } - protected java.util.concurrent.CompletableFuture method0(org.capnproto.CallContext context) { + protected java.util.concurrent.CompletableFuture method0(org.capnproto.CallContext context) { return org.capnproto.Capability.Server.internalUnimplemented( "runtime/src/test/java/org/capnproto/demo/demo.capnp:Iface1", "method0", 0xd52dcf38c9f6f7c0L, (short)0); } - protected java.util.concurrent.CompletableFuture method1(org.capnproto.CallContext context) { + protected java.util.concurrent.CompletableFuture method1(org.capnproto.CallContext context) { return org.capnproto.Capability.Server.internalUnimplemented( "runtime/src/test/java/org/capnproto/demo/demo.capnp:Iface1", "method1", 0xd52dcf38c9f6f7c0L, (short)1);