From 6a06e95222d741c47a51bcec85cd20317de7c0b0 Mon Sep 17 00:00:00 2001 From: dcodeIO Date: Wed, 30 Nov 2016 14:50:22 +0100 Subject: [PATCH] pbjs descriptor.proto compatibility; always use Uint8Array in docs for tsd, see #503 --- cli/targets/proto.js | 20 +- dist/protobuf.js | 84 +++---- dist/protobuf.js.map | 2 +- dist/protobuf.min.js | 4 +- dist/protobuf.min.js.gz | Bin 15624 -> 15684 bytes dist/protobuf.min.js.map | 2 +- google/protobuf/README.md | 1 + .../protobuf/descriptor.json | 228 +++++++++++++++--- .../protobuf/descriptor.proto | 39 ++- package.json | 3 +- scripts/types.js | 3 + src/inherits.js | 8 +- src/reader.js | 25 +- src/type.js | 18 +- src/util.js | 2 +- src/writer.js | 29 +-- tests/data/google/protobuf/any.proto | 139 ----------- tests/data/google/protobuf/descriptor.proto | 18 +- tests/data/google/protobuf/duration.proto | 104 -------- tests/data/google/protobuf/empty.proto | 52 ---- tests/data/google/protobuf/timestamp.proto | 108 --------- types/protobuf.js.d.ts | 132 +++------- 22 files changed, 371 insertions(+), 650 deletions(-) create mode 100644 google/protobuf/README.md rename {tests/data/google => google}/protobuf/descriptor.json (80%) rename tests/data/google/protobuf/descriptor-stripped.proto => google/protobuf/descriptor.proto (92%) delete mode 100644 tests/data/google/protobuf/any.proto delete mode 100644 tests/data/google/protobuf/duration.proto delete mode 100644 tests/data/google/protobuf/empty.proto delete mode 100644 tests/data/google/protobuf/timestamp.proto diff --git a/cli/targets/proto.js b/cli/targets/proto.js index 7c88d824e..a15394dc3 100644 --- a/cli/targets/proto.js +++ b/cli/targets/proto.js @@ -144,6 +144,18 @@ function buildEnum(enm) { push("}"); } +function buildRanges(keyword, ranges) { + if (ranges && ranges.length) { + push(""); + ranges.forEach(function(range) { + if (range[0] === range[1]) + push(keyword + " " + range[0] + ";"); + else + push(keyword + " " + range[0] + " to " + (range[1] === 0x1FFFFFFF ? "max" : range[1]) + ";"); + }); + } +} + function buildType(type) { push(""); push("message " + type.name + " {"); @@ -153,12 +165,8 @@ function buildType(type) { first = true; type.fieldsArray.forEach(build); consolidateExtends(type.nestedArray).remaining.forEach(build); - if (type.extensions && type.extensions.length) { - push(""); - type.extensions.forEach(function(range) { - push("extensions " + range[0] + " to " + (range[1] === 0x1FFFFFFF ? "max" : range[1]) + ";"); - }); - } + buildRanges("extensions", type.extensions); + buildRanges("reserved", type.reserved); --indent; push("}"); } diff --git a/dist/protobuf.js b/dist/protobuf.js index 328a88236..6b1bfc0d3 100644 --- a/dist/protobuf.js +++ b/dist/protobuf.js @@ -1,6 +1,6 @@ /*! * protobuf.js v6.0.1 (c) 2016 Daniel Wirtz - * Compiled Wed, 30 Nov 2016 00:09:03 UTC + * Compiled Wed, 30 Nov 2016 13:44:58 UTC * Licensed under the Apache License, Version 2.0 * see: https://github.com/dcodeIO/protobuf.js for details */ @@ -1165,7 +1165,7 @@ function inherits(clazz, type, options) { * @function * @param {Prototype|Object} message Message to encode * @param {Writer} [writer] Writer to use - * @returns {number[]} Encoded message + * @returns {Uint8Array} Encoded message */ encode: { value: function encode(message, writer) { @@ -1179,7 +1179,7 @@ function inherits(clazz, type, options) { * @function * @param {Prototype|Object} message Message to encode * @param {Writer} [writer] Writer to use - * @returns {number[]} Encoded message + * @returns {Uint8Array} Encoded message */ encodeDelimited: { value: function encodeDelimited(message, writer) { @@ -1191,7 +1191,7 @@ function inherits(clazz, type, options) { * Decodes a message of this type from a buffer. * @name Class.decode * @function - * @param {number[]} buffer Buffer to decode + * @param {Uint8Array} buffer Buffer to decode * @returns {Prototype} Decoded message */ decode: { @@ -1204,7 +1204,7 @@ function inherits(clazz, type, options) { * Decodes a message of this type preceeded by its length as a varint from a buffer. * @name Class.decodeDelimited * @function - * @param {number[]} buffer Buffer to decode + * @param {Uint8Array} buffer Buffer to decode * @returns {Prototype} Decoded message */ decodeDelimited: { @@ -2796,7 +2796,7 @@ function indexOutOfRange(reader, writeLength) { * When called as a function, returns an appropriate reader for the specified buffer. * @classdesc Wire format reader using `Uint8Array` if available, otherwise `Array`. * @constructor - * @param {number[]} buffer Buffer to read from + * @param {Uint8Array} buffer Buffer to read from */ function Reader(buffer) { if (!(this instanceof Reader)) @@ -2804,7 +2804,7 @@ function Reader(buffer) { /** * Read buffer. - * @type {number[]} + * @type {Uint8Array} */ this.buf = buffer; @@ -3097,7 +3097,7 @@ ReaderPrototype.double = function read_double() { /** * Reads a sequence of bytes preceeded by its length as a varint. - * @returns {number[]} Value read + * @returns {Uint8Array} Value read */ ReaderPrototype.bytes = function read_bytes() { var length = this.int32() >>> 0, @@ -3193,7 +3193,7 @@ ReaderPrototype.skipType = function(wireType) { /** * Resets this instance and frees all resources. - * @param {number[]} [buffer] New buffer for a new sequence of read operations + * @param {Uint8Array} [buffer] New buffer for a new sequence of read operations * @returns {Reader} `this` */ ReaderPrototype.reset = function reset(buffer) { @@ -3210,8 +3210,8 @@ ReaderPrototype.reset = function reset(buffer) { /** * Finishes the current sequence of read operations, frees all resources and returns the remaining buffer. - * @param {number[]} [buffer] New buffer for a new sequence of read operations - * @returns {number[]} Finished buffer + * @param {Uint8Array} [buffer] New buffer for a new sequence of read operations + * @returns {Uint8Array} Finished buffer */ ReaderPrototype.finish = function finish(buffer) { var remain = this.pos @@ -3248,8 +3248,7 @@ var BufferReaderPrototype = BufferReader.prototype = Object.create(Reader.protot BufferReaderPrototype.constructor = BufferReader; /** - * Reads a float (32 bit) as a number using node buffers. - * @returns {number} Value read + * @override */ BufferReaderPrototype.float = function read_float_buffer() { if (this.pos + 4 > this.len) @@ -3260,8 +3259,7 @@ BufferReaderPrototype.float = function read_float_buffer() { }; /** - * Reads a double (64 bit float) as a number using node buffers. - * @returns {number} Value read + * @override */ BufferReaderPrototype.double = function read_double_buffer() { if (this.pos + 8 > this.len) @@ -3272,8 +3270,7 @@ BufferReaderPrototype.double = function read_double_buffer() { }; /** - * Reads a string. - * @returns {string} Value read + * @override */ BufferReaderPrototype.string = function read_string_buffer() { var length = this.int32() >>> 0, @@ -3286,9 +3283,7 @@ BufferReaderPrototype.string = function read_string_buffer() { }; /** - * Finishes the current sequence of read operations using node buffers, frees all resources and returns the remaining buffer. - * @param {Buffer} [buffer] New buffer for a new sequence of read operations - * @returns {Buffer} Finished buffer + * @override */ BufferReaderPrototype.finish = function finish_buffer(buffer) { var remain = this.pos ? this.buf.slice(this.pos) : this.buf; @@ -4096,6 +4091,10 @@ Type.fromJSON = function fromJSON(name, json) { } throw Error("invalid nested object in " + type + ": " + nestedName); }); + if (json.extensions && json.extensions.length) + type.extensions = json.extensions; + if (json.reserved && json.reserved.length) + type.reserved = json.reserved; return type; }; @@ -4105,10 +4104,12 @@ Type.fromJSON = function fromJSON(name, json) { TypePrototype.toJSON = function toJSON() { var inherited = NamespacePrototype.toJSON.call(this); return { - options : inherited && inherited.options || undefined, - oneofs : Namespace.arrayToJSON(this.getOneofsArray()), - fields : Namespace.arrayToJSON(this.getFieldsArray().filter(function(obj) { return !obj.declaringField; })) || {}, - nested : inherited && inherited.nested || undefined + options : inherited && inherited.options || undefined, + oneofs : Namespace.arrayToJSON(this.getOneofsArray()), + fields : Namespace.arrayToJSON(this.getFieldsArray().filter(function(obj) { return !obj.declaringField; })) || {}, + extensions : this.extensions && this.extensions.length ? this.extensions : undefined, + reserved : this.reserved && this.reserved.length ? this.reserved : undefined, + nested : inherited && inherited.nested || undefined }; }; @@ -4231,7 +4232,7 @@ TypePrototype.encodeDelimited = function encodeDelimited(message, writer) { /** * Decodes a message of this type. - * @param {Reader|number[]} readerOrBuffer Reader or buffer to decode from + * @param {Reader|Uint8Array} readerOrBuffer Reader or buffer to decode from * @param {number} [length] Length of the message, if known beforehand * @returns {Prototype} Decoded message */ @@ -4245,7 +4246,7 @@ TypePrototype.decode = function decode(readerOrBuffer, length) { /** * Decodes a message of this type preceeded by its byte length as a varint. - * @param {Reader|number[]} readerOrBuffer Reader or buffer to decode from + * @param {Reader|Uint8Array} readerOrBuffer Reader or buffer to decode from * @returns {Prototype} Decoded message */ TypePrototype.decodeDelimited = function decodeDelimited(readerOrBuffer) { @@ -4688,7 +4689,7 @@ util.safeProp = function safeProp(prop) { /** * Creates a new buffer of whatever type supported by the environment. * @param {number} [size=0] Buffer size - * @returns {Buffer|Uint8Array|Array} Buffer + * @returns {Uint8Array} Buffer */ util.newBuffer = function newBuffer(size) { return new (util.Buffer || typeof Uint8Array !== 'undefined' && Uint8Array || Array)(size || 0); @@ -5164,7 +5165,7 @@ var LongBits = util.LongBits; * @classdesc Scheduled writer operation. * @memberof Writer * @constructor - * @param {function(number[], number, *)} fn Function to call + * @param {function(Uint8Array, number, *)} fn Function to call * @param {*} val Value to write * @param {number} len Value byte length * @private @@ -5174,7 +5175,7 @@ function Op(fn, val, len) { /** * Function to call. - * @type {function(number[], number, *)} + * @type {function(Uint8Array, number, *)} */ this.fn = fn; @@ -5282,7 +5283,7 @@ var WriterPrototype = Writer.prototype; /** * Pushes a new operation to the queue. - * @param {function(number[], number, *)} fn Function to call + * @param {function(Uint8Array, number, *)} fn Function to call * @param {number} len Value byte length * @param {number} val Value to write * @returns {Writer} `this` @@ -5495,7 +5496,7 @@ var writeBytes = ArrayImpl.prototype.set /** * Writes a sequence of bytes. - * @param {number[]} value Value to write + * @param {Uint8Array} value Value to write * @returns {Writer} `this` */ WriterPrototype.bytes = function write_bytes(value) { @@ -5611,7 +5612,7 @@ WriterPrototype.ldelim = function ldelim(id) { /** * Finishes the current sequence of write operations and frees all resources. - * @returns {number[]} Finished buffer + * @returns {Uint8Array} Finished buffer */ WriterPrototype.finish = function finish() { var head = this.head.next, // skip noop @@ -5646,9 +5647,7 @@ function writeFloatBuffer(buf, pos, val) { } /** - * Writes a float (32 bit) using node buffers. - * @param {number} value Value to write - * @returns {BufferWriter} `this` + * @override */ BufferWriterPrototype.float = function write_float_buffer(value) { return this.push(writeFloatBuffer, 4, value); @@ -5659,9 +5658,7 @@ function writeDoubleBuffer(buf, pos, val) { } /** - * Writes a double (64 bit float) using node buffers. - * @param {number} value Value to write - * @returns {BufferWriter} `this` + * @override */ BufferWriterPrototype.double = function write_double_buffer(value) { return this.push(writeDoubleBuffer, 8, value); @@ -5673,9 +5670,7 @@ function writeBytesBuffer(buf, pos, val) { } /** - * Writes a sequence of bytes using node buffers. - * @param {Buffer} value Value to write - * @returns {BufferWriter} `this` + * @override */ BufferWriterPrototype.bytes = function write_bytes_buffer(value) { var len = value.length >>> 0; @@ -5689,9 +5684,7 @@ function writeStringBuffer(buf, pos, val) { } /** - * Writes a string using node buffers. - * @param {string} value Value to write - * @returns {BufferWriter} `this` + * @override */ BufferWriterPrototype.string = function write_string_buffer(value) { var len = byteLength(value); @@ -5701,8 +5694,7 @@ BufferWriterPrototype.string = function write_string_buffer(value) { }; /** - * Finishes the current sequence of write operations using node buffers and frees all resources. - * @returns {Buffer} Finished buffer + * @override */ BufferWriterPrototype.finish = function finish_buffer() { var head = this.head.next, // skip noop diff --git a/dist/protobuf.js.map b/dist/protobuf.js.map index cfca16974..2d7f59a35 100644 --- a/dist/protobuf.js.map +++ b/dist/protobuf.js.map @@ -1 +1 @@ -{"version":3,"sources":["node_modules/browser-pack/_prelude.js","lib/ieee754.js","src/common.js","src/decoder.js","src/encoder.js","src/enum.js","src/field.js","src/inherits.js","src/mapfield.js","src/method.js","src/namespace.js","src/object.js","src/oneof.js","src/parse.js","src/prototype.js","src/reader.js","src/root.js","src/service.js","src/tokenize.js","src/type.js","src/types.js","src/util.js","src/util/codegen.js","src/util/longbits.js","src/verifier.js","src/writer.js","src/index.js"],"names":[],"mappings":";;;;;;AAAA;ACAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACtHA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACnIA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC1NA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC5NA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACpIA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC1QA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AChMA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AChGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACvIA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC7QA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACrMA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACjJA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC9iBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACnEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACtgBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC5OA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC5IA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC7MA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC7XA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;ACjIA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;ACtSA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACrIA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACtLA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACpIA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;ACtjBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA","file":"protobuf.js","sourcesContent":["(function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require==\"function\"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error(\"Cannot find module '\"+o+\"'\");throw f.code=\"MODULE_NOT_FOUND\",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require==\"function\"&&require;for(var o=0;o> 1,\r\n nBits = -7,\r\n i = isBE ? 0 : (nBytes - 1),\r\n d = isBE ? 1 : -1,\r\n s = buffer[offset + i];\r\n\r\n i += d;\r\n\r\n e = s & ((1 << (-nBits)) - 1);\r\n s >>= (-nBits);\r\n nBits += eLen;\r\n for (; nBits > 0; e = e * 256 + buffer[offset + i], i += d, nBits -= 8);\r\n\r\n m = e & ((1 << (-nBits)) - 1);\r\n e >>= (-nBits);\r\n nBits += mLen;\r\n for (; nBits > 0; m = m * 256 + buffer[offset + i], i += d, nBits -= 8);\r\n\r\n if (e === 0) {\r\n e = 1 - eBias;\r\n } else if (e === eMax) {\r\n return m ? NaN : ((s ? -1 : 1) * Infinity);\r\n } else {\r\n m = m + Math.pow(2, mLen);\r\n e = e - eBias;\r\n }\r\n return (s ? -1 : 1) * m * Math.pow(2, e - mLen);\r\n};\r\n\r\nexports.write = function writeIEEE754(buffer, value, offset, isBE, mLen, nBytes) {\r\n var e, m, c,\r\n eLen = nBytes * 8 - mLen - 1,\r\n eMax = (1 << eLen) - 1,\r\n eBias = eMax >> 1,\r\n rt = (mLen === 23 ? Math.pow(2, -24) - Math.pow(2, -77) : 0),\r\n i = isBE ? (nBytes - 1) : 0,\r\n d = isBE ? -1 : 1,\r\n s = value < 0 || (value === 0 && 1 / value < 0) ? 1 : 0;\r\n\r\n value = Math.abs(value);\r\n\r\n if (isNaN(value) || value === Infinity) {\r\n m = isNaN(value) ? 1 : 0;\r\n e = eMax;\r\n } else {\r\n e = Math.floor(Math.log(value) / Math.LN2);\r\n if (value * (c = Math.pow(2, -e)) < 1) {\r\n e--;\r\n c *= 2;\r\n }\r\n if (e + eBias >= 1) {\r\n value += rt / c;\r\n } else {\r\n value += rt * Math.pow(2, 1 - eBias);\r\n }\r\n if (value * c >= 2) {\r\n e++;\r\n c /= 2;\r\n }\r\n\r\n if (e + eBias >= eMax) {\r\n m = 0;\r\n e = eMax;\r\n } else if (e + eBias >= 1) {\r\n m = (value * c - 1) * Math.pow(2, mLen);\r\n e = e + eBias;\r\n } else {\r\n m = value * Math.pow(2, eBias - 1) * Math.pow(2, mLen);\r\n e = 0;\r\n }\r\n }\r\n\r\n for (; mLen >= 8; buffer[offset + i] = m & 0xff, i += d, m /= 256, mLen -= 8);\r\n\r\n e = (e << mLen) | m;\r\n eLen += mLen;\r\n for (; eLen > 0; buffer[offset + i] = e & 0xff, i += d, e /= 256, eLen -= 8);\r\n\r\n buffer[offset + i - d] |= s * 128;\r\n};\r\n","\"use strict\";\r\n\r\nmodule.exports = common;\r\n\r\n/**\r\n * Provides common type definitions.\r\n * Can also be used to provide additional google types or your own custom types.\r\n * @param {string} name Short name as in `google/protobuf/[name].proto` or full file name\r\n * @param {Object} json JSON definition within `google.protobuf` if a short name, otherwise the file's root definition\r\n * @returns {undefined}\r\n * @property {Object} google/protobuf/any.proto Any\r\n * @property {Object} google/protobuf/duration.proto Duration\r\n * @property {Object} google/protobuf/empty.proto Empty\r\n * @property {Object} google/protobuf/struct.proto Struct, Value, NullValue and ListValue\r\n * @property {Object} google/protobuf/timestamp.proto Timestamp\r\n */\r\nfunction common(name, json) {\r\n if (!/\\/|\\./.test(name)) {\r\n name = \"google/protobuf/\" + name + \".proto\";\r\n json = { nested: { google: { nested: { protobuf: { nested: json } } } } };\r\n }\r\n common[name] = json;\r\n}\r\n\r\n// Not provided because of limited use (feel free to discuss or to provide yourself):\r\n// - google/protobuf/descriptor.proto\r\n// - google/protobuf/field_mask.proto\r\n// - google/protobuf/source_context.proto\r\n// - google/protobuf/type.proto\r\n// - google/protobuf/wrappers.proto\r\n\r\ncommon(\"any\", {\r\n Any: {\r\n fields: {\r\n type_url: {\r\n type: \"string\",\r\n id: 1\r\n },\r\n value: {\r\n type: \"bytes\",\r\n id: 2\r\n }\r\n }\r\n }\r\n});\r\n\r\nvar timeType;\r\n\r\ncommon(\"duration\", {\r\n Duration: timeType = {\r\n fields: {\r\n seconds: {\r\n type: \"int64\",\r\n id: 1\r\n },\r\n nanos: {\r\n type: \"int32\",\r\n id: 2\r\n }\r\n }\r\n }\r\n});\r\n\r\ncommon(\"timestamp\", {\r\n Timestamp: timeType\r\n});\r\n\r\ncommon(\"empty\", {\r\n Empty: {\r\n fields: {}\r\n }\r\n});\r\n\r\ncommon(\"struct\", {\r\n Struct: {\r\n fields: {\r\n fields: {\r\n keyType: \"string\",\r\n type: \"Value\",\r\n id: 1\r\n }\r\n }\r\n },\r\n Value: {\r\n oneofs: {\r\n kind: {\r\n oneof: [ \"nullValue\", \"numberValue\", \"stringValue\", \"boolValue\", \"structValue\", \"listValue\" ]\r\n }\r\n },\r\n fields: {\r\n nullValue: {\r\n type: \"NullValue\",\r\n id: 1\r\n },\r\n numberValue: {\r\n type: \"double\",\r\n id: 2\r\n },\r\n stringValue: {\r\n type: \"string\",\r\n id: 3\r\n },\r\n boolValue: {\r\n type: \"bool\",\r\n id: 4\r\n },\r\n structValue: {\r\n type: \"Struct\",\r\n id: 5\r\n },\r\n listValue: {\r\n type: \"ListValue\",\r\n id: 6\r\n }\r\n }\r\n },\r\n NullValue: {\r\n values: {\r\n NULL_VALUE: 0\r\n }\r\n },\r\n ListValue: {\r\n fields: {\r\n values: {\r\n rule: \"repeated\",\r\n type: \"Value\",\r\n id: 1\r\n }\r\n }\r\n }\r\n});\r\n","\"use strict\";\r\nmodule.exports = Decoder;\r\n\r\nvar Enum = require(5),\r\n Reader = require(15),\r\n types = require(20),\r\n util = require(21);\r\n\r\n/**\r\n * Constructs a new decoder for the specified message type.\r\n * @classdesc Wire format decoder using code generation on top of reflection.\r\n * @constructor\r\n * @param {Type} type Message type\r\n */\r\nfunction Decoder(type) {\r\n\r\n /**\r\n * Message type.\r\n * @type {Type}\r\n */\r\n this.type = type;\r\n}\r\n\r\n/** @alias Decoder.prototype */\r\nvar DecoderPrototype = Decoder.prototype;\r\n\r\n// This is here to mimic Type so that fallback functions work without having to bind()\r\nObject.defineProperties(DecoderPrototype, {\r\n\r\n /**\r\n * Fields of this decoder's message type by id for lookups.\r\n * @name Decoder#fieldsById\r\n * @type {Object.}\r\n * @readonly\r\n */\r\n fieldsById: {\r\n get: DecoderPrototype.getFieldsById = function getFieldsById() {\r\n return this.type.getFieldsById();\r\n }\r\n },\r\n\r\n /**\r\n * With this decoder's message type registered constructor, if any registered, otherwise a generic constructor.\r\n * @name Decoder#ctor\r\n * @type {Prototype}\r\n */\r\n ctor: {\r\n get: DecoderPrototype.getCtor = function getCtor() {\r\n return this.type.getCtor();\r\n }\r\n }\r\n});\r\n\r\n/**\r\n * Decodes a message of this decoder's message type.\r\n * @param {Reader} reader Reader to decode from\r\n * @param {number} [length] Length of the message, if known beforehand\r\n * @returns {Prototype} Populated runtime message\r\n */\r\nDecoderPrototype.decode = function decode_fallback(reader, length) { // codegen reference and fallback\r\n /* eslint-disable no-invalid-this, block-scoped-var, no-redeclare */\r\n var fields = this.getFieldsById(),\r\n reader = reader instanceof Reader ? reader : Reader(reader),\r\n limit = length === undefined ? reader.len : reader.pos + length,\r\n message = new (this.getCtor())();\r\n while (reader.pos < limit) {\r\n var tag = reader.tag(),\r\n field = fields[tag.id].resolve(),\r\n type = field.resolvedType instanceof Enum ? \"uint32\" : field.type;\r\n \r\n // Known fields\r\n if (field) {\r\n\r\n // Map fields\r\n if (field.map) {\r\n var keyType = field.resolvedKeyType /* only valid is enum */ ? \"uint32\" : field.keyType,\r\n length = reader.uint32();\r\n var map = message[field.name] = {};\r\n if (length) {\r\n length += reader.pos;\r\n var ks = [], vs = [];\r\n while (reader.pos < length) {\r\n if (reader.tag().id === 1)\r\n ks[ks.length] = reader[keyType]();\r\n else if (types.basic[type] !== undefined)\r\n vs[vs.length] = reader[type]();\r\n else\r\n vs[vs.length] = field.resolvedType.decode(reader, reader.uint32());\r\n }\r\n for (var i = 0; i < ks.length; ++i)\r\n map[typeof ks[i] === 'object' ? util.longToHash(ks[i]) : ks[i]] = vs[i];\r\n }\r\n\r\n // Repeated fields\r\n } else if (field.repeated) {\r\n var values = message[field.name] || (message[field.name] = []);\r\n\r\n // Packed\r\n if (field.packed && types.packed[type] !== undefined && tag.wireType === 2) {\r\n var plimit = reader.uint32() + reader.pos;\r\n while (reader.pos < plimit)\r\n values[values.length] = reader[type]();\r\n\r\n // Non-packed\r\n } else if (types.basic[type] !== undefined)\r\n values[values.length] = reader[type]();\r\n else\r\n values[values.length] = field.resolvedType.decode(reader, reader.uint32());\r\n\r\n // Non-repeated\r\n } else if (types.basic[type] !== undefined)\r\n message[field.name] = reader[type]();\r\n else\r\n message[field.name] = field.resolvedType.decode(reader, reader.uint32());\r\n\r\n // Unknown fields\r\n } else\r\n reader.skipType(tag.wireType);\r\n }\r\n return message;\r\n /* eslint-enable no-invalid-this, block-scoped-var, no-redeclare */\r\n};\r\n\r\n/**\r\n * Generates a decoder specific to this decoder's message type.\r\n * @returns {function} Decoder function with an identical signature to {@link Decoder#decode}\r\n */\r\nDecoderPrototype.generate = function generate() {\r\n /* eslint-disable no-unexpected-multiline */\r\n var fields = this.type.getFieldsArray(); \r\n var gen = util.codegen(\"r\", \"l\")\r\n\r\n (\"r instanceof Reader||(r=Reader(r))\")\r\n (\"var c=l===undefined?r.len:r.pos+l,m=new (this.getCtor())()\")\r\n (\"while(r.pos} [values] Enum values as an object, by name\r\n * @param {Object} [options] Declared options\r\n */\r\nfunction Enum(name, values, options) {\r\n ReflectionObject.call(this, name, options);\r\n\r\n /**\r\n * Enum values by name.\r\n * @type {Object.}\r\n */\r\n this.values = values || {}; // toJSON, marker\r\n\r\n /**\r\n * Cached values by id.\r\n * @type {?Object.}\r\n * @private\r\n */\r\n this._valuesById = null;\r\n}\r\n\r\nObject.defineProperties(EnumPrototype, {\r\n\r\n /**\r\n * Enum values by id.\r\n * @name Enum#valuesById\r\n * @type {Object.}\r\n * @readonly\r\n */\r\n valuesById: {\r\n get: EnumPrototype.getValuesById = function getValuesById() {\r\n if (!this._valuesById) {\r\n this._valuesById = {};\r\n Object.keys(this.values).forEach(function(name) {\r\n var id = this.values[name];\r\n if (this._valuesById[id])\r\n throw Error(\"duplicate id \" + id + \" in \" + this);\r\n this._valuesById[id] = name;\r\n }, this);\r\n }\r\n return this._valuesById;\r\n }\r\n }\r\n});\r\n\r\nfunction clearCache(enm) {\r\n enm._valuesById = null;\r\n return enm;\r\n}\r\n\r\n/**\r\n * Tests if the specified JSON object describes an enum.\r\n * @param {*} json JSON object to test\r\n * @returns {boolean} `true` if the object describes an enum\r\n */\r\nEnum.testJSON = function testJSON(json) {\r\n return Boolean(json && json.values);\r\n};\r\n\r\n/**\r\n * Creates an enum from JSON.\r\n * @param {string} name Enum name\r\n * @param {Object.} json JSON object\r\n * @returns {Enum} Created enum\r\n * @throws {TypeError} If arguments are invalid\r\n */\r\nEnum.fromJSON = function fromJSON(name, json) {\r\n return new Enum(name, json.values, json.options);\r\n};\r\n\r\n/**\r\n * @override\r\n */\r\nEnumPrototype.toJSON = function toJSON() {\r\n return {\r\n options : this.options,\r\n values : this.values\r\n };\r\n};\r\n\r\n/**\r\n * Adds a value to this enum.\r\n * @param {string} name Value name\r\n * @param {number} id Value id\r\n * @returns {Enum} `this`\r\n * @throws {TypeError} If arguments are invalid\r\n * @throws {Error} If there is already a value with this name or id\r\n */\r\nEnumPrototype.add = function(name, id) {\r\n if (!util.isString(name))\r\n throw _TypeError(\"name\");\r\n if (!util.isInteger(id) || id < 0)\r\n throw _TypeError(\"id\", \"a non-negative integer\");\r\n if (this.values[name] !== undefined)\r\n throw Error('duplicate name \"' + name + '\" in ' + this);\r\n if (this.getValuesById()[id] !== undefined)\r\n throw Error(\"duplicate id \" + id + \" in \" + this);\r\n this.values[name] = id;\r\n return clearCache(this);\r\n};\r\n\r\n/**\r\n * Removes a value from this enum\r\n * @param {string} name Value name\r\n * @returns {Enum} `this`\r\n * @throws {TypeError} If arguments are invalid\r\n * @throws {Error} If `name` is not a name of this enum\r\n */\r\nEnumPrototype.remove = function(name) {\r\n if (!util.isString(name))\r\n throw _TypeError(\"name\");\r\n if (this.values[name] === undefined)\r\n throw Error('\"' + name + '\" is not a name of ' + this);\r\n delete this.values[name];\r\n return clearCache(this);\r\n};\r\n","\"use strict\";\r\nmodule.exports = Field;\r\n\r\nvar ReflectionObject = require(11);\r\n/** @alias Field.prototype */\r\nvar FieldPrototype = ReflectionObject.extend(Field);\r\n\r\nvar Type = require(19),\r\n Enum = require(5),\r\n MapField = require(8),\r\n types = require(20),\r\n util = require(21);\r\n\r\nvar _TypeError = util._TypeError;\r\n\r\n/**\r\n * Constructs a new message field. Note that {@link MapField|map fields} have their own class.\r\n * @classdesc Reflected message field.\r\n * @extends ReflectionObject\r\n * @constructor\r\n * @param {string} name Unique name within its namespace\r\n * @param {number} id Unique id within its namespace\r\n * @param {string} type Value type\r\n * @param {string} [rule=optional] Field rule\r\n * @param {string} [extend] Extended type if different from parent\r\n * @param {Object} [options] Declared options\r\n */\r\nfunction Field(name, id, type, rule, extend, options) {\r\n if (util.isObject(rule)) {\r\n options = rule;\r\n rule = extend = undefined;\r\n } else if (util.isObject(extend)) {\r\n options = extend;\r\n extend = undefined;\r\n }\r\n ReflectionObject.call(this, name, options);\r\n if (!util.isInteger(id) || id < 0)\r\n throw _TypeError(\"id\", \"a non-negative integer\");\r\n if (!util.isString(type))\r\n throw _TypeError(\"type\");\r\n if (extend !== undefined && !util.isString(extend))\r\n throw _TypeError(\"extend\");\r\n if (rule !== undefined && !/^required|optional|repeated$/.test(rule = rule.toString().toLowerCase()))\r\n throw _TypeError(\"rule\", \"a valid rule string\");\r\n\r\n /**\r\n * Field rule, if any.\r\n * @type {string|undefined}\r\n */\r\n this.rule = rule && rule !== 'optional' ? rule : undefined; // toJSON\r\n\r\n /**\r\n * Field type.\r\n * @type {string}\r\n */\r\n this.type = type; // toJSON\r\n\r\n /**\r\n * Unique field id.\r\n * @type {number}\r\n */\r\n this.id = id; // toJSON, marker\r\n\r\n /**\r\n * Extended type if different from parent.\r\n * @type {string|undefined}\r\n */\r\n this.extend = extend || undefined; // toJSON\r\n\r\n /**\r\n * Whether this field is required.\r\n * @type {boolean}\r\n */\r\n this.required = rule === \"required\";\r\n\r\n /**\r\n * Whether this field is optional.\r\n * @type {boolean}\r\n */\r\n this.optional = !this.required;\r\n\r\n /**\r\n * Whether this field is repeated.\r\n * @type {boolean}\r\n */\r\n this.repeated = rule === \"repeated\";\r\n\r\n /**\r\n * Whether this field is a map or not.\r\n * @type {boolean}\r\n */\r\n this.map = false;\r\n\r\n /**\r\n * Message this field belongs to.\r\n * @type {?Type}\r\n */\r\n this.message = null;\r\n\r\n /**\r\n * OneOf this field belongs to, if any,\r\n * @type {?OneOf}\r\n */\r\n this.partOf = null;\r\n\r\n /**\r\n * The field's default value. Only relevant when working with proto2.\r\n * @type {*}\r\n */\r\n this.defaultValue = null;\r\n\r\n /**\r\n * Whether this field's value should be treated as a long.\r\n * @type {boolean}\r\n */\r\n this.long = util.Long ? types.long[type] !== undefined : false;\r\n\r\n /**\r\n * Resolved type if not a basic type.\r\n * @type {?(Type|Enum)}\r\n */\r\n this.resolvedType = null;\r\n\r\n /**\r\n * Sister-field within the extended type if a declaring extension field.\r\n * @type {?Field}\r\n */\r\n this.extensionField = null;\r\n\r\n /**\r\n * Sister-field within the declaring namespace if an extended field.\r\n * @type {?Field}\r\n */\r\n this.declaringField = null;\r\n\r\n /**\r\n * Internally remembers whether this field is packed.\r\n * @type {?boolean}\r\n * @private\r\n */\r\n this._packed = null;\r\n}\r\n\r\nObject.defineProperties(FieldPrototype, {\r\n\r\n /**\r\n * Determines whether this field is packed. Only relevant when repeated and working with proto2.\r\n * @name Field#packed\r\n * @type {boolean}\r\n * @readonly\r\n */\r\n packed: {\r\n get: FieldPrototype.isPacked = function() {\r\n if (this._packed === null)\r\n this._packed = this.getOption(\"packed\") !== false;\r\n return this._packed;\r\n }\r\n }\r\n\r\n});\r\n\r\n/**\r\n * @override\r\n */\r\nFieldPrototype.setOption = function setOption(name, value, ifNotSet) {\r\n if (name === \"packed\")\r\n this._packed = null;\r\n return ReflectionObject.prototype.setOption.call(this, name, value, ifNotSet);\r\n};\r\n\r\n/**\r\n * Tests if the specified JSON object describes a field.\r\n * @param {*} json Any JSON object to test\r\n * @returns {boolean} `true` if the object describes a field\r\n */\r\nField.testJSON = function testJSON(json) {\r\n return Boolean(json && json.id !== undefined);\r\n};\r\n\r\n/**\r\n * Constructs a field from JSON.\r\n * @param {string} name Field name\r\n * @param {Object} json JSON object\r\n * @returns {Field} Created field\r\n * @throws {TypeError} If arguments are invalid\r\n */\r\nField.fromJSON = function fromJSON(name, json) {\r\n if (json.keyType !== undefined)\r\n return MapField.fromJSON(name, json);\r\n return new Field(name, json.id, json.type, json.role, json.extend, json.options);\r\n};\r\n\r\n/**\r\n * @override\r\n */\r\nFieldPrototype.toJSON = function toJSON() {\r\n return {\r\n rule : this.rule !== \"optional\" && this.rule || undefined,\r\n type : this.type,\r\n id : this.id,\r\n extend : this.extend,\r\n options : this.options\r\n };\r\n};\r\n\r\n/**\r\n * Resolves this field's type references.\r\n * @returns {Field} `this`\r\n * @throws {Error} If any reference cannot be resolved\r\n */\r\nFieldPrototype.resolve = function resolve() {\r\n if (this.resolved)\r\n return this;\r\n\r\n var typeDefault = types.defaults[this.type];\r\n\r\n // if not a basic type, resolve it\r\n if (typeDefault === undefined) {\r\n var resolved = this.parent.lookup(this.type);\r\n if (resolved instanceof Type) {\r\n this.resolvedType = resolved;\r\n typeDefault = null;\r\n } else if (resolved instanceof Enum) {\r\n this.resolvedType = resolved;\r\n typeDefault = 0;\r\n } else\r\n throw Error(\"unresolvable field type: \" + this.type);\r\n }\r\n\r\n // when everything is resolved determine the default value\r\n var optionDefault;\r\n if (this.map)\r\n this.defaultValue = {};\r\n else if (this.repeated)\r\n this.defaultValue = [];\r\n else if (this.options && (optionDefault = this.options['default']) !== undefined) // eslint-disable-line dot-notation\r\n this.defaultValue = optionDefault;\r\n else\r\n this.defaultValue = typeDefault;\r\n\r\n if (this.long)\r\n this.defaultValue = util.Long.fromValue(this.defaultValue);\r\n \r\n return ReflectionObject.prototype.resolve.call(this);\r\n};\r\n\r\n/**\r\n * Converts a field value to JSON using the specified options. Note that this method does not account for repeated fields and must be called once for each repeated element instead.\r\n * @param {*} value Field value\r\n * @param {Object.} [options] Conversion options\r\n * @returns {*} Converted value\r\n * @see {@link Prototype#asJSON}\r\n */\r\nFieldPrototype.jsonConvert = function(value, options) {\r\n if (options) {\r\n if (this.resolvedType instanceof Enum && options['enum'] === String) // eslint-disable-line dot-notation\r\n return this.resolvedType.getValuesById()[value];\r\n else if (this.long && options.long)\r\n return options.long === Number\r\n ? typeof value === 'number'\r\n ? value\r\n : util.Long.fromValue(value).toNumber()\r\n : util.Long.fromValue(value, this.type.charAt(0) === 'u').toString();\r\n }\r\n return value;\r\n};\r\n","\"use strict\";\r\nmodule.exports = inherits;\r\n\r\nvar Prototype = require(14),\r\n Type = require(19),\r\n util = require(21);\r\n\r\nvar _TypeError = util._TypeError;\r\n\r\n/**\r\n * Options passed to {@link inherits}, modifying its behavior.\r\n * @typedef InheritanceOptions\r\n * @type {Object}\r\n * @property {boolean} [noStatics=false] Skips adding the default static methods on top of the constructor\r\n * @property {boolean} [noRegister=false] Skips registering the constructor with the reflected type\r\n */\r\n\r\n/**\r\n * Inherits a custom class from the message prototype of the specified message type.\r\n * @param {Function} clazz Inheriting class\r\n * @param {Type} type Inherited message type\r\n * @param {InheritanceOptions} [options] Inheritance options\r\n * @returns {Prototype} Created prototype\r\n */\r\nfunction inherits(clazz, type, options) {\r\n if (typeof clazz !== 'function')\r\n throw _TypeError(\"clazz\", \"a function\");\r\n if (!(type instanceof Type))\r\n throw _TypeError(\"type\", \"a Type\");\r\n if (!options)\r\n options = {};\r\n\r\n /**\r\n * This is not an actual type but stands as a reference for any constructor of a custom message class that you pass to the library.\r\n * @name Class\r\n * @extends Prototype\r\n * @constructor\r\n * @param {Object.} [properties] Properties to set on the message\r\n * @see {@link inherits}\r\n */\r\n\r\n var classProperties = {\r\n \r\n /**\r\n * Reference to the reflected type.\r\n * @name Class.$type\r\n * @type {Type}\r\n * @readonly\r\n */\r\n $type: {\r\n value: type\r\n }\r\n };\r\n\r\n if (!options.noStatics)\r\n util.merge(classProperties, {\r\n\r\n /**\r\n * Encodes a message of this type to a buffer.\r\n * @name Class.encode\r\n * @function\r\n * @param {Prototype|Object} message Message to encode\r\n * @param {Writer} [writer] Writer to use\r\n * @returns {number[]} Encoded message\r\n */\r\n encode: {\r\n value: function encode(message, writer) {\r\n return this.$type.encode(message, writer).finish();\r\n }\r\n },\r\n\r\n /**\r\n * Encodes a message of this type preceeded by its length as a varint to a buffer.\r\n * @name Class.encodeDelimited\r\n * @function\r\n * @param {Prototype|Object} message Message to encode\r\n * @param {Writer} [writer] Writer to use\r\n * @returns {number[]} Encoded message\r\n */\r\n encodeDelimited: {\r\n value: function encodeDelimited(message, writer) {\r\n return this.$type.encodeDelimited(message, writer).finish();\r\n }\r\n },\r\n\r\n /**\r\n * Decodes a message of this type from a buffer.\r\n * @name Class.decode\r\n * @function\r\n * @param {number[]} buffer Buffer to decode\r\n * @returns {Prototype} Decoded message\r\n */\r\n decode: {\r\n value: function decode(buffer) {\r\n return this.$type.decode(buffer);\r\n }\r\n },\r\n\r\n /**\r\n * Decodes a message of this type preceeded by its length as a varint from a buffer.\r\n * @name Class.decodeDelimited\r\n * @function\r\n * @param {number[]} buffer Buffer to decode\r\n * @returns {Prototype} Decoded message\r\n */\r\n decodeDelimited: {\r\n value: function decodeDelimited(buffer) {\r\n return this.$type.decodeDelimited(buffer);\r\n }\r\n },\r\n\r\n /**\r\n * Verifies a message of this type.\r\n * @name Class.verify\r\n * @function\r\n * @param {Prototype|Object} message Message or plain object to verify\r\n * @returns {?string} `null` if valid, otherwise the reason why it is not\r\n */\r\n verify: {\r\n value: function verify(message) {\r\n return this.$type.verify(message);\r\n }\r\n }\r\n\r\n }, true);\r\n\r\n Object.defineProperties(clazz, classProperties);\r\n var prototype = inherits.defineProperties(new Prototype(), type);\r\n clazz.prototype = prototype;\r\n prototype.constructor = clazz;\r\n\r\n if (!options.noRegister)\r\n type.setCtor(clazz);\r\n\r\n return prototype;\r\n}\r\n\r\n/**\r\n * Defines the reflected type's default values and virtual oneof properties on the specified prototype.\r\n * @memberof inherits\r\n * @param {Prototype} prototype Prototype to define properties upon\r\n * @param {Type} type Reflected message type\r\n * @returns {Prototype} The specified prototype\r\n */\r\ninherits.defineProperties = function defineProperties(prototype, type) {\r\n\r\n var prototypeProperties = {\r\n\r\n /**\r\n * Reference to the reflected type.\r\n * @name Prototype#$type\r\n * @type {Type}\r\n * @readonly\r\n */\r\n $type: {\r\n value: type\r\n }\r\n };\r\n\r\n // Initialize default values\r\n type.getFieldsArray().forEach(function(field) {\r\n field.resolve();\r\n if (!util.isObject(field.defaultValue))\r\n // objects are mutable (i.e. would modify the array on the prototype, not the instance)\r\n prototype[field.name] = field.defaultValue;\r\n });\r\n\r\n // Define each oneof with a non-enumerable getter and setter for the present field\r\n type.getOneofsArray().forEach(function(oneof) {\r\n prototypeProperties[oneof.resolve().name] = {\r\n get: function() {\r\n var keys = oneof.oneof;\r\n for (var i = 0; i < keys.length; ++i) {\r\n var field = oneof.parent.fields[keys[i]];\r\n if (this[keys[i]] != field.defaultValue) // eslint-disable-line eqeqeq\r\n return keys[i];\r\n }\r\n return undefined;\r\n },\r\n set: function(value) {\r\n var keys = oneof.oneof;\r\n for (var i = 0; i < keys.length; ++i) {\r\n if (keys[i] !== value)\r\n delete this[keys[i]];\r\n }\r\n }\r\n };\r\n });\r\n\r\n Object.defineProperties(prototype, prototypeProperties);\r\n return prototype;\r\n};\r\n","\"use strict\";\r\nmodule.exports = MapField;\r\n\r\nvar Field = require(6);\r\n/** @alias Field.prototype */\r\nvar FieldPrototype = Field.prototype;\r\n/** @alias MapField.prototype */\r\nvar MapFieldPrototype = Field.extend(MapField);\r\n\r\nvar Enum = require(5),\r\n types = require(20),\r\n util = require(21);\r\n\r\n/**\r\n * Constructs a new map field.\r\n * @classdesc Reflected map field.\r\n * @extends Field\r\n * @constructor\r\n * @param {string} name Unique name within its namespace\r\n * @param {number} id Unique id within its namespace\r\n * @param {string} keyType Key type\r\n * @param {string} type Value type\r\n * @param {Object} [options] Declared options\r\n */\r\nfunction MapField(name, id, keyType, type, options) {\r\n Field.call(this, name, id, type, options);\r\n if (!util.isString(keyType))\r\n throw util._TypeError(\"keyType\");\r\n \r\n /**\r\n * Key type.\r\n * @type {string}\r\n */\r\n this.keyType = keyType; // toJSON, marker\r\n\r\n /**\r\n * Resolved key type if not a basic type.\r\n * @type {?ReflectionObject}\r\n */\r\n this.resolvedKeyType = null;\r\n\r\n // Overrides Field#map\r\n this.map = true;\r\n}\r\n\r\n/**\r\n * Tests if the specified JSON object describes a map field.\r\n * @param {Object} json JSON object to test\r\n * @returns {boolean} `true` if the object describes a field\r\n */\r\nMapField.testJSON = function testJSON(json) {\r\n return Field.testJSON(json) && json.keyType !== undefined;\r\n};\r\n\r\n/**\r\n * Constructs a map field from JSON.\r\n * @param {string} name Field name\r\n * @param {Object} json JSON object\r\n * @returns {MapField} Created map field\r\n * @throws {TypeError} If arguments are invalid\r\n */\r\nMapField.fromJSON = function fromJSON(name, json) {\r\n return new MapField(name, json.id, json.keyType, json.type, json.options);\r\n};\r\n\r\n/**\r\n * @override\r\n */\r\nMapFieldPrototype.toJSON = function toJSON() {\r\n return {\r\n keyType : this.keyType,\r\n type : this.type,\r\n id : this.id,\r\n extend : this.extend,\r\n options : this.options\r\n };\r\n};\r\n\r\n/**\r\n * @override\r\n */\r\nMapFieldPrototype.resolve = function resolve() {\r\n if (this.resolved)\r\n return this;\r\n \r\n // Besides a value type, map fields have a key type to resolve\r\n var keyWireType = types.mapKey[this.keyType];\r\n if (keyWireType === undefined) {\r\n var resolved = this.parent.lookup(this.keyType);\r\n if (!(resolved instanceof Enum))\r\n throw Error(\"unresolvable map key type: \" + this.keyType);\r\n this.resolvedKeyType = resolved;\r\n }\r\n\r\n return FieldPrototype.resolve.call(this);\r\n};\r\n","\"use strict\";\r\nmodule.exports = Method;\r\n\r\nvar ReflectionObject = require(11);\r\n/** @alias Method.prototype */\r\nvar MethodPrototype = ReflectionObject.extend(Method);\r\n\r\nvar Type = require(19),\r\n util = require(21);\r\n\r\nvar _TypeError = util._TypeError;\r\n\r\n/**\r\n * Constructs a new service method.\r\n * @classdesc Reflected service method.\r\n * @extends ReflectionObject\r\n * @constructor\r\n * @param {string} name Method name\r\n * @param {string|undefined} type Method type, usually `\"rpc\"`\r\n * @param {string} requestType Request message type\r\n * @param {string} responseType Response message type\r\n * @param {boolean} [requestStream] Whether the request is streamed\r\n * @param {boolean} [responseStream] Whether the response is streamed\r\n * @param {Object} [options] Declared options\r\n */\r\nfunction Method(name, type, requestType, responseType, requestStream, responseStream, options) {\r\n if (util.isObject(requestStream)) {\r\n options = requestStream;\r\n requestStream = responseStream = undefined;\r\n } else if (util.isObject(responseStream)) {\r\n options = responseStream;\r\n responseStream = undefined;\r\n }\r\n if (!util.isString(type))\r\n throw _TypeError(\"type\");\r\n if (!util.isString(requestType))\r\n throw _TypeError(\"requestType\");\r\n if (!util.isString(responseType))\r\n throw _TypeError(\"responseType\");\r\n\r\n ReflectionObject.call(this, name, options);\r\n\r\n /**\r\n * Method type.\r\n * @type {string}\r\n */\r\n this.type = type || \"rpc\"; // toJSON\r\n\r\n /**\r\n * Request type.\r\n * @type {string}\r\n */\r\n this.requestType = requestType; // toJSON, marker\r\n\r\n /**\r\n * Whether requests are streamed or not.\r\n * @type {boolean|undefined}\r\n */\r\n this.requestStream = requestStream ? true : undefined; // toJSON\r\n\r\n /**\r\n * Response type.\r\n * @type {string}\r\n */\r\n this.responseType = responseType; // toJSON\r\n\r\n /**\r\n * Whether responses are streamed or not.\r\n * @type {boolean|undefined}\r\n */\r\n this.responseStream = responseStream ? true : undefined; // toJSON\r\n\r\n /**\r\n * Resolved request type.\r\n * @type {?Type}\r\n */\r\n this.resolvedRequestType = null;\r\n\r\n /**\r\n * Resolved response type.\r\n * @type {?Type}\r\n */\r\n this.resolvedResponseType = null;\r\n}\r\n\r\n/**\r\n * Tests if the specified JSON object describes a service method.\r\n * @param {Object} json JSON object\r\n * @returns {boolean} `true` if the object describes a map field\r\n */\r\nMethod.testJSON = function testJSON(json) {\r\n return Boolean(json && json.requestType !== undefined);\r\n};\r\n\r\n/**\r\n * Constructs a service method from JSON.\r\n * @param {string} name Method name\r\n * @param {Object} json JSON object\r\n * @returns {Method} Created method\r\n * @throws {TypeError} If arguments are invalid\r\n */\r\nMethod.fromJSON = function fromJSON(name, json) {\r\n return new Method(name, json.type, json.requestType, json.responseType, json.requestStream, json.responseStream, json.options);\r\n};\r\n\r\n/**\r\n * @override\r\n */\r\nMethodPrototype.toJSON = function toJSON() {\r\n return {\r\n type : this.type !== \"rpc\" && this.type || undefined,\r\n requestType : this.requestType,\r\n requestStream : this.requestStream,\r\n responseType : this.responseType,\r\n responseStream : this.responseStream,\r\n options : this.options\r\n };\r\n};\r\n\r\n/**\r\n * @override\r\n */\r\nMethodPrototype.resolve = function resolve() {\r\n if (this.resolved)\r\n return this;\r\n var resolved = this.parent.lookup(this.requestType);\r\n if (!(resolved && resolved instanceof Type))\r\n throw Error(\"unresolvable request type: \" + this.requestType);\r\n this.resolvedRequestType = resolved;\r\n resolved = this.parent.lookup(this.responseType);\r\n if (!(resolved && resolved instanceof Type))\r\n throw Error(\"unresolvable response type: \" + this.requestType);\r\n this.resolvedResponseType = resolved;\r\n return ReflectionObject.prototype.resolve.call(this);\r\n};\r\n","\"use strict\";\r\nmodule.exports = Namespace;\r\n\r\nvar ReflectionObject = require(11);\r\n/** @alias Namespace.prototype */\r\nvar NamespacePrototype = ReflectionObject.extend(Namespace);\r\n\r\nvar Enum = require(5),\r\n Type = require(19),\r\n Field = require(6),\r\n Service = require(17),\r\n util = require(21);\r\n\r\nvar _TypeError = util._TypeError;\r\n\r\nvar nestedTypes = [ Enum, Type, Service, Field, Namespace ],\r\n nestedError = \"one of \" + nestedTypes.map(function(ctor) { return ctor.name; }).join(', ');\r\n\r\n/**\r\n * Constructs a new namespace.\r\n * @classdesc Reflected namespace and base class of all reflection objects containing nested objects.\r\n * @extends ReflectionObject\r\n * @constructor\r\n * @param {string} name Namespace name\r\n * @param {Object} [options] Declared options\r\n */\r\nfunction Namespace(name, options) {\r\n ReflectionObject.call(this, name, options);\r\n\r\n /**\r\n * Nested objects by name.\r\n * @type {Object.|undefined}\r\n */\r\n this.nested = undefined; // toJSON\r\n\r\n /**\r\n * Cached nested objects as an array.\r\n * @type {?ReflectionObject[]}\r\n * @private\r\n */\r\n this._nestedArray = null;\r\n}\r\n\r\nfunction clearCache(namespace) {\r\n namespace._nestedArray = null;\r\n return namespace;\r\n}\r\n\r\nObject.defineProperties(NamespacePrototype, {\r\n\r\n /**\r\n * Nested objects of this namespace as an array for iteration.\r\n * @name Namespace#nestedArray\r\n * @type {ReflectionObject[]}\r\n * @readonly\r\n */\r\n nestedArray: {\r\n get: NamespacePrototype.getNestedArray = function getNestedArray() {\r\n return this._nestedArray || (this._nestedArray = util.toArray(this.nested));\r\n }\r\n }\r\n\r\n});\r\n\r\n/**\r\n * Tests if the specified JSON object describes not another reflection object.\r\n * @param {*} json JSON object\r\n * @returns {boolean} `true` if the object describes not another reflection object\r\n */\r\nNamespace.testJSON = function testJSON(json) {\r\n return Boolean(json\r\n && !json.fields // Type\r\n && !json.values // Enum\r\n && json.id === undefined // Field, MapField\r\n && !json.oneof // OneOf\r\n && !json.methods // Service\r\n && json.requestType === undefined // Method\r\n );\r\n};\r\n\r\n/**\r\n * Constructs a namespace from JSON.\r\n * @param {string} name Namespace name\r\n * @param {Object} json JSON object\r\n * @returns {Namespace} Created namespace\r\n * @throws {TypeError} If arguments are invalid\r\n */\r\nNamespace.fromJSON = function fromJSON(name, json) {\r\n return new Namespace(name, json.options).addJSON(json.nested);\r\n};\r\n\r\n/**\r\n * @override\r\n */\r\nNamespacePrototype.toJSON = function toJSON() {\r\n return {\r\n options : this.options,\r\n nested : arrayToJSON(this.getNestedArray())\r\n };\r\n};\r\n\r\n/**\r\n * Converts an array of reflection objects to JSON.\r\n * @memberof Namespace\r\n * @param {ReflectionObject[]} array Object array\r\n * @returns {Object.|undefined} JSON object or `undefined` when array is empty\r\n */\r\nfunction arrayToJSON(array) {\r\n if (!(array && array.length))\r\n return undefined;\r\n var obj = {};\r\n for (var i = 0; i < array.length; ++i)\r\n obj[array[i].name] = array[i].toJSON();\r\n return obj;\r\n}\r\n\r\nNamespace.arrayToJSON = arrayToJSON;\r\n\r\n/**\r\n * Adds nested elements to this namespace from JSON.\r\n * @param {Object.} nestedJson Nested JSON\r\n * @returns {Namespace} `this`\r\n */\r\nNamespacePrototype.addJSON = function addJSON(nestedJson) {\r\n var ns = this;\r\n if (nestedJson)\r\n Object.keys(nestedJson).forEach(function(nestedName) {\r\n var nested = nestedJson[nestedName];\r\n for (var j = 0; j < nestedTypes.length; ++j)\r\n if (nestedTypes[j].testJSON(nested))\r\n return ns.add(nestedTypes[j].fromJSON(nestedName, nested));\r\n throw _TypeError(\"nested.\" + nestedName, \"JSON for \" + nestedError);\r\n });\r\n return this;\r\n};\r\n\r\n/**\r\n * Gets the nested object of the specified name.\r\n * @param {string} name Nested object name\r\n * @returns {?ReflectionObject} The reflection object or `null` if it doesn't exist\r\n */\r\nNamespacePrototype.get = function get(name) {\r\n if (this.nested === undefined) // prevents deopt\r\n return null;\r\n return this.nested[name] || null;\r\n};\r\n\r\n/**\r\n * Adds a nested object to this namespace.\r\n * @param {ReflectionObject} object Nested object to add\r\n * @returns {Namespace} `this`\r\n * @throws {TypeError} If arguments are invalid\r\n * @throws {Error} If there is already a nested object with this name\r\n */\r\nNamespacePrototype.add = function add(object) {\r\n if (!object || nestedTypes.indexOf(object.constructor) < 0)\r\n throw _TypeError(\"object\", nestedError);\r\n if (object instanceof Field && object.extend === undefined)\r\n throw _TypeError(\"object\", \"an extension field when not part of a type\");\r\n if (!this.nested)\r\n this.nested = {};\r\n else {\r\n var prev = this.get(object.name);\r\n if (prev) {\r\n if (prev instanceof Namespace && object instanceof Namespace && !(prev instanceof Type || prev instanceof Service)) {\r\n // replace plain namespace but keep existing nested elements and options\r\n var nested = prev.getNestedArray();\r\n for (var i = 0; i < nested.length; ++i)\r\n object.add(nested[i]);\r\n this.remove(prev);\r\n if (!this.nested)\r\n this.nested = {};\r\n object.setOptions(prev.options, true);\r\n } else\r\n throw Error(\"duplicate name '\" + object.name + \"' in \" + this);\r\n }\r\n }\r\n this.nested[object.name] = object;\r\n object.onAdd(this);\r\n return clearCache(this);\r\n};\r\n\r\n/**\r\n * Removes a nested object from this namespace.\r\n * @param {ReflectionObject} object Nested object to remove\r\n * @returns {Namespace} `this`\r\n * @throws {TypeError} If arguments are invalid\r\n * @throws {Error} If `object` is not a member of this namespace\r\n */\r\nNamespacePrototype.remove = function remove(object) {\r\n if (!(object instanceof ReflectionObject))\r\n throw _TypeError(\"object\", \"a ReflectionObject\");\r\n if (object.parent !== this || !this.nested)\r\n throw Error(object + \" is not a member of \" + this);\r\n delete this.nested[object.name];\r\n if (!Object.keys(this.nested).length)\r\n this.nested = undefined;\r\n object.onRemove(this);\r\n return clearCache(this);\r\n};\r\n\r\n/**\r\n * Defines additial namespaces within this one if not yet existing.\r\n * @param {string|string[]} path Path to create\r\n * @param {*} [json] Nested types to create from JSON\r\n * @returns {Namespace} Pointer to the last namespace created or `this` if path is empty\r\n */\r\nNamespacePrototype.define = function define(path, json) {\r\n if (util.isString(path))\r\n path = path.split('.');\r\n else if (!Array.isArray(path)) {\r\n json = path;\r\n path = undefined;\r\n }\r\n var ptr = this;\r\n if (path)\r\n while (path.length > 0) {\r\n var part = path.shift();\r\n if (ptr.nested && ptr.nested[part]) {\r\n ptr = ptr.nested[part];\r\n if (!(ptr instanceof Namespace))\r\n throw Error(\"path conflicts with non-namespace objects\");\r\n } else\r\n ptr.add(ptr = new Namespace(part));\r\n }\r\n if (json)\r\n ptr.addJSON(json);\r\n return ptr;\r\n};\r\n\r\n/**\r\n * Resolves this namespace's and all its nested objects' type references. Useful to validate a reflection tree.\r\n * @returns {Namespace} `this`\r\n */\r\nNamespacePrototype.resolveAll = function resolve() {\r\n var nested = this.getNestedArray(), i = 0;\r\n while (i < nested.length)\r\n if (nested[i] instanceof Namespace)\r\n nested[i++].resolveAll();\r\n else\r\n nested[i++].resolve();\r\n return ReflectionObject.prototype.resolve.call(this);\r\n};\r\n\r\n/**\r\n * Looks up the reflection object at the specified path, relative to this namespace.\r\n * @param {string|string[]} path Path to look up\r\n * @param {boolean} [parentAlreadyChecked=false] Whether the parent has already been checked\r\n * @returns {?ReflectionObject} Looked up object or `null` if none could be found\r\n */\r\nNamespacePrototype.lookup = function lookup(path, parentAlreadyChecked) {\r\n if (util.isString(path)) {\r\n if (!path.length)\r\n return null;\r\n path = path.split('.');\r\n } else if (!path.length)\r\n return null;\r\n // Start at root if path is absolute\r\n if (path[0] === \"\")\r\n return this.getRoot().lookup(path.slice(1));\r\n // Test if the first part matches any nested object, and if so, traverse if path contains more\r\n var found = this.get(path[0]);\r\n if (found && (path.length === 1 || found instanceof Namespace && (found = found.lookup(path.slice(1), true))))\r\n return found;\r\n // If there hasn't been a match, try again at the parent\r\n if (this.parent === null || parentAlreadyChecked)\r\n return null;\r\n return this.parent.lookup(path);\r\n};\r\n","\"use strict\";\r\nmodule.exports = ReflectionObject;\r\n\r\nReflectionObject.extend = extend;\r\n\r\nvar Root = require(16),\r\n util = require(21);\r\n\r\nvar _TypeError = util._TypeError;\r\n\r\n/**\r\n * Constructs a new reflection object.\r\n * @classdesc Base class of all reflection objects.\r\n * @constructor\r\n * @param {string} name Object name\r\n * @param {Object} [options] Declared options\r\n * @abstract\r\n */\r\nfunction ReflectionObject(name, options) {\r\n if (!util.isString(name))\r\n throw _TypeError(\"name\");\r\n if (options && !util.isObject(options))\r\n throw _TypeError(\"options\", \"an object\");\r\n\r\n /**\r\n * Options.\r\n * @type {Object.|undefined}\r\n */\r\n this.options = options; // toJSON\r\n\r\n /**\r\n * Unique name within its namespace.\r\n * @type {string}\r\n */\r\n this.name = name;\r\n\r\n /**\r\n * Parent namespace.\r\n * @type {?Namespace}\r\n */\r\n this.parent = null;\r\n\r\n /**\r\n * Whether already resolved or not.\r\n * @type {boolean}\r\n */\r\n this.resolved = false;\r\n}\r\n\r\n/** @alias ReflectionObject.prototype */\r\nvar ReflectionObjectPrototype = ReflectionObject.prototype;\r\n\r\nObject.defineProperties(ReflectionObjectPrototype, {\r\n\r\n /**\r\n * Reference to the root namespace.\r\n * @name ReflectionObject#root\r\n * @type {Root}\r\n * @readonly\r\n */\r\n root: {\r\n get: ReflectionObjectPrototype.getRoot = function getRoot() {\r\n var ptr = this;\r\n while (ptr.parent !== null)\r\n ptr = ptr.parent;\r\n return ptr;\r\n }\r\n },\r\n\r\n /**\r\n * Full name including leading dot.\r\n * @name ReflectionObject#fullName\r\n * @type {string}\r\n * @readonly\r\n */\r\n fullName: {\r\n get: ReflectionObjectPrototype.getFullName = function getFullName() {\r\n var path = [ this.name ],\r\n ptr = this.parent;\r\n while (ptr) {\r\n path.unshift(ptr.name);\r\n ptr = ptr.parent;\r\n }\r\n return path.join('.');\r\n }\r\n }\r\n});\r\n\r\n/**\r\n * Lets the specified constructor extend this class.\r\n * @memberof ReflectionObject\r\n * @param {Function} constructor Extending constructor\r\n * @returns {Object} Prototype\r\n * @this ReflectionObject\r\n */\r\nfunction extend(constructor) {\r\n var proto = constructor.prototype = Object.create(this.prototype);\r\n proto.constructor = constructor;\r\n constructor.extend = extend;\r\n return proto;\r\n}\r\n\r\n/**\r\n * Converts this reflection object to its JSON representation.\r\n * @returns {Object} JSON object\r\n * @abstract\r\n */\r\nReflectionObjectPrototype.toJSON = function toJSON() {\r\n throw Error(); // not implemented, shouldn't happen\r\n};\r\n\r\n/**\r\n * Called when this object is added to a parent.\r\n * @param {ReflectionObject} parent Parent added to\r\n * @returns {undefined}\r\n */\r\nReflectionObjectPrototype.onAdd = function onAdd(parent) {\r\n if (this.parent && this.parent !== parent)\r\n this.parent.remove(this);\r\n this.parent = parent;\r\n this.resolved = false;\r\n var root = parent.getRoot();\r\n if (root instanceof Root)\r\n root._handleAdd(this);\r\n};\r\n\r\n/**\r\n * Called when this object is removed from a parent.\r\n * @param {ReflectionObject} parent Parent removed from\r\n * @returns {undefined}\r\n */\r\nReflectionObjectPrototype.onRemove = function onRemove(parent) {\r\n var root = parent.getRoot();\r\n if (root instanceof Root)\r\n root._handleRemove(this);\r\n this.parent = null;\r\n this.resolved = false;\r\n};\r\n\r\n/**\r\n * Resolves this objects type references.\r\n * @returns {ReflectionObject} `this`\r\n */\r\nReflectionObjectPrototype.resolve = function resolve() {\r\n if (this.resolved)\r\n return this;\r\n var root = this.getRoot();\r\n if (root instanceof Root)\r\n this.resolved = true; // only if part of a root\r\n return this;\r\n};\r\n\r\n/**\r\n * Gets an option value.\r\n * @param {string} name Option name\r\n * @returns {*} Option value or `undefined` if not set\r\n */\r\nReflectionObjectPrototype.getOption = function getOption(name) {\r\n if (this.options)\r\n return this.options[name];\r\n return undefined;\r\n};\r\n\r\n/**\r\n * Sets an option.\r\n * @param {string} name Option name\r\n * @param {*} value Option value\r\n * @param {boolean} [ifNotSet] Sets the option only if it isn't currently set\r\n * @returns {ReflectionObject} `this`\r\n */\r\nReflectionObjectPrototype.setOption = function setOption(name, value, ifNotSet) {\r\n if (!ifNotSet || !this.options || this.options[name] === undefined)\r\n (this.options || (this.options = {}))[name] = value;\r\n return this;\r\n};\r\n\r\n/**\r\n * Sets multiple options.\r\n * @param {Object.} options Options to set\r\n * @param {boolean} [ifNotSet] Sets an option only if it isn't currently set\r\n * @returns {ReflectionObject} `this`\r\n */\r\nReflectionObjectPrototype.setOptions = function setOptions(options, ifNotSet) {\r\n if (options)\r\n Object.keys(options).forEach(function(name) {\r\n this.setOption(name, options[name], ifNotSet);\r\n }, this);\r\n return this;\r\n};\r\n\r\n/**\r\n * Converts this instance to its string representation.\r\n * @returns {string} Constructor name, space, full name\r\n */\r\nReflectionObjectPrototype.toString = function toString() {\r\n return this.constructor.name + \" \" + this.getFullName();\r\n};\r\n","\"use strict\";\r\nmodule.exports = OneOf;\r\n\r\nvar ReflectionObject = require(11);\r\n/** @alias OneOf.prototype */\r\nvar OneOfPrototype = ReflectionObject.extend(OneOf);\r\n\r\nvar Field = require(6),\r\n util = require(21);\r\n\r\nvar _TypeError = util._TypeError;\r\n\r\n/**\r\n * Constructs a new oneof.\r\n * @classdesc Reflected oneof.\r\n * @extends ReflectionObject\r\n * @constructor\r\n * @param {string} name Oneof name\r\n * @param {string[]} [fieldNames] Field names\r\n * @param {Object} [options] Declared options\r\n */\r\nfunction OneOf(name, fieldNames, options) {\r\n if (!Array.isArray(fieldNames)) {\r\n options = fieldNames;\r\n fieldNames = undefined;\r\n }\r\n ReflectionObject.call(this, name, options);\r\n if (fieldNames && !Array.isArray(fieldNames))\r\n throw _TypeError(\"fieldNames\", \"an Array\");\r\n\r\n /**\r\n * Field names that belong to this oneof.\r\n * @type {Array.}\r\n */\r\n this.oneof = fieldNames || []; // toJSON, marker\r\n\r\n /**\r\n * Fields that belong to this oneof and are possibly not yet added to its parent.\r\n * @type {Array.}\r\n * @private\r\n */\r\n this._fields = [];\r\n}\r\n\r\n/**\r\n * Tests if the specified JSON object describes a oneof.\r\n * @param {*} json JSON object\r\n * @returns {boolean} `true` if the object describes a oneof\r\n */\r\nOneOf.testJSON = function testJSON(json) {\r\n return Boolean(json.oneof);\r\n};\r\n\r\n/**\r\n * Constructs a oneof from JSON.\r\n * @param {string} name Oneof name\r\n * @param {Object} json JSON object\r\n * @returns {MapField} Created oneof\r\n * @throws {TypeError} If arguments are invalid\r\n */\r\nOneOf.fromJSON = function fromJSON(name, json) {\r\n return new OneOf(name, json.oneof, json.options);\r\n};\r\n\r\n/**\r\n * @override\r\n */\r\nOneOfPrototype.toJSON = function toJSON() {\r\n return {\r\n oneof : this.oneof,\r\n options : this.options\r\n };\r\n};\r\n\r\n/**\r\n * Adds the fields of the specified oneof to the parent if not already done so.\r\n * @param {OneOf} oneof The oneof\r\n * @returns {undefined}\r\n * @inner\r\n * @ignore\r\n */\r\nfunction addFieldsToParent(oneof) {\r\n if (oneof.parent)\r\n oneof._fields.forEach(function(field) {\r\n if (!field.parent)\r\n oneof.parent.add(field);\r\n });\r\n}\r\n\r\n/**\r\n * Adds a field to this oneof.\r\n * @param {Field} field Field to add\r\n * @returns {OneOf} `this`\r\n */\r\nOneOfPrototype.add = function add(field) {\r\n if (!(field instanceof Field))\r\n throw _TypeError(\"field\", \"a Field\");\r\n if (field.parent)\r\n field.parent.remove(field);\r\n this.oneof.push(field.name);\r\n this._fields.push(field);\r\n field.partOf = this; // field.parent remains null\r\n addFieldsToParent(this);\r\n return this;\r\n};\r\n\r\n/**\r\n * Removes a field from this oneof.\r\n * @param {Field} field Field to remove\r\n * @returns {OneOf} `this`\r\n */\r\nOneOfPrototype.remove = function remove(field) {\r\n if (!(field instanceof Field))\r\n throw _TypeError(\"field\", \"a Field\");\r\n var index = this._fields.indexOf(field);\r\n if (index < 0)\r\n throw Error(field + \" is not a member of \" + this);\r\n this._fields.splice(index, 1);\r\n index = this.oneof.indexOf(field.name);\r\n if (index > -1)\r\n this.oneof.splice(index, 1);\r\n if (field.parent)\r\n field.parent.remove(field);\r\n field.partOf = null;\r\n return this;\r\n};\r\n\r\n/**\r\n * @override\r\n */\r\nOneOfPrototype.onAdd = function onAdd(parent) {\r\n ReflectionObject.prototype.onAdd.call(this, parent);\r\n addFieldsToParent(this);\r\n};\r\n\r\n/**\r\n * @override\r\n */\r\nOneOfPrototype.onRemove = function onRemove(parent) {\r\n this._fields.forEach(function(field) {\r\n if (field.parent)\r\n field.parent.remove(field);\r\n });\r\n ReflectionObject.prototype.onRemove.call(this, parent);\r\n};\r\n","\"use strict\";\r\nmodule.exports = parse;\r\n\r\nvar tokenize = require(18),\r\n Root = require(16),\r\n Type = require(19),\r\n Field = require(6),\r\n MapField = require(8),\r\n OneOf = require(12),\r\n Enum = require(5),\r\n Service = require(17),\r\n Method = require(9),\r\n types = require(20);\r\n\r\nvar nameRe = /^[a-zA-Z_][a-zA-Z_0-9]*$/,\r\n typeRefRe = /^(?:\\.?[a-zA-Z_][a-zA-Z_0-9]*)+$/,\r\n fqTypeRefRe = /^(?:\\.[a-zA-Z][a-zA-Z_0-9]*)+$/;\r\n\r\nfunction lower(token) {\r\n return token === null ? null : token.toLowerCase();\r\n}\r\n\r\nfunction camelCase(name) {\r\n return name.substring(0,1)\r\n + name.substring(1)\r\n .replace(/_([a-z])(?=[a-z]|$)/g, function($0, $1) { return $1.toUpperCase(); });\r\n}\r\n\r\nvar s_required = \"required\",\r\n s_repeated = \"repeated\",\r\n s_optional = \"optional\",\r\n s_option = \"option\",\r\n s_name = \"name\",\r\n s_type = \"type\";\r\nvar s_open = \"{\",\r\n s_close = \"}\",\r\n s_bopen = '(',\r\n s_bclose = ')',\r\n s_semi = \";\",\r\n s_dq = '\"',\r\n s_sq = \"'\";\r\n\r\n/**\r\n * Result object returned from {@link parse}.\r\n * @typedef ParserResult\r\n * @type {Object}\r\n * @property {string|undefined} package Package name, if declared\r\n * @property {string[]|undefined} imports Imports, if any\r\n * @property {string[]|undefined} weakImports Weak imports, if any\r\n * @property {string|undefined} syntax Syntax, if specified (either `\"proto2\"` or `\"proto3\"`)\r\n * @property {Root} root Populated root instance\r\n */\r\n\r\n/**\r\n * Parses the given .proto source and returns an object with the parsed contents.\r\n * @param {string} source Source contents\r\n * @param {Root} [root] Root to populate\r\n * @returns {ParserResult} Parser result\r\n */\r\nfunction parse(source, root) {\r\n /* eslint-disable default-case, callback-return */\r\n if (!root)\r\n root = new Root();\r\n\r\n var tn = tokenize(source),\r\n next = tn.next,\r\n push = tn.push,\r\n peek = tn.peek,\r\n skip = tn.skip;\r\n\r\n var head = true,\r\n pkg,\r\n imports,\r\n weakImports,\r\n syntax,\r\n isProto3 = false;\r\n\r\n if (!root)\r\n root = new Root();\r\n\r\n var ptr = root;\r\n\r\n function illegal(token, name) {\r\n return Error(\"illegal \" + (name || \"token\") + \" '\" + token + \"' (line \" + tn.line() + s_bclose);\r\n }\r\n\r\n function readString() {\r\n var values = [],\r\n token;\r\n do {\r\n if ((token = next()) !== s_dq && token !== s_sq)\r\n throw illegal(token);\r\n values.push(next());\r\n skip(token);\r\n token = peek();\r\n } while (token === s_dq || token === s_sq);\r\n return values.join('');\r\n }\r\n\r\n function readValue(acceptTypeRef) {\r\n var token = next();\r\n switch (lower(token)) {\r\n case s_sq:\r\n case s_dq:\r\n push(token);\r\n return readString();\r\n case \"true\":\r\n return true;\r\n case \"false\":\r\n return false;\r\n }\r\n try {\r\n return parseNumber(token);\r\n } catch (e) {\r\n if (acceptTypeRef && typeRefRe.test(token))\r\n return token;\r\n throw illegal(token, \"value\");\r\n }\r\n }\r\n\r\n function readRange() {\r\n var start = parseId(next());\r\n var end = start;\r\n if (skip(\"to\", true))\r\n end = parseId(next());\r\n skip(s_semi);\r\n return [ start, end ];\r\n }\r\n\r\n function parseNumber(token) {\r\n var sign = 1;\r\n if (token.charAt(0) === '-') {\r\n sign = -1;\r\n token = token.substring(1);\r\n }\r\n var tokenLower = lower(token);\r\n switch (tokenLower) {\r\n case \"inf\": return sign * Infinity;\r\n case \"nan\": return NaN;\r\n case \"0\": return 0;\r\n }\r\n if (/^[1-9][0-9]*$/.test(token))\r\n return sign * parseInt(token, 10);\r\n if (/^0[x][0-9a-f]+$/.test(tokenLower))\r\n return sign * parseInt(token, 16);\r\n if (/^0[0-7]+$/.test(token))\r\n return sign * parseInt(token, 8);\r\n if (/^(?!e)[0-9]*(?:\\.[0-9]*)?(?:[e][+-]?[0-9]+)?$/.test(tokenLower))\r\n return sign * parseFloat(token);\r\n throw illegal(token, 'number');\r\n }\r\n\r\n function parseId(token, acceptNegative) {\r\n var tokenLower = lower(token);\r\n switch (tokenLower) {\r\n case \"min\": return 1;\r\n case \"max\": return 0x1FFFFFFF;\r\n case \"0\": return 0;\r\n }\r\n if (token.charAt(0) === '-' && !acceptNegative)\r\n throw illegal(token, \"id\");\r\n if (/^-?[1-9][0-9]*$/.test(token))\r\n return parseInt(token, 10);\r\n if (/^-?0[x][0-9a-f]+$/.test(tokenLower))\r\n return parseInt(token, 16);\r\n if (/^-?0[0-7]+$/.test(token))\r\n return parseInt(token, 8);\r\n throw illegal(token, \"id\");\r\n }\r\n\r\n function parsePackage() {\r\n if (pkg !== undefined)\r\n throw illegal(\"package\");\r\n pkg = next();\r\n if (!typeRefRe.test(pkg))\r\n throw illegal(pkg, s_name);\r\n ptr = ptr.define(pkg);\r\n skip(s_semi);\r\n }\r\n\r\n function parseImport() {\r\n var token = peek();\r\n var whichImports;\r\n switch (token) {\r\n case \"weak\":\r\n whichImports = weakImports || (weakImports = []);\r\n next();\r\n break;\r\n case \"public\":\r\n next();\r\n // eslint-disable-line no-fallthrough\r\n default:\r\n whichImports = imports || (imports = []);\r\n break;\r\n }\r\n token = readString();\r\n skip(s_semi);\r\n whichImports.push(token);\r\n }\r\n\r\n function parseSyntax() {\r\n skip(\"=\");\r\n syntax = lower(readString());\r\n var p3;\r\n if ([ \"proto2\", p3 = \"proto3\" ].indexOf(syntax) < 0)\r\n throw illegal(syntax, \"syntax\");\r\n isProto3 = syntax === p3;\r\n skip(s_semi);\r\n }\r\n\r\n function parseCommon(parent, token) {\r\n switch (token) {\r\n\r\n case s_option:\r\n parseOption(parent, token);\r\n skip(s_semi);\r\n return true;\r\n\r\n case \"message\":\r\n parseType(parent, token);\r\n return true;\r\n\r\n case \"enum\":\r\n parseEnum(parent, token);\r\n return true;\r\n\r\n case \"service\":\r\n parseService(parent, token);\r\n return true;\r\n\r\n case \"extend\":\r\n parseExtension(parent, token);\r\n return true;\r\n }\r\n return false;\r\n }\r\n\r\n function parseType(parent, token) {\r\n var name = next();\r\n if (!nameRe.test(name))\r\n throw illegal(name, \"type name\");\r\n var type = new Type(name);\r\n if (skip(s_open, true)) {\r\n while ((token = next()) !== s_close) {\r\n var tokenLower = lower(token);\r\n if (parseCommon(type, token))\r\n continue;\r\n switch (tokenLower) {\r\n case \"map\":\r\n parseMapField(type, tokenLower);\r\n break;\r\n case s_required:\r\n case s_optional:\r\n case s_repeated:\r\n parseField(type, tokenLower);\r\n break;\r\n case \"oneof\":\r\n parseOneOf(type, tokenLower);\r\n break;\r\n case \"extensions\":\r\n (type.extensions || (type.extensions = [])).push(readRange(type, tokenLower));\r\n break;\r\n case \"reserved\":\r\n (type.reserved || (type.reserved = [])).push(readRange(type, tokenLower));\r\n break;\r\n default:\r\n if (!isProto3 || !typeRefRe.test(token))\r\n throw illegal(token);\r\n push(token);\r\n parseField(type, s_optional);\r\n break;\r\n }\r\n }\r\n skip(s_semi, true);\r\n } else\r\n skip(s_semi);\r\n parent.add(type);\r\n }\r\n\r\n function parseField(parent, rule, extend) {\r\n var type = next();\r\n if (!typeRefRe.test(type))\r\n throw illegal(type, s_type);\r\n var name = next();\r\n if (!nameRe.test(name))\r\n throw illegal(name, s_name);\r\n name = camelCase(name);\r\n skip(\"=\");\r\n var id = parseId(next());\r\n var field = parseInlineOptions(new Field(name, id, type, rule, extend));\r\n if (field.repeated)\r\n field.setOption(\"packed\", isProto3, /* ifNotSet */ true);\r\n parent.add(field);\r\n }\r\n\r\n function parseMapField(parent) {\r\n skip(\"<\");\r\n var keyType = next();\r\n if (types.mapKey[keyType] === undefined)\r\n throw illegal(keyType, s_type);\r\n skip(\",\");\r\n var valueType = next();\r\n if (!typeRefRe.test(valueType))\r\n throw illegal(valueType, s_type);\r\n skip(\">\");\r\n var name = next();\r\n if (!nameRe.test(name))\r\n throw illegal(name, s_name);\r\n name = camelCase(name);\r\n skip(\"=\");\r\n var id = parseId(next());\r\n var field = parseInlineOptions(new MapField(name, id, keyType, valueType));\r\n parent.add(field);\r\n }\r\n\r\n function parseOneOf(parent, token) {\r\n var name = next();\r\n if (!nameRe.test(name))\r\n throw illegal(name, s_name);\r\n name = camelCase(name);\r\n var oneof = new OneOf(name);\r\n if (skip(s_open, true)) {\r\n while ((token = next()) !== s_close) {\r\n if (token === s_option) {\r\n parseOption(oneof, token);\r\n skip(s_semi);\r\n } else {\r\n push(token);\r\n parseField(oneof, s_optional);\r\n }\r\n }\r\n skip(s_semi, true);\r\n } else\r\n skip(s_semi);\r\n parent.add(oneof);\r\n }\r\n\r\n function parseEnum(parent, token) {\r\n var name = next();\r\n if (!nameRe.test(name))\r\n throw illegal(name, s_name);\r\n var values = {};\r\n var enm = new Enum(name, values);\r\n if (skip(s_open, true)) {\r\n while ((token = next()) !== s_close) {\r\n if (lower(token) === s_option)\r\n parseOption(enm);\r\n else\r\n parseEnumField(enm, token);\r\n }\r\n skip(s_semi, true);\r\n } else\r\n skip(s_semi);\r\n parent.add(enm);\r\n }\r\n\r\n function parseEnumField(parent, token) {\r\n if (!nameRe.test(token))\r\n throw illegal(token, s_name);\r\n var name = token;\r\n skip(\"=\");\r\n var value = parseId(next(), true);\r\n parseInlineOptions(parent.values[name] = new Number(value)); // eslint-disable-line no-new-wrappers\r\n }\r\n\r\n function parseOption(parent, token) {\r\n var custom = skip(s_bopen, true);\r\n var name = next();\r\n if (!typeRefRe.test(name))\r\n throw illegal(name, s_name);\r\n if (custom) {\r\n skip(s_bclose);\r\n name = s_bopen + name + s_bclose;\r\n token = peek();\r\n if (fqTypeRefRe.test(token)) {\r\n name += token;\r\n next();\r\n }\r\n }\r\n skip(\"=\");\r\n parseOptionValue(parent, name);\r\n }\r\n\r\n function parseOptionValue(parent, name) {\r\n if (skip(s_open, true)) {\r\n while ((token = next()) !== s_close) {\r\n if (!nameRe.test(token))\r\n throw illegal(token, s_name);\r\n name = name + \".\" + token;\r\n if (skip(\":\", true))\r\n setOption(parent, name, readValue(true));\r\n else\r\n parseOptionValue(parent, name);\r\n }\r\n skip(s_semi, true);\r\n } else\r\n setOption(parent, name, readValue(true));\r\n // Does not enforce a delimiter to be universal\r\n }\r\n\r\n function setOption(parent, name, value) {\r\n if (parent.setOption)\r\n parent.setOption(name, value);\r\n else\r\n parent[name] = value;\r\n }\r\n\r\n function parseInlineOptions(parent) {\r\n if (skip(\"[\", true)) {\r\n do {\r\n parseOption(parent, s_option);\r\n } while (skip(\",\", true));\r\n skip(\"]\");\r\n }\r\n skip(s_semi);\r\n return parent;\r\n }\r\n\r\n function parseService(parent, token) {\r\n token = next();\r\n if (!nameRe.test(token))\r\n throw illegal(token, \"service name\");\r\n var name = token;\r\n var service = new Service(name);\r\n if (skip(s_open, true)) {\r\n while ((token = next()) !== s_close) {\r\n var tokenLower = lower(token);\r\n switch (tokenLower) {\r\n case s_option:\r\n parseOption(service, tokenLower);\r\n skip(s_semi);\r\n break;\r\n case \"rpc\":\r\n parseMethod(service, tokenLower);\r\n break;\r\n default:\r\n throw illegal(token);\r\n }\r\n }\r\n skip(s_semi, true);\r\n } else\r\n skip(s_semi);\r\n parent.add(service);\r\n }\r\n\r\n function parseMethod(parent, token) {\r\n var type = token;\r\n var name = next();\r\n if (!nameRe.test(name))\r\n throw illegal(name, s_name);\r\n var requestType, requestStream,\r\n responseType, responseStream;\r\n skip(s_bopen);\r\n var st;\r\n if (skip(st = \"stream\", true))\r\n requestStream = true;\r\n if (!typeRefRe.test(token = next()))\r\n throw illegal(token);\r\n requestType = token;\r\n skip(s_bclose); skip(\"returns\"); skip(s_bopen);\r\n if (skip(st, true))\r\n responseStream = true;\r\n if (!typeRefRe.test(token = next()))\r\n throw illegal(token);\r\n responseType = token;\r\n skip(s_bclose);\r\n var method = new Method(name, type, requestType, responseType, requestStream, responseStream);\r\n if (skip(s_open, true)) {\r\n while ((token = next()) !== s_close) {\r\n var tokenLower = lower(token);\r\n switch (tokenLower) {\r\n case s_option:\r\n parseOption(method, tokenLower);\r\n skip(s_semi);\r\n break;\r\n default:\r\n throw illegal(token);\r\n }\r\n }\r\n skip(s_semi, true);\r\n } else\r\n skip(s_semi);\r\n parent.add(method);\r\n }\r\n\r\n function parseExtension(parent, token) {\r\n var reference = next();\r\n if (!typeRefRe.test(reference))\r\n throw illegal(reference, \"reference\");\r\n if (skip(s_open, true)) {\r\n while ((token = next()) !== s_close) {\r\n var tokenLower = lower(token);\r\n switch (tokenLower) {\r\n case s_required:\r\n case s_repeated:\r\n case s_optional:\r\n parseField(parent, tokenLower, reference);\r\n break;\r\n default:\r\n if (!isProto3 || !typeRefRe.test(token))\r\n throw illegal(token);\r\n push(token);\r\n parseField(parent, s_optional, reference);\r\n break;\r\n }\r\n }\r\n skip(s_semi, true);\r\n } else\r\n skip(s_semi);\r\n }\r\n\r\n var token;\r\n while ((token = next()) !== null) {\r\n var tokenLower = lower(token);\r\n switch (tokenLower) {\r\n\r\n case \"package\":\r\n if (!head)\r\n throw illegal(token);\r\n parsePackage();\r\n break;\r\n\r\n case \"import\":\r\n if (!head)\r\n throw illegal(token);\r\n parseImport();\r\n break;\r\n\r\n case \"syntax\":\r\n if (!head)\r\n throw illegal(token);\r\n parseSyntax();\r\n break;\r\n\r\n case s_option:\r\n if (!head)\r\n throw illegal(token);\r\n parseOption(ptr, token);\r\n skip(s_semi);\r\n break;\r\n\r\n default:\r\n if (parseCommon(ptr, token)) {\r\n head = false;\r\n continue;\r\n }\r\n throw illegal(token);\r\n }\r\n }\r\n\r\n return {\r\n 'package' : pkg,\r\n 'imports' : imports,\r\n 'weakImports' : weakImports,\r\n 'syntax' : syntax,\r\n 'root' : root\r\n };\r\n}\r\n","\"use strict\";\r\nmodule.exports = Prototype;\r\n\r\n/**\r\n * Options passed to the {@link Prototype|prototype constructor}, modifying its behavior.\r\n * @typedef PrototypeOptions\r\n * @type {Object}\r\n * @property {boolean} [fieldsOnly=false] Sets only properties that reference a field\r\n */\r\n\r\n/**\r\n * Constructs a new prototype.\r\n * This method should be called from your custom constructors, i.e. `Prototype.call(this, properties)`.\r\n * @classdesc Runtime message prototype ready to be extended by custom classes or generated code.\r\n * @constructor\r\n * @param {Object.} [properties] Properties to set\r\n * @param {PrototypeOptions} [options] Prototype options\r\n * @abstract\r\n * @see {@link inherits}\r\n * @see {@link Class}\r\n */\r\nfunction Prototype(properties, options) {\r\n if (properties) {\r\n var any = !(options && options.fieldsOnly),\r\n fields = this.constructor.$type.fields,\r\n keys = Object.keys(properties);\r\n for (var i = 0; i < keys.length; ++i)\r\n if (fields[keys[i]] || any)\r\n this[keys[i]] = properties[keys[i]];\r\n }\r\n}\r\n\r\n/**\r\n * Converts a runtime message to a JSON object.\r\n * @param {Object.} [options] Conversion options\r\n * @param {boolean} [options.fieldsOnly=false] Converts only properties that reference a field\r\n * @param {Function} [options.long] Long conversion type. Only relevant with a long library.\r\n * Valid values are `String` and `Number` (the global types).\r\n * Defaults to a possibly unsafe number without, and a `Long` with a long library.\r\n * @param {Function} [options.enum=Number] Enum value conversion type.\r\n * Valid values are `String` and `Number` (the global types).\r\n * Defaults to the numeric ids.\r\n * @returns {Object.} JSON object\r\n */\r\nPrototype.prototype.asJSON = function asJSON(options) {\r\n var any = !(options && options.fieldsOnly),\r\n fields = this.constructor.$type.fields,\r\n json = {};\r\n var keys = Object.keys(this);\r\n for (var i = 0, key; i < keys.length; ++i) {\r\n var field = fields[key = keys[i]],\r\n value = this[key];\r\n if (field) {\r\n if (field.repeated) {\r\n if (value && value.length) {\r\n var array = new Array(value.length);\r\n for (var j = 0, l = value.length; j < l; ++j)\r\n array[j] = field.jsonConvert(value[j], options);\r\n json[key] = array;\r\n }\r\n } else\r\n json[key] = field.jsonConvert(value, options);\r\n } else if (any)\r\n json[key] = value;\r\n }\r\n return json;\r\n};\r\n","\"use strict\";\r\nmodule.exports = Reader;\r\n\r\nReader.BufferReader = BufferReader;\r\n\r\nvar util = require(21),\r\n ieee754 = require(1);\r\nvar LongBits = util.LongBits,\r\n Long = util.Long;\r\n\r\nfunction indexOutOfRange(reader, writeLength) {\r\n return RangeError(\"index out of range: \" + reader.pos + \" + \" + (writeLength || 1) + \" > \" + reader.len);\r\n}\r\n\r\n/**\r\n * Constructs a new reader using the specified buffer.\r\n * When called as a function, returns an appropriate reader for the specified buffer.\r\n * @classdesc Wire format reader using `Uint8Array` if available, otherwise `Array`.\r\n * @constructor\r\n * @param {number[]} buffer Buffer to read from\r\n */\r\nfunction Reader(buffer) {\r\n if (!(this instanceof Reader))\r\n return util.Buffer && (!buffer || util.Buffer.isBuffer(buffer)) && new BufferReader(buffer) || new Reader(buffer);\r\n\r\n /**\r\n * Read buffer.\r\n * @type {number[]}\r\n */\r\n this.buf = buffer;\r\n\r\n /**\r\n * Read buffer position.\r\n * @type {number}\r\n */\r\n this.pos = 0;\r\n\r\n /**\r\n * Read buffer length.\r\n * @type {number}\r\n */\r\n this.len = buffer.length;\r\n}\r\n\r\n/** @alias Reader.prototype */\r\nvar ReaderPrototype = Reader.prototype;\r\n\r\nvar ArrayImpl = typeof Uint8Array !== 'undefined' ? Uint8Array : Array;\r\nReaderPrototype._slice = ArrayImpl.prototype.slice || ArrayImpl.prototype.subarray;\r\n\r\n/**\r\n * Tag read.\r\n * @constructor\r\n * @param {number} id Field id\r\n * @param {number} wireType Wire type\r\n * @ignore\r\n */\r\nfunction Tag(id, wireType) {\r\n this.id = id;\r\n this.wireType = wireType;\r\n}\r\n\r\n/**\r\n * Reads a tag.\r\n * @returns {{id: number, wireType: number}} Field id and wire type\r\n */\r\nReaderPrototype.tag = function read_tag() {\r\n if (this.pos >= this.len)\r\n throw indexOutOfRange(this);\r\n return new Tag(this.buf[this.pos] >>> 3, this.buf[this.pos++] & 7);\r\n};\r\n\r\n/**\r\n * Reads a varint as a signed 32 bit value.\r\n * @returns {number} Value read\r\n */\r\nReaderPrototype.int32 = function read_int32() {\r\n var value = 0,\r\n shift = 0,\r\n octet = 0;\r\n do {\r\n if (this.pos >= this.len)\r\n throw indexOutOfRange(this);\r\n octet = this.buf[this.pos++];\r\n if (shift < 32)\r\n value |= (octet & 127) << shift;\r\n shift += 7;\r\n } while (octet & 128);\r\n return value;\r\n};\r\n\r\n/**\r\n * Reads a varint as an unsigned 32 bit value.\r\n * @returns {number} Value read\r\n */\r\nReaderPrototype.uint32 = function read_uint32() {\r\n return this.int32() >>> 0;\r\n};\r\n\r\n/**\r\n * Reads a zig-zag encoded varint as a signed 32 bit value.\r\n * @returns {number} Value read\r\n */\r\nReaderPrototype.sint32 = function read_sint32() {\r\n var value = this.int32();\r\n return value >>> 1 ^ -(value & 1);\r\n};\r\n\r\n/**\r\n * Reads a possibly 64 bits varint.\r\n * @returns {LongBits} Long bits\r\n * @this {Reader}\r\n * @inner\r\n * @ignore\r\n */\r\nfunction readLongVarint() {\r\n var lo = 0, hi = 0,\r\n i = 0, b = 0;\r\n if (this.len - this.pos > 9) { // fast route\r\n for (i = 0; i < 4; ++i) {\r\n b = this.buf[this.pos++];\r\n lo |= (b & 127) << i * 7;\r\n if (b < 128)\r\n return new LongBits(lo >>> 0, hi >>> 0);\r\n }\r\n b = this.buf[this.pos++];\r\n lo |= (b & 127) << 28;\r\n hi |= (b & 127) >> 4;\r\n if (b < 128)\r\n return new LongBits(lo >>> 0, hi >>> 0);\r\n for (i = 0; i < 5; ++i) {\r\n b = this.buf[this.pos++];\r\n hi |= (b & 127) << i * 7 + 3;\r\n if (b < 128)\r\n return new LongBits(lo >>> 0, hi >>> 0);\r\n }\r\n } else {\r\n for (i = 0; i < 4; ++i) {\r\n if (this.pos >= this.len)\r\n throw indexOutOfRange(this);\r\n b = this.buf[this.pos++];\r\n lo |= (b & 127) << i * 7;\r\n if (b < 128)\r\n return new LongBits(lo >>> 0, hi >>> 0);\r\n }\r\n if (this.pos >= this.len)\r\n throw indexOutOfRange(this);\r\n b = this.buf[this.pos++];\r\n lo |= (b & 127) << 28;\r\n hi |= (b & 127) >> 4;\r\n if (b < 128)\r\n return new LongBits(lo >>> 0, hi >>> 0);\r\n for (i = 0; i < 5; ++i) {\r\n if (this.pos >= this.len)\r\n throw indexOutOfRange(this);\r\n b = this.buf[this.pos++];\r\n hi |= (b & 127) << i * 7 + 3;\r\n if (b < 128)\r\n return new LongBits(lo >>> 0, hi >>> 0);\r\n }\r\n }\r\n throw Error(\"invalid varint encoding\");\r\n}\r\n\r\nfunction read_int64_long() {\r\n return readLongVarint.call(this).toLong(); // eslint-disable-line no-invalid-this\r\n}\r\n\r\nfunction read_int64_number() {\r\n return readLongVarint.call(this).toNumber(); // eslint-disable-line no-invalid-this\r\n}\r\n\r\n/**\r\n * Reads a varint as a signed 64 bit value.\r\n * @function\r\n * @returns {Long|number} Value read\r\n */\r\nReaderPrototype.int64 = Long && read_int64_long || read_int64_number;\r\n\r\nfunction read_uint64_long() {\r\n return readLongVarint.call(this).toLong(true); // eslint-disable-line no-invalid-this\r\n}\r\n\r\nfunction read_uint64_number() {\r\n return readLongVarint.call(this).toNumber(true); // eslint-disable-line no-invalid-this\r\n}\r\n\r\n/**\r\n * Reads a varint as an unsigned 64 bit value.\r\n * @function\r\n * @returns {Long|number} Value read\r\n */\r\nReaderPrototype.uint64 = Long && read_uint64_long || read_uint64_number;\r\n\r\nfunction read_sint64_long() {\r\n return readLongVarint.call(this).zzDecode().toLong(); // eslint-disable-line no-invalid-this\r\n}\r\n\r\nfunction read_sint64_number() {\r\n return readLongVarint.call(this).zzDecode().toNumber(); // eslint-disable-line no-invalid-this\r\n}\r\n\r\n/**\r\n * Reads a zig-zag encoded varint as a signed 64 bit value.\r\n * @function\r\n * @returns {Long|number} Value read\r\n */\r\nReaderPrototype.sint64 = Long && read_sint64_long || read_sint64_number;\r\n\r\n/**\r\n * Reads a varint as a boolean.\r\n * @returns {boolean} Value read\r\n */\r\nReaderPrototype.bool = function read_bool() {\r\n return this.int32() !== 0;\r\n};\r\n\r\n/**\r\n * Reads fixed 32 bits as a number.\r\n * @returns {number} Value read\r\n */\r\nReaderPrototype.fixed32 = function read_fixed32() {\r\n if (this.pos + 4 > this.len)\r\n throw indexOutOfRange(this, 4);\r\n this.pos += 4;\r\n return this.buf[this.pos - 4]\r\n | this.buf[this.pos - 3] << 8\r\n | this.buf[this.pos - 2] << 16\r\n | this.buf[this.pos - 1] << 24;\r\n};\r\n\r\n/**\r\n * Reads zig-zag encoded fixed 32 bits as a number.\r\n * @returns {number} Value read\r\n */\r\nReaderPrototype.sfixed32 = function read_sfixed32() {\r\n var value = this.fixed32();\r\n return value >>> 1 ^ -(value & 1);\r\n};\r\n\r\n/**\r\n * Reads a 64 bit value.\r\n * @returns {LongBits} Long bits\r\n * @this {Reader}\r\n * @inner \r\n * @ignore\r\n */\r\nfunction readLongFixed() {\r\n if (this.pos + 8 > this.len)\r\n throw indexOutOfRange(this, 8);\r\n return new LongBits(\r\n ( this.buf[this.pos++]\r\n | this.buf[this.pos++] << 8\r\n | this.buf[this.pos++] << 16\r\n | this.buf[this.pos++] << 24 ) >>> 0\r\n ,\r\n ( this.buf[this.pos++]\r\n | this.buf[this.pos++] << 8\r\n | this.buf[this.pos++] << 16\r\n | this.buf[this.pos++] << 24 ) >>> 0\r\n );\r\n}\r\n\r\nfunction read_fixed64_long() {\r\n return readLongFixed.call(this).toLong(true); // eslint-disable-line no-invalid-this\r\n}\r\n\r\nfunction read_fixed64_number() {\r\n return readLongFixed.call(this).toNumber(true); // eslint-disable-line no-invalid-this\r\n}\r\n\r\n/**\r\n * Reads fixed 64 bits.\r\n * @function\r\n * @returns {Long|number} Value read\r\n */\r\nReaderPrototype.fixed64 = Long && read_fixed64_long || read_fixed64_number;\r\n\r\nfunction read_sfixed64_long() {\r\n return readLongFixed.call(this).zzDecode().toLong(); // eslint-disable-line no-invalid-this\r\n}\r\n\r\nfunction read_sfixed64_number() {\r\n return readLongFixed.call(this).zzDecode().toNumber(); // eslint-disable-line no-invalid-this\r\n}\r\n\r\n/**\r\n * Reads zig-zag encoded fixed 64 bits.\r\n * @returns {Long|number} Value read\r\n */\r\nReaderPrototype.sfixed64 = Long && read_sfixed64_long || read_sfixed64_number;\r\n\r\n/**\r\n * Reads a float (32 bit) as a number.\r\n * @function\r\n * @returns {number} Value read\r\n */\r\nReaderPrototype.float = function read_float() {\r\n if (this.pos + 4 > this.len)\r\n throw indexOutOfRange(this, 4);\r\n var value = ieee754.read(this.buf, this.pos, false, 23, 4);\r\n this.pos += 4;\r\n return value;\r\n};\r\n\r\n/**\r\n * Reads a double (64 bit float) as a number.\r\n * @function\r\n * @returns {number} Value read\r\n */\r\nReaderPrototype.double = function read_double() {\r\n if (this.pos + 8 > this.len)\r\n throw indexOutOfRange(this, 4);\r\n var value = ieee754.read(this.buf, this.pos, false, 52, 8);\r\n this.pos += 8;\r\n return value;\r\n};\r\n\r\n/**\r\n * Reads a sequence of bytes preceeded by its length as a varint.\r\n * @returns {number[]} Value read\r\n */\r\nReaderPrototype.bytes = function read_bytes() {\r\n var length = this.int32() >>> 0,\r\n start = this.pos,\r\n end = this.pos + length;\r\n if (end > this.len)\r\n throw indexOutOfRange(this, length);\r\n this.pos += length;\r\n return start === end // fix for IE 10/Win8 and others' subarray returning array of size 1\r\n ? new this.buf.constructor(0)\r\n : this._slice.call(this.buf, start, end);\r\n};\r\n\r\n/**\r\n * Reads a string preceeded by its byte length as a varint.\r\n * @returns {string} Value read\r\n */\r\nReaderPrototype.string = function read_string() {\r\n // ref: https://github.com/google/closure-library/blob/master/closure/goog/crypt/crypt.js\r\n var bytes = this.bytes(),\r\n len = bytes.length;\r\n if (len) {\r\n var out = new Array(len), p = 0, c = 0;\r\n while (p < len) {\r\n var c1 = bytes[p++];\r\n if (c1 < 128)\r\n out[c++] = c1;\r\n else if (c1 > 191 && c1 < 224)\r\n out[c++] = (c1 & 31) << 6 | bytes[p++] & 63;\r\n else if (c1 > 239 && c1 < 365) {\r\n var u = ((c1 & 7) << 18 | (bytes[p++] & 63) << 12 | (bytes[p++] & 63) << 6 | bytes[p++] & 63) - 0x10000;\r\n out[c++] = 0xD800 + (u >> 10);\r\n out[c++] = 0xDC00 + (u & 1023);\r\n } else\r\n out[c++] = (c1 & 15) << 12 | (bytes[p++] & 63) << 6 | bytes[p++] & 63;\r\n }\r\n return String.fromCharCode.apply(String, out.slice(0, c));\r\n }\r\n return \"\";\r\n};\r\n\r\n/**\r\n * Skips the specified number of bytes if specified, otherwise skips a varint.\r\n * @param {number} [length] Length if known, otherwise a varint is assumed\r\n * @returns {Reader} `this`\r\n */\r\nReaderPrototype.skip = function skip(length) {\r\n if (length === undefined) {\r\n do {\r\n if (this.pos >= this.len)\r\n throw indexOutOfRange(this);\r\n } while (this.buf[this.pos++] & 128);\r\n } else {\r\n if (this.pos + length > this.len)\r\n throw indexOutOfRange(this, length);\r\n this.pos += length;\r\n }\r\n return this;\r\n};\r\n\r\n/**\r\n * Skips the next element of the specified wire type.\r\n * @param {number} wireType Wire type received\r\n * @returns {Reader} `this`\r\n */\r\nReaderPrototype.skipType = function(wireType) {\r\n switch (wireType) {\r\n case 0:\r\n this.skip();\r\n break;\r\n case 1:\r\n this.skip(8);\r\n break;\r\n case 2:\r\n this.skip(this.uint32());\r\n break;\r\n case 3:\r\n do { // eslint-disable-line no-constant-condition\r\n var tag = this.tag();\r\n if (tag.wireType === 4)\r\n break;\r\n this.skipType(tag.wireType);\r\n } while (true);\r\n break;\r\n case 5:\r\n this.skip(4);\r\n break;\r\n default:\r\n throw Error(\"invalid wire type: \" + wireType);\r\n }\r\n return this;\r\n};\r\n\r\n/**\r\n * Resets this instance and frees all resources.\r\n * @param {number[]} [buffer] New buffer for a new sequence of read operations\r\n * @returns {Reader} `this`\r\n */\r\nReaderPrototype.reset = function reset(buffer) {\r\n if (buffer) {\r\n this.buf = buffer;\r\n this.len = buffer.length;\r\n } else {\r\n this.buf = null; // makes it throw\r\n this.len = 0;\r\n }\r\n this.pos = 0;\r\n return this;\r\n};\r\n\r\n/**\r\n * Finishes the current sequence of read operations, frees all resources and returns the remaining buffer.\r\n * @param {number[]} [buffer] New buffer for a new sequence of read operations\r\n * @returns {number[]} Finished buffer\r\n */\r\nReaderPrototype.finish = function finish(buffer) {\r\n var remain = this.pos\r\n ? this._slice.call(this.buf, this.pos)\r\n : this.buf;\r\n this.reset(buffer);\r\n return remain;\r\n};\r\n\r\n// One time function to initialize BufferReader with the now-known buffer implementation's slice method\r\nvar initBufferReader = function() {\r\n if (!util.Buffer)\r\n throw Error(\"Buffer is not supported\");\r\n BufferReaderPrototype._slice = util.Buffer.prototype.slice;\r\n initBufferReader = false;\r\n};\r\n\r\n/**\r\n * Constructs a new buffer reader.\r\n * @classdesc Wire format reader using node buffers.\r\n * @extends Reader\r\n * @constructor\r\n * @param {Buffer} buffer Buffer to read from\r\n */\r\nfunction BufferReader(buffer) {\r\n if (initBufferReader)\r\n initBufferReader();\r\n Reader.call(this, buffer);\r\n}\r\n\r\n/** @alias BufferReader.prototype */\r\nvar BufferReaderPrototype = BufferReader.prototype = Object.create(Reader.prototype);\r\n\r\nBufferReaderPrototype.constructor = BufferReader;\r\n\r\n/**\r\n * Reads a float (32 bit) as a number using node buffers.\r\n * @returns {number} Value read\r\n */\r\nBufferReaderPrototype.float = function read_float_buffer() {\r\n if (this.pos + 4 > this.len)\r\n throw indexOutOfRange(this, 4);\r\n var value = this.buf.readFloatLE(this.pos, true);\r\n this.pos += 4;\r\n return value;\r\n};\r\n\r\n/**\r\n * Reads a double (64 bit float) as a number using node buffers.\r\n * @returns {number} Value read\r\n */\r\nBufferReaderPrototype.double = function read_double_buffer() {\r\n if (this.pos + 8 > this.len)\r\n throw indexOutOfRange(this, 8);\r\n var value = this.buf.readDoubleLE(this.pos, true);\r\n this.pos += 8;\r\n return value;\r\n};\r\n\r\n/**\r\n * Reads a string.\r\n * @returns {string} Value read\r\n */\r\nBufferReaderPrototype.string = function read_string_buffer() {\r\n var length = this.int32() >>> 0,\r\n start = this.pos,\r\n end = this.pos + length;\r\n if (end > this.len)\r\n throw indexOutOfRange(this, length);\r\n this.pos += length;\r\n return this.buf.toString(\"utf8\", start, end);\r\n};\r\n\r\n/**\r\n * Finishes the current sequence of read operations using node buffers, frees all resources and returns the remaining buffer.\r\n * @param {Buffer} [buffer] New buffer for a new sequence of read operations\r\n * @returns {Buffer} Finished buffer\r\n */\r\nBufferReaderPrototype.finish = function finish_buffer(buffer) {\r\n var remain = this.pos ? this.buf.slice(this.pos) : this.buf;\r\n this.reset(buffer);\r\n return remain;\r\n};\r\n","\"use strict\";\r\nmodule.exports = Root;\r\n\r\nvar Namespace = require(10);\r\n/** @alias Root.prototype */\r\nvar RootPrototype = Namespace.extend(Root);\r\n\r\nvar Field = require(6),\r\n util = require(21),\r\n common = require(2);\r\n\r\n/**\r\n * Constructs a new root namespace.\r\n * @classdesc Root namespace wrapping all types, enums, services, sub-namespaces etc. that belong together.\r\n * @extends Namespace\r\n * @constructor\r\n * @param {Object} [options] Top level options\r\n */\r\nfunction Root(options) {\r\n Namespace.call(this, \"\", options);\r\n\r\n /**\r\n * Deferred extension fields.\r\n * @type {Field[]}\r\n */\r\n this.deferred = [];\r\n\r\n /**\r\n * Resolved file names of loaded files. \r\n * @type {string[]}\r\n */\r\n this.files = [];\r\n}\r\n\r\n/**\r\n * Loads a JSON definition into a root namespace.\r\n * @param {*} json JSON definition\r\n * @param {Root} [root] Root namespace, defaults to create a new one if omitted\r\n * @returns {Root} Root namespace\r\n */\r\nRoot.fromJSON = function fromJSON(json, root) {\r\n if (!root)\r\n root = new Root();\r\n return root.setOptions(json.options).addJSON(json.nested);\r\n};\r\n\r\n/**\r\n * Resolves the path of an imported file, relative to the importing origin.\r\n * This method exists so you can override it with your own logic in case your imports are scattered over multiple directories.\r\n * @function\r\n * @param {string} origin The file name of the importing file\r\n * @param {string} target The file name being imported\r\n * @returns {string} Resolved path to `target`\r\n */\r\nRootPrototype.resolvePath = util.resolvePath;\r\n\r\n/**\r\n * Loads one or multiple .proto or preprocessed .json files into this root namespace.\r\n * @param {string|string[]} filename Names of one or multiple files to load\r\n * @param {function(?Error, Root=)} [callback] Node-style callback function\r\n * @returns {Promise|undefined} A promise if `callback` has been omitted\r\n * @throws {TypeError} If arguments are invalid\r\n */\r\nRootPrototype.load = function load(filename, callback) {\r\n var self = this;\r\n if (!callback)\r\n return util.asPromise(load, self, filename);\r\n\r\n // Finishes loading by calling the callback (exactly once)\r\n function finish(err, root) {\r\n if (!callback)\r\n return;\r\n var cb = callback;\r\n callback = null;\r\n cb(err, root);\r\n }\r\n\r\n // Processes a single file\r\n function process(filename, source) {\r\n try {\r\n if (util.isString(source) && source.charAt(0) === \"{\")\r\n source = JSON.parse(source);\r\n if (!util.isString(source))\r\n self.setOptions(source.options).addJSON(source.nested);\r\n else {\r\n var parsed = require(13)(source, self);\r\n if (parsed.imports)\r\n parsed.imports.forEach(function(name) {\r\n fetch(self.resolvePath(filename, name));\r\n });\r\n if (parsed.weakImports)\r\n parsed.weakImports.forEach(function(name) {\r\n fetch(self.resolvePath(filename, name), true);\r\n });\r\n }\r\n } catch (err) {\r\n finish(err);\r\n return;\r\n }\r\n if (!queued)\r\n finish(null, self);\r\n }\r\n\r\n // Fetches a single file\r\n function fetch(filename, weak) {\r\n\r\n // Strip path if this file references a bundled definition\r\n var idx = filename.indexOf(\"google/protobuf/\");\r\n if (idx > -1) {\r\n var altname = filename.substring(idx);\r\n if (altname in common)\r\n filename = altname;\r\n }\r\n\r\n // Skip if already loaded\r\n if (self.files.indexOf(filename) > -1)\r\n return;\r\n self.files.push(filename);\r\n\r\n // Shortcut bundled definitions\r\n if (filename in common) {\r\n ++queued;\r\n setTimeout(function() {\r\n --queued;\r\n process(filename, common[filename]);\r\n });\r\n return;\r\n }\r\n\r\n // Otherwise fetch from disk or network\r\n ++queued;\r\n util.fetch(filename, function(err, source) {\r\n --queued;\r\n if (!callback)\r\n return; // terminated meanwhile\r\n if (err) {\r\n if (!weak)\r\n finish(err);\r\n return;\r\n }\r\n process(filename, source);\r\n });\r\n }\r\n var queued = 0;\r\n\r\n // Assembling the root namespace doesn't require working type\r\n // references anymore, so we can load everything in parallel\r\n if (util.isString(filename))\r\n filename = [ filename ];\r\n filename.forEach(function(filename) {\r\n fetch(self.resolvePath(\"\", filename));\r\n });\r\n\r\n if (!queued)\r\n finish(null);\r\n return undefined;\r\n};\r\n\r\n/**\r\n * Handles a deferred declaring extension field by creating a sister field to represent it within its extended type.\r\n * @param {Field} field Declaring extension field witin the declaring type\r\n * @returns {boolean} `true` if successfully added to the extended type, `false` otherwise\r\n * @inner\r\n * @ignore\r\n */\r\nfunction handleExtension(field) {\r\n var extendedType = field.parent.lookup(field.extend);\r\n if (extendedType) {\r\n var sisterField = new Field(field.getFullName(), field.id, field.type, field.rule, undefined, field.options);\r\n sisterField.declaringField = field;\r\n field.extensionField = sisterField;\r\n extendedType.add(sisterField);\r\n return true;\r\n }\r\n return false;\r\n}\r\n\r\n/**\r\n * Called when any object is added to this root or its sub-namespaces.\r\n * @param {ReflectionObject} object Object added\r\n * @returns {undefined}\r\n * @private\r\n */\r\nRootPrototype._handleAdd = function handleAdd(object) {\r\n // Try to handle any deferred extensions\r\n var newDeferred = this.deferred.slice();\r\n this.deferred = []; // because the loop calls handleAdd\r\n var i = 0;\r\n while (i < newDeferred.length)\r\n if (handleExtension(newDeferred[i]))\r\n newDeferred.splice(i, 1);\r\n else\r\n ++i;\r\n this.deferred = newDeferred;\r\n // Handle new declaring extension fields without a sister field yet\r\n if (object instanceof Field && object.extend !== undefined && !object.extensionField && !handleExtension(object) && this.deferred.indexOf(object) < 0)\r\n this.deferred.push(object);\r\n else if (object instanceof Namespace) {\r\n var nested = object.getNestedArray();\r\n for (i = 0; i < nested.length; ++i) // recurse into the namespace\r\n this._handleAdd(nested[i]);\r\n }\r\n};\r\n\r\n/**\r\n * Called when any object is removed from this root or its sub-namespaces.\r\n * @param {ReflectionObject} object Object removed\r\n * @returns {undefined}\r\n * @private\r\n */\r\nRootPrototype._handleRemove = function handleRemove(object) {\r\n if (object instanceof Field) {\r\n // If a deferred declaring extension field, cancel the extension\r\n if (object.extend !== undefined && !object.extensionField) {\r\n var index = this.deferred.indexOf(object);\r\n if (index > -1)\r\n this.deferred.splice(index, 1);\r\n }\r\n // If a declaring extension field with a sister field, remove its sister field\r\n if (object.extensionField) {\r\n object.extensionField.parent.remove(object.extensionField);\r\n object.extensionField = null;\r\n }\r\n } else if (object instanceof Namespace) {\r\n var nested = object.getNestedArray();\r\n for (var i = 0; i < nested.length; ++i) // recurse into the namespace\r\n this._handleRemove(nested[i]);\r\n }\r\n};\r\n\r\n/**\r\n * @override\r\n */\r\nRootPrototype.toString = function toString() {\r\n return this.constructor.name;\r\n};\r\n","\"use strict\";\r\nmodule.exports = Service;\r\n\r\nvar Namespace = require(10);\r\n/** @alias Namespace.prototype */\r\nvar NamespacePrototype = Namespace.prototype;\r\n/** @alias Service.prototype */\r\nvar ServicePrototype = Namespace.extend(Service);\r\n\r\nvar Method = require(9),\r\n util = require(21);\r\n\r\n/**\r\n * Constructs a new service.\r\n * @classdesc Reflected service.\r\n * @extends Namespace\r\n * @constructor\r\n * @param {string} name Service name\r\n * @param {Object.} [options] Service options\r\n * @throws {TypeError} If arguments are invalid\r\n */\r\nfunction Service(name, options) {\r\n Namespace.call(this, name, options);\r\n\r\n /**\r\n * Service methods.\r\n * @type {Object.}\r\n */\r\n this.methods = {}; // toJSON, marker\r\n\r\n /**\r\n * Cached methods as an array.\r\n * @type {?Method[]}\r\n * @private\r\n */\r\n this._methodsArray = null;\r\n}\r\n\r\nObject.defineProperties(ServicePrototype, {\r\n\r\n /**\r\n * Methods of this service as an array for iteration.\r\n * @name Service#methodsArray\r\n * @type {Method[]}\r\n * @readonly\r\n */\r\n methodsArray: {\r\n get: ServicePrototype.getMethodsArray = function getMethodsArray() {\r\n return this._methodsArray || (this._methodsArray = util.toArray(this.methods));\r\n }\r\n }\r\n\r\n});\r\n\r\nfunction clearCache(service) {\r\n service._methodsArray = null;\r\n return service;\r\n}\r\n\r\n/**\r\n * Tests if the specified JSON object describes a service.\r\n * @param {Object} json JSON object to test\r\n * @returns {boolean} `true` if the object describes a service\r\n */\r\nService.testJSON = function testJSON(json) {\r\n return Boolean(json && json.methods);\r\n};\r\n\r\n/**\r\n * Constructs a service from JSON.\r\n * @param {string} name Service name\r\n * @param {Object} json JSON object\r\n * @returns {Service} Created service\r\n * @throws {TypeError} If arguments are invalid\r\n */\r\nService.fromJSON = function fromJSON(name, json) {\r\n var service = new Service(name, json.options);\r\n if (json.methods)\r\n Object.keys(json.methods).forEach(function(methodName) {\r\n service.add(Method.fromJSON(methodName, json.methods[methodName]));\r\n });\r\n return service;\r\n};\r\n\r\n/**\r\n * @override\r\n */\r\nServicePrototype.toJSON = function toJSON() {\r\n var inherited = NamespacePrototype.toJSON.call(this);\r\n return {\r\n options : inherited && inherited.options || undefined,\r\n methods : Namespace.arrayToJSON(this.getMethodsArray()) || {},\r\n nested : inherited && inherited.nested || undefined\r\n };\r\n};\r\n\r\n/**\r\n * @override\r\n */\r\nServicePrototype.get = function get(name) {\r\n return NamespacePrototype.get.call(this, name) || this.methods[name] || null;\r\n};\r\n\r\n/**\r\n * @override\r\n */\r\nServicePrototype.resolveAll = function resolve() {\r\n var methods = this.getMethodsArray();\r\n for (var i = 0; i < methods.length; ++i)\r\n methods[i].resolve();\r\n return NamespacePrototype.resolve.call(this);\r\n};\r\n\r\n/**\r\n * @override\r\n */\r\nServicePrototype.add = function add(object) {\r\n if (this.get(object.name))\r\n throw Error(\"duplicate name '\" + object.name + '\" in ' + this);\r\n if (object instanceof Method) {\r\n this.methods[object.name] = object;\r\n object.parent = this;\r\n return clearCache(this);\r\n }\r\n return NamespacePrototype.add.call(this, object);\r\n};\r\n\r\n/**\r\n * @override\r\n */\r\nServicePrototype.remove = function remove(object) {\r\n if (object instanceof Method) {\r\n if (this.methods[object.name] !== object)\r\n throw Error(object + \" is not a member of \" + this);\r\n delete this.methods[object.name];\r\n object.parent = null;\r\n return clearCache(this);\r\n }\r\n return NamespacePrototype.remove.call(this, object);\r\n};\r\n","\"use strict\";\r\nmodule.exports = tokenize;\r\n\r\nvar delimRe = /[\\s{}=;:[\\],'\"()<>]/g,\r\n stringDoubleRe = /(?:\"([^\"\\\\]*(?:\\\\.[^\"\\\\]*)*)\")/g,\r\n stringSingleRe = /(?:'([^'\\\\]*(?:\\\\.[^'\\\\]*)*)')/g;\r\n\r\n/**\r\n * Handle object returned from {@link tokenize}.\r\n * @typedef {Object} TokenizerHandle\r\n * @property {function():number} line Gets the current line number\r\n * @property {function():?string} next Gets the next token and advances (`null` on eof)\r\n * @property {function():?string} peek Peeks for the next token (`null` on eof)\r\n * @property {function(string)} push Pushes a token back to the stack\r\n * @property {function(string, boolean=):boolean} skip Skips a token, returns its presence and advances or, if non-optional and not present, throws\r\n */\r\n\r\nvar s_nl = \"\\n\",\r\n s_sl = '/',\r\n s_as = '*';\r\n\r\nfunction unescape(str) {\r\n return str.replace(/\\\\(.?)/g, function($0, $1) {\r\n switch ($1) {\r\n case \"\\\\\":\r\n case \"\":\r\n return $1;\r\n case \"0\":\r\n return \"\\u0000\";\r\n default:\r\n return $1;\r\n }\r\n });\r\n}\r\n\r\n/**\r\n * Tokenizes the given .proto source and returns an object with useful utility functions.\r\n * @param {string} source Source contents\r\n * @returns {TokenizerHandle} Tokenizer handle\r\n */\r\nfunction tokenize(source) {\r\n /* eslint-disable default-case, callback-return */\r\n source = source.toString();\r\n \r\n var offset = 0,\r\n length = source.length,\r\n line = 1;\r\n \r\n var stack = [];\r\n\r\n var stringDelim = null;\r\n\r\n /**\r\n * Creates an error for illegal syntax.\r\n * @param {string} subject Subject\r\n * @returns {Error} Error created\r\n * @inner\r\n */\r\n function illegal(subject) {\r\n return Error(\"illegal \" + subject + \" (line \" + line + \")\");\r\n }\r\n\r\n /**\r\n * Reads a string till its end.\r\n * @returns {string} String read\r\n * @inner\r\n */\r\n function readString() {\r\n var re = stringDelim === '\"' ? stringDoubleRe : stringSingleRe;\r\n re.lastIndex = offset - 1;\r\n var match = re.exec(source);\r\n if (!match)\r\n throw illegal(\"string\");\r\n offset = re.lastIndex;\r\n push(stringDelim);\r\n stringDelim = null;\r\n return unescape(match[1]);\r\n }\r\n\r\n /**\r\n * Gets the character at `pos` within the source.\r\n * @param {number} pos Position\r\n * @returns {string} Character\r\n * @inner\r\n */\r\n function charAt(pos) {\r\n return source.charAt(pos);\r\n }\r\n\r\n /**\r\n * Obtains the next token.\r\n * @returns {?string} Next token or `null` on eof\r\n * @inner\r\n */\r\n function next() {\r\n if (stack.length > 0)\r\n return stack.shift();\r\n if (stringDelim)\r\n return readString();\r\n var repeat,\r\n prev,\r\n curr;\r\n do {\r\n if (offset === length)\r\n return null;\r\n repeat = false;\r\n while (/\\s/.test(curr = charAt(offset))) {\r\n if (curr === s_nl)\r\n ++line;\r\n if (++offset === length)\r\n return null;\r\n }\r\n if (charAt(offset) === s_sl) {\r\n if (++offset === length)\r\n throw illegal(\"comment\");\r\n if (charAt(offset) === s_sl) { // Line\r\n while (charAt(++offset) !== s_nl)\r\n if (offset === length)\r\n return null;\r\n ++offset;\r\n ++line;\r\n repeat = true;\r\n } else if ((curr = charAt(offset)) === s_as) { /* Block */\r\n do {\r\n if (curr === s_nl)\r\n ++line;\r\n if (++offset === length)\r\n return null;\r\n prev = curr;\r\n curr = charAt(offset);\r\n } while (prev !== s_as || curr !== s_sl);\r\n ++offset;\r\n repeat = true;\r\n } else\r\n return s_sl;\r\n }\r\n } while (repeat);\r\n\r\n if (offset === length)\r\n return null;\r\n var end = offset;\r\n delimRe.lastIndex = 0;\r\n var delim = delimRe.test(charAt(end++));\r\n if (!delim)\r\n while (end < length && !delimRe.test(charAt(end)))\r\n ++end;\r\n var token = source.substring(offset, offset = end);\r\n if (token === '\"' || token === \"'\")\r\n stringDelim = token;\r\n return token;\r\n }\r\n\r\n /**\r\n * Pushes a token back to the stack.\r\n * @param {string} token Token\r\n * @returns {undefined}\r\n * @inner\r\n */\r\n function push(token) {\r\n stack.push(token);\r\n }\r\n\r\n /**\r\n * Peeks for the next token.\r\n * @returns {?string} Token or `null` on eof\r\n * @inner\r\n */\r\n function peek() {\r\n if (!stack.length) {\r\n var token = next();\r\n if (token === null)\r\n return null;\r\n push(token);\r\n }\r\n return stack[0];\r\n }\r\n\r\n /**\r\n * Skips a token.\r\n * @param {string} expected Expected token\r\n * @param {boolean} [optional=false] Whether the token is optional\r\n * @returns {boolean} `true` when skipped, `false` if not\r\n * @throws {Error} When a required token is not present\r\n * @inner\r\n */\r\n function skip(expected, optional) {\r\n var actual = peek(),\r\n equals = actual === expected;\r\n if (equals) {\r\n next();\r\n return true;\r\n }\r\n if (!optional)\r\n throw illegal(\"token '\" + actual + \"', '\" + expected + \"' expected\");\r\n return false;\r\n }\r\n\r\n return {\r\n line: function() { return line; },\r\n next: next,\r\n peek: peek,\r\n push: push,\r\n skip: skip\r\n };\r\n /* eslint-enable default-case, callback-return */\r\n}","\"use strict\";\r\nmodule.exports = Type; \r\n\r\nvar Namespace = require(10);\r\n/** @alias Namespace.prototype */\r\nvar NamespacePrototype = Namespace.prototype;\r\n/** @alias Type.prototype */\r\nvar TypePrototype = Namespace.extend(Type);\r\n\r\nvar Enum = require(5),\r\n OneOf = require(12),\r\n Field = require(6),\r\n Service = require(17),\r\n Prototype = require(14),\r\n inherits = require(7),\r\n util = require(21),\r\n Reader = require(15),\r\n Encoder = require(4),\r\n Decoder = require(3),\r\n Verifier = require(24);\r\nvar codegen = util.codegen;\r\n\r\n/**\r\n * Constructs a new message type.\r\n * @classdesc Reflected message type.\r\n * @extends Namespace\r\n * @constructor\r\n * @param {string} name Message name\r\n * @param {Object} [options] Declared options\r\n */\r\nfunction Type(name, options) {\r\n Namespace.call(this, name, options);\r\n\r\n /**\r\n * Message fields.\r\n * @type {Object.}\r\n */\r\n this.fields = {}; // toJSON, marker\r\n\r\n /**\r\n * Oneofs declared within this namespace, if any.\r\n * @type {Object.}\r\n */\r\n this.oneofs = undefined; // toJSON\r\n\r\n /**\r\n * Extension ranges, if any.\r\n * @type {number[][]}\r\n */\r\n this.extensions = undefined; // toJSON\r\n\r\n /**\r\n * Reserved ranges, if any.\r\n * @type {number[][]}\r\n */\r\n this.reserved = undefined; // toJSON\r\n\r\n /**\r\n * Cached fields by id.\r\n * @type {?Object.}\r\n * @private\r\n */\r\n this._fieldsById = null;\r\n\r\n /**\r\n * Cached fields as an array.\r\n * @type {?Field[]}\r\n * @private\r\n */\r\n this._fieldsArray = null;\r\n\r\n /**\r\n * Cached oneofs as an array.\r\n * @type {?OneOf[]}\r\n * @private\r\n */\r\n this._oneofsArray = null;\r\n\r\n /**\r\n * Cached constructor.\r\n * @type {?Function}\r\n * @private\r\n */\r\n this._ctor = null;\r\n}\r\n\r\nObject.defineProperties(TypePrototype, {\r\n\r\n /**\r\n * Message fields by id.\r\n * @name Type#fieldsById\r\n * @type {Object.}\r\n * @readonly\r\n */\r\n fieldsById: {\r\n get: TypePrototype.getFieldsById = function getFieldsById() {\r\n if (this._fieldsById)\r\n return this._fieldsById;\r\n this._fieldsById = {};\r\n var names = Object.keys(this.fields);\r\n for (var i = 0; i < names.length; ++i) {\r\n var field = this.fields[names[i]],\r\n id = field.id;\r\n if (this._fieldsById[id])\r\n throw Error(\"duplicate id \" + id + \" in \" + this);\r\n this._fieldsById[id] = field;\r\n }\r\n return this._fieldsById;\r\n }\r\n },\r\n\r\n /**\r\n * Fields of this message as an array for iteration.\r\n * @name Type#fieldsArray\r\n * @type {Field[]}\r\n * @readonly\r\n */\r\n fieldsArray: {\r\n get: TypePrototype.getFieldsArray = function getFieldsArray() {\r\n return this._fieldsArray || (this._fieldsArray = util.toArray(this.fields));\r\n }\r\n },\r\n\r\n /**\r\n * Oneofs of this message as an array for iteration.\r\n * @name Type#oneofsArray\r\n * @type {OneOf[]}\r\n * @readonly\r\n */\r\n oneofsArray: {\r\n get: TypePrototype.getOneofsArray = function getOneofsArray() {\r\n return this._oneofsArray || (this._oneofsArray = util.toArray(this.oneofs));\r\n }\r\n },\r\n\r\n /**\r\n * The registered constructor, if any registered, otherwise a generic constructor.\r\n * @name Type#ctor\r\n * @type {Prototype}\r\n */\r\n ctor: {\r\n get: TypePrototype.getCtor = function getCtor() {\r\n if (this._ctor)\r\n return this._ctor;\r\n var ctor;\r\n if (codegen.supported)\r\n ctor = codegen(\"p\")(\"P.call(this,p)\").eof(this.getFullName() + \"$ctor\", {\r\n P: Prototype\r\n });\r\n else\r\n ctor = function GenericMessage(properties) {\r\n Prototype.call(this, properties);\r\n };\r\n ctor.prototype = inherits(ctor, this);\r\n this._ctor = ctor;\r\n return ctor;\r\n },\r\n set: TypePrototype.setCtor = function setCtor(ctor) {\r\n if (ctor && !(ctor.prototype instanceof Prototype))\r\n throw util._TypeError(\"ctor\", \"a constructor inheriting from Prototype\");\r\n this._ctor = ctor;\r\n }\r\n }\r\n});\r\n\r\nfunction clearCache(type) {\r\n type._fieldsById = type._fieldsArray = type._oneofsArray = type._ctor = null;\r\n delete type.encode;\r\n delete type.decode;\r\n return type;\r\n}\r\n\r\n/**\r\n * Tests if the specified JSON object describes a message type.\r\n * @param {*} json JSON object to test\r\n * @returns {boolean} `true` if the object describes a message type\r\n */\r\nType.testJSON = function testJSON(json) {\r\n return Boolean(json && json.fields);\r\n};\r\n\r\nvar nestedTypes = [ Enum, Type, Field, Service ];\r\n\r\n/**\r\n * Creates a type from JSON.\r\n * @param {string} name Message name\r\n * @param {Object} json JSON object\r\n * @returns {Type} Created message type\r\n */\r\nType.fromJSON = function fromJSON(name, json) {\r\n var type = new Type(name, json.options);\r\n type.extensions = json.extensions;\r\n type.reserved = json.reserved;\r\n if (json.fields)\r\n Object.keys(json.fields).forEach(function(fieldName) {\r\n type.add(Field.fromJSON(fieldName, json.fields[fieldName]));\r\n });\r\n if (json.oneofs)\r\n Object.keys(json.oneofs).forEach(function(oneOfName) {\r\n type.add(OneOf.fromJSON(oneOfName, json.oneofs[oneOfName]));\r\n });\r\n if (json.nested)\r\n Object.keys(json.nested).forEach(function(nestedName) {\r\n var nested = json.nested[nestedName];\r\n for (var i = 0; i < nestedTypes.length; ++i) {\r\n if (nestedTypes[i].testJSON(nested)) {\r\n type.add(nestedTypes[i].fromJSON(nestedName, nested));\r\n return;\r\n }\r\n }\r\n throw Error(\"invalid nested object in \" + type + \": \" + nestedName);\r\n });\r\n return type;\r\n};\r\n\r\n/**\r\n * @override\r\n */\r\nTypePrototype.toJSON = function toJSON() {\r\n var inherited = NamespacePrototype.toJSON.call(this);\r\n return {\r\n options : inherited && inherited.options || undefined,\r\n oneofs : Namespace.arrayToJSON(this.getOneofsArray()),\r\n fields : Namespace.arrayToJSON(this.getFieldsArray().filter(function(obj) { return !obj.declaringField; })) || {},\r\n nested : inherited && inherited.nested || undefined\r\n };\r\n};\r\n\r\n/**\r\n * @override\r\n */\r\nTypePrototype.resolveAll = function resolve() {\r\n var fields = this.getFieldsArray(), i = 0;\r\n while (i < fields.length)\r\n fields[i++].resolve();\r\n var oneofs = this.getOneofsArray(); i = 0;\r\n while (i < oneofs.length)\r\n oneofs[i++].resolve();\r\n return NamespacePrototype.resolve.call(this);\r\n};\r\n\r\n/**\r\n * @override\r\n */\r\nTypePrototype.get = function get(name) {\r\n return NamespacePrototype.get.call(this, name) || this.fields && this.fields[name] || this.oneofs && this.oneofs[name] || null;\r\n};\r\n\r\n/**\r\n * Adds a nested object to this type.\r\n * @param {ReflectionObject} object Nested object to add\r\n * @returns {Type} `this`\r\n * @throws {TypeError} If arguments are invalid\r\n * @throws {Error} If there is already a nested object with this name or, if a field, when there is already a field with this id\r\n */\r\nTypePrototype.add = function add(object) {\r\n if (this.get(object.name))\r\n throw Error(\"duplicate name '\" + object.name + '\" in ' + this);\r\n if (object instanceof Field && object.extend === undefined) {\r\n // NOTE: Extension fields aren't actual fields on the declaring type, but nested objects.\r\n // The root object takes care of adding distinct sister-fields to the respective extended\r\n // type instead.\r\n if (this.getFieldsById()[object.id])\r\n throw Error(\"duplicate id \" + object.id + \" in \" + this);\r\n if (object.parent)\r\n object.parent.remove(object);\r\n this.fields[object.name] = object;\r\n object.message = this;\r\n object.onAdd(this);\r\n return clearCache(this);\r\n }\r\n if (object instanceof OneOf) {\r\n if (!this.oneofs)\r\n this.oneofs = {};\r\n this.oneofs[object.name] = object;\r\n object.onAdd(this);\r\n return clearCache(this);\r\n }\r\n return NamespacePrototype.add.call(this, object);\r\n};\r\n\r\n/**\r\n * Removes a nested object from this type.\r\n * @param {ReflectionObject} object Nested object to remove\r\n * @returns {Type} `this`\r\n * @throws {TypeError} If arguments are invalid\r\n * @throws {Error} If `object` is not a member of this type\r\n */\r\nTypePrototype.remove = function remove(object) {\r\n if (object instanceof Field && object.extend === undefined) {\r\n // See Type#add for the reason why extension fields are excluded here.\r\n if (this.fields[object.name] !== object)\r\n throw Error(object + \" is not a member of \" + this);\r\n delete this.fields[object.name];\r\n object.message = null;\r\n return clearCache(this);\r\n }\r\n return NamespacePrototype.remove.call(this, object);\r\n};\r\n\r\n/**\r\n * Creates a new message of this type using the specified properties.\r\n * @param {Object} [properties] Properties to set\r\n * @param {?Function} [ctor] Constructor to use.\r\n * Defaults to use the internal constuctor.\r\n * @returns {Prototype} Message instance\r\n */\r\nTypePrototype.create = function create(properties, ctor) {\r\n if (typeof properties === 'function') {\r\n ctor = properties;\r\n properties = undefined;\r\n } else if (properties /* already */ instanceof Prototype)\r\n return properties;\r\n if (ctor) {\r\n if (!(ctor.prototype instanceof Prototype))\r\n throw util._TypeError(\"ctor\", \"a constructor inheriting from Prototype\");\r\n } else\r\n ctor = this.getCtor();\r\n return new ctor(properties);\r\n};\r\n\r\n/**\r\n * Encodes a message of this type.\r\n * @param {Prototype|Object} message Message instance or plain object\r\n * @param {Writer} [writer] Writer to encode to\r\n * @returns {Writer} writer\r\n */\r\nTypePrototype.encode = function encode(message, writer) {\r\n var encoder = new Encoder(this);\r\n this.encode = codegen.supported\r\n ? encoder.generate()\r\n : encoder.encode;\r\n return this.encode(message, writer);\r\n};\r\n\r\n/**\r\n * Encodes a message of this type preceeded by its byte length as a varint.\r\n * @param {Prototype|Object} message Message instance or plain object\r\n * @param {Writer} [writer] Writer to encode to\r\n * @returns {Writer} writer\r\n */\r\nTypePrototype.encodeDelimited = function encodeDelimited(message, writer) {\r\n return this.encode(message, writer).ldelim();\r\n};\r\n\r\n/**\r\n * Decodes a message of this type.\r\n * @param {Reader|number[]} readerOrBuffer Reader or buffer to decode from\r\n * @param {number} [length] Length of the message, if known beforehand\r\n * @returns {Prototype} Decoded message\r\n */\r\nTypePrototype.decode = function decode(readerOrBuffer, length) {\r\n var decoder = new Decoder(this);\r\n this.decode = codegen.supported\r\n ? decoder.generate()\r\n : decoder.decode;\r\n return this.decode(readerOrBuffer, length);\r\n};\r\n\r\n/**\r\n * Decodes a message of this type preceeded by its byte length as a varint.\r\n * @param {Reader|number[]} readerOrBuffer Reader or buffer to decode from\r\n * @returns {Prototype} Decoded message\r\n */\r\nTypePrototype.decodeDelimited = function decodeDelimited(readerOrBuffer) {\r\n readerOrBuffer = readerOrBuffer instanceof Reader ? readerOrBuffer : Reader(readerOrBuffer);\r\n return this.decode(readerOrBuffer, readerOrBuffer.uint32());\r\n};\r\n\r\n/**\r\n * Verifies that enum values are valid and that any required fields are present.\r\n * @param {Prototype|Object} message Message to verify\r\n * @returns {?string} `null` if valid, otherwise the reason why it is not\r\n */\r\nTypePrototype.verify = function verify(message) {\r\n var verifier = new Verifier(this);\r\n this.verify = codegen.supported\r\n ? verifier.generate()\r\n : verifier.verify;\r\n return this.verify(message);\r\n};\r\n","\"use strict\";\r\n\r\n/**\r\n * Common type constants.\r\n * @namespace\r\n */\r\nvar types = module.exports = {};\r\n\r\nvar s = [\r\n \"double\", // 0\r\n \"float\", // 1\r\n \"int32\", // 2\r\n \"uint32\", // 3\r\n \"sint32\", // 4\r\n \"fixed32\", // 5\r\n \"sfixed32\", // 6\r\n \"int64\", // 7\r\n \"uint64\", // 8\r\n \"sint64\", // 9\r\n \"fixed64\", // 10\r\n \"sfixed64\", // 11\r\n \"bool\", // 12\r\n \"string\", // 13\r\n \"bytes\" // 14\r\n];\r\n\r\nfunction bake(values, offset) {\r\n var i = 0, o = {};\r\n offset |= 0;\r\n while (i < values.length) o[s[i + offset]] = values[i++];\r\n return o;\r\n}\r\n\r\n/**\r\n * Basic type wire types.\r\n * @type {Object.}\r\n */\r\ntypes.basic = bake([\r\n /* double */ 1,\r\n /* float */ 5,\r\n /* int32 */ 0,\r\n /* uint32 */ 0,\r\n /* sint32 */ 0,\r\n /* fixed32 */ 5,\r\n /* sfixed32 */ 5,\r\n /* int64 */ 0,\r\n /* uint64 */ 0,\r\n /* sint64 */ 0,\r\n /* fixed64 */ 1,\r\n /* sfixed64 */ 1,\r\n /* bool */ 0,\r\n /* string */ 2,\r\n /* bytes */ 2\r\n]);\r\n\r\nvar emptyArray = [];\r\nif (Object.freeze)\r\n Object.freeze(emptyArray);\r\n\r\n/**\r\n * Basic type defaults.\r\n * @type {Object.}\r\n */\r\ntypes.defaults = bake([\r\n /* double */ 0,\r\n /* float */ 0,\r\n /* int32 */ 0,\r\n /* uint32 */ 0,\r\n /* sint32 */ 0,\r\n /* fixed32 */ 0,\r\n /* sfixed32 */ 0,\r\n /* int64 */ 0,\r\n /* uint64 */ 0,\r\n /* sint64 */ 0,\r\n /* fixed64 */ 0,\r\n /* sfixed64 */ 0,\r\n /* bool */ false,\r\n /* string */ \"\",\r\n /* bytes */ emptyArray\r\n]);\r\n\r\n/**\r\n * Basic long type wire types.\r\n * @type {Object.}\r\n */\r\ntypes.long = bake([\r\n /* int64 */ 0,\r\n /* uint64 */ 0,\r\n /* sint64 */ 0,\r\n /* fixed64 */ 1,\r\n /* sfixed64 */ 1\r\n], 7);\r\n\r\n/**\r\n * Allowed types for map keys with their associated wire type.\r\n * @type {Object.}\r\n */\r\ntypes.mapKey = bake([\r\n /* int32 */ 0,\r\n /* uint32 */ 0,\r\n /* sint32 */ 0,\r\n /* fixed32 */ 5,\r\n /* sfixed32 */ 5,\r\n /* int64 */ 0,\r\n /* uint64 */ 0,\r\n /* sint64 */ 0,\r\n /* fixed64 */ 1,\r\n /* sfixed64 */ 1,\r\n /* bool */ 0,\r\n /* string */ 2\r\n], 2);\r\n\r\n/**\r\n * Allowed types for packed repeated fields with their associated wire type.\r\n * @type {Object.}\r\n */\r\ntypes.packed = bake([\r\n /* int32 */ 0,\r\n /* uint32 */ 0,\r\n /* sint32 */ 0,\r\n /* fixed32 */ 5,\r\n /* sfixed32 */ 5,\r\n /* int64 */ 0,\r\n /* uint64 */ 0,\r\n /* sint64 */ 0,\r\n /* fixed64 */ 1,\r\n /* sfixed64 */ 1,\r\n /* bool */ 0\r\n], 2);\r\n","\"use strict\";\r\n\r\n/**\r\n * Utility functions.\r\n * @namespace\r\n */\r\nvar util = module.exports = {};\r\n\r\nvar LongBits =\r\nutil.LongBits = require(\"./util/longbits\");\r\nutil.codegen = require(\"./util/codegen\");\r\n\r\n/**\r\n * Whether running within node or not.\r\n * @memberof util\r\n * @type {boolean}\r\n */\r\nvar isNode = util.isNode = Boolean(global.process && global.process.versions && global.process.versions.node);\r\n\r\n/**\r\n * Optional buffer class to use.\r\n * If you assign any compatible buffer implementation to this property, the library will use it.\r\n * @type {?Function}\r\n */\r\nutil.Buffer = null;\r\n\r\nif (isNode)\r\n try { util.Buffer = require(\"buffer\").Buffer; } catch (e) {} // eslint-disable-line no-empty\r\n\r\n/**\r\n * Optional Long class to use.\r\n * If you assign any compatible long implementation to this property, the library will use it.\r\n * @type {?Function}\r\n */\r\nutil.Long = global.dcodeIO && global.dcodeIO.Long || null;\r\n\r\nif (!util.Long)\r\n try { util.Long = require(\"long\"); } catch (e) {} // eslint-disable-line no-empty\r\n\r\n/**\r\n * Tests if the specified value is a string.\r\n * @memberof util\r\n * @param {*} value Value to test\r\n * @returns {boolean} `true` if the value is a string\r\n */\r\nfunction isString(value) {\r\n return typeof value === 'string' || value instanceof String;\r\n}\r\n\r\nutil.isString = isString;\r\n\r\n/**\r\n * Tests if the specified value is a non-null object.\r\n * @param {*} value Value to test\r\n * @returns {boolean} `true` if the value is a non-null object\r\n */\r\nutil.isObject = function isObject(value) {\r\n return Boolean(value && typeof value === 'object');\r\n};\r\n\r\n/**\r\n * Tests if the specified value is an integer.\r\n * @function\r\n * @param {*} value Value to test\r\n * @returns {boolean} `true` if the value is an integer\r\n */\r\nutil.isInteger = Number.isInteger || function isInteger(value) {\r\n return typeof value === 'number' && isFinite(value) && Math.floor(value) === value;\r\n};\r\n\r\n/**\r\n * Converts an object's values to an array.\r\n * @param {Object.} object Object to convert\r\n * @returns {Array.<*>} Converted array\r\n */\r\nutil.toArray = function toArray(object) {\r\n if (!object)\r\n return [];\r\n var names = Object.keys(object),\r\n length = names.length;\r\n var array = new Array(length);\r\n for (var i = 0; i < length; ++i)\r\n array[i] = object[names[i]];\r\n return array;\r\n};\r\n\r\n/**\r\n * Creates a type error.\r\n * @param {string} name Argument name\r\n * @param {string} [description=a string] Expected argument descripotion\r\n * @returns {TypeError} Created type error\r\n * @private\r\n */\r\nutil._TypeError = function(name, description) {\r\n return TypeError(name + \" must be \" + (description || \"a string\"));\r\n};\r\n\r\n/**\r\n * Returns a promise from a node-style function.\r\n * @memberof util\r\n * @param {function(Error, ...*)} fn Function to call\r\n * @param {Object} ctx Function context\r\n * @param {...*} params Function arguments\r\n * @returns {Promise<*>} Promisified function\r\n */\r\nfunction asPromise(fn, ctx/*, varargs */) {\r\n var args = [];\r\n for (var i = 2; i < arguments.length; ++i)\r\n args.push(arguments[i]);\r\n return new Promise(function(resolve, reject) {\r\n fn.apply(ctx, args.concat(\r\n function(err/*, varargs */) {\r\n if (err) reject(err);\r\n else resolve.apply(null, Array.prototype.slice.call(arguments, 1));\r\n }\r\n ));\r\n });\r\n}\r\n\r\nutil.asPromise = asPromise;\r\n\r\n/**\r\n * Fetches the contents of a file.\r\n * @memberof util\r\n * @param {string} path File path or url\r\n * @param {function(?Error, string=)} [callback] Node-style callback\r\n * @returns {Promise|undefined} Promise if callback has been omitted \r\n */\r\nfunction fetch(path, callback) {\r\n if (!callback)\r\n return asPromise(fetch, util, path);\r\n var fs; try { fs = require(\"fs\"); } catch (e) {} // eslint-disable-line no-empty\r\n if (fs && fs.readFile)\r\n return fs.readFile(path, \"utf8\", callback);\r\n var xhr = new XMLHttpRequest();\r\n function onload() {\r\n if (xhr.status !== 0 && xhr.status !== 200)\r\n return callback(Error(\"status \" + xhr.status));\r\n if (isString(xhr.responseText))\r\n return callback(null, xhr.responseText);\r\n return callback(Error(\"request failed\"));\r\n }\r\n xhr.onreadystatechange = function() {\r\n if (xhr.readyState === 4)\r\n onload();\r\n };\r\n xhr.open(\"GET\", path, true);\r\n xhr.send();\r\n return undefined;\r\n}\r\n\r\nutil.fetch = fetch;\r\n\r\n/**\r\n * Tests if the specified path is absolute.\r\n * @memberof util\r\n * @param {string} path Path to test\r\n * @returns {boolean} `true` if path is absolute\r\n */\r\nfunction isAbsolutePath(path) {\r\n return /^(?:\\/|[a-zA-Z0-9]+:)/.test(path);\r\n}\r\n\r\nutil.isAbsolutePath = isAbsolutePath;\r\n\r\n/**\r\n * Normalizes the specified path.\r\n * @memberof util\r\n * @param {string} path Path to normalize\r\n * @returns {string} Normalized path\r\n */\r\nfunction normalizePath(path) {\r\n path = path.replace(/\\\\/g, '/')\r\n .replace(/\\/{2,}/g, '/');\r\n var parts = path.split('/');\r\n var abs = isAbsolutePath(path);\r\n var prefix = \"\";\r\n if (abs)\r\n prefix = parts.shift() + '/';\r\n for (var i = 0; i < parts.length;) {\r\n if (parts[i] === '..') {\r\n if (i > 0)\r\n parts.splice(--i, 2);\r\n else if (abs)\r\n parts.splice(i, 1);\r\n else\r\n ++i;\r\n } else if (parts[i] === '.')\r\n parts.splice(i, 1);\r\n else\r\n ++i;\r\n }\r\n return prefix + parts.join('/');\r\n}\r\n\r\nutil.normalizePath = normalizePath;\r\n\r\n/**\r\n * Resolves the specified include path against the specified origin path.\r\n * @param {string} originPath Path that was used to fetch the origin file\r\n * @param {string} importPath Import path specified in the origin file\r\n * @param {boolean} [alreadyNormalized] `true` if both paths are already known to be normalized\r\n * @returns {string} Path to the imported file\r\n */\r\nutil.resolvePath = function resolvePath(originPath, importPath, alreadyNormalized) {\r\n if (!alreadyNormalized)\r\n importPath = normalizePath(importPath);\r\n if (isAbsolutePath(importPath))\r\n return importPath;\r\n if (!alreadyNormalized)\r\n originPath = normalizePath(originPath);\r\n originPath = originPath.replace(/(?:\\/|^)[^/]+$/, '');\r\n return originPath.length ? normalizePath(originPath + '/' + importPath) : importPath;\r\n};\r\n\r\n/**\r\n * Converts a number or long to an 8 characters long hash string.\r\n * @param {Long|number} value Value to convert\r\n * @returns {string} Hash\r\n */\r\nutil.longToHash = function longToHash(value) {\r\n return value\r\n ? LongBits.from(value).toHash()\r\n : '\\0\\0\\0\\0\\0\\0\\0\\0';\r\n};\r\n\r\n/**\r\n * Converts an 8 characters long hash string to a long or number.\r\n * @param {string} hash Hash\r\n * @param {boolean} [unsigned=false] Whether unsigned or not\r\n * @returns {Long|number} Original value\r\n */\r\nutil.longFromHash = function longFromHash(hash, unsigned) {\r\n var bits = LongBits.fromHash(hash);\r\n if (util.Long)\r\n return util.Long.fromBits(bits.lo, bits.hi, unsigned);\r\n return bits.toNumber(Boolean(unsigned));\r\n};\r\n\r\n/**\r\n * Tests if two possibly long values are not equal.\r\n * @param {number|Long} a First value\r\n * @param {number|Long} b Second value\r\n * @returns {boolean} `true` if not equal\r\n */\r\nutil.longNeq = function longNeq(a, b) {\r\n return typeof a === 'number'\r\n ? typeof b === 'number'\r\n ? a !== b\r\n : (a = LongBits.fromNumber(a)).lo !== b.low || a.hi !== b.high\r\n : typeof b === 'number'\r\n ? (b = LongBits.fromNumber(b)).lo !== a.low || b.hi !== a.high\r\n : a.low !== b.low || a.high !== b.high;\r\n};\r\n\r\n/**\r\n * Merges the properties of the source object into the destination object.\r\n * @param {Object} dst Destination object\r\n * @param {Object} src Source object\r\n * @param {boolean} [ifNotSet=false] Merges only if the key is not already set\r\n * @returns {Object} Destination object\r\n */\r\nutil.merge = function merge(dst, src, ifNotSet) {\r\n if (src) {\r\n var keys = Object.keys(src);\r\n for (var i = 0; i < keys.length; ++i)\r\n if (dst[keys[i]] === undefined || !ifNotSet)\r\n dst[keys[i]] = src[keys[i]];\r\n }\r\n return dst;\r\n};\r\n\r\n// Reserved words, ref: https://msdn.microsoft.com/en-us/library/ttyab5c8.aspx\r\n// var reserved = \"break,case,catch,class,const,continue,debugger,default,delete,do,else,export,extends,false,finally,for,function,if,import,in,instanceof,new,null,protected,return,super,switch,this,throw,true,try,typeof,var,while,with,abstract,boolean,byte,char,decimal,double,enum,final,float,get,implements,int,interface,internal,long,package,private,protected,public,sbyte,set,short,static,uint,ulong,ushort,void,assert,ensure,event,goto,invariant,namespace,native,require,synchronized,throws,transient,use,volatile\".split(',');\r\n\r\n/**\r\n * Returns a safe property accessor for the specified properly name.\r\n * @param {string} prop Property name\r\n * @returns {string} Safe accessor\r\n */\r\nutil.safeProp = function safeProp(prop) {\r\n // NOTE: While dot notation looks cleaner it doesn't seem to have a significant impact on performance.\r\n // Hence, we can safe the extra bytes from providing the reserved keywords above for pre-ES5 envs.\r\n return /* /^[a-z_$][a-z0-9_$]*$/i.test(prop) && !reserved.indexOf(prop) ? \".\" + prop : */ \"['\" + prop.replace(/\\\\/g, \"\\\\\\\\\").replace(/'/g, \"\\\\'\") + \"']\";\r\n};\r\n\r\n/**\r\n * Creates a new buffer of whatever type supported by the environment.\r\n * @param {number} [size=0] Buffer size\r\n * @returns {Buffer|Uint8Array|Array} Buffer\r\n */\r\nutil.newBuffer = function newBuffer(size) {\r\n return new (util.Buffer || typeof Uint8Array !== 'undefined' && Uint8Array || Array)(size || 0);\r\n};\r\n","\"use strict\";\r\nmodule.exports = codegen;\r\n\r\nvar blockOpenRe = /[{[]$/,\r\n blockCloseRe = /^[}\\]]/,\r\n casingRe = /:$/,\r\n branchRe = /^\\s*(?:if|else if|while|for)\\b|\\b(?:else)\\s*$/,\r\n breakRe = /\\b(?:break|continue);?$|^\\s*return\\b/;\r\n\r\n/**\r\n * Programmatically generates a function.\r\n * @memberof util\r\n * @param {...string} params Function parameter names\r\n * @returns {util.CodegenAppender} Printf-like appender function\r\n * @property {boolean} supported Whether code generation is supported by the environment.\r\n * @property {boolean} verbose=false When set to true, codegen will log generated code to console. Useful for debugging.\r\n */\r\nfunction codegen(/* varargs */) {\r\n var args = Array.prototype.slice.call(arguments),\r\n src = ['\\t\"use strict\"'];\r\n\r\n var indent = 1,\r\n inCase = false;\r\n\r\n /**\r\n * Appends a printf-like formatted line to the generated source. Returned when calling {@link util.codegen}.\r\n * @typedef CodegenAppender\r\n * @memberof util\r\n * @type {function}\r\n * @param {string} format A printf-like format string\r\n * @param {...*} params Format replacements\r\n * @returns {util.CodegenAppender} Itself\r\n * @property {util.CodegenStringer} str\r\n * @property {util.CodegenEnder} eof\r\n * @see {@link https://nodejs.org/docs/latest/api/util.html#util_util_format_format_args}\r\n */\r\n /**/\r\n function gen() {\r\n var fmt = [];\r\n for (var i = 0; i < arguments.length; ++i)\r\n fmt[i] = arguments[i];\r\n var line = gen.fmt.apply(null, fmt);\r\n var level = indent;\r\n if (src.length) {\r\n var prev = src[src.length - 1];\r\n\r\n // block open or one time branch\r\n if (blockOpenRe.test(prev))\r\n level = ++indent; // keep\r\n else if (branchRe.test(prev))\r\n ++level; // once\r\n \r\n // casing\r\n if (casingRe.test(prev) && !casingRe.test(line)) {\r\n level = ++indent;\r\n inCase = true;\r\n } else if (inCase && breakRe.test(prev)) {\r\n level = --indent;\r\n inCase = false;\r\n }\r\n\r\n // block close\r\n if (blockCloseRe.test(line))\r\n level = --indent;\r\n }\r\n for (var index = 0; index < level; ++index)\r\n line = \"\\t\" + line;\r\n src.push(line);\r\n return gen;\r\n }\r\n\r\n gen.fmt = function fmt(format) {\r\n var params = Array.prototype.slice.call(arguments, 1),\r\n index = 0;\r\n return format.replace(/%([djs])/g, function($0, $1) {\r\n var param = params[index++];\r\n return $1 === \"j\"\r\n ? JSON.stringify(param)\r\n : String(param);\r\n });\r\n };\r\n\r\n /**\r\n * Stringifies the so far generated function source.\r\n * @typedef CodegenStringer\r\n * @memberof util\r\n * @type {function}\r\n * @param {string} [name] Function name, defaults to generate an anonymous function\r\n * @returns {string} Function source using tabs for indentation\r\n */\r\n /**/\r\n gen.str = function str(name) {\r\n return \"function \" + (name ? name.replace(/[^\\w_$]/g, \"_\") : \"\") + \"(\" + args.join(\",\") + \") {\\n\" + src.join(\"\\n\") + \"\\n}\";\r\n };\r\n\r\n /**\r\n * Ends generation and builds the function.\r\n * @typedef CodegenEnder\r\n * @memberof util\r\n * @type {function}\r\n * @param {string} [name] Function name, defaults to generate an anonymous function\r\n * @param {Object|Array.} [scope] Function scope\r\n * @returns {function} A function to apply the scope manually when `scope` is an array, otherwise the generated function with scope applied\r\n */\r\n /**/\r\n gen.eof = function eof(name, scope) {\r\n if (name && typeof name === 'object') {\r\n scope = name;\r\n name = undefined;\r\n }\r\n var code = gen.str(name);\r\n if (codegen.verbose)\r\n console.log(\"--- codegen ---\\n\" + code.replace(/^/mg, \"> \").replace(/\\t/g, \" \")); // eslint-disable-line no-console\r\n code = \"return \" + code;\r\n var params, values = [];\r\n if (Array.isArray(scope)) {\r\n params = scope.slice();\r\n } else if (scope) {\r\n params = Object.keys(scope);\r\n values = params.map(function(key) { return scope[key]; });\r\n } else\r\n params = [];\r\n var fn = Function.apply(null, params.concat(code)); // eslint-disable-line no-new-func\r\n return values ? fn.apply(null, values) : fn();\r\n };\r\n\r\n return gen;\r\n}\r\n\r\ncodegen.supported = false;\r\ntry { codegen.supported = codegen(\"a\",\"b\")(\"return a-b\").eof()(2,1) === 1; } catch (e) {} // eslint-disable-line no-empty\r\n\r\ncodegen.verbose = false;\r\n","\"use strict\";\r\n\r\nmodule.exports = LongBits;\r\n\r\nvar util = require(21);\r\n\r\n/**\r\n * Constructs new long bits.\r\n * @classdesc Helper class for working with the low and high bits of a 64 bit value.\r\n * @memberof util\r\n * @constructor\r\n * @param {number} lo Low bits\r\n * @param {number} hi High bits\r\n */\r\nfunction LongBits(lo, hi) { // make sure to always call this with unsigned 32bits for proper optimization\r\n\r\n /**\r\n * Low bits.\r\n * @type {number}\r\n */\r\n this.lo = lo;\r\n\r\n /**\r\n * High bits.\r\n * @type {number}\r\n */\r\n this.hi = hi;\r\n}\r\n\r\n/** @alias util.LongBits.prototype */\r\nvar LongBitsPrototype = LongBits.prototype;\r\n\r\n/**\r\n * Zero bits.\r\n * @memberof util.LongBits\r\n * @type {util.LongBits}\r\n */\r\nvar zero = new LongBits(0, 0);\r\n\r\nzero.toNumber = function() { return 0; };\r\nzero.zzEncode = zero.zzDecode = function() { return this; };\r\nzero.length = function() { return 1; };\r\n\r\n/**\r\n * Constructs new long bits from the specified number.\r\n * @param {number} value Value\r\n * @returns {util.LongBits} Instance\r\n */\r\nLongBits.fromNumber = function fromNumber(value) {\r\n if (value === 0)\r\n return zero;\r\n var sign = value < 0;\r\n value = Math.abs(value);\r\n var lo = value >>> 0,\r\n hi = (value - lo) / 4294967296 >>> 0;\r\n if (sign) {\r\n hi = ~hi >>> 0;\r\n lo = ~lo >>> 0;\r\n if (++lo > 4294967295) {\r\n lo = 0;\r\n if (++hi > 4294967295)\r\n hi = 0;\r\n }\r\n }\r\n return new LongBits(lo, hi);\r\n};\r\n\r\n/**\r\n * Constrcuts new long bits from a number or long.\r\n * @param {Long|number} value Value\r\n * @returns {util.LongBits} Instance\r\n */\r\nLongBits.from = function from(value) {\r\n return typeof value === 'number'\r\n ? LongBits.fromNumber(value)\r\n : new LongBits(value.low >>> 0, value.high >>> 0);\r\n};\r\n\r\n/**\r\n * Converts this long bits to a possibly unsafe JavaScript number.\r\n * @param {boolean} [unsigned=false] Whether unsigned or not\r\n * @returns {number} Possibly unsafe number\r\n */\r\nLongBitsPrototype.toNumber = function toNumber(unsigned) {\r\n if (!unsigned && this.hi >>> 31) {\r\n this.lo = ~this.lo + 1 >>> 0;\r\n this.hi = ~this.hi >>> 0;\r\n if (!this.lo)\r\n this.hi = this.hi + 1 >>> 0;\r\n return -(this.lo + this.hi * 4294967296);\r\n }\r\n return this.lo + this.hi * 4294967296;\r\n};\r\n\r\n/**\r\n * Converts this long bits to a long.\r\n * @param {boolean} [unsigned=false] Whether unsigned or not\r\n * @returns {Long} Long\r\n */\r\nLongBitsPrototype.toLong = function toLong(unsigned) {\r\n return new util.Long(this.lo, this.hi, unsigned);\r\n};\r\n\r\nvar charCodeAt = String.prototype.charCodeAt;\r\n\r\n/**\r\n * Constructs new long bits from the specified 8 characters long hash.\r\n * @param {string} hash Hash\r\n * @returns {util.LongBits} Bits\r\n */\r\nLongBits.fromHash = function fromHash(hash) {\r\n return new LongBits(\r\n ( charCodeAt.call(hash, 0)\r\n | charCodeAt.call(hash, 1) << 8\r\n | charCodeAt.call(hash, 2) << 16\r\n | charCodeAt.call(hash, 3) << 24) >>> 0\r\n ,\r\n ( charCodeAt.call(hash, 4)\r\n | charCodeAt.call(hash, 5) << 8\r\n | charCodeAt.call(hash, 6) << 16\r\n | charCodeAt.call(hash, 7) << 24) >>> 0\r\n );\r\n};\r\n\r\n/**\r\n * Converts this long bits to a 8 characters long hash.\r\n * @returns {string} Hash\r\n */\r\nLongBitsPrototype.toHash = function toHash() {\r\n return String.fromCharCode(\r\n this.lo & 255,\r\n this.lo >>> 8 & 255,\r\n this.lo >>> 16 & 255,\r\n this.lo >>> 24 & 255,\r\n this.hi & 255,\r\n this.hi >>> 8 & 255,\r\n this.hi >>> 16 & 255,\r\n this.hi >>> 24 & 255\r\n );\r\n};\r\n\r\n/**\r\n * Zig-zag encodes this long bits.\r\n * @returns {util.LongBits} `this`\r\n */\r\nLongBitsPrototype.zzEncode = function zzEncode() {\r\n var mask = this.hi >> 31;\r\n this.hi = ((this.hi << 1 | this.lo >>> 31) ^ mask) >>> 0;\r\n this.lo = ( this.lo << 1 ^ mask) >>> 0;\r\n return this;\r\n};\r\n\r\n/**\r\n * Zig-zag decodes this long bits.\r\n * @returns {util.LongBits} `this`\r\n */\r\nLongBitsPrototype.zzDecode = function zzDecode() {\r\n var mask = -(this.lo & 1);\r\n this.lo = ((this.lo >>> 1 | this.hi << 31) ^ mask) >>> 0;\r\n this.hi = ( this.hi >>> 1 ^ mask) >>> 0;\r\n return this;\r\n};\r\n\r\n/**\r\n * Calculates the length of this longbits when encoded as a varint.\r\n * @returns {number} Length\r\n */\r\nLongBitsPrototype.length = function length() {\r\n var part0 = this.lo,\r\n part1 = (this.lo >>> 28 | this.hi << 4) >>> 0,\r\n part2 = this.hi >>> 24;\r\n if (part2 === 0) {\r\n if (part1 === 0)\r\n return part0 < 1 << 14\r\n ? part0 < 1 << 7 ? 1 : 2\r\n : part0 < 1 << 21 ? 3 : 4;\r\n return part1 < 1 << 14\r\n ? part1 < 1 << 7 ? 5 : 6\r\n : part1 < 1 << 21 ? 7 : 8;\r\n }\r\n return part2 < 1 << 7 ? 9 : 10;\r\n};\r\n","\"use strict\";\r\nmodule.exports = Verifier;\r\n\r\nvar Enum = require(5),\r\n Type = require(19),\r\n util = require(21);\r\n\r\n/**\r\n * Constructs a new verifier for the specified message type.\r\n * @classdesc Runtime message verifier using code generation on top of reflection.\r\n * @constructor\r\n * @param {Type} type Message type\r\n */\r\nfunction Verifier(type) {\r\n\r\n /**\r\n * Message type.\r\n * @type {Type}\r\n */\r\n this.type = type;\r\n}\r\n\r\n/** @alias Verifier.prototype */\r\nvar VerifierPrototype = Verifier.prototype;\r\n\r\n// This is here to mimic Type so that fallback functions work without having to bind()\r\nObject.defineProperties(VerifierPrototype, {\r\n\r\n /**\r\n * Fields of this verifier's message type as an array for iteration.\r\n * @name Verifier#fieldsArray\r\n * @type {Field[]}\r\n * @readonly\r\n */\r\n fieldsArray: {\r\n get: VerifierPrototype.getFieldsArray = function getFieldsArray() {\r\n return this.type.getFieldsArray();\r\n }\r\n },\r\n\r\n /**\r\n * Full name of this verifier's message type.\r\n * @name Verifier#fullName\r\n * @type {string}\r\n * @readonly\r\n */\r\n fullName: {\r\n get: VerifierPrototype.getFullName = function getFullName() {\r\n return this.type.getFullName();\r\n }\r\n }\r\n});\r\n\r\n/**\r\n * Verifies a runtime message of this verifier's message type.\r\n * @param {Prototype|Object} message Runtime message or plain object to verify\r\n * @returns {?string} `null` if valid, otherwise the reason why it is not\r\n */\r\nVerifierPrototype.verify = function verify_fallback(message) {\r\n var fields = this.getFieldsArray(),\r\n i = 0;\r\n while (i < fields.length) {\r\n var field = fields[i++].resolve(),\r\n value = message[field.name];\r\n\r\n if (value === undefined) {\r\n if (field.required)\r\n return \"missing required field \" + field.name + \" in \" + this.getFullName();\r\n\r\n } else if (field.resolvedType instanceof Enum && field.resolvedType.getValuesById()[value] === undefined) {\r\n return \"invalid enum value \" + field.name + \" = \" + value + \" in \" + this.getFullName();\r\n\r\n } else if (field.resolvedType instanceof Type) {\r\n if (!value && field.required)\r\n return \"missing required field \" + field.name + \" in \" + this.getFullName();\r\n var reason;\r\n if ((reason = field.resolvedType.verify(value)) !== null)\r\n return reason;\r\n }\r\n }\r\n return null;\r\n};\r\n\r\n/**\r\n * Generates a verifier specific to this verifier's message type.\r\n * @returns {function} Verifier function with an identical signature to {@link Verifier#verify}\r\n */\r\nVerifierPrototype.generate = function generate() {\r\n /* eslint-disable no-unexpected-multiline */\r\n var fields = this.type.getFieldsArray();\r\n var gen = util.codegen(\"m\");\r\n var hasReasonVar = false;\r\n\r\n for (var i = 0; i < fields.length; ++i) {\r\n var field = fields[i].resolve(),\r\n prop = util.safeProp(field.name);\r\n if (field.required) { gen\r\n\r\n (\"if(m%s===undefined)\", prop)\r\n (\"return 'missing required field %s in %s'\", field.name, this.type.getFullName());\r\n\r\n } else if (field.resolvedType instanceof Enum) {\r\n var values = util.toArray(field.resolvedType.values); gen\r\n\r\n (\"switch(m%s){\", prop)\r\n (\"default:\")\r\n (\"return 'invalid enum value %s = '+m%s+' in %s'\", field.name, prop, this.type.getFullName());\r\n\r\n for (var j = 0, l = values.length; j < l; ++j) gen\r\n (\"case %d:\", values[j]); gen\r\n (\"}\");\r\n\r\n } else if (field.resolvedType instanceof Type) {\r\n if (field.required) gen\r\n\r\n (\"if(!m%s)\", prop)\r\n (\"return 'missing required field %s in %s'\", field.name, this.type.getFullName());\r\n\r\n if (!hasReasonVar) { gen(\"var r\"); hasReasonVar = true; } gen\r\n\r\n (\"if((r=types[%d].verify(m%s))!==null)\", i, prop)\r\n (\"return r\");\r\n }\r\n }\r\n return gen\r\n (\"return null\")\r\n\r\n .eof(this.type.getFullName() + \"$verify\", {\r\n types : fields.map(function(fld) { return fld.resolvedType; })\r\n });\r\n /* eslint-enable no-unexpected-multiline */\r\n};\r\n","\"use strict\";\r\nmodule.exports = Writer;\r\n\r\nWriter.BufferWriter = BufferWriter;\r\n\r\nvar util = require(21),\r\n ieee754 = require(1);\r\nvar LongBits = util.LongBits;\r\n\r\n/**\r\n * Constructs a new writer operation.\r\n * @classdesc Scheduled writer operation.\r\n * @memberof Writer\r\n * @constructor\r\n * @param {function(number[], number, *)} fn Function to call\r\n * @param {*} val Value to write\r\n * @param {number} len Value byte length\r\n * @private\r\n * @ignore\r\n */\r\nfunction Op(fn, val, len) {\r\n\r\n /**\r\n * Function to call.\r\n * @type {function(number[], number, *)}\r\n */\r\n this.fn = fn;\r\n\r\n /**\r\n * Value to write.\r\n * @type {*}\r\n */\r\n this.val = val;\r\n\r\n /**\r\n * Value byte length.\r\n * @type {number}\r\n */\r\n this.len = len;\r\n\r\n /**\r\n * Next operation.\r\n * @type {?Writer.Op}\r\n */\r\n this.next = null;\r\n}\r\n\r\nWriter.Op = Op;\r\n\r\nfunction noop() {} // eslint-disable-line no-empty-function\r\n\r\n/**\r\n * Constructs a new writer state.\r\n * @classdesc Copied writer state.\r\n * @memberof Writer\r\n * @constructor\r\n * @param {Writer} writer Writer to copy state from\r\n * @private\r\n * @ignore\r\n */\r\nfunction State(writer) {\r\n\r\n /**\r\n * Current head.\r\n * @type {Writer.Op}\r\n */\r\n this.head = writer.head;\r\n\r\n /**\r\n * Current tail.\r\n * @type {Writer.Op}\r\n */\r\n this.tail = writer.tail;\r\n\r\n /**\r\n * Current buffer length.\r\n * @type {number}\r\n */\r\n this.len = writer.len;\r\n}\r\n\r\nWriter.State = State;\r\n\r\nvar ArrayImpl = typeof Uint8Array !== 'undefined' ? Uint8Array : Array;\r\n\r\n/**\r\n * Constructs a new writer.\r\n * When called as a function, returns an appropriate writer for the current environment.\r\n * @classdesc Wire format writer using `Uint8Array` if available, otherwise `Array`.\r\n * @exports Writer\r\n * @constructor\r\n */\r\nfunction Writer() {\r\n if (!(this instanceof Writer))\r\n return util.Buffer && new BufferWriter() || new Writer();\r\n\r\n /**\r\n * Current length.\r\n * @type {number}\r\n */\r\n this.len = 0;\r\n\r\n /**\r\n * Operations head.\r\n * @type {Object}\r\n */\r\n this.head = new Op(noop, 0, 0);\r\n\r\n /**\r\n * Operations tail\r\n * @type {Object}\r\n */\r\n this.tail = this.head;\r\n\r\n /**\r\n * State stack.\r\n * @type {Object[]}\r\n */\r\n this.stack = [];\r\n\r\n // When a value is written, the writer calculates its byte length and puts it into a linked\r\n // list of operations to perform when finish() is called. This both allows us to allocate\r\n // buffers of the exact required size and reduces the amount of work we have to do compared\r\n // to first calculating over objects and then encoding over objects. In our case, the encoding\r\n // part is just a linked list walk calling linked operations with already prepared values.\r\n}\r\n\r\n/** @alias Writer.prototype */\r\nvar WriterPrototype = Writer.prototype;\r\n\r\n/**\r\n * Pushes a new operation to the queue.\r\n * @param {function(number[], number, *)} fn Function to call\r\n * @param {number} len Value byte length\r\n * @param {number} val Value to write\r\n * @returns {Writer} `this`\r\n */\r\nWriterPrototype.push = function push(fn, len, val) {\r\n var op = new Op(fn, val, len);\r\n this.tail.next = op;\r\n this.tail = op;\r\n this.len += len;\r\n return this;\r\n};\r\n\r\nfunction writeByte(buf, pos, val) {\r\n buf[pos] = val & 255;\r\n}\r\n\r\n/**\r\n * Writes a tag.\r\n * @param {number} id Field id\r\n * @param {number} wireType Wire type\r\n * @returns {Writer} `this`\r\n */\r\nWriterPrototype.tag = function write_tag(id, wireType) {\r\n return this.push(writeByte, 1, id << 3 | wireType & 7);\r\n};\r\n\r\nfunction writeVarint32(buf, pos, val) {\r\n while (val > 127) {\r\n buf[pos++] = val & 127 | 128;\r\n val >>>= 7;\r\n }\r\n buf[pos] = val;\r\n}\r\n\r\n/**\r\n * Writes an unsigned 32 bit value as a varint.\r\n * @param {number} value Value to write\r\n * @returns {Writer} `this`\r\n */\r\nWriterPrototype.uint32 = function write_uint32(value) {\r\n value >>>= 0;\r\n return this.push(writeVarint32,\r\n value < 128 ? 1\r\n : value < 16384 ? 2\r\n : value < 2097152 ? 3\r\n : value < 268435456 ? 4\r\n : 5\r\n , value);\r\n};\r\n\r\n/**\r\n * Writes a signed 32 bit value as a varint.\r\n * @function\r\n * @param {number} value Value to write\r\n * @returns {Writer} `this`\r\n */\r\nWriterPrototype.int32 = function write_int32(value) {\r\n return value < 0\r\n ? this.push(writeVarint64, 10, LongBits.fromNumber(value)) // 10 bytes per spec\r\n : this.uint32(value);\r\n};\r\n\r\n/**\r\n * Writes a 32 bit value as a varint, zig-zag encoded.\r\n * @param {number} value Value to write\r\n * @returns {Writer} `this`\r\n */\r\nWriterPrototype.sint32 = function write_sint32(value) {\r\n return this.uint32(value << 1 ^ value >> 31);\r\n};\r\n\r\nfunction writeVarint64(buf, pos, val) {\r\n // tends to deoptimize. stays optimized when using bits directly.\r\n while (val.hi || val.lo > 127) {\r\n buf[pos++] = val.lo & 127 | 128;\r\n val.lo = (val.lo >>> 7 | val.hi << 25) >>> 0;\r\n val.hi >>>= 7;\r\n }\r\n buf[pos++] = val.lo;\r\n}\r\n\r\n/**\r\n * Writes an unsigned 64 bit value as a varint.\r\n * @param {Long|number} value Value to write\r\n * @returns {Writer} `this`\r\n */\r\nWriterPrototype.uint64 = function write_uint64(value) {\r\n var bits;\r\n if (typeof value === 'number')\r\n bits = value ? LongBits.fromNumber(value) : LongBits.zero;\r\n else if (value.low || value.high)\r\n bits = new LongBits(value.low >>> 0, value.high >>> 0);\r\n else\r\n bits = LongBits.zero;\r\n return this.push(writeVarint64, bits.length(), bits);\r\n};\r\n\r\n/**\r\n * Writes a signed 64 bit value as a varint.\r\n * @function\r\n * @param {Long|number} value Value to write\r\n * @returns {Writer} `this`\r\n */\r\nWriterPrototype.int64 = WriterPrototype.uint64;\r\n\r\n/**\r\n * Writes a signed 64 bit value as a varint, zig-zag encoded.\r\n * @param {Long|number} value Value to write\r\n * @returns {Writer} `this`\r\n */\r\nWriterPrototype.sint64 = function sint64(value) {\r\n var bits = LongBits.from(value).zzEncode();\r\n return this.push(writeVarint64, bits.length(), bits);\r\n};\r\n\r\n/**\r\n * Writes a boolish value as a varint.\r\n * @param {boolean} value Value to write\r\n * @returns {Writer} `this`\r\n */\r\nWriterPrototype.bool = function write_bool(value) {\r\n return this.push(writeByte, 1, value ? 1 : 0);\r\n};\r\n\r\nfunction writeFixed32(buf, pos, val) {\r\n buf[pos++] = val & 255;\r\n buf[pos++] = val >>> 8 & 255;\r\n buf[pos++] = val >>> 16 & 255;\r\n buf[pos ] = val >>> 24 & 255;\r\n}\r\n\r\n/**\r\n * Writes a 32 bit value as fixed 32 bits.\r\n * @param {number} value Value to write\r\n * @returns {Writer} `this`\r\n */\r\nWriterPrototype.fixed32 = function write_fixed32(value) {\r\n return this.push(writeFixed32, 4, value >>> 0);\r\n};\r\n\r\n/**\r\n * Writes a 32 bit value as fixed 32 bits, zig-zag encoded.\r\n * @param {number} value Value to write\r\n * @returns {Writer} `this`\r\n */\r\nWriterPrototype.sfixed32 = function write_sfixed32(value) {\r\n return this.push(writeFixed32, 4, value << 1 ^ value >> 31);\r\n};\r\n\r\nfunction writeFixed64(buf, pos, val) {\r\n buf[pos++] = val.lo & 255;\r\n buf[pos++] = val.lo >>> 8 & 255;\r\n buf[pos++] = val.lo >>> 16 & 255;\r\n buf[pos++] = val.lo >>> 24 ;\r\n buf[pos++] = val.hi & 255;\r\n buf[pos++] = val.hi >>> 8 & 255;\r\n buf[pos++] = val.hi >>> 16 & 255;\r\n buf[pos ] = val.hi >>> 24 ;\r\n}\r\n\r\n/**\r\n * Writes a 64 bit value as fixed 64 bits.\r\n * @param {Long|number} value Value to write\r\n * @returns {Writer} `this`\r\n */\r\nWriterPrototype.fixed64 = function write_fixed64(value) {\r\n return this.push(writeFixed64, 8, LongBits.from(value));\r\n};\r\n\r\n/**\r\n * Writes a 64 bit value as fixed 64 bits, zig-zag encoded.\r\n * @param {Long|number} value Value to write\r\n * @returns {Writer} `this`\r\n */\r\nWriterPrototype.sfixed64 = function write_sfixed64(value) {\r\n return this.push(writeFixed64, 8, LongBits.from(value).zzEncode());\r\n};\r\n\r\nfunction writeFloat(buf, pos, val) {\r\n ieee754.write(buf, val, pos, false, 23, 4);\r\n}\r\n\r\n/**\r\n * Writes a float (32 bit).\r\n * @function\r\n * @param {number} value Value to write\r\n * @returns {Writer} `this`\r\n */\r\nWriterPrototype.float = function write_float(value) {\r\n return this.push(writeFloat, 4, value);\r\n};\r\n\r\nfunction writeDouble(buf, pos, val) {\r\n ieee754.write(buf, val, pos, false, 52, 8);\r\n}\r\n\r\n/**\r\n * Writes a double (64 bit float).\r\n * @function\r\n * @param {number} value Value to write\r\n * @returns {Writer} `this`\r\n */\r\nWriterPrototype.double = function write_double(value) {\r\n return this.push(writeDouble, 8, value);\r\n};\r\n\r\nvar writeBytes = ArrayImpl.prototype.set\r\n ? function writeBytes_set(buf, pos, val) { buf.set(val, pos); }\r\n : function writeBytes_for(buf, pos, val) { for (var i = 0; i < val.length; ++i) buf[pos + i] = val[i]; };\r\n\r\n/**\r\n * Writes a sequence of bytes.\r\n * @param {number[]} value Value to write\r\n * @returns {Writer} `this`\r\n */\r\nWriterPrototype.bytes = function write_bytes(value) {\r\n var len = value.length >>> 0;\r\n return len\r\n ? this.uint32(len).push(writeBytes, len, value)\r\n : this.push(writeByte, 1, 0);\r\n};\r\n\r\nfunction writeString(buf, pos, val) {\r\n for (var i = 0; i < val.length; ++i) {\r\n var c1 = val.charCodeAt(i), c2;\r\n if (c1 < 128) {\r\n buf[pos++] = c1;\r\n } else if (c1 < 2048) {\r\n buf[pos++] = c1 >> 6 | 192;\r\n buf[pos++] = c1 & 63 | 128;\r\n } else if ((c1 & 0xFC00) === 0xD800 && i + 1 < val.length && ((c2 = val.charCodeAt(i + 1)) & 0xFC00) === 0xDC00) {\r\n c1 = 0x10000 + ((c1 & 0x03FF) << 10) + (c2 & 0x03FF);\r\n ++i;\r\n buf[pos++] = c1 >> 18 | 240;\r\n buf[pos++] = c1 >> 12 & 63 | 128;\r\n buf[pos++] = c1 >> 6 & 63 | 128;\r\n buf[pos++] = c1 & 63 | 128;\r\n } else {\r\n buf[pos++] = c1 >> 12 | 224;\r\n buf[pos++] = c1 >> 6 & 63 | 128;\r\n buf[pos++] = c1 & 63 | 128;\r\n }\r\n }\r\n}\r\n\r\nfunction byteLength(val) {\r\n var strlen = val.length >>> 0;\r\n if (strlen) {\r\n var len = 0;\r\n for (var i = 0, c1; i < strlen; ++i) {\r\n c1 = val.charCodeAt(i);\r\n if (c1 < 128)\r\n len += 1;\r\n else if (c1 < 2048)\r\n len += 2;\r\n else if ((c1 & 0xFC00) === 0xD800 && i + 1 < strlen && (val.charCodeAt(i + 1) & 0xFC00) === 0xDC00) {\r\n ++i;\r\n len += 4;\r\n } else\r\n len += 3;\r\n }\r\n return len;\r\n }\r\n return 0;\r\n}\r\n\r\n/**\r\n * Writes a string.\r\n * @param {string} value Value to write\r\n * @returns {Writer} `this`\r\n */\r\nWriterPrototype.string = function write_string(value) {\r\n var len = byteLength(value);\r\n return len\r\n ? this.uint32(len).push(writeString, len, value)\r\n : this.push(writeByte, 1, 0);\r\n};\r\n\r\n/**\r\n * Forks this writer's state by pushing it to a stack.\r\n * Calling {@link Writer#ldelim}, {@link Writer#reset} or {@link Writer#finish} resets the writer to the previous state.\r\n * @returns {Writer} `this`\r\n */\r\nWriterPrototype.fork = function fork() {\r\n this.stack.push(new State(this));\r\n this.head = this.tail = new Op(noop, 0, 0);\r\n this.len = 0;\r\n return this;\r\n};\r\n\r\n/**\r\n * Resets this instance to the last state.\r\n * @returns {Writer} `this`\r\n */\r\nWriterPrototype.reset = function reset() {\r\n if (this.stack.length) {\r\n var state = this.stack.pop();\r\n this.head = state.head;\r\n this.tail = state.tail;\r\n this.len = state.len;\r\n } else {\r\n this.head = this.tail = new Op(noop, 0, 0);\r\n this.len = 0;\r\n }\r\n return this;\r\n};\r\n\r\n/**\r\n * Resets to the last state and appends the fork state's current write length as a varint followed by its operations.\r\n * @param {number} [id] Id with wire type 2 to prepend where applicable\r\n * @returns {Writer} `this`\r\n */\r\nWriterPrototype.ldelim = function ldelim(id) {\r\n var head = this.head,\r\n tail = this.tail,\r\n len = this.len;\r\n this.reset();\r\n if (id !== undefined)\r\n this.tag(id, 2);\r\n this.uint32(len);\r\n this.tail.next = head.next; // skip noop\r\n this.tail = tail;\r\n this.len += len;\r\n return this;\r\n};\r\n\r\n/**\r\n * Finishes the current sequence of write operations and frees all resources.\r\n * @returns {number[]} Finished buffer\r\n */\r\nWriterPrototype.finish = function finish() {\r\n var head = this.head.next, // skip noop\r\n buf = new ArrayImpl(this.len),\r\n pos = 0;\r\n this.reset();\r\n while (head) {\r\n head.fn(buf, pos, head.val);\r\n pos += head.len;\r\n head = head.next;\r\n }\r\n return buf;\r\n};\r\n\r\n/**\r\n * Constructs a new buffer writer.\r\n * @classdesc Wire format writer using node buffers.\r\n * @exports BufferWriter\r\n * @extends Writer\r\n * @constructor\r\n */\r\nfunction BufferWriter() {\r\n Writer.call(this);\r\n}\r\n\r\n/** @alias BufferWriter.prototype */\r\nvar BufferWriterPrototype = BufferWriter.prototype = Object.create(Writer.prototype);\r\nBufferWriterPrototype.constructor = BufferWriter;\r\n\r\nfunction writeFloatBuffer(buf, pos, val) {\r\n buf.writeFloatLE(val, pos, true);\r\n}\r\n\r\n/**\r\n * Writes a float (32 bit) using node buffers.\r\n * @param {number} value Value to write\r\n * @returns {BufferWriter} `this`\r\n */\r\nBufferWriterPrototype.float = function write_float_buffer(value) {\r\n return this.push(writeFloatBuffer, 4, value);\r\n};\r\n\r\nfunction writeDoubleBuffer(buf, pos, val) {\r\n buf.writeDoubleLE(val, pos, true);\r\n}\r\n\r\n/**\r\n * Writes a double (64 bit float) using node buffers.\r\n * @param {number} value Value to write\r\n * @returns {BufferWriter} `this`\r\n */\r\nBufferWriterPrototype.double = function write_double_buffer(value) {\r\n return this.push(writeDoubleBuffer, 8, value);\r\n};\r\n\r\nfunction writeBytesBuffer(buf, pos, val) {\r\n if (val.length)\r\n val.copy(buf, pos, 0, val.length);\r\n}\r\n\r\n/**\r\n * Writes a sequence of bytes using node buffers.\r\n * @param {Buffer} value Value to write\r\n * @returns {BufferWriter} `this`\r\n */\r\nBufferWriterPrototype.bytes = function write_bytes_buffer(value) {\r\n var len = value.length >>> 0;\r\n return len\r\n ? this.uint32(len).push(writeBytesBuffer, len, value)\r\n : this.push(writeByte, 1, 0);\r\n};\r\n\r\nfunction writeStringBuffer(buf, pos, val) {\r\n buf.write(val, pos);\r\n}\r\n\r\n/**\r\n * Writes a string using node buffers.\r\n * @param {string} value Value to write\r\n * @returns {BufferWriter} `this`\r\n */\r\nBufferWriterPrototype.string = function write_string_buffer(value) {\r\n var len = byteLength(value);\r\n return len\r\n ? this.uint32(len).push(writeStringBuffer, len, value)\r\n : this.push(writeByte, 1, 0);\r\n};\r\n\r\n/**\r\n * Finishes the current sequence of write operations using node buffers and frees all resources.\r\n * @returns {Buffer} Finished buffer\r\n */\r\nBufferWriterPrototype.finish = function finish_buffer() {\r\n var head = this.head.next, // skip noop\r\n buf = util.Buffer.allocUnsafe && util.Buffer.allocUnsafe(this.len) || new util.Buffer(this.len),\r\n pos = 0;\r\n this.reset();\r\n while (head) {\r\n head.fn(buf, pos, head.val);\r\n pos += head.len;\r\n head = head.next;\r\n }\r\n return buf;\r\n};\r\n","\"use strict\";\r\nvar protobuf = global.protobuf = exports;\r\n\r\nvar util = require(\"./util\");\r\n\r\n/**\r\n * Loads one or multiple .proto or preprocessed .json files into a common root namespace.\r\n * @param {string|string[]} filename One or multiple files to load\r\n * @param {Root} [root] Root namespace, defaults to create a new one if omitted.\r\n * @param {function(?Error, Root=)} [callback] Callback function\r\n * @returns {Promise|Object} A promise if callback has been omitted, otherwise the protobuf namespace\r\n * @throws {TypeError} If arguments are invalid\r\n */\r\nfunction load(filename, root, callback) {\r\n if (typeof root === 'function') {\r\n callback = root;\r\n root = new protobuf.Root();\r\n } else if (!root)\r\n root = new protobuf.Root();\r\n return root.load(filename, callback) || protobuf;\r\n}\r\n\r\nprotobuf.load = load;\r\n\r\n// Parser\r\nprotobuf.tokenize = require(\"./tokenize\");\r\nprotobuf.parse = require(\"./parse\");\r\n\r\n// Serialization\r\nprotobuf.Writer = require(\"./writer\");\r\nprotobuf.BufferWriter = protobuf.Writer.BufferWriter;\r\nprotobuf.Reader = require(\"./reader\");\r\nprotobuf.BufferReader = protobuf.Reader.BufferReader;\r\nprotobuf.Encoder = require(\"./encoder\");\r\nprotobuf.Decoder = require(\"./decoder\");\r\n\r\n// Reflection\r\nprotobuf.ReflectionObject = require(\"./object\");\r\nprotobuf.Namespace = require(\"./namespace\");\r\nprotobuf.Root = require(\"./root\");\r\nprotobuf.Enum = require(\"./enum\");\r\nprotobuf.Type = require(\"./type\");\r\nprotobuf.Field = require(\"./field\");\r\nprotobuf.OneOf = require(\"./oneof\");\r\nprotobuf.MapField = require(\"./mapfield\");\r\nprotobuf.Service = require(\"./service\");\r\nprotobuf.Method = require(\"./method\");\r\n\r\n// Runtime\r\nprotobuf.Prototype = require(\"./prototype\");\r\nprotobuf.inherits = require(\"./inherits\");\r\n\r\n// Utility\r\nprotobuf.types = require(\"./types\");\r\nprotobuf.common = require(\"./common\");\r\nprotobuf.util = util;\r\n"],"sourceRoot":"."} \ No newline at end of file +{"version":3,"sources":["node_modules/browser-pack/_prelude.js","lib/ieee754.js","src/common.js","src/decoder.js","src/encoder.js","src/enum.js","src/field.js","src/inherits.js","src/mapfield.js","src/method.js","src/namespace.js","src/object.js","src/oneof.js","src/parse.js","src/prototype.js","src/reader.js","src/root.js","src/service.js","src/tokenize.js","src/type.js","src/types.js","src/util.js","src/util/codegen.js","src/util/longbits.js","src/verifier.js","src/writer.js","src/index.js"],"names":[],"mappings":";;;;;;AAAA;ACAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACtHA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACnIA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC1NA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC5NA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACpIA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC1QA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AChMA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AChGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACvIA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC7QA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACrMA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACjJA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC9iBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACnEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACjgBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC5OA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC5IA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC7MA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACnYA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;ACjIA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;ACtSA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACrIA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACtLA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACpIA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AC7iBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA","file":"protobuf.js","sourcesContent":["(function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require==\"function\"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error(\"Cannot find module '\"+o+\"'\");throw f.code=\"MODULE_NOT_FOUND\",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require==\"function\"&&require;for(var o=0;o> 1,\r\n nBits = -7,\r\n i = isBE ? 0 : (nBytes - 1),\r\n d = isBE ? 1 : -1,\r\n s = buffer[offset + i];\r\n\r\n i += d;\r\n\r\n e = s & ((1 << (-nBits)) - 1);\r\n s >>= (-nBits);\r\n nBits += eLen;\r\n for (; nBits > 0; e = e * 256 + buffer[offset + i], i += d, nBits -= 8);\r\n\r\n m = e & ((1 << (-nBits)) - 1);\r\n e >>= (-nBits);\r\n nBits += mLen;\r\n for (; nBits > 0; m = m * 256 + buffer[offset + i], i += d, nBits -= 8);\r\n\r\n if (e === 0) {\r\n e = 1 - eBias;\r\n } else if (e === eMax) {\r\n return m ? NaN : ((s ? -1 : 1) * Infinity);\r\n } else {\r\n m = m + Math.pow(2, mLen);\r\n e = e - eBias;\r\n }\r\n return (s ? -1 : 1) * m * Math.pow(2, e - mLen);\r\n};\r\n\r\nexports.write = function writeIEEE754(buffer, value, offset, isBE, mLen, nBytes) {\r\n var e, m, c,\r\n eLen = nBytes * 8 - mLen - 1,\r\n eMax = (1 << eLen) - 1,\r\n eBias = eMax >> 1,\r\n rt = (mLen === 23 ? Math.pow(2, -24) - Math.pow(2, -77) : 0),\r\n i = isBE ? (nBytes - 1) : 0,\r\n d = isBE ? -1 : 1,\r\n s = value < 0 || (value === 0 && 1 / value < 0) ? 1 : 0;\r\n\r\n value = Math.abs(value);\r\n\r\n if (isNaN(value) || value === Infinity) {\r\n m = isNaN(value) ? 1 : 0;\r\n e = eMax;\r\n } else {\r\n e = Math.floor(Math.log(value) / Math.LN2);\r\n if (value * (c = Math.pow(2, -e)) < 1) {\r\n e--;\r\n c *= 2;\r\n }\r\n if (e + eBias >= 1) {\r\n value += rt / c;\r\n } else {\r\n value += rt * Math.pow(2, 1 - eBias);\r\n }\r\n if (value * c >= 2) {\r\n e++;\r\n c /= 2;\r\n }\r\n\r\n if (e + eBias >= eMax) {\r\n m = 0;\r\n e = eMax;\r\n } else if (e + eBias >= 1) {\r\n m = (value * c - 1) * Math.pow(2, mLen);\r\n e = e + eBias;\r\n } else {\r\n m = value * Math.pow(2, eBias - 1) * Math.pow(2, mLen);\r\n e = 0;\r\n }\r\n }\r\n\r\n for (; mLen >= 8; buffer[offset + i] = m & 0xff, i += d, m /= 256, mLen -= 8);\r\n\r\n e = (e << mLen) | m;\r\n eLen += mLen;\r\n for (; eLen > 0; buffer[offset + i] = e & 0xff, i += d, e /= 256, eLen -= 8);\r\n\r\n buffer[offset + i - d] |= s * 128;\r\n};\r\n","\"use strict\";\r\n\r\nmodule.exports = common;\r\n\r\n/**\r\n * Provides common type definitions.\r\n * Can also be used to provide additional google types or your own custom types.\r\n * @param {string} name Short name as in `google/protobuf/[name].proto` or full file name\r\n * @param {Object} json JSON definition within `google.protobuf` if a short name, otherwise the file's root definition\r\n * @returns {undefined}\r\n * @property {Object} google/protobuf/any.proto Any\r\n * @property {Object} google/protobuf/duration.proto Duration\r\n * @property {Object} google/protobuf/empty.proto Empty\r\n * @property {Object} google/protobuf/struct.proto Struct, Value, NullValue and ListValue\r\n * @property {Object} google/protobuf/timestamp.proto Timestamp\r\n */\r\nfunction common(name, json) {\r\n if (!/\\/|\\./.test(name)) {\r\n name = \"google/protobuf/\" + name + \".proto\";\r\n json = { nested: { google: { nested: { protobuf: { nested: json } } } } };\r\n }\r\n common[name] = json;\r\n}\r\n\r\n// Not provided because of limited use (feel free to discuss or to provide yourself):\r\n// - google/protobuf/descriptor.proto\r\n// - google/protobuf/field_mask.proto\r\n// - google/protobuf/source_context.proto\r\n// - google/protobuf/type.proto\r\n// - google/protobuf/wrappers.proto\r\n\r\ncommon(\"any\", {\r\n Any: {\r\n fields: {\r\n type_url: {\r\n type: \"string\",\r\n id: 1\r\n },\r\n value: {\r\n type: \"bytes\",\r\n id: 2\r\n }\r\n }\r\n }\r\n});\r\n\r\nvar timeType;\r\n\r\ncommon(\"duration\", {\r\n Duration: timeType = {\r\n fields: {\r\n seconds: {\r\n type: \"int64\",\r\n id: 1\r\n },\r\n nanos: {\r\n type: \"int32\",\r\n id: 2\r\n }\r\n }\r\n }\r\n});\r\n\r\ncommon(\"timestamp\", {\r\n Timestamp: timeType\r\n});\r\n\r\ncommon(\"empty\", {\r\n Empty: {\r\n fields: {}\r\n }\r\n});\r\n\r\ncommon(\"struct\", {\r\n Struct: {\r\n fields: {\r\n fields: {\r\n keyType: \"string\",\r\n type: \"Value\",\r\n id: 1\r\n }\r\n }\r\n },\r\n Value: {\r\n oneofs: {\r\n kind: {\r\n oneof: [ \"nullValue\", \"numberValue\", \"stringValue\", \"boolValue\", \"structValue\", \"listValue\" ]\r\n }\r\n },\r\n fields: {\r\n nullValue: {\r\n type: \"NullValue\",\r\n id: 1\r\n },\r\n numberValue: {\r\n type: \"double\",\r\n id: 2\r\n },\r\n stringValue: {\r\n type: \"string\",\r\n id: 3\r\n },\r\n boolValue: {\r\n type: \"bool\",\r\n id: 4\r\n },\r\n structValue: {\r\n type: \"Struct\",\r\n id: 5\r\n },\r\n listValue: {\r\n type: \"ListValue\",\r\n id: 6\r\n }\r\n }\r\n },\r\n NullValue: {\r\n values: {\r\n NULL_VALUE: 0\r\n }\r\n },\r\n ListValue: {\r\n fields: {\r\n values: {\r\n rule: \"repeated\",\r\n type: \"Value\",\r\n id: 1\r\n }\r\n }\r\n }\r\n});\r\n","\"use strict\";\r\nmodule.exports = Decoder;\r\n\r\nvar Enum = require(5),\r\n Reader = require(15),\r\n types = require(20),\r\n util = require(21);\r\n\r\n/**\r\n * Constructs a new decoder for the specified message type.\r\n * @classdesc Wire format decoder using code generation on top of reflection.\r\n * @constructor\r\n * @param {Type} type Message type\r\n */\r\nfunction Decoder(type) {\r\n\r\n /**\r\n * Message type.\r\n * @type {Type}\r\n */\r\n this.type = type;\r\n}\r\n\r\n/** @alias Decoder.prototype */\r\nvar DecoderPrototype = Decoder.prototype;\r\n\r\n// This is here to mimic Type so that fallback functions work without having to bind()\r\nObject.defineProperties(DecoderPrototype, {\r\n\r\n /**\r\n * Fields of this decoder's message type by id for lookups.\r\n * @name Decoder#fieldsById\r\n * @type {Object.}\r\n * @readonly\r\n */\r\n fieldsById: {\r\n get: DecoderPrototype.getFieldsById = function getFieldsById() {\r\n return this.type.getFieldsById();\r\n }\r\n },\r\n\r\n /**\r\n * With this decoder's message type registered constructor, if any registered, otherwise a generic constructor.\r\n * @name Decoder#ctor\r\n * @type {Prototype}\r\n */\r\n ctor: {\r\n get: DecoderPrototype.getCtor = function getCtor() {\r\n return this.type.getCtor();\r\n }\r\n }\r\n});\r\n\r\n/**\r\n * Decodes a message of this decoder's message type.\r\n * @param {Reader} reader Reader to decode from\r\n * @param {number} [length] Length of the message, if known beforehand\r\n * @returns {Prototype} Populated runtime message\r\n */\r\nDecoderPrototype.decode = function decode_fallback(reader, length) { // codegen reference and fallback\r\n /* eslint-disable no-invalid-this, block-scoped-var, no-redeclare */\r\n var fields = this.getFieldsById(),\r\n reader = reader instanceof Reader ? reader : Reader(reader),\r\n limit = length === undefined ? reader.len : reader.pos + length,\r\n message = new (this.getCtor())();\r\n while (reader.pos < limit) {\r\n var tag = reader.tag(),\r\n field = fields[tag.id].resolve(),\r\n type = field.resolvedType instanceof Enum ? \"uint32\" : field.type;\r\n \r\n // Known fields\r\n if (field) {\r\n\r\n // Map fields\r\n if (field.map) {\r\n var keyType = field.resolvedKeyType /* only valid is enum */ ? \"uint32\" : field.keyType,\r\n length = reader.uint32();\r\n var map = message[field.name] = {};\r\n if (length) {\r\n length += reader.pos;\r\n var ks = [], vs = [];\r\n while (reader.pos < length) {\r\n if (reader.tag().id === 1)\r\n ks[ks.length] = reader[keyType]();\r\n else if (types.basic[type] !== undefined)\r\n vs[vs.length] = reader[type]();\r\n else\r\n vs[vs.length] = field.resolvedType.decode(reader, reader.uint32());\r\n }\r\n for (var i = 0; i < ks.length; ++i)\r\n map[typeof ks[i] === 'object' ? util.longToHash(ks[i]) : ks[i]] = vs[i];\r\n }\r\n\r\n // Repeated fields\r\n } else if (field.repeated) {\r\n var values = message[field.name] || (message[field.name] = []);\r\n\r\n // Packed\r\n if (field.packed && types.packed[type] !== undefined && tag.wireType === 2) {\r\n var plimit = reader.uint32() + reader.pos;\r\n while (reader.pos < plimit)\r\n values[values.length] = reader[type]();\r\n\r\n // Non-packed\r\n } else if (types.basic[type] !== undefined)\r\n values[values.length] = reader[type]();\r\n else\r\n values[values.length] = field.resolvedType.decode(reader, reader.uint32());\r\n\r\n // Non-repeated\r\n } else if (types.basic[type] !== undefined)\r\n message[field.name] = reader[type]();\r\n else\r\n message[field.name] = field.resolvedType.decode(reader, reader.uint32());\r\n\r\n // Unknown fields\r\n } else\r\n reader.skipType(tag.wireType);\r\n }\r\n return message;\r\n /* eslint-enable no-invalid-this, block-scoped-var, no-redeclare */\r\n};\r\n\r\n/**\r\n * Generates a decoder specific to this decoder's message type.\r\n * @returns {function} Decoder function with an identical signature to {@link Decoder#decode}\r\n */\r\nDecoderPrototype.generate = function generate() {\r\n /* eslint-disable no-unexpected-multiline */\r\n var fields = this.type.getFieldsArray(); \r\n var gen = util.codegen(\"r\", \"l\")\r\n\r\n (\"r instanceof Reader||(r=Reader(r))\")\r\n (\"var c=l===undefined?r.len:r.pos+l,m=new (this.getCtor())()\")\r\n (\"while(r.pos} [values] Enum values as an object, by name\r\n * @param {Object} [options] Declared options\r\n */\r\nfunction Enum(name, values, options) {\r\n ReflectionObject.call(this, name, options);\r\n\r\n /**\r\n * Enum values by name.\r\n * @type {Object.}\r\n */\r\n this.values = values || {}; // toJSON, marker\r\n\r\n /**\r\n * Cached values by id.\r\n * @type {?Object.}\r\n * @private\r\n */\r\n this._valuesById = null;\r\n}\r\n\r\nObject.defineProperties(EnumPrototype, {\r\n\r\n /**\r\n * Enum values by id.\r\n * @name Enum#valuesById\r\n * @type {Object.}\r\n * @readonly\r\n */\r\n valuesById: {\r\n get: EnumPrototype.getValuesById = function getValuesById() {\r\n if (!this._valuesById) {\r\n this._valuesById = {};\r\n Object.keys(this.values).forEach(function(name) {\r\n var id = this.values[name];\r\n if (this._valuesById[id])\r\n throw Error(\"duplicate id \" + id + \" in \" + this);\r\n this._valuesById[id] = name;\r\n }, this);\r\n }\r\n return this._valuesById;\r\n }\r\n }\r\n});\r\n\r\nfunction clearCache(enm) {\r\n enm._valuesById = null;\r\n return enm;\r\n}\r\n\r\n/**\r\n * Tests if the specified JSON object describes an enum.\r\n * @param {*} json JSON object to test\r\n * @returns {boolean} `true` if the object describes an enum\r\n */\r\nEnum.testJSON = function testJSON(json) {\r\n return Boolean(json && json.values);\r\n};\r\n\r\n/**\r\n * Creates an enum from JSON.\r\n * @param {string} name Enum name\r\n * @param {Object.} json JSON object\r\n * @returns {Enum} Created enum\r\n * @throws {TypeError} If arguments are invalid\r\n */\r\nEnum.fromJSON = function fromJSON(name, json) {\r\n return new Enum(name, json.values, json.options);\r\n};\r\n\r\n/**\r\n * @override\r\n */\r\nEnumPrototype.toJSON = function toJSON() {\r\n return {\r\n options : this.options,\r\n values : this.values\r\n };\r\n};\r\n\r\n/**\r\n * Adds a value to this enum.\r\n * @param {string} name Value name\r\n * @param {number} id Value id\r\n * @returns {Enum} `this`\r\n * @throws {TypeError} If arguments are invalid\r\n * @throws {Error} If there is already a value with this name or id\r\n */\r\nEnumPrototype.add = function(name, id) {\r\n if (!util.isString(name))\r\n throw _TypeError(\"name\");\r\n if (!util.isInteger(id) || id < 0)\r\n throw _TypeError(\"id\", \"a non-negative integer\");\r\n if (this.values[name] !== undefined)\r\n throw Error('duplicate name \"' + name + '\" in ' + this);\r\n if (this.getValuesById()[id] !== undefined)\r\n throw Error(\"duplicate id \" + id + \" in \" + this);\r\n this.values[name] = id;\r\n return clearCache(this);\r\n};\r\n\r\n/**\r\n * Removes a value from this enum\r\n * @param {string} name Value name\r\n * @returns {Enum} `this`\r\n * @throws {TypeError} If arguments are invalid\r\n * @throws {Error} If `name` is not a name of this enum\r\n */\r\nEnumPrototype.remove = function(name) {\r\n if (!util.isString(name))\r\n throw _TypeError(\"name\");\r\n if (this.values[name] === undefined)\r\n throw Error('\"' + name + '\" is not a name of ' + this);\r\n delete this.values[name];\r\n return clearCache(this);\r\n};\r\n","\"use strict\";\r\nmodule.exports = Field;\r\n\r\nvar ReflectionObject = require(11);\r\n/** @alias Field.prototype */\r\nvar FieldPrototype = ReflectionObject.extend(Field);\r\n\r\nvar Type = require(19),\r\n Enum = require(5),\r\n MapField = require(8),\r\n types = require(20),\r\n util = require(21);\r\n\r\nvar _TypeError = util._TypeError;\r\n\r\n/**\r\n * Constructs a new message field. Note that {@link MapField|map fields} have their own class.\r\n * @classdesc Reflected message field.\r\n * @extends ReflectionObject\r\n * @constructor\r\n * @param {string} name Unique name within its namespace\r\n * @param {number} id Unique id within its namespace\r\n * @param {string} type Value type\r\n * @param {string} [rule=optional] Field rule\r\n * @param {string} [extend] Extended type if different from parent\r\n * @param {Object} [options] Declared options\r\n */\r\nfunction Field(name, id, type, rule, extend, options) {\r\n if (util.isObject(rule)) {\r\n options = rule;\r\n rule = extend = undefined;\r\n } else if (util.isObject(extend)) {\r\n options = extend;\r\n extend = undefined;\r\n }\r\n ReflectionObject.call(this, name, options);\r\n if (!util.isInteger(id) || id < 0)\r\n throw _TypeError(\"id\", \"a non-negative integer\");\r\n if (!util.isString(type))\r\n throw _TypeError(\"type\");\r\n if (extend !== undefined && !util.isString(extend))\r\n throw _TypeError(\"extend\");\r\n if (rule !== undefined && !/^required|optional|repeated$/.test(rule = rule.toString().toLowerCase()))\r\n throw _TypeError(\"rule\", \"a valid rule string\");\r\n\r\n /**\r\n * Field rule, if any.\r\n * @type {string|undefined}\r\n */\r\n this.rule = rule && rule !== 'optional' ? rule : undefined; // toJSON\r\n\r\n /**\r\n * Field type.\r\n * @type {string}\r\n */\r\n this.type = type; // toJSON\r\n\r\n /**\r\n * Unique field id.\r\n * @type {number}\r\n */\r\n this.id = id; // toJSON, marker\r\n\r\n /**\r\n * Extended type if different from parent.\r\n * @type {string|undefined}\r\n */\r\n this.extend = extend || undefined; // toJSON\r\n\r\n /**\r\n * Whether this field is required.\r\n * @type {boolean}\r\n */\r\n this.required = rule === \"required\";\r\n\r\n /**\r\n * Whether this field is optional.\r\n * @type {boolean}\r\n */\r\n this.optional = !this.required;\r\n\r\n /**\r\n * Whether this field is repeated.\r\n * @type {boolean}\r\n */\r\n this.repeated = rule === \"repeated\";\r\n\r\n /**\r\n * Whether this field is a map or not.\r\n * @type {boolean}\r\n */\r\n this.map = false;\r\n\r\n /**\r\n * Message this field belongs to.\r\n * @type {?Type}\r\n */\r\n this.message = null;\r\n\r\n /**\r\n * OneOf this field belongs to, if any,\r\n * @type {?OneOf}\r\n */\r\n this.partOf = null;\r\n\r\n /**\r\n * The field's default value. Only relevant when working with proto2.\r\n * @type {*}\r\n */\r\n this.defaultValue = null;\r\n\r\n /**\r\n * Whether this field's value should be treated as a long.\r\n * @type {boolean}\r\n */\r\n this.long = util.Long ? types.long[type] !== undefined : false;\r\n\r\n /**\r\n * Resolved type if not a basic type.\r\n * @type {?(Type|Enum)}\r\n */\r\n this.resolvedType = null;\r\n\r\n /**\r\n * Sister-field within the extended type if a declaring extension field.\r\n * @type {?Field}\r\n */\r\n this.extensionField = null;\r\n\r\n /**\r\n * Sister-field within the declaring namespace if an extended field.\r\n * @type {?Field}\r\n */\r\n this.declaringField = null;\r\n\r\n /**\r\n * Internally remembers whether this field is packed.\r\n * @type {?boolean}\r\n * @private\r\n */\r\n this._packed = null;\r\n}\r\n\r\nObject.defineProperties(FieldPrototype, {\r\n\r\n /**\r\n * Determines whether this field is packed. Only relevant when repeated and working with proto2.\r\n * @name Field#packed\r\n * @type {boolean}\r\n * @readonly\r\n */\r\n packed: {\r\n get: FieldPrototype.isPacked = function() {\r\n if (this._packed === null)\r\n this._packed = this.getOption(\"packed\") !== false;\r\n return this._packed;\r\n }\r\n }\r\n\r\n});\r\n\r\n/**\r\n * @override\r\n */\r\nFieldPrototype.setOption = function setOption(name, value, ifNotSet) {\r\n if (name === \"packed\")\r\n this._packed = null;\r\n return ReflectionObject.prototype.setOption.call(this, name, value, ifNotSet);\r\n};\r\n\r\n/**\r\n * Tests if the specified JSON object describes a field.\r\n * @param {*} json Any JSON object to test\r\n * @returns {boolean} `true` if the object describes a field\r\n */\r\nField.testJSON = function testJSON(json) {\r\n return Boolean(json && json.id !== undefined);\r\n};\r\n\r\n/**\r\n * Constructs a field from JSON.\r\n * @param {string} name Field name\r\n * @param {Object} json JSON object\r\n * @returns {Field} Created field\r\n * @throws {TypeError} If arguments are invalid\r\n */\r\nField.fromJSON = function fromJSON(name, json) {\r\n if (json.keyType !== undefined)\r\n return MapField.fromJSON(name, json);\r\n return new Field(name, json.id, json.type, json.role, json.extend, json.options);\r\n};\r\n\r\n/**\r\n * @override\r\n */\r\nFieldPrototype.toJSON = function toJSON() {\r\n return {\r\n rule : this.rule !== \"optional\" && this.rule || undefined,\r\n type : this.type,\r\n id : this.id,\r\n extend : this.extend,\r\n options : this.options\r\n };\r\n};\r\n\r\n/**\r\n * Resolves this field's type references.\r\n * @returns {Field} `this`\r\n * @throws {Error} If any reference cannot be resolved\r\n */\r\nFieldPrototype.resolve = function resolve() {\r\n if (this.resolved)\r\n return this;\r\n\r\n var typeDefault = types.defaults[this.type];\r\n\r\n // if not a basic type, resolve it\r\n if (typeDefault === undefined) {\r\n var resolved = this.parent.lookup(this.type);\r\n if (resolved instanceof Type) {\r\n this.resolvedType = resolved;\r\n typeDefault = null;\r\n } else if (resolved instanceof Enum) {\r\n this.resolvedType = resolved;\r\n typeDefault = 0;\r\n } else\r\n throw Error(\"unresolvable field type: \" + this.type);\r\n }\r\n\r\n // when everything is resolved determine the default value\r\n var optionDefault;\r\n if (this.map)\r\n this.defaultValue = {};\r\n else if (this.repeated)\r\n this.defaultValue = [];\r\n else if (this.options && (optionDefault = this.options['default']) !== undefined) // eslint-disable-line dot-notation\r\n this.defaultValue = optionDefault;\r\n else\r\n this.defaultValue = typeDefault;\r\n\r\n if (this.long)\r\n this.defaultValue = util.Long.fromValue(this.defaultValue);\r\n \r\n return ReflectionObject.prototype.resolve.call(this);\r\n};\r\n\r\n/**\r\n * Converts a field value to JSON using the specified options. Note that this method does not account for repeated fields and must be called once for each repeated element instead.\r\n * @param {*} value Field value\r\n * @param {Object.} [options] Conversion options\r\n * @returns {*} Converted value\r\n * @see {@link Prototype#asJSON}\r\n */\r\nFieldPrototype.jsonConvert = function(value, options) {\r\n if (options) {\r\n if (this.resolvedType instanceof Enum && options['enum'] === String) // eslint-disable-line dot-notation\r\n return this.resolvedType.getValuesById()[value];\r\n else if (this.long && options.long)\r\n return options.long === Number\r\n ? typeof value === 'number'\r\n ? value\r\n : util.Long.fromValue(value).toNumber()\r\n : util.Long.fromValue(value, this.type.charAt(0) === 'u').toString();\r\n }\r\n return value;\r\n};\r\n","\"use strict\";\r\nmodule.exports = inherits;\r\n\r\nvar Prototype = require(14),\r\n Type = require(19),\r\n util = require(21);\r\n\r\nvar _TypeError = util._TypeError;\r\n\r\n/**\r\n * Options passed to {@link inherits}, modifying its behavior.\r\n * @typedef InheritanceOptions\r\n * @type {Object}\r\n * @property {boolean} [noStatics=false] Skips adding the default static methods on top of the constructor\r\n * @property {boolean} [noRegister=false] Skips registering the constructor with the reflected type\r\n */\r\n\r\n/**\r\n * Inherits a custom class from the message prototype of the specified message type.\r\n * @param {Function} clazz Inheriting class\r\n * @param {Type} type Inherited message type\r\n * @param {InheritanceOptions} [options] Inheritance options\r\n * @returns {Prototype} Created prototype\r\n */\r\nfunction inherits(clazz, type, options) {\r\n if (typeof clazz !== 'function')\r\n throw _TypeError(\"clazz\", \"a function\");\r\n if (!(type instanceof Type))\r\n throw _TypeError(\"type\", \"a Type\");\r\n if (!options)\r\n options = {};\r\n\r\n /**\r\n * This is not an actual type but stands as a reference for any constructor of a custom message class that you pass to the library.\r\n * @name Class\r\n * @extends Prototype\r\n * @constructor\r\n * @param {Object.} [properties] Properties to set on the message\r\n * @see {@link inherits}\r\n */\r\n\r\n var classProperties = {\r\n \r\n /**\r\n * Reference to the reflected type.\r\n * @name Class.$type\r\n * @type {Type}\r\n * @readonly\r\n */\r\n $type: {\r\n value: type\r\n }\r\n };\r\n\r\n if (!options.noStatics)\r\n util.merge(classProperties, {\r\n\r\n /**\r\n * Encodes a message of this type to a buffer.\r\n * @name Class.encode\r\n * @function\r\n * @param {Prototype|Object} message Message to encode\r\n * @param {Writer} [writer] Writer to use\r\n * @returns {Uint8Array} Encoded message\r\n */\r\n encode: {\r\n value: function encode(message, writer) {\r\n return this.$type.encode(message, writer).finish();\r\n }\r\n },\r\n\r\n /**\r\n * Encodes a message of this type preceeded by its length as a varint to a buffer.\r\n * @name Class.encodeDelimited\r\n * @function\r\n * @param {Prototype|Object} message Message to encode\r\n * @param {Writer} [writer] Writer to use\r\n * @returns {Uint8Array} Encoded message\r\n */\r\n encodeDelimited: {\r\n value: function encodeDelimited(message, writer) {\r\n return this.$type.encodeDelimited(message, writer).finish();\r\n }\r\n },\r\n\r\n /**\r\n * Decodes a message of this type from a buffer.\r\n * @name Class.decode\r\n * @function\r\n * @param {Uint8Array} buffer Buffer to decode\r\n * @returns {Prototype} Decoded message\r\n */\r\n decode: {\r\n value: function decode(buffer) {\r\n return this.$type.decode(buffer);\r\n }\r\n },\r\n\r\n /**\r\n * Decodes a message of this type preceeded by its length as a varint from a buffer.\r\n * @name Class.decodeDelimited\r\n * @function\r\n * @param {Uint8Array} buffer Buffer to decode\r\n * @returns {Prototype} Decoded message\r\n */\r\n decodeDelimited: {\r\n value: function decodeDelimited(buffer) {\r\n return this.$type.decodeDelimited(buffer);\r\n }\r\n },\r\n\r\n /**\r\n * Verifies a message of this type.\r\n * @name Class.verify\r\n * @function\r\n * @param {Prototype|Object} message Message or plain object to verify\r\n * @returns {?string} `null` if valid, otherwise the reason why it is not\r\n */\r\n verify: {\r\n value: function verify(message) {\r\n return this.$type.verify(message);\r\n }\r\n }\r\n\r\n }, true);\r\n\r\n Object.defineProperties(clazz, classProperties);\r\n var prototype = inherits.defineProperties(new Prototype(), type);\r\n clazz.prototype = prototype;\r\n prototype.constructor = clazz;\r\n\r\n if (!options.noRegister)\r\n type.setCtor(clazz);\r\n\r\n return prototype;\r\n}\r\n\r\n/**\r\n * Defines the reflected type's default values and virtual oneof properties on the specified prototype.\r\n * @memberof inherits\r\n * @param {Prototype} prototype Prototype to define properties upon\r\n * @param {Type} type Reflected message type\r\n * @returns {Prototype} The specified prototype\r\n */\r\ninherits.defineProperties = function defineProperties(prototype, type) {\r\n\r\n var prototypeProperties = {\r\n\r\n /**\r\n * Reference to the reflected type.\r\n * @name Prototype#$type\r\n * @type {Type}\r\n * @readonly\r\n */\r\n $type: {\r\n value: type\r\n }\r\n };\r\n\r\n // Initialize default values\r\n type.getFieldsArray().forEach(function(field) {\r\n field.resolve();\r\n if (!util.isObject(field.defaultValue))\r\n // objects are mutable (i.e. would modify the array on the prototype, not the instance)\r\n prototype[field.name] = field.defaultValue;\r\n });\r\n\r\n // Define each oneof with a non-enumerable getter and setter for the present field\r\n type.getOneofsArray().forEach(function(oneof) {\r\n prototypeProperties[oneof.resolve().name] = {\r\n get: function() {\r\n var keys = oneof.oneof;\r\n for (var i = 0; i < keys.length; ++i) {\r\n var field = oneof.parent.fields[keys[i]];\r\n if (this[keys[i]] != field.defaultValue) // eslint-disable-line eqeqeq\r\n return keys[i];\r\n }\r\n return undefined;\r\n },\r\n set: function(value) {\r\n var keys = oneof.oneof;\r\n for (var i = 0; i < keys.length; ++i) {\r\n if (keys[i] !== value)\r\n delete this[keys[i]];\r\n }\r\n }\r\n };\r\n });\r\n\r\n Object.defineProperties(prototype, prototypeProperties);\r\n return prototype;\r\n};\r\n","\"use strict\";\r\nmodule.exports = MapField;\r\n\r\nvar Field = require(6);\r\n/** @alias Field.prototype */\r\nvar FieldPrototype = Field.prototype;\r\n/** @alias MapField.prototype */\r\nvar MapFieldPrototype = Field.extend(MapField);\r\n\r\nvar Enum = require(5),\r\n types = require(20),\r\n util = require(21);\r\n\r\n/**\r\n * Constructs a new map field.\r\n * @classdesc Reflected map field.\r\n * @extends Field\r\n * @constructor\r\n * @param {string} name Unique name within its namespace\r\n * @param {number} id Unique id within its namespace\r\n * @param {string} keyType Key type\r\n * @param {string} type Value type\r\n * @param {Object} [options] Declared options\r\n */\r\nfunction MapField(name, id, keyType, type, options) {\r\n Field.call(this, name, id, type, options);\r\n if (!util.isString(keyType))\r\n throw util._TypeError(\"keyType\");\r\n \r\n /**\r\n * Key type.\r\n * @type {string}\r\n */\r\n this.keyType = keyType; // toJSON, marker\r\n\r\n /**\r\n * Resolved key type if not a basic type.\r\n * @type {?ReflectionObject}\r\n */\r\n this.resolvedKeyType = null;\r\n\r\n // Overrides Field#map\r\n this.map = true;\r\n}\r\n\r\n/**\r\n * Tests if the specified JSON object describes a map field.\r\n * @param {Object} json JSON object to test\r\n * @returns {boolean} `true` if the object describes a field\r\n */\r\nMapField.testJSON = function testJSON(json) {\r\n return Field.testJSON(json) && json.keyType !== undefined;\r\n};\r\n\r\n/**\r\n * Constructs a map field from JSON.\r\n * @param {string} name Field name\r\n * @param {Object} json JSON object\r\n * @returns {MapField} Created map field\r\n * @throws {TypeError} If arguments are invalid\r\n */\r\nMapField.fromJSON = function fromJSON(name, json) {\r\n return new MapField(name, json.id, json.keyType, json.type, json.options);\r\n};\r\n\r\n/**\r\n * @override\r\n */\r\nMapFieldPrototype.toJSON = function toJSON() {\r\n return {\r\n keyType : this.keyType,\r\n type : this.type,\r\n id : this.id,\r\n extend : this.extend,\r\n options : this.options\r\n };\r\n};\r\n\r\n/**\r\n * @override\r\n */\r\nMapFieldPrototype.resolve = function resolve() {\r\n if (this.resolved)\r\n return this;\r\n \r\n // Besides a value type, map fields have a key type to resolve\r\n var keyWireType = types.mapKey[this.keyType];\r\n if (keyWireType === undefined) {\r\n var resolved = this.parent.lookup(this.keyType);\r\n if (!(resolved instanceof Enum))\r\n throw Error(\"unresolvable map key type: \" + this.keyType);\r\n this.resolvedKeyType = resolved;\r\n }\r\n\r\n return FieldPrototype.resolve.call(this);\r\n};\r\n","\"use strict\";\r\nmodule.exports = Method;\r\n\r\nvar ReflectionObject = require(11);\r\n/** @alias Method.prototype */\r\nvar MethodPrototype = ReflectionObject.extend(Method);\r\n\r\nvar Type = require(19),\r\n util = require(21);\r\n\r\nvar _TypeError = util._TypeError;\r\n\r\n/**\r\n * Constructs a new service method.\r\n * @classdesc Reflected service method.\r\n * @extends ReflectionObject\r\n * @constructor\r\n * @param {string} name Method name\r\n * @param {string|undefined} type Method type, usually `\"rpc\"`\r\n * @param {string} requestType Request message type\r\n * @param {string} responseType Response message type\r\n * @param {boolean} [requestStream] Whether the request is streamed\r\n * @param {boolean} [responseStream] Whether the response is streamed\r\n * @param {Object} [options] Declared options\r\n */\r\nfunction Method(name, type, requestType, responseType, requestStream, responseStream, options) {\r\n if (util.isObject(requestStream)) {\r\n options = requestStream;\r\n requestStream = responseStream = undefined;\r\n } else if (util.isObject(responseStream)) {\r\n options = responseStream;\r\n responseStream = undefined;\r\n }\r\n if (!util.isString(type))\r\n throw _TypeError(\"type\");\r\n if (!util.isString(requestType))\r\n throw _TypeError(\"requestType\");\r\n if (!util.isString(responseType))\r\n throw _TypeError(\"responseType\");\r\n\r\n ReflectionObject.call(this, name, options);\r\n\r\n /**\r\n * Method type.\r\n * @type {string}\r\n */\r\n this.type = type || \"rpc\"; // toJSON\r\n\r\n /**\r\n * Request type.\r\n * @type {string}\r\n */\r\n this.requestType = requestType; // toJSON, marker\r\n\r\n /**\r\n * Whether requests are streamed or not.\r\n * @type {boolean|undefined}\r\n */\r\n this.requestStream = requestStream ? true : undefined; // toJSON\r\n\r\n /**\r\n * Response type.\r\n * @type {string}\r\n */\r\n this.responseType = responseType; // toJSON\r\n\r\n /**\r\n * Whether responses are streamed or not.\r\n * @type {boolean|undefined}\r\n */\r\n this.responseStream = responseStream ? true : undefined; // toJSON\r\n\r\n /**\r\n * Resolved request type.\r\n * @type {?Type}\r\n */\r\n this.resolvedRequestType = null;\r\n\r\n /**\r\n * Resolved response type.\r\n * @type {?Type}\r\n */\r\n this.resolvedResponseType = null;\r\n}\r\n\r\n/**\r\n * Tests if the specified JSON object describes a service method.\r\n * @param {Object} json JSON object\r\n * @returns {boolean} `true` if the object describes a map field\r\n */\r\nMethod.testJSON = function testJSON(json) {\r\n return Boolean(json && json.requestType !== undefined);\r\n};\r\n\r\n/**\r\n * Constructs a service method from JSON.\r\n * @param {string} name Method name\r\n * @param {Object} json JSON object\r\n * @returns {Method} Created method\r\n * @throws {TypeError} If arguments are invalid\r\n */\r\nMethod.fromJSON = function fromJSON(name, json) {\r\n return new Method(name, json.type, json.requestType, json.responseType, json.requestStream, json.responseStream, json.options);\r\n};\r\n\r\n/**\r\n * @override\r\n */\r\nMethodPrototype.toJSON = function toJSON() {\r\n return {\r\n type : this.type !== \"rpc\" && this.type || undefined,\r\n requestType : this.requestType,\r\n requestStream : this.requestStream,\r\n responseType : this.responseType,\r\n responseStream : this.responseStream,\r\n options : this.options\r\n };\r\n};\r\n\r\n/**\r\n * @override\r\n */\r\nMethodPrototype.resolve = function resolve() {\r\n if (this.resolved)\r\n return this;\r\n var resolved = this.parent.lookup(this.requestType);\r\n if (!(resolved && resolved instanceof Type))\r\n throw Error(\"unresolvable request type: \" + this.requestType);\r\n this.resolvedRequestType = resolved;\r\n resolved = this.parent.lookup(this.responseType);\r\n if (!(resolved && resolved instanceof Type))\r\n throw Error(\"unresolvable response type: \" + this.requestType);\r\n this.resolvedResponseType = resolved;\r\n return ReflectionObject.prototype.resolve.call(this);\r\n};\r\n","\"use strict\";\r\nmodule.exports = Namespace;\r\n\r\nvar ReflectionObject = require(11);\r\n/** @alias Namespace.prototype */\r\nvar NamespacePrototype = ReflectionObject.extend(Namespace);\r\n\r\nvar Enum = require(5),\r\n Type = require(19),\r\n Field = require(6),\r\n Service = require(17),\r\n util = require(21);\r\n\r\nvar _TypeError = util._TypeError;\r\n\r\nvar nestedTypes = [ Enum, Type, Service, Field, Namespace ],\r\n nestedError = \"one of \" + nestedTypes.map(function(ctor) { return ctor.name; }).join(', ');\r\n\r\n/**\r\n * Constructs a new namespace.\r\n * @classdesc Reflected namespace and base class of all reflection objects containing nested objects.\r\n * @extends ReflectionObject\r\n * @constructor\r\n * @param {string} name Namespace name\r\n * @param {Object} [options] Declared options\r\n */\r\nfunction Namespace(name, options) {\r\n ReflectionObject.call(this, name, options);\r\n\r\n /**\r\n * Nested objects by name.\r\n * @type {Object.|undefined}\r\n */\r\n this.nested = undefined; // toJSON\r\n\r\n /**\r\n * Cached nested objects as an array.\r\n * @type {?ReflectionObject[]}\r\n * @private\r\n */\r\n this._nestedArray = null;\r\n}\r\n\r\nfunction clearCache(namespace) {\r\n namespace._nestedArray = null;\r\n return namespace;\r\n}\r\n\r\nObject.defineProperties(NamespacePrototype, {\r\n\r\n /**\r\n * Nested objects of this namespace as an array for iteration.\r\n * @name Namespace#nestedArray\r\n * @type {ReflectionObject[]}\r\n * @readonly\r\n */\r\n nestedArray: {\r\n get: NamespacePrototype.getNestedArray = function getNestedArray() {\r\n return this._nestedArray || (this._nestedArray = util.toArray(this.nested));\r\n }\r\n }\r\n\r\n});\r\n\r\n/**\r\n * Tests if the specified JSON object describes not another reflection object.\r\n * @param {*} json JSON object\r\n * @returns {boolean} `true` if the object describes not another reflection object\r\n */\r\nNamespace.testJSON = function testJSON(json) {\r\n return Boolean(json\r\n && !json.fields // Type\r\n && !json.values // Enum\r\n && json.id === undefined // Field, MapField\r\n && !json.oneof // OneOf\r\n && !json.methods // Service\r\n && json.requestType === undefined // Method\r\n );\r\n};\r\n\r\n/**\r\n * Constructs a namespace from JSON.\r\n * @param {string} name Namespace name\r\n * @param {Object} json JSON object\r\n * @returns {Namespace} Created namespace\r\n * @throws {TypeError} If arguments are invalid\r\n */\r\nNamespace.fromJSON = function fromJSON(name, json) {\r\n return new Namespace(name, json.options).addJSON(json.nested);\r\n};\r\n\r\n/**\r\n * @override\r\n */\r\nNamespacePrototype.toJSON = function toJSON() {\r\n return {\r\n options : this.options,\r\n nested : arrayToJSON(this.getNestedArray())\r\n };\r\n};\r\n\r\n/**\r\n * Converts an array of reflection objects to JSON.\r\n * @memberof Namespace\r\n * @param {ReflectionObject[]} array Object array\r\n * @returns {Object.|undefined} JSON object or `undefined` when array is empty\r\n */\r\nfunction arrayToJSON(array) {\r\n if (!(array && array.length))\r\n return undefined;\r\n var obj = {};\r\n for (var i = 0; i < array.length; ++i)\r\n obj[array[i].name] = array[i].toJSON();\r\n return obj;\r\n}\r\n\r\nNamespace.arrayToJSON = arrayToJSON;\r\n\r\n/**\r\n * Adds nested elements to this namespace from JSON.\r\n * @param {Object.} nestedJson Nested JSON\r\n * @returns {Namespace} `this`\r\n */\r\nNamespacePrototype.addJSON = function addJSON(nestedJson) {\r\n var ns = this;\r\n if (nestedJson)\r\n Object.keys(nestedJson).forEach(function(nestedName) {\r\n var nested = nestedJson[nestedName];\r\n for (var j = 0; j < nestedTypes.length; ++j)\r\n if (nestedTypes[j].testJSON(nested))\r\n return ns.add(nestedTypes[j].fromJSON(nestedName, nested));\r\n throw _TypeError(\"nested.\" + nestedName, \"JSON for \" + nestedError);\r\n });\r\n return this;\r\n};\r\n\r\n/**\r\n * Gets the nested object of the specified name.\r\n * @param {string} name Nested object name\r\n * @returns {?ReflectionObject} The reflection object or `null` if it doesn't exist\r\n */\r\nNamespacePrototype.get = function get(name) {\r\n if (this.nested === undefined) // prevents deopt\r\n return null;\r\n return this.nested[name] || null;\r\n};\r\n\r\n/**\r\n * Adds a nested object to this namespace.\r\n * @param {ReflectionObject} object Nested object to add\r\n * @returns {Namespace} `this`\r\n * @throws {TypeError} If arguments are invalid\r\n * @throws {Error} If there is already a nested object with this name\r\n */\r\nNamespacePrototype.add = function add(object) {\r\n if (!object || nestedTypes.indexOf(object.constructor) < 0)\r\n throw _TypeError(\"object\", nestedError);\r\n if (object instanceof Field && object.extend === undefined)\r\n throw _TypeError(\"object\", \"an extension field when not part of a type\");\r\n if (!this.nested)\r\n this.nested = {};\r\n else {\r\n var prev = this.get(object.name);\r\n if (prev) {\r\n if (prev instanceof Namespace && object instanceof Namespace && !(prev instanceof Type || prev instanceof Service)) {\r\n // replace plain namespace but keep existing nested elements and options\r\n var nested = prev.getNestedArray();\r\n for (var i = 0; i < nested.length; ++i)\r\n object.add(nested[i]);\r\n this.remove(prev);\r\n if (!this.nested)\r\n this.nested = {};\r\n object.setOptions(prev.options, true);\r\n } else\r\n throw Error(\"duplicate name '\" + object.name + \"' in \" + this);\r\n }\r\n }\r\n this.nested[object.name] = object;\r\n object.onAdd(this);\r\n return clearCache(this);\r\n};\r\n\r\n/**\r\n * Removes a nested object from this namespace.\r\n * @param {ReflectionObject} object Nested object to remove\r\n * @returns {Namespace} `this`\r\n * @throws {TypeError} If arguments are invalid\r\n * @throws {Error} If `object` is not a member of this namespace\r\n */\r\nNamespacePrototype.remove = function remove(object) {\r\n if (!(object instanceof ReflectionObject))\r\n throw _TypeError(\"object\", \"a ReflectionObject\");\r\n if (object.parent !== this || !this.nested)\r\n throw Error(object + \" is not a member of \" + this);\r\n delete this.nested[object.name];\r\n if (!Object.keys(this.nested).length)\r\n this.nested = undefined;\r\n object.onRemove(this);\r\n return clearCache(this);\r\n};\r\n\r\n/**\r\n * Defines additial namespaces within this one if not yet existing.\r\n * @param {string|string[]} path Path to create\r\n * @param {*} [json] Nested types to create from JSON\r\n * @returns {Namespace} Pointer to the last namespace created or `this` if path is empty\r\n */\r\nNamespacePrototype.define = function define(path, json) {\r\n if (util.isString(path))\r\n path = path.split('.');\r\n else if (!Array.isArray(path)) {\r\n json = path;\r\n path = undefined;\r\n }\r\n var ptr = this;\r\n if (path)\r\n while (path.length > 0) {\r\n var part = path.shift();\r\n if (ptr.nested && ptr.nested[part]) {\r\n ptr = ptr.nested[part];\r\n if (!(ptr instanceof Namespace))\r\n throw Error(\"path conflicts with non-namespace objects\");\r\n } else\r\n ptr.add(ptr = new Namespace(part));\r\n }\r\n if (json)\r\n ptr.addJSON(json);\r\n return ptr;\r\n};\r\n\r\n/**\r\n * Resolves this namespace's and all its nested objects' type references. Useful to validate a reflection tree.\r\n * @returns {Namespace} `this`\r\n */\r\nNamespacePrototype.resolveAll = function resolve() {\r\n var nested = this.getNestedArray(), i = 0;\r\n while (i < nested.length)\r\n if (nested[i] instanceof Namespace)\r\n nested[i++].resolveAll();\r\n else\r\n nested[i++].resolve();\r\n return ReflectionObject.prototype.resolve.call(this);\r\n};\r\n\r\n/**\r\n * Looks up the reflection object at the specified path, relative to this namespace.\r\n * @param {string|string[]} path Path to look up\r\n * @param {boolean} [parentAlreadyChecked=false] Whether the parent has already been checked\r\n * @returns {?ReflectionObject} Looked up object or `null` if none could be found\r\n */\r\nNamespacePrototype.lookup = function lookup(path, parentAlreadyChecked) {\r\n if (util.isString(path)) {\r\n if (!path.length)\r\n return null;\r\n path = path.split('.');\r\n } else if (!path.length)\r\n return null;\r\n // Start at root if path is absolute\r\n if (path[0] === \"\")\r\n return this.getRoot().lookup(path.slice(1));\r\n // Test if the first part matches any nested object, and if so, traverse if path contains more\r\n var found = this.get(path[0]);\r\n if (found && (path.length === 1 || found instanceof Namespace && (found = found.lookup(path.slice(1), true))))\r\n return found;\r\n // If there hasn't been a match, try again at the parent\r\n if (this.parent === null || parentAlreadyChecked)\r\n return null;\r\n return this.parent.lookup(path);\r\n};\r\n","\"use strict\";\r\nmodule.exports = ReflectionObject;\r\n\r\nReflectionObject.extend = extend;\r\n\r\nvar Root = require(16),\r\n util = require(21);\r\n\r\nvar _TypeError = util._TypeError;\r\n\r\n/**\r\n * Constructs a new reflection object.\r\n * @classdesc Base class of all reflection objects.\r\n * @constructor\r\n * @param {string} name Object name\r\n * @param {Object} [options] Declared options\r\n * @abstract\r\n */\r\nfunction ReflectionObject(name, options) {\r\n if (!util.isString(name))\r\n throw _TypeError(\"name\");\r\n if (options && !util.isObject(options))\r\n throw _TypeError(\"options\", \"an object\");\r\n\r\n /**\r\n * Options.\r\n * @type {Object.|undefined}\r\n */\r\n this.options = options; // toJSON\r\n\r\n /**\r\n * Unique name within its namespace.\r\n * @type {string}\r\n */\r\n this.name = name;\r\n\r\n /**\r\n * Parent namespace.\r\n * @type {?Namespace}\r\n */\r\n this.parent = null;\r\n\r\n /**\r\n * Whether already resolved or not.\r\n * @type {boolean}\r\n */\r\n this.resolved = false;\r\n}\r\n\r\n/** @alias ReflectionObject.prototype */\r\nvar ReflectionObjectPrototype = ReflectionObject.prototype;\r\n\r\nObject.defineProperties(ReflectionObjectPrototype, {\r\n\r\n /**\r\n * Reference to the root namespace.\r\n * @name ReflectionObject#root\r\n * @type {Root}\r\n * @readonly\r\n */\r\n root: {\r\n get: ReflectionObjectPrototype.getRoot = function getRoot() {\r\n var ptr = this;\r\n while (ptr.parent !== null)\r\n ptr = ptr.parent;\r\n return ptr;\r\n }\r\n },\r\n\r\n /**\r\n * Full name including leading dot.\r\n * @name ReflectionObject#fullName\r\n * @type {string}\r\n * @readonly\r\n */\r\n fullName: {\r\n get: ReflectionObjectPrototype.getFullName = function getFullName() {\r\n var path = [ this.name ],\r\n ptr = this.parent;\r\n while (ptr) {\r\n path.unshift(ptr.name);\r\n ptr = ptr.parent;\r\n }\r\n return path.join('.');\r\n }\r\n }\r\n});\r\n\r\n/**\r\n * Lets the specified constructor extend this class.\r\n * @memberof ReflectionObject\r\n * @param {Function} constructor Extending constructor\r\n * @returns {Object} Prototype\r\n * @this ReflectionObject\r\n */\r\nfunction extend(constructor) {\r\n var proto = constructor.prototype = Object.create(this.prototype);\r\n proto.constructor = constructor;\r\n constructor.extend = extend;\r\n return proto;\r\n}\r\n\r\n/**\r\n * Converts this reflection object to its JSON representation.\r\n * @returns {Object} JSON object\r\n * @abstract\r\n */\r\nReflectionObjectPrototype.toJSON = function toJSON() {\r\n throw Error(); // not implemented, shouldn't happen\r\n};\r\n\r\n/**\r\n * Called when this object is added to a parent.\r\n * @param {ReflectionObject} parent Parent added to\r\n * @returns {undefined}\r\n */\r\nReflectionObjectPrototype.onAdd = function onAdd(parent) {\r\n if (this.parent && this.parent !== parent)\r\n this.parent.remove(this);\r\n this.parent = parent;\r\n this.resolved = false;\r\n var root = parent.getRoot();\r\n if (root instanceof Root)\r\n root._handleAdd(this);\r\n};\r\n\r\n/**\r\n * Called when this object is removed from a parent.\r\n * @param {ReflectionObject} parent Parent removed from\r\n * @returns {undefined}\r\n */\r\nReflectionObjectPrototype.onRemove = function onRemove(parent) {\r\n var root = parent.getRoot();\r\n if (root instanceof Root)\r\n root._handleRemove(this);\r\n this.parent = null;\r\n this.resolved = false;\r\n};\r\n\r\n/**\r\n * Resolves this objects type references.\r\n * @returns {ReflectionObject} `this`\r\n */\r\nReflectionObjectPrototype.resolve = function resolve() {\r\n if (this.resolved)\r\n return this;\r\n var root = this.getRoot();\r\n if (root instanceof Root)\r\n this.resolved = true; // only if part of a root\r\n return this;\r\n};\r\n\r\n/**\r\n * Gets an option value.\r\n * @param {string} name Option name\r\n * @returns {*} Option value or `undefined` if not set\r\n */\r\nReflectionObjectPrototype.getOption = function getOption(name) {\r\n if (this.options)\r\n return this.options[name];\r\n return undefined;\r\n};\r\n\r\n/**\r\n * Sets an option.\r\n * @param {string} name Option name\r\n * @param {*} value Option value\r\n * @param {boolean} [ifNotSet] Sets the option only if it isn't currently set\r\n * @returns {ReflectionObject} `this`\r\n */\r\nReflectionObjectPrototype.setOption = function setOption(name, value, ifNotSet) {\r\n if (!ifNotSet || !this.options || this.options[name] === undefined)\r\n (this.options || (this.options = {}))[name] = value;\r\n return this;\r\n};\r\n\r\n/**\r\n * Sets multiple options.\r\n * @param {Object.} options Options to set\r\n * @param {boolean} [ifNotSet] Sets an option only if it isn't currently set\r\n * @returns {ReflectionObject} `this`\r\n */\r\nReflectionObjectPrototype.setOptions = function setOptions(options, ifNotSet) {\r\n if (options)\r\n Object.keys(options).forEach(function(name) {\r\n this.setOption(name, options[name], ifNotSet);\r\n }, this);\r\n return this;\r\n};\r\n\r\n/**\r\n * Converts this instance to its string representation.\r\n * @returns {string} Constructor name, space, full name\r\n */\r\nReflectionObjectPrototype.toString = function toString() {\r\n return this.constructor.name + \" \" + this.getFullName();\r\n};\r\n","\"use strict\";\r\nmodule.exports = OneOf;\r\n\r\nvar ReflectionObject = require(11);\r\n/** @alias OneOf.prototype */\r\nvar OneOfPrototype = ReflectionObject.extend(OneOf);\r\n\r\nvar Field = require(6),\r\n util = require(21);\r\n\r\nvar _TypeError = util._TypeError;\r\n\r\n/**\r\n * Constructs a new oneof.\r\n * @classdesc Reflected oneof.\r\n * @extends ReflectionObject\r\n * @constructor\r\n * @param {string} name Oneof name\r\n * @param {string[]} [fieldNames] Field names\r\n * @param {Object} [options] Declared options\r\n */\r\nfunction OneOf(name, fieldNames, options) {\r\n if (!Array.isArray(fieldNames)) {\r\n options = fieldNames;\r\n fieldNames = undefined;\r\n }\r\n ReflectionObject.call(this, name, options);\r\n if (fieldNames && !Array.isArray(fieldNames))\r\n throw _TypeError(\"fieldNames\", \"an Array\");\r\n\r\n /**\r\n * Field names that belong to this oneof.\r\n * @type {Array.}\r\n */\r\n this.oneof = fieldNames || []; // toJSON, marker\r\n\r\n /**\r\n * Fields that belong to this oneof and are possibly not yet added to its parent.\r\n * @type {Array.}\r\n * @private\r\n */\r\n this._fields = [];\r\n}\r\n\r\n/**\r\n * Tests if the specified JSON object describes a oneof.\r\n * @param {*} json JSON object\r\n * @returns {boolean} `true` if the object describes a oneof\r\n */\r\nOneOf.testJSON = function testJSON(json) {\r\n return Boolean(json.oneof);\r\n};\r\n\r\n/**\r\n * Constructs a oneof from JSON.\r\n * @param {string} name Oneof name\r\n * @param {Object} json JSON object\r\n * @returns {MapField} Created oneof\r\n * @throws {TypeError} If arguments are invalid\r\n */\r\nOneOf.fromJSON = function fromJSON(name, json) {\r\n return new OneOf(name, json.oneof, json.options);\r\n};\r\n\r\n/**\r\n * @override\r\n */\r\nOneOfPrototype.toJSON = function toJSON() {\r\n return {\r\n oneof : this.oneof,\r\n options : this.options\r\n };\r\n};\r\n\r\n/**\r\n * Adds the fields of the specified oneof to the parent if not already done so.\r\n * @param {OneOf} oneof The oneof\r\n * @returns {undefined}\r\n * @inner\r\n * @ignore\r\n */\r\nfunction addFieldsToParent(oneof) {\r\n if (oneof.parent)\r\n oneof._fields.forEach(function(field) {\r\n if (!field.parent)\r\n oneof.parent.add(field);\r\n });\r\n}\r\n\r\n/**\r\n * Adds a field to this oneof.\r\n * @param {Field} field Field to add\r\n * @returns {OneOf} `this`\r\n */\r\nOneOfPrototype.add = function add(field) {\r\n if (!(field instanceof Field))\r\n throw _TypeError(\"field\", \"a Field\");\r\n if (field.parent)\r\n field.parent.remove(field);\r\n this.oneof.push(field.name);\r\n this._fields.push(field);\r\n field.partOf = this; // field.parent remains null\r\n addFieldsToParent(this);\r\n return this;\r\n};\r\n\r\n/**\r\n * Removes a field from this oneof.\r\n * @param {Field} field Field to remove\r\n * @returns {OneOf} `this`\r\n */\r\nOneOfPrototype.remove = function remove(field) {\r\n if (!(field instanceof Field))\r\n throw _TypeError(\"field\", \"a Field\");\r\n var index = this._fields.indexOf(field);\r\n if (index < 0)\r\n throw Error(field + \" is not a member of \" + this);\r\n this._fields.splice(index, 1);\r\n index = this.oneof.indexOf(field.name);\r\n if (index > -1)\r\n this.oneof.splice(index, 1);\r\n if (field.parent)\r\n field.parent.remove(field);\r\n field.partOf = null;\r\n return this;\r\n};\r\n\r\n/**\r\n * @override\r\n */\r\nOneOfPrototype.onAdd = function onAdd(parent) {\r\n ReflectionObject.prototype.onAdd.call(this, parent);\r\n addFieldsToParent(this);\r\n};\r\n\r\n/**\r\n * @override\r\n */\r\nOneOfPrototype.onRemove = function onRemove(parent) {\r\n this._fields.forEach(function(field) {\r\n if (field.parent)\r\n field.parent.remove(field);\r\n });\r\n ReflectionObject.prototype.onRemove.call(this, parent);\r\n};\r\n","\"use strict\";\r\nmodule.exports = parse;\r\n\r\nvar tokenize = require(18),\r\n Root = require(16),\r\n Type = require(19),\r\n Field = require(6),\r\n MapField = require(8),\r\n OneOf = require(12),\r\n Enum = require(5),\r\n Service = require(17),\r\n Method = require(9),\r\n types = require(20);\r\n\r\nvar nameRe = /^[a-zA-Z_][a-zA-Z_0-9]*$/,\r\n typeRefRe = /^(?:\\.?[a-zA-Z_][a-zA-Z_0-9]*)+$/,\r\n fqTypeRefRe = /^(?:\\.[a-zA-Z][a-zA-Z_0-9]*)+$/;\r\n\r\nfunction lower(token) {\r\n return token === null ? null : token.toLowerCase();\r\n}\r\n\r\nfunction camelCase(name) {\r\n return name.substring(0,1)\r\n + name.substring(1)\r\n .replace(/_([a-z])(?=[a-z]|$)/g, function($0, $1) { return $1.toUpperCase(); });\r\n}\r\n\r\nvar s_required = \"required\",\r\n s_repeated = \"repeated\",\r\n s_optional = \"optional\",\r\n s_option = \"option\",\r\n s_name = \"name\",\r\n s_type = \"type\";\r\nvar s_open = \"{\",\r\n s_close = \"}\",\r\n s_bopen = '(',\r\n s_bclose = ')',\r\n s_semi = \";\",\r\n s_dq = '\"',\r\n s_sq = \"'\";\r\n\r\n/**\r\n * Result object returned from {@link parse}.\r\n * @typedef ParserResult\r\n * @type {Object}\r\n * @property {string|undefined} package Package name, if declared\r\n * @property {string[]|undefined} imports Imports, if any\r\n * @property {string[]|undefined} weakImports Weak imports, if any\r\n * @property {string|undefined} syntax Syntax, if specified (either `\"proto2\"` or `\"proto3\"`)\r\n * @property {Root} root Populated root instance\r\n */\r\n\r\n/**\r\n * Parses the given .proto source and returns an object with the parsed contents.\r\n * @param {string} source Source contents\r\n * @param {Root} [root] Root to populate\r\n * @returns {ParserResult} Parser result\r\n */\r\nfunction parse(source, root) {\r\n /* eslint-disable default-case, callback-return */\r\n if (!root)\r\n root = new Root();\r\n\r\n var tn = tokenize(source),\r\n next = tn.next,\r\n push = tn.push,\r\n peek = tn.peek,\r\n skip = tn.skip;\r\n\r\n var head = true,\r\n pkg,\r\n imports,\r\n weakImports,\r\n syntax,\r\n isProto3 = false;\r\n\r\n if (!root)\r\n root = new Root();\r\n\r\n var ptr = root;\r\n\r\n function illegal(token, name) {\r\n return Error(\"illegal \" + (name || \"token\") + \" '\" + token + \"' (line \" + tn.line() + s_bclose);\r\n }\r\n\r\n function readString() {\r\n var values = [],\r\n token;\r\n do {\r\n if ((token = next()) !== s_dq && token !== s_sq)\r\n throw illegal(token);\r\n values.push(next());\r\n skip(token);\r\n token = peek();\r\n } while (token === s_dq || token === s_sq);\r\n return values.join('');\r\n }\r\n\r\n function readValue(acceptTypeRef) {\r\n var token = next();\r\n switch (lower(token)) {\r\n case s_sq:\r\n case s_dq:\r\n push(token);\r\n return readString();\r\n case \"true\":\r\n return true;\r\n case \"false\":\r\n return false;\r\n }\r\n try {\r\n return parseNumber(token);\r\n } catch (e) {\r\n if (acceptTypeRef && typeRefRe.test(token))\r\n return token;\r\n throw illegal(token, \"value\");\r\n }\r\n }\r\n\r\n function readRange() {\r\n var start = parseId(next());\r\n var end = start;\r\n if (skip(\"to\", true))\r\n end = parseId(next());\r\n skip(s_semi);\r\n return [ start, end ];\r\n }\r\n\r\n function parseNumber(token) {\r\n var sign = 1;\r\n if (token.charAt(0) === '-') {\r\n sign = -1;\r\n token = token.substring(1);\r\n }\r\n var tokenLower = lower(token);\r\n switch (tokenLower) {\r\n case \"inf\": return sign * Infinity;\r\n case \"nan\": return NaN;\r\n case \"0\": return 0;\r\n }\r\n if (/^[1-9][0-9]*$/.test(token))\r\n return sign * parseInt(token, 10);\r\n if (/^0[x][0-9a-f]+$/.test(tokenLower))\r\n return sign * parseInt(token, 16);\r\n if (/^0[0-7]+$/.test(token))\r\n return sign * parseInt(token, 8);\r\n if (/^(?!e)[0-9]*(?:\\.[0-9]*)?(?:[e][+-]?[0-9]+)?$/.test(tokenLower))\r\n return sign * parseFloat(token);\r\n throw illegal(token, 'number');\r\n }\r\n\r\n function parseId(token, acceptNegative) {\r\n var tokenLower = lower(token);\r\n switch (tokenLower) {\r\n case \"min\": return 1;\r\n case \"max\": return 0x1FFFFFFF;\r\n case \"0\": return 0;\r\n }\r\n if (token.charAt(0) === '-' && !acceptNegative)\r\n throw illegal(token, \"id\");\r\n if (/^-?[1-9][0-9]*$/.test(token))\r\n return parseInt(token, 10);\r\n if (/^-?0[x][0-9a-f]+$/.test(tokenLower))\r\n return parseInt(token, 16);\r\n if (/^-?0[0-7]+$/.test(token))\r\n return parseInt(token, 8);\r\n throw illegal(token, \"id\");\r\n }\r\n\r\n function parsePackage() {\r\n if (pkg !== undefined)\r\n throw illegal(\"package\");\r\n pkg = next();\r\n if (!typeRefRe.test(pkg))\r\n throw illegal(pkg, s_name);\r\n ptr = ptr.define(pkg);\r\n skip(s_semi);\r\n }\r\n\r\n function parseImport() {\r\n var token = peek();\r\n var whichImports;\r\n switch (token) {\r\n case \"weak\":\r\n whichImports = weakImports || (weakImports = []);\r\n next();\r\n break;\r\n case \"public\":\r\n next();\r\n // eslint-disable-line no-fallthrough\r\n default:\r\n whichImports = imports || (imports = []);\r\n break;\r\n }\r\n token = readString();\r\n skip(s_semi);\r\n whichImports.push(token);\r\n }\r\n\r\n function parseSyntax() {\r\n skip(\"=\");\r\n syntax = lower(readString());\r\n var p3;\r\n if ([ \"proto2\", p3 = \"proto3\" ].indexOf(syntax) < 0)\r\n throw illegal(syntax, \"syntax\");\r\n isProto3 = syntax === p3;\r\n skip(s_semi);\r\n }\r\n\r\n function parseCommon(parent, token) {\r\n switch (token) {\r\n\r\n case s_option:\r\n parseOption(parent, token);\r\n skip(s_semi);\r\n return true;\r\n\r\n case \"message\":\r\n parseType(parent, token);\r\n return true;\r\n\r\n case \"enum\":\r\n parseEnum(parent, token);\r\n return true;\r\n\r\n case \"service\":\r\n parseService(parent, token);\r\n return true;\r\n\r\n case \"extend\":\r\n parseExtension(parent, token);\r\n return true;\r\n }\r\n return false;\r\n }\r\n\r\n function parseType(parent, token) {\r\n var name = next();\r\n if (!nameRe.test(name))\r\n throw illegal(name, \"type name\");\r\n var type = new Type(name);\r\n if (skip(s_open, true)) {\r\n while ((token = next()) !== s_close) {\r\n var tokenLower = lower(token);\r\n if (parseCommon(type, token))\r\n continue;\r\n switch (tokenLower) {\r\n case \"map\":\r\n parseMapField(type, tokenLower);\r\n break;\r\n case s_required:\r\n case s_optional:\r\n case s_repeated:\r\n parseField(type, tokenLower);\r\n break;\r\n case \"oneof\":\r\n parseOneOf(type, tokenLower);\r\n break;\r\n case \"extensions\":\r\n (type.extensions || (type.extensions = [])).push(readRange(type, tokenLower));\r\n break;\r\n case \"reserved\":\r\n (type.reserved || (type.reserved = [])).push(readRange(type, tokenLower));\r\n break;\r\n default:\r\n if (!isProto3 || !typeRefRe.test(token))\r\n throw illegal(token);\r\n push(token);\r\n parseField(type, s_optional);\r\n break;\r\n }\r\n }\r\n skip(s_semi, true);\r\n } else\r\n skip(s_semi);\r\n parent.add(type);\r\n }\r\n\r\n function parseField(parent, rule, extend) {\r\n var type = next();\r\n if (!typeRefRe.test(type))\r\n throw illegal(type, s_type);\r\n var name = next();\r\n if (!nameRe.test(name))\r\n throw illegal(name, s_name);\r\n name = camelCase(name);\r\n skip(\"=\");\r\n var id = parseId(next());\r\n var field = parseInlineOptions(new Field(name, id, type, rule, extend));\r\n if (field.repeated)\r\n field.setOption(\"packed\", isProto3, /* ifNotSet */ true);\r\n parent.add(field);\r\n }\r\n\r\n function parseMapField(parent) {\r\n skip(\"<\");\r\n var keyType = next();\r\n if (types.mapKey[keyType] === undefined)\r\n throw illegal(keyType, s_type);\r\n skip(\",\");\r\n var valueType = next();\r\n if (!typeRefRe.test(valueType))\r\n throw illegal(valueType, s_type);\r\n skip(\">\");\r\n var name = next();\r\n if (!nameRe.test(name))\r\n throw illegal(name, s_name);\r\n name = camelCase(name);\r\n skip(\"=\");\r\n var id = parseId(next());\r\n var field = parseInlineOptions(new MapField(name, id, keyType, valueType));\r\n parent.add(field);\r\n }\r\n\r\n function parseOneOf(parent, token) {\r\n var name = next();\r\n if (!nameRe.test(name))\r\n throw illegal(name, s_name);\r\n name = camelCase(name);\r\n var oneof = new OneOf(name);\r\n if (skip(s_open, true)) {\r\n while ((token = next()) !== s_close) {\r\n if (token === s_option) {\r\n parseOption(oneof, token);\r\n skip(s_semi);\r\n } else {\r\n push(token);\r\n parseField(oneof, s_optional);\r\n }\r\n }\r\n skip(s_semi, true);\r\n } else\r\n skip(s_semi);\r\n parent.add(oneof);\r\n }\r\n\r\n function parseEnum(parent, token) {\r\n var name = next();\r\n if (!nameRe.test(name))\r\n throw illegal(name, s_name);\r\n var values = {};\r\n var enm = new Enum(name, values);\r\n if (skip(s_open, true)) {\r\n while ((token = next()) !== s_close) {\r\n if (lower(token) === s_option)\r\n parseOption(enm);\r\n else\r\n parseEnumField(enm, token);\r\n }\r\n skip(s_semi, true);\r\n } else\r\n skip(s_semi);\r\n parent.add(enm);\r\n }\r\n\r\n function parseEnumField(parent, token) {\r\n if (!nameRe.test(token))\r\n throw illegal(token, s_name);\r\n var name = token;\r\n skip(\"=\");\r\n var value = parseId(next(), true);\r\n parseInlineOptions(parent.values[name] = new Number(value)); // eslint-disable-line no-new-wrappers\r\n }\r\n\r\n function parseOption(parent, token) {\r\n var custom = skip(s_bopen, true);\r\n var name = next();\r\n if (!typeRefRe.test(name))\r\n throw illegal(name, s_name);\r\n if (custom) {\r\n skip(s_bclose);\r\n name = s_bopen + name + s_bclose;\r\n token = peek();\r\n if (fqTypeRefRe.test(token)) {\r\n name += token;\r\n next();\r\n }\r\n }\r\n skip(\"=\");\r\n parseOptionValue(parent, name);\r\n }\r\n\r\n function parseOptionValue(parent, name) {\r\n if (skip(s_open, true)) {\r\n while ((token = next()) !== s_close) {\r\n if (!nameRe.test(token))\r\n throw illegal(token, s_name);\r\n name = name + \".\" + token;\r\n if (skip(\":\", true))\r\n setOption(parent, name, readValue(true));\r\n else\r\n parseOptionValue(parent, name);\r\n }\r\n skip(s_semi, true);\r\n } else\r\n setOption(parent, name, readValue(true));\r\n // Does not enforce a delimiter to be universal\r\n }\r\n\r\n function setOption(parent, name, value) {\r\n if (parent.setOption)\r\n parent.setOption(name, value);\r\n else\r\n parent[name] = value;\r\n }\r\n\r\n function parseInlineOptions(parent) {\r\n if (skip(\"[\", true)) {\r\n do {\r\n parseOption(parent, s_option);\r\n } while (skip(\",\", true));\r\n skip(\"]\");\r\n }\r\n skip(s_semi);\r\n return parent;\r\n }\r\n\r\n function parseService(parent, token) {\r\n token = next();\r\n if (!nameRe.test(token))\r\n throw illegal(token, \"service name\");\r\n var name = token;\r\n var service = new Service(name);\r\n if (skip(s_open, true)) {\r\n while ((token = next()) !== s_close) {\r\n var tokenLower = lower(token);\r\n switch (tokenLower) {\r\n case s_option:\r\n parseOption(service, tokenLower);\r\n skip(s_semi);\r\n break;\r\n case \"rpc\":\r\n parseMethod(service, tokenLower);\r\n break;\r\n default:\r\n throw illegal(token);\r\n }\r\n }\r\n skip(s_semi, true);\r\n } else\r\n skip(s_semi);\r\n parent.add(service);\r\n }\r\n\r\n function parseMethod(parent, token) {\r\n var type = token;\r\n var name = next();\r\n if (!nameRe.test(name))\r\n throw illegal(name, s_name);\r\n var requestType, requestStream,\r\n responseType, responseStream;\r\n skip(s_bopen);\r\n var st;\r\n if (skip(st = \"stream\", true))\r\n requestStream = true;\r\n if (!typeRefRe.test(token = next()))\r\n throw illegal(token);\r\n requestType = token;\r\n skip(s_bclose); skip(\"returns\"); skip(s_bopen);\r\n if (skip(st, true))\r\n responseStream = true;\r\n if (!typeRefRe.test(token = next()))\r\n throw illegal(token);\r\n responseType = token;\r\n skip(s_bclose);\r\n var method = new Method(name, type, requestType, responseType, requestStream, responseStream);\r\n if (skip(s_open, true)) {\r\n while ((token = next()) !== s_close) {\r\n var tokenLower = lower(token);\r\n switch (tokenLower) {\r\n case s_option:\r\n parseOption(method, tokenLower);\r\n skip(s_semi);\r\n break;\r\n default:\r\n throw illegal(token);\r\n }\r\n }\r\n skip(s_semi, true);\r\n } else\r\n skip(s_semi);\r\n parent.add(method);\r\n }\r\n\r\n function parseExtension(parent, token) {\r\n var reference = next();\r\n if (!typeRefRe.test(reference))\r\n throw illegal(reference, \"reference\");\r\n if (skip(s_open, true)) {\r\n while ((token = next()) !== s_close) {\r\n var tokenLower = lower(token);\r\n switch (tokenLower) {\r\n case s_required:\r\n case s_repeated:\r\n case s_optional:\r\n parseField(parent, tokenLower, reference);\r\n break;\r\n default:\r\n if (!isProto3 || !typeRefRe.test(token))\r\n throw illegal(token);\r\n push(token);\r\n parseField(parent, s_optional, reference);\r\n break;\r\n }\r\n }\r\n skip(s_semi, true);\r\n } else\r\n skip(s_semi);\r\n }\r\n\r\n var token;\r\n while ((token = next()) !== null) {\r\n var tokenLower = lower(token);\r\n switch (tokenLower) {\r\n\r\n case \"package\":\r\n if (!head)\r\n throw illegal(token);\r\n parsePackage();\r\n break;\r\n\r\n case \"import\":\r\n if (!head)\r\n throw illegal(token);\r\n parseImport();\r\n break;\r\n\r\n case \"syntax\":\r\n if (!head)\r\n throw illegal(token);\r\n parseSyntax();\r\n break;\r\n\r\n case s_option:\r\n if (!head)\r\n throw illegal(token);\r\n parseOption(ptr, token);\r\n skip(s_semi);\r\n break;\r\n\r\n default:\r\n if (parseCommon(ptr, token)) {\r\n head = false;\r\n continue;\r\n }\r\n throw illegal(token);\r\n }\r\n }\r\n\r\n return {\r\n 'package' : pkg,\r\n 'imports' : imports,\r\n 'weakImports' : weakImports,\r\n 'syntax' : syntax,\r\n 'root' : root\r\n };\r\n}\r\n","\"use strict\";\r\nmodule.exports = Prototype;\r\n\r\n/**\r\n * Options passed to the {@link Prototype|prototype constructor}, modifying its behavior.\r\n * @typedef PrototypeOptions\r\n * @type {Object}\r\n * @property {boolean} [fieldsOnly=false] Sets only properties that reference a field\r\n */\r\n\r\n/**\r\n * Constructs a new prototype.\r\n * This method should be called from your custom constructors, i.e. `Prototype.call(this, properties)`.\r\n * @classdesc Runtime message prototype ready to be extended by custom classes or generated code.\r\n * @constructor\r\n * @param {Object.} [properties] Properties to set\r\n * @param {PrototypeOptions} [options] Prototype options\r\n * @abstract\r\n * @see {@link inherits}\r\n * @see {@link Class}\r\n */\r\nfunction Prototype(properties, options) {\r\n if (properties) {\r\n var any = !(options && options.fieldsOnly),\r\n fields = this.constructor.$type.fields,\r\n keys = Object.keys(properties);\r\n for (var i = 0; i < keys.length; ++i)\r\n if (fields[keys[i]] || any)\r\n this[keys[i]] = properties[keys[i]];\r\n }\r\n}\r\n\r\n/**\r\n * Converts a runtime message to a JSON object.\r\n * @param {Object.} [options] Conversion options\r\n * @param {boolean} [options.fieldsOnly=false] Converts only properties that reference a field\r\n * @param {Function} [options.long] Long conversion type. Only relevant with a long library.\r\n * Valid values are `String` and `Number` (the global types).\r\n * Defaults to a possibly unsafe number without, and a `Long` with a long library.\r\n * @param {Function} [options.enum=Number] Enum value conversion type.\r\n * Valid values are `String` and `Number` (the global types).\r\n * Defaults to the numeric ids.\r\n * @returns {Object.} JSON object\r\n */\r\nPrototype.prototype.asJSON = function asJSON(options) {\r\n var any = !(options && options.fieldsOnly),\r\n fields = this.constructor.$type.fields,\r\n json = {};\r\n var keys = Object.keys(this);\r\n for (var i = 0, key; i < keys.length; ++i) {\r\n var field = fields[key = keys[i]],\r\n value = this[key];\r\n if (field) {\r\n if (field.repeated) {\r\n if (value && value.length) {\r\n var array = new Array(value.length);\r\n for (var j = 0, l = value.length; j < l; ++j)\r\n array[j] = field.jsonConvert(value[j], options);\r\n json[key] = array;\r\n }\r\n } else\r\n json[key] = field.jsonConvert(value, options);\r\n } else if (any)\r\n json[key] = value;\r\n }\r\n return json;\r\n};\r\n","\"use strict\";\r\nmodule.exports = Reader;\r\n\r\nReader.BufferReader = BufferReader;\r\n\r\nvar util = require(21),\r\n ieee754 = require(1);\r\nvar LongBits = util.LongBits,\r\n Long = util.Long;\r\n\r\nfunction indexOutOfRange(reader, writeLength) {\r\n return RangeError(\"index out of range: \" + reader.pos + \" + \" + (writeLength || 1) + \" > \" + reader.len);\r\n}\r\n\r\n/**\r\n * Constructs a new reader using the specified buffer.\r\n * When called as a function, returns an appropriate reader for the specified buffer.\r\n * @classdesc Wire format reader using `Uint8Array` if available, otherwise `Array`.\r\n * @constructor\r\n * @param {Uint8Array} buffer Buffer to read from\r\n */\r\nfunction Reader(buffer) {\r\n if (!(this instanceof Reader))\r\n return util.Buffer && (!buffer || util.Buffer.isBuffer(buffer)) && new BufferReader(buffer) || new Reader(buffer);\r\n\r\n /**\r\n * Read buffer.\r\n * @type {Uint8Array}\r\n */\r\n this.buf = buffer;\r\n\r\n /**\r\n * Read buffer position.\r\n * @type {number}\r\n */\r\n this.pos = 0;\r\n\r\n /**\r\n * Read buffer length.\r\n * @type {number}\r\n */\r\n this.len = buffer.length;\r\n}\r\n\r\n/** @alias Reader.prototype */\r\nvar ReaderPrototype = Reader.prototype;\r\n\r\nvar ArrayImpl = typeof Uint8Array !== 'undefined' ? Uint8Array : Array;\r\nReaderPrototype._slice = ArrayImpl.prototype.slice || ArrayImpl.prototype.subarray;\r\n\r\n/**\r\n * Tag read.\r\n * @constructor\r\n * @param {number} id Field id\r\n * @param {number} wireType Wire type\r\n * @ignore\r\n */\r\nfunction Tag(id, wireType) {\r\n this.id = id;\r\n this.wireType = wireType;\r\n}\r\n\r\n/**\r\n * Reads a tag.\r\n * @returns {{id: number, wireType: number}} Field id and wire type\r\n */\r\nReaderPrototype.tag = function read_tag() {\r\n if (this.pos >= this.len)\r\n throw indexOutOfRange(this);\r\n return new Tag(this.buf[this.pos] >>> 3, this.buf[this.pos++] & 7);\r\n};\r\n\r\n/**\r\n * Reads a varint as a signed 32 bit value.\r\n * @returns {number} Value read\r\n */\r\nReaderPrototype.int32 = function read_int32() {\r\n var value = 0,\r\n shift = 0,\r\n octet = 0;\r\n do {\r\n if (this.pos >= this.len)\r\n throw indexOutOfRange(this);\r\n octet = this.buf[this.pos++];\r\n if (shift < 32)\r\n value |= (octet & 127) << shift;\r\n shift += 7;\r\n } while (octet & 128);\r\n return value;\r\n};\r\n\r\n/**\r\n * Reads a varint as an unsigned 32 bit value.\r\n * @returns {number} Value read\r\n */\r\nReaderPrototype.uint32 = function read_uint32() {\r\n return this.int32() >>> 0;\r\n};\r\n\r\n/**\r\n * Reads a zig-zag encoded varint as a signed 32 bit value.\r\n * @returns {number} Value read\r\n */\r\nReaderPrototype.sint32 = function read_sint32() {\r\n var value = this.int32();\r\n return value >>> 1 ^ -(value & 1);\r\n};\r\n\r\n/**\r\n * Reads a possibly 64 bits varint.\r\n * @returns {LongBits} Long bits\r\n * @this {Reader}\r\n * @inner\r\n * @ignore\r\n */\r\nfunction readLongVarint() {\r\n var lo = 0, hi = 0,\r\n i = 0, b = 0;\r\n if (this.len - this.pos > 9) { // fast route\r\n for (i = 0; i < 4; ++i) {\r\n b = this.buf[this.pos++];\r\n lo |= (b & 127) << i * 7;\r\n if (b < 128)\r\n return new LongBits(lo >>> 0, hi >>> 0);\r\n }\r\n b = this.buf[this.pos++];\r\n lo |= (b & 127) << 28;\r\n hi |= (b & 127) >> 4;\r\n if (b < 128)\r\n return new LongBits(lo >>> 0, hi >>> 0);\r\n for (i = 0; i < 5; ++i) {\r\n b = this.buf[this.pos++];\r\n hi |= (b & 127) << i * 7 + 3;\r\n if (b < 128)\r\n return new LongBits(lo >>> 0, hi >>> 0);\r\n }\r\n } else {\r\n for (i = 0; i < 4; ++i) {\r\n if (this.pos >= this.len)\r\n throw indexOutOfRange(this);\r\n b = this.buf[this.pos++];\r\n lo |= (b & 127) << i * 7;\r\n if (b < 128)\r\n return new LongBits(lo >>> 0, hi >>> 0);\r\n }\r\n if (this.pos >= this.len)\r\n throw indexOutOfRange(this);\r\n b = this.buf[this.pos++];\r\n lo |= (b & 127) << 28;\r\n hi |= (b & 127) >> 4;\r\n if (b < 128)\r\n return new LongBits(lo >>> 0, hi >>> 0);\r\n for (i = 0; i < 5; ++i) {\r\n if (this.pos >= this.len)\r\n throw indexOutOfRange(this);\r\n b = this.buf[this.pos++];\r\n hi |= (b & 127) << i * 7 + 3;\r\n if (b < 128)\r\n return new LongBits(lo >>> 0, hi >>> 0);\r\n }\r\n }\r\n throw Error(\"invalid varint encoding\");\r\n}\r\n\r\nfunction read_int64_long() {\r\n return readLongVarint.call(this).toLong(); // eslint-disable-line no-invalid-this\r\n}\r\n\r\nfunction read_int64_number() {\r\n return readLongVarint.call(this).toNumber(); // eslint-disable-line no-invalid-this\r\n}\r\n\r\n/**\r\n * Reads a varint as a signed 64 bit value.\r\n * @function\r\n * @returns {Long|number} Value read\r\n */\r\nReaderPrototype.int64 = Long && read_int64_long || read_int64_number;\r\n\r\nfunction read_uint64_long() {\r\n return readLongVarint.call(this).toLong(true); // eslint-disable-line no-invalid-this\r\n}\r\n\r\nfunction read_uint64_number() {\r\n return readLongVarint.call(this).toNumber(true); // eslint-disable-line no-invalid-this\r\n}\r\n\r\n/**\r\n * Reads a varint as an unsigned 64 bit value.\r\n * @function\r\n * @returns {Long|number} Value read\r\n */\r\nReaderPrototype.uint64 = Long && read_uint64_long || read_uint64_number;\r\n\r\nfunction read_sint64_long() {\r\n return readLongVarint.call(this).zzDecode().toLong(); // eslint-disable-line no-invalid-this\r\n}\r\n\r\nfunction read_sint64_number() {\r\n return readLongVarint.call(this).zzDecode().toNumber(); // eslint-disable-line no-invalid-this\r\n}\r\n\r\n/**\r\n * Reads a zig-zag encoded varint as a signed 64 bit value.\r\n * @function\r\n * @returns {Long|number} Value read\r\n */\r\nReaderPrototype.sint64 = Long && read_sint64_long || read_sint64_number;\r\n\r\n/**\r\n * Reads a varint as a boolean.\r\n * @returns {boolean} Value read\r\n */\r\nReaderPrototype.bool = function read_bool() {\r\n return this.int32() !== 0;\r\n};\r\n\r\n/**\r\n * Reads fixed 32 bits as a number.\r\n * @returns {number} Value read\r\n */\r\nReaderPrototype.fixed32 = function read_fixed32() {\r\n if (this.pos + 4 > this.len)\r\n throw indexOutOfRange(this, 4);\r\n this.pos += 4;\r\n return this.buf[this.pos - 4]\r\n | this.buf[this.pos - 3] << 8\r\n | this.buf[this.pos - 2] << 16\r\n | this.buf[this.pos - 1] << 24;\r\n};\r\n\r\n/**\r\n * Reads zig-zag encoded fixed 32 bits as a number.\r\n * @returns {number} Value read\r\n */\r\nReaderPrototype.sfixed32 = function read_sfixed32() {\r\n var value = this.fixed32();\r\n return value >>> 1 ^ -(value & 1);\r\n};\r\n\r\n/**\r\n * Reads a 64 bit value.\r\n * @returns {LongBits} Long bits\r\n * @this {Reader}\r\n * @inner \r\n * @ignore\r\n */\r\nfunction readLongFixed() {\r\n if (this.pos + 8 > this.len)\r\n throw indexOutOfRange(this, 8);\r\n return new LongBits(\r\n ( this.buf[this.pos++]\r\n | this.buf[this.pos++] << 8\r\n | this.buf[this.pos++] << 16\r\n | this.buf[this.pos++] << 24 ) >>> 0\r\n ,\r\n ( this.buf[this.pos++]\r\n | this.buf[this.pos++] << 8\r\n | this.buf[this.pos++] << 16\r\n | this.buf[this.pos++] << 24 ) >>> 0\r\n );\r\n}\r\n\r\nfunction read_fixed64_long() {\r\n return readLongFixed.call(this).toLong(true); // eslint-disable-line no-invalid-this\r\n}\r\n\r\nfunction read_fixed64_number() {\r\n return readLongFixed.call(this).toNumber(true); // eslint-disable-line no-invalid-this\r\n}\r\n\r\n/**\r\n * Reads fixed 64 bits.\r\n * @function\r\n * @returns {Long|number} Value read\r\n */\r\nReaderPrototype.fixed64 = Long && read_fixed64_long || read_fixed64_number;\r\n\r\nfunction read_sfixed64_long() {\r\n return readLongFixed.call(this).zzDecode().toLong(); // eslint-disable-line no-invalid-this\r\n}\r\n\r\nfunction read_sfixed64_number() {\r\n return readLongFixed.call(this).zzDecode().toNumber(); // eslint-disable-line no-invalid-this\r\n}\r\n\r\n/**\r\n * Reads zig-zag encoded fixed 64 bits.\r\n * @returns {Long|number} Value read\r\n */\r\nReaderPrototype.sfixed64 = Long && read_sfixed64_long || read_sfixed64_number;\r\n\r\n/**\r\n * Reads a float (32 bit) as a number.\r\n * @function\r\n * @returns {number} Value read\r\n */\r\nReaderPrototype.float = function read_float() {\r\n if (this.pos + 4 > this.len)\r\n throw indexOutOfRange(this, 4);\r\n var value = ieee754.read(this.buf, this.pos, false, 23, 4);\r\n this.pos += 4;\r\n return value;\r\n};\r\n\r\n/**\r\n * Reads a double (64 bit float) as a number.\r\n * @function\r\n * @returns {number} Value read\r\n */\r\nReaderPrototype.double = function read_double() {\r\n if (this.pos + 8 > this.len)\r\n throw indexOutOfRange(this, 4);\r\n var value = ieee754.read(this.buf, this.pos, false, 52, 8);\r\n this.pos += 8;\r\n return value;\r\n};\r\n\r\n/**\r\n * Reads a sequence of bytes preceeded by its length as a varint.\r\n * @returns {Uint8Array} Value read\r\n */\r\nReaderPrototype.bytes = function read_bytes() {\r\n var length = this.int32() >>> 0,\r\n start = this.pos,\r\n end = this.pos + length;\r\n if (end > this.len)\r\n throw indexOutOfRange(this, length);\r\n this.pos += length;\r\n return start === end // fix for IE 10/Win8 and others' subarray returning array of size 1\r\n ? new this.buf.constructor(0)\r\n : this._slice.call(this.buf, start, end);\r\n};\r\n\r\n/**\r\n * Reads a string preceeded by its byte length as a varint.\r\n * @returns {string} Value read\r\n */\r\nReaderPrototype.string = function read_string() {\r\n // ref: https://github.com/google/closure-library/blob/master/closure/goog/crypt/crypt.js\r\n var bytes = this.bytes(),\r\n len = bytes.length;\r\n if (len) {\r\n var out = new Array(len), p = 0, c = 0;\r\n while (p < len) {\r\n var c1 = bytes[p++];\r\n if (c1 < 128)\r\n out[c++] = c1;\r\n else if (c1 > 191 && c1 < 224)\r\n out[c++] = (c1 & 31) << 6 | bytes[p++] & 63;\r\n else if (c1 > 239 && c1 < 365) {\r\n var u = ((c1 & 7) << 18 | (bytes[p++] & 63) << 12 | (bytes[p++] & 63) << 6 | bytes[p++] & 63) - 0x10000;\r\n out[c++] = 0xD800 + (u >> 10);\r\n out[c++] = 0xDC00 + (u & 1023);\r\n } else\r\n out[c++] = (c1 & 15) << 12 | (bytes[p++] & 63) << 6 | bytes[p++] & 63;\r\n }\r\n return String.fromCharCode.apply(String, out.slice(0, c));\r\n }\r\n return \"\";\r\n};\r\n\r\n/**\r\n * Skips the specified number of bytes if specified, otherwise skips a varint.\r\n * @param {number} [length] Length if known, otherwise a varint is assumed\r\n * @returns {Reader} `this`\r\n */\r\nReaderPrototype.skip = function skip(length) {\r\n if (length === undefined) {\r\n do {\r\n if (this.pos >= this.len)\r\n throw indexOutOfRange(this);\r\n } while (this.buf[this.pos++] & 128);\r\n } else {\r\n if (this.pos + length > this.len)\r\n throw indexOutOfRange(this, length);\r\n this.pos += length;\r\n }\r\n return this;\r\n};\r\n\r\n/**\r\n * Skips the next element of the specified wire type.\r\n * @param {number} wireType Wire type received\r\n * @returns {Reader} `this`\r\n */\r\nReaderPrototype.skipType = function(wireType) {\r\n switch (wireType) {\r\n case 0:\r\n this.skip();\r\n break;\r\n case 1:\r\n this.skip(8);\r\n break;\r\n case 2:\r\n this.skip(this.uint32());\r\n break;\r\n case 3:\r\n do { // eslint-disable-line no-constant-condition\r\n var tag = this.tag();\r\n if (tag.wireType === 4)\r\n break;\r\n this.skipType(tag.wireType);\r\n } while (true);\r\n break;\r\n case 5:\r\n this.skip(4);\r\n break;\r\n default:\r\n throw Error(\"invalid wire type: \" + wireType);\r\n }\r\n return this;\r\n};\r\n\r\n/**\r\n * Resets this instance and frees all resources.\r\n * @param {Uint8Array} [buffer] New buffer for a new sequence of read operations\r\n * @returns {Reader} `this`\r\n */\r\nReaderPrototype.reset = function reset(buffer) {\r\n if (buffer) {\r\n this.buf = buffer;\r\n this.len = buffer.length;\r\n } else {\r\n this.buf = null; // makes it throw\r\n this.len = 0;\r\n }\r\n this.pos = 0;\r\n return this;\r\n};\r\n\r\n/**\r\n * Finishes the current sequence of read operations, frees all resources and returns the remaining buffer.\r\n * @param {Uint8Array} [buffer] New buffer for a new sequence of read operations\r\n * @returns {Uint8Array} Finished buffer\r\n */\r\nReaderPrototype.finish = function finish(buffer) {\r\n var remain = this.pos\r\n ? this._slice.call(this.buf, this.pos)\r\n : this.buf;\r\n this.reset(buffer);\r\n return remain;\r\n};\r\n\r\n// One time function to initialize BufferReader with the now-known buffer implementation's slice method\r\nvar initBufferReader = function() {\r\n if (!util.Buffer)\r\n throw Error(\"Buffer is not supported\");\r\n BufferReaderPrototype._slice = util.Buffer.prototype.slice;\r\n initBufferReader = false;\r\n};\r\n\r\n/**\r\n * Constructs a new buffer reader.\r\n * @classdesc Wire format reader using node buffers.\r\n * @extends Reader\r\n * @constructor\r\n * @param {Buffer} buffer Buffer to read from\r\n */\r\nfunction BufferReader(buffer) {\r\n if (initBufferReader)\r\n initBufferReader();\r\n Reader.call(this, buffer);\r\n}\r\n\r\n/** @alias BufferReader.prototype */\r\nvar BufferReaderPrototype = BufferReader.prototype = Object.create(Reader.prototype);\r\n\r\nBufferReaderPrototype.constructor = BufferReader;\r\n\r\n/**\r\n * @override\r\n */\r\nBufferReaderPrototype.float = function read_float_buffer() {\r\n if (this.pos + 4 > this.len)\r\n throw indexOutOfRange(this, 4);\r\n var value = this.buf.readFloatLE(this.pos, true);\r\n this.pos += 4;\r\n return value;\r\n};\r\n\r\n/**\r\n * @override\r\n */\r\nBufferReaderPrototype.double = function read_double_buffer() {\r\n if (this.pos + 8 > this.len)\r\n throw indexOutOfRange(this, 8);\r\n var value = this.buf.readDoubleLE(this.pos, true);\r\n this.pos += 8;\r\n return value;\r\n};\r\n\r\n/**\r\n * @override\r\n */\r\nBufferReaderPrototype.string = function read_string_buffer() {\r\n var length = this.int32() >>> 0,\r\n start = this.pos,\r\n end = this.pos + length;\r\n if (end > this.len)\r\n throw indexOutOfRange(this, length);\r\n this.pos += length;\r\n return this.buf.toString(\"utf8\", start, end);\r\n};\r\n\r\n/**\r\n * @override\r\n */\r\nBufferReaderPrototype.finish = function finish_buffer(buffer) {\r\n var remain = this.pos ? this.buf.slice(this.pos) : this.buf;\r\n this.reset(buffer);\r\n return remain;\r\n};\r\n","\"use strict\";\r\nmodule.exports = Root;\r\n\r\nvar Namespace = require(10);\r\n/** @alias Root.prototype */\r\nvar RootPrototype = Namespace.extend(Root);\r\n\r\nvar Field = require(6),\r\n util = require(21),\r\n common = require(2);\r\n\r\n/**\r\n * Constructs a new root namespace.\r\n * @classdesc Root namespace wrapping all types, enums, services, sub-namespaces etc. that belong together.\r\n * @extends Namespace\r\n * @constructor\r\n * @param {Object} [options] Top level options\r\n */\r\nfunction Root(options) {\r\n Namespace.call(this, \"\", options);\r\n\r\n /**\r\n * Deferred extension fields.\r\n * @type {Field[]}\r\n */\r\n this.deferred = [];\r\n\r\n /**\r\n * Resolved file names of loaded files. \r\n * @type {string[]}\r\n */\r\n this.files = [];\r\n}\r\n\r\n/**\r\n * Loads a JSON definition into a root namespace.\r\n * @param {*} json JSON definition\r\n * @param {Root} [root] Root namespace, defaults to create a new one if omitted\r\n * @returns {Root} Root namespace\r\n */\r\nRoot.fromJSON = function fromJSON(json, root) {\r\n if (!root)\r\n root = new Root();\r\n return root.setOptions(json.options).addJSON(json.nested);\r\n};\r\n\r\n/**\r\n * Resolves the path of an imported file, relative to the importing origin.\r\n * This method exists so you can override it with your own logic in case your imports are scattered over multiple directories.\r\n * @function\r\n * @param {string} origin The file name of the importing file\r\n * @param {string} target The file name being imported\r\n * @returns {string} Resolved path to `target`\r\n */\r\nRootPrototype.resolvePath = util.resolvePath;\r\n\r\n/**\r\n * Loads one or multiple .proto or preprocessed .json files into this root namespace.\r\n * @param {string|string[]} filename Names of one or multiple files to load\r\n * @param {function(?Error, Root=)} [callback] Node-style callback function\r\n * @returns {Promise|undefined} A promise if `callback` has been omitted\r\n * @throws {TypeError} If arguments are invalid\r\n */\r\nRootPrototype.load = function load(filename, callback) {\r\n var self = this;\r\n if (!callback)\r\n return util.asPromise(load, self, filename);\r\n\r\n // Finishes loading by calling the callback (exactly once)\r\n function finish(err, root) {\r\n if (!callback)\r\n return;\r\n var cb = callback;\r\n callback = null;\r\n cb(err, root);\r\n }\r\n\r\n // Processes a single file\r\n function process(filename, source) {\r\n try {\r\n if (util.isString(source) && source.charAt(0) === \"{\")\r\n source = JSON.parse(source);\r\n if (!util.isString(source))\r\n self.setOptions(source.options).addJSON(source.nested);\r\n else {\r\n var parsed = require(13)(source, self);\r\n if (parsed.imports)\r\n parsed.imports.forEach(function(name) {\r\n fetch(self.resolvePath(filename, name));\r\n });\r\n if (parsed.weakImports)\r\n parsed.weakImports.forEach(function(name) {\r\n fetch(self.resolvePath(filename, name), true);\r\n });\r\n }\r\n } catch (err) {\r\n finish(err);\r\n return;\r\n }\r\n if (!queued)\r\n finish(null, self);\r\n }\r\n\r\n // Fetches a single file\r\n function fetch(filename, weak) {\r\n\r\n // Strip path if this file references a bundled definition\r\n var idx = filename.indexOf(\"google/protobuf/\");\r\n if (idx > -1) {\r\n var altname = filename.substring(idx);\r\n if (altname in common)\r\n filename = altname;\r\n }\r\n\r\n // Skip if already loaded\r\n if (self.files.indexOf(filename) > -1)\r\n return;\r\n self.files.push(filename);\r\n\r\n // Shortcut bundled definitions\r\n if (filename in common) {\r\n ++queued;\r\n setTimeout(function() {\r\n --queued;\r\n process(filename, common[filename]);\r\n });\r\n return;\r\n }\r\n\r\n // Otherwise fetch from disk or network\r\n ++queued;\r\n util.fetch(filename, function(err, source) {\r\n --queued;\r\n if (!callback)\r\n return; // terminated meanwhile\r\n if (err) {\r\n if (!weak)\r\n finish(err);\r\n return;\r\n }\r\n process(filename, source);\r\n });\r\n }\r\n var queued = 0;\r\n\r\n // Assembling the root namespace doesn't require working type\r\n // references anymore, so we can load everything in parallel\r\n if (util.isString(filename))\r\n filename = [ filename ];\r\n filename.forEach(function(filename) {\r\n fetch(self.resolvePath(\"\", filename));\r\n });\r\n\r\n if (!queued)\r\n finish(null);\r\n return undefined;\r\n};\r\n\r\n/**\r\n * Handles a deferred declaring extension field by creating a sister field to represent it within its extended type.\r\n * @param {Field} field Declaring extension field witin the declaring type\r\n * @returns {boolean} `true` if successfully added to the extended type, `false` otherwise\r\n * @inner\r\n * @ignore\r\n */\r\nfunction handleExtension(field) {\r\n var extendedType = field.parent.lookup(field.extend);\r\n if (extendedType) {\r\n var sisterField = new Field(field.getFullName(), field.id, field.type, field.rule, undefined, field.options);\r\n sisterField.declaringField = field;\r\n field.extensionField = sisterField;\r\n extendedType.add(sisterField);\r\n return true;\r\n }\r\n return false;\r\n}\r\n\r\n/**\r\n * Called when any object is added to this root or its sub-namespaces.\r\n * @param {ReflectionObject} object Object added\r\n * @returns {undefined}\r\n * @private\r\n */\r\nRootPrototype._handleAdd = function handleAdd(object) {\r\n // Try to handle any deferred extensions\r\n var newDeferred = this.deferred.slice();\r\n this.deferred = []; // because the loop calls handleAdd\r\n var i = 0;\r\n while (i < newDeferred.length)\r\n if (handleExtension(newDeferred[i]))\r\n newDeferred.splice(i, 1);\r\n else\r\n ++i;\r\n this.deferred = newDeferred;\r\n // Handle new declaring extension fields without a sister field yet\r\n if (object instanceof Field && object.extend !== undefined && !object.extensionField && !handleExtension(object) && this.deferred.indexOf(object) < 0)\r\n this.deferred.push(object);\r\n else if (object instanceof Namespace) {\r\n var nested = object.getNestedArray();\r\n for (i = 0; i < nested.length; ++i) // recurse into the namespace\r\n this._handleAdd(nested[i]);\r\n }\r\n};\r\n\r\n/**\r\n * Called when any object is removed from this root or its sub-namespaces.\r\n * @param {ReflectionObject} object Object removed\r\n * @returns {undefined}\r\n * @private\r\n */\r\nRootPrototype._handleRemove = function handleRemove(object) {\r\n if (object instanceof Field) {\r\n // If a deferred declaring extension field, cancel the extension\r\n if (object.extend !== undefined && !object.extensionField) {\r\n var index = this.deferred.indexOf(object);\r\n if (index > -1)\r\n this.deferred.splice(index, 1);\r\n }\r\n // If a declaring extension field with a sister field, remove its sister field\r\n if (object.extensionField) {\r\n object.extensionField.parent.remove(object.extensionField);\r\n object.extensionField = null;\r\n }\r\n } else if (object instanceof Namespace) {\r\n var nested = object.getNestedArray();\r\n for (var i = 0; i < nested.length; ++i) // recurse into the namespace\r\n this._handleRemove(nested[i]);\r\n }\r\n};\r\n\r\n/**\r\n * @override\r\n */\r\nRootPrototype.toString = function toString() {\r\n return this.constructor.name;\r\n};\r\n","\"use strict\";\r\nmodule.exports = Service;\r\n\r\nvar Namespace = require(10);\r\n/** @alias Namespace.prototype */\r\nvar NamespacePrototype = Namespace.prototype;\r\n/** @alias Service.prototype */\r\nvar ServicePrototype = Namespace.extend(Service);\r\n\r\nvar Method = require(9),\r\n util = require(21);\r\n\r\n/**\r\n * Constructs a new service.\r\n * @classdesc Reflected service.\r\n * @extends Namespace\r\n * @constructor\r\n * @param {string} name Service name\r\n * @param {Object.} [options] Service options\r\n * @throws {TypeError} If arguments are invalid\r\n */\r\nfunction Service(name, options) {\r\n Namespace.call(this, name, options);\r\n\r\n /**\r\n * Service methods.\r\n * @type {Object.}\r\n */\r\n this.methods = {}; // toJSON, marker\r\n\r\n /**\r\n * Cached methods as an array.\r\n * @type {?Method[]}\r\n * @private\r\n */\r\n this._methodsArray = null;\r\n}\r\n\r\nObject.defineProperties(ServicePrototype, {\r\n\r\n /**\r\n * Methods of this service as an array for iteration.\r\n * @name Service#methodsArray\r\n * @type {Method[]}\r\n * @readonly\r\n */\r\n methodsArray: {\r\n get: ServicePrototype.getMethodsArray = function getMethodsArray() {\r\n return this._methodsArray || (this._methodsArray = util.toArray(this.methods));\r\n }\r\n }\r\n\r\n});\r\n\r\nfunction clearCache(service) {\r\n service._methodsArray = null;\r\n return service;\r\n}\r\n\r\n/**\r\n * Tests if the specified JSON object describes a service.\r\n * @param {Object} json JSON object to test\r\n * @returns {boolean} `true` if the object describes a service\r\n */\r\nService.testJSON = function testJSON(json) {\r\n return Boolean(json && json.methods);\r\n};\r\n\r\n/**\r\n * Constructs a service from JSON.\r\n * @param {string} name Service name\r\n * @param {Object} json JSON object\r\n * @returns {Service} Created service\r\n * @throws {TypeError} If arguments are invalid\r\n */\r\nService.fromJSON = function fromJSON(name, json) {\r\n var service = new Service(name, json.options);\r\n if (json.methods)\r\n Object.keys(json.methods).forEach(function(methodName) {\r\n service.add(Method.fromJSON(methodName, json.methods[methodName]));\r\n });\r\n return service;\r\n};\r\n\r\n/**\r\n * @override\r\n */\r\nServicePrototype.toJSON = function toJSON() {\r\n var inherited = NamespacePrototype.toJSON.call(this);\r\n return {\r\n options : inherited && inherited.options || undefined,\r\n methods : Namespace.arrayToJSON(this.getMethodsArray()) || {},\r\n nested : inherited && inherited.nested || undefined\r\n };\r\n};\r\n\r\n/**\r\n * @override\r\n */\r\nServicePrototype.get = function get(name) {\r\n return NamespacePrototype.get.call(this, name) || this.methods[name] || null;\r\n};\r\n\r\n/**\r\n * @override\r\n */\r\nServicePrototype.resolveAll = function resolve() {\r\n var methods = this.getMethodsArray();\r\n for (var i = 0; i < methods.length; ++i)\r\n methods[i].resolve();\r\n return NamespacePrototype.resolve.call(this);\r\n};\r\n\r\n/**\r\n * @override\r\n */\r\nServicePrototype.add = function add(object) {\r\n if (this.get(object.name))\r\n throw Error(\"duplicate name '\" + object.name + '\" in ' + this);\r\n if (object instanceof Method) {\r\n this.methods[object.name] = object;\r\n object.parent = this;\r\n return clearCache(this);\r\n }\r\n return NamespacePrototype.add.call(this, object);\r\n};\r\n\r\n/**\r\n * @override\r\n */\r\nServicePrototype.remove = function remove(object) {\r\n if (object instanceof Method) {\r\n if (this.methods[object.name] !== object)\r\n throw Error(object + \" is not a member of \" + this);\r\n delete this.methods[object.name];\r\n object.parent = null;\r\n return clearCache(this);\r\n }\r\n return NamespacePrototype.remove.call(this, object);\r\n};\r\n","\"use strict\";\r\nmodule.exports = tokenize;\r\n\r\nvar delimRe = /[\\s{}=;:[\\],'\"()<>]/g,\r\n stringDoubleRe = /(?:\"([^\"\\\\]*(?:\\\\.[^\"\\\\]*)*)\")/g,\r\n stringSingleRe = /(?:'([^'\\\\]*(?:\\\\.[^'\\\\]*)*)')/g;\r\n\r\n/**\r\n * Handle object returned from {@link tokenize}.\r\n * @typedef {Object} TokenizerHandle\r\n * @property {function():number} line Gets the current line number\r\n * @property {function():?string} next Gets the next token and advances (`null` on eof)\r\n * @property {function():?string} peek Peeks for the next token (`null` on eof)\r\n * @property {function(string)} push Pushes a token back to the stack\r\n * @property {function(string, boolean=):boolean} skip Skips a token, returns its presence and advances or, if non-optional and not present, throws\r\n */\r\n\r\nvar s_nl = \"\\n\",\r\n s_sl = '/',\r\n s_as = '*';\r\n\r\nfunction unescape(str) {\r\n return str.replace(/\\\\(.?)/g, function($0, $1) {\r\n switch ($1) {\r\n case \"\\\\\":\r\n case \"\":\r\n return $1;\r\n case \"0\":\r\n return \"\\u0000\";\r\n default:\r\n return $1;\r\n }\r\n });\r\n}\r\n\r\n/**\r\n * Tokenizes the given .proto source and returns an object with useful utility functions.\r\n * @param {string} source Source contents\r\n * @returns {TokenizerHandle} Tokenizer handle\r\n */\r\nfunction tokenize(source) {\r\n /* eslint-disable default-case, callback-return */\r\n source = source.toString();\r\n \r\n var offset = 0,\r\n length = source.length,\r\n line = 1;\r\n \r\n var stack = [];\r\n\r\n var stringDelim = null;\r\n\r\n /**\r\n * Creates an error for illegal syntax.\r\n * @param {string} subject Subject\r\n * @returns {Error} Error created\r\n * @inner\r\n */\r\n function illegal(subject) {\r\n return Error(\"illegal \" + subject + \" (line \" + line + \")\");\r\n }\r\n\r\n /**\r\n * Reads a string till its end.\r\n * @returns {string} String read\r\n * @inner\r\n */\r\n function readString() {\r\n var re = stringDelim === '\"' ? stringDoubleRe : stringSingleRe;\r\n re.lastIndex = offset - 1;\r\n var match = re.exec(source);\r\n if (!match)\r\n throw illegal(\"string\");\r\n offset = re.lastIndex;\r\n push(stringDelim);\r\n stringDelim = null;\r\n return unescape(match[1]);\r\n }\r\n\r\n /**\r\n * Gets the character at `pos` within the source.\r\n * @param {number} pos Position\r\n * @returns {string} Character\r\n * @inner\r\n */\r\n function charAt(pos) {\r\n return source.charAt(pos);\r\n }\r\n\r\n /**\r\n * Obtains the next token.\r\n * @returns {?string} Next token or `null` on eof\r\n * @inner\r\n */\r\n function next() {\r\n if (stack.length > 0)\r\n return stack.shift();\r\n if (stringDelim)\r\n return readString();\r\n var repeat,\r\n prev,\r\n curr;\r\n do {\r\n if (offset === length)\r\n return null;\r\n repeat = false;\r\n while (/\\s/.test(curr = charAt(offset))) {\r\n if (curr === s_nl)\r\n ++line;\r\n if (++offset === length)\r\n return null;\r\n }\r\n if (charAt(offset) === s_sl) {\r\n if (++offset === length)\r\n throw illegal(\"comment\");\r\n if (charAt(offset) === s_sl) { // Line\r\n while (charAt(++offset) !== s_nl)\r\n if (offset === length)\r\n return null;\r\n ++offset;\r\n ++line;\r\n repeat = true;\r\n } else if ((curr = charAt(offset)) === s_as) { /* Block */\r\n do {\r\n if (curr === s_nl)\r\n ++line;\r\n if (++offset === length)\r\n return null;\r\n prev = curr;\r\n curr = charAt(offset);\r\n } while (prev !== s_as || curr !== s_sl);\r\n ++offset;\r\n repeat = true;\r\n } else\r\n return s_sl;\r\n }\r\n } while (repeat);\r\n\r\n if (offset === length)\r\n return null;\r\n var end = offset;\r\n delimRe.lastIndex = 0;\r\n var delim = delimRe.test(charAt(end++));\r\n if (!delim)\r\n while (end < length && !delimRe.test(charAt(end)))\r\n ++end;\r\n var token = source.substring(offset, offset = end);\r\n if (token === '\"' || token === \"'\")\r\n stringDelim = token;\r\n return token;\r\n }\r\n\r\n /**\r\n * Pushes a token back to the stack.\r\n * @param {string} token Token\r\n * @returns {undefined}\r\n * @inner\r\n */\r\n function push(token) {\r\n stack.push(token);\r\n }\r\n\r\n /**\r\n * Peeks for the next token.\r\n * @returns {?string} Token or `null` on eof\r\n * @inner\r\n */\r\n function peek() {\r\n if (!stack.length) {\r\n var token = next();\r\n if (token === null)\r\n return null;\r\n push(token);\r\n }\r\n return stack[0];\r\n }\r\n\r\n /**\r\n * Skips a token.\r\n * @param {string} expected Expected token\r\n * @param {boolean} [optional=false] Whether the token is optional\r\n * @returns {boolean} `true` when skipped, `false` if not\r\n * @throws {Error} When a required token is not present\r\n * @inner\r\n */\r\n function skip(expected, optional) {\r\n var actual = peek(),\r\n equals = actual === expected;\r\n if (equals) {\r\n next();\r\n return true;\r\n }\r\n if (!optional)\r\n throw illegal(\"token '\" + actual + \"', '\" + expected + \"' expected\");\r\n return false;\r\n }\r\n\r\n return {\r\n line: function() { return line; },\r\n next: next,\r\n peek: peek,\r\n push: push,\r\n skip: skip\r\n };\r\n /* eslint-enable default-case, callback-return */\r\n}","\"use strict\";\r\nmodule.exports = Type; \r\n\r\nvar Namespace = require(10);\r\n/** @alias Namespace.prototype */\r\nvar NamespacePrototype = Namespace.prototype;\r\n/** @alias Type.prototype */\r\nvar TypePrototype = Namespace.extend(Type);\r\n\r\nvar Enum = require(5),\r\n OneOf = require(12),\r\n Field = require(6),\r\n Service = require(17),\r\n Prototype = require(14),\r\n inherits = require(7),\r\n util = require(21),\r\n Reader = require(15),\r\n Encoder = require(4),\r\n Decoder = require(3),\r\n Verifier = require(24);\r\nvar codegen = util.codegen;\r\n\r\n/**\r\n * Constructs a new message type.\r\n * @classdesc Reflected message type.\r\n * @extends Namespace\r\n * @constructor\r\n * @param {string} name Message name\r\n * @param {Object} [options] Declared options\r\n */\r\nfunction Type(name, options) {\r\n Namespace.call(this, name, options);\r\n\r\n /**\r\n * Message fields.\r\n * @type {Object.}\r\n */\r\n this.fields = {}; // toJSON, marker\r\n\r\n /**\r\n * Oneofs declared within this namespace, if any.\r\n * @type {Object.}\r\n */\r\n this.oneofs = undefined; // toJSON\r\n\r\n /**\r\n * Extension ranges, if any.\r\n * @type {number[][]}\r\n */\r\n this.extensions = undefined; // toJSON\r\n\r\n /**\r\n * Reserved ranges, if any.\r\n * @type {number[][]}\r\n */\r\n this.reserved = undefined; // toJSON\r\n\r\n /**\r\n * Cached fields by id.\r\n * @type {?Object.}\r\n * @private\r\n */\r\n this._fieldsById = null;\r\n\r\n /**\r\n * Cached fields as an array.\r\n * @type {?Field[]}\r\n * @private\r\n */\r\n this._fieldsArray = null;\r\n\r\n /**\r\n * Cached oneofs as an array.\r\n * @type {?OneOf[]}\r\n * @private\r\n */\r\n this._oneofsArray = null;\r\n\r\n /**\r\n * Cached constructor.\r\n * @type {?Function}\r\n * @private\r\n */\r\n this._ctor = null;\r\n}\r\n\r\nObject.defineProperties(TypePrototype, {\r\n\r\n /**\r\n * Message fields by id.\r\n * @name Type#fieldsById\r\n * @type {Object.}\r\n * @readonly\r\n */\r\n fieldsById: {\r\n get: TypePrototype.getFieldsById = function getFieldsById() {\r\n if (this._fieldsById)\r\n return this._fieldsById;\r\n this._fieldsById = {};\r\n var names = Object.keys(this.fields);\r\n for (var i = 0; i < names.length; ++i) {\r\n var field = this.fields[names[i]],\r\n id = field.id;\r\n if (this._fieldsById[id])\r\n throw Error(\"duplicate id \" + id + \" in \" + this);\r\n this._fieldsById[id] = field;\r\n }\r\n return this._fieldsById;\r\n }\r\n },\r\n\r\n /**\r\n * Fields of this message as an array for iteration.\r\n * @name Type#fieldsArray\r\n * @type {Field[]}\r\n * @readonly\r\n */\r\n fieldsArray: {\r\n get: TypePrototype.getFieldsArray = function getFieldsArray() {\r\n return this._fieldsArray || (this._fieldsArray = util.toArray(this.fields));\r\n }\r\n },\r\n\r\n /**\r\n * Oneofs of this message as an array for iteration.\r\n * @name Type#oneofsArray\r\n * @type {OneOf[]}\r\n * @readonly\r\n */\r\n oneofsArray: {\r\n get: TypePrototype.getOneofsArray = function getOneofsArray() {\r\n return this._oneofsArray || (this._oneofsArray = util.toArray(this.oneofs));\r\n }\r\n },\r\n\r\n /**\r\n * The registered constructor, if any registered, otherwise a generic constructor.\r\n * @name Type#ctor\r\n * @type {Prototype}\r\n */\r\n ctor: {\r\n get: TypePrototype.getCtor = function getCtor() {\r\n if (this._ctor)\r\n return this._ctor;\r\n var ctor;\r\n if (codegen.supported)\r\n ctor = codegen(\"p\")(\"P.call(this,p)\").eof(this.getFullName() + \"$ctor\", {\r\n P: Prototype\r\n });\r\n else\r\n ctor = function GenericMessage(properties) {\r\n Prototype.call(this, properties);\r\n };\r\n ctor.prototype = inherits(ctor, this);\r\n this._ctor = ctor;\r\n return ctor;\r\n },\r\n set: TypePrototype.setCtor = function setCtor(ctor) {\r\n if (ctor && !(ctor.prototype instanceof Prototype))\r\n throw util._TypeError(\"ctor\", \"a constructor inheriting from Prototype\");\r\n this._ctor = ctor;\r\n }\r\n }\r\n});\r\n\r\nfunction clearCache(type) {\r\n type._fieldsById = type._fieldsArray = type._oneofsArray = type._ctor = null;\r\n delete type.encode;\r\n delete type.decode;\r\n return type;\r\n}\r\n\r\n/**\r\n * Tests if the specified JSON object describes a message type.\r\n * @param {*} json JSON object to test\r\n * @returns {boolean} `true` if the object describes a message type\r\n */\r\nType.testJSON = function testJSON(json) {\r\n return Boolean(json && json.fields);\r\n};\r\n\r\nvar nestedTypes = [ Enum, Type, Field, Service ];\r\n\r\n/**\r\n * Creates a type from JSON.\r\n * @param {string} name Message name\r\n * @param {Object} json JSON object\r\n * @returns {Type} Created message type\r\n */\r\nType.fromJSON = function fromJSON(name, json) {\r\n var type = new Type(name, json.options);\r\n type.extensions = json.extensions;\r\n type.reserved = json.reserved;\r\n if (json.fields)\r\n Object.keys(json.fields).forEach(function(fieldName) {\r\n type.add(Field.fromJSON(fieldName, json.fields[fieldName]));\r\n });\r\n if (json.oneofs)\r\n Object.keys(json.oneofs).forEach(function(oneOfName) {\r\n type.add(OneOf.fromJSON(oneOfName, json.oneofs[oneOfName]));\r\n });\r\n if (json.nested)\r\n Object.keys(json.nested).forEach(function(nestedName) {\r\n var nested = json.nested[nestedName];\r\n for (var i = 0; i < nestedTypes.length; ++i) {\r\n if (nestedTypes[i].testJSON(nested)) {\r\n type.add(nestedTypes[i].fromJSON(nestedName, nested));\r\n return;\r\n }\r\n }\r\n throw Error(\"invalid nested object in \" + type + \": \" + nestedName);\r\n });\r\n if (json.extensions && json.extensions.length)\r\n type.extensions = json.extensions;\r\n if (json.reserved && json.reserved.length)\r\n type.reserved = json.reserved;\r\n return type;\r\n};\r\n\r\n/**\r\n * @override\r\n */\r\nTypePrototype.toJSON = function toJSON() {\r\n var inherited = NamespacePrototype.toJSON.call(this);\r\n return {\r\n options : inherited && inherited.options || undefined,\r\n oneofs : Namespace.arrayToJSON(this.getOneofsArray()),\r\n fields : Namespace.arrayToJSON(this.getFieldsArray().filter(function(obj) { return !obj.declaringField; })) || {},\r\n extensions : this.extensions && this.extensions.length ? this.extensions : undefined,\r\n reserved : this.reserved && this.reserved.length ? this.reserved : undefined,\r\n nested : inherited && inherited.nested || undefined\r\n };\r\n};\r\n\r\n/**\r\n * @override\r\n */\r\nTypePrototype.resolveAll = function resolve() {\r\n var fields = this.getFieldsArray(), i = 0;\r\n while (i < fields.length)\r\n fields[i++].resolve();\r\n var oneofs = this.getOneofsArray(); i = 0;\r\n while (i < oneofs.length)\r\n oneofs[i++].resolve();\r\n return NamespacePrototype.resolve.call(this);\r\n};\r\n\r\n/**\r\n * @override\r\n */\r\nTypePrototype.get = function get(name) {\r\n return NamespacePrototype.get.call(this, name) || this.fields && this.fields[name] || this.oneofs && this.oneofs[name] || null;\r\n};\r\n\r\n/**\r\n * Adds a nested object to this type.\r\n * @param {ReflectionObject} object Nested object to add\r\n * @returns {Type} `this`\r\n * @throws {TypeError} If arguments are invalid\r\n * @throws {Error} If there is already a nested object with this name or, if a field, when there is already a field with this id\r\n */\r\nTypePrototype.add = function add(object) {\r\n if (this.get(object.name))\r\n throw Error(\"duplicate name '\" + object.name + '\" in ' + this);\r\n if (object instanceof Field && object.extend === undefined) {\r\n // NOTE: Extension fields aren't actual fields on the declaring type, but nested objects.\r\n // The root object takes care of adding distinct sister-fields to the respective extended\r\n // type instead.\r\n if (this.getFieldsById()[object.id])\r\n throw Error(\"duplicate id \" + object.id + \" in \" + this);\r\n if (object.parent)\r\n object.parent.remove(object);\r\n this.fields[object.name] = object;\r\n object.message = this;\r\n object.onAdd(this);\r\n return clearCache(this);\r\n }\r\n if (object instanceof OneOf) {\r\n if (!this.oneofs)\r\n this.oneofs = {};\r\n this.oneofs[object.name] = object;\r\n object.onAdd(this);\r\n return clearCache(this);\r\n }\r\n return NamespacePrototype.add.call(this, object);\r\n};\r\n\r\n/**\r\n * Removes a nested object from this type.\r\n * @param {ReflectionObject} object Nested object to remove\r\n * @returns {Type} `this`\r\n * @throws {TypeError} If arguments are invalid\r\n * @throws {Error} If `object` is not a member of this type\r\n */\r\nTypePrototype.remove = function remove(object) {\r\n if (object instanceof Field && object.extend === undefined) {\r\n // See Type#add for the reason why extension fields are excluded here.\r\n if (this.fields[object.name] !== object)\r\n throw Error(object + \" is not a member of \" + this);\r\n delete this.fields[object.name];\r\n object.message = null;\r\n return clearCache(this);\r\n }\r\n return NamespacePrototype.remove.call(this, object);\r\n};\r\n\r\n/**\r\n * Creates a new message of this type using the specified properties.\r\n * @param {Object} [properties] Properties to set\r\n * @param {?Function} [ctor] Constructor to use.\r\n * Defaults to use the internal constuctor.\r\n * @returns {Prototype} Message instance\r\n */\r\nTypePrototype.create = function create(properties, ctor) {\r\n if (typeof properties === 'function') {\r\n ctor = properties;\r\n properties = undefined;\r\n } else if (properties /* already */ instanceof Prototype)\r\n return properties;\r\n if (ctor) {\r\n if (!(ctor.prototype instanceof Prototype))\r\n throw util._TypeError(\"ctor\", \"a constructor inheriting from Prototype\");\r\n } else\r\n ctor = this.getCtor();\r\n return new ctor(properties);\r\n};\r\n\r\n/**\r\n * Encodes a message of this type.\r\n * @param {Prototype|Object} message Message instance or plain object\r\n * @param {Writer} [writer] Writer to encode to\r\n * @returns {Writer} writer\r\n */\r\nTypePrototype.encode = function encode(message, writer) {\r\n var encoder = new Encoder(this);\r\n this.encode = codegen.supported\r\n ? encoder.generate()\r\n : encoder.encode;\r\n return this.encode(message, writer);\r\n};\r\n\r\n/**\r\n * Encodes a message of this type preceeded by its byte length as a varint.\r\n * @param {Prototype|Object} message Message instance or plain object\r\n * @param {Writer} [writer] Writer to encode to\r\n * @returns {Writer} writer\r\n */\r\nTypePrototype.encodeDelimited = function encodeDelimited(message, writer) {\r\n return this.encode(message, writer).ldelim();\r\n};\r\n\r\n/**\r\n * Decodes a message of this type.\r\n * @param {Reader|Uint8Array} readerOrBuffer Reader or buffer to decode from\r\n * @param {number} [length] Length of the message, if known beforehand\r\n * @returns {Prototype} Decoded message\r\n */\r\nTypePrototype.decode = function decode(readerOrBuffer, length) {\r\n var decoder = new Decoder(this);\r\n this.decode = codegen.supported\r\n ? decoder.generate()\r\n : decoder.decode;\r\n return this.decode(readerOrBuffer, length);\r\n};\r\n\r\n/**\r\n * Decodes a message of this type preceeded by its byte length as a varint.\r\n * @param {Reader|Uint8Array} readerOrBuffer Reader or buffer to decode from\r\n * @returns {Prototype} Decoded message\r\n */\r\nTypePrototype.decodeDelimited = function decodeDelimited(readerOrBuffer) {\r\n readerOrBuffer = readerOrBuffer instanceof Reader ? readerOrBuffer : Reader(readerOrBuffer);\r\n return this.decode(readerOrBuffer, readerOrBuffer.uint32());\r\n};\r\n\r\n/**\r\n * Verifies that enum values are valid and that any required fields are present.\r\n * @param {Prototype|Object} message Message to verify\r\n * @returns {?string} `null` if valid, otherwise the reason why it is not\r\n */\r\nTypePrototype.verify = function verify(message) {\r\n var verifier = new Verifier(this);\r\n this.verify = codegen.supported\r\n ? verifier.generate()\r\n : verifier.verify;\r\n return this.verify(message);\r\n};\r\n","\"use strict\";\r\n\r\n/**\r\n * Common type constants.\r\n * @namespace\r\n */\r\nvar types = module.exports = {};\r\n\r\nvar s = [\r\n \"double\", // 0\r\n \"float\", // 1\r\n \"int32\", // 2\r\n \"uint32\", // 3\r\n \"sint32\", // 4\r\n \"fixed32\", // 5\r\n \"sfixed32\", // 6\r\n \"int64\", // 7\r\n \"uint64\", // 8\r\n \"sint64\", // 9\r\n \"fixed64\", // 10\r\n \"sfixed64\", // 11\r\n \"bool\", // 12\r\n \"string\", // 13\r\n \"bytes\" // 14\r\n];\r\n\r\nfunction bake(values, offset) {\r\n var i = 0, o = {};\r\n offset |= 0;\r\n while (i < values.length) o[s[i + offset]] = values[i++];\r\n return o;\r\n}\r\n\r\n/**\r\n * Basic type wire types.\r\n * @type {Object.}\r\n */\r\ntypes.basic = bake([\r\n /* double */ 1,\r\n /* float */ 5,\r\n /* int32 */ 0,\r\n /* uint32 */ 0,\r\n /* sint32 */ 0,\r\n /* fixed32 */ 5,\r\n /* sfixed32 */ 5,\r\n /* int64 */ 0,\r\n /* uint64 */ 0,\r\n /* sint64 */ 0,\r\n /* fixed64 */ 1,\r\n /* sfixed64 */ 1,\r\n /* bool */ 0,\r\n /* string */ 2,\r\n /* bytes */ 2\r\n]);\r\n\r\nvar emptyArray = [];\r\nif (Object.freeze)\r\n Object.freeze(emptyArray);\r\n\r\n/**\r\n * Basic type defaults.\r\n * @type {Object.}\r\n */\r\ntypes.defaults = bake([\r\n /* double */ 0,\r\n /* float */ 0,\r\n /* int32 */ 0,\r\n /* uint32 */ 0,\r\n /* sint32 */ 0,\r\n /* fixed32 */ 0,\r\n /* sfixed32 */ 0,\r\n /* int64 */ 0,\r\n /* uint64 */ 0,\r\n /* sint64 */ 0,\r\n /* fixed64 */ 0,\r\n /* sfixed64 */ 0,\r\n /* bool */ false,\r\n /* string */ \"\",\r\n /* bytes */ emptyArray\r\n]);\r\n\r\n/**\r\n * Basic long type wire types.\r\n * @type {Object.}\r\n */\r\ntypes.long = bake([\r\n /* int64 */ 0,\r\n /* uint64 */ 0,\r\n /* sint64 */ 0,\r\n /* fixed64 */ 1,\r\n /* sfixed64 */ 1\r\n], 7);\r\n\r\n/**\r\n * Allowed types for map keys with their associated wire type.\r\n * @type {Object.}\r\n */\r\ntypes.mapKey = bake([\r\n /* int32 */ 0,\r\n /* uint32 */ 0,\r\n /* sint32 */ 0,\r\n /* fixed32 */ 5,\r\n /* sfixed32 */ 5,\r\n /* int64 */ 0,\r\n /* uint64 */ 0,\r\n /* sint64 */ 0,\r\n /* fixed64 */ 1,\r\n /* sfixed64 */ 1,\r\n /* bool */ 0,\r\n /* string */ 2\r\n], 2);\r\n\r\n/**\r\n * Allowed types for packed repeated fields with their associated wire type.\r\n * @type {Object.}\r\n */\r\ntypes.packed = bake([\r\n /* int32 */ 0,\r\n /* uint32 */ 0,\r\n /* sint32 */ 0,\r\n /* fixed32 */ 5,\r\n /* sfixed32 */ 5,\r\n /* int64 */ 0,\r\n /* uint64 */ 0,\r\n /* sint64 */ 0,\r\n /* fixed64 */ 1,\r\n /* sfixed64 */ 1,\r\n /* bool */ 0\r\n], 2);\r\n","\"use strict\";\r\n\r\n/**\r\n * Utility functions.\r\n * @namespace\r\n */\r\nvar util = module.exports = {};\r\n\r\nvar LongBits =\r\nutil.LongBits = require(\"./util/longbits\");\r\nutil.codegen = require(\"./util/codegen\");\r\n\r\n/**\r\n * Whether running within node or not.\r\n * @memberof util\r\n * @type {boolean}\r\n */\r\nvar isNode = util.isNode = Boolean(global.process && global.process.versions && global.process.versions.node);\r\n\r\n/**\r\n * Optional buffer class to use.\r\n * If you assign any compatible buffer implementation to this property, the library will use it.\r\n * @type {?Function}\r\n */\r\nutil.Buffer = null;\r\n\r\nif (isNode)\r\n try { util.Buffer = require(\"buffer\").Buffer; } catch (e) {} // eslint-disable-line no-empty\r\n\r\n/**\r\n * Optional Long class to use.\r\n * If you assign any compatible long implementation to this property, the library will use it.\r\n * @type {?Function}\r\n */\r\nutil.Long = global.dcodeIO && global.dcodeIO.Long || null;\r\n\r\nif (!util.Long)\r\n try { util.Long = require(\"long\"); } catch (e) {} // eslint-disable-line no-empty\r\n\r\n/**\r\n * Tests if the specified value is a string.\r\n * @memberof util\r\n * @param {*} value Value to test\r\n * @returns {boolean} `true` if the value is a string\r\n */\r\nfunction isString(value) {\r\n return typeof value === 'string' || value instanceof String;\r\n}\r\n\r\nutil.isString = isString;\r\n\r\n/**\r\n * Tests if the specified value is a non-null object.\r\n * @param {*} value Value to test\r\n * @returns {boolean} `true` if the value is a non-null object\r\n */\r\nutil.isObject = function isObject(value) {\r\n return Boolean(value && typeof value === 'object');\r\n};\r\n\r\n/**\r\n * Tests if the specified value is an integer.\r\n * @function\r\n * @param {*} value Value to test\r\n * @returns {boolean} `true` if the value is an integer\r\n */\r\nutil.isInteger = Number.isInteger || function isInteger(value) {\r\n return typeof value === 'number' && isFinite(value) && Math.floor(value) === value;\r\n};\r\n\r\n/**\r\n * Converts an object's values to an array.\r\n * @param {Object.} object Object to convert\r\n * @returns {Array.<*>} Converted array\r\n */\r\nutil.toArray = function toArray(object) {\r\n if (!object)\r\n return [];\r\n var names = Object.keys(object),\r\n length = names.length;\r\n var array = new Array(length);\r\n for (var i = 0; i < length; ++i)\r\n array[i] = object[names[i]];\r\n return array;\r\n};\r\n\r\n/**\r\n * Creates a type error.\r\n * @param {string} name Argument name\r\n * @param {string} [description=a string] Expected argument descripotion\r\n * @returns {TypeError} Created type error\r\n * @private\r\n */\r\nutil._TypeError = function(name, description) {\r\n return TypeError(name + \" must be \" + (description || \"a string\"));\r\n};\r\n\r\n/**\r\n * Returns a promise from a node-style function.\r\n * @memberof util\r\n * @param {function(Error, ...*)} fn Function to call\r\n * @param {Object} ctx Function context\r\n * @param {...*} params Function arguments\r\n * @returns {Promise<*>} Promisified function\r\n */\r\nfunction asPromise(fn, ctx/*, varargs */) {\r\n var args = [];\r\n for (var i = 2; i < arguments.length; ++i)\r\n args.push(arguments[i]);\r\n return new Promise(function(resolve, reject) {\r\n fn.apply(ctx, args.concat(\r\n function(err/*, varargs */) {\r\n if (err) reject(err);\r\n else resolve.apply(null, Array.prototype.slice.call(arguments, 1));\r\n }\r\n ));\r\n });\r\n}\r\n\r\nutil.asPromise = asPromise;\r\n\r\n/**\r\n * Fetches the contents of a file.\r\n * @memberof util\r\n * @param {string} path File path or url\r\n * @param {function(?Error, string=)} [callback] Node-style callback\r\n * @returns {Promise|undefined} Promise if callback has been omitted \r\n */\r\nfunction fetch(path, callback) {\r\n if (!callback)\r\n return asPromise(fetch, util, path);\r\n var fs; try { fs = require(\"fs\"); } catch (e) {} // eslint-disable-line no-empty\r\n if (fs && fs.readFile)\r\n return fs.readFile(path, \"utf8\", callback);\r\n var xhr = new XMLHttpRequest();\r\n function onload() {\r\n if (xhr.status !== 0 && xhr.status !== 200)\r\n return callback(Error(\"status \" + xhr.status));\r\n if (isString(xhr.responseText))\r\n return callback(null, xhr.responseText);\r\n return callback(Error(\"request failed\"));\r\n }\r\n xhr.onreadystatechange = function() {\r\n if (xhr.readyState === 4)\r\n onload();\r\n };\r\n xhr.open(\"GET\", path, true);\r\n xhr.send();\r\n return undefined;\r\n}\r\n\r\nutil.fetch = fetch;\r\n\r\n/**\r\n * Tests if the specified path is absolute.\r\n * @memberof util\r\n * @param {string} path Path to test\r\n * @returns {boolean} `true` if path is absolute\r\n */\r\nfunction isAbsolutePath(path) {\r\n return /^(?:\\/|[a-zA-Z0-9]+:)/.test(path);\r\n}\r\n\r\nutil.isAbsolutePath = isAbsolutePath;\r\n\r\n/**\r\n * Normalizes the specified path.\r\n * @memberof util\r\n * @param {string} path Path to normalize\r\n * @returns {string} Normalized path\r\n */\r\nfunction normalizePath(path) {\r\n path = path.replace(/\\\\/g, '/')\r\n .replace(/\\/{2,}/g, '/');\r\n var parts = path.split('/');\r\n var abs = isAbsolutePath(path);\r\n var prefix = \"\";\r\n if (abs)\r\n prefix = parts.shift() + '/';\r\n for (var i = 0; i < parts.length;) {\r\n if (parts[i] === '..') {\r\n if (i > 0)\r\n parts.splice(--i, 2);\r\n else if (abs)\r\n parts.splice(i, 1);\r\n else\r\n ++i;\r\n } else if (parts[i] === '.')\r\n parts.splice(i, 1);\r\n else\r\n ++i;\r\n }\r\n return prefix + parts.join('/');\r\n}\r\n\r\nutil.normalizePath = normalizePath;\r\n\r\n/**\r\n * Resolves the specified include path against the specified origin path.\r\n * @param {string} originPath Path that was used to fetch the origin file\r\n * @param {string} importPath Import path specified in the origin file\r\n * @param {boolean} [alreadyNormalized] `true` if both paths are already known to be normalized\r\n * @returns {string} Path to the imported file\r\n */\r\nutil.resolvePath = function resolvePath(originPath, importPath, alreadyNormalized) {\r\n if (!alreadyNormalized)\r\n importPath = normalizePath(importPath);\r\n if (isAbsolutePath(importPath))\r\n return importPath;\r\n if (!alreadyNormalized)\r\n originPath = normalizePath(originPath);\r\n originPath = originPath.replace(/(?:\\/|^)[^/]+$/, '');\r\n return originPath.length ? normalizePath(originPath + '/' + importPath) : importPath;\r\n};\r\n\r\n/**\r\n * Converts a number or long to an 8 characters long hash string.\r\n * @param {Long|number} value Value to convert\r\n * @returns {string} Hash\r\n */\r\nutil.longToHash = function longToHash(value) {\r\n return value\r\n ? LongBits.from(value).toHash()\r\n : '\\0\\0\\0\\0\\0\\0\\0\\0';\r\n};\r\n\r\n/**\r\n * Converts an 8 characters long hash string to a long or number.\r\n * @param {string} hash Hash\r\n * @param {boolean} [unsigned=false] Whether unsigned or not\r\n * @returns {Long|number} Original value\r\n */\r\nutil.longFromHash = function longFromHash(hash, unsigned) {\r\n var bits = LongBits.fromHash(hash);\r\n if (util.Long)\r\n return util.Long.fromBits(bits.lo, bits.hi, unsigned);\r\n return bits.toNumber(Boolean(unsigned));\r\n};\r\n\r\n/**\r\n * Tests if two possibly long values are not equal.\r\n * @param {number|Long} a First value\r\n * @param {number|Long} b Second value\r\n * @returns {boolean} `true` if not equal\r\n */\r\nutil.longNeq = function longNeq(a, b) {\r\n return typeof a === 'number'\r\n ? typeof b === 'number'\r\n ? a !== b\r\n : (a = LongBits.fromNumber(a)).lo !== b.low || a.hi !== b.high\r\n : typeof b === 'number'\r\n ? (b = LongBits.fromNumber(b)).lo !== a.low || b.hi !== a.high\r\n : a.low !== b.low || a.high !== b.high;\r\n};\r\n\r\n/**\r\n * Merges the properties of the source object into the destination object.\r\n * @param {Object} dst Destination object\r\n * @param {Object} src Source object\r\n * @param {boolean} [ifNotSet=false] Merges only if the key is not already set\r\n * @returns {Object} Destination object\r\n */\r\nutil.merge = function merge(dst, src, ifNotSet) {\r\n if (src) {\r\n var keys = Object.keys(src);\r\n for (var i = 0; i < keys.length; ++i)\r\n if (dst[keys[i]] === undefined || !ifNotSet)\r\n dst[keys[i]] = src[keys[i]];\r\n }\r\n return dst;\r\n};\r\n\r\n// Reserved words, ref: https://msdn.microsoft.com/en-us/library/ttyab5c8.aspx\r\n// var reserved = \"break,case,catch,class,const,continue,debugger,default,delete,do,else,export,extends,false,finally,for,function,if,import,in,instanceof,new,null,protected,return,super,switch,this,throw,true,try,typeof,var,while,with,abstract,boolean,byte,char,decimal,double,enum,final,float,get,implements,int,interface,internal,long,package,private,protected,public,sbyte,set,short,static,uint,ulong,ushort,void,assert,ensure,event,goto,invariant,namespace,native,require,synchronized,throws,transient,use,volatile\".split(',');\r\n\r\n/**\r\n * Returns a safe property accessor for the specified properly name.\r\n * @param {string} prop Property name\r\n * @returns {string} Safe accessor\r\n */\r\nutil.safeProp = function safeProp(prop) {\r\n // NOTE: While dot notation looks cleaner it doesn't seem to have a significant impact on performance.\r\n // Hence, we can safe the extra bytes from providing the reserved keywords above for pre-ES5 envs.\r\n return /* /^[a-z_$][a-z0-9_$]*$/i.test(prop) && !reserved.indexOf(prop) ? \".\" + prop : */ \"['\" + prop.replace(/\\\\/g, \"\\\\\\\\\").replace(/'/g, \"\\\\'\") + \"']\";\r\n};\r\n\r\n/**\r\n * Creates a new buffer of whatever type supported by the environment.\r\n * @param {number} [size=0] Buffer size\r\n * @returns {Uint8Array} Buffer\r\n */\r\nutil.newBuffer = function newBuffer(size) {\r\n return new (util.Buffer || typeof Uint8Array !== 'undefined' && Uint8Array || Array)(size || 0);\r\n};\r\n","\"use strict\";\r\nmodule.exports = codegen;\r\n\r\nvar blockOpenRe = /[{[]$/,\r\n blockCloseRe = /^[}\\]]/,\r\n casingRe = /:$/,\r\n branchRe = /^\\s*(?:if|else if|while|for)\\b|\\b(?:else)\\s*$/,\r\n breakRe = /\\b(?:break|continue);?$|^\\s*return\\b/;\r\n\r\n/**\r\n * Programmatically generates a function.\r\n * @memberof util\r\n * @param {...string} params Function parameter names\r\n * @returns {util.CodegenAppender} Printf-like appender function\r\n * @property {boolean} supported Whether code generation is supported by the environment.\r\n * @property {boolean} verbose=false When set to true, codegen will log generated code to console. Useful for debugging.\r\n */\r\nfunction codegen(/* varargs */) {\r\n var args = Array.prototype.slice.call(arguments),\r\n src = ['\\t\"use strict\"'];\r\n\r\n var indent = 1,\r\n inCase = false;\r\n\r\n /**\r\n * Appends a printf-like formatted line to the generated source. Returned when calling {@link util.codegen}.\r\n * @typedef CodegenAppender\r\n * @memberof util\r\n * @type {function}\r\n * @param {string} format A printf-like format string\r\n * @param {...*} params Format replacements\r\n * @returns {util.CodegenAppender} Itself\r\n * @property {util.CodegenStringer} str\r\n * @property {util.CodegenEnder} eof\r\n * @see {@link https://nodejs.org/docs/latest/api/util.html#util_util_format_format_args}\r\n */\r\n /**/\r\n function gen() {\r\n var fmt = [];\r\n for (var i = 0; i < arguments.length; ++i)\r\n fmt[i] = arguments[i];\r\n var line = gen.fmt.apply(null, fmt);\r\n var level = indent;\r\n if (src.length) {\r\n var prev = src[src.length - 1];\r\n\r\n // block open or one time branch\r\n if (blockOpenRe.test(prev))\r\n level = ++indent; // keep\r\n else if (branchRe.test(prev))\r\n ++level; // once\r\n \r\n // casing\r\n if (casingRe.test(prev) && !casingRe.test(line)) {\r\n level = ++indent;\r\n inCase = true;\r\n } else if (inCase && breakRe.test(prev)) {\r\n level = --indent;\r\n inCase = false;\r\n }\r\n\r\n // block close\r\n if (blockCloseRe.test(line))\r\n level = --indent;\r\n }\r\n for (var index = 0; index < level; ++index)\r\n line = \"\\t\" + line;\r\n src.push(line);\r\n return gen;\r\n }\r\n\r\n gen.fmt = function fmt(format) {\r\n var params = Array.prototype.slice.call(arguments, 1),\r\n index = 0;\r\n return format.replace(/%([djs])/g, function($0, $1) {\r\n var param = params[index++];\r\n return $1 === \"j\"\r\n ? JSON.stringify(param)\r\n : String(param);\r\n });\r\n };\r\n\r\n /**\r\n * Stringifies the so far generated function source.\r\n * @typedef CodegenStringer\r\n * @memberof util\r\n * @type {function}\r\n * @param {string} [name] Function name, defaults to generate an anonymous function\r\n * @returns {string} Function source using tabs for indentation\r\n */\r\n /**/\r\n gen.str = function str(name) {\r\n return \"function \" + (name ? name.replace(/[^\\w_$]/g, \"_\") : \"\") + \"(\" + args.join(\",\") + \") {\\n\" + src.join(\"\\n\") + \"\\n}\";\r\n };\r\n\r\n /**\r\n * Ends generation and builds the function.\r\n * @typedef CodegenEnder\r\n * @memberof util\r\n * @type {function}\r\n * @param {string} [name] Function name, defaults to generate an anonymous function\r\n * @param {Object|Array.} [scope] Function scope\r\n * @returns {function} A function to apply the scope manually when `scope` is an array, otherwise the generated function with scope applied\r\n */\r\n /**/\r\n gen.eof = function eof(name, scope) {\r\n if (name && typeof name === 'object') {\r\n scope = name;\r\n name = undefined;\r\n }\r\n var code = gen.str(name);\r\n if (codegen.verbose)\r\n console.log(\"--- codegen ---\\n\" + code.replace(/^/mg, \"> \").replace(/\\t/g, \" \")); // eslint-disable-line no-console\r\n code = \"return \" + code;\r\n var params, values = [];\r\n if (Array.isArray(scope)) {\r\n params = scope.slice();\r\n } else if (scope) {\r\n params = Object.keys(scope);\r\n values = params.map(function(key) { return scope[key]; });\r\n } else\r\n params = [];\r\n var fn = Function.apply(null, params.concat(code)); // eslint-disable-line no-new-func\r\n return values ? fn.apply(null, values) : fn();\r\n };\r\n\r\n return gen;\r\n}\r\n\r\ncodegen.supported = false;\r\ntry { codegen.supported = codegen(\"a\",\"b\")(\"return a-b\").eof()(2,1) === 1; } catch (e) {} // eslint-disable-line no-empty\r\n\r\ncodegen.verbose = false;\r\n","\"use strict\";\r\n\r\nmodule.exports = LongBits;\r\n\r\nvar util = require(21);\r\n\r\n/**\r\n * Constructs new long bits.\r\n * @classdesc Helper class for working with the low and high bits of a 64 bit value.\r\n * @memberof util\r\n * @constructor\r\n * @param {number} lo Low bits\r\n * @param {number} hi High bits\r\n */\r\nfunction LongBits(lo, hi) { // make sure to always call this with unsigned 32bits for proper optimization\r\n\r\n /**\r\n * Low bits.\r\n * @type {number}\r\n */\r\n this.lo = lo;\r\n\r\n /**\r\n * High bits.\r\n * @type {number}\r\n */\r\n this.hi = hi;\r\n}\r\n\r\n/** @alias util.LongBits.prototype */\r\nvar LongBitsPrototype = LongBits.prototype;\r\n\r\n/**\r\n * Zero bits.\r\n * @memberof util.LongBits\r\n * @type {util.LongBits}\r\n */\r\nvar zero = new LongBits(0, 0);\r\n\r\nzero.toNumber = function() { return 0; };\r\nzero.zzEncode = zero.zzDecode = function() { return this; };\r\nzero.length = function() { return 1; };\r\n\r\n/**\r\n * Constructs new long bits from the specified number.\r\n * @param {number} value Value\r\n * @returns {util.LongBits} Instance\r\n */\r\nLongBits.fromNumber = function fromNumber(value) {\r\n if (value === 0)\r\n return zero;\r\n var sign = value < 0;\r\n value = Math.abs(value);\r\n var lo = value >>> 0,\r\n hi = (value - lo) / 4294967296 >>> 0;\r\n if (sign) {\r\n hi = ~hi >>> 0;\r\n lo = ~lo >>> 0;\r\n if (++lo > 4294967295) {\r\n lo = 0;\r\n if (++hi > 4294967295)\r\n hi = 0;\r\n }\r\n }\r\n return new LongBits(lo, hi);\r\n};\r\n\r\n/**\r\n * Constrcuts new long bits from a number or long.\r\n * @param {Long|number} value Value\r\n * @returns {util.LongBits} Instance\r\n */\r\nLongBits.from = function from(value) {\r\n return typeof value === 'number'\r\n ? LongBits.fromNumber(value)\r\n : new LongBits(value.low >>> 0, value.high >>> 0);\r\n};\r\n\r\n/**\r\n * Converts this long bits to a possibly unsafe JavaScript number.\r\n * @param {boolean} [unsigned=false] Whether unsigned or not\r\n * @returns {number} Possibly unsafe number\r\n */\r\nLongBitsPrototype.toNumber = function toNumber(unsigned) {\r\n if (!unsigned && this.hi >>> 31) {\r\n this.lo = ~this.lo + 1 >>> 0;\r\n this.hi = ~this.hi >>> 0;\r\n if (!this.lo)\r\n this.hi = this.hi + 1 >>> 0;\r\n return -(this.lo + this.hi * 4294967296);\r\n }\r\n return this.lo + this.hi * 4294967296;\r\n};\r\n\r\n/**\r\n * Converts this long bits to a long.\r\n * @param {boolean} [unsigned=false] Whether unsigned or not\r\n * @returns {Long} Long\r\n */\r\nLongBitsPrototype.toLong = function toLong(unsigned) {\r\n return new util.Long(this.lo, this.hi, unsigned);\r\n};\r\n\r\nvar charCodeAt = String.prototype.charCodeAt;\r\n\r\n/**\r\n * Constructs new long bits from the specified 8 characters long hash.\r\n * @param {string} hash Hash\r\n * @returns {util.LongBits} Bits\r\n */\r\nLongBits.fromHash = function fromHash(hash) {\r\n return new LongBits(\r\n ( charCodeAt.call(hash, 0)\r\n | charCodeAt.call(hash, 1) << 8\r\n | charCodeAt.call(hash, 2) << 16\r\n | charCodeAt.call(hash, 3) << 24) >>> 0\r\n ,\r\n ( charCodeAt.call(hash, 4)\r\n | charCodeAt.call(hash, 5) << 8\r\n | charCodeAt.call(hash, 6) << 16\r\n | charCodeAt.call(hash, 7) << 24) >>> 0\r\n );\r\n};\r\n\r\n/**\r\n * Converts this long bits to a 8 characters long hash.\r\n * @returns {string} Hash\r\n */\r\nLongBitsPrototype.toHash = function toHash() {\r\n return String.fromCharCode(\r\n this.lo & 255,\r\n this.lo >>> 8 & 255,\r\n this.lo >>> 16 & 255,\r\n this.lo >>> 24 & 255,\r\n this.hi & 255,\r\n this.hi >>> 8 & 255,\r\n this.hi >>> 16 & 255,\r\n this.hi >>> 24 & 255\r\n );\r\n};\r\n\r\n/**\r\n * Zig-zag encodes this long bits.\r\n * @returns {util.LongBits} `this`\r\n */\r\nLongBitsPrototype.zzEncode = function zzEncode() {\r\n var mask = this.hi >> 31;\r\n this.hi = ((this.hi << 1 | this.lo >>> 31) ^ mask) >>> 0;\r\n this.lo = ( this.lo << 1 ^ mask) >>> 0;\r\n return this;\r\n};\r\n\r\n/**\r\n * Zig-zag decodes this long bits.\r\n * @returns {util.LongBits} `this`\r\n */\r\nLongBitsPrototype.zzDecode = function zzDecode() {\r\n var mask = -(this.lo & 1);\r\n this.lo = ((this.lo >>> 1 | this.hi << 31) ^ mask) >>> 0;\r\n this.hi = ( this.hi >>> 1 ^ mask) >>> 0;\r\n return this;\r\n};\r\n\r\n/**\r\n * Calculates the length of this longbits when encoded as a varint.\r\n * @returns {number} Length\r\n */\r\nLongBitsPrototype.length = function length() {\r\n var part0 = this.lo,\r\n part1 = (this.lo >>> 28 | this.hi << 4) >>> 0,\r\n part2 = this.hi >>> 24;\r\n if (part2 === 0) {\r\n if (part1 === 0)\r\n return part0 < 1 << 14\r\n ? part0 < 1 << 7 ? 1 : 2\r\n : part0 < 1 << 21 ? 3 : 4;\r\n return part1 < 1 << 14\r\n ? part1 < 1 << 7 ? 5 : 6\r\n : part1 < 1 << 21 ? 7 : 8;\r\n }\r\n return part2 < 1 << 7 ? 9 : 10;\r\n};\r\n","\"use strict\";\r\nmodule.exports = Verifier;\r\n\r\nvar Enum = require(5),\r\n Type = require(19),\r\n util = require(21);\r\n\r\n/**\r\n * Constructs a new verifier for the specified message type.\r\n * @classdesc Runtime message verifier using code generation on top of reflection.\r\n * @constructor\r\n * @param {Type} type Message type\r\n */\r\nfunction Verifier(type) {\r\n\r\n /**\r\n * Message type.\r\n * @type {Type}\r\n */\r\n this.type = type;\r\n}\r\n\r\n/** @alias Verifier.prototype */\r\nvar VerifierPrototype = Verifier.prototype;\r\n\r\n// This is here to mimic Type so that fallback functions work without having to bind()\r\nObject.defineProperties(VerifierPrototype, {\r\n\r\n /**\r\n * Fields of this verifier's message type as an array for iteration.\r\n * @name Verifier#fieldsArray\r\n * @type {Field[]}\r\n * @readonly\r\n */\r\n fieldsArray: {\r\n get: VerifierPrototype.getFieldsArray = function getFieldsArray() {\r\n return this.type.getFieldsArray();\r\n }\r\n },\r\n\r\n /**\r\n * Full name of this verifier's message type.\r\n * @name Verifier#fullName\r\n * @type {string}\r\n * @readonly\r\n */\r\n fullName: {\r\n get: VerifierPrototype.getFullName = function getFullName() {\r\n return this.type.getFullName();\r\n }\r\n }\r\n});\r\n\r\n/**\r\n * Verifies a runtime message of this verifier's message type.\r\n * @param {Prototype|Object} message Runtime message or plain object to verify\r\n * @returns {?string} `null` if valid, otherwise the reason why it is not\r\n */\r\nVerifierPrototype.verify = function verify_fallback(message) {\r\n var fields = this.getFieldsArray(),\r\n i = 0;\r\n while (i < fields.length) {\r\n var field = fields[i++].resolve(),\r\n value = message[field.name];\r\n\r\n if (value === undefined) {\r\n if (field.required)\r\n return \"missing required field \" + field.name + \" in \" + this.getFullName();\r\n\r\n } else if (field.resolvedType instanceof Enum && field.resolvedType.getValuesById()[value] === undefined) {\r\n return \"invalid enum value \" + field.name + \" = \" + value + \" in \" + this.getFullName();\r\n\r\n } else if (field.resolvedType instanceof Type) {\r\n if (!value && field.required)\r\n return \"missing required field \" + field.name + \" in \" + this.getFullName();\r\n var reason;\r\n if ((reason = field.resolvedType.verify(value)) !== null)\r\n return reason;\r\n }\r\n }\r\n return null;\r\n};\r\n\r\n/**\r\n * Generates a verifier specific to this verifier's message type.\r\n * @returns {function} Verifier function with an identical signature to {@link Verifier#verify}\r\n */\r\nVerifierPrototype.generate = function generate() {\r\n /* eslint-disable no-unexpected-multiline */\r\n var fields = this.type.getFieldsArray();\r\n var gen = util.codegen(\"m\");\r\n var hasReasonVar = false;\r\n\r\n for (var i = 0; i < fields.length; ++i) {\r\n var field = fields[i].resolve(),\r\n prop = util.safeProp(field.name);\r\n if (field.required) { gen\r\n\r\n (\"if(m%s===undefined)\", prop)\r\n (\"return 'missing required field %s in %s'\", field.name, this.type.getFullName());\r\n\r\n } else if (field.resolvedType instanceof Enum) {\r\n var values = util.toArray(field.resolvedType.values); gen\r\n\r\n (\"switch(m%s){\", prop)\r\n (\"default:\")\r\n (\"return 'invalid enum value %s = '+m%s+' in %s'\", field.name, prop, this.type.getFullName());\r\n\r\n for (var j = 0, l = values.length; j < l; ++j) gen\r\n (\"case %d:\", values[j]); gen\r\n (\"}\");\r\n\r\n } else if (field.resolvedType instanceof Type) {\r\n if (field.required) gen\r\n\r\n (\"if(!m%s)\", prop)\r\n (\"return 'missing required field %s in %s'\", field.name, this.type.getFullName());\r\n\r\n if (!hasReasonVar) { gen(\"var r\"); hasReasonVar = true; } gen\r\n\r\n (\"if((r=types[%d].verify(m%s))!==null)\", i, prop)\r\n (\"return r\");\r\n }\r\n }\r\n return gen\r\n (\"return null\")\r\n\r\n .eof(this.type.getFullName() + \"$verify\", {\r\n types : fields.map(function(fld) { return fld.resolvedType; })\r\n });\r\n /* eslint-enable no-unexpected-multiline */\r\n};\r\n","\"use strict\";\r\nmodule.exports = Writer;\r\n\r\nWriter.BufferWriter = BufferWriter;\r\n\r\nvar util = require(21),\r\n ieee754 = require(1);\r\nvar LongBits = util.LongBits;\r\n\r\n/**\r\n * Constructs a new writer operation.\r\n * @classdesc Scheduled writer operation.\r\n * @memberof Writer\r\n * @constructor\r\n * @param {function(Uint8Array, number, *)} fn Function to call\r\n * @param {*} val Value to write\r\n * @param {number} len Value byte length\r\n * @private\r\n * @ignore\r\n */\r\nfunction Op(fn, val, len) {\r\n\r\n /**\r\n * Function to call.\r\n * @type {function(Uint8Array, number, *)}\r\n */\r\n this.fn = fn;\r\n\r\n /**\r\n * Value to write.\r\n * @type {*}\r\n */\r\n this.val = val;\r\n\r\n /**\r\n * Value byte length.\r\n * @type {number}\r\n */\r\n this.len = len;\r\n\r\n /**\r\n * Next operation.\r\n * @type {?Writer.Op}\r\n */\r\n this.next = null;\r\n}\r\n\r\nWriter.Op = Op;\r\n\r\nfunction noop() {} // eslint-disable-line no-empty-function\r\n\r\n/**\r\n * Constructs a new writer state.\r\n * @classdesc Copied writer state.\r\n * @memberof Writer\r\n * @constructor\r\n * @param {Writer} writer Writer to copy state from\r\n * @private\r\n * @ignore\r\n */\r\nfunction State(writer) {\r\n\r\n /**\r\n * Current head.\r\n * @type {Writer.Op}\r\n */\r\n this.head = writer.head;\r\n\r\n /**\r\n * Current tail.\r\n * @type {Writer.Op}\r\n */\r\n this.tail = writer.tail;\r\n\r\n /**\r\n * Current buffer length.\r\n * @type {number}\r\n */\r\n this.len = writer.len;\r\n}\r\n\r\nWriter.State = State;\r\n\r\nvar ArrayImpl = typeof Uint8Array !== 'undefined' ? Uint8Array : Array;\r\n\r\n/**\r\n * Constructs a new writer.\r\n * When called as a function, returns an appropriate writer for the current environment.\r\n * @classdesc Wire format writer using `Uint8Array` if available, otherwise `Array`.\r\n * @exports Writer\r\n * @constructor\r\n */\r\nfunction Writer() {\r\n if (!(this instanceof Writer))\r\n return util.Buffer && new BufferWriter() || new Writer();\r\n\r\n /**\r\n * Current length.\r\n * @type {number}\r\n */\r\n this.len = 0;\r\n\r\n /**\r\n * Operations head.\r\n * @type {Object}\r\n */\r\n this.head = new Op(noop, 0, 0);\r\n\r\n /**\r\n * Operations tail\r\n * @type {Object}\r\n */\r\n this.tail = this.head;\r\n\r\n /**\r\n * State stack.\r\n * @type {Object[]}\r\n */\r\n this.stack = [];\r\n\r\n // When a value is written, the writer calculates its byte length and puts it into a linked\r\n // list of operations to perform when finish() is called. This both allows us to allocate\r\n // buffers of the exact required size and reduces the amount of work we have to do compared\r\n // to first calculating over objects and then encoding over objects. In our case, the encoding\r\n // part is just a linked list walk calling linked operations with already prepared values.\r\n}\r\n\r\n/** @alias Writer.prototype */\r\nvar WriterPrototype = Writer.prototype;\r\n\r\n/**\r\n * Pushes a new operation to the queue.\r\n * @param {function(Uint8Array, number, *)} fn Function to call\r\n * @param {number} len Value byte length\r\n * @param {number} val Value to write\r\n * @returns {Writer} `this`\r\n */\r\nWriterPrototype.push = function push(fn, len, val) {\r\n var op = new Op(fn, val, len);\r\n this.tail.next = op;\r\n this.tail = op;\r\n this.len += len;\r\n return this;\r\n};\r\n\r\nfunction writeByte(buf, pos, val) {\r\n buf[pos] = val & 255;\r\n}\r\n\r\n/**\r\n * Writes a tag.\r\n * @param {number} id Field id\r\n * @param {number} wireType Wire type\r\n * @returns {Writer} `this`\r\n */\r\nWriterPrototype.tag = function write_tag(id, wireType) {\r\n return this.push(writeByte, 1, id << 3 | wireType & 7);\r\n};\r\n\r\nfunction writeVarint32(buf, pos, val) {\r\n while (val > 127) {\r\n buf[pos++] = val & 127 | 128;\r\n val >>>= 7;\r\n }\r\n buf[pos] = val;\r\n}\r\n\r\n/**\r\n * Writes an unsigned 32 bit value as a varint.\r\n * @param {number} value Value to write\r\n * @returns {Writer} `this`\r\n */\r\nWriterPrototype.uint32 = function write_uint32(value) {\r\n value >>>= 0;\r\n return this.push(writeVarint32,\r\n value < 128 ? 1\r\n : value < 16384 ? 2\r\n : value < 2097152 ? 3\r\n : value < 268435456 ? 4\r\n : 5\r\n , value);\r\n};\r\n\r\n/**\r\n * Writes a signed 32 bit value as a varint.\r\n * @function\r\n * @param {number} value Value to write\r\n * @returns {Writer} `this`\r\n */\r\nWriterPrototype.int32 = function write_int32(value) {\r\n return value < 0\r\n ? this.push(writeVarint64, 10, LongBits.fromNumber(value)) // 10 bytes per spec\r\n : this.uint32(value);\r\n};\r\n\r\n/**\r\n * Writes a 32 bit value as a varint, zig-zag encoded.\r\n * @param {number} value Value to write\r\n * @returns {Writer} `this`\r\n */\r\nWriterPrototype.sint32 = function write_sint32(value) {\r\n return this.uint32(value << 1 ^ value >> 31);\r\n};\r\n\r\nfunction writeVarint64(buf, pos, val) {\r\n // tends to deoptimize. stays optimized when using bits directly.\r\n while (val.hi || val.lo > 127) {\r\n buf[pos++] = val.lo & 127 | 128;\r\n val.lo = (val.lo >>> 7 | val.hi << 25) >>> 0;\r\n val.hi >>>= 7;\r\n }\r\n buf[pos++] = val.lo;\r\n}\r\n\r\n/**\r\n * Writes an unsigned 64 bit value as a varint.\r\n * @param {Long|number} value Value to write\r\n * @returns {Writer} `this`\r\n */\r\nWriterPrototype.uint64 = function write_uint64(value) {\r\n var bits;\r\n if (typeof value === 'number')\r\n bits = value ? LongBits.fromNumber(value) : LongBits.zero;\r\n else if (value.low || value.high)\r\n bits = new LongBits(value.low >>> 0, value.high >>> 0);\r\n else\r\n bits = LongBits.zero;\r\n return this.push(writeVarint64, bits.length(), bits);\r\n};\r\n\r\n/**\r\n * Writes a signed 64 bit value as a varint.\r\n * @function\r\n * @param {Long|number} value Value to write\r\n * @returns {Writer} `this`\r\n */\r\nWriterPrototype.int64 = WriterPrototype.uint64;\r\n\r\n/**\r\n * Writes a signed 64 bit value as a varint, zig-zag encoded.\r\n * @param {Long|number} value Value to write\r\n * @returns {Writer} `this`\r\n */\r\nWriterPrototype.sint64 = function sint64(value) {\r\n var bits = LongBits.from(value).zzEncode();\r\n return this.push(writeVarint64, bits.length(), bits);\r\n};\r\n\r\n/**\r\n * Writes a boolish value as a varint.\r\n * @param {boolean} value Value to write\r\n * @returns {Writer} `this`\r\n */\r\nWriterPrototype.bool = function write_bool(value) {\r\n return this.push(writeByte, 1, value ? 1 : 0);\r\n};\r\n\r\nfunction writeFixed32(buf, pos, val) {\r\n buf[pos++] = val & 255;\r\n buf[pos++] = val >>> 8 & 255;\r\n buf[pos++] = val >>> 16 & 255;\r\n buf[pos ] = val >>> 24 & 255;\r\n}\r\n\r\n/**\r\n * Writes a 32 bit value as fixed 32 bits.\r\n * @param {number} value Value to write\r\n * @returns {Writer} `this`\r\n */\r\nWriterPrototype.fixed32 = function write_fixed32(value) {\r\n return this.push(writeFixed32, 4, value >>> 0);\r\n};\r\n\r\n/**\r\n * Writes a 32 bit value as fixed 32 bits, zig-zag encoded.\r\n * @param {number} value Value to write\r\n * @returns {Writer} `this`\r\n */\r\nWriterPrototype.sfixed32 = function write_sfixed32(value) {\r\n return this.push(writeFixed32, 4, value << 1 ^ value >> 31);\r\n};\r\n\r\nfunction writeFixed64(buf, pos, val) {\r\n buf[pos++] = val.lo & 255;\r\n buf[pos++] = val.lo >>> 8 & 255;\r\n buf[pos++] = val.lo >>> 16 & 255;\r\n buf[pos++] = val.lo >>> 24 ;\r\n buf[pos++] = val.hi & 255;\r\n buf[pos++] = val.hi >>> 8 & 255;\r\n buf[pos++] = val.hi >>> 16 & 255;\r\n buf[pos ] = val.hi >>> 24 ;\r\n}\r\n\r\n/**\r\n * Writes a 64 bit value as fixed 64 bits.\r\n * @param {Long|number} value Value to write\r\n * @returns {Writer} `this`\r\n */\r\nWriterPrototype.fixed64 = function write_fixed64(value) {\r\n return this.push(writeFixed64, 8, LongBits.from(value));\r\n};\r\n\r\n/**\r\n * Writes a 64 bit value as fixed 64 bits, zig-zag encoded.\r\n * @param {Long|number} value Value to write\r\n * @returns {Writer} `this`\r\n */\r\nWriterPrototype.sfixed64 = function write_sfixed64(value) {\r\n return this.push(writeFixed64, 8, LongBits.from(value).zzEncode());\r\n};\r\n\r\nfunction writeFloat(buf, pos, val) {\r\n ieee754.write(buf, val, pos, false, 23, 4);\r\n}\r\n\r\n/**\r\n * Writes a float (32 bit).\r\n * @function\r\n * @param {number} value Value to write\r\n * @returns {Writer} `this`\r\n */\r\nWriterPrototype.float = function write_float(value) {\r\n return this.push(writeFloat, 4, value);\r\n};\r\n\r\nfunction writeDouble(buf, pos, val) {\r\n ieee754.write(buf, val, pos, false, 52, 8);\r\n}\r\n\r\n/**\r\n * Writes a double (64 bit float).\r\n * @function\r\n * @param {number} value Value to write\r\n * @returns {Writer} `this`\r\n */\r\nWriterPrototype.double = function write_double(value) {\r\n return this.push(writeDouble, 8, value);\r\n};\r\n\r\nvar writeBytes = ArrayImpl.prototype.set\r\n ? function writeBytes_set(buf, pos, val) { buf.set(val, pos); }\r\n : function writeBytes_for(buf, pos, val) { for (var i = 0; i < val.length; ++i) buf[pos + i] = val[i]; };\r\n\r\n/**\r\n * Writes a sequence of bytes.\r\n * @param {Uint8Array} value Value to write\r\n * @returns {Writer} `this`\r\n */\r\nWriterPrototype.bytes = function write_bytes(value) {\r\n var len = value.length >>> 0;\r\n return len\r\n ? this.uint32(len).push(writeBytes, len, value)\r\n : this.push(writeByte, 1, 0);\r\n};\r\n\r\nfunction writeString(buf, pos, val) {\r\n for (var i = 0; i < val.length; ++i) {\r\n var c1 = val.charCodeAt(i), c2;\r\n if (c1 < 128) {\r\n buf[pos++] = c1;\r\n } else if (c1 < 2048) {\r\n buf[pos++] = c1 >> 6 | 192;\r\n buf[pos++] = c1 & 63 | 128;\r\n } else if ((c1 & 0xFC00) === 0xD800 && i + 1 < val.length && ((c2 = val.charCodeAt(i + 1)) & 0xFC00) === 0xDC00) {\r\n c1 = 0x10000 + ((c1 & 0x03FF) << 10) + (c2 & 0x03FF);\r\n ++i;\r\n buf[pos++] = c1 >> 18 | 240;\r\n buf[pos++] = c1 >> 12 & 63 | 128;\r\n buf[pos++] = c1 >> 6 & 63 | 128;\r\n buf[pos++] = c1 & 63 | 128;\r\n } else {\r\n buf[pos++] = c1 >> 12 | 224;\r\n buf[pos++] = c1 >> 6 & 63 | 128;\r\n buf[pos++] = c1 & 63 | 128;\r\n }\r\n }\r\n}\r\n\r\nfunction byteLength(val) {\r\n var strlen = val.length >>> 0;\r\n if (strlen) {\r\n var len = 0;\r\n for (var i = 0, c1; i < strlen; ++i) {\r\n c1 = val.charCodeAt(i);\r\n if (c1 < 128)\r\n len += 1;\r\n else if (c1 < 2048)\r\n len += 2;\r\n else if ((c1 & 0xFC00) === 0xD800 && i + 1 < strlen && (val.charCodeAt(i + 1) & 0xFC00) === 0xDC00) {\r\n ++i;\r\n len += 4;\r\n } else\r\n len += 3;\r\n }\r\n return len;\r\n }\r\n return 0;\r\n}\r\n\r\n/**\r\n * Writes a string.\r\n * @param {string} value Value to write\r\n * @returns {Writer} `this`\r\n */\r\nWriterPrototype.string = function write_string(value) {\r\n var len = byteLength(value);\r\n return len\r\n ? this.uint32(len).push(writeString, len, value)\r\n : this.push(writeByte, 1, 0);\r\n};\r\n\r\n/**\r\n * Forks this writer's state by pushing it to a stack.\r\n * Calling {@link Writer#ldelim}, {@link Writer#reset} or {@link Writer#finish} resets the writer to the previous state.\r\n * @returns {Writer} `this`\r\n */\r\nWriterPrototype.fork = function fork() {\r\n this.stack.push(new State(this));\r\n this.head = this.tail = new Op(noop, 0, 0);\r\n this.len = 0;\r\n return this;\r\n};\r\n\r\n/**\r\n * Resets this instance to the last state.\r\n * @returns {Writer} `this`\r\n */\r\nWriterPrototype.reset = function reset() {\r\n if (this.stack.length) {\r\n var state = this.stack.pop();\r\n this.head = state.head;\r\n this.tail = state.tail;\r\n this.len = state.len;\r\n } else {\r\n this.head = this.tail = new Op(noop, 0, 0);\r\n this.len = 0;\r\n }\r\n return this;\r\n};\r\n\r\n/**\r\n * Resets to the last state and appends the fork state's current write length as a varint followed by its operations.\r\n * @param {number} [id] Id with wire type 2 to prepend where applicable\r\n * @returns {Writer} `this`\r\n */\r\nWriterPrototype.ldelim = function ldelim(id) {\r\n var head = this.head,\r\n tail = this.tail,\r\n len = this.len;\r\n this.reset();\r\n if (id !== undefined)\r\n this.tag(id, 2);\r\n this.uint32(len);\r\n this.tail.next = head.next; // skip noop\r\n this.tail = tail;\r\n this.len += len;\r\n return this;\r\n};\r\n\r\n/**\r\n * Finishes the current sequence of write operations and frees all resources.\r\n * @returns {Uint8Array} Finished buffer\r\n */\r\nWriterPrototype.finish = function finish() {\r\n var head = this.head.next, // skip noop\r\n buf = new ArrayImpl(this.len),\r\n pos = 0;\r\n this.reset();\r\n while (head) {\r\n head.fn(buf, pos, head.val);\r\n pos += head.len;\r\n head = head.next;\r\n }\r\n return buf;\r\n};\r\n\r\n/**\r\n * Constructs a new buffer writer.\r\n * @classdesc Wire format writer using node buffers.\r\n * @exports BufferWriter\r\n * @extends Writer\r\n * @constructor\r\n */\r\nfunction BufferWriter() {\r\n Writer.call(this);\r\n}\r\n\r\n/** @alias BufferWriter.prototype */\r\nvar BufferWriterPrototype = BufferWriter.prototype = Object.create(Writer.prototype);\r\nBufferWriterPrototype.constructor = BufferWriter;\r\n\r\nfunction writeFloatBuffer(buf, pos, val) {\r\n buf.writeFloatLE(val, pos, true);\r\n}\r\n\r\n/**\r\n * @override\r\n */\r\nBufferWriterPrototype.float = function write_float_buffer(value) {\r\n return this.push(writeFloatBuffer, 4, value);\r\n};\r\n\r\nfunction writeDoubleBuffer(buf, pos, val) {\r\n buf.writeDoubleLE(val, pos, true);\r\n}\r\n\r\n/**\r\n * @override\r\n */\r\nBufferWriterPrototype.double = function write_double_buffer(value) {\r\n return this.push(writeDoubleBuffer, 8, value);\r\n};\r\n\r\nfunction writeBytesBuffer(buf, pos, val) {\r\n if (val.length)\r\n val.copy(buf, pos, 0, val.length);\r\n}\r\n\r\n/**\r\n * @override\r\n */\r\nBufferWriterPrototype.bytes = function write_bytes_buffer(value) {\r\n var len = value.length >>> 0;\r\n return len\r\n ? this.uint32(len).push(writeBytesBuffer, len, value)\r\n : this.push(writeByte, 1, 0);\r\n};\r\n\r\nfunction writeStringBuffer(buf, pos, val) {\r\n buf.write(val, pos);\r\n}\r\n\r\n/**\r\n * @override\r\n */\r\nBufferWriterPrototype.string = function write_string_buffer(value) {\r\n var len = byteLength(value);\r\n return len\r\n ? this.uint32(len).push(writeStringBuffer, len, value)\r\n : this.push(writeByte, 1, 0);\r\n};\r\n\r\n/**\r\n * @override\r\n */\r\nBufferWriterPrototype.finish = function finish_buffer() {\r\n var head = this.head.next, // skip noop\r\n buf = util.Buffer.allocUnsafe && util.Buffer.allocUnsafe(this.len) || new util.Buffer(this.len),\r\n pos = 0;\r\n this.reset();\r\n while (head) {\r\n head.fn(buf, pos, head.val);\r\n pos += head.len;\r\n head = head.next;\r\n }\r\n return buf;\r\n};\r\n","\"use strict\";\r\nvar protobuf = global.protobuf = exports;\r\n\r\nvar util = require(\"./util\");\r\n\r\n/**\r\n * Loads one or multiple .proto or preprocessed .json files into a common root namespace.\r\n * @param {string|string[]} filename One or multiple files to load\r\n * @param {Root} [root] Root namespace, defaults to create a new one if omitted.\r\n * @param {function(?Error, Root=)} [callback] Callback function\r\n * @returns {Promise|Object} A promise if callback has been omitted, otherwise the protobuf namespace\r\n * @throws {TypeError} If arguments are invalid\r\n */\r\nfunction load(filename, root, callback) {\r\n if (typeof root === 'function') {\r\n callback = root;\r\n root = new protobuf.Root();\r\n } else if (!root)\r\n root = new protobuf.Root();\r\n return root.load(filename, callback) || protobuf;\r\n}\r\n\r\nprotobuf.load = load;\r\n\r\n// Parser\r\nprotobuf.tokenize = require(\"./tokenize\");\r\nprotobuf.parse = require(\"./parse\");\r\n\r\n// Serialization\r\nprotobuf.Writer = require(\"./writer\");\r\nprotobuf.BufferWriter = protobuf.Writer.BufferWriter;\r\nprotobuf.Reader = require(\"./reader\");\r\nprotobuf.BufferReader = protobuf.Reader.BufferReader;\r\nprotobuf.Encoder = require(\"./encoder\");\r\nprotobuf.Decoder = require(\"./decoder\");\r\n\r\n// Reflection\r\nprotobuf.ReflectionObject = require(\"./object\");\r\nprotobuf.Namespace = require(\"./namespace\");\r\nprotobuf.Root = require(\"./root\");\r\nprotobuf.Enum = require(\"./enum\");\r\nprotobuf.Type = require(\"./type\");\r\nprotobuf.Field = require(\"./field\");\r\nprotobuf.OneOf = require(\"./oneof\");\r\nprotobuf.MapField = require(\"./mapfield\");\r\nprotobuf.Service = require(\"./service\");\r\nprotobuf.Method = require(\"./method\");\r\n\r\n// Runtime\r\nprotobuf.Prototype = require(\"./prototype\");\r\nprotobuf.inherits = require(\"./inherits\");\r\n\r\n// Utility\r\nprotobuf.types = require(\"./types\");\r\nprotobuf.common = require(\"./common\");\r\nprotobuf.util = util;\r\n"],"sourceRoot":"."} \ No newline at end of file diff --git a/dist/protobuf.min.js b/dist/protobuf.min.js index 76c810592..1d83d97c9 100644 --- a/dist/protobuf.min.js +++ b/dist/protobuf.min.js @@ -1,9 +1,9 @@ /*! * protobuf.js v6.0.1 (c) 2016 Daniel Wirtz - * Compiled Wed, 30 Nov 2016 00:09:03 UTC + * Compiled Wed, 30 Nov 2016 13:44:58 UTC * Licensed under the Apache License, Version 2.0 * see: https://github.com/dcodeIO/protobuf.js for details */ !function e(t,i,n){function r(o,u){if(!i[o]){if(!t[o]){var f="function"==typeof require&&require;if(!u&&f)return f(o,!0);if(s)return s(o,!0);var a=new Error("Cannot find module '"+o+"'");throw a.code="MODULE_NOT_FOUND",a}var h=i[o]={exports:{}};t[o][0].call(h.exports,function(e){var i=t[o][1][e];return r(i?i:e)},h,h.exports,e,t,i,n)}return i[o].exports}for(var s="function"==typeof require&&require,o=0;o>1,h=-7,l=i?0:r-1,c=i?1:-1,d=e[t+l];for(l+=c,s=d&(1<<-h)-1,d>>=-h,h+=u;h>0;s=256*s+e[t+l],l+=c,h-=8);for(o=s&(1<<-h)-1,s>>=-h,h+=n;h>0;o=256*o+e[t+l],l+=c,h-=8);if(0===s)s=1-a;else{if(s===f)return o?NaN:(d?-1:1)*(1/0);o+=Math.pow(2,n),s-=a}return(d?-1:1)*o*Math.pow(2,s-n)},i.write=function(e,t,i,n,r,s){var o,u,f,a=8*s-r-1,h=(1<>1,c=23===r?Math.pow(2,-24)-Math.pow(2,-77):0,d=n?s-1:0,p=n?-1:1,v=t<0||0===t&&1/t<0?1:0;for(t=Math.abs(t),isNaN(t)||t===1/0?(u=isNaN(t)?1:0,o=h):(o=Math.floor(Math.log(t)/Math.LN2),t*(f=Math.pow(2,-o))<1&&(o--,f*=2),t+=o+l>=1?c/f:c*Math.pow(2,1-l),t*f>=2&&(o++,f/=2),o+l>=h?(u=0,o=h):o+l>=1?(u=(t*f-1)*Math.pow(2,r),o+=l):(u=t*Math.pow(2,l-1)*Math.pow(2,r),o=0));r>=8;e[i+d]=255&u,d+=p,u/=256,r-=8);for(o=o<0;e[i+d]=255&o,d+=p,o/=256,a-=8);e[i+d-p]|=128*v}},{}],2:[function(e,t,i){"use strict";function n(e,t){/\/|\./.test(e)||(e="google/protobuf/"+e+".proto",t={nested:{google:{nested:{protobuf:{nested:t}}}}}),n[e]=t}t.exports=n,n("any",{Any:{fields:{type_url:{type:"string",id:1},value:{type:"bytes",id:2}}}});var r;n("duration",{Duration:r={fields:{seconds:{type:"int64",id:1},nanos:{type:"int32",id:2}}}}),n("timestamp",{Timestamp:r}),n("empty",{Empty:{fields:{}}}),n("struct",{Struct:{fields:{fields:{keyType:"string",type:"Value",id:1}}},Value:{oneofs:{kind:{oneof:["nullValue","numberValue","stringValue","boolValue","structValue","listValue"]}},fields:{nullValue:{type:"NullValue",id:1},numberValue:{type:"double",id:2},stringValue:{type:"string",id:3},boolValue:{type:"bool",id:4},structValue:{type:"Struct",id:5},listValue:{type:"ListValue",id:6}}},NullValue:{values:{NULL_VALUE:0}},ListValue:{fields:{values:{rule:"repeated",type:"Value",id:1}}}})},{}],3:[function(e,t,i){"use strict";function n(e){this.type=e}t.exports=n;var r=e(5),s=e(15),o=e(20),u=e(21),f=n.prototype;Object.defineProperties(f,{fieldsById:{get:f.getFieldsById=function(){return this.type.getFieldsById()}},ctor:{get:f.getCtor=function(){return this.type.getCtor()}}}),f.decode=function(e,t){for(var i=this.getFieldsById(),e=e instanceof s?e:s(e),n=void 0===t?e.len:e.pos+t,f=new(this.getCtor());e.pos0;){var r=e.shift();if(i.nested&&i.nested[r]){if(i=i.nested[r],!(i instanceof n))throw Error("path conflicts with non-namespace objects")}else i.add(i=new n(r))}return t&&i.addJSON(t),i},u.resolveAll=function(){for(var e=this.getNestedArray(),t=0;t-1&&this.oneof.splice(t,1),e.parent&&e.parent.remove(e),e.partOf=null,this},o.onAdd=function(e){s.prototype.onAdd.call(this,e),r(this)},o.onRemove=function(e){this.g.forEach(function(e){e.parent&&e.parent.remove(e)}),s.prototype.onRemove.call(this,e)}},{11:11,21:21,6:6}],13:[function(e,t,i){"use strict";function n(e){return null===e?null:e.toLowerCase()}function r(e){return e.substring(0,1)+e.substring(1).replace(/_([a-z])(?=[a-z]|$)/g,function(e,t){return t.toUpperCase()})}function s(e,t){function i(e,t){return Error("illegal "+(t||"token")+" '"+e+"' (line "+ne.line()+j)}function s(){var e,t=[];do{if((e=re())!==F&&e!==J)throw i(e);t.push(re()),ue(e),e=oe()}while(e===F||e===J);return t.join("")}function B(e){var t=re();switch(n(t)){case J:case F:return se(t),s();case"true":return!0;case"false":return!1}try{return V(t)}catch(n){if(e&&g.test(t))return t;throw i(t,"value")}}function q(){var e=z(re()),t=e;return ue("to",!0)&&(t=z(re())),ue(E),[e,t]}function V(e){var t=1;"-"===e.charAt(0)&&(t=-1,e=e.substring(1));var r=n(e);switch(r){case"inf":return t*(1/0);case"nan":return NaN;case"0":return 0}if(/^[1-9][0-9]*$/.test(e))return t*parseInt(e,10);if(/^0[x][0-9a-f]+$/.test(r))return t*parseInt(e,16);if(/^0[0-7]+$/.test(e))return t*parseInt(e,8);if(/^(?!e)[0-9]*(?:\.[0-9]*)?(?:[e][+-]?[0-9]+)?$/.test(r))return t*parseFloat(e);throw i(e,"number")}function z(e,t){var r=n(e);switch(r){case"min":return 1;case"max":return 536870911;case"0":return 0}if("-"===e.charAt(0)&&!t)throw i(e,"id");if(/^-?[1-9][0-9]*$/.test(e))return parseInt(e,10);if(/^-?0[x][0-9a-f]+$/.test(r))return parseInt(e,16);if(/^-?0[0-7]+$/.test(e))return parseInt(e,8);throw i(e,"id")}function L(){if(void 0!==Y)throw i("package");if(Y=re(),!g.test(Y))throw i(Y,x);le=le.define(Y),ue(E)}function P(){var e,t=oe();switch(t){case"weak":e=te||(te=[]),re();break;case"public":re();default:e=ee||(ee=[])}t=s(),ue(E),e.push(t)}function $(){ue("="),ie=n(s());var e;if(["proto2",e="proto3"].indexOf(ie)<0)throw i(ie,"syntax");ae=ie===e,ue(E)}function I(e,t){switch(t){case O:return K(e,t),ue(E),!0;case"message":return R(e,t),!0;case"enum":return U(e,t),!0;case"service":return G(e,t),!0;case"extend":return Q(e,t),!0}return!1}function R(e,t){var r=re();if(!y.test(r))throw i(r,"type name");var s=new f(r);if(ue(S,!0)){for(;(t=re())!==T;){var o=n(t);if(!I(s,t))switch(o){case"map":M(s,o);break;case w:case k:case b:C(s,o);break;case"oneof":D(s,o);break;case"extensions":(s.extensions||(s.extensions=[])).push(q(s,o));break;case"reserved":(s.reserved||(s.reserved=[])).push(q(s,o));break;default:if(!ae||!g.test(t))throw i(t);se(t),C(s,k)}}ue(E,!0)}else ue(E);e.add(s)}function C(e,t,n){var s=re();if(!g.test(s))throw i(s,N);var o=re();if(!y.test(o))throw i(o,x);o=r(o),ue("=");var u=z(re()),f=Z(new a(o,u,s,t,n));f.repeated&&f.setOption("packed",ae,!0),e.add(f)}function M(e){ue("<");var t=re();if(void 0===v.mapKey[t])throw i(t,N);ue(",");var n=re();if(!g.test(n))throw i(n,N);ue(">");var s=re();if(!y.test(s))throw i(s,x);s=r(s),ue("=");var o=z(re()),u=Z(new h(s,o,t,n));e.add(u)}function D(e,t){var n=re();if(!y.test(n))throw i(n,x);n=r(n);var s=new l(n);if(ue(S,!0)){for(;(t=re())!==T;)t===O?(K(s,t),ue(E)):(se(t),C(s,k));ue(E,!0)}else ue(E);e.add(s)}function U(e,t){var r=re();if(!y.test(r))throw i(r,x);var s={},o=new c(r,s);if(ue(S,!0)){for(;(t=re())!==T;)n(t)===O?K(o):_(o,t);ue(E,!0)}else ue(E);e.add(o)}function _(e,t){if(!y.test(t))throw i(t,x);var n=t;ue("=");var r=z(re(),!0);Z(e.values[n]=new Number(r))}function K(e,t){var n=ue(A,!0),r=re();if(!g.test(r))throw i(r,x);n&&(ue(j),r=A+r+j,t=oe(),m.test(t)&&(r+=t,re())),ue("="),H(e,r)}function H(e,t){if(ue(S,!0)){for(;(he=re())!==T;){if(!y.test(he))throw i(he,x);t=t+"."+he,ue(":",!0)?W(e,t,B(!0)):H(e,t)}ue(E,!0)}else W(e,t,B(!0))}function W(e,t,i){e.setOption?e.setOption(t,i):e[t]=i}function Z(e){if(ue("[",!0)){do K(e,O);while(ue(",",!0));ue("]")}return ue(E),e}function G(e,t){if(t=re(),!y.test(t))throw i(t,"service name");var r=t,s=new d(r);if(ue(S,!0)){for(;(t=re())!==T;){var o=n(t);switch(o){case O:K(s,o),ue(E);break;case"rpc":X(s,o);break;default:throw i(t)}}ue(E,!0)}else ue(E);e.add(s)}function X(e,t){var r=t,s=re();if(!y.test(s))throw i(s,x);var o,u,f,a;ue(A);var h;if(ue(h="stream",!0)&&(u=!0),!g.test(t=re()))throw i(t);if(o=t,ue(j),ue("returns"),ue(A),ue(h,!0)&&(a=!0),!g.test(t=re()))throw i(t);f=t,ue(j);var l=new p(s,r,o,f,u,a);if(ue(S,!0)){for(;(t=re())!==T;){var c=n(t);switch(c){case O:K(l,c),ue(E);break;default:throw i(t)}}ue(E,!0)}else ue(E);e.add(l)}function Q(e,t){var r=re();if(!g.test(r))throw i(r,"reference");if(ue(S,!0)){for(;(t=re())!==T;){var s=n(t);switch(s){case w:case b:case k:C(e,s,r);break;default:if(!ae||!g.test(t))throw i(t);se(t),C(e,k,r)}}ue(E,!0)}else ue(E)}t||(t=new u);var Y,ee,te,ie,ne=o(e),re=ne.next,se=ne.push,oe=ne.peek,ue=ne.skip,fe=!0,ae=!1;t||(t=new u);for(var he,le=t;null!==(he=re());){var ce=n(he);switch(ce){case"package":if(!fe)throw i(he);L();break;case"import":if(!fe)throw i(he);P();break;case"syntax":if(!fe)throw i(he);$();break;case O:if(!fe)throw i(he);K(le,he),ue(E);break;default:if(I(le,he)){fe=!1;continue}throw i(he)}}return{package:Y,imports:ee,weakImports:te,syntax:ie,root:t}}t.exports=s;var o=e(18),u=e(16),f=e(19),a=e(6),h=e(8),l=e(12),c=e(5),d=e(17),p=e(9),v=e(20),y=/^[a-zA-Z_][a-zA-Z_0-9]*$/,g=/^(?:\.?[a-zA-Z_][a-zA-Z_0-9]*)+$/,m=/^(?:\.[a-zA-Z][a-zA-Z_0-9]*)+$/,w="required",b="repeated",k="optional",O="option",x="name",N="type",S="{",T="}",A="(",j=")",E=";",F='"',J="'"},{12:12,16:16,17:17,18:18,19:19,20:20,5:5,6:6,8:8,9:9}],14:[function(e,t,i){"use strict";function n(e,t){if(e)for(var i=!(t&&t.fieldsOnly),n=this.constructor.$type.fields,r=Object.keys(e),s=0;s "+e.len)}function r(e){return this instanceof r?(this.buf=e,this.pos=0,void(this.len=e.length)):w.Buffer&&(!e||w.Buffer.isBuffer(e))&&new m(e)||new r(e)}function s(e,t){this.id=e,this.wireType=t}function o(){var e=0,t=0,i=0,r=0;if(this.len-this.pos>9){for(i=0;i<4;++i)if(r=this.buf[this.pos++],e|=(127&r)<<7*i,r<128)return new k(e>>>0,t>>>0);if(r=this.buf[this.pos++],e|=(127&r)<<28,t|=(127&r)>>4,r<128)return new k(e>>>0,t>>>0);for(i=0;i<5;++i)if(r=this.buf[this.pos++],t|=(127&r)<<7*i+3,r<128)return new k(e>>>0,t>>>0)}else{for(i=0;i<4;++i){if(this.pos>=this.len)throw n(this);if(r=this.buf[this.pos++],e|=(127&r)<<7*i,r<128)return new k(e>>>0,t>>>0)}if(this.pos>=this.len)throw n(this);if(r=this.buf[this.pos++],e|=(127&r)<<28,t|=(127&r)>>4,r<128)return new k(e>>>0,t>>>0);for(i=0;i<5;++i){if(this.pos>=this.len)throw n(this);if(r=this.buf[this.pos++],t|=(127&r)<<7*i+3,r<128)return new k(e>>>0,t>>>0)}}throw Error("invalid varint encoding")}function u(){return o.call(this).toLong()}function f(){return o.call(this).toNumber()}function a(){return o.call(this).toLong(!0)}function h(){return o.call(this).toNumber(!0)}function l(){return o.call(this).zzDecode().toLong()}function c(){return o.call(this).zzDecode().toNumber()}function d(){if(this.pos+8>this.len)throw n(this,8);return new k((this.buf[this.pos++]|this.buf[this.pos++]<<8|this.buf[this.pos++]<<16|this.buf[this.pos++]<<24)>>>0,(this.buf[this.pos++]|this.buf[this.pos++]<<8|this.buf[this.pos++]<<16|this.buf[this.pos++]<<24)>>>0)}function p(){return d.call(this).toLong(!0)}function v(){return d.call(this).toNumber(!0)}function y(){return d.call(this).zzDecode().toLong()}function g(){return d.call(this).zzDecode().toNumber()}function m(e){S&&S(),r.call(this,e)}t.exports=r,r.BufferReader=m;var w=e(21),b=e(1),k=w.LongBits,O=w.Long,x=r.prototype,N="undefined"!=typeof Uint8Array?Uint8Array:Array;x.h=N.prototype.slice||N.prototype.subarray,x.tag=function(){if(this.pos>=this.len)throw n(this);return new s(this.buf[this.pos]>>>3,7&this.buf[this.pos++])},x.int32=function(){var e=0,t=0,i=0;do{if(this.pos>=this.len)throw n(this);i=this.buf[this.pos++],t<32&&(e|=(127&i)<>>0},x.sint32=function(){var e=this.int32();return e>>>1^-(1&e)},x.int64=O&&u||f,x.uint64=O&&a||h,x.sint64=O&&l||c,x.bool=function(){return 0!==this.int32()},x.fixed32=function(){if(this.pos+4>this.len)throw n(this,4);return this.pos+=4,this.buf[this.pos-4]|this.buf[this.pos-3]<<8|this.buf[this.pos-2]<<16|this.buf[this.pos-1]<<24},x.sfixed32=function(){var e=this.fixed32();return e>>>1^-(1&e)},x.fixed64=O&&p||v,x.sfixed64=O&&y||g,x.float=function(){if(this.pos+4>this.len)throw n(this,4);var e=b.read(this.buf,this.pos,!1,23,4);return this.pos+=4,e},x.double=function(){if(this.pos+8>this.len)throw n(this,4);var e=b.read(this.buf,this.pos,!1,52,8);return this.pos+=8,e},x.bytes=function(){var e=this.int32()>>>0,t=this.pos,i=this.pos+e;if(i>this.len)throw n(this,e);return this.pos+=e,t===i?new this.buf.constructor(0):this.h.call(this.buf,t,i)},x.string=function(){var e=this.bytes(),t=e.length;if(t){for(var i=new Array(t),n=0,r=0;n191&&s<224)i[r++]=(31&s)<<6|63&e[n++];else if(s>239&&s<365){var o=((7&s)<<18|(63&e[n++])<<12|(63&e[n++])<<6|63&e[n++])-65536;i[r++]=55296+(o>>10),i[r++]=56320+(1023&o)}else i[r++]=(15&s)<<12|(63&e[n++])<<6|63&e[n++]}return String.fromCharCode.apply(String,i.slice(0,r))}return""},x.skip=function(e){if(void 0===e){do if(this.pos>=this.len)throw n(this);while(128&this.buf[this.pos++])}else{if(this.pos+e>this.len)throw n(this,e);this.pos+=e}return this},x.skipType=function(e){switch(e){case 0:this.skip();break;case 1:this.skip(8);break;case 2:this.skip(this.uint32());break;case 3:for(;;){var t=this.tag();if(4===t.wireType)break;this.skipType(t.wireType)}break;case 5:this.skip(4);break;default:throw Error("invalid wire type: "+e)}return this},x.reset=function(e){return e?(this.buf=e,this.len=e.length):(this.buf=null,this.len=0),this.pos=0,this},x.finish=function(e){var t=this.pos?this.h.call(this.buf,this.pos):this.buf;return this.reset(e),t};var S=function(){if(!w.Buffer)throw Error("Buffer is not supported");T.h=w.Buffer.prototype.slice,S=!1},T=m.prototype=Object.create(r.prototype);T.constructor=m,T.float=function(){if(this.pos+4>this.len)throw n(this,4);var e=this.buf.readFloatLE(this.pos,!0);return this.pos+=4,e},T.double=function(){if(this.pos+8>this.len)throw n(this,8);var e=this.buf.readDoubleLE(this.pos,!0);return this.pos+=8,e},T.string=function(){var e=this.int32()>>>0,t=this.pos,i=this.pos+e;if(i>this.len)throw n(this,e);return this.pos+=e,this.buf.toString("utf8",t,i)},T.finish=function(e){var t=this.pos?this.buf.slice(this.pos):this.buf;return this.reset(e),t}},{1:1,21:21}],16:[function(e,t,i){"use strict";function n(e){s.call(this,"",e),this.deferred=[],this.files=[]}function r(e){var t=e.parent.lookup(e.extend);if(t){var i=new u(e.getFullName(),e.id,e.type,e.rule,(void 0),e.options);return i.declaringField=e,e.extensionField=i,t.add(i),!0}return!1}t.exports=n;var s=e(10),o=s.extend(n),u=e(6),f=e(21),a=e(2);n.fromJSON=function(e,t){return t||(t=new n),t.setOptions(e.options).addJSON(e.nested)},o.resolvePath=f.resolvePath,o.load=function t(i,n){function r(e,t){if(n){var i=n;n=null,i(e,t)}}function s(t,i){try{if(f.isString(i)&&"{"===i.charAt(0)&&(i=JSON.parse(i)),f.isString(i)){var n=e(13)(i,u);n.imports&&n.imports.forEach(function(e){o(u.resolvePath(t,e))}),n.weakImports&&n.weakImports.forEach(function(e){o(u.resolvePath(t,e),!0)})}else u.setOptions(i.options).addJSON(i.nested)}catch(e){return void r(e)}h||r(null,u)}function o(e,t){var i=e.indexOf("google/protobuf/");if(i>-1){var o=e.substring(i);o in a&&(e=o)}if(!(u.files.indexOf(e)>-1)){if(u.files.push(e),e in a)return++h,void setTimeout(function(){--h,s(e,a[e])});++h,f.fetch(e,function(i,o){if(--h,n)return i?void(t||r(i)):void s(e,o)})}}var u=this;if(!n)return f.asPromise(t,u,i);var h=0;f.isString(i)&&(i=[i]),i.forEach(function(e){o(u.resolvePath("",e))}),h||r(null)},o.e=function(e){var t=this.deferred.slice();this.deferred=[];for(var i=0;i-1&&this.deferred.splice(t,1)}e.extensionField&&(e.extensionField.parent.remove(e.extensionField),e.extensionField=null)}else if(e instanceof s)for(var i=e.getNestedArray(),n=0;n0)return m.shift();if(w)return i();var n,o,u;do{if(v===y)return null;for(n=!1;/\s/.test(u=r(v));)if(u===f&&++g,++v===y)return null;if(r(v)===a){if(++v===y)throw t("comment");if(r(v)===a){for(;r(++v)!==f;)if(v===y)return null;++v,++g,n=!0}else{if((u=r(v))!==h)return a;do{if(u===f&&++g,++v===y)return null;o=u,u=r(v)}while(o!==h||u!==a);++v,n=!0}}}while(n);if(v===y)return null;var l=v;s.lastIndex=0;var c=s.test(r(l++));if(!c)for(;l]/g,o=/(?:"([^"\\]*(?:\\.[^"\\]*)*)")/g,u=/(?:'([^'\\]*(?:\\.[^'\\]*)*)')/g,f="\n",a="/",h="*"},{}],19:[function(e,t,i){"use strict";function n(e,t){s.call(this,e,t),this.fields={},this.oneofs=void 0,this.extensions=void 0,this.reserved=void 0,this.j=null,this.k=null,this.l=null,this.m=null}function r(e){return e.j=e.k=e.l=e.m=null,delete e.encode,delete e.decode,e}t.exports=n;var s=e(10),o=s.prototype,u=s.extend(n),f=e(5),a=e(12),h=e(6),l=e(17),c=e(14),d=e(7),p=e(21),v=e(15),y=e(4),g=e(3),m=e(24),w=p.codegen;Object.defineProperties(u,{fieldsById:{get:u.getFieldsById=function(){if(this.j)return this.j;this.j={};for(var e=Object.keys(this.fields),t=0;t0?t.splice(--r,2):i?t.splice(r,1):++r:"."===t[r]?t.splice(r,1):++r;return n+t.join("/")}var f=t.exports={},a=f.LongBits=e(23);f.codegen=e(22);var h=f.isNode=Boolean(i.process&&i.process.versions&&i.process.versions.node);if(f.Buffer=null,h)try{f.Buffer=e("buffer").Buffer}catch(e){}if(f.Long=i.dcodeIO&&i.dcodeIO.Long||null,!f.Long)try{f.Long=e("long")}catch(e){}f.isString=n,f.isObject=function(e){return Boolean(e&&"object"==typeof e)},f.isInteger=Number.isInteger||function(e){return"number"==typeof e&&isFinite(e)&&Math.floor(e)===e},f.toArray=function(e){if(!e)return[];for(var t=Object.keys(e),i=t.length,n=new Array(i),r=0;r ").replace(/\t/g," ")),r="return "+r;var s,o=[];Array.isArray(i)?s=i.slice():i?(s=Object.keys(i),o=s.map(function(e){return i[e]})):s=[];var u=Function.apply(null,s.concat(r));return o?u.apply(null,o):u()},e}t.exports=n;var r=/[{[]$/,s=/^[}\]]/,o=/:$/,u=/^\s*(?:if|else if|while|for)\b|\b(?:else)\s*$/,f=/\b(?:break|continue);?$|^\s*return\b/;n.supported=!1;try{n.supported=1===n("a","b")("return a-b").eof()(2,1)}catch(e){}n.verbose=!1},{}],23:[function(e,t,i){"use strict";function n(e,t){this.lo=e,this.hi=t}t.exports=n;var r=e(21),s=n.prototype,o=new n(0,0);o.toNumber=function(){return 0},o.zzEncode=o.zzDecode=function(){return this},o.length=function(){return 1},n.fromNumber=function(e){if(0===e)return o;var t=e<0;e=Math.abs(e);var i=e>>>0,r=(e-i)/4294967296>>>0;return t&&(r=~r>>>0,i=~i>>>0,++i>4294967295&&(i=0,++r>4294967295&&(r=0))),new n(i,r)},n.from=function(e){return"number"==typeof e?n.fromNumber(e):new n(e.low>>>0,e.high>>>0)},s.toNumber=function(e){return!e&&this.hi>>>31?(this.lo=~this.lo+1>>>0,this.hi=~this.hi>>>0,this.lo||(this.hi=this.hi+1>>>0),-(this.lo+4294967296*this.hi)):this.lo+4294967296*this.hi},s.toLong=function(e){return new r.Long(this.lo,this.hi,e)};var u=String.prototype.charCodeAt;n.fromHash=function(e){return new n((u.call(e,0)|u.call(e,1)<<8|u.call(e,2)<<16|u.call(e,3)<<24)>>>0,(u.call(e,4)|u.call(e,5)<<8|u.call(e,6)<<16|u.call(e,7)<<24)>>>0)},s.toHash=function(){return String.fromCharCode(255&this.lo,this.lo>>>8&255,this.lo>>>16&255,this.lo>>>24&255,255&this.hi,this.hi>>>8&255,this.hi>>>16&255,this.hi>>>24&255)},s.zzEncode=function(){var e=this.hi>>31;return this.hi=((this.hi<<1|this.lo>>>31)^e)>>>0,this.lo=(this.lo<<1^e)>>>0,this},s.zzDecode=function(){var e=-(1&this.lo);return this.lo=((this.lo>>>1|this.hi<<31)^e)>>>0,this.hi=(this.hi>>>1^e)>>>0,this},s.length=function(){var e=this.lo,t=(this.lo>>>28|this.hi<<4)>>>0,i=this.hi>>>24;return 0===i?0===t?e<16384?e<128?1:2:e<1<<21?3:4:t<16384?t<128?5:6:t<1<<21?7:8:i<128?9:10}},{21:21}],24:[function(e,t,i){"use strict";function n(e){this.type=e}t.exports=n;var r=e(5),s=e(19),o=e(21),u=n.prototype;Object.defineProperties(u,{fieldsArray:{get:u.getFieldsArray=function(){return this.type.getFieldsArray()}},fullName:{get:u.getFullName=function(){return this.type.getFullName()}}}),u.verify=function(e){for(var t=this.getFieldsArray(),i=0;i127;)e[t++]=127&i|128,i>>>=7;e[t]=i}function a(e,t,i){for(;i.hi||i.lo>127;)e[t++]=127&i.lo|128,i.lo=(i.lo>>>7|i.hi<<25)>>>0,i.hi>>>=7;e[t++]=i.lo}function h(e,t,i){e[t++]=255&i,e[t++]=i>>>8&255,e[t++]=i>>>16&255,e[t]=i>>>24&255}function l(e,t,i){e[t++]=255&i.lo,e[t++]=i.lo>>>8&255,e[t++]=i.lo>>>16&255,e[t++]=i.lo>>>24,e[t++]=255&i.hi,e[t++]=i.hi>>>8&255,e[t++]=i.hi>>>16&255,e[t]=i.hi>>>24}function c(e,t,i){O.write(e,i,t,!1,23,4)}function d(e,t,i){O.write(e,i,t,!1,52,8)}function p(e,t,i){for(var n=0;n>6|192,e[t++]=63&s|128):55296===(64512&s)&&n+1>18|240,e[t++]=s>>12&63|128,e[t++]=s>>6&63|128,e[t++]=63&s|128):(e[t++]=s>>12|224,e[t++]=s>>6&63|128,e[t++]=63&s|128)}}function v(e){var t=e.length>>>0;if(t){for(var i,n=0,r=0;r>>=0,this.push(f,e<128?1:e<16384?2:e<2097152?3:e<268435456?4:5,e)},S.int32=function(e){return e<0?this.push(a,10,x.fromNumber(e)):this.uint32(e)},S.sint32=function(e){return this.uint32(e<<1^e>>31)},S.uint64=function(e){var t;return t="number"==typeof e?e?x.fromNumber(e):x.zero:e.low||e.high?new x(e.low>>>0,e.high>>>0):x.zero,this.push(a,t.length(),t)},S.int64=S.uint64,S.sint64=function(e){var t=x.from(e).zzEncode();return this.push(a,t.length(),t)},S.bool=function(e){return this.push(u,1,e?1:0)},S.fixed32=function(e){return this.push(h,4,e>>>0)},S.sfixed32=function(e){return this.push(h,4,e<<1^e>>31)},S.fixed64=function(e){return this.push(l,8,x.from(e))},S.sfixed64=function(e){return this.push(l,8,x.from(e).zzEncode())},S.float=function(e){return this.push(c,4,e)},S.double=function(e){return this.push(d,8,e)};var T=N.prototype.set?function(e,t,i){e.set(i,t)}:function(e,t,i){for(var n=0;n>>0;return t?this.uint32(t).push(T,t,e):this.push(u,1,0)},S.string=function(e){var t=v(e);return t?this.uint32(t).push(p,t,e):this.push(u,1,0)},S.fork=function(){return this.stack.push(new s(this)),this.head=this.tail=new n(r,0,0),this.len=0,this},S.reset=function(){if(this.stack.length){var e=this.stack.pop();this.head=e.head,this.tail=e.tail,this.len=e.len}else this.head=this.tail=new n(r,0,0),this.len=0;return this},S.ldelim=function(e){var t=this.head,i=this.tail,n=this.len;return this.reset(),void 0!==e&&this.tag(e,2),this.uint32(n),this.tail.next=t.next,this.tail=i,this.len+=n,this},S.finish=function(){var e=this.head.next,t=new N(this.len),i=0;for(this.reset();e;)e.fn(t,i,e.val),i+=e.len,e=e.next;return t};var A=y.prototype=Object.create(o.prototype);A.constructor=y,A.float=function(e){return this.push(g,4,e)},A.double=function(e){return this.push(m,8,e)},A.bytes=function(e){var t=e.length>>>0;return t?this.uint32(t).push(w,t,e):this.push(u,1,0)},A.string=function(e){var t=v(e);return t?this.uint32(t).push(b,t,e):this.push(u,1,0)},A.finish=function(){var e=this.head.next,t=k.Buffer.allocUnsafe&&k.Buffer.allocUnsafe(this.len)||new k.Buffer(this.len),i=0;for(this.reset();e;)e.fn(t,i,e.val),i+=e.len,e=e.next;return t}},{1:1,21:21}],26:[function(e,t,i){(function(t){"use strict";function n(e,t,i){return"function"==typeof t?(i=t,t=new r.Root):t||(t=new r.Root),t.load(e,i)||r}var r=t.protobuf=i,s=e(21);r.load=n,r.tokenize=e(18),r.parse=e(13),r.Writer=e(25),r.BufferWriter=r.Writer.BufferWriter,r.Reader=e(15),r.BufferReader=r.Reader.BufferReader,r.Encoder=e(4),r.Decoder=e(3),r.ReflectionObject=e(11),r.Namespace=e(10),r.Root=e(16),r.Enum=e(5),r.Type=e(19),r.Field=e(6),r.OneOf=e(12),r.MapField=e(8),r.Service=e(17),r.Method=e(9),r.Prototype=e(14),r.inherits=e(7),r.types=e(20),r.common=e(2),r.util=s}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{10:10,11:11,12:12,13:13,14:14,15:15,16:16,17:17,18:18,19:19,2:2,20:20,21:21,25:25,3:3,4:4,5:5,6:6,7:7,8:8,9:9}]},{},[26]); +o.toString=function(){return this.constructor.name}},{10:10,13:13,2:2,21:21,6:6}],17:[function(e,t,i){"use strict";function n(e,t){s.call(this,e,t),this.methods={},this.i=null}function r(e){return e.i=null,e}t.exports=n;var s=e(10),o=s.prototype,u=s.extend(n),f=e(9),a=e(21);Object.defineProperties(u,{methodsArray:{get:u.getMethodsArray=function(){return this.i||(this.i=a.toArray(this.methods))}}}),n.testJSON=function(e){return Boolean(e&&e.methods)},n.fromJSON=function(e,t){var i=new n(e,t.options);return t.methods&&Object.keys(t.methods).forEach(function(e){i.add(f.fromJSON(e,t.methods[e]))}),i},u.toJSON=function(){var e=o.toJSON.call(this);return{options:e&&e.options||void 0,methods:s.arrayToJSON(this.getMethodsArray())||{},nested:e&&e.nested||void 0}},u.get=function(e){return o.get.call(this,e)||this.methods[e]||null},u.resolveAll=function(){for(var e=this.getMethodsArray(),t=0;t0)return m.shift();if(w)return i();var n,o,u;do{if(v===y)return null;for(n=!1;/\s/.test(u=r(v));)if(u===f&&++g,++v===y)return null;if(r(v)===a){if(++v===y)throw t("comment");if(r(v)===a){for(;r(++v)!==f;)if(v===y)return null;++v,++g,n=!0}else{if((u=r(v))!==h)return a;do{if(u===f&&++g,++v===y)return null;o=u,u=r(v)}while(o!==h||u!==a);++v,n=!0}}}while(n);if(v===y)return null;var l=v;s.lastIndex=0;var c=s.test(r(l++));if(!c)for(;l]/g,o=/(?:"([^"\\]*(?:\\.[^"\\]*)*)")/g,u=/(?:'([^'\\]*(?:\\.[^'\\]*)*)')/g,f="\n",a="/",h="*"},{}],19:[function(e,t,i){"use strict";function n(e,t){s.call(this,e,t),this.fields={},this.oneofs=void 0,this.extensions=void 0,this.reserved=void 0,this.j=null,this.k=null,this.l=null,this.m=null}function r(e){return e.j=e.k=e.l=e.m=null,delete e.encode,delete e.decode,e}t.exports=n;var s=e(10),o=s.prototype,u=s.extend(n),f=e(5),a=e(12),h=e(6),l=e(17),c=e(14),d=e(7),p=e(21),v=e(15),y=e(4),g=e(3),m=e(24),w=p.codegen;Object.defineProperties(u,{fieldsById:{get:u.getFieldsById=function(){if(this.j)return this.j;this.j={};for(var e=Object.keys(this.fields),t=0;t0?t.splice(--r,2):i?t.splice(r,1):++r:"."===t[r]?t.splice(r,1):++r;return n+t.join("/")}var f=t.exports={},a=f.LongBits=e(23);f.codegen=e(22);var h=f.isNode=Boolean(i.process&&i.process.versions&&i.process.versions.node);if(f.Buffer=null,h)try{f.Buffer=e("buffer").Buffer}catch(e){}if(f.Long=i.dcodeIO&&i.dcodeIO.Long||null,!f.Long)try{f.Long=e("long")}catch(e){}f.isString=n,f.isObject=function(e){return Boolean(e&&"object"==typeof e)},f.isInteger=Number.isInteger||function(e){return"number"==typeof e&&isFinite(e)&&Math.floor(e)===e},f.toArray=function(e){if(!e)return[];for(var t=Object.keys(e),i=t.length,n=new Array(i),r=0;r ").replace(/\t/g," ")),r="return "+r;var s,o=[];Array.isArray(i)?s=i.slice():i?(s=Object.keys(i),o=s.map(function(e){return i[e]})):s=[];var u=Function.apply(null,s.concat(r));return o?u.apply(null,o):u()},e}t.exports=n;var r=/[{[]$/,s=/^[}\]]/,o=/:$/,u=/^\s*(?:if|else if|while|for)\b|\b(?:else)\s*$/,f=/\b(?:break|continue);?$|^\s*return\b/;n.supported=!1;try{n.supported=1===n("a","b")("return a-b").eof()(2,1)}catch(e){}n.verbose=!1},{}],23:[function(e,t,i){"use strict";function n(e,t){this.lo=e,this.hi=t}t.exports=n;var r=e(21),s=n.prototype,o=new n(0,0);o.toNumber=function(){return 0},o.zzEncode=o.zzDecode=function(){return this},o.length=function(){return 1},n.fromNumber=function(e){if(0===e)return o;var t=e<0;e=Math.abs(e);var i=e>>>0,r=(e-i)/4294967296>>>0;return t&&(r=~r>>>0,i=~i>>>0,++i>4294967295&&(i=0,++r>4294967295&&(r=0))),new n(i,r)},n.from=function(e){return"number"==typeof e?n.fromNumber(e):new n(e.low>>>0,e.high>>>0)},s.toNumber=function(e){return!e&&this.hi>>>31?(this.lo=~this.lo+1>>>0,this.hi=~this.hi>>>0,this.lo||(this.hi=this.hi+1>>>0),-(this.lo+4294967296*this.hi)):this.lo+4294967296*this.hi},s.toLong=function(e){return new r.Long(this.lo,this.hi,e)};var u=String.prototype.charCodeAt;n.fromHash=function(e){return new n((u.call(e,0)|u.call(e,1)<<8|u.call(e,2)<<16|u.call(e,3)<<24)>>>0,(u.call(e,4)|u.call(e,5)<<8|u.call(e,6)<<16|u.call(e,7)<<24)>>>0)},s.toHash=function(){return String.fromCharCode(255&this.lo,this.lo>>>8&255,this.lo>>>16&255,this.lo>>>24&255,255&this.hi,this.hi>>>8&255,this.hi>>>16&255,this.hi>>>24&255)},s.zzEncode=function(){var e=this.hi>>31;return this.hi=((this.hi<<1|this.lo>>>31)^e)>>>0,this.lo=(this.lo<<1^e)>>>0,this},s.zzDecode=function(){var e=-(1&this.lo);return this.lo=((this.lo>>>1|this.hi<<31)^e)>>>0,this.hi=(this.hi>>>1^e)>>>0,this},s.length=function(){var e=this.lo,t=(this.lo>>>28|this.hi<<4)>>>0,i=this.hi>>>24;return 0===i?0===t?e<16384?e<128?1:2:e<1<<21?3:4:t<16384?t<128?5:6:t<1<<21?7:8:i<128?9:10}},{21:21}],24:[function(e,t,i){"use strict";function n(e){this.type=e}t.exports=n;var r=e(5),s=e(19),o=e(21),u=n.prototype;Object.defineProperties(u,{fieldsArray:{get:u.getFieldsArray=function(){return this.type.getFieldsArray()}},fullName:{get:u.getFullName=function(){return this.type.getFullName()}}}),u.verify=function(e){for(var t=this.getFieldsArray(),i=0;i127;)e[t++]=127&i|128,i>>>=7;e[t]=i}function a(e,t,i){for(;i.hi||i.lo>127;)e[t++]=127&i.lo|128,i.lo=(i.lo>>>7|i.hi<<25)>>>0,i.hi>>>=7;e[t++]=i.lo}function h(e,t,i){e[t++]=255&i,e[t++]=i>>>8&255,e[t++]=i>>>16&255,e[t]=i>>>24&255}function l(e,t,i){e[t++]=255&i.lo,e[t++]=i.lo>>>8&255,e[t++]=i.lo>>>16&255,e[t++]=i.lo>>>24,e[t++]=255&i.hi,e[t++]=i.hi>>>8&255,e[t++]=i.hi>>>16&255,e[t]=i.hi>>>24}function c(e,t,i){O.write(e,i,t,!1,23,4)}function d(e,t,i){O.write(e,i,t,!1,52,8)}function p(e,t,i){for(var n=0;n>6|192,e[t++]=63&s|128):55296===(64512&s)&&n+1>18|240,e[t++]=s>>12&63|128,e[t++]=s>>6&63|128,e[t++]=63&s|128):(e[t++]=s>>12|224,e[t++]=s>>6&63|128,e[t++]=63&s|128)}}function v(e){var t=e.length>>>0;if(t){for(var i,n=0,r=0;r>>=0,this.push(f,e<128?1:e<16384?2:e<2097152?3:e<268435456?4:5,e)},S.int32=function(e){return e<0?this.push(a,10,x.fromNumber(e)):this.uint32(e)},S.sint32=function(e){return this.uint32(e<<1^e>>31)},S.uint64=function(e){var t;return t="number"==typeof e?e?x.fromNumber(e):x.zero:e.low||e.high?new x(e.low>>>0,e.high>>>0):x.zero,this.push(a,t.length(),t)},S.int64=S.uint64,S.sint64=function(e){var t=x.from(e).zzEncode();return this.push(a,t.length(),t)},S.bool=function(e){return this.push(u,1,e?1:0)},S.fixed32=function(e){return this.push(h,4,e>>>0)},S.sfixed32=function(e){return this.push(h,4,e<<1^e>>31)},S.fixed64=function(e){return this.push(l,8,x.from(e))},S.sfixed64=function(e){return this.push(l,8,x.from(e).zzEncode())},S.float=function(e){return this.push(c,4,e)},S.double=function(e){return this.push(d,8,e)};var T=N.prototype.set?function(e,t,i){e.set(i,t)}:function(e,t,i){for(var n=0;n>>0;return t?this.uint32(t).push(T,t,e):this.push(u,1,0)},S.string=function(e){var t=v(e);return t?this.uint32(t).push(p,t,e):this.push(u,1,0)},S.fork=function(){return this.stack.push(new s(this)),this.head=this.tail=new n(r,0,0),this.len=0,this},S.reset=function(){if(this.stack.length){var e=this.stack.pop();this.head=e.head,this.tail=e.tail,this.len=e.len}else this.head=this.tail=new n(r,0,0),this.len=0;return this},S.ldelim=function(e){var t=this.head,i=this.tail,n=this.len;return this.reset(),void 0!==e&&this.tag(e,2),this.uint32(n),this.tail.next=t.next,this.tail=i,this.len+=n,this},S.finish=function(){var e=this.head.next,t=new N(this.len),i=0;for(this.reset();e;)e.fn(t,i,e.val),i+=e.len,e=e.next;return t};var A=y.prototype=Object.create(o.prototype);A.constructor=y,A.float=function(e){return this.push(g,4,e)},A.double=function(e){return this.push(m,8,e)},A.bytes=function(e){var t=e.length>>>0;return t?this.uint32(t).push(w,t,e):this.push(u,1,0)},A.string=function(e){var t=v(e);return t?this.uint32(t).push(b,t,e):this.push(u,1,0)},A.finish=function(){var e=this.head.next,t=k.Buffer.allocUnsafe&&k.Buffer.allocUnsafe(this.len)||new k.Buffer(this.len),i=0;for(this.reset();e;)e.fn(t,i,e.val),i+=e.len,e=e.next;return t}},{1:1,21:21}],26:[function(e,t,i){(function(t){"use strict";function n(e,t,i){return"function"==typeof t?(i=t,t=new r.Root):t||(t=new r.Root),t.load(e,i)||r}var r=t.protobuf=i,s=e(21);r.load=n,r.tokenize=e(18),r.parse=e(13),r.Writer=e(25),r.BufferWriter=r.Writer.BufferWriter,r.Reader=e(15),r.BufferReader=r.Reader.BufferReader,r.Encoder=e(4),r.Decoder=e(3),r.ReflectionObject=e(11),r.Namespace=e(10),r.Root=e(16),r.Enum=e(5),r.Type=e(19),r.Field=e(6),r.OneOf=e(12),r.MapField=e(8),r.Service=e(17),r.Method=e(9),r.Prototype=e(14),r.inherits=e(7),r.types=e(20),r.common=e(2),r.util=s}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{10:10,11:11,12:12,13:13,14:14,15:15,16:16,17:17,18:18,19:19,2:2,20:20,21:21,25:25,3:3,4:4,5:5,6:6,7:7,8:8,9:9}]},{},[26]); //# sourceMappingURL=protobuf.min.js.map diff --git a/dist/protobuf.min.js.gz b/dist/protobuf.min.js.gz index e5b8bc24497b2c8c9a71668ca6eb4102ab6fe701..9b916e5f925010ea80927f60bc4922655bc1ee95 100644 GIT binary patch delta 15427 zcmV-JJiNn*dc=B=k$>HT@bEA^I%)j;{%b7xIvMk{fRf8}!t+Ksi(a0 zrpt6(Vq@GdS;ErbPN(F4#+JcdGWBAApxnpiipSuKWl^V}ou=(MPcO<@KWnvu+)okd8icif*A0gTTI?Jqr=9b7 z61mANWw{tk!C*3@ljr$fy4PjX$nTz>E(7?Cqv_dMmw(Noy%%gAC4)|wL+Tj5x*>c_ zB0elz^HCp%F>gg;v%q9tlEsxjM(P6BEm ziwdi5q3fnpH>0{)O>8 zDr-eQ#DC?iy~u9-9?TFc_M%u$lP;P)x5^ZIFpn&0-{eWjYtYFGflxpvn*#Puo)>$F zu^FK>#&OM~8KQI?^$q~Qd|Aro$HSg;25Us66egRygdk z+3fDaFPM=Ip|KQ$iq8wb3|LaYz~N)HDxok8dw<|BBbA7CfT(6c2*{^e(|HC>(C0k6 zfFk?!{rXKWVC8dvY9nkf3xd;bv*~Ahdu;kV!Xm9GYt7H1?qIw>4aYX>x_fhMVtN+! zuu7}Nru$fh%Fhrg35sk05_~AW2UB3Rl4FHv4gfEs($1LI6pT6nER3`0q|b**Ycc`~ zI)7>|*`yUM*m57~iRBjcWv8e4YRTeOl=owxIIB`7DrKTlOqD2mZ!ua$-QLOb>-C!5 ztw*f4x%j+g!5c-HC*#uVYX(Z$!QK9c{ndx|e!JvF3A|;s@_}DnWZA`>Yu>!?wRp>G z(@&3;(On9K`6Rp(RIW?KccPS~z89yr9=m&$-iCKm5J(eX zfXI1%Tjq1|6?zDEdf~BT5_Z?@I-W1N$~wOVm?@`6oe+o4`_S%Wna9M**xfhsGt491 zN5RKgsyYk3BrT5*RS#*LW_Hd&&*}kTE|V)5T70#D#^0;&Fc+EpYEj~lzQw<0P=Bf} z3}y*)!0z7Bhbf@`Uh>=b&aed>zu>SXgfPv&2rOhN@Mx?A0!aP}hhDmz&t-Y|zB=c* z`X$;_zs|F4ZsheoCe{E~jwI?#Z>r2BTb|Fk#2~W(sF~h_HPbNZ zDTV~fJfzwRNR|Cg;u8uSt(k^fWq-fc1HlrDD3 zolZ2uB)F3@OGD+B^aDWCxXf~^ov-2NLoHw#tP5*l3J{WJWa9{wJE@F-Zi5voy)wW~ zBS~SwrDN1iiUAJ`z#dDZ>nxcxNEi(`DkmWaE?l%q#16mlRcitQ;GCFyn)ZdPj3eGI z;|u5j)v>spOh%xs6xsZmLw_2GOZ97lYtx1xA9zc_Bf=RC6IFp(fd90w;)Q5_Y&GzA zvA*qUa>)Z%8p2H-%$bPF2d z?WyXu-)h|klcARpSsKN1F}xiOmLTENi}%@I<6`DxN)Y0|qv#s`U9VA%Y7i>biWB&} zFt`C>W$-i{ktPQ6Hy&T|NwaB%9`db3c0;yO1;9_`D zK@aJ8jXG3rmJRKsM}MGly|ryKR@t&ic+3=0yS!aoCJQX&TUbzAgDLQPSSTq6p~>y_ ztkA@x8m90n&*NL5+A>Y# z?ll?Yw3KsN%5!!_d#~zR_Nn&G47RU6l{_5-rrXzZBz2VO*M5WWXVCe9%WKhMs}~iKtL$xKwu| z9dP0mG&OBi8GLy$r-MSh4r4ECThJa`(83kTP>SU$IM%DtK4Mf2nuw)p3KObTN;A$=kB<@uBsbGrc( zS%214CG1c_|S*E?wP_lvOgH_YGoiBxEKygY=W0i z7KWu3_#dYfUV&10LoyDQ|4sA{v|^$b_kZ71$BbZtHD9lrS&G>FQHmHFM|y$IM|~mX zLB0V4hxvfvNsL$27Is-U%mHhlDpNS4R!s;-@N5#G9K9@1Y4LzF%`G+%qpZD=i&~aM zSx%*ek}`$XQ2H9lE9t_NV>jE`0_tEhql4Wbq|N4y%7;Ezs~bf$Qn9778!FWOs(;cz zft#GV4`7(01r4ibg` zXOpcHAfN?EQ;Vm-4`L)5`W;GxtJ$oU{(#FYp+$dJdiE;0mbn|S5^Z3o6s0Y{Kmq(PbVmUd-wKDR6_uN z&ayd=A*I>m3gk7^ndaG5r4DMxvKAUVC`DF*k8FXZuyO`_47aMPcP9&l1fKlCq!ru3 z#u^)mCzDF&bSU0Vig#q2hkrpxEKPk6C8ihjRf+G@66AU=PWMhbrd%=sK_55LEZs}_ zMO-G=D5j~fsIFOuJ2}pL?3($&ejDCyi??=ZPIl#-Y_#N1lpj2CifyvfFhwQHiDC%n zIls!TxiiI&!k4j7-!ou6!lHqm1+f@6=ry}8fWXr@48d(mLy0@iZhzSA3YG$l^R18-Xc2bl!YVB|SEW42ikr>v?e#u%BSEmIQ&TC~%Z-@GW|3ogV1r7YsSd^@!gYz@Im zMl~ebff;!XAC>|bQx2*?5)vaMt=cqT^eLj9h11)39wSz(8GmCT;OfjID8SG*Wds;n zOS&(GAUi@i#{CntCI}nKOo}%=2ih*)3U(({Ss~hBx{4p^ca2m-&=eyW!=jN8EB^JC z=F0a(dtLx&+UZJBGbT|}v1(|l7m5L3mA1~1KY;xM9 zKPc4<$5z{^!GBa&p^~8ye4ss+VkZY%Q|J;ccrcxkrx^nd~(QRlgK~^Vc*9eUyWE&i%b|@MTEMe0ZyXaUgpJJ#X7&*ej)oEb$@f0@j zS$4Tx7 zySyYK%;F+a{a9q_*I9ZEtYcI2DmN*mYUEe~-NK${c?AR^B#})^t_`TF4_W%J7-mU- zbpwJ^M}N^9^5qyv4-#{5%LhE%Km$iXC~EjYO*ZqEo?>`}m+>slUzL6*2rOZ$He%c; zFx{77_hr>^&Q8J;P-^H9&Pdbf?kid(V()|AQ2nHx!jM6`8GnNS&p@W;7aUFRVo#|`)-p~)AT_AA zyqMbtQIr%j^2!j&-{6)vA&0D|w5F?VG%HR;He0J}OC3F%diQ{{y#WgtYzY=iGQE9V z1EMU|TchVL+a|O*n`*b-&0Lg0IUu61H^zElM=?Xs-c-0GWuR6toYtTCMN*V_yj`MX zrGFD@4w^*09&#vsdS1%&nl5S}8R!_BuvFNDFimZemR`hFBkbnp7*AjX|JxMq_Sx6ge~DqCs?B7ds=MaAfCDbutC=+qMNvCyUU z!T?InE2bf-QKKpy3o`HDuUY0g*T+*2OS_a1KgDiB>Z5kCQi|lGj3~+%(?-@GqJJJ{ zU#K2V)ro@*(G&GUS*uR0-K+3H&kd;Ss(iY!S^_GSKria_po-lS<@#}W46EVg7a1#9 zOekF1_K1NWlQ|;O<_ar2LvuwOWlZNX+lW(IMjT^auuCLX3EWQu&AzWKm^uZE1rPz3 zCEW!a2iC5?T&=u(G4{;nUUp#CD}N!p4(~sA?N&s?#qs9Fr+fWM%7wM{PQVXE4s+j-~g?{U&~D#9P3G z)v0C5$GZ zq!FCXHq^PT(dO>fb!YqKkdF10J1cyO#pD~5tv47;CK(Ir$%e5^g_aRZ{xTDK$sB*a z2-sM%n@KcopR+|YoU)kB@qhRaeIh;3_0YiXwHDjY?hwdz(EgYusqe7{Fz#)N-jd0S zFP00{5>@0kCUx66*F>FjA*5v{)M;yug5YWAOgmg^$Mh+V2^1TRgt3ltNZX~aD_+jB ziCgGPd97lTc)mpQTB>2J+46}eSMn}Vp?!ZXY@)+7!WH9>_oCSXdVi4JM)k*mdQaDE z+6RifX7`d9S{AM-EC*`NZ5Q_(9iJA%d}K6N5c+yI2B3&sZR5n-nCgn?#P`Jb+FmPR z9_G_MSg&*)_3Shks4Z9HJ3xbF-os1Im>#Um6i_W;~_SE<8)Xr5HDi!ex`ct=R%L zd~W$x2Q>!Fw8F_#Ja4iS;>z#&wxdEih1>O7qQ{oEYo8ff-isTg2^vtRU)X!dBH%<1 z$*>q{y%|pweU~9CULe`?9Z-U0t%sGM7spOV`Rch99Lb~TK!5RDhRgmHz(Hd$=bOuI z=bL`LP;}~)kZmQSx28&9PNpMH*Y=sbjP*n93VT9 z_^%*U>HUa{pX4M|(IGf|h1rem!`=ai@OA;DQu0*=5nV zN#G})w*vZ#MLY&sNGL3n|5hTXH4=cevg~r#v&7rZ*<%>sjceoS3$6P>=%yL1A$!35zLeVErsdt4Re#ABl{#ac-1Xi0)^4)(h0*3r zr*Om0$g$D`7JkYym|dlfLZdJ#ptA%vi3m=ImDK< z&^~??D--yjB{N(lncE8Ji?I8`Rzt0Ad$;>UbreyS)p$)TZLbNSvK`wtX%&+EPY9Jv z@f%xjP=Dv;*ql1s5reDQ)kZtripHyKk;dvP*~>V`lPSSUbf!^TD~4eu4Wpb@?mz1c z<6L!Iu?0Wgb3X@SvRw9&wzjXqK8~NZ(gGi_=FGQs3^SEZZ}wdPnN;8SP$PWA93xa8 z`)Dsy!P1018CQN;?Nw^oxU$6UflXD>=4b)>CV!JCb3~Tav)puR8N{6gEq#gc+a$s_ z=%cSFLa*JvdoD!ha*EMRwN$CmLGN#4S_4i!#j@$|*{2&A6!t5i_>~SjN*|pXM}?}Y zV6Q-jXsuzPGw0KG3c19cS?^uoepb6AT?AKLUH z1uk5zr4AN+kJNYsQSxFcp;<9*F434dlrBCO(Qs5@v|O)LSQcB3s+6G82S2Em0IGv0 zIH?}XlZdXkD)eaEqZq`~cE5Cj^jL3AihtZ-(6#;Cpl4blBp5y zvOzAH4#Cl0EQ^`iX35!;X{al%+n1TzlaKw%2K`D3JrIJAZGz z4?J=pvpW_|JAGGtNR^KFw4fHQyBilOCU<=%w^e^gDp=mYvWI&^c%hn-zcm zH-8xKeI5n=Afk`eSHb=Tt9N&Rj(=V(bjN{Xz@+FC>UZK)lv}4{KIa$l9H`32vzaox zZMq1RD>-BX+;?VFRlpVZQ}2MCq`J$=$}G^@~qDPY%~vStS_&^BX5P>EZ$20 zTS$Mt3)Pt&86*JcKBjvhp13FTb~++$8snv7mDpXE`K?0PFUXq5G4-KL!+#gTfwnY; zvA!B=$viSoqRyvb{D;H=%mgXkg@;k zu)FtiH0;1X&%e@0DL#k;*w}rk+F(GWYgnkbx+u`7^x6@Su6M+e6zFFG%~-CF$C%lE%a@OJx?PDCNA|;NAKVwhtV&Y;?s0F@@#m*1edG#qu2FBu)vWt2_I!xUdSRDr>s< zE!Qd+Os=$`_zIxF6@MP#wNMTOLf6CzE*#>}Bk9%iV9AQl18=0ocfyU$I)PuzD{j*g zh$raBJW7yR^6Id^7xd^3w((X`)!!*w!mHSybcWZY_me23ve7?N=l$&F6+FKNO+sh? zrBYQ~P*A!5qjJ}p)oQ?hvKJB|9M!B_O_B-?IU_HIhP12*J%1V1)hU$1Ixx0(WFex> zeBUp%V0teNl39e}g4+MyFQC^zqAOEtHePt)4?f-;vB;ruBP7eE_;Vh9T`l2}cIAcN zY-H%8g2D@Z>ly%V@$8>SQ-L6(e^Vn)D|qKGhwUr1p?**c>c`glih6O-G0^Xh5n@_) z!5Sf1iQ~Ei0e^;6LPmKq3=+-sh0VXPDDG?0pHdn9(oCJ~pfDX2>`fpKKdTd*nNk@p zZYTk1OfDU&wA9jb8vTo08e@!`$_nZ|=$p&^crU%!xP8E4PA-&U1XF7SKcG;>u1>YG zuHe%rLD$-2X=D(F%;pai5jSjaRMmJ$myoM(vx zF}9^Owr|X`N;mp*po9LP1f*GOYK}i2T2mMd^Xbmhkxmaz?Qz|cpRZS`nx@6(AF!W+kAt#su)3oITZhhWnZ=O)<-G&*p&ho3gj)k z1*la_l1zVv4s#2Dzv_`zaXI4-H??pv;|7`;M{r;G%7MFjmJW@W|dMKrz=DKk0JS%d*Hd3>dII!m&_YB40nZp$L5mqEvZpmAQr zoPQJ^{dz_J&SYcpLyb*UOMMv`1Lk1?aOc1}rvP;P$QcISb_z-nE9eu|8Gn|EPtGsdl0GqN7MpUId64XQrs1@$4sw9` zz(%1|$3&Wesrf{md}elSV=h%dwG*K+Pr1d~g8plFmylec(YChak8Vk+zSouf$|(sH zRZ|9tj5GMCB{L}hz08N%Cxnc%v`o?^Ut5i+P&jvTfZ;!xfWHV~B5+gmz5EH2B7fiw zVQ%P5&T(Taj2qjDFiLl&RT@3lVqv77i3_OYz}6EEY)9z7Cj8kJ@E6KnOP~7NX#ZC< zeZAWI*KZ^BA-A*aBEnrgY~=^_MFQB5vMW_cX4MqAu`U&}bL*ZkyNt}$O7>R$@YttF zoZ_-Kk-Q`IF7oa?_CE5~9(xseAb&kRf)w@Gw~^QP*mu#cx6A$(dAlB(9(!T8$HZZW zJaj$@yC=?lFnRQhx53!U@Fkij51)PnZ32KM(GDIrt1BgM)A=oi9@{vf5qFG4Ay66I zb0X>RliLnIemcyD#b~rzC4oFr6A2L)e}l@gu(8d?#m3=;_N!zFFu7bl4S!(J{oEi# z!g4Pn`&)r-GO^Z|Q96X}`Y;=fm@xK(vOrujAb)!k8w`VgQE;n@2dH>6L7W@uTp;oe zP`LWtpPkO3&sh);XQOCoUy;NJuOo)%>!_u~($|T8RLWr?;f;YB8y1*qog|mh(Yr@a zq!G2dkJAgTEWv1LXk<(BR)5Pe16_Yb#9^<|k{04F+J?_41ID<;(2e+X<5!8Z%k$+_ zdn{x?Qxs}PUfblU_Wb~5@TUFen?{)X#QOh!3EI$&jKN@m(5+d-!tbn7K&NPVM}r+W(KvzLMbgzN7i`TXLQrGH3`Z>UOQfHl5~ zfY-ff=E3Rdi{}Z;PrJR7z&cjD^!eG@8FY*PlGJ`gOT80T>Yrz4hYvPu06uyE;L-)S zb?{KzB1T*lBl^G`F%~H#O8J%gI>^Z%gSPb_*W2$#?e84<)A7G{9O05wMCQ20@DXK$ zF2GWB4nyrrb4+i!&VP%TA9P+#FgAS z(8rIdv^k22?@VCp zYZMPofbW&`+<(mrc^C}b4^oZy9)PsmfXQ}+kU^J`nz3-PWdL?r-8xk2{<`OPn_P|k z_%M3gY%W);sq9!J#H-azHZBt8tJN41@L`V{z_fdp><}BDCZG7kh0JC>hg(?Bq3ig8 zMWaKuf!n>q8rHCPP|q6ndRth-UYA${;jso@3zIT;JAW>zfWXyawYt_Vilp1s>H-Vl zG3ys#L;!M5k8x=l*Lo(~>9XFz7R(VviT7N#b$s%BIzH-I(!z9nB08qGe(onuA?zdF zW}-h^bZnSxfsWVoiszqElnjs=C}{0XmEQ@3ch=0XN--h|odk2X;qhkyOoJiEckT2p zF0q)ssDIfql@tJ*^z0O0_>cxEPSLOFp*m80l3@rKp%7b1)*gXdsepqk)t*GkQjJ{}Vo-9#VqR_5&ew=)BPwniXLz8U9r=#GkFK^}ZpiJM4ey;R4Oi^_?|+m(nxmpLAdjKf-}*)tbhgQ#_g^S~PHH>; zhT3|t=M&NMy$t=oBY_mKIz*PYET<=)lrirgONrQoV1$pSLA1e!CV*)7_(_hRwgb86 zG37iw!DE-4+%1^Yh3352^as}$Z`_MW>QYGjmv&6d$%F})^Tc(;sdYZ@Jm`E5e=!Qq{odr}WG2NpOV;I2zInTvo7>eo zyv&brIWwL@;R96|sQ;p$%D)^%Cie1}=Lm~w9`=o~-tk5XUrgw)< zc!}d?nM4R{n>^kyehPEy=-5tv_kSP&xR!__dCbym>d#t#=geQ);{?EX5YT0L>u?4e zv3@?fAv%sz2Xgj2B%AY)=y?$Cua%qHWO<#fR=H0owS7)9JGK|s?rfV+af?8xoh9d9Zw1_IU?%2T_2#Z+)J>h(9ux!1PjQ@dZ)I9lwk!8Q9M9H!hE_iX*5wfE z&W4#Gb8Tb2i7UUFRJ|`z1z}S*2x{4aJUg!3#?9xN5OYE>`WRCVD1Y!z*^_UNk?ih- z-40&Y=pL|M*mEy&ym;aXSWz1{M#c(>)RO|qy+LD=d!H1L0@GLrmyYK$O|=Y0D;G{mpEbav750{ieX@fCB~^>#rKzZqoVvJa9bF3RswUPjk@UFl+(0I%g^ zdAD*$Sr|&+(|<1(C>1uc8en7pCSW&WYEnNRc1O-ItlQLT6Hr!8EAh=C9rr|Ocvp7V zlN+rr`qELDWo#*rQm$cKw@$PTT+}H#aqWL7bgGGcA`K*erF7Db zBj=qf?SEh-*!Nsein?X$j1AjT?BZ(J8QF)nc(Yw&Q^CkJ#Ic4DZ2 zZhj(nPFvnC)7L*iuL1eY%{A+t?i#NYngHj0@p@v1-D=|_yNJ5%3JoG+At@<~t2*4& zR4!0pek#K`Lzm8Q!VpX0n4uLlT-c6=DyGQ(@P9*bw~qSZ@WY7hdVX+vHUc)5Mf?6B z^!(wkz_i45zYlHsBX|y+1j;O_%r2DKwae_vGP}eMBkx1%fokUMdu$eY&pqj8_3{r< zGKJHc)-ma#P~pTXv@QWvBAJStJ$B+p%f5SQ+j{L-$M>qSA2A3qP9FSUlw?wTsTk_! zw|@v@{yS7&71FR*8`2QNhoeiV^aw?}61s$TkI*HQ`;dD9e+~kmF33GZPQ6g?Fy5y^ z3zVBjx|SxGc=eGkr3ZX;!hC$}OJv`z`$oyyh|DGWsa3P?tnf!NzBg)KBj9IAJDKQx z@<-ew-S@gvTJwMxR*I6f12IOrsXlzWe1GJ_x0h<)a0&Qz_6>4`v;#H)(yi95u<6@c zpR3mA)z(Fm)H-hctY$IneBCr%In#6{?^7z;j&9oe_+W73dkcJM@keV_E&}^myy}a1 z2!qG&ehkO!zzNSkt|*yyJSBQ)z(l&aLUmO{W?!oK`5U?@NFCp5!&XhlN}pa}w10B} zkry|t4KkFT@jNMk9XD`u)c8@gqvDkS3{TzW$$1v%Hs=^$G-We3AN9X@*O%CAt+aly z#BjD!f3i{s`gAvm60&>th%rZGo}SQ3=$ePcF6xPNHhz0qewLEeq8LkvGB}x_^-j-ROS~ z?n$DG2F!ct$<|Pa^@fS38dVf?aRl;6W-1n8{dg$c>>pwUc~k&eyEmi5;4?^|N8GPF zV2RqtAs-H&q)=qpVARWb0QY1Bg1BxPk-|SRAfB?WkqPMKL!~qF~XgI!~YFUL`L(~9Dv>ta{N=# zEQDhedycKz#jU>?083V}wY@|??(PR+qBb&CX>stY`_oS|Mcdz%vfrmt?>CEhy7xkS zQ3J88au39Et7Vne5LX_Ps`U?woVmLm@bKC740@FpX z43o0~7|bO-FeqLY-Bu1u2{TNuCMd5H!ty~QxI&@fm8+GrTz`adYhCpqF~^=m+_(4o z>1mu_EYW;gI4^1mL!ZvWExpa@)LFj*5Bb5*m(>=3IfZeAVMNAfjA?{?qH&zXypg)e7+&#GT3lL7c({NxwS+ z;xvHb1Y{*S)PJq0_fMvAGDj1m@assFOv?R&O)(}1xlQ!ZBL{tsyeY=<){ZDxXW48n zh1(r8q^g?~48tIt%o6=F9?Zi3{_y&*Wx0@Vs`O*fFR;cfj);$Ecm>kdfYB>7rZ#W! zr9)UW8FGK9w&1Dn{pH*D=){J>2LLH(@p9c@6o$pM^Y%R}RN#mGyB=H1WF5*^2J+s=NK@h>eHwXQA8(N2UQ-@Lw5X1vX|e4z9vxo0 zP0w4xrgD&4}X96lyeNa#=Joxstgwiu7okDRT#xxexlHk`>f5hb_&%=>z+!dQlX8_0wgw_ z1~hk0Ux0a$cs*}{aaIQ`7pVB`_v??R+|lOK8y-ODZWcm(0?+>`R0eXoS~a6JpqY&vxo#-vG%F= zH{?pR+=j~P&2oHSLLM5V*7blSkY>nvm6v$*GEK4Xu*XQ-h8v11$J^gA4Jm#FM z7?-hrvz#!bJ+Go%xp_qeVeZvA>@%08@HosMDb4b$c%FO~DN8nWeG<1sd?ts-B?ib~ znSYP3_J%&D@dy`qz?>B>Si`Tu@YfIf7*-FYE4t>$-TV@Vvk!X=P^<`cq@DNKU*n3u ztacF>7Ax_REtUd}%=^%B|MOHs-$BtzQ$}qPEm0fBuU8Q9U}~Pm#Wm|=n0^ppvjpF~ zPRzYLMXhC^fq%pQT|0v{FZ6CCl>-bd3V+z-5<1xpAQjrChq&k24F*@9CG=~ST+G6n zW?*`p21?Zc7Y&r60WKP#M7Q;enQk8kMvvcakOS?njK$Bf5-Ms>ZKI!Y9UCJ3k6@Sob;nK)2-T@QrJydL-A#H|&H8b6uw4b2{`h*bWmYT(#_h3nd>}*pZOFYrB z6-arc&D+zf(pCXWJUNTSYby2`@_!^shAL&Ri<<<}FebrZ9JN|;xKzLKFn)}Yyw%Sg z`8^K?K9yxNjHwjPFb;+;1zCH0l!b31sv0UC^cXqN1&ncVI)*_lf_db9D81I)90`z~ zJjb|N0x6GCXi;hmccCE*!#1lGk-YwSbvNvUNfnV zj%9Bgy^p94r312D3!#Ji-#iHA;dzc)IX;0@)~zmW(?Q9_2Nn<@9&Ud73Xi5W^MAL(7MSVS09%fsv9w^1H3hoLy|vn#&}}=mQ%3_lJjUd{d3egtqyOYoG>QI`&_}D4oaypMv>Gun zcN0N(zzB{4O$o+ZldwmR(eMYUt2~AB1Q*pC0zzmwB0L1W4u4yN5_S3|PfTVA{y|sT z`C;1sBR^VQahpuiz<*3>nK;kXdB98_7R?e-DPVi5xt7727|YAKuS$6$zD)}k==7ID!f>GCmHzGqcp+c^>;-fWU;jP` ztneQ?_0VeI$bW6%xYEFjzzXd_NN}OlK-Szk_IpQ1O$QrFVLb~<4dt6EA9a4g> zJxiFGWve#*wrf*@s7=7?m0W*25sM#m9cwg@jIW3X5V0~q9dv_Vd0>-Sq$V2*+F7FK zO~xU5#()O0o@)rl27L=FD-A}qYXs6lK(+5pj%1A)XMZBHy6K&mek7eFk&R3RV~6hj z(~Ft|4kU7La)^I>CxdR-3*igsq&qkW55rRCmXv!G9%BmSz6ejkgi>FI-3~owKCucMSzGMXr2vw%!6Ut(d!F5o@h~5PqjB53tMh`EUdOE>ye{%P=CB) zwgdIY>VMUHR?@dqsF~()91%54#nGY@t6JPqOWP{Yp_EzPRZxE-Dfx%tK^mo{k1mE2T~-GxkGrx!JL@dhDu3o?LwORY!?JsPEow;<<2fsnSKp!^2Org3m7l3ThkIpU)ib~%@U-oAO%%k1}2OgUmrEzx){+?m{ zKlpbSw$Icy+p;pu^}OYFdJ;p3$qPsfe_6pa(Nxe!?|yN40iXsRM4+mR36`$ATSILC za(~p=Z9&D>ZWZ|HcJOs@S&IA^S0g{7e?10{rkc#)zQ)Fi;)TD2C4_BSp^$0=o9o1woIcHZ-|sy``#Cv83&0 zxd}we`%1L#u{-K86t3m|P%$)Nl8D$-Vj-o!7*uep1Cf%Dz&bqx9%I7PhNDW>q zP!t#{A<>I|H4=N1^EW0K@dnK}FqcNcR8g&zS_x7s6<}+n)V}3YlQB3Qe=eK|7~i&U zayq_Y2_8?%SXlNAlx+nmc9na%M9-Q~LpJXD3M&{ZWQYW@LBdNq6wXOLc^nmCaoXz~ zo(z1IaCUaQ>b~r$As!zz3!L{Lq)1C3fBfUaqi(NRVAR)ES9jWMQq(0=z|SjPx4QT~ zuwO(Jz^Ubn_)HXxsT0U(0Zo(6I3+BnXvGVWH_6aePzk4{BWUHPrEn9D?0u;Z!xH*> z+KRfMx)aLbyH~|31{TPZA2}L-NRM{>O*@>Ue!+o=PKC=!#0k0+z|kqF!`p0>ywL|O znl{jlVsT69$R(t8+*CQQG>(nhfgv-NNgnwR%+8}*()uptrsS;%4EZU#)aTXxto?Qo zrBIJt1Y~6NCx?Y(?;`8P@BTY7lW&|T$%n?I!#%?8Y)MfD2x*mDLLt{5f~O^g+nT*| z150kWy^)cA$-0cgc6RlmiHDExHsUao*Eu%`2v*JsU}(qwlNLHB0x*1&KRO_PaHcI? zxB)HsHnM<;?NIrRD3NtlW(*jjv`M|Ii7dIbjyp9fe&oIN=In&&(OdmJsh)*3(X$&T ztgikT;ibaW;9hm5C(xU+HNJP_!SZrYUH6nKcvV=YM=93VtLS!Xe89|(5BSQ74|vO7J!ais$aVkfQS1Inta~W^`&Z-5wsrIB z_pHYA?X5m~Ce=o>4T@kk{y9anQ?pr@YNlK4Mpc%KX8|zHx zoRA`27{wd*c^i#B#UdVad1+jrLcSY>tuC*`IY8c~5V7JgAaBb+hCY>gn}71RQ+bs< zZ~qW4R4(D;op^Rl-YtiG3c?~{F6C`~FGb!t&)f3mN+B+v=VYTQ006Mm#|{7h delta 15359 zcmV0@VrsZc;nR~9>X7*!y3Qv zyhyUN(Q9|GM!|X5n3d(C2>16dl5(~@Z;!L9{mD3+@bBO5+i*^^yfNWroXiWTy8ox0 z=`tOc*ckUqmasIq(1eji^v_hs~t8tX_o5r_!p5?yxb)2SI*_bBjq;Zu^ zmUG_N^;%iW+x3EeIm@$~M%>0xM&1u^zxny~x4*r4`~J7@-v0dN8;`|nY;P7J?9m-3ALcXa%`Xo*^kYRvYclYkn? zqQa_M=(;J@&8TixQx~YE6Gc%G6j66C?(=!Uks1p~)0CAB-o$T0e=^wXhTY(~-`xk2 z%39G6aep~$FR~lI2Q$Qqy(pH`q>E8g#NkAQaHarhvVZ=fxgk zY(^-Jaa{9ghA16Jy#oL+A6TvL^$vqQ`}d0%LD&H-r-K53>97TSAyn)-Do;DB6%M;> zHoN=q3udH4Xe`B`;`72U1C|spaQIlQN+=A&9)I}DNF`z&AgWmq0`jTWbe=&I^f}Ki zpvXRbzkbsTSoz$a+6ddrg5b2GNUInv8&g zj(?gQzgpYTZ~pww|DaVdc9_M z>k;d1E~SQf0rB_=EySYo_5=*?+I~K(NFyqVA0u1%v-?0)(U)**F5_PAVgy+hD~?uMDu$ zNK#mE=@_+>V!*=!u*cHqI!h)E5=H}#%1Ow93m2^tvBPhC)tZ0+I49Q20XWbw-GYXA zd#ZZvw_3NsWawo?mPWB$3~xt+B}n-6;(hklxS08v5`_5gD7uD!*K1Ux8iY!<;sib~ z3~oSJ89WU~q=|w2jmMXK(rj8I6-h9%X0rzvirY7!&EjAJ1^1PO{+2+qKU(_hAF(t^Y|91wv3jv-+=~vFGoq@1@K|7n4e%5z;l?lJQAON9t2oQtdu!S4(=?G zdrby8E#;h+@|<1K-mAKneX4ykgYBzNB~Qn|X=Q_Dl#8{134g^+QjTYS3F`t&ummVI zIpu~@6G2}oU^lTj0CLzzaDbGs0y_7yUBpvjzJ5y6Lv&gC-Z+K{cs2<=mLd@FuVxZ6 ztB(yPkt!z9FU7c07? zIDL={go|Z>)j%mI2UED6+f0Gml!V<&Y3Ve`FI^fFV$>fI?gz1}fnjSfwxp-d6%D(9i{U3JX&53eYEDsrt4JMmEYF z)&Qyv5`SB`Y?nl8YgCo)x<_I6i1j*QufuxXu-9crps$YD;eSI%?EQWnk@)$Bl1QnK z(-NgXkg6U}YgD}wmQooNw(3yT`jl8nVZEoPiCXW^?3H#RQAU)1)hlYyvB#Km`C?nAKJd=GF!-ixm2VI5L|~Rx1tZyxE+R zERyQ)8~$&9PWvHZZnT*U!a0<`AfS{cX&E{4Mro8Tps zg<+`${>LeWSD+N$kc@-ne-r%!t(d6A{eL&rF(a5@&DZN@mLfKPlp@B)kzSzlQC~=T zkZ-`iVLo7Z65|!MgP8WbRBWm2h6;7Rs(&=l zIBYhJCPK)#52JuRQ(CBkvbe+qA#Ezt4A3^Dp>O6-)PAso+8KB@v8RAK#!eoZgGAx~ z*<|Yk2xtM))Z!`dgBXd1e#hE8HJe)NMHU0O?Ab@uux8Yn%Wk%`AQGTjZLLQjp@MzqXL6|Qi(75i_A|;N{n!C2nQf*L0F5A>H$pqO&^|FARlBW~caau~| zvVFc)xy+a}qZ$KbhIsu&CvHM03M( z6o_M5d7wL4F6PM?m{kMl+G~|94`d5|Kyf_Lm6bsMCNu^Tzp*gy(+SGo-o1Sj)eyj+ zvuw^|NNF~?0(lK}rg?T%se{_Ftc3;-N|9CIBU@l8ten9f!>y|7-N`~BfhT`3X~nj% zvBpN?$)wUb9g4S;;vL!MVSf-3OHRpR@!1i7Az)4kJzVOi{^lq8P$? z&abj-?o9Ec@MSF2_Y7E%uxOxXK`h1%dd;p2An-H}LvWkYP~wiW8-I4Yf~5c>IesD| zVJRzEMgyC{xWtl!r9SX8JhzJqX>SigE4x4q6*vRaxv;ah*-;j-o!M5RnLmPPsJg^* z5}1m}d@E!HT7+G?uu2QgRVfd$VrTzXEnCH!iRUY&y?iAPNK;S`%S^T!z~}4ihUZ_$ z1xJ-x_kkxxG#Hp2=zjr!Hsn#4WF(k`y?UxE51|;O(xAf3Za)#<$pi?IzQh2cLhUL< zs)9Z8)Rza;mNJV6#Pev!DXVIVF-GQS%hUvc7VUK9H!q6#f(!9LDT_ES-%hOrTSKst zQ4NW9U`AfUhou0Zl3NW-y83BgY zlI}|($c|8sasLFZ3Brallj04}fwqgcg53#KR){v3uHr}fT_e>HG{p$UuxKR2ihsSO zx$-^Ho)-X`cDhp3j7iiK?Lrlcsta56p(^8Pkm&(C##O0JL8cvNrD8+t#|tz)o18Z3 z4@xz|vDJ2JFn`rmsAOmaA83!I*vY}x6uLwU9?hI13ybZtP#oIYt4y!IW>bHfwS;H7 zdhy|@u3UXgbQ@Yrkk!fAH9{i^*#<|c9g4;SOW5?qE;?4rrx zmR&9vMqL%h4feJ;3pSTm$;1-V?n*muon_!k&Sfg9$A9O*%g9dHAY4h|DSNK(r?Vz+ zx5N>!z*z>HJmYR1I!vji$Z+H!+#*0)6!1%1uhC8ab9gx3K3~UI9S}No3QKYXhq4Lzez4hFQ{I z-GJcKQGfJ?d^rZvgTx%%@&OMw(7;g;iW+`Ulg+%Prx+gLWju@XSEb(x0!x^xjTkoy zO!sBjeOWb}vy<=yl$sY$-W|cfjgRAw9+4#TrSE|-`TUv0wk{_04tHf}Wnw8+53KQC z>L9RLNq~rjGtxA=`-&Ec*!!S2R6l8_Fl5kf#(yBdGmxqI1xM4n*i)*KwTzPxNDZnj zFXpyE6eY!syfQ@cH@M|Z$RX<~t?6nT&5Bcz&DQGLQb*6G-aX)KZ@>ZuTY|-sOm838 zfGA7#*66v*wh3*{rrND{GZ$r04v6UMjj>+XQOwY@Hx({P8K@Nur}Za(krX8!Z3@WpgC19yKTcbf4H5PJ2+u9dyk%rv#ru;$PqCYj`lwy3lp^^kBZ~6Hw2}3PsDFpq z7pjL-b>d({^hEto)~XY0_bPnQa|7zSDxYqwmVinn(2F`fsABg-xqciT!)kc>MaBvi z6AG8MJ!0U;WRA$Rxx&iM&|DEm8PmDUHsX|)5yzMp>=KDp0{7EEv+rvQrcS|P0Yt!M zNp}Iqfwk)|S1T`Hj6JitmmQe(N`Fbv36HN}Z@pm-Fg>Zgyh_t`vW+@4gFjil88%>Y z?Uui6n{DjHU$V=zu<;}#s@g`H>h#MD$7Bi=S=l<_QJYTT8I1F{W9hwezlon3@fI*) zb*h;IOt?Ai%mzN(n0Mv^AJ!1TAH9X$#&_%~6TAm4;qD&w9`+-vyX>dh=6_Zi=IlPe z48DK`JQXZa`5w6Hc4p2B;t%Z@tGgkoHFP^qyy%g++Ja;@;+{rivw_LIr$ZBUI;8Up zX#}UU4Rvm7w7I)=-PwLQq+@;M&I+GmG5H2%>kY<|NydVDvSBP!p=HF9zs!VQGRL1U z0ydWHW)h9t=WG!Trz~c3Jb(T}pGXgMJv6X;t;P1UI|Onav_ED^>U*pKjC-4+w`B6- zi{(PKL>2jsN!@nNHBskW2x*xKb=sPvAb8q2(+-!~F@1_-0>wrnVXUJZ(st?VikGu& z;uiW+UaQz7o-fh7mTDMlwtV8rmAp$-Xy0E8o9Hl&aK-rJy=b<89)D!FQT=hC-qSUk z_JJa=*}Wu&mW3+{%YmA6+r>Rc$EU?G9~sRRgudR50VpC@+c@zyrn(|J@jWrVw%1CS zhxv35)@xnU1`D7?jKQeu=G#415)BP-freJX5IyB-O$)?qoL+%ATC|gN!au!*Wo++k z1ARaPa7r(Jc1`ToVSke|hiJsw+^p!ufO2Kbmqx^!8Bgi73(pd8DaH+>aM|QX=f(F#-7xo^q2sqJ0 zGAu?~Z^jcv-(|>(7fAMe2b5r0>tQA6#j(>-zItv2NAf5-P=EZE;j(`PaL^dc`Q~!l z`KDhl6rH(k{KThoPSwPs5_72b>QWP0t#<5LwNcJn*3st`M|+~+&07yY-EnO?2gpt& z{wqjTdOzagCpigKbO;V#VRmEtuy+6=yj=jPl)l&Yf{>;j3J4M)14>C6i0rO!TwMt} z!gEo{#nk2GPK!HhIns;e>5tp+DEbl2$c3CuT z68K5yt$@B_5syI@5(*3Dzm*7TjRa%QEq57&MDzB5C4zWJdwDgV-{U5@u}Df-B&E>~ z0zNE9_810u;yW&?rm_=q!OvB7)OlWi`MA_O0TUmm=z_fIrD8D!%U^qn|&8RCe=4S)CeCj#|YKO zKHAGvury&$#+6@IdzD%?t}JnTU{h7JIa+|e$$uou9Fb-9EH~X+25~1rOJ8FAHi_^J z`sgc)&}+Bvo(s{roMJRnEmdlC(EHn%)__w_v26N#_UQ%&h5ZUBex<{X(nqJpQK70T z*elTCcrp!?QLO)v2LtlCEvLMd)xB%!*0l9G*;Ef_xzm0j^wt#xkO@UHR zyMKc+klum1H+96hZR2P03#ni#OM>HfN__Y@>>e8vK<`V=KwSj|y|D1u9M+=Jhc>-P zfeTk_se=XIBQ+jDl)RWqXjY7yOEhKfa>50 zPO8W9B%&*>3O(BPC-Q)LvXYg%VMUsS#tJd8Y<1w_lw9R_id8T9=D6QA69#}XZEH-E6|(Lr|cVKQ>eO) zF`QI4P$Ei<*6e@ffY0{2iU&~vyXL(pfIfng&-q0>2deV%Y^KaE zdFll~dAk%GXSd)vHLhU=4D){p^ zN!SUJdMQ>L6=6$3T2Y3;iz~u-oA^86i4oQ_`lryKJgf6R8_fe7>&vU~$Xj7Ii?`DM z7Sf;ZLUm?G1_=PVkLezWC+^9-osLMG#(3#iC3e?keydRS3$o^MOnoTR@PCDHpe>DI ztgnVzGLOuYsPk!<|E&-feU=yiwMh*Ukl|q{BG5=sOHoA#OWy`;2w1kH%r9p6-M+U+ z`!VB#L=Eh98SU#VDwFYqBBW)7v0R|bOVX(td83rUyeK1$Q=Rc9ej^e)I;pb;WbFSs z?C!lB4Lk79^RIN|C5@Nouzz9;{(TCGtSf@i?f=>texe%j-gMMbmGUi>j&-HZ-V0NF zOCKk)v_IJ4fq=>%gdf`CGZ?@R(4U5_z0rV@TESo|0N>5CxFp(DWUQhP+4T6?__5UE z_bM@H>$NW!P;cQ1Pw|@q@+&|f;pg-r)oXZU)WQz4- zdil}fQklgmN;xk#c(*=;?E^drnaF08_-%9<{I z%eBe{lPfJKz5*z4g?~qQEtCU+&^2*_3x_!LNP6`=ShC{tz#D1top58bPT&{wircgV z;tBdOj}l~-ygKaf1wFchZM;=f^>@ma@GABvo#8d<{Ui#hZ1m66c|W^(1<$WRlhE0J zsZXqKlcYjJ&d7_QAuTIHPk%;rbqb}h4vg&`S%_#e z-}g%`nBGf+WEP>gp!UD_3+OeF=*rZZjTc_{gO4{yEOKbv2+49O{+x$jS4()LU3uX* z8yWhjpzuQ9x(0w-Jo_ioR3OOc-_(fH3f}q4Vf#vLs2|jV`mwdXqFx+y4D`EWgqW6H zutrE$;C6iu;=Mr&LD2G*c%#C`<7BY>6rNqJv=UL)F zjBRO+?HjYK(vAKc=%7C+0cqBnn&Z!h))WTAd^_;}PD@F!mH-IUA|)F4BS`7zNArMB z3d%d!QxK?QA0vi72rRCAg7@!0U*T^+LFIkWWfpY58EfzD=HgKxrBT_pCoGo}MuB(# z<*VcCVShRzu%)j#9!Kbo{%+41wDpSUHs2twDn`&?4#huW*;lQ+^-+pGcBR0D0(lE> z0csVKB-3A^!`uSkuX?0aT+X<|O)Xr^xPfNI5ggc(w!F62nvsz5Leg;u{~&hpXCE64 zMMo7zW0x>6{X=cjti!{B^^H-L=`3XwC8pNDB$JFV{5I%|y@y!Alt(i+ zGNF2;TsQ6g#oTU?+DRQLD6wb@sT|NQ7S-gbg36UnAk6H78`v2N%5kY^5Sy{1q5sj}z%1n-Q7GZ!)9$%@Q&XR1fS`3M?+p-AiWzex8Xq*=@ zCx3-Uzh2S5Guc@DP-9coQeQ^KfO%K|+&Qq$DF7Wmaz@6^jEt=rnX|DwBTqy9+(P~T z)Uv_4MGrWc@|>q*sWLx2fWjF-AqQ}yR2r$^piBqke3|mV*(Gw5y1}kRtR%$#QcT4^ z8Hd4gP>xy3qYMoLIq1o}oq|%t3i?EKhJR(^lk-cqq)&{R#ikr)9wa-SX*g}GgB)N! zuu&-0F_C6qYCcgXpP60Tm`fEW8ibKKYp`E1qSv5s&tV_l0+`1>sE+ccblD$%-- z51miK?um0BOddVsZ7}vSe2M1C!>1oXn*g9mw1daZ>PpGmbbgDW$2LxA#2q712vi35 zoJczS{15a&iZ7l^zA z6s~^vXQy-Ma~8zI*(h4tS0pjQ>xkj`I%+Ag^mU>im2y}}cw?Z(h6SctC&^`W^zP9U zX+-Vr>5l9@KicF<`D-FnFxQr{@$>7Ii5?4_Up;re?>KEHTnDSuMq8>*5RV2!UL z;B_yWd2o9A;(5aI({Ar1u#VL(eSUU!2HoPnB()#WQtyP7`sdl%;e*W@fR7#kxO4$- z9X!;wh!I!Ch(0h!j718GQhuer4s!Cxpl$uf_4d0_`#VSebo{R!N4O*vkvXn0d_>ux z3$PTO!%+Lu9MfB_^M4}d2i;fJC8t|Us!P$PYEezkIv zmgjU0fPKO!a&;b2_c0rbP>W3x8o{g|uoulbstDH5BZY{x`>aSxdF1;r&)dTAP7mA+uS};TG0&=sJF2 z(ddwE;CAn@hBfRR)U$@Y-WJxd*Cp0Kc&vff!lcaIj(q#4pZkeZ2>VF4 zndr|J9UCTFpyM^Y;`wJ3B?Dvz3R-(p<#z(%oi#J8QjCZ~C&8R;c>Gxa(_qN)T|2#t zODtwDYJav&B?Z7HJv+r0KBPg4Q}k!3s@uy^399}yO3 z%e_J@JE&(2GFS2qNUB~9#)}@%rK95LK&X2`%fqEJSjqAS$bx9io zDq0hJN513lqpPi#8*=+*!+YmS!xek~JAdVm=BOwQ$YbdBx4w}Doo({x{TIrgliH5I zp|&3E`9$=5FGK(DNFW8Q4w2<8%jtQX)1X7~$h-5N)ub2_V`%ev;#-?Lh8% zOgRrv@Yp3McMB$Up*b%${lWFc8}}lTx>YJ=rIC|MzY?LDaSF&H;yrMR@5g-Wwtt^= z%GNiks&ORsr5zJO>8>D{3d zUgEe}CK1BgCXY9apTe9vI<}MFJ%0!Qt|g*K9qjbft)=L$>uyHdLD%PYvrakSzc$WRqhi?ZJ(3Oj_t*@JKN?{oZ>#{*;N;oogCv{G0Mo~w*zCMrDnO&V|5uZM`UTgeyT0)Xsy;v1bK%+<9}P1*|PL4 z4!E~BV`x2&F_7^(Km$HZ>6FvJjTd$zV+mvNR9WbffiP(!F7!J>*jR?RUW=m#bxC$d zSDUuu;zw9E37(s>CB79Tp3my^D+CDChB5d-3w+Ex6PrSc(UU_fiErbsikC^wD)l#u z!}Z-a1auIyAono>SuiNoeSd<4b%U_gO0*eWw^Fid+(#=2j$khox54FAkd#y8EEiBS z_v9XFXUVzOTLJePn2EVoy}4@{byFv{2gShhQyeGVTbWjs?aDn6$FudGq18`;bveYk zvtee)T-#W0;>xckRqsnwLD-ZHf?Bp9&yFj%ar3z*#GDX}KE{*-3V-}l_T<}RB)dCd zw}aO;x(BQm_S{PxFP?Y;R@BCgk+DJ|^`t;@Z_t?J-X{g5z%24;kGm)K ziUg_}eB}o#d8;){T^mfI*p0p-8+~f{6&+6HzKdf^DY{kUHV&_W~BH!fxPAlXM)*x^`o)E0XhV3$eHQOM9P z)S8NXAsSoX6ZM2%j&O|BtCc-hPQa7L1|@L8t41YgwMq(1P#1BaKF&bRWxZo&F81eBH2N_=xj$30OR-jyBp zBpidC_JW!8%9JHPm&X!nE0JwJunzwOJca zo1rYe4@|JBG8!M_?CJ`rQE1?%C>h9dERH^dQ|fB7b$`fa*mH`pRF!2=fk#i+$<&R!g)tadsrv>^hn&5&~ib@IdYIb}=&IgkFIIooZsANCU}VDV=oV z$a&{VJAW7n_B|JrqHdWwW5c!-ySN&5M)sjC-fWkeExs+DM=4gPnN@Af$pM{)ofs;h zo1e&?)0Vf(^z~2BYd}78bIp3EyT&VpCct@Lyq?%$x7zr~E}|~GLW77{NJ`4$stz|b zl?xP@pUQB~(4{k+FvLo*$f^jew11(Y`+j zJ%9KsFfDQ2??YSu2%ZBcfig=fvkPT*?J~Qv%r3FR$or6bpqhF69-Bqpb5FWiz5GLz zOyRVqbxgV_R5-B;txG_aNT%XukDd6@vhQBnwq85d@x5y7M+`!YlL!A7C7BdoDu%lG zEq}t8{|=Q`g*5EdhBUZ>|FdrZL64`g_zEQF^B6Ep;YSpYeEBuj+?~R(*2>4mjP9}Pv z{1Nv^_r30v);!>am7-+rK#Y-Yst?~TAAkAq?WNi`TmpWbeS;h!?SM^ybgOkMZ2Gp= z=c@I2wRO=XwT@dqt62;?UpGxx&NN-g`;>~dqnoxqJ{a8i-U1(5{LxyKi@<&sulgb$ z!r-yHAH(rFaKiJCD@vvvPl+BHFp+MqP+b*~*_SGQ{)R3JQpdO2uvOEs(x(>~?SEWA zsCXp+!&A3;a-PMx%{j&wP1%giNBu9}^(8i2E3F?a zF`TW`pRCk@KHW{CgzTO@;>_J6s?{d8h%$`HMzfOi?rAo5n-vvIvnrIG+pLP!SJ$kG zz*(A@mNF3Mc_k3%`IbPOBnkw4=YLK#PHsixteiQDzGQeY!Ap{sCl4V1OPgqctu1?K z=c$E2vaKy;D^EZqb9`%elbUyU<@{s)xV`yf_tn+sfH#8uxpDm5*mur&NuG!X%xmDu z)GcqrKFA7TS|RQOf9HzUFE5g?GF_e)MJQGfe1;=`eX z6pAbhgnBnlAhtI0Xq{0b9@wHzhxHOl;N98|Ra86_+Vpo=JnqM>JKR6O2I4koVej!a z5Ez#@#@`HbX&yj|tOt;+_@woR0As~Oxf5>pzafWZEL+V1=oKBuI}?o}I7XpyZQ@dcti5Rss3Vz+ds6JW~(LGp|q|(mxcF%qMxz z%Hs4(9n%l}@DPe@@)r6#V0ysWs0#+zAymGa2mWwd$tgHSL=Fo45yVhPmJ&p5=B^nP4 z=RGN5=F)k%p|v@kI_cIxr!2?2{KCx<285@7Ahq4tZv!-1gny|lMPfrlZ>+e138A4o zXI)g!D}m7nY0d>O%TqgU10u>L=s&%V{d@WAWj1)PC!s4T9ym>qDVgm{Q_&;;)wWoh8F;B4H$hQV`}pj-}!?@lOgwq zY73tF-e10bk1kwz^&XId_8!*>L}6H5%H3bd+qe{XD-3k_DEpogPI}~=R_tFeZ{M>5 z<$c({>#?;=)`4tg80&qEvm~yOr;+FN@%|+4w4@=vMSpb^O^Z#J@n`VbZF<}hwp4@s ztYiEd_V#jEieX|>a^dNahn}gjk*Vpwr6Sou?`!dzqQh7*hNrq_f;O%LjAkP(T==`E zTtm!WicA6NOG80?lrwwNt20TK81CR0?fu79g?dG@!Y2`U1?0 zB$xaIynhjhYy|WBx7d~Zq#UttU^}9mY@4b;%g8nzdN%$pQA(avf;T^4uTb&&E%k3r zwdJ$i^5svHuv%?4xcMw745j!kNkPjX*OMROa)wT#^Z+92%_0tN#nz=>pO7oja+)ct z_p0%A1!*!*E$8?okVb%ncK<0*6v$*GEK4Xu*MH~r${Knl8$JDM2|VVUs|b&=ezBV{ zr2USfTsb*K1!3;hIqWl+rSP}QASuoAt9YJ#7AZ?Mbv^R7#5*Q;za@r;V406^)`mW& z@dy`qz?>B>Si`Tu@YfIf7*r0VD>|kK3=NhzoPF41fMP|kBkjD;{u)=jMYV&pu-Axp zTz|0?Xk^}pj{Bdd8u|{3R+=(ulW2+BFkY>KhzC>iFf6WFAA{6`2%9DN;&Wndr73DH z0}cEe{_oluta+byBdHu0IAS6JwrXuZZNd)ETLbs3;-Eksj@&AHZbk zuYECW+AiWLnf+_1!5fmzp(0B@!2fJ zX}(u0`V;t|c;Ox1!1gSzY2{*`oyYTm_!HKZDENFjz<+9UZ<2J9-3-K^@NSKoWPh(0 z_CP5<2zv)iu=h~0d4{wZ3f9bYbD=bnfd=}70Ns|F#huqsNrmieQz1({&#)Cpd7#VN z)2q@}0ZTkLip5(Z_6h1FN`@+BuZx=m(l92$U>vntakx~!@hEzXajezP9r-;E20oQ# zGmIz{&M*puE(KY8dz6JQ0;(D+9e?x~InV`+adA3^K`nxLuj^0O9 zhtdIAi-pj^{cj$G^5{56tsEZ!D(hC4w&|ec;sXl^5Dz!MeT4_U-ftf8bbnl~zNZx{ zhQEWx-G|g`B{J;;1vUPVu08A!gSVSN?BwlTqe7JAZEJ;)@9P(AN@SD$6g8>ytN=9u ztw6xufhk`2-rn9`Luzad_(nK#1O2c27gx+XYdCsriGyiC8uCIJ-3rDn&$}7zS>0Im zNiZlPbr%fvQQwV!l8B?&Eq|}SCHP(e>{{@if{dv6oh)Uqu0rj^^1xW22TQw17KBUO z2=JQsGWUmf!x4z_0;Bn?Ka58EctjsU$`VpO6nOfcOjpu2w<3>@6|9`#!};pNIb>o^ z0Og>@G}@;mx>B`L;f#X*;Hwq3B!K&Hz7MmatuYh{3e-(I2_KmOf`5q7fPjaA$~|T8 zTpk1leh+A)Y!{R`#!+`!WtxeQj zGDer=&!4{)w!lo^jNftyi=_p7tSQh{&YjiXgl^lhT~ac&?>g=Dc|jFXKcdx$iMg8yx&y{9 z6lh8?+L(krdW?oYNL}SAl;@YI-VhK%!x6y|=xx**l&BLYd15j{@DIAu&JWZ6ANkSh zin~;j2L5A8%fxx6&I4xhuxOTuN&(wb&9w{;pUX0Vy!%v}DSyDG4OhJm)5uAMRqZSI z(B>|AgS?b#q{diYO?_3$^Wbe-xIm}B6cUC56|eMnH^A%Y`e!eoTj=`tL0|>H(5Z)3 z14nKH$CU zm-SpjI5y~8SXpT>s$C#4x1`*o@EB7l_eFRTCV!OrGVFHfp>KJOuy^<*H(c`= zHm{WdM<@bB|*xmFP;8_JVF9hTkWYf(#@7|mE&MSbszEWJBjxufLv zPEv;Z1NyKDW(w7nxd3E~esXnbP*nOJdU8K2V1FLr|WSZOKoU!&w5Ezr(#Ll$#4^hmiLut z-D7vuVaT^X+ijz4O}9$fUFGpg6iP==end_9X{2hC0(7CCn#8aXiF(KPQ@PoXI| zH4b@`E;uF_(e}(ZFqcNcR8g&zS_x7s6<}+n)V||VlWaI0HLhC-7~i&Uayq_Y2_8?% zNKp3ui){rda+7_2{|P!CTK;=koTz2 zR!|8hrQ=8Cr=@U`jqH7?55p4rdfJM*pt=*v;k#GGDqgG4lUg|%8aRh`^hrCIp?<%B zh)xBINyG`d6TZ+XsDrzcjyW2CVG%QyNgnwR%+8}*()uptrsS;%i})$J)aTXxto?Qo zrBIJt1Y}(BCkI7j?;`8H>;5}3lW&|T$!E5tyE(${Y)MfD2x*mDLLt|JrzM5kn!R(w zDsH&Fk&%AMx{SkicJ-o(hmY?zq7Ygl8o99)P*iuy)Mis{K5^68>%4rECpsbs_)X3U zU}#6alTkV+0w8pgdO9F~Xre7$xZxc6HnM<;?NIrR7>RXNW(*jjv`M|IiL1D^jyp9f zdg8tH=In&&(OdmJsh)*3(X$&RtFHbS;ibaW&{lP&C(xU+HNJPFq4IK2UH6nKcvV=< zyGJ&oz`;9Gun$}VOQ}R&td}?n(t*81O8KVNdxlYTLYEfgq*g+ITjdQu>#(pXx=ZsUh=)}FJYWJQkRK%F4sQ$t+`tfk~ zokNUw(i3@GL>mGjF|Den1fZ#!C}9CJZU@qsk3j*^HqGqWO0A8C5Hh8Bq{Kjc21PI% z|D2-PsoAVcHPbD2qpHjwO9qu7c)jEM+=~+0^f#G; zLN|*ibZ>pN%C)Px3JeD8sE`qIauMY%WqF$}t0$kid~qfh!Pi8LHTWg# zsB)cDC?rFFi@U~^c;G76Nrgf}Eau{3a^4olCb_tvjCH1SPDqh1jN%3NyiKplFXAzm zSEdCjEjf~B dpMQECDJpGWC29L3d0YJH{{noiD?F*l003GM2gd*a diff --git a/dist/protobuf.min.js.map b/dist/protobuf.min.js.map index 25faa2c91..ed7ae0b5e 100644 --- a/dist/protobuf.min.js.map +++ b/dist/protobuf.min.js.map @@ -1 +1 @@ -{"version":3,"sources":["node_modules/browser-pack/_prelude.js","lib/ieee754.js","src/common.js","src/decoder.js","src/encoder.js","src/enum.js","src/field.js","src/inherits.js","src/mapfield.js","src/method.js","src/namespace.js","src/object.js","src/oneof.js","src/parse.js","src/prototype.js","src/reader.js","src/root.js","src/service.js","src/tokenize.js","src/type.js","src/types.js","src/util.js","src/util/codegen.js","src/util/longbits.js","src/verifier.js","src/writer.js","src/index.js"],"names":["e","t","n","r","s","o","u","a","require","i","f","Error","code","l","exports","call","length","1","module","read","buffer","offset","isBE","mLen","nBytes","m","eLen","eMax","eBias","nBits","d","NaN","Infinity","Math","pow","write","value","c","rt","abs","isNaN","floor","log","LN2","common","name","json","test","nested","google","protobuf","Any","fields","type_url","type","id","timeType","Duration","seconds","nanos","Timestamp","Empty","Struct","keyType","Value","oneofs","kind","oneof","nullValue","numberValue","stringValue","boolValue","structValue","listValue","NullValue","values","NULL_VALUE","ListValue","rule","Decoder","this","Enum","Reader","types","util","DecoderPrototype","prototype","Object","defineProperties","fieldsById","get","getFieldsById","ctor","getCtor","decode","reader","limit","undefined","len","pos","message","tag","field","resolve","resolvedType","map","resolvedKeyType","uint32","ks","vs","basic","longToHash","repeated","packed","wireType","plimit","skipType","generate","getFieldsArray","gen","codegen","prop","safeProp","eof","getFullName","fld","toHash","Encoder","Writer","EncoderPrototype","fieldsArray","encode","writer","fi","keys","fork","mapKey","ldelim","required","long","longNeq","defaultValue","reset","keyWireType","options","ReflectionObject","_valuesById","clearCache","enm","EnumPrototype","extend","_TypeError","valuesById","getValuesById","forEach","testJSON","Boolean","fromJSON","toJSON","add","isString","isInteger","remove","Field","isObject","toString","toLowerCase","optional","partOf","Long","extensionField","declaringField","_packed","FieldPrototype","Type","MapField","isPacked","getOption","setOption","ifNotSet","role","resolved","typeDefault","defaults","parent","lookup","optionDefault","fromValue","jsonConvert","String","Number","toNumber","charAt","inherits","clazz","classProperties","$type","noStatics","merge","finish","encodeDelimited","decodeDelimited","verify","Prototype","constructor","noRegister","setCtor","prototypeProperties","getOneofsArray","set","MapFieldPrototype","Method","requestType","responseType","requestStream","responseStream","resolvedRequestType","resolvedResponseType","MethodPrototype","Namespace","_nestedArray","namespace","arrayToJSON","array","obj","NamespacePrototype","Service","nestedTypes","nestedError","join","nestedArray","getNestedArray","toArray","methods","addJSON","nestedJson","ns","nestedName","j","object","indexOf","prev","setOptions","onAdd","onRemove","define","path","split","Array","isArray","ptr","part","shift","resolveAll","parentAlreadyChecked","getRoot","slice","found","proto","create","Root","ReflectionObjectPrototype","root","fullName","unshift","_handleAdd","_handleRemove","OneOf","fieldNames","_fields","addFieldsToParent","OneOfPrototype","push","index","splice","lower","token","camelCase","substring","replace","$0","$1","toUpperCase","parse","source","illegal","tn","line","s_bclose","readString","next","s_dq","s_sq","skip","peek","readValue","acceptTypeRef","parseNumber","typeRefRe","readRange","start","parseId","end","s_semi","sign","tokenLower","parseInt","parseFloat","acceptNegative","parsePackage","pkg","s_name","parseImport","whichImports","weakImports","imports","parseSyntax","syntax","p3","isProto3","parseCommon","s_option","parseOption","parseType","parseEnum","parseService","parseExtension","nameRe","s_open","s_close","parseMapField","s_required","s_optional","s_repeated","parseField","parseOneOf","extensions","reserved","s_type","parseInlineOptions","valueType","parseEnumField","custom","s_bopen","fqTypeRefRe","parseOptionValue","service","parseMethod","st","method","reference","tokenize","head","package","properties","any","fieldsOnly","asJSON","key","indexOutOfRange","writeLength","RangeError","buf","Buffer","isBuffer","BufferReader","Tag","readLongVarint","lo","hi","b","LongBits","read_int64_long","toLong","read_int64_number","read_uint64_long","read_uint64_number","read_sint64_long","zzDecode","read_sint64_number","readLongFixed","read_fixed64_long","read_fixed64_number","read_sfixed64_long","read_sfixed64_number","initBufferReader","ieee754","ReaderPrototype","ArrayImpl","Uint8Array","_slice","subarray","int32","octet","sint32","int64","uint64","sint64","bool","fixed32","sfixed32","fixed64","sfixed64","float","double","bytes","string","out","p","c1","fromCharCode","apply","remain","BufferReaderPrototype","readFloatLE","readDoubleLE","deferred","files","handleExtension","extendedType","sisterField","RootPrototype","resolvePath","load","filename","callback","err","cb","process","JSON","parsed","self","fetch","queued","weak","idx","altname","setTimeout","asPromise","newDeferred","_methodsArray","ServicePrototype","methodsArray","getMethodsArray","methodName","inherited","unescape","str","subject","re","stringDelim","stringDoubleRe","stringSingleRe","lastIndex","match","exec","stack","repeat","curr","s_nl","s_sl","s_as","delimRe","delim","expected","actual","equals","_fieldsById","_fieldsArray","_oneofsArray","_ctor","TypePrototype","Verifier","names","oneofsArray","supported","P","fieldName","oneOfName","filter","encoder","readerOrBuffer","decoder","verifier","bake","emptyArray","freeze","fn","ctx","args","arguments","Promise","reject","concat","onload","xhr","status","responseText","fs","readFile","XMLHttpRequest","onreadystatechange","readyState","open","send","isAbsolutePath","normalizePath","parts","prefix","isNode","global","versions","node","dcodeIO","isFinite","description","TypeError","originPath","importPath","alreadyNormalized","from","longFromHash","hash","unsigned","bits","fromHash","fromBits","fromNumber","low","high","dst","src","newBuffer","size","fmt","level","indent","blockOpenRe","branchRe","casingRe","inCase","breakRe","blockCloseRe","format","params","param","stringify","scope","verbose","console","Function","LongBitsPrototype","zero","zzEncode","charCodeAt","mask","part0","part1","part2","VerifierPrototype","reason","hasReasonVar","Op","val","noop","State","tail","BufferWriter","writeByte","writeVarint32","writeVarint64","writeFixed32","writeFixed64","writeFloat","writeDouble","writeString","c2","byteLength","strlen","writeFloatBuffer","writeFloatLE","writeDoubleBuffer","writeDoubleLE","writeBytesBuffer","copy","writeStringBuffer","WriterPrototype","op","writeBytes","state","pop","BufferWriterPrototype","allocUnsafe"],"mappings":"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","file":"protobuf.min.js","sourcesContent":["(function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require==\"function\"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error(\"Cannot find module '\"+o+\"'\");throw f.code=\"MODULE_NOT_FOUND\",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require==\"function\"&&require;for(var o=0;o> 1,\r\n nBits = -7,\r\n i = isBE ? 0 : (nBytes - 1),\r\n d = isBE ? 1 : -1,\r\n s = buffer[offset + i];\r\n\r\n i += d;\r\n\r\n e = s & ((1 << (-nBits)) - 1);\r\n s >>= (-nBits);\r\n nBits += eLen;\r\n for (; nBits > 0; e = e * 256 + buffer[offset + i], i += d, nBits -= 8);\r\n\r\n m = e & ((1 << (-nBits)) - 1);\r\n e >>= (-nBits);\r\n nBits += mLen;\r\n for (; nBits > 0; m = m * 256 + buffer[offset + i], i += d, nBits -= 8);\r\n\r\n if (e === 0) {\r\n e = 1 - eBias;\r\n } else if (e === eMax) {\r\n return m ? NaN : ((s ? -1 : 1) * Infinity);\r\n } else {\r\n m = m + Math.pow(2, mLen);\r\n e = e - eBias;\r\n }\r\n return (s ? -1 : 1) * m * Math.pow(2, e - mLen);\r\n};\r\n\r\nexports.write = function writeIEEE754(buffer, value, offset, isBE, mLen, nBytes) {\r\n var e, m, c,\r\n eLen = nBytes * 8 - mLen - 1,\r\n eMax = (1 << eLen) - 1,\r\n eBias = eMax >> 1,\r\n rt = (mLen === 23 ? Math.pow(2, -24) - Math.pow(2, -77) : 0),\r\n i = isBE ? (nBytes - 1) : 0,\r\n d = isBE ? -1 : 1,\r\n s = value < 0 || (value === 0 && 1 / value < 0) ? 1 : 0;\r\n\r\n value = Math.abs(value);\r\n\r\n if (isNaN(value) || value === Infinity) {\r\n m = isNaN(value) ? 1 : 0;\r\n e = eMax;\r\n } else {\r\n e = Math.floor(Math.log(value) / Math.LN2);\r\n if (value * (c = Math.pow(2, -e)) < 1) {\r\n e--;\r\n c *= 2;\r\n }\r\n if (e + eBias >= 1) {\r\n value += rt / c;\r\n } else {\r\n value += rt * Math.pow(2, 1 - eBias);\r\n }\r\n if (value * c >= 2) {\r\n e++;\r\n c /= 2;\r\n }\r\n\r\n if (e + eBias >= eMax) {\r\n m = 0;\r\n e = eMax;\r\n } else if (e + eBias >= 1) {\r\n m = (value * c - 1) * Math.pow(2, mLen);\r\n e = e + eBias;\r\n } else {\r\n m = value * Math.pow(2, eBias - 1) * Math.pow(2, mLen);\r\n e = 0;\r\n }\r\n }\r\n\r\n for (; mLen >= 8; buffer[offset + i] = m & 0xff, i += d, m /= 256, mLen -= 8);\r\n\r\n e = (e << mLen) | m;\r\n eLen += mLen;\r\n for (; eLen > 0; buffer[offset + i] = e & 0xff, i += d, e /= 256, eLen -= 8);\r\n\r\n buffer[offset + i - d] |= s * 128;\r\n};\r\n","\"use strict\";\r\n\r\nmodule.exports = common;\r\n\r\n/**\r\n * Provides common type definitions.\r\n * Can also be used to provide additional google types or your own custom types.\r\n * @param {string} name Short name as in `google/protobuf/[name].proto` or full file name\r\n * @param {Object} json JSON definition within `google.protobuf` if a short name, otherwise the file's root definition\r\n * @returns {undefined}\r\n * @property {Object} google/protobuf/any.proto Any\r\n * @property {Object} google/protobuf/duration.proto Duration\r\n * @property {Object} google/protobuf/empty.proto Empty\r\n * @property {Object} google/protobuf/struct.proto Struct, Value, NullValue and ListValue\r\n * @property {Object} google/protobuf/timestamp.proto Timestamp\r\n */\r\nfunction common(name, json) {\r\n if (!/\\/|\\./.test(name)) {\r\n name = \"google/protobuf/\" + name + \".proto\";\r\n json = { nested: { google: { nested: { protobuf: { nested: json } } } } };\r\n }\r\n common[name] = json;\r\n}\r\n\r\n// Not provided because of limited use (feel free to discuss or to provide yourself):\r\n// - google/protobuf/descriptor.proto\r\n// - google/protobuf/field_mask.proto\r\n// - google/protobuf/source_context.proto\r\n// - google/protobuf/type.proto\r\n// - google/protobuf/wrappers.proto\r\n\r\ncommon(\"any\", {\r\n Any: {\r\n fields: {\r\n type_url: {\r\n type: \"string\",\r\n id: 1\r\n },\r\n value: {\r\n type: \"bytes\",\r\n id: 2\r\n }\r\n }\r\n }\r\n});\r\n\r\nvar timeType;\r\n\r\ncommon(\"duration\", {\r\n Duration: timeType = {\r\n fields: {\r\n seconds: {\r\n type: \"int64\",\r\n id: 1\r\n },\r\n nanos: {\r\n type: \"int32\",\r\n id: 2\r\n }\r\n }\r\n }\r\n});\r\n\r\ncommon(\"timestamp\", {\r\n Timestamp: timeType\r\n});\r\n\r\ncommon(\"empty\", {\r\n Empty: {\r\n fields: {}\r\n }\r\n});\r\n\r\ncommon(\"struct\", {\r\n Struct: {\r\n fields: {\r\n fields: {\r\n keyType: \"string\",\r\n type: \"Value\",\r\n id: 1\r\n }\r\n }\r\n },\r\n Value: {\r\n oneofs: {\r\n kind: {\r\n oneof: [ \"nullValue\", \"numberValue\", \"stringValue\", \"boolValue\", \"structValue\", \"listValue\" ]\r\n }\r\n },\r\n fields: {\r\n nullValue: {\r\n type: \"NullValue\",\r\n id: 1\r\n },\r\n numberValue: {\r\n type: \"double\",\r\n id: 2\r\n },\r\n stringValue: {\r\n type: \"string\",\r\n id: 3\r\n },\r\n boolValue: {\r\n type: \"bool\",\r\n id: 4\r\n },\r\n structValue: {\r\n type: \"Struct\",\r\n id: 5\r\n },\r\n listValue: {\r\n type: \"ListValue\",\r\n id: 6\r\n }\r\n }\r\n },\r\n NullValue: {\r\n values: {\r\n NULL_VALUE: 0\r\n }\r\n },\r\n ListValue: {\r\n fields: {\r\n values: {\r\n rule: \"repeated\",\r\n type: \"Value\",\r\n id: 1\r\n }\r\n }\r\n }\r\n});\r\n","\"use strict\";\r\nmodule.exports = Decoder;\r\n\r\nvar Enum = require(5),\r\n Reader = require(15),\r\n types = require(20),\r\n util = require(21);\r\n\r\n/**\r\n * Constructs a new decoder for the specified message type.\r\n * @classdesc Wire format decoder using code generation on top of reflection.\r\n * @constructor\r\n * @param {Type} type Message type\r\n */\r\nfunction Decoder(type) {\r\n\r\n /**\r\n * Message type.\r\n * @type {Type}\r\n */\r\n this.type = type;\r\n}\r\n\r\n/** @alias Decoder.prototype */\r\nvar DecoderPrototype = Decoder.prototype;\r\n\r\n// This is here to mimic Type so that fallback functions work without having to bind()\r\nObject.defineProperties(DecoderPrototype, {\r\n\r\n /**\r\n * Fields of this decoder's message type by id for lookups.\r\n * @name Decoder#fieldsById\r\n * @type {Object.}\r\n * @readonly\r\n */\r\n fieldsById: {\r\n get: DecoderPrototype.getFieldsById = function getFieldsById() {\r\n return this.type.getFieldsById();\r\n }\r\n },\r\n\r\n /**\r\n * With this decoder's message type registered constructor, if any registered, otherwise a generic constructor.\r\n * @name Decoder#ctor\r\n * @type {Prototype}\r\n */\r\n ctor: {\r\n get: DecoderPrototype.getCtor = function getCtor() {\r\n return this.type.getCtor();\r\n }\r\n }\r\n});\r\n\r\n/**\r\n * Decodes a message of this decoder's message type.\r\n * @param {Reader} reader Reader to decode from\r\n * @param {number} [length] Length of the message, if known beforehand\r\n * @returns {Prototype} Populated runtime message\r\n */\r\nDecoderPrototype.decode = function decode_fallback(reader, length) { // codegen reference and fallback\r\n /* eslint-disable no-invalid-this, block-scoped-var, no-redeclare */\r\n var fields = this.getFieldsById(),\r\n reader = reader instanceof Reader ? reader : Reader(reader),\r\n limit = length === undefined ? reader.len : reader.pos + length,\r\n message = new (this.getCtor())();\r\n while (reader.pos < limit) {\r\n var tag = reader.tag(),\r\n field = fields[tag.id].resolve(),\r\n type = field.resolvedType instanceof Enum ? \"uint32\" : field.type;\r\n \r\n // Known fields\r\n if (field) {\r\n\r\n // Map fields\r\n if (field.map) {\r\n var keyType = field.resolvedKeyType /* only valid is enum */ ? \"uint32\" : field.keyType,\r\n length = reader.uint32();\r\n var map = message[field.name] = {};\r\n if (length) {\r\n length += reader.pos;\r\n var ks = [], vs = [];\r\n while (reader.pos < length) {\r\n if (reader.tag().id === 1)\r\n ks[ks.length] = reader[keyType]();\r\n else if (types.basic[type] !== undefined)\r\n vs[vs.length] = reader[type]();\r\n else\r\n vs[vs.length] = field.resolvedType.decode(reader, reader.uint32());\r\n }\r\n for (var i = 0; i < ks.length; ++i)\r\n map[typeof ks[i] === 'object' ? util.longToHash(ks[i]) : ks[i]] = vs[i];\r\n }\r\n\r\n // Repeated fields\r\n } else if (field.repeated) {\r\n var values = message[field.name] || (message[field.name] = []);\r\n\r\n // Packed\r\n if (field.packed && types.packed[type] !== undefined && tag.wireType === 2) {\r\n var plimit = reader.uint32() + reader.pos;\r\n while (reader.pos < plimit)\r\n values[values.length] = reader[type]();\r\n\r\n // Non-packed\r\n } else if (types.basic[type] !== undefined)\r\n values[values.length] = reader[type]();\r\n else\r\n values[values.length] = field.resolvedType.decode(reader, reader.uint32());\r\n\r\n // Non-repeated\r\n } else if (types.basic[type] !== undefined)\r\n message[field.name] = reader[type]();\r\n else\r\n message[field.name] = field.resolvedType.decode(reader, reader.uint32());\r\n\r\n // Unknown fields\r\n } else\r\n reader.skipType(tag.wireType);\r\n }\r\n return message;\r\n /* eslint-enable no-invalid-this, block-scoped-var, no-redeclare */\r\n};\r\n\r\n/**\r\n * Generates a decoder specific to this decoder's message type.\r\n * @returns {function} Decoder function with an identical signature to {@link Decoder#decode}\r\n */\r\nDecoderPrototype.generate = function generate() {\r\n /* eslint-disable no-unexpected-multiline */\r\n var fields = this.type.getFieldsArray(); \r\n var gen = util.codegen(\"r\", \"l\")\r\n\r\n (\"r instanceof Reader||(r=Reader(r))\")\r\n (\"var c=l===undefined?r.len:r.pos+l,m=new (this.getCtor())()\")\r\n (\"while(r.pos} [values] Enum values as an object, by name\r\n * @param {Object} [options] Declared options\r\n */\r\nfunction Enum(name, values, options) {\r\n ReflectionObject.call(this, name, options);\r\n\r\n /**\r\n * Enum values by name.\r\n * @type {Object.}\r\n */\r\n this.values = values || {}; // toJSON, marker\r\n\r\n /**\r\n * Cached values by id.\r\n * @type {?Object.}\r\n * @private\r\n */\r\n this._valuesById = null;\r\n}\r\n\r\nObject.defineProperties(EnumPrototype, {\r\n\r\n /**\r\n * Enum values by id.\r\n * @name Enum#valuesById\r\n * @type {Object.}\r\n * @readonly\r\n */\r\n valuesById: {\r\n get: EnumPrototype.getValuesById = function getValuesById() {\r\n if (!this._valuesById) {\r\n this._valuesById = {};\r\n Object.keys(this.values).forEach(function(name) {\r\n var id = this.values[name];\r\n if (this._valuesById[id])\r\n throw Error(\"duplicate id \" + id + \" in \" + this);\r\n this._valuesById[id] = name;\r\n }, this);\r\n }\r\n return this._valuesById;\r\n }\r\n }\r\n});\r\n\r\nfunction clearCache(enm) {\r\n enm._valuesById = null;\r\n return enm;\r\n}\r\n\r\n/**\r\n * Tests if the specified JSON object describes an enum.\r\n * @param {*} json JSON object to test\r\n * @returns {boolean} `true` if the object describes an enum\r\n */\r\nEnum.testJSON = function testJSON(json) {\r\n return Boolean(json && json.values);\r\n};\r\n\r\n/**\r\n * Creates an enum from JSON.\r\n * @param {string} name Enum name\r\n * @param {Object.} json JSON object\r\n * @returns {Enum} Created enum\r\n * @throws {TypeError} If arguments are invalid\r\n */\r\nEnum.fromJSON = function fromJSON(name, json) {\r\n return new Enum(name, json.values, json.options);\r\n};\r\n\r\n/**\r\n * @override\r\n */\r\nEnumPrototype.toJSON = function toJSON() {\r\n return {\r\n options : this.options,\r\n values : this.values\r\n };\r\n};\r\n\r\n/**\r\n * Adds a value to this enum.\r\n * @param {string} name Value name\r\n * @param {number} id Value id\r\n * @returns {Enum} `this`\r\n * @throws {TypeError} If arguments are invalid\r\n * @throws {Error} If there is already a value with this name or id\r\n */\r\nEnumPrototype.add = function(name, id) {\r\n if (!util.isString(name))\r\n throw _TypeError(\"name\");\r\n if (!util.isInteger(id) || id < 0)\r\n throw _TypeError(\"id\", \"a non-negative integer\");\r\n if (this.values[name] !== undefined)\r\n throw Error('duplicate name \"' + name + '\" in ' + this);\r\n if (this.getValuesById()[id] !== undefined)\r\n throw Error(\"duplicate id \" + id + \" in \" + this);\r\n this.values[name] = id;\r\n return clearCache(this);\r\n};\r\n\r\n/**\r\n * Removes a value from this enum\r\n * @param {string} name Value name\r\n * @returns {Enum} `this`\r\n * @throws {TypeError} If arguments are invalid\r\n * @throws {Error} If `name` is not a name of this enum\r\n */\r\nEnumPrototype.remove = function(name) {\r\n if (!util.isString(name))\r\n throw _TypeError(\"name\");\r\n if (this.values[name] === undefined)\r\n throw Error('\"' + name + '\" is not a name of ' + this);\r\n delete this.values[name];\r\n return clearCache(this);\r\n};\r\n","\"use strict\";\r\nmodule.exports = Field;\r\n\r\nvar ReflectionObject = require(11);\r\n/** @alias Field.prototype */\r\nvar FieldPrototype = ReflectionObject.extend(Field);\r\n\r\nvar Type = require(19),\r\n Enum = require(5),\r\n MapField = require(8),\r\n types = require(20),\r\n util = require(21);\r\n\r\nvar _TypeError = util._TypeError;\r\n\r\n/**\r\n * Constructs a new message field. Note that {@link MapField|map fields} have their own class.\r\n * @classdesc Reflected message field.\r\n * @extends ReflectionObject\r\n * @constructor\r\n * @param {string} name Unique name within its namespace\r\n * @param {number} id Unique id within its namespace\r\n * @param {string} type Value type\r\n * @param {string} [rule=optional] Field rule\r\n * @param {string} [extend] Extended type if different from parent\r\n * @param {Object} [options] Declared options\r\n */\r\nfunction Field(name, id, type, rule, extend, options) {\r\n if (util.isObject(rule)) {\r\n options = rule;\r\n rule = extend = undefined;\r\n } else if (util.isObject(extend)) {\r\n options = extend;\r\n extend = undefined;\r\n }\r\n ReflectionObject.call(this, name, options);\r\n if (!util.isInteger(id) || id < 0)\r\n throw _TypeError(\"id\", \"a non-negative integer\");\r\n if (!util.isString(type))\r\n throw _TypeError(\"type\");\r\n if (extend !== undefined && !util.isString(extend))\r\n throw _TypeError(\"extend\");\r\n if (rule !== undefined && !/^required|optional|repeated$/.test(rule = rule.toString().toLowerCase()))\r\n throw _TypeError(\"rule\", \"a valid rule string\");\r\n\r\n /**\r\n * Field rule, if any.\r\n * @type {string|undefined}\r\n */\r\n this.rule = rule && rule !== 'optional' ? rule : undefined; // toJSON\r\n\r\n /**\r\n * Field type.\r\n * @type {string}\r\n */\r\n this.type = type; // toJSON\r\n\r\n /**\r\n * Unique field id.\r\n * @type {number}\r\n */\r\n this.id = id; // toJSON, marker\r\n\r\n /**\r\n * Extended type if different from parent.\r\n * @type {string|undefined}\r\n */\r\n this.extend = extend || undefined; // toJSON\r\n\r\n /**\r\n * Whether this field is required.\r\n * @type {boolean}\r\n */\r\n this.required = rule === \"required\";\r\n\r\n /**\r\n * Whether this field is optional.\r\n * @type {boolean}\r\n */\r\n this.optional = !this.required;\r\n\r\n /**\r\n * Whether this field is repeated.\r\n * @type {boolean}\r\n */\r\n this.repeated = rule === \"repeated\";\r\n\r\n /**\r\n * Whether this field is a map or not.\r\n * @type {boolean}\r\n */\r\n this.map = false;\r\n\r\n /**\r\n * Message this field belongs to.\r\n * @type {?Type}\r\n */\r\n this.message = null;\r\n\r\n /**\r\n * OneOf this field belongs to, if any,\r\n * @type {?OneOf}\r\n */\r\n this.partOf = null;\r\n\r\n /**\r\n * The field's default value. Only relevant when working with proto2.\r\n * @type {*}\r\n */\r\n this.defaultValue = null;\r\n\r\n /**\r\n * Whether this field's value should be treated as a long.\r\n * @type {boolean}\r\n */\r\n this.long = util.Long ? types.long[type] !== undefined : false;\r\n\r\n /**\r\n * Resolved type if not a basic type.\r\n * @type {?(Type|Enum)}\r\n */\r\n this.resolvedType = null;\r\n\r\n /**\r\n * Sister-field within the extended type if a declaring extension field.\r\n * @type {?Field}\r\n */\r\n this.extensionField = null;\r\n\r\n /**\r\n * Sister-field within the declaring namespace if an extended field.\r\n * @type {?Field}\r\n */\r\n this.declaringField = null;\r\n\r\n /**\r\n * Internally remembers whether this field is packed.\r\n * @type {?boolean}\r\n * @private\r\n */\r\n this._packed = null;\r\n}\r\n\r\nObject.defineProperties(FieldPrototype, {\r\n\r\n /**\r\n * Determines whether this field is packed. Only relevant when repeated and working with proto2.\r\n * @name Field#packed\r\n * @type {boolean}\r\n * @readonly\r\n */\r\n packed: {\r\n get: FieldPrototype.isPacked = function() {\r\n if (this._packed === null)\r\n this._packed = this.getOption(\"packed\") !== false;\r\n return this._packed;\r\n }\r\n }\r\n\r\n});\r\n\r\n/**\r\n * @override\r\n */\r\nFieldPrototype.setOption = function setOption(name, value, ifNotSet) {\r\n if (name === \"packed\")\r\n this._packed = null;\r\n return ReflectionObject.prototype.setOption.call(this, name, value, ifNotSet);\r\n};\r\n\r\n/**\r\n * Tests if the specified JSON object describes a field.\r\n * @param {*} json Any JSON object to test\r\n * @returns {boolean} `true` if the object describes a field\r\n */\r\nField.testJSON = function testJSON(json) {\r\n return Boolean(json && json.id !== undefined);\r\n};\r\n\r\n/**\r\n * Constructs a field from JSON.\r\n * @param {string} name Field name\r\n * @param {Object} json JSON object\r\n * @returns {Field} Created field\r\n * @throws {TypeError} If arguments are invalid\r\n */\r\nField.fromJSON = function fromJSON(name, json) {\r\n if (json.keyType !== undefined)\r\n return MapField.fromJSON(name, json);\r\n return new Field(name, json.id, json.type, json.role, json.extend, json.options);\r\n};\r\n\r\n/**\r\n * @override\r\n */\r\nFieldPrototype.toJSON = function toJSON() {\r\n return {\r\n rule : this.rule !== \"optional\" && this.rule || undefined,\r\n type : this.type,\r\n id : this.id,\r\n extend : this.extend,\r\n options : this.options\r\n };\r\n};\r\n\r\n/**\r\n * Resolves this field's type references.\r\n * @returns {Field} `this`\r\n * @throws {Error} If any reference cannot be resolved\r\n */\r\nFieldPrototype.resolve = function resolve() {\r\n if (this.resolved)\r\n return this;\r\n\r\n var typeDefault = types.defaults[this.type];\r\n\r\n // if not a basic type, resolve it\r\n if (typeDefault === undefined) {\r\n var resolved = this.parent.lookup(this.type);\r\n if (resolved instanceof Type) {\r\n this.resolvedType = resolved;\r\n typeDefault = null;\r\n } else if (resolved instanceof Enum) {\r\n this.resolvedType = resolved;\r\n typeDefault = 0;\r\n } else\r\n throw Error(\"unresolvable field type: \" + this.type);\r\n }\r\n\r\n // when everything is resolved determine the default value\r\n var optionDefault;\r\n if (this.map)\r\n this.defaultValue = {};\r\n else if (this.repeated)\r\n this.defaultValue = [];\r\n else if (this.options && (optionDefault = this.options['default']) !== undefined) // eslint-disable-line dot-notation\r\n this.defaultValue = optionDefault;\r\n else\r\n this.defaultValue = typeDefault;\r\n\r\n if (this.long)\r\n this.defaultValue = util.Long.fromValue(this.defaultValue);\r\n \r\n return ReflectionObject.prototype.resolve.call(this);\r\n};\r\n\r\n/**\r\n * Converts a field value to JSON using the specified options. Note that this method does not account for repeated fields and must be called once for each repeated element instead.\r\n * @param {*} value Field value\r\n * @param {Object.} [options] Conversion options\r\n * @returns {*} Converted value\r\n * @see {@link Prototype#asJSON}\r\n */\r\nFieldPrototype.jsonConvert = function(value, options) {\r\n if (options) {\r\n if (this.resolvedType instanceof Enum && options['enum'] === String) // eslint-disable-line dot-notation\r\n return this.resolvedType.getValuesById()[value];\r\n else if (this.long && options.long)\r\n return options.long === Number\r\n ? typeof value === 'number'\r\n ? value\r\n : util.Long.fromValue(value).toNumber()\r\n : util.Long.fromValue(value, this.type.charAt(0) === 'u').toString();\r\n }\r\n return value;\r\n};\r\n","\"use strict\";\r\nmodule.exports = inherits;\r\n\r\nvar Prototype = require(14),\r\n Type = require(19),\r\n util = require(21);\r\n\r\nvar _TypeError = util._TypeError;\r\n\r\n/**\r\n * Options passed to {@link inherits}, modifying its behavior.\r\n * @typedef InheritanceOptions\r\n * @type {Object}\r\n * @property {boolean} [noStatics=false] Skips adding the default static methods on top of the constructor\r\n * @property {boolean} [noRegister=false] Skips registering the constructor with the reflected type\r\n */\r\n\r\n/**\r\n * Inherits a custom class from the message prototype of the specified message type.\r\n * @param {Function} clazz Inheriting class\r\n * @param {Type} type Inherited message type\r\n * @param {InheritanceOptions} [options] Inheritance options\r\n * @returns {Prototype} Created prototype\r\n */\r\nfunction inherits(clazz, type, options) {\r\n if (typeof clazz !== 'function')\r\n throw _TypeError(\"clazz\", \"a function\");\r\n if (!(type instanceof Type))\r\n throw _TypeError(\"type\", \"a Type\");\r\n if (!options)\r\n options = {};\r\n\r\n /**\r\n * This is not an actual type but stands as a reference for any constructor of a custom message class that you pass to the library.\r\n * @name Class\r\n * @extends Prototype\r\n * @constructor\r\n * @param {Object.} [properties] Properties to set on the message\r\n * @see {@link inherits}\r\n */\r\n\r\n var classProperties = {\r\n \r\n /**\r\n * Reference to the reflected type.\r\n * @name Class.$type\r\n * @type {Type}\r\n * @readonly\r\n */\r\n $type: {\r\n value: type\r\n }\r\n };\r\n\r\n if (!options.noStatics)\r\n util.merge(classProperties, {\r\n\r\n /**\r\n * Encodes a message of this type to a buffer.\r\n * @name Class.encode\r\n * @function\r\n * @param {Prototype|Object} message Message to encode\r\n * @param {Writer} [writer] Writer to use\r\n * @returns {number[]} Encoded message\r\n */\r\n encode: {\r\n value: function encode(message, writer) {\r\n return this.$type.encode(message, writer).finish();\r\n }\r\n },\r\n\r\n /**\r\n * Encodes a message of this type preceeded by its length as a varint to a buffer.\r\n * @name Class.encodeDelimited\r\n * @function\r\n * @param {Prototype|Object} message Message to encode\r\n * @param {Writer} [writer] Writer to use\r\n * @returns {number[]} Encoded message\r\n */\r\n encodeDelimited: {\r\n value: function encodeDelimited(message, writer) {\r\n return this.$type.encodeDelimited(message, writer).finish();\r\n }\r\n },\r\n\r\n /**\r\n * Decodes a message of this type from a buffer.\r\n * @name Class.decode\r\n * @function\r\n * @param {number[]} buffer Buffer to decode\r\n * @returns {Prototype} Decoded message\r\n */\r\n decode: {\r\n value: function decode(buffer) {\r\n return this.$type.decode(buffer);\r\n }\r\n },\r\n\r\n /**\r\n * Decodes a message of this type preceeded by its length as a varint from a buffer.\r\n * @name Class.decodeDelimited\r\n * @function\r\n * @param {number[]} buffer Buffer to decode\r\n * @returns {Prototype} Decoded message\r\n */\r\n decodeDelimited: {\r\n value: function decodeDelimited(buffer) {\r\n return this.$type.decodeDelimited(buffer);\r\n }\r\n },\r\n\r\n /**\r\n * Verifies a message of this type.\r\n * @name Class.verify\r\n * @function\r\n * @param {Prototype|Object} message Message or plain object to verify\r\n * @returns {?string} `null` if valid, otherwise the reason why it is not\r\n */\r\n verify: {\r\n value: function verify(message) {\r\n return this.$type.verify(message);\r\n }\r\n }\r\n\r\n }, true);\r\n\r\n Object.defineProperties(clazz, classProperties);\r\n var prototype = inherits.defineProperties(new Prototype(), type);\r\n clazz.prototype = prototype;\r\n prototype.constructor = clazz;\r\n\r\n if (!options.noRegister)\r\n type.setCtor(clazz);\r\n\r\n return prototype;\r\n}\r\n\r\n/**\r\n * Defines the reflected type's default values and virtual oneof properties on the specified prototype.\r\n * @memberof inherits\r\n * @param {Prototype} prototype Prototype to define properties upon\r\n * @param {Type} type Reflected message type\r\n * @returns {Prototype} The specified prototype\r\n */\r\ninherits.defineProperties = function defineProperties(prototype, type) {\r\n\r\n var prototypeProperties = {\r\n\r\n /**\r\n * Reference to the reflected type.\r\n * @name Prototype#$type\r\n * @type {Type}\r\n * @readonly\r\n */\r\n $type: {\r\n value: type\r\n }\r\n };\r\n\r\n // Initialize default values\r\n type.getFieldsArray().forEach(function(field) {\r\n field.resolve();\r\n if (!util.isObject(field.defaultValue))\r\n // objects are mutable (i.e. would modify the array on the prototype, not the instance)\r\n prototype[field.name] = field.defaultValue;\r\n });\r\n\r\n // Define each oneof with a non-enumerable getter and setter for the present field\r\n type.getOneofsArray().forEach(function(oneof) {\r\n prototypeProperties[oneof.resolve().name] = {\r\n get: function() {\r\n var keys = oneof.oneof;\r\n for (var i = 0; i < keys.length; ++i) {\r\n var field = oneof.parent.fields[keys[i]];\r\n if (this[keys[i]] != field.defaultValue) // eslint-disable-line eqeqeq\r\n return keys[i];\r\n }\r\n return undefined;\r\n },\r\n set: function(value) {\r\n var keys = oneof.oneof;\r\n for (var i = 0; i < keys.length; ++i) {\r\n if (keys[i] !== value)\r\n delete this[keys[i]];\r\n }\r\n }\r\n };\r\n });\r\n\r\n Object.defineProperties(prototype, prototypeProperties);\r\n return prototype;\r\n};\r\n","\"use strict\";\r\nmodule.exports = MapField;\r\n\r\nvar Field = require(6);\r\n/** @alias Field.prototype */\r\nvar FieldPrototype = Field.prototype;\r\n/** @alias MapField.prototype */\r\nvar MapFieldPrototype = Field.extend(MapField);\r\n\r\nvar Enum = require(5),\r\n types = require(20),\r\n util = require(21);\r\n\r\n/**\r\n * Constructs a new map field.\r\n * @classdesc Reflected map field.\r\n * @extends Field\r\n * @constructor\r\n * @param {string} name Unique name within its namespace\r\n * @param {number} id Unique id within its namespace\r\n * @param {string} keyType Key type\r\n * @param {string} type Value type\r\n * @param {Object} [options] Declared options\r\n */\r\nfunction MapField(name, id, keyType, type, options) {\r\n Field.call(this, name, id, type, options);\r\n if (!util.isString(keyType))\r\n throw util._TypeError(\"keyType\");\r\n \r\n /**\r\n * Key type.\r\n * @type {string}\r\n */\r\n this.keyType = keyType; // toJSON, marker\r\n\r\n /**\r\n * Resolved key type if not a basic type.\r\n * @type {?ReflectionObject}\r\n */\r\n this.resolvedKeyType = null;\r\n\r\n // Overrides Field#map\r\n this.map = true;\r\n}\r\n\r\n/**\r\n * Tests if the specified JSON object describes a map field.\r\n * @param {Object} json JSON object to test\r\n * @returns {boolean} `true` if the object describes a field\r\n */\r\nMapField.testJSON = function testJSON(json) {\r\n return Field.testJSON(json) && json.keyType !== undefined;\r\n};\r\n\r\n/**\r\n * Constructs a map field from JSON.\r\n * @param {string} name Field name\r\n * @param {Object} json JSON object\r\n * @returns {MapField} Created map field\r\n * @throws {TypeError} If arguments are invalid\r\n */\r\nMapField.fromJSON = function fromJSON(name, json) {\r\n return new MapField(name, json.id, json.keyType, json.type, json.options);\r\n};\r\n\r\n/**\r\n * @override\r\n */\r\nMapFieldPrototype.toJSON = function toJSON() {\r\n return {\r\n keyType : this.keyType,\r\n type : this.type,\r\n id : this.id,\r\n extend : this.extend,\r\n options : this.options\r\n };\r\n};\r\n\r\n/**\r\n * @override\r\n */\r\nMapFieldPrototype.resolve = function resolve() {\r\n if (this.resolved)\r\n return this;\r\n \r\n // Besides a value type, map fields have a key type to resolve\r\n var keyWireType = types.mapKey[this.keyType];\r\n if (keyWireType === undefined) {\r\n var resolved = this.parent.lookup(this.keyType);\r\n if (!(resolved instanceof Enum))\r\n throw Error(\"unresolvable map key type: \" + this.keyType);\r\n this.resolvedKeyType = resolved;\r\n }\r\n\r\n return FieldPrototype.resolve.call(this);\r\n};\r\n","\"use strict\";\r\nmodule.exports = Method;\r\n\r\nvar ReflectionObject = require(11);\r\n/** @alias Method.prototype */\r\nvar MethodPrototype = ReflectionObject.extend(Method);\r\n\r\nvar Type = require(19),\r\n util = require(21);\r\n\r\nvar _TypeError = util._TypeError;\r\n\r\n/**\r\n * Constructs a new service method.\r\n * @classdesc Reflected service method.\r\n * @extends ReflectionObject\r\n * @constructor\r\n * @param {string} name Method name\r\n * @param {string|undefined} type Method type, usually `\"rpc\"`\r\n * @param {string} requestType Request message type\r\n * @param {string} responseType Response message type\r\n * @param {boolean} [requestStream] Whether the request is streamed\r\n * @param {boolean} [responseStream] Whether the response is streamed\r\n * @param {Object} [options] Declared options\r\n */\r\nfunction Method(name, type, requestType, responseType, requestStream, responseStream, options) {\r\n if (util.isObject(requestStream)) {\r\n options = requestStream;\r\n requestStream = responseStream = undefined;\r\n } else if (util.isObject(responseStream)) {\r\n options = responseStream;\r\n responseStream = undefined;\r\n }\r\n if (!util.isString(type))\r\n throw _TypeError(\"type\");\r\n if (!util.isString(requestType))\r\n throw _TypeError(\"requestType\");\r\n if (!util.isString(responseType))\r\n throw _TypeError(\"responseType\");\r\n\r\n ReflectionObject.call(this, name, options);\r\n\r\n /**\r\n * Method type.\r\n * @type {string}\r\n */\r\n this.type = type || \"rpc\"; // toJSON\r\n\r\n /**\r\n * Request type.\r\n * @type {string}\r\n */\r\n this.requestType = requestType; // toJSON, marker\r\n\r\n /**\r\n * Whether requests are streamed or not.\r\n * @type {boolean|undefined}\r\n */\r\n this.requestStream = requestStream ? true : undefined; // toJSON\r\n\r\n /**\r\n * Response type.\r\n * @type {string}\r\n */\r\n this.responseType = responseType; // toJSON\r\n\r\n /**\r\n * Whether responses are streamed or not.\r\n * @type {boolean|undefined}\r\n */\r\n this.responseStream = responseStream ? true : undefined; // toJSON\r\n\r\n /**\r\n * Resolved request type.\r\n * @type {?Type}\r\n */\r\n this.resolvedRequestType = null;\r\n\r\n /**\r\n * Resolved response type.\r\n * @type {?Type}\r\n */\r\n this.resolvedResponseType = null;\r\n}\r\n\r\n/**\r\n * Tests if the specified JSON object describes a service method.\r\n * @param {Object} json JSON object\r\n * @returns {boolean} `true` if the object describes a map field\r\n */\r\nMethod.testJSON = function testJSON(json) {\r\n return Boolean(json && json.requestType !== undefined);\r\n};\r\n\r\n/**\r\n * Constructs a service method from JSON.\r\n * @param {string} name Method name\r\n * @param {Object} json JSON object\r\n * @returns {Method} Created method\r\n * @throws {TypeError} If arguments are invalid\r\n */\r\nMethod.fromJSON = function fromJSON(name, json) {\r\n return new Method(name, json.type, json.requestType, json.responseType, json.requestStream, json.responseStream, json.options);\r\n};\r\n\r\n/**\r\n * @override\r\n */\r\nMethodPrototype.toJSON = function toJSON() {\r\n return {\r\n type : this.type !== \"rpc\" && this.type || undefined,\r\n requestType : this.requestType,\r\n requestStream : this.requestStream,\r\n responseType : this.responseType,\r\n responseStream : this.responseStream,\r\n options : this.options\r\n };\r\n};\r\n\r\n/**\r\n * @override\r\n */\r\nMethodPrototype.resolve = function resolve() {\r\n if (this.resolved)\r\n return this;\r\n var resolved = this.parent.lookup(this.requestType);\r\n if (!(resolved && resolved instanceof Type))\r\n throw Error(\"unresolvable request type: \" + this.requestType);\r\n this.resolvedRequestType = resolved;\r\n resolved = this.parent.lookup(this.responseType);\r\n if (!(resolved && resolved instanceof Type))\r\n throw Error(\"unresolvable response type: \" + this.requestType);\r\n this.resolvedResponseType = resolved;\r\n return ReflectionObject.prototype.resolve.call(this);\r\n};\r\n","\"use strict\";\r\nmodule.exports = Namespace;\r\n\r\nvar ReflectionObject = require(11);\r\n/** @alias Namespace.prototype */\r\nvar NamespacePrototype = ReflectionObject.extend(Namespace);\r\n\r\nvar Enum = require(5),\r\n Type = require(19),\r\n Field = require(6),\r\n Service = require(17),\r\n util = require(21);\r\n\r\nvar _TypeError = util._TypeError;\r\n\r\nvar nestedTypes = [ Enum, Type, Service, Field, Namespace ],\r\n nestedError = \"one of \" + nestedTypes.map(function(ctor) { return ctor.name; }).join(', ');\r\n\r\n/**\r\n * Constructs a new namespace.\r\n * @classdesc Reflected namespace and base class of all reflection objects containing nested objects.\r\n * @extends ReflectionObject\r\n * @constructor\r\n * @param {string} name Namespace name\r\n * @param {Object} [options] Declared options\r\n */\r\nfunction Namespace(name, options) {\r\n ReflectionObject.call(this, name, options);\r\n\r\n /**\r\n * Nested objects by name.\r\n * @type {Object.|undefined}\r\n */\r\n this.nested = undefined; // toJSON\r\n\r\n /**\r\n * Cached nested objects as an array.\r\n * @type {?ReflectionObject[]}\r\n * @private\r\n */\r\n this._nestedArray = null;\r\n}\r\n\r\nfunction clearCache(namespace) {\r\n namespace._nestedArray = null;\r\n return namespace;\r\n}\r\n\r\nObject.defineProperties(NamespacePrototype, {\r\n\r\n /**\r\n * Nested objects of this namespace as an array for iteration.\r\n * @name Namespace#nestedArray\r\n * @type {ReflectionObject[]}\r\n * @readonly\r\n */\r\n nestedArray: {\r\n get: NamespacePrototype.getNestedArray = function getNestedArray() {\r\n return this._nestedArray || (this._nestedArray = util.toArray(this.nested));\r\n }\r\n }\r\n\r\n});\r\n\r\n/**\r\n * Tests if the specified JSON object describes not another reflection object.\r\n * @param {*} json JSON object\r\n * @returns {boolean} `true` if the object describes not another reflection object\r\n */\r\nNamespace.testJSON = function testJSON(json) {\r\n return Boolean(json\r\n && !json.fields // Type\r\n && !json.values // Enum\r\n && json.id === undefined // Field, MapField\r\n && !json.oneof // OneOf\r\n && !json.methods // Service\r\n && json.requestType === undefined // Method\r\n );\r\n};\r\n\r\n/**\r\n * Constructs a namespace from JSON.\r\n * @param {string} name Namespace name\r\n * @param {Object} json JSON object\r\n * @returns {Namespace} Created namespace\r\n * @throws {TypeError} If arguments are invalid\r\n */\r\nNamespace.fromJSON = function fromJSON(name, json) {\r\n return new Namespace(name, json.options).addJSON(json.nested);\r\n};\r\n\r\n/**\r\n * @override\r\n */\r\nNamespacePrototype.toJSON = function toJSON() {\r\n return {\r\n options : this.options,\r\n nested : arrayToJSON(this.getNestedArray())\r\n };\r\n};\r\n\r\n/**\r\n * Converts an array of reflection objects to JSON.\r\n * @memberof Namespace\r\n * @param {ReflectionObject[]} array Object array\r\n * @returns {Object.|undefined} JSON object or `undefined` when array is empty\r\n */\r\nfunction arrayToJSON(array) {\r\n if (!(array && array.length))\r\n return undefined;\r\n var obj = {};\r\n for (var i = 0; i < array.length; ++i)\r\n obj[array[i].name] = array[i].toJSON();\r\n return obj;\r\n}\r\n\r\nNamespace.arrayToJSON = arrayToJSON;\r\n\r\n/**\r\n * Adds nested elements to this namespace from JSON.\r\n * @param {Object.} nestedJson Nested JSON\r\n * @returns {Namespace} `this`\r\n */\r\nNamespacePrototype.addJSON = function addJSON(nestedJson) {\r\n var ns = this;\r\n if (nestedJson)\r\n Object.keys(nestedJson).forEach(function(nestedName) {\r\n var nested = nestedJson[nestedName];\r\n for (var j = 0; j < nestedTypes.length; ++j)\r\n if (nestedTypes[j].testJSON(nested))\r\n return ns.add(nestedTypes[j].fromJSON(nestedName, nested));\r\n throw _TypeError(\"nested.\" + nestedName, \"JSON for \" + nestedError);\r\n });\r\n return this;\r\n};\r\n\r\n/**\r\n * Gets the nested object of the specified name.\r\n * @param {string} name Nested object name\r\n * @returns {?ReflectionObject} The reflection object or `null` if it doesn't exist\r\n */\r\nNamespacePrototype.get = function get(name) {\r\n if (this.nested === undefined) // prevents deopt\r\n return null;\r\n return this.nested[name] || null;\r\n};\r\n\r\n/**\r\n * Adds a nested object to this namespace.\r\n * @param {ReflectionObject} object Nested object to add\r\n * @returns {Namespace} `this`\r\n * @throws {TypeError} If arguments are invalid\r\n * @throws {Error} If there is already a nested object with this name\r\n */\r\nNamespacePrototype.add = function add(object) {\r\n if (!object || nestedTypes.indexOf(object.constructor) < 0)\r\n throw _TypeError(\"object\", nestedError);\r\n if (object instanceof Field && object.extend === undefined)\r\n throw _TypeError(\"object\", \"an extension field when not part of a type\");\r\n if (!this.nested)\r\n this.nested = {};\r\n else {\r\n var prev = this.get(object.name);\r\n if (prev) {\r\n if (prev instanceof Namespace && object instanceof Namespace && !(prev instanceof Type || prev instanceof Service)) {\r\n // replace plain namespace but keep existing nested elements and options\r\n var nested = prev.getNestedArray();\r\n for (var i = 0; i < nested.length; ++i)\r\n object.add(nested[i]);\r\n this.remove(prev);\r\n if (!this.nested)\r\n this.nested = {};\r\n object.setOptions(prev.options, true);\r\n } else\r\n throw Error(\"duplicate name '\" + object.name + \"' in \" + this);\r\n }\r\n }\r\n this.nested[object.name] = object;\r\n object.onAdd(this);\r\n return clearCache(this);\r\n};\r\n\r\n/**\r\n * Removes a nested object from this namespace.\r\n * @param {ReflectionObject} object Nested object to remove\r\n * @returns {Namespace} `this`\r\n * @throws {TypeError} If arguments are invalid\r\n * @throws {Error} If `object` is not a member of this namespace\r\n */\r\nNamespacePrototype.remove = function remove(object) {\r\n if (!(object instanceof ReflectionObject))\r\n throw _TypeError(\"object\", \"a ReflectionObject\");\r\n if (object.parent !== this || !this.nested)\r\n throw Error(object + \" is not a member of \" + this);\r\n delete this.nested[object.name];\r\n if (!Object.keys(this.nested).length)\r\n this.nested = undefined;\r\n object.onRemove(this);\r\n return clearCache(this);\r\n};\r\n\r\n/**\r\n * Defines additial namespaces within this one if not yet existing.\r\n * @param {string|string[]} path Path to create\r\n * @param {*} [json] Nested types to create from JSON\r\n * @returns {Namespace} Pointer to the last namespace created or `this` if path is empty\r\n */\r\nNamespacePrototype.define = function define(path, json) {\r\n if (util.isString(path))\r\n path = path.split('.');\r\n else if (!Array.isArray(path)) {\r\n json = path;\r\n path = undefined;\r\n }\r\n var ptr = this;\r\n if (path)\r\n while (path.length > 0) {\r\n var part = path.shift();\r\n if (ptr.nested && ptr.nested[part]) {\r\n ptr = ptr.nested[part];\r\n if (!(ptr instanceof Namespace))\r\n throw Error(\"path conflicts with non-namespace objects\");\r\n } else\r\n ptr.add(ptr = new Namespace(part));\r\n }\r\n if (json)\r\n ptr.addJSON(json);\r\n return ptr;\r\n};\r\n\r\n/**\r\n * Resolves this namespace's and all its nested objects' type references. Useful to validate a reflection tree.\r\n * @returns {Namespace} `this`\r\n */\r\nNamespacePrototype.resolveAll = function resolve() {\r\n var nested = this.getNestedArray(), i = 0;\r\n while (i < nested.length)\r\n if (nested[i] instanceof Namespace)\r\n nested[i++].resolveAll();\r\n else\r\n nested[i++].resolve();\r\n return ReflectionObject.prototype.resolve.call(this);\r\n};\r\n\r\n/**\r\n * Looks up the reflection object at the specified path, relative to this namespace.\r\n * @param {string|string[]} path Path to look up\r\n * @param {boolean} [parentAlreadyChecked=false] Whether the parent has already been checked\r\n * @returns {?ReflectionObject} Looked up object or `null` if none could be found\r\n */\r\nNamespacePrototype.lookup = function lookup(path, parentAlreadyChecked) {\r\n if (util.isString(path)) {\r\n if (!path.length)\r\n return null;\r\n path = path.split('.');\r\n } else if (!path.length)\r\n return null;\r\n // Start at root if path is absolute\r\n if (path[0] === \"\")\r\n return this.getRoot().lookup(path.slice(1));\r\n // Test if the first part matches any nested object, and if so, traverse if path contains more\r\n var found = this.get(path[0]);\r\n if (found && (path.length === 1 || found instanceof Namespace && (found = found.lookup(path.slice(1), true))))\r\n return found;\r\n // If there hasn't been a match, try again at the parent\r\n if (this.parent === null || parentAlreadyChecked)\r\n return null;\r\n return this.parent.lookup(path);\r\n};\r\n","\"use strict\";\r\nmodule.exports = ReflectionObject;\r\n\r\nReflectionObject.extend = extend;\r\n\r\nvar Root = require(16),\r\n util = require(21);\r\n\r\nvar _TypeError = util._TypeError;\r\n\r\n/**\r\n * Constructs a new reflection object.\r\n * @classdesc Base class of all reflection objects.\r\n * @constructor\r\n * @param {string} name Object name\r\n * @param {Object} [options] Declared options\r\n * @abstract\r\n */\r\nfunction ReflectionObject(name, options) {\r\n if (!util.isString(name))\r\n throw _TypeError(\"name\");\r\n if (options && !util.isObject(options))\r\n throw _TypeError(\"options\", \"an object\");\r\n\r\n /**\r\n * Options.\r\n * @type {Object.|undefined}\r\n */\r\n this.options = options; // toJSON\r\n\r\n /**\r\n * Unique name within its namespace.\r\n * @type {string}\r\n */\r\n this.name = name;\r\n\r\n /**\r\n * Parent namespace.\r\n * @type {?Namespace}\r\n */\r\n this.parent = null;\r\n\r\n /**\r\n * Whether already resolved or not.\r\n * @type {boolean}\r\n */\r\n this.resolved = false;\r\n}\r\n\r\n/** @alias ReflectionObject.prototype */\r\nvar ReflectionObjectPrototype = ReflectionObject.prototype;\r\n\r\nObject.defineProperties(ReflectionObjectPrototype, {\r\n\r\n /**\r\n * Reference to the root namespace.\r\n * @name ReflectionObject#root\r\n * @type {Root}\r\n * @readonly\r\n */\r\n root: {\r\n get: ReflectionObjectPrototype.getRoot = function getRoot() {\r\n var ptr = this;\r\n while (ptr.parent !== null)\r\n ptr = ptr.parent;\r\n return ptr;\r\n }\r\n },\r\n\r\n /**\r\n * Full name including leading dot.\r\n * @name ReflectionObject#fullName\r\n * @type {string}\r\n * @readonly\r\n */\r\n fullName: {\r\n get: ReflectionObjectPrototype.getFullName = function getFullName() {\r\n var path = [ this.name ],\r\n ptr = this.parent;\r\n while (ptr) {\r\n path.unshift(ptr.name);\r\n ptr = ptr.parent;\r\n }\r\n return path.join('.');\r\n }\r\n }\r\n});\r\n\r\n/**\r\n * Lets the specified constructor extend this class.\r\n * @memberof ReflectionObject\r\n * @param {Function} constructor Extending constructor\r\n * @returns {Object} Prototype\r\n * @this ReflectionObject\r\n */\r\nfunction extend(constructor) {\r\n var proto = constructor.prototype = Object.create(this.prototype);\r\n proto.constructor = constructor;\r\n constructor.extend = extend;\r\n return proto;\r\n}\r\n\r\n/**\r\n * Converts this reflection object to its JSON representation.\r\n * @returns {Object} JSON object\r\n * @abstract\r\n */\r\nReflectionObjectPrototype.toJSON = function toJSON() {\r\n throw Error(); // not implemented, shouldn't happen\r\n};\r\n\r\n/**\r\n * Called when this object is added to a parent.\r\n * @param {ReflectionObject} parent Parent added to\r\n * @returns {undefined}\r\n */\r\nReflectionObjectPrototype.onAdd = function onAdd(parent) {\r\n if (this.parent && this.parent !== parent)\r\n this.parent.remove(this);\r\n this.parent = parent;\r\n this.resolved = false;\r\n var root = parent.getRoot();\r\n if (root instanceof Root)\r\n root._handleAdd(this);\r\n};\r\n\r\n/**\r\n * Called when this object is removed from a parent.\r\n * @param {ReflectionObject} parent Parent removed from\r\n * @returns {undefined}\r\n */\r\nReflectionObjectPrototype.onRemove = function onRemove(parent) {\r\n var root = parent.getRoot();\r\n if (root instanceof Root)\r\n root._handleRemove(this);\r\n this.parent = null;\r\n this.resolved = false;\r\n};\r\n\r\n/**\r\n * Resolves this objects type references.\r\n * @returns {ReflectionObject} `this`\r\n */\r\nReflectionObjectPrototype.resolve = function resolve() {\r\n if (this.resolved)\r\n return this;\r\n var root = this.getRoot();\r\n if (root instanceof Root)\r\n this.resolved = true; // only if part of a root\r\n return this;\r\n};\r\n\r\n/**\r\n * Gets an option value.\r\n * @param {string} name Option name\r\n * @returns {*} Option value or `undefined` if not set\r\n */\r\nReflectionObjectPrototype.getOption = function getOption(name) {\r\n if (this.options)\r\n return this.options[name];\r\n return undefined;\r\n};\r\n\r\n/**\r\n * Sets an option.\r\n * @param {string} name Option name\r\n * @param {*} value Option value\r\n * @param {boolean} [ifNotSet] Sets the option only if it isn't currently set\r\n * @returns {ReflectionObject} `this`\r\n */\r\nReflectionObjectPrototype.setOption = function setOption(name, value, ifNotSet) {\r\n if (!ifNotSet || !this.options || this.options[name] === undefined)\r\n (this.options || (this.options = {}))[name] = value;\r\n return this;\r\n};\r\n\r\n/**\r\n * Sets multiple options.\r\n * @param {Object.} options Options to set\r\n * @param {boolean} [ifNotSet] Sets an option only if it isn't currently set\r\n * @returns {ReflectionObject} `this`\r\n */\r\nReflectionObjectPrototype.setOptions = function setOptions(options, ifNotSet) {\r\n if (options)\r\n Object.keys(options).forEach(function(name) {\r\n this.setOption(name, options[name], ifNotSet);\r\n }, this);\r\n return this;\r\n};\r\n\r\n/**\r\n * Converts this instance to its string representation.\r\n * @returns {string} Constructor name, space, full name\r\n */\r\nReflectionObjectPrototype.toString = function toString() {\r\n return this.constructor.name + \" \" + this.getFullName();\r\n};\r\n","\"use strict\";\r\nmodule.exports = OneOf;\r\n\r\nvar ReflectionObject = require(11);\r\n/** @alias OneOf.prototype */\r\nvar OneOfPrototype = ReflectionObject.extend(OneOf);\r\n\r\nvar Field = require(6),\r\n util = require(21);\r\n\r\nvar _TypeError = util._TypeError;\r\n\r\n/**\r\n * Constructs a new oneof.\r\n * @classdesc Reflected oneof.\r\n * @extends ReflectionObject\r\n * @constructor\r\n * @param {string} name Oneof name\r\n * @param {string[]} [fieldNames] Field names\r\n * @param {Object} [options] Declared options\r\n */\r\nfunction OneOf(name, fieldNames, options) {\r\n if (!Array.isArray(fieldNames)) {\r\n options = fieldNames;\r\n fieldNames = undefined;\r\n }\r\n ReflectionObject.call(this, name, options);\r\n if (fieldNames && !Array.isArray(fieldNames))\r\n throw _TypeError(\"fieldNames\", \"an Array\");\r\n\r\n /**\r\n * Field names that belong to this oneof.\r\n * @type {Array.}\r\n */\r\n this.oneof = fieldNames || []; // toJSON, marker\r\n\r\n /**\r\n * Fields that belong to this oneof and are possibly not yet added to its parent.\r\n * @type {Array.}\r\n * @private\r\n */\r\n this._fields = [];\r\n}\r\n\r\n/**\r\n * Tests if the specified JSON object describes a oneof.\r\n * @param {*} json JSON object\r\n * @returns {boolean} `true` if the object describes a oneof\r\n */\r\nOneOf.testJSON = function testJSON(json) {\r\n return Boolean(json.oneof);\r\n};\r\n\r\n/**\r\n * Constructs a oneof from JSON.\r\n * @param {string} name Oneof name\r\n * @param {Object} json JSON object\r\n * @returns {MapField} Created oneof\r\n * @throws {TypeError} If arguments are invalid\r\n */\r\nOneOf.fromJSON = function fromJSON(name, json) {\r\n return new OneOf(name, json.oneof, json.options);\r\n};\r\n\r\n/**\r\n * @override\r\n */\r\nOneOfPrototype.toJSON = function toJSON() {\r\n return {\r\n oneof : this.oneof,\r\n options : this.options\r\n };\r\n};\r\n\r\n/**\r\n * Adds the fields of the specified oneof to the parent if not already done so.\r\n * @param {OneOf} oneof The oneof\r\n * @returns {undefined}\r\n * @inner\r\n * @ignore\r\n */\r\nfunction addFieldsToParent(oneof) {\r\n if (oneof.parent)\r\n oneof._fields.forEach(function(field) {\r\n if (!field.parent)\r\n oneof.parent.add(field);\r\n });\r\n}\r\n\r\n/**\r\n * Adds a field to this oneof.\r\n * @param {Field} field Field to add\r\n * @returns {OneOf} `this`\r\n */\r\nOneOfPrototype.add = function add(field) {\r\n if (!(field instanceof Field))\r\n throw _TypeError(\"field\", \"a Field\");\r\n if (field.parent)\r\n field.parent.remove(field);\r\n this.oneof.push(field.name);\r\n this._fields.push(field);\r\n field.partOf = this; // field.parent remains null\r\n addFieldsToParent(this);\r\n return this;\r\n};\r\n\r\n/**\r\n * Removes a field from this oneof.\r\n * @param {Field} field Field to remove\r\n * @returns {OneOf} `this`\r\n */\r\nOneOfPrototype.remove = function remove(field) {\r\n if (!(field instanceof Field))\r\n throw _TypeError(\"field\", \"a Field\");\r\n var index = this._fields.indexOf(field);\r\n if (index < 0)\r\n throw Error(field + \" is not a member of \" + this);\r\n this._fields.splice(index, 1);\r\n index = this.oneof.indexOf(field.name);\r\n if (index > -1)\r\n this.oneof.splice(index, 1);\r\n if (field.parent)\r\n field.parent.remove(field);\r\n field.partOf = null;\r\n return this;\r\n};\r\n\r\n/**\r\n * @override\r\n */\r\nOneOfPrototype.onAdd = function onAdd(parent) {\r\n ReflectionObject.prototype.onAdd.call(this, parent);\r\n addFieldsToParent(this);\r\n};\r\n\r\n/**\r\n * @override\r\n */\r\nOneOfPrototype.onRemove = function onRemove(parent) {\r\n this._fields.forEach(function(field) {\r\n if (field.parent)\r\n field.parent.remove(field);\r\n });\r\n ReflectionObject.prototype.onRemove.call(this, parent);\r\n};\r\n","\"use strict\";\r\nmodule.exports = parse;\r\n\r\nvar tokenize = require(18),\r\n Root = require(16),\r\n Type = require(19),\r\n Field = require(6),\r\n MapField = require(8),\r\n OneOf = require(12),\r\n Enum = require(5),\r\n Service = require(17),\r\n Method = require(9),\r\n types = require(20);\r\n\r\nvar nameRe = /^[a-zA-Z_][a-zA-Z_0-9]*$/,\r\n typeRefRe = /^(?:\\.?[a-zA-Z_][a-zA-Z_0-9]*)+$/,\r\n fqTypeRefRe = /^(?:\\.[a-zA-Z][a-zA-Z_0-9]*)+$/;\r\n\r\nfunction lower(token) {\r\n return token === null ? null : token.toLowerCase();\r\n}\r\n\r\nfunction camelCase(name) {\r\n return name.substring(0,1)\r\n + name.substring(1)\r\n .replace(/_([a-z])(?=[a-z]|$)/g, function($0, $1) { return $1.toUpperCase(); });\r\n}\r\n\r\nvar s_required = \"required\",\r\n s_repeated = \"repeated\",\r\n s_optional = \"optional\",\r\n s_option = \"option\",\r\n s_name = \"name\",\r\n s_type = \"type\";\r\nvar s_open = \"{\",\r\n s_close = \"}\",\r\n s_bopen = '(',\r\n s_bclose = ')',\r\n s_semi = \";\",\r\n s_dq = '\"',\r\n s_sq = \"'\";\r\n\r\n/**\r\n * Result object returned from {@link parse}.\r\n * @typedef ParserResult\r\n * @type {Object}\r\n * @property {string|undefined} package Package name, if declared\r\n * @property {string[]|undefined} imports Imports, if any\r\n * @property {string[]|undefined} weakImports Weak imports, if any\r\n * @property {string|undefined} syntax Syntax, if specified (either `\"proto2\"` or `\"proto3\"`)\r\n * @property {Root} root Populated root instance\r\n */\r\n\r\n/**\r\n * Parses the given .proto source and returns an object with the parsed contents.\r\n * @param {string} source Source contents\r\n * @param {Root} [root] Root to populate\r\n * @returns {ParserResult} Parser result\r\n */\r\nfunction parse(source, root) {\r\n /* eslint-disable default-case, callback-return */\r\n if (!root)\r\n root = new Root();\r\n\r\n var tn = tokenize(source),\r\n next = tn.next,\r\n push = tn.push,\r\n peek = tn.peek,\r\n skip = tn.skip;\r\n\r\n var head = true,\r\n pkg,\r\n imports,\r\n weakImports,\r\n syntax,\r\n isProto3 = false;\r\n\r\n if (!root)\r\n root = new Root();\r\n\r\n var ptr = root;\r\n\r\n function illegal(token, name) {\r\n return Error(\"illegal \" + (name || \"token\") + \" '\" + token + \"' (line \" + tn.line() + s_bclose);\r\n }\r\n\r\n function readString() {\r\n var values = [],\r\n token;\r\n do {\r\n if ((token = next()) !== s_dq && token !== s_sq)\r\n throw illegal(token);\r\n values.push(next());\r\n skip(token);\r\n token = peek();\r\n } while (token === s_dq || token === s_sq);\r\n return values.join('');\r\n }\r\n\r\n function readValue(acceptTypeRef) {\r\n var token = next();\r\n switch (lower(token)) {\r\n case s_sq:\r\n case s_dq:\r\n push(token);\r\n return readString();\r\n case \"true\":\r\n return true;\r\n case \"false\":\r\n return false;\r\n }\r\n try {\r\n return parseNumber(token);\r\n } catch (e) {\r\n if (acceptTypeRef && typeRefRe.test(token))\r\n return token;\r\n throw illegal(token, \"value\");\r\n }\r\n }\r\n\r\n function readRange() {\r\n var start = parseId(next());\r\n var end = start;\r\n if (skip(\"to\", true))\r\n end = parseId(next());\r\n skip(s_semi);\r\n return [ start, end ];\r\n }\r\n\r\n function parseNumber(token) {\r\n var sign = 1;\r\n if (token.charAt(0) === '-') {\r\n sign = -1;\r\n token = token.substring(1);\r\n }\r\n var tokenLower = lower(token);\r\n switch (tokenLower) {\r\n case \"inf\": return sign * Infinity;\r\n case \"nan\": return NaN;\r\n case \"0\": return 0;\r\n }\r\n if (/^[1-9][0-9]*$/.test(token))\r\n return sign * parseInt(token, 10);\r\n if (/^0[x][0-9a-f]+$/.test(tokenLower))\r\n return sign * parseInt(token, 16);\r\n if (/^0[0-7]+$/.test(token))\r\n return sign * parseInt(token, 8);\r\n if (/^(?!e)[0-9]*(?:\\.[0-9]*)?(?:[e][+-]?[0-9]+)?$/.test(tokenLower))\r\n return sign * parseFloat(token);\r\n throw illegal(token, 'number');\r\n }\r\n\r\n function parseId(token, acceptNegative) {\r\n var tokenLower = lower(token);\r\n switch (tokenLower) {\r\n case \"min\": return 1;\r\n case \"max\": return 0x1FFFFFFF;\r\n case \"0\": return 0;\r\n }\r\n if (token.charAt(0) === '-' && !acceptNegative)\r\n throw illegal(token, \"id\");\r\n if (/^-?[1-9][0-9]*$/.test(token))\r\n return parseInt(token, 10);\r\n if (/^-?0[x][0-9a-f]+$/.test(tokenLower))\r\n return parseInt(token, 16);\r\n if (/^-?0[0-7]+$/.test(token))\r\n return parseInt(token, 8);\r\n throw illegal(token, \"id\");\r\n }\r\n\r\n function parsePackage() {\r\n if (pkg !== undefined)\r\n throw illegal(\"package\");\r\n pkg = next();\r\n if (!typeRefRe.test(pkg))\r\n throw illegal(pkg, s_name);\r\n ptr = ptr.define(pkg);\r\n skip(s_semi);\r\n }\r\n\r\n function parseImport() {\r\n var token = peek();\r\n var whichImports;\r\n switch (token) {\r\n case \"weak\":\r\n whichImports = weakImports || (weakImports = []);\r\n next();\r\n break;\r\n case \"public\":\r\n next();\r\n // eslint-disable-line no-fallthrough\r\n default:\r\n whichImports = imports || (imports = []);\r\n break;\r\n }\r\n token = readString();\r\n skip(s_semi);\r\n whichImports.push(token);\r\n }\r\n\r\n function parseSyntax() {\r\n skip(\"=\");\r\n syntax = lower(readString());\r\n var p3;\r\n if ([ \"proto2\", p3 = \"proto3\" ].indexOf(syntax) < 0)\r\n throw illegal(syntax, \"syntax\");\r\n isProto3 = syntax === p3;\r\n skip(s_semi);\r\n }\r\n\r\n function parseCommon(parent, token) {\r\n switch (token) {\r\n\r\n case s_option:\r\n parseOption(parent, token);\r\n skip(s_semi);\r\n return true;\r\n\r\n case \"message\":\r\n parseType(parent, token);\r\n return true;\r\n\r\n case \"enum\":\r\n parseEnum(parent, token);\r\n return true;\r\n\r\n case \"service\":\r\n parseService(parent, token);\r\n return true;\r\n\r\n case \"extend\":\r\n parseExtension(parent, token);\r\n return true;\r\n }\r\n return false;\r\n }\r\n\r\n function parseType(parent, token) {\r\n var name = next();\r\n if (!nameRe.test(name))\r\n throw illegal(name, \"type name\");\r\n var type = new Type(name);\r\n if (skip(s_open, true)) {\r\n while ((token = next()) !== s_close) {\r\n var tokenLower = lower(token);\r\n if (parseCommon(type, token))\r\n continue;\r\n switch (tokenLower) {\r\n case \"map\":\r\n parseMapField(type, tokenLower);\r\n break;\r\n case s_required:\r\n case s_optional:\r\n case s_repeated:\r\n parseField(type, tokenLower);\r\n break;\r\n case \"oneof\":\r\n parseOneOf(type, tokenLower);\r\n break;\r\n case \"extensions\":\r\n (type.extensions || (type.extensions = [])).push(readRange(type, tokenLower));\r\n break;\r\n case \"reserved\":\r\n (type.reserved || (type.reserved = [])).push(readRange(type, tokenLower));\r\n break;\r\n default:\r\n if (!isProto3 || !typeRefRe.test(token))\r\n throw illegal(token);\r\n push(token);\r\n parseField(type, s_optional);\r\n break;\r\n }\r\n }\r\n skip(s_semi, true);\r\n } else\r\n skip(s_semi);\r\n parent.add(type);\r\n }\r\n\r\n function parseField(parent, rule, extend) {\r\n var type = next();\r\n if (!typeRefRe.test(type))\r\n throw illegal(type, s_type);\r\n var name = next();\r\n if (!nameRe.test(name))\r\n throw illegal(name, s_name);\r\n name = camelCase(name);\r\n skip(\"=\");\r\n var id = parseId(next());\r\n var field = parseInlineOptions(new Field(name, id, type, rule, extend));\r\n if (field.repeated)\r\n field.setOption(\"packed\", isProto3, /* ifNotSet */ true);\r\n parent.add(field);\r\n }\r\n\r\n function parseMapField(parent) {\r\n skip(\"<\");\r\n var keyType = next();\r\n if (types.mapKey[keyType] === undefined)\r\n throw illegal(keyType, s_type);\r\n skip(\",\");\r\n var valueType = next();\r\n if (!typeRefRe.test(valueType))\r\n throw illegal(valueType, s_type);\r\n skip(\">\");\r\n var name = next();\r\n if (!nameRe.test(name))\r\n throw illegal(name, s_name);\r\n name = camelCase(name);\r\n skip(\"=\");\r\n var id = parseId(next());\r\n var field = parseInlineOptions(new MapField(name, id, keyType, valueType));\r\n parent.add(field);\r\n }\r\n\r\n function parseOneOf(parent, token) {\r\n var name = next();\r\n if (!nameRe.test(name))\r\n throw illegal(name, s_name);\r\n name = camelCase(name);\r\n var oneof = new OneOf(name);\r\n if (skip(s_open, true)) {\r\n while ((token = next()) !== s_close) {\r\n if (token === s_option) {\r\n parseOption(oneof, token);\r\n skip(s_semi);\r\n } else {\r\n push(token);\r\n parseField(oneof, s_optional);\r\n }\r\n }\r\n skip(s_semi, true);\r\n } else\r\n skip(s_semi);\r\n parent.add(oneof);\r\n }\r\n\r\n function parseEnum(parent, token) {\r\n var name = next();\r\n if (!nameRe.test(name))\r\n throw illegal(name, s_name);\r\n var values = {};\r\n var enm = new Enum(name, values);\r\n if (skip(s_open, true)) {\r\n while ((token = next()) !== s_close) {\r\n if (lower(token) === s_option)\r\n parseOption(enm);\r\n else\r\n parseEnumField(enm, token);\r\n }\r\n skip(s_semi, true);\r\n } else\r\n skip(s_semi);\r\n parent.add(enm);\r\n }\r\n\r\n function parseEnumField(parent, token) {\r\n if (!nameRe.test(token))\r\n throw illegal(token, s_name);\r\n var name = token;\r\n skip(\"=\");\r\n var value = parseId(next(), true);\r\n parseInlineOptions(parent.values[name] = new Number(value)); // eslint-disable-line no-new-wrappers\r\n }\r\n\r\n function parseOption(parent, token) {\r\n var custom = skip(s_bopen, true);\r\n var name = next();\r\n if (!typeRefRe.test(name))\r\n throw illegal(name, s_name);\r\n if (custom) {\r\n skip(s_bclose);\r\n name = s_bopen + name + s_bclose;\r\n token = peek();\r\n if (fqTypeRefRe.test(token)) {\r\n name += token;\r\n next();\r\n }\r\n }\r\n skip(\"=\");\r\n parseOptionValue(parent, name);\r\n }\r\n\r\n function parseOptionValue(parent, name) {\r\n if (skip(s_open, true)) {\r\n while ((token = next()) !== s_close) {\r\n if (!nameRe.test(token))\r\n throw illegal(token, s_name);\r\n name = name + \".\" + token;\r\n if (skip(\":\", true))\r\n setOption(parent, name, readValue(true));\r\n else\r\n parseOptionValue(parent, name);\r\n }\r\n skip(s_semi, true);\r\n } else\r\n setOption(parent, name, readValue(true));\r\n // Does not enforce a delimiter to be universal\r\n }\r\n\r\n function setOption(parent, name, value) {\r\n if (parent.setOption)\r\n parent.setOption(name, value);\r\n else\r\n parent[name] = value;\r\n }\r\n\r\n function parseInlineOptions(parent) {\r\n if (skip(\"[\", true)) {\r\n do {\r\n parseOption(parent, s_option);\r\n } while (skip(\",\", true));\r\n skip(\"]\");\r\n }\r\n skip(s_semi);\r\n return parent;\r\n }\r\n\r\n function parseService(parent, token) {\r\n token = next();\r\n if (!nameRe.test(token))\r\n throw illegal(token, \"service name\");\r\n var name = token;\r\n var service = new Service(name);\r\n if (skip(s_open, true)) {\r\n while ((token = next()) !== s_close) {\r\n var tokenLower = lower(token);\r\n switch (tokenLower) {\r\n case s_option:\r\n parseOption(service, tokenLower);\r\n skip(s_semi);\r\n break;\r\n case \"rpc\":\r\n parseMethod(service, tokenLower);\r\n break;\r\n default:\r\n throw illegal(token);\r\n }\r\n }\r\n skip(s_semi, true);\r\n } else\r\n skip(s_semi);\r\n parent.add(service);\r\n }\r\n\r\n function parseMethod(parent, token) {\r\n var type = token;\r\n var name = next();\r\n if (!nameRe.test(name))\r\n throw illegal(name, s_name);\r\n var requestType, requestStream,\r\n responseType, responseStream;\r\n skip(s_bopen);\r\n var st;\r\n if (skip(st = \"stream\", true))\r\n requestStream = true;\r\n if (!typeRefRe.test(token = next()))\r\n throw illegal(token);\r\n requestType = token;\r\n skip(s_bclose); skip(\"returns\"); skip(s_bopen);\r\n if (skip(st, true))\r\n responseStream = true;\r\n if (!typeRefRe.test(token = next()))\r\n throw illegal(token);\r\n responseType = token;\r\n skip(s_bclose);\r\n var method = new Method(name, type, requestType, responseType, requestStream, responseStream);\r\n if (skip(s_open, true)) {\r\n while ((token = next()) !== s_close) {\r\n var tokenLower = lower(token);\r\n switch (tokenLower) {\r\n case s_option:\r\n parseOption(method, tokenLower);\r\n skip(s_semi);\r\n break;\r\n default:\r\n throw illegal(token);\r\n }\r\n }\r\n skip(s_semi, true);\r\n } else\r\n skip(s_semi);\r\n parent.add(method);\r\n }\r\n\r\n function parseExtension(parent, token) {\r\n var reference = next();\r\n if (!typeRefRe.test(reference))\r\n throw illegal(reference, \"reference\");\r\n if (skip(s_open, true)) {\r\n while ((token = next()) !== s_close) {\r\n var tokenLower = lower(token);\r\n switch (tokenLower) {\r\n case s_required:\r\n case s_repeated:\r\n case s_optional:\r\n parseField(parent, tokenLower, reference);\r\n break;\r\n default:\r\n if (!isProto3 || !typeRefRe.test(token))\r\n throw illegal(token);\r\n push(token);\r\n parseField(parent, s_optional, reference);\r\n break;\r\n }\r\n }\r\n skip(s_semi, true);\r\n } else\r\n skip(s_semi);\r\n }\r\n\r\n var token;\r\n while ((token = next()) !== null) {\r\n var tokenLower = lower(token);\r\n switch (tokenLower) {\r\n\r\n case \"package\":\r\n if (!head)\r\n throw illegal(token);\r\n parsePackage();\r\n break;\r\n\r\n case \"import\":\r\n if (!head)\r\n throw illegal(token);\r\n parseImport();\r\n break;\r\n\r\n case \"syntax\":\r\n if (!head)\r\n throw illegal(token);\r\n parseSyntax();\r\n break;\r\n\r\n case s_option:\r\n if (!head)\r\n throw illegal(token);\r\n parseOption(ptr, token);\r\n skip(s_semi);\r\n break;\r\n\r\n default:\r\n if (parseCommon(ptr, token)) {\r\n head = false;\r\n continue;\r\n }\r\n throw illegal(token);\r\n }\r\n }\r\n\r\n return {\r\n 'package' : pkg,\r\n 'imports' : imports,\r\n 'weakImports' : weakImports,\r\n 'syntax' : syntax,\r\n 'root' : root\r\n };\r\n}\r\n","\"use strict\";\r\nmodule.exports = Prototype;\r\n\r\n/**\r\n * Options passed to the {@link Prototype|prototype constructor}, modifying its behavior.\r\n * @typedef PrototypeOptions\r\n * @type {Object}\r\n * @property {boolean} [fieldsOnly=false] Sets only properties that reference a field\r\n */\r\n\r\n/**\r\n * Constructs a new prototype.\r\n * This method should be called from your custom constructors, i.e. `Prototype.call(this, properties)`.\r\n * @classdesc Runtime message prototype ready to be extended by custom classes or generated code.\r\n * @constructor\r\n * @param {Object.} [properties] Properties to set\r\n * @param {PrototypeOptions} [options] Prototype options\r\n * @abstract\r\n * @see {@link inherits}\r\n * @see {@link Class}\r\n */\r\nfunction Prototype(properties, options) {\r\n if (properties) {\r\n var any = !(options && options.fieldsOnly),\r\n fields = this.constructor.$type.fields,\r\n keys = Object.keys(properties);\r\n for (var i = 0; i < keys.length; ++i)\r\n if (fields[keys[i]] || any)\r\n this[keys[i]] = properties[keys[i]];\r\n }\r\n}\r\n\r\n/**\r\n * Converts a runtime message to a JSON object.\r\n * @param {Object.} [options] Conversion options\r\n * @param {boolean} [options.fieldsOnly=false] Converts only properties that reference a field\r\n * @param {Function} [options.long] Long conversion type. Only relevant with a long library.\r\n * Valid values are `String` and `Number` (the global types).\r\n * Defaults to a possibly unsafe number without, and a `Long` with a long library.\r\n * @param {Function} [options.enum=Number] Enum value conversion type.\r\n * Valid values are `String` and `Number` (the global types).\r\n * Defaults to the numeric ids.\r\n * @returns {Object.} JSON object\r\n */\r\nPrototype.prototype.asJSON = function asJSON(options) {\r\n var any = !(options && options.fieldsOnly),\r\n fields = this.constructor.$type.fields,\r\n json = {};\r\n var keys = Object.keys(this);\r\n for (var i = 0, key; i < keys.length; ++i) {\r\n var field = fields[key = keys[i]],\r\n value = this[key];\r\n if (field) {\r\n if (field.repeated) {\r\n if (value && value.length) {\r\n var array = new Array(value.length);\r\n for (var j = 0, l = value.length; j < l; ++j)\r\n array[j] = field.jsonConvert(value[j], options);\r\n json[key] = array;\r\n }\r\n } else\r\n json[key] = field.jsonConvert(value, options);\r\n } else if (any)\r\n json[key] = value;\r\n }\r\n return json;\r\n};\r\n","\"use strict\";\r\nmodule.exports = Reader;\r\n\r\nReader.BufferReader = BufferReader;\r\n\r\nvar util = require(21),\r\n ieee754 = require(1);\r\nvar LongBits = util.LongBits,\r\n Long = util.Long;\r\n\r\nfunction indexOutOfRange(reader, writeLength) {\r\n return RangeError(\"index out of range: \" + reader.pos + \" + \" + (writeLength || 1) + \" > \" + reader.len);\r\n}\r\n\r\n/**\r\n * Constructs a new reader using the specified buffer.\r\n * When called as a function, returns an appropriate reader for the specified buffer.\r\n * @classdesc Wire format reader using `Uint8Array` if available, otherwise `Array`.\r\n * @constructor\r\n * @param {number[]} buffer Buffer to read from\r\n */\r\nfunction Reader(buffer) {\r\n if (!(this instanceof Reader))\r\n return util.Buffer && (!buffer || util.Buffer.isBuffer(buffer)) && new BufferReader(buffer) || new Reader(buffer);\r\n\r\n /**\r\n * Read buffer.\r\n * @type {number[]}\r\n */\r\n this.buf = buffer;\r\n\r\n /**\r\n * Read buffer position.\r\n * @type {number}\r\n */\r\n this.pos = 0;\r\n\r\n /**\r\n * Read buffer length.\r\n * @type {number}\r\n */\r\n this.len = buffer.length;\r\n}\r\n\r\n/** @alias Reader.prototype */\r\nvar ReaderPrototype = Reader.prototype;\r\n\r\nvar ArrayImpl = typeof Uint8Array !== 'undefined' ? Uint8Array : Array;\r\nReaderPrototype._slice = ArrayImpl.prototype.slice || ArrayImpl.prototype.subarray;\r\n\r\n/**\r\n * Tag read.\r\n * @constructor\r\n * @param {number} id Field id\r\n * @param {number} wireType Wire type\r\n * @ignore\r\n */\r\nfunction Tag(id, wireType) {\r\n this.id = id;\r\n this.wireType = wireType;\r\n}\r\n\r\n/**\r\n * Reads a tag.\r\n * @returns {{id: number, wireType: number}} Field id and wire type\r\n */\r\nReaderPrototype.tag = function read_tag() {\r\n if (this.pos >= this.len)\r\n throw indexOutOfRange(this);\r\n return new Tag(this.buf[this.pos] >>> 3, this.buf[this.pos++] & 7);\r\n};\r\n\r\n/**\r\n * Reads a varint as a signed 32 bit value.\r\n * @returns {number} Value read\r\n */\r\nReaderPrototype.int32 = function read_int32() {\r\n var value = 0,\r\n shift = 0,\r\n octet = 0;\r\n do {\r\n if (this.pos >= this.len)\r\n throw indexOutOfRange(this);\r\n octet = this.buf[this.pos++];\r\n if (shift < 32)\r\n value |= (octet & 127) << shift;\r\n shift += 7;\r\n } while (octet & 128);\r\n return value;\r\n};\r\n\r\n/**\r\n * Reads a varint as an unsigned 32 bit value.\r\n * @returns {number} Value read\r\n */\r\nReaderPrototype.uint32 = function read_uint32() {\r\n return this.int32() >>> 0;\r\n};\r\n\r\n/**\r\n * Reads a zig-zag encoded varint as a signed 32 bit value.\r\n * @returns {number} Value read\r\n */\r\nReaderPrototype.sint32 = function read_sint32() {\r\n var value = this.int32();\r\n return value >>> 1 ^ -(value & 1);\r\n};\r\n\r\n/**\r\n * Reads a possibly 64 bits varint.\r\n * @returns {LongBits} Long bits\r\n * @this {Reader}\r\n * @inner\r\n * @ignore\r\n */\r\nfunction readLongVarint() {\r\n var lo = 0, hi = 0,\r\n i = 0, b = 0;\r\n if (this.len - this.pos > 9) { // fast route\r\n for (i = 0; i < 4; ++i) {\r\n b = this.buf[this.pos++];\r\n lo |= (b & 127) << i * 7;\r\n if (b < 128)\r\n return new LongBits(lo >>> 0, hi >>> 0);\r\n }\r\n b = this.buf[this.pos++];\r\n lo |= (b & 127) << 28;\r\n hi |= (b & 127) >> 4;\r\n if (b < 128)\r\n return new LongBits(lo >>> 0, hi >>> 0);\r\n for (i = 0; i < 5; ++i) {\r\n b = this.buf[this.pos++];\r\n hi |= (b & 127) << i * 7 + 3;\r\n if (b < 128)\r\n return new LongBits(lo >>> 0, hi >>> 0);\r\n }\r\n } else {\r\n for (i = 0; i < 4; ++i) {\r\n if (this.pos >= this.len)\r\n throw indexOutOfRange(this);\r\n b = this.buf[this.pos++];\r\n lo |= (b & 127) << i * 7;\r\n if (b < 128)\r\n return new LongBits(lo >>> 0, hi >>> 0);\r\n }\r\n if (this.pos >= this.len)\r\n throw indexOutOfRange(this);\r\n b = this.buf[this.pos++];\r\n lo |= (b & 127) << 28;\r\n hi |= (b & 127) >> 4;\r\n if (b < 128)\r\n return new LongBits(lo >>> 0, hi >>> 0);\r\n for (i = 0; i < 5; ++i) {\r\n if (this.pos >= this.len)\r\n throw indexOutOfRange(this);\r\n b = this.buf[this.pos++];\r\n hi |= (b & 127) << i * 7 + 3;\r\n if (b < 128)\r\n return new LongBits(lo >>> 0, hi >>> 0);\r\n }\r\n }\r\n throw Error(\"invalid varint encoding\");\r\n}\r\n\r\nfunction read_int64_long() {\r\n return readLongVarint.call(this).toLong(); // eslint-disable-line no-invalid-this\r\n}\r\n\r\nfunction read_int64_number() {\r\n return readLongVarint.call(this).toNumber(); // eslint-disable-line no-invalid-this\r\n}\r\n\r\n/**\r\n * Reads a varint as a signed 64 bit value.\r\n * @function\r\n * @returns {Long|number} Value read\r\n */\r\nReaderPrototype.int64 = Long && read_int64_long || read_int64_number;\r\n\r\nfunction read_uint64_long() {\r\n return readLongVarint.call(this).toLong(true); // eslint-disable-line no-invalid-this\r\n}\r\n\r\nfunction read_uint64_number() {\r\n return readLongVarint.call(this).toNumber(true); // eslint-disable-line no-invalid-this\r\n}\r\n\r\n/**\r\n * Reads a varint as an unsigned 64 bit value.\r\n * @function\r\n * @returns {Long|number} Value read\r\n */\r\nReaderPrototype.uint64 = Long && read_uint64_long || read_uint64_number;\r\n\r\nfunction read_sint64_long() {\r\n return readLongVarint.call(this).zzDecode().toLong(); // eslint-disable-line no-invalid-this\r\n}\r\n\r\nfunction read_sint64_number() {\r\n return readLongVarint.call(this).zzDecode().toNumber(); // eslint-disable-line no-invalid-this\r\n}\r\n\r\n/**\r\n * Reads a zig-zag encoded varint as a signed 64 bit value.\r\n * @function\r\n * @returns {Long|number} Value read\r\n */\r\nReaderPrototype.sint64 = Long && read_sint64_long || read_sint64_number;\r\n\r\n/**\r\n * Reads a varint as a boolean.\r\n * @returns {boolean} Value read\r\n */\r\nReaderPrototype.bool = function read_bool() {\r\n return this.int32() !== 0;\r\n};\r\n\r\n/**\r\n * Reads fixed 32 bits as a number.\r\n * @returns {number} Value read\r\n */\r\nReaderPrototype.fixed32 = function read_fixed32() {\r\n if (this.pos + 4 > this.len)\r\n throw indexOutOfRange(this, 4);\r\n this.pos += 4;\r\n return this.buf[this.pos - 4]\r\n | this.buf[this.pos - 3] << 8\r\n | this.buf[this.pos - 2] << 16\r\n | this.buf[this.pos - 1] << 24;\r\n};\r\n\r\n/**\r\n * Reads zig-zag encoded fixed 32 bits as a number.\r\n * @returns {number} Value read\r\n */\r\nReaderPrototype.sfixed32 = function read_sfixed32() {\r\n var value = this.fixed32();\r\n return value >>> 1 ^ -(value & 1);\r\n};\r\n\r\n/**\r\n * Reads a 64 bit value.\r\n * @returns {LongBits} Long bits\r\n * @this {Reader}\r\n * @inner \r\n * @ignore\r\n */\r\nfunction readLongFixed() {\r\n if (this.pos + 8 > this.len)\r\n throw indexOutOfRange(this, 8);\r\n return new LongBits(\r\n ( this.buf[this.pos++]\r\n | this.buf[this.pos++] << 8\r\n | this.buf[this.pos++] << 16\r\n | this.buf[this.pos++] << 24 ) >>> 0\r\n ,\r\n ( this.buf[this.pos++]\r\n | this.buf[this.pos++] << 8\r\n | this.buf[this.pos++] << 16\r\n | this.buf[this.pos++] << 24 ) >>> 0\r\n );\r\n}\r\n\r\nfunction read_fixed64_long() {\r\n return readLongFixed.call(this).toLong(true); // eslint-disable-line no-invalid-this\r\n}\r\n\r\nfunction read_fixed64_number() {\r\n return readLongFixed.call(this).toNumber(true); // eslint-disable-line no-invalid-this\r\n}\r\n\r\n/**\r\n * Reads fixed 64 bits.\r\n * @function\r\n * @returns {Long|number} Value read\r\n */\r\nReaderPrototype.fixed64 = Long && read_fixed64_long || read_fixed64_number;\r\n\r\nfunction read_sfixed64_long() {\r\n return readLongFixed.call(this).zzDecode().toLong(); // eslint-disable-line no-invalid-this\r\n}\r\n\r\nfunction read_sfixed64_number() {\r\n return readLongFixed.call(this).zzDecode().toNumber(); // eslint-disable-line no-invalid-this\r\n}\r\n\r\n/**\r\n * Reads zig-zag encoded fixed 64 bits.\r\n * @returns {Long|number} Value read\r\n */\r\nReaderPrototype.sfixed64 = Long && read_sfixed64_long || read_sfixed64_number;\r\n\r\n/**\r\n * Reads a float (32 bit) as a number.\r\n * @function\r\n * @returns {number} Value read\r\n */\r\nReaderPrototype.float = function read_float() {\r\n if (this.pos + 4 > this.len)\r\n throw indexOutOfRange(this, 4);\r\n var value = ieee754.read(this.buf, this.pos, false, 23, 4);\r\n this.pos += 4;\r\n return value;\r\n};\r\n\r\n/**\r\n * Reads a double (64 bit float) as a number.\r\n * @function\r\n * @returns {number} Value read\r\n */\r\nReaderPrototype.double = function read_double() {\r\n if (this.pos + 8 > this.len)\r\n throw indexOutOfRange(this, 4);\r\n var value = ieee754.read(this.buf, this.pos, false, 52, 8);\r\n this.pos += 8;\r\n return value;\r\n};\r\n\r\n/**\r\n * Reads a sequence of bytes preceeded by its length as a varint.\r\n * @returns {number[]} Value read\r\n */\r\nReaderPrototype.bytes = function read_bytes() {\r\n var length = this.int32() >>> 0,\r\n start = this.pos,\r\n end = this.pos + length;\r\n if (end > this.len)\r\n throw indexOutOfRange(this, length);\r\n this.pos += length;\r\n return start === end // fix for IE 10/Win8 and others' subarray returning array of size 1\r\n ? new this.buf.constructor(0)\r\n : this._slice.call(this.buf, start, end);\r\n};\r\n\r\n/**\r\n * Reads a string preceeded by its byte length as a varint.\r\n * @returns {string} Value read\r\n */\r\nReaderPrototype.string = function read_string() {\r\n // ref: https://github.com/google/closure-library/blob/master/closure/goog/crypt/crypt.js\r\n var bytes = this.bytes(),\r\n len = bytes.length;\r\n if (len) {\r\n var out = new Array(len), p = 0, c = 0;\r\n while (p < len) {\r\n var c1 = bytes[p++];\r\n if (c1 < 128)\r\n out[c++] = c1;\r\n else if (c1 > 191 && c1 < 224)\r\n out[c++] = (c1 & 31) << 6 | bytes[p++] & 63;\r\n else if (c1 > 239 && c1 < 365) {\r\n var u = ((c1 & 7) << 18 | (bytes[p++] & 63) << 12 | (bytes[p++] & 63) << 6 | bytes[p++] & 63) - 0x10000;\r\n out[c++] = 0xD800 + (u >> 10);\r\n out[c++] = 0xDC00 + (u & 1023);\r\n } else\r\n out[c++] = (c1 & 15) << 12 | (bytes[p++] & 63) << 6 | bytes[p++] & 63;\r\n }\r\n return String.fromCharCode.apply(String, out.slice(0, c));\r\n }\r\n return \"\";\r\n};\r\n\r\n/**\r\n * Skips the specified number of bytes if specified, otherwise skips a varint.\r\n * @param {number} [length] Length if known, otherwise a varint is assumed\r\n * @returns {Reader} `this`\r\n */\r\nReaderPrototype.skip = function skip(length) {\r\n if (length === undefined) {\r\n do {\r\n if (this.pos >= this.len)\r\n throw indexOutOfRange(this);\r\n } while (this.buf[this.pos++] & 128);\r\n } else {\r\n if (this.pos + length > this.len)\r\n throw indexOutOfRange(this, length);\r\n this.pos += length;\r\n }\r\n return this;\r\n};\r\n\r\n/**\r\n * Skips the next element of the specified wire type.\r\n * @param {number} wireType Wire type received\r\n * @returns {Reader} `this`\r\n */\r\nReaderPrototype.skipType = function(wireType) {\r\n switch (wireType) {\r\n case 0:\r\n this.skip();\r\n break;\r\n case 1:\r\n this.skip(8);\r\n break;\r\n case 2:\r\n this.skip(this.uint32());\r\n break;\r\n case 3:\r\n do { // eslint-disable-line no-constant-condition\r\n var tag = this.tag();\r\n if (tag.wireType === 4)\r\n break;\r\n this.skipType(tag.wireType);\r\n } while (true);\r\n break;\r\n case 5:\r\n this.skip(4);\r\n break;\r\n default:\r\n throw Error(\"invalid wire type: \" + wireType);\r\n }\r\n return this;\r\n};\r\n\r\n/**\r\n * Resets this instance and frees all resources.\r\n * @param {number[]} [buffer] New buffer for a new sequence of read operations\r\n * @returns {Reader} `this`\r\n */\r\nReaderPrototype.reset = function reset(buffer) {\r\n if (buffer) {\r\n this.buf = buffer;\r\n this.len = buffer.length;\r\n } else {\r\n this.buf = null; // makes it throw\r\n this.len = 0;\r\n }\r\n this.pos = 0;\r\n return this;\r\n};\r\n\r\n/**\r\n * Finishes the current sequence of read operations, frees all resources and returns the remaining buffer.\r\n * @param {number[]} [buffer] New buffer for a new sequence of read operations\r\n * @returns {number[]} Finished buffer\r\n */\r\nReaderPrototype.finish = function finish(buffer) {\r\n var remain = this.pos\r\n ? this._slice.call(this.buf, this.pos)\r\n : this.buf;\r\n this.reset(buffer);\r\n return remain;\r\n};\r\n\r\n// One time function to initialize BufferReader with the now-known buffer implementation's slice method\r\nvar initBufferReader = function() {\r\n if (!util.Buffer)\r\n throw Error(\"Buffer is not supported\");\r\n BufferReaderPrototype._slice = util.Buffer.prototype.slice;\r\n initBufferReader = false;\r\n};\r\n\r\n/**\r\n * Constructs a new buffer reader.\r\n * @classdesc Wire format reader using node buffers.\r\n * @extends Reader\r\n * @constructor\r\n * @param {Buffer} buffer Buffer to read from\r\n */\r\nfunction BufferReader(buffer) {\r\n if (initBufferReader)\r\n initBufferReader();\r\n Reader.call(this, buffer);\r\n}\r\n\r\n/** @alias BufferReader.prototype */\r\nvar BufferReaderPrototype = BufferReader.prototype = Object.create(Reader.prototype);\r\n\r\nBufferReaderPrototype.constructor = BufferReader;\r\n\r\n/**\r\n * Reads a float (32 bit) as a number using node buffers.\r\n * @returns {number} Value read\r\n */\r\nBufferReaderPrototype.float = function read_float_buffer() {\r\n if (this.pos + 4 > this.len)\r\n throw indexOutOfRange(this, 4);\r\n var value = this.buf.readFloatLE(this.pos, true);\r\n this.pos += 4;\r\n return value;\r\n};\r\n\r\n/**\r\n * Reads a double (64 bit float) as a number using node buffers.\r\n * @returns {number} Value read\r\n */\r\nBufferReaderPrototype.double = function read_double_buffer() {\r\n if (this.pos + 8 > this.len)\r\n throw indexOutOfRange(this, 8);\r\n var value = this.buf.readDoubleLE(this.pos, true);\r\n this.pos += 8;\r\n return value;\r\n};\r\n\r\n/**\r\n * Reads a string.\r\n * @returns {string} Value read\r\n */\r\nBufferReaderPrototype.string = function read_string_buffer() {\r\n var length = this.int32() >>> 0,\r\n start = this.pos,\r\n end = this.pos + length;\r\n if (end > this.len)\r\n throw indexOutOfRange(this, length);\r\n this.pos += length;\r\n return this.buf.toString(\"utf8\", start, end);\r\n};\r\n\r\n/**\r\n * Finishes the current sequence of read operations using node buffers, frees all resources and returns the remaining buffer.\r\n * @param {Buffer} [buffer] New buffer for a new sequence of read operations\r\n * @returns {Buffer} Finished buffer\r\n */\r\nBufferReaderPrototype.finish = function finish_buffer(buffer) {\r\n var remain = this.pos ? this.buf.slice(this.pos) : this.buf;\r\n this.reset(buffer);\r\n return remain;\r\n};\r\n","\"use strict\";\r\nmodule.exports = Root;\r\n\r\nvar Namespace = require(10);\r\n/** @alias Root.prototype */\r\nvar RootPrototype = Namespace.extend(Root);\r\n\r\nvar Field = require(6),\r\n util = require(21),\r\n common = require(2);\r\n\r\n/**\r\n * Constructs a new root namespace.\r\n * @classdesc Root namespace wrapping all types, enums, services, sub-namespaces etc. that belong together.\r\n * @extends Namespace\r\n * @constructor\r\n * @param {Object} [options] Top level options\r\n */\r\nfunction Root(options) {\r\n Namespace.call(this, \"\", options);\r\n\r\n /**\r\n * Deferred extension fields.\r\n * @type {Field[]}\r\n */\r\n this.deferred = [];\r\n\r\n /**\r\n * Resolved file names of loaded files. \r\n * @type {string[]}\r\n */\r\n this.files = [];\r\n}\r\n\r\n/**\r\n * Loads a JSON definition into a root namespace.\r\n * @param {*} json JSON definition\r\n * @param {Root} [root] Root namespace, defaults to create a new one if omitted\r\n * @returns {Root} Root namespace\r\n */\r\nRoot.fromJSON = function fromJSON(json, root) {\r\n if (!root)\r\n root = new Root();\r\n return root.setOptions(json.options).addJSON(json.nested);\r\n};\r\n\r\n/**\r\n * Resolves the path of an imported file, relative to the importing origin.\r\n * This method exists so you can override it with your own logic in case your imports are scattered over multiple directories.\r\n * @function\r\n * @param {string} origin The file name of the importing file\r\n * @param {string} target The file name being imported\r\n * @returns {string} Resolved path to `target`\r\n */\r\nRootPrototype.resolvePath = util.resolvePath;\r\n\r\n/**\r\n * Loads one or multiple .proto or preprocessed .json files into this root namespace.\r\n * @param {string|string[]} filename Names of one or multiple files to load\r\n * @param {function(?Error, Root=)} [callback] Node-style callback function\r\n * @returns {Promise|undefined} A promise if `callback` has been omitted\r\n * @throws {TypeError} If arguments are invalid\r\n */\r\nRootPrototype.load = function load(filename, callback) {\r\n var self = this;\r\n if (!callback)\r\n return util.asPromise(load, self, filename);\r\n\r\n // Finishes loading by calling the callback (exactly once)\r\n function finish(err, root) {\r\n if (!callback)\r\n return;\r\n var cb = callback;\r\n callback = null;\r\n cb(err, root);\r\n }\r\n\r\n // Processes a single file\r\n function process(filename, source) {\r\n try {\r\n if (util.isString(source) && source.charAt(0) === \"{\")\r\n source = JSON.parse(source);\r\n if (!util.isString(source))\r\n self.setOptions(source.options).addJSON(source.nested);\r\n else {\r\n var parsed = require(13)(source, self);\r\n if (parsed.imports)\r\n parsed.imports.forEach(function(name) {\r\n fetch(self.resolvePath(filename, name));\r\n });\r\n if (parsed.weakImports)\r\n parsed.weakImports.forEach(function(name) {\r\n fetch(self.resolvePath(filename, name), true);\r\n });\r\n }\r\n } catch (err) {\r\n finish(err);\r\n return;\r\n }\r\n if (!queued)\r\n finish(null, self);\r\n }\r\n\r\n // Fetches a single file\r\n function fetch(filename, weak) {\r\n\r\n // Strip path if this file references a bundled definition\r\n var idx = filename.indexOf(\"google/protobuf/\");\r\n if (idx > -1) {\r\n var altname = filename.substring(idx);\r\n if (altname in common)\r\n filename = altname;\r\n }\r\n\r\n // Skip if already loaded\r\n if (self.files.indexOf(filename) > -1)\r\n return;\r\n self.files.push(filename);\r\n\r\n // Shortcut bundled definitions\r\n if (filename in common) {\r\n ++queued;\r\n setTimeout(function() {\r\n --queued;\r\n process(filename, common[filename]);\r\n });\r\n return;\r\n }\r\n\r\n // Otherwise fetch from disk or network\r\n ++queued;\r\n util.fetch(filename, function(err, source) {\r\n --queued;\r\n if (!callback)\r\n return; // terminated meanwhile\r\n if (err) {\r\n if (!weak)\r\n finish(err);\r\n return;\r\n }\r\n process(filename, source);\r\n });\r\n }\r\n var queued = 0;\r\n\r\n // Assembling the root namespace doesn't require working type\r\n // references anymore, so we can load everything in parallel\r\n if (util.isString(filename))\r\n filename = [ filename ];\r\n filename.forEach(function(filename) {\r\n fetch(self.resolvePath(\"\", filename));\r\n });\r\n\r\n if (!queued)\r\n finish(null);\r\n return undefined;\r\n};\r\n\r\n/**\r\n * Handles a deferred declaring extension field by creating a sister field to represent it within its extended type.\r\n * @param {Field} field Declaring extension field witin the declaring type\r\n * @returns {boolean} `true` if successfully added to the extended type, `false` otherwise\r\n * @inner\r\n * @ignore\r\n */\r\nfunction handleExtension(field) {\r\n var extendedType = field.parent.lookup(field.extend);\r\n if (extendedType) {\r\n var sisterField = new Field(field.getFullName(), field.id, field.type, field.rule, undefined, field.options);\r\n sisterField.declaringField = field;\r\n field.extensionField = sisterField;\r\n extendedType.add(sisterField);\r\n return true;\r\n }\r\n return false;\r\n}\r\n\r\n/**\r\n * Called when any object is added to this root or its sub-namespaces.\r\n * @param {ReflectionObject} object Object added\r\n * @returns {undefined}\r\n * @private\r\n */\r\nRootPrototype._handleAdd = function handleAdd(object) {\r\n // Try to handle any deferred extensions\r\n var newDeferred = this.deferred.slice();\r\n this.deferred = []; // because the loop calls handleAdd\r\n var i = 0;\r\n while (i < newDeferred.length)\r\n if (handleExtension(newDeferred[i]))\r\n newDeferred.splice(i, 1);\r\n else\r\n ++i;\r\n this.deferred = newDeferred;\r\n // Handle new declaring extension fields without a sister field yet\r\n if (object instanceof Field && object.extend !== undefined && !object.extensionField && !handleExtension(object) && this.deferred.indexOf(object) < 0)\r\n this.deferred.push(object);\r\n else if (object instanceof Namespace) {\r\n var nested = object.getNestedArray();\r\n for (i = 0; i < nested.length; ++i) // recurse into the namespace\r\n this._handleAdd(nested[i]);\r\n }\r\n};\r\n\r\n/**\r\n * Called when any object is removed from this root or its sub-namespaces.\r\n * @param {ReflectionObject} object Object removed\r\n * @returns {undefined}\r\n * @private\r\n */\r\nRootPrototype._handleRemove = function handleRemove(object) {\r\n if (object instanceof Field) {\r\n // If a deferred declaring extension field, cancel the extension\r\n if (object.extend !== undefined && !object.extensionField) {\r\n var index = this.deferred.indexOf(object);\r\n if (index > -1)\r\n this.deferred.splice(index, 1);\r\n }\r\n // If a declaring extension field with a sister field, remove its sister field\r\n if (object.extensionField) {\r\n object.extensionField.parent.remove(object.extensionField);\r\n object.extensionField = null;\r\n }\r\n } else if (object instanceof Namespace) {\r\n var nested = object.getNestedArray();\r\n for (var i = 0; i < nested.length; ++i) // recurse into the namespace\r\n this._handleRemove(nested[i]);\r\n }\r\n};\r\n\r\n/**\r\n * @override\r\n */\r\nRootPrototype.toString = function toString() {\r\n return this.constructor.name;\r\n};\r\n","\"use strict\";\r\nmodule.exports = Service;\r\n\r\nvar Namespace = require(10);\r\n/** @alias Namespace.prototype */\r\nvar NamespacePrototype = Namespace.prototype;\r\n/** @alias Service.prototype */\r\nvar ServicePrototype = Namespace.extend(Service);\r\n\r\nvar Method = require(9),\r\n util = require(21);\r\n\r\n/**\r\n * Constructs a new service.\r\n * @classdesc Reflected service.\r\n * @extends Namespace\r\n * @constructor\r\n * @param {string} name Service name\r\n * @param {Object.} [options] Service options\r\n * @throws {TypeError} If arguments are invalid\r\n */\r\nfunction Service(name, options) {\r\n Namespace.call(this, name, options);\r\n\r\n /**\r\n * Service methods.\r\n * @type {Object.}\r\n */\r\n this.methods = {}; // toJSON, marker\r\n\r\n /**\r\n * Cached methods as an array.\r\n * @type {?Method[]}\r\n * @private\r\n */\r\n this._methodsArray = null;\r\n}\r\n\r\nObject.defineProperties(ServicePrototype, {\r\n\r\n /**\r\n * Methods of this service as an array for iteration.\r\n * @name Service#methodsArray\r\n * @type {Method[]}\r\n * @readonly\r\n */\r\n methodsArray: {\r\n get: ServicePrototype.getMethodsArray = function getMethodsArray() {\r\n return this._methodsArray || (this._methodsArray = util.toArray(this.methods));\r\n }\r\n }\r\n\r\n});\r\n\r\nfunction clearCache(service) {\r\n service._methodsArray = null;\r\n return service;\r\n}\r\n\r\n/**\r\n * Tests if the specified JSON object describes a service.\r\n * @param {Object} json JSON object to test\r\n * @returns {boolean} `true` if the object describes a service\r\n */\r\nService.testJSON = function testJSON(json) {\r\n return Boolean(json && json.methods);\r\n};\r\n\r\n/**\r\n * Constructs a service from JSON.\r\n * @param {string} name Service name\r\n * @param {Object} json JSON object\r\n * @returns {Service} Created service\r\n * @throws {TypeError} If arguments are invalid\r\n */\r\nService.fromJSON = function fromJSON(name, json) {\r\n var service = new Service(name, json.options);\r\n if (json.methods)\r\n Object.keys(json.methods).forEach(function(methodName) {\r\n service.add(Method.fromJSON(methodName, json.methods[methodName]));\r\n });\r\n return service;\r\n};\r\n\r\n/**\r\n * @override\r\n */\r\nServicePrototype.toJSON = function toJSON() {\r\n var inherited = NamespacePrototype.toJSON.call(this);\r\n return {\r\n options : inherited && inherited.options || undefined,\r\n methods : Namespace.arrayToJSON(this.getMethodsArray()) || {},\r\n nested : inherited && inherited.nested || undefined\r\n };\r\n};\r\n\r\n/**\r\n * @override\r\n */\r\nServicePrototype.get = function get(name) {\r\n return NamespacePrototype.get.call(this, name) || this.methods[name] || null;\r\n};\r\n\r\n/**\r\n * @override\r\n */\r\nServicePrototype.resolveAll = function resolve() {\r\n var methods = this.getMethodsArray();\r\n for (var i = 0; i < methods.length; ++i)\r\n methods[i].resolve();\r\n return NamespacePrototype.resolve.call(this);\r\n};\r\n\r\n/**\r\n * @override\r\n */\r\nServicePrototype.add = function add(object) {\r\n if (this.get(object.name))\r\n throw Error(\"duplicate name '\" + object.name + '\" in ' + this);\r\n if (object instanceof Method) {\r\n this.methods[object.name] = object;\r\n object.parent = this;\r\n return clearCache(this);\r\n }\r\n return NamespacePrototype.add.call(this, object);\r\n};\r\n\r\n/**\r\n * @override\r\n */\r\nServicePrototype.remove = function remove(object) {\r\n if (object instanceof Method) {\r\n if (this.methods[object.name] !== object)\r\n throw Error(object + \" is not a member of \" + this);\r\n delete this.methods[object.name];\r\n object.parent = null;\r\n return clearCache(this);\r\n }\r\n return NamespacePrototype.remove.call(this, object);\r\n};\r\n","\"use strict\";\r\nmodule.exports = tokenize;\r\n\r\nvar delimRe = /[\\s{}=;:[\\],'\"()<>]/g,\r\n stringDoubleRe = /(?:\"([^\"\\\\]*(?:\\\\.[^\"\\\\]*)*)\")/g,\r\n stringSingleRe = /(?:'([^'\\\\]*(?:\\\\.[^'\\\\]*)*)')/g;\r\n\r\n/**\r\n * Handle object returned from {@link tokenize}.\r\n * @typedef {Object} TokenizerHandle\r\n * @property {function():number} line Gets the current line number\r\n * @property {function():?string} next Gets the next token and advances (`null` on eof)\r\n * @property {function():?string} peek Peeks for the next token (`null` on eof)\r\n * @property {function(string)} push Pushes a token back to the stack\r\n * @property {function(string, boolean=):boolean} skip Skips a token, returns its presence and advances or, if non-optional and not present, throws\r\n */\r\n\r\nvar s_nl = \"\\n\",\r\n s_sl = '/',\r\n s_as = '*';\r\n\r\nfunction unescape(str) {\r\n return str.replace(/\\\\(.?)/g, function($0, $1) {\r\n switch ($1) {\r\n case \"\\\\\":\r\n case \"\":\r\n return $1;\r\n case \"0\":\r\n return \"\\u0000\";\r\n default:\r\n return $1;\r\n }\r\n });\r\n}\r\n\r\n/**\r\n * Tokenizes the given .proto source and returns an object with useful utility functions.\r\n * @param {string} source Source contents\r\n * @returns {TokenizerHandle} Tokenizer handle\r\n */\r\nfunction tokenize(source) {\r\n /* eslint-disable default-case, callback-return */\r\n source = source.toString();\r\n \r\n var offset = 0,\r\n length = source.length,\r\n line = 1;\r\n \r\n var stack = [];\r\n\r\n var stringDelim = null;\r\n\r\n /**\r\n * Creates an error for illegal syntax.\r\n * @param {string} subject Subject\r\n * @returns {Error} Error created\r\n * @inner\r\n */\r\n function illegal(subject) {\r\n return Error(\"illegal \" + subject + \" (line \" + line + \")\");\r\n }\r\n\r\n /**\r\n * Reads a string till its end.\r\n * @returns {string} String read\r\n * @inner\r\n */\r\n function readString() {\r\n var re = stringDelim === '\"' ? stringDoubleRe : stringSingleRe;\r\n re.lastIndex = offset - 1;\r\n var match = re.exec(source);\r\n if (!match)\r\n throw illegal(\"string\");\r\n offset = re.lastIndex;\r\n push(stringDelim);\r\n stringDelim = null;\r\n return unescape(match[1]);\r\n }\r\n\r\n /**\r\n * Gets the character at `pos` within the source.\r\n * @param {number} pos Position\r\n * @returns {string} Character\r\n * @inner\r\n */\r\n function charAt(pos) {\r\n return source.charAt(pos);\r\n }\r\n\r\n /**\r\n * Obtains the next token.\r\n * @returns {?string} Next token or `null` on eof\r\n * @inner\r\n */\r\n function next() {\r\n if (stack.length > 0)\r\n return stack.shift();\r\n if (stringDelim)\r\n return readString();\r\n var repeat,\r\n prev,\r\n curr;\r\n do {\r\n if (offset === length)\r\n return null;\r\n repeat = false;\r\n while (/\\s/.test(curr = charAt(offset))) {\r\n if (curr === s_nl)\r\n ++line;\r\n if (++offset === length)\r\n return null;\r\n }\r\n if (charAt(offset) === s_sl) {\r\n if (++offset === length)\r\n throw illegal(\"comment\");\r\n if (charAt(offset) === s_sl) { // Line\r\n while (charAt(++offset) !== s_nl)\r\n if (offset === length)\r\n return null;\r\n ++offset;\r\n ++line;\r\n repeat = true;\r\n } else if ((curr = charAt(offset)) === s_as) { /* Block */\r\n do {\r\n if (curr === s_nl)\r\n ++line;\r\n if (++offset === length)\r\n return null;\r\n prev = curr;\r\n curr = charAt(offset);\r\n } while (prev !== s_as || curr !== s_sl);\r\n ++offset;\r\n repeat = true;\r\n } else\r\n return s_sl;\r\n }\r\n } while (repeat);\r\n\r\n if (offset === length)\r\n return null;\r\n var end = offset;\r\n delimRe.lastIndex = 0;\r\n var delim = delimRe.test(charAt(end++));\r\n if (!delim)\r\n while (end < length && !delimRe.test(charAt(end)))\r\n ++end;\r\n var token = source.substring(offset, offset = end);\r\n if (token === '\"' || token === \"'\")\r\n stringDelim = token;\r\n return token;\r\n }\r\n\r\n /**\r\n * Pushes a token back to the stack.\r\n * @param {string} token Token\r\n * @returns {undefined}\r\n * @inner\r\n */\r\n function push(token) {\r\n stack.push(token);\r\n }\r\n\r\n /**\r\n * Peeks for the next token.\r\n * @returns {?string} Token or `null` on eof\r\n * @inner\r\n */\r\n function peek() {\r\n if (!stack.length) {\r\n var token = next();\r\n if (token === null)\r\n return null;\r\n push(token);\r\n }\r\n return stack[0];\r\n }\r\n\r\n /**\r\n * Skips a token.\r\n * @param {string} expected Expected token\r\n * @param {boolean} [optional=false] Whether the token is optional\r\n * @returns {boolean} `true` when skipped, `false` if not\r\n * @throws {Error} When a required token is not present\r\n * @inner\r\n */\r\n function skip(expected, optional) {\r\n var actual = peek(),\r\n equals = actual === expected;\r\n if (equals) {\r\n next();\r\n return true;\r\n }\r\n if (!optional)\r\n throw illegal(\"token '\" + actual + \"', '\" + expected + \"' expected\");\r\n return false;\r\n }\r\n\r\n return {\r\n line: function() { return line; },\r\n next: next,\r\n peek: peek,\r\n push: push,\r\n skip: skip\r\n };\r\n /* eslint-enable default-case, callback-return */\r\n}","\"use strict\";\r\nmodule.exports = Type; \r\n\r\nvar Namespace = require(10);\r\n/** @alias Namespace.prototype */\r\nvar NamespacePrototype = Namespace.prototype;\r\n/** @alias Type.prototype */\r\nvar TypePrototype = Namespace.extend(Type);\r\n\r\nvar Enum = require(5),\r\n OneOf = require(12),\r\n Field = require(6),\r\n Service = require(17),\r\n Prototype = require(14),\r\n inherits = require(7),\r\n util = require(21),\r\n Reader = require(15),\r\n Encoder = require(4),\r\n Decoder = require(3),\r\n Verifier = require(24);\r\nvar codegen = util.codegen;\r\n\r\n/**\r\n * Constructs a new message type.\r\n * @classdesc Reflected message type.\r\n * @extends Namespace\r\n * @constructor\r\n * @param {string} name Message name\r\n * @param {Object} [options] Declared options\r\n */\r\nfunction Type(name, options) {\r\n Namespace.call(this, name, options);\r\n\r\n /**\r\n * Message fields.\r\n * @type {Object.}\r\n */\r\n this.fields = {}; // toJSON, marker\r\n\r\n /**\r\n * Oneofs declared within this namespace, if any.\r\n * @type {Object.}\r\n */\r\n this.oneofs = undefined; // toJSON\r\n\r\n /**\r\n * Extension ranges, if any.\r\n * @type {number[][]}\r\n */\r\n this.extensions = undefined; // toJSON\r\n\r\n /**\r\n * Reserved ranges, if any.\r\n * @type {number[][]}\r\n */\r\n this.reserved = undefined; // toJSON\r\n\r\n /**\r\n * Cached fields by id.\r\n * @type {?Object.}\r\n * @private\r\n */\r\n this._fieldsById = null;\r\n\r\n /**\r\n * Cached fields as an array.\r\n * @type {?Field[]}\r\n * @private\r\n */\r\n this._fieldsArray = null;\r\n\r\n /**\r\n * Cached oneofs as an array.\r\n * @type {?OneOf[]}\r\n * @private\r\n */\r\n this._oneofsArray = null;\r\n\r\n /**\r\n * Cached constructor.\r\n * @type {?Function}\r\n * @private\r\n */\r\n this._ctor = null;\r\n}\r\n\r\nObject.defineProperties(TypePrototype, {\r\n\r\n /**\r\n * Message fields by id.\r\n * @name Type#fieldsById\r\n * @type {Object.}\r\n * @readonly\r\n */\r\n fieldsById: {\r\n get: TypePrototype.getFieldsById = function getFieldsById() {\r\n if (this._fieldsById)\r\n return this._fieldsById;\r\n this._fieldsById = {};\r\n var names = Object.keys(this.fields);\r\n for (var i = 0; i < names.length; ++i) {\r\n var field = this.fields[names[i]],\r\n id = field.id;\r\n if (this._fieldsById[id])\r\n throw Error(\"duplicate id \" + id + \" in \" + this);\r\n this._fieldsById[id] = field;\r\n }\r\n return this._fieldsById;\r\n }\r\n },\r\n\r\n /**\r\n * Fields of this message as an array for iteration.\r\n * @name Type#fieldsArray\r\n * @type {Field[]}\r\n * @readonly\r\n */\r\n fieldsArray: {\r\n get: TypePrototype.getFieldsArray = function getFieldsArray() {\r\n return this._fieldsArray || (this._fieldsArray = util.toArray(this.fields));\r\n }\r\n },\r\n\r\n /**\r\n * Oneofs of this message as an array for iteration.\r\n * @name Type#oneofsArray\r\n * @type {OneOf[]}\r\n * @readonly\r\n */\r\n oneofsArray: {\r\n get: TypePrototype.getOneofsArray = function getOneofsArray() {\r\n return this._oneofsArray || (this._oneofsArray = util.toArray(this.oneofs));\r\n }\r\n },\r\n\r\n /**\r\n * The registered constructor, if any registered, otherwise a generic constructor.\r\n * @name Type#ctor\r\n * @type {Prototype}\r\n */\r\n ctor: {\r\n get: TypePrototype.getCtor = function getCtor() {\r\n if (this._ctor)\r\n return this._ctor;\r\n var ctor;\r\n if (codegen.supported)\r\n ctor = codegen(\"p\")(\"P.call(this,p)\").eof(this.getFullName() + \"$ctor\", {\r\n P: Prototype\r\n });\r\n else\r\n ctor = function GenericMessage(properties) {\r\n Prototype.call(this, properties);\r\n };\r\n ctor.prototype = inherits(ctor, this);\r\n this._ctor = ctor;\r\n return ctor;\r\n },\r\n set: TypePrototype.setCtor = function setCtor(ctor) {\r\n if (ctor && !(ctor.prototype instanceof Prototype))\r\n throw util._TypeError(\"ctor\", \"a constructor inheriting from Prototype\");\r\n this._ctor = ctor;\r\n }\r\n }\r\n});\r\n\r\nfunction clearCache(type) {\r\n type._fieldsById = type._fieldsArray = type._oneofsArray = type._ctor = null;\r\n delete type.encode;\r\n delete type.decode;\r\n return type;\r\n}\r\n\r\n/**\r\n * Tests if the specified JSON object describes a message type.\r\n * @param {*} json JSON object to test\r\n * @returns {boolean} `true` if the object describes a message type\r\n */\r\nType.testJSON = function testJSON(json) {\r\n return Boolean(json && json.fields);\r\n};\r\n\r\nvar nestedTypes = [ Enum, Type, Field, Service ];\r\n\r\n/**\r\n * Creates a type from JSON.\r\n * @param {string} name Message name\r\n * @param {Object} json JSON object\r\n * @returns {Type} Created message type\r\n */\r\nType.fromJSON = function fromJSON(name, json) {\r\n var type = new Type(name, json.options);\r\n type.extensions = json.extensions;\r\n type.reserved = json.reserved;\r\n if (json.fields)\r\n Object.keys(json.fields).forEach(function(fieldName) {\r\n type.add(Field.fromJSON(fieldName, json.fields[fieldName]));\r\n });\r\n if (json.oneofs)\r\n Object.keys(json.oneofs).forEach(function(oneOfName) {\r\n type.add(OneOf.fromJSON(oneOfName, json.oneofs[oneOfName]));\r\n });\r\n if (json.nested)\r\n Object.keys(json.nested).forEach(function(nestedName) {\r\n var nested = json.nested[nestedName];\r\n for (var i = 0; i < nestedTypes.length; ++i) {\r\n if (nestedTypes[i].testJSON(nested)) {\r\n type.add(nestedTypes[i].fromJSON(nestedName, nested));\r\n return;\r\n }\r\n }\r\n throw Error(\"invalid nested object in \" + type + \": \" + nestedName);\r\n });\r\n return type;\r\n};\r\n\r\n/**\r\n * @override\r\n */\r\nTypePrototype.toJSON = function toJSON() {\r\n var inherited = NamespacePrototype.toJSON.call(this);\r\n return {\r\n options : inherited && inherited.options || undefined,\r\n oneofs : Namespace.arrayToJSON(this.getOneofsArray()),\r\n fields : Namespace.arrayToJSON(this.getFieldsArray().filter(function(obj) { return !obj.declaringField; })) || {},\r\n nested : inherited && inherited.nested || undefined\r\n };\r\n};\r\n\r\n/**\r\n * @override\r\n */\r\nTypePrototype.resolveAll = function resolve() {\r\n var fields = this.getFieldsArray(), i = 0;\r\n while (i < fields.length)\r\n fields[i++].resolve();\r\n var oneofs = this.getOneofsArray(); i = 0;\r\n while (i < oneofs.length)\r\n oneofs[i++].resolve();\r\n return NamespacePrototype.resolve.call(this);\r\n};\r\n\r\n/**\r\n * @override\r\n */\r\nTypePrototype.get = function get(name) {\r\n return NamespacePrototype.get.call(this, name) || this.fields && this.fields[name] || this.oneofs && this.oneofs[name] || null;\r\n};\r\n\r\n/**\r\n * Adds a nested object to this type.\r\n * @param {ReflectionObject} object Nested object to add\r\n * @returns {Type} `this`\r\n * @throws {TypeError} If arguments are invalid\r\n * @throws {Error} If there is already a nested object with this name or, if a field, when there is already a field with this id\r\n */\r\nTypePrototype.add = function add(object) {\r\n if (this.get(object.name))\r\n throw Error(\"duplicate name '\" + object.name + '\" in ' + this);\r\n if (object instanceof Field && object.extend === undefined) {\r\n // NOTE: Extension fields aren't actual fields on the declaring type, but nested objects.\r\n // The root object takes care of adding distinct sister-fields to the respective extended\r\n // type instead.\r\n if (this.getFieldsById()[object.id])\r\n throw Error(\"duplicate id \" + object.id + \" in \" + this);\r\n if (object.parent)\r\n object.parent.remove(object);\r\n this.fields[object.name] = object;\r\n object.message = this;\r\n object.onAdd(this);\r\n return clearCache(this);\r\n }\r\n if (object instanceof OneOf) {\r\n if (!this.oneofs)\r\n this.oneofs = {};\r\n this.oneofs[object.name] = object;\r\n object.onAdd(this);\r\n return clearCache(this);\r\n }\r\n return NamespacePrototype.add.call(this, object);\r\n};\r\n\r\n/**\r\n * Removes a nested object from this type.\r\n * @param {ReflectionObject} object Nested object to remove\r\n * @returns {Type} `this`\r\n * @throws {TypeError} If arguments are invalid\r\n * @throws {Error} If `object` is not a member of this type\r\n */\r\nTypePrototype.remove = function remove(object) {\r\n if (object instanceof Field && object.extend === undefined) {\r\n // See Type#add for the reason why extension fields are excluded here.\r\n if (this.fields[object.name] !== object)\r\n throw Error(object + \" is not a member of \" + this);\r\n delete this.fields[object.name];\r\n object.message = null;\r\n return clearCache(this);\r\n }\r\n return NamespacePrototype.remove.call(this, object);\r\n};\r\n\r\n/**\r\n * Creates a new message of this type using the specified properties.\r\n * @param {Object} [properties] Properties to set\r\n * @param {?Function} [ctor] Constructor to use.\r\n * Defaults to use the internal constuctor.\r\n * @returns {Prototype} Message instance\r\n */\r\nTypePrototype.create = function create(properties, ctor) {\r\n if (typeof properties === 'function') {\r\n ctor = properties;\r\n properties = undefined;\r\n } else if (properties /* already */ instanceof Prototype)\r\n return properties;\r\n if (ctor) {\r\n if (!(ctor.prototype instanceof Prototype))\r\n throw util._TypeError(\"ctor\", \"a constructor inheriting from Prototype\");\r\n } else\r\n ctor = this.getCtor();\r\n return new ctor(properties);\r\n};\r\n\r\n/**\r\n * Encodes a message of this type.\r\n * @param {Prototype|Object} message Message instance or plain object\r\n * @param {Writer} [writer] Writer to encode to\r\n * @returns {Writer} writer\r\n */\r\nTypePrototype.encode = function encode(message, writer) {\r\n var encoder = new Encoder(this);\r\n this.encode = codegen.supported\r\n ? encoder.generate()\r\n : encoder.encode;\r\n return this.encode(message, writer);\r\n};\r\n\r\n/**\r\n * Encodes a message of this type preceeded by its byte length as a varint.\r\n * @param {Prototype|Object} message Message instance or plain object\r\n * @param {Writer} [writer] Writer to encode to\r\n * @returns {Writer} writer\r\n */\r\nTypePrototype.encodeDelimited = function encodeDelimited(message, writer) {\r\n return this.encode(message, writer).ldelim();\r\n};\r\n\r\n/**\r\n * Decodes a message of this type.\r\n * @param {Reader|number[]} readerOrBuffer Reader or buffer to decode from\r\n * @param {number} [length] Length of the message, if known beforehand\r\n * @returns {Prototype} Decoded message\r\n */\r\nTypePrototype.decode = function decode(readerOrBuffer, length) {\r\n var decoder = new Decoder(this);\r\n this.decode = codegen.supported\r\n ? decoder.generate()\r\n : decoder.decode;\r\n return this.decode(readerOrBuffer, length);\r\n};\r\n\r\n/**\r\n * Decodes a message of this type preceeded by its byte length as a varint.\r\n * @param {Reader|number[]} readerOrBuffer Reader or buffer to decode from\r\n * @returns {Prototype} Decoded message\r\n */\r\nTypePrototype.decodeDelimited = function decodeDelimited(readerOrBuffer) {\r\n readerOrBuffer = readerOrBuffer instanceof Reader ? readerOrBuffer : Reader(readerOrBuffer);\r\n return this.decode(readerOrBuffer, readerOrBuffer.uint32());\r\n};\r\n\r\n/**\r\n * Verifies that enum values are valid and that any required fields are present.\r\n * @param {Prototype|Object} message Message to verify\r\n * @returns {?string} `null` if valid, otherwise the reason why it is not\r\n */\r\nTypePrototype.verify = function verify(message) {\r\n var verifier = new Verifier(this);\r\n this.verify = codegen.supported\r\n ? verifier.generate()\r\n : verifier.verify;\r\n return this.verify(message);\r\n};\r\n","\"use strict\";\r\n\r\n/**\r\n * Common type constants.\r\n * @namespace\r\n */\r\nvar types = module.exports = {};\r\n\r\nvar s = [\r\n \"double\", // 0\r\n \"float\", // 1\r\n \"int32\", // 2\r\n \"uint32\", // 3\r\n \"sint32\", // 4\r\n \"fixed32\", // 5\r\n \"sfixed32\", // 6\r\n \"int64\", // 7\r\n \"uint64\", // 8\r\n \"sint64\", // 9\r\n \"fixed64\", // 10\r\n \"sfixed64\", // 11\r\n \"bool\", // 12\r\n \"string\", // 13\r\n \"bytes\" // 14\r\n];\r\n\r\nfunction bake(values, offset) {\r\n var i = 0, o = {};\r\n offset |= 0;\r\n while (i < values.length) o[s[i + offset]] = values[i++];\r\n return o;\r\n}\r\n\r\n/**\r\n * Basic type wire types.\r\n * @type {Object.}\r\n */\r\ntypes.basic = bake([\r\n /* double */ 1,\r\n /* float */ 5,\r\n /* int32 */ 0,\r\n /* uint32 */ 0,\r\n /* sint32 */ 0,\r\n /* fixed32 */ 5,\r\n /* sfixed32 */ 5,\r\n /* int64 */ 0,\r\n /* uint64 */ 0,\r\n /* sint64 */ 0,\r\n /* fixed64 */ 1,\r\n /* sfixed64 */ 1,\r\n /* bool */ 0,\r\n /* string */ 2,\r\n /* bytes */ 2\r\n]);\r\n\r\nvar emptyArray = [];\r\nif (Object.freeze)\r\n Object.freeze(emptyArray);\r\n\r\n/**\r\n * Basic type defaults.\r\n * @type {Object.}\r\n */\r\ntypes.defaults = bake([\r\n /* double */ 0,\r\n /* float */ 0,\r\n /* int32 */ 0,\r\n /* uint32 */ 0,\r\n /* sint32 */ 0,\r\n /* fixed32 */ 0,\r\n /* sfixed32 */ 0,\r\n /* int64 */ 0,\r\n /* uint64 */ 0,\r\n /* sint64 */ 0,\r\n /* fixed64 */ 0,\r\n /* sfixed64 */ 0,\r\n /* bool */ false,\r\n /* string */ \"\",\r\n /* bytes */ emptyArray\r\n]);\r\n\r\n/**\r\n * Basic long type wire types.\r\n * @type {Object.}\r\n */\r\ntypes.long = bake([\r\n /* int64 */ 0,\r\n /* uint64 */ 0,\r\n /* sint64 */ 0,\r\n /* fixed64 */ 1,\r\n /* sfixed64 */ 1\r\n], 7);\r\n\r\n/**\r\n * Allowed types for map keys with their associated wire type.\r\n * @type {Object.}\r\n */\r\ntypes.mapKey = bake([\r\n /* int32 */ 0,\r\n /* uint32 */ 0,\r\n /* sint32 */ 0,\r\n /* fixed32 */ 5,\r\n /* sfixed32 */ 5,\r\n /* int64 */ 0,\r\n /* uint64 */ 0,\r\n /* sint64 */ 0,\r\n /* fixed64 */ 1,\r\n /* sfixed64 */ 1,\r\n /* bool */ 0,\r\n /* string */ 2\r\n], 2);\r\n\r\n/**\r\n * Allowed types for packed repeated fields with their associated wire type.\r\n * @type {Object.}\r\n */\r\ntypes.packed = bake([\r\n /* int32 */ 0,\r\n /* uint32 */ 0,\r\n /* sint32 */ 0,\r\n /* fixed32 */ 5,\r\n /* sfixed32 */ 5,\r\n /* int64 */ 0,\r\n /* uint64 */ 0,\r\n /* sint64 */ 0,\r\n /* fixed64 */ 1,\r\n /* sfixed64 */ 1,\r\n /* bool */ 0\r\n], 2);\r\n","\"use strict\";\r\n\r\n/**\r\n * Utility functions.\r\n * @namespace\r\n */\r\nvar util = module.exports = {};\r\n\r\nvar LongBits =\r\nutil.LongBits = require(\"./util/longbits\");\r\nutil.codegen = require(\"./util/codegen\");\r\n\r\n/**\r\n * Whether running within node or not.\r\n * @memberof util\r\n * @type {boolean}\r\n */\r\nvar isNode = util.isNode = Boolean(global.process && global.process.versions && global.process.versions.node);\r\n\r\n/**\r\n * Optional buffer class to use.\r\n * If you assign any compatible buffer implementation to this property, the library will use it.\r\n * @type {?Function}\r\n */\r\nutil.Buffer = null;\r\n\r\nif (isNode)\r\n try { util.Buffer = require(\"buffer\").Buffer; } catch (e) {} // eslint-disable-line no-empty\r\n\r\n/**\r\n * Optional Long class to use.\r\n * If you assign any compatible long implementation to this property, the library will use it.\r\n * @type {?Function}\r\n */\r\nutil.Long = global.dcodeIO && global.dcodeIO.Long || null;\r\n\r\nif (!util.Long)\r\n try { util.Long = require(\"long\"); } catch (e) {} // eslint-disable-line no-empty\r\n\r\n/**\r\n * Tests if the specified value is a string.\r\n * @memberof util\r\n * @param {*} value Value to test\r\n * @returns {boolean} `true` if the value is a string\r\n */\r\nfunction isString(value) {\r\n return typeof value === 'string' || value instanceof String;\r\n}\r\n\r\nutil.isString = isString;\r\n\r\n/**\r\n * Tests if the specified value is a non-null object.\r\n * @param {*} value Value to test\r\n * @returns {boolean} `true` if the value is a non-null object\r\n */\r\nutil.isObject = function isObject(value) {\r\n return Boolean(value && typeof value === 'object');\r\n};\r\n\r\n/**\r\n * Tests if the specified value is an integer.\r\n * @function\r\n * @param {*} value Value to test\r\n * @returns {boolean} `true` if the value is an integer\r\n */\r\nutil.isInteger = Number.isInteger || function isInteger(value) {\r\n return typeof value === 'number' && isFinite(value) && Math.floor(value) === value;\r\n};\r\n\r\n/**\r\n * Converts an object's values to an array.\r\n * @param {Object.} object Object to convert\r\n * @returns {Array.<*>} Converted array\r\n */\r\nutil.toArray = function toArray(object) {\r\n if (!object)\r\n return [];\r\n var names = Object.keys(object),\r\n length = names.length;\r\n var array = new Array(length);\r\n for (var i = 0; i < length; ++i)\r\n array[i] = object[names[i]];\r\n return array;\r\n};\r\n\r\n/**\r\n * Creates a type error.\r\n * @param {string} name Argument name\r\n * @param {string} [description=a string] Expected argument descripotion\r\n * @returns {TypeError} Created type error\r\n * @private\r\n */\r\nutil._TypeError = function(name, description) {\r\n return TypeError(name + \" must be \" + (description || \"a string\"));\r\n};\r\n\r\n/**\r\n * Returns a promise from a node-style function.\r\n * @memberof util\r\n * @param {function(Error, ...*)} fn Function to call\r\n * @param {Object} ctx Function context\r\n * @param {...*} params Function arguments\r\n * @returns {Promise<*>} Promisified function\r\n */\r\nfunction asPromise(fn, ctx/*, varargs */) {\r\n var args = [];\r\n for (var i = 2; i < arguments.length; ++i)\r\n args.push(arguments[i]);\r\n return new Promise(function(resolve, reject) {\r\n fn.apply(ctx, args.concat(\r\n function(err/*, varargs */) {\r\n if (err) reject(err);\r\n else resolve.apply(null, Array.prototype.slice.call(arguments, 1));\r\n }\r\n ));\r\n });\r\n}\r\n\r\nutil.asPromise = asPromise;\r\n\r\n/**\r\n * Fetches the contents of a file.\r\n * @memberof util\r\n * @param {string} path File path or url\r\n * @param {function(?Error, string=)} [callback] Node-style callback\r\n * @returns {Promise|undefined} Promise if callback has been omitted \r\n */\r\nfunction fetch(path, callback) {\r\n if (!callback)\r\n return asPromise(fetch, util, path);\r\n var fs; try { fs = require(\"fs\"); } catch (e) {} // eslint-disable-line no-empty\r\n if (fs && fs.readFile)\r\n return fs.readFile(path, \"utf8\", callback);\r\n var xhr = new XMLHttpRequest();\r\n function onload() {\r\n if (xhr.status !== 0 && xhr.status !== 200)\r\n return callback(Error(\"status \" + xhr.status));\r\n if (isString(xhr.responseText))\r\n return callback(null, xhr.responseText);\r\n return callback(Error(\"request failed\"));\r\n }\r\n xhr.onreadystatechange = function() {\r\n if (xhr.readyState === 4)\r\n onload();\r\n };\r\n xhr.open(\"GET\", path, true);\r\n xhr.send();\r\n return undefined;\r\n}\r\n\r\nutil.fetch = fetch;\r\n\r\n/**\r\n * Tests if the specified path is absolute.\r\n * @memberof util\r\n * @param {string} path Path to test\r\n * @returns {boolean} `true` if path is absolute\r\n */\r\nfunction isAbsolutePath(path) {\r\n return /^(?:\\/|[a-zA-Z0-9]+:)/.test(path);\r\n}\r\n\r\nutil.isAbsolutePath = isAbsolutePath;\r\n\r\n/**\r\n * Normalizes the specified path.\r\n * @memberof util\r\n * @param {string} path Path to normalize\r\n * @returns {string} Normalized path\r\n */\r\nfunction normalizePath(path) {\r\n path = path.replace(/\\\\/g, '/')\r\n .replace(/\\/{2,}/g, '/');\r\n var parts = path.split('/');\r\n var abs = isAbsolutePath(path);\r\n var prefix = \"\";\r\n if (abs)\r\n prefix = parts.shift() + '/';\r\n for (var i = 0; i < parts.length;) {\r\n if (parts[i] === '..') {\r\n if (i > 0)\r\n parts.splice(--i, 2);\r\n else if (abs)\r\n parts.splice(i, 1);\r\n else\r\n ++i;\r\n } else if (parts[i] === '.')\r\n parts.splice(i, 1);\r\n else\r\n ++i;\r\n }\r\n return prefix + parts.join('/');\r\n}\r\n\r\nutil.normalizePath = normalizePath;\r\n\r\n/**\r\n * Resolves the specified include path against the specified origin path.\r\n * @param {string} originPath Path that was used to fetch the origin file\r\n * @param {string} importPath Import path specified in the origin file\r\n * @param {boolean} [alreadyNormalized] `true` if both paths are already known to be normalized\r\n * @returns {string} Path to the imported file\r\n */\r\nutil.resolvePath = function resolvePath(originPath, importPath, alreadyNormalized) {\r\n if (!alreadyNormalized)\r\n importPath = normalizePath(importPath);\r\n if (isAbsolutePath(importPath))\r\n return importPath;\r\n if (!alreadyNormalized)\r\n originPath = normalizePath(originPath);\r\n originPath = originPath.replace(/(?:\\/|^)[^/]+$/, '');\r\n return originPath.length ? normalizePath(originPath + '/' + importPath) : importPath;\r\n};\r\n\r\n/**\r\n * Converts a number or long to an 8 characters long hash string.\r\n * @param {Long|number} value Value to convert\r\n * @returns {string} Hash\r\n */\r\nutil.longToHash = function longToHash(value) {\r\n return value\r\n ? LongBits.from(value).toHash()\r\n : '\\0\\0\\0\\0\\0\\0\\0\\0';\r\n};\r\n\r\n/**\r\n * Converts an 8 characters long hash string to a long or number.\r\n * @param {string} hash Hash\r\n * @param {boolean} [unsigned=false] Whether unsigned or not\r\n * @returns {Long|number} Original value\r\n */\r\nutil.longFromHash = function longFromHash(hash, unsigned) {\r\n var bits = LongBits.fromHash(hash);\r\n if (util.Long)\r\n return util.Long.fromBits(bits.lo, bits.hi, unsigned);\r\n return bits.toNumber(Boolean(unsigned));\r\n};\r\n\r\n/**\r\n * Tests if two possibly long values are not equal.\r\n * @param {number|Long} a First value\r\n * @param {number|Long} b Second value\r\n * @returns {boolean} `true` if not equal\r\n */\r\nutil.longNeq = function longNeq(a, b) {\r\n return typeof a === 'number'\r\n ? typeof b === 'number'\r\n ? a !== b\r\n : (a = LongBits.fromNumber(a)).lo !== b.low || a.hi !== b.high\r\n : typeof b === 'number'\r\n ? (b = LongBits.fromNumber(b)).lo !== a.low || b.hi !== a.high\r\n : a.low !== b.low || a.high !== b.high;\r\n};\r\n\r\n/**\r\n * Merges the properties of the source object into the destination object.\r\n * @param {Object} dst Destination object\r\n * @param {Object} src Source object\r\n * @param {boolean} [ifNotSet=false] Merges only if the key is not already set\r\n * @returns {Object} Destination object\r\n */\r\nutil.merge = function merge(dst, src, ifNotSet) {\r\n if (src) {\r\n var keys = Object.keys(src);\r\n for (var i = 0; i < keys.length; ++i)\r\n if (dst[keys[i]] === undefined || !ifNotSet)\r\n dst[keys[i]] = src[keys[i]];\r\n }\r\n return dst;\r\n};\r\n\r\n// Reserved words, ref: https://msdn.microsoft.com/en-us/library/ttyab5c8.aspx\r\n// var reserved = \"break,case,catch,class,const,continue,debugger,default,delete,do,else,export,extends,false,finally,for,function,if,import,in,instanceof,new,null,protected,return,super,switch,this,throw,true,try,typeof,var,while,with,abstract,boolean,byte,char,decimal,double,enum,final,float,get,implements,int,interface,internal,long,package,private,protected,public,sbyte,set,short,static,uint,ulong,ushort,void,assert,ensure,event,goto,invariant,namespace,native,require,synchronized,throws,transient,use,volatile\".split(',');\r\n\r\n/**\r\n * Returns a safe property accessor for the specified properly name.\r\n * @param {string} prop Property name\r\n * @returns {string} Safe accessor\r\n */\r\nutil.safeProp = function safeProp(prop) {\r\n // NOTE: While dot notation looks cleaner it doesn't seem to have a significant impact on performance.\r\n // Hence, we can safe the extra bytes from providing the reserved keywords above for pre-ES5 envs.\r\n return /* /^[a-z_$][a-z0-9_$]*$/i.test(prop) && !reserved.indexOf(prop) ? \".\" + prop : */ \"['\" + prop.replace(/\\\\/g, \"\\\\\\\\\").replace(/'/g, \"\\\\'\") + \"']\";\r\n};\r\n\r\n/**\r\n * Creates a new buffer of whatever type supported by the environment.\r\n * @param {number} [size=0] Buffer size\r\n * @returns {Buffer|Uint8Array|Array} Buffer\r\n */\r\nutil.newBuffer = function newBuffer(size) {\r\n return new (util.Buffer || typeof Uint8Array !== 'undefined' && Uint8Array || Array)(size || 0);\r\n};\r\n","\"use strict\";\r\nmodule.exports = codegen;\r\n\r\nvar blockOpenRe = /[{[]$/,\r\n blockCloseRe = /^[}\\]]/,\r\n casingRe = /:$/,\r\n branchRe = /^\\s*(?:if|else if|while|for)\\b|\\b(?:else)\\s*$/,\r\n breakRe = /\\b(?:break|continue);?$|^\\s*return\\b/;\r\n\r\n/**\r\n * Programmatically generates a function.\r\n * @memberof util\r\n * @param {...string} params Function parameter names\r\n * @returns {util.CodegenAppender} Printf-like appender function\r\n * @property {boolean} supported Whether code generation is supported by the environment.\r\n * @property {boolean} verbose=false When set to true, codegen will log generated code to console. Useful for debugging.\r\n */\r\nfunction codegen(/* varargs */) {\r\n var args = Array.prototype.slice.call(arguments),\r\n src = ['\\t\"use strict\"'];\r\n\r\n var indent = 1,\r\n inCase = false;\r\n\r\n /**\r\n * Appends a printf-like formatted line to the generated source. Returned when calling {@link util.codegen}.\r\n * @typedef CodegenAppender\r\n * @memberof util\r\n * @type {function}\r\n * @param {string} format A printf-like format string\r\n * @param {...*} params Format replacements\r\n * @returns {util.CodegenAppender} Itself\r\n * @property {util.CodegenStringer} str\r\n * @property {util.CodegenEnder} eof\r\n * @see {@link https://nodejs.org/docs/latest/api/util.html#util_util_format_format_args}\r\n */\r\n /**/\r\n function gen() {\r\n var fmt = [];\r\n for (var i = 0; i < arguments.length; ++i)\r\n fmt[i] = arguments[i];\r\n var line = gen.fmt.apply(null, fmt);\r\n var level = indent;\r\n if (src.length) {\r\n var prev = src[src.length - 1];\r\n\r\n // block open or one time branch\r\n if (blockOpenRe.test(prev))\r\n level = ++indent; // keep\r\n else if (branchRe.test(prev))\r\n ++level; // once\r\n \r\n // casing\r\n if (casingRe.test(prev) && !casingRe.test(line)) {\r\n level = ++indent;\r\n inCase = true;\r\n } else if (inCase && breakRe.test(prev)) {\r\n level = --indent;\r\n inCase = false;\r\n }\r\n\r\n // block close\r\n if (blockCloseRe.test(line))\r\n level = --indent;\r\n }\r\n for (var index = 0; index < level; ++index)\r\n line = \"\\t\" + line;\r\n src.push(line);\r\n return gen;\r\n }\r\n\r\n gen.fmt = function fmt(format) {\r\n var params = Array.prototype.slice.call(arguments, 1),\r\n index = 0;\r\n return format.replace(/%([djs])/g, function($0, $1) {\r\n var param = params[index++];\r\n return $1 === \"j\"\r\n ? JSON.stringify(param)\r\n : String(param);\r\n });\r\n };\r\n\r\n /**\r\n * Stringifies the so far generated function source.\r\n * @typedef CodegenStringer\r\n * @memberof util\r\n * @type {function}\r\n * @param {string} [name] Function name, defaults to generate an anonymous function\r\n * @returns {string} Function source using tabs for indentation\r\n */\r\n /**/\r\n gen.str = function str(name) {\r\n return \"function \" + (name ? name.replace(/[^\\w_$]/g, \"_\") : \"\") + \"(\" + args.join(\",\") + \") {\\n\" + src.join(\"\\n\") + \"\\n}\";\r\n };\r\n\r\n /**\r\n * Ends generation and builds the function.\r\n * @typedef CodegenEnder\r\n * @memberof util\r\n * @type {function}\r\n * @param {string} [name] Function name, defaults to generate an anonymous function\r\n * @param {Object|Array.} [scope] Function scope\r\n * @returns {function} A function to apply the scope manually when `scope` is an array, otherwise the generated function with scope applied\r\n */\r\n /**/\r\n gen.eof = function eof(name, scope) {\r\n if (name && typeof name === 'object') {\r\n scope = name;\r\n name = undefined;\r\n }\r\n var code = gen.str(name);\r\n if (codegen.verbose)\r\n console.log(\"--- codegen ---\\n\" + code.replace(/^/mg, \"> \").replace(/\\t/g, \" \")); // eslint-disable-line no-console\r\n code = \"return \" + code;\r\n var params, values = [];\r\n if (Array.isArray(scope)) {\r\n params = scope.slice();\r\n } else if (scope) {\r\n params = Object.keys(scope);\r\n values = params.map(function(key) { return scope[key]; });\r\n } else\r\n params = [];\r\n var fn = Function.apply(null, params.concat(code)); // eslint-disable-line no-new-func\r\n return values ? fn.apply(null, values) : fn();\r\n };\r\n\r\n return gen;\r\n}\r\n\r\ncodegen.supported = false;\r\ntry { codegen.supported = codegen(\"a\",\"b\")(\"return a-b\").eof()(2,1) === 1; } catch (e) {} // eslint-disable-line no-empty\r\n\r\ncodegen.verbose = false;\r\n","\"use strict\";\r\n\r\nmodule.exports = LongBits;\r\n\r\nvar util = require(21);\r\n\r\n/**\r\n * Constructs new long bits.\r\n * @classdesc Helper class for working with the low and high bits of a 64 bit value.\r\n * @memberof util\r\n * @constructor\r\n * @param {number} lo Low bits\r\n * @param {number} hi High bits\r\n */\r\nfunction LongBits(lo, hi) { // make sure to always call this with unsigned 32bits for proper optimization\r\n\r\n /**\r\n * Low bits.\r\n * @type {number}\r\n */\r\n this.lo = lo;\r\n\r\n /**\r\n * High bits.\r\n * @type {number}\r\n */\r\n this.hi = hi;\r\n}\r\n\r\n/** @alias util.LongBits.prototype */\r\nvar LongBitsPrototype = LongBits.prototype;\r\n\r\n/**\r\n * Zero bits.\r\n * @memberof util.LongBits\r\n * @type {util.LongBits}\r\n */\r\nvar zero = new LongBits(0, 0);\r\n\r\nzero.toNumber = function() { return 0; };\r\nzero.zzEncode = zero.zzDecode = function() { return this; };\r\nzero.length = function() { return 1; };\r\n\r\n/**\r\n * Constructs new long bits from the specified number.\r\n * @param {number} value Value\r\n * @returns {util.LongBits} Instance\r\n */\r\nLongBits.fromNumber = function fromNumber(value) {\r\n if (value === 0)\r\n return zero;\r\n var sign = value < 0;\r\n value = Math.abs(value);\r\n var lo = value >>> 0,\r\n hi = (value - lo) / 4294967296 >>> 0;\r\n if (sign) {\r\n hi = ~hi >>> 0;\r\n lo = ~lo >>> 0;\r\n if (++lo > 4294967295) {\r\n lo = 0;\r\n if (++hi > 4294967295)\r\n hi = 0;\r\n }\r\n }\r\n return new LongBits(lo, hi);\r\n};\r\n\r\n/**\r\n * Constrcuts new long bits from a number or long.\r\n * @param {Long|number} value Value\r\n * @returns {util.LongBits} Instance\r\n */\r\nLongBits.from = function from(value) {\r\n return typeof value === 'number'\r\n ? LongBits.fromNumber(value)\r\n : new LongBits(value.low >>> 0, value.high >>> 0);\r\n};\r\n\r\n/**\r\n * Converts this long bits to a possibly unsafe JavaScript number.\r\n * @param {boolean} [unsigned=false] Whether unsigned or not\r\n * @returns {number} Possibly unsafe number\r\n */\r\nLongBitsPrototype.toNumber = function toNumber(unsigned) {\r\n if (!unsigned && this.hi >>> 31) {\r\n this.lo = ~this.lo + 1 >>> 0;\r\n this.hi = ~this.hi >>> 0;\r\n if (!this.lo)\r\n this.hi = this.hi + 1 >>> 0;\r\n return -(this.lo + this.hi * 4294967296);\r\n }\r\n return this.lo + this.hi * 4294967296;\r\n};\r\n\r\n/**\r\n * Converts this long bits to a long.\r\n * @param {boolean} [unsigned=false] Whether unsigned or not\r\n * @returns {Long} Long\r\n */\r\nLongBitsPrototype.toLong = function toLong(unsigned) {\r\n return new util.Long(this.lo, this.hi, unsigned);\r\n};\r\n\r\nvar charCodeAt = String.prototype.charCodeAt;\r\n\r\n/**\r\n * Constructs new long bits from the specified 8 characters long hash.\r\n * @param {string} hash Hash\r\n * @returns {util.LongBits} Bits\r\n */\r\nLongBits.fromHash = function fromHash(hash) {\r\n return new LongBits(\r\n ( charCodeAt.call(hash, 0)\r\n | charCodeAt.call(hash, 1) << 8\r\n | charCodeAt.call(hash, 2) << 16\r\n | charCodeAt.call(hash, 3) << 24) >>> 0\r\n ,\r\n ( charCodeAt.call(hash, 4)\r\n | charCodeAt.call(hash, 5) << 8\r\n | charCodeAt.call(hash, 6) << 16\r\n | charCodeAt.call(hash, 7) << 24) >>> 0\r\n );\r\n};\r\n\r\n/**\r\n * Converts this long bits to a 8 characters long hash.\r\n * @returns {string} Hash\r\n */\r\nLongBitsPrototype.toHash = function toHash() {\r\n return String.fromCharCode(\r\n this.lo & 255,\r\n this.lo >>> 8 & 255,\r\n this.lo >>> 16 & 255,\r\n this.lo >>> 24 & 255,\r\n this.hi & 255,\r\n this.hi >>> 8 & 255,\r\n this.hi >>> 16 & 255,\r\n this.hi >>> 24 & 255\r\n );\r\n};\r\n\r\n/**\r\n * Zig-zag encodes this long bits.\r\n * @returns {util.LongBits} `this`\r\n */\r\nLongBitsPrototype.zzEncode = function zzEncode() {\r\n var mask = this.hi >> 31;\r\n this.hi = ((this.hi << 1 | this.lo >>> 31) ^ mask) >>> 0;\r\n this.lo = ( this.lo << 1 ^ mask) >>> 0;\r\n return this;\r\n};\r\n\r\n/**\r\n * Zig-zag decodes this long bits.\r\n * @returns {util.LongBits} `this`\r\n */\r\nLongBitsPrototype.zzDecode = function zzDecode() {\r\n var mask = -(this.lo & 1);\r\n this.lo = ((this.lo >>> 1 | this.hi << 31) ^ mask) >>> 0;\r\n this.hi = ( this.hi >>> 1 ^ mask) >>> 0;\r\n return this;\r\n};\r\n\r\n/**\r\n * Calculates the length of this longbits when encoded as a varint.\r\n * @returns {number} Length\r\n */\r\nLongBitsPrototype.length = function length() {\r\n var part0 = this.lo,\r\n part1 = (this.lo >>> 28 | this.hi << 4) >>> 0,\r\n part2 = this.hi >>> 24;\r\n if (part2 === 0) {\r\n if (part1 === 0)\r\n return part0 < 1 << 14\r\n ? part0 < 1 << 7 ? 1 : 2\r\n : part0 < 1 << 21 ? 3 : 4;\r\n return part1 < 1 << 14\r\n ? part1 < 1 << 7 ? 5 : 6\r\n : part1 < 1 << 21 ? 7 : 8;\r\n }\r\n return part2 < 1 << 7 ? 9 : 10;\r\n};\r\n","\"use strict\";\r\nmodule.exports = Verifier;\r\n\r\nvar Enum = require(5),\r\n Type = require(19),\r\n util = require(21);\r\n\r\n/**\r\n * Constructs a new verifier for the specified message type.\r\n * @classdesc Runtime message verifier using code generation on top of reflection.\r\n * @constructor\r\n * @param {Type} type Message type\r\n */\r\nfunction Verifier(type) {\r\n\r\n /**\r\n * Message type.\r\n * @type {Type}\r\n */\r\n this.type = type;\r\n}\r\n\r\n/** @alias Verifier.prototype */\r\nvar VerifierPrototype = Verifier.prototype;\r\n\r\n// This is here to mimic Type so that fallback functions work without having to bind()\r\nObject.defineProperties(VerifierPrototype, {\r\n\r\n /**\r\n * Fields of this verifier's message type as an array for iteration.\r\n * @name Verifier#fieldsArray\r\n * @type {Field[]}\r\n * @readonly\r\n */\r\n fieldsArray: {\r\n get: VerifierPrototype.getFieldsArray = function getFieldsArray() {\r\n return this.type.getFieldsArray();\r\n }\r\n },\r\n\r\n /**\r\n * Full name of this verifier's message type.\r\n * @name Verifier#fullName\r\n * @type {string}\r\n * @readonly\r\n */\r\n fullName: {\r\n get: VerifierPrototype.getFullName = function getFullName() {\r\n return this.type.getFullName();\r\n }\r\n }\r\n});\r\n\r\n/**\r\n * Verifies a runtime message of this verifier's message type.\r\n * @param {Prototype|Object} message Runtime message or plain object to verify\r\n * @returns {?string} `null` if valid, otherwise the reason why it is not\r\n */\r\nVerifierPrototype.verify = function verify_fallback(message) {\r\n var fields = this.getFieldsArray(),\r\n i = 0;\r\n while (i < fields.length) {\r\n var field = fields[i++].resolve(),\r\n value = message[field.name];\r\n\r\n if (value === undefined) {\r\n if (field.required)\r\n return \"missing required field \" + field.name + \" in \" + this.getFullName();\r\n\r\n } else if (field.resolvedType instanceof Enum && field.resolvedType.getValuesById()[value] === undefined) {\r\n return \"invalid enum value \" + field.name + \" = \" + value + \" in \" + this.getFullName();\r\n\r\n } else if (field.resolvedType instanceof Type) {\r\n if (!value && field.required)\r\n return \"missing required field \" + field.name + \" in \" + this.getFullName();\r\n var reason;\r\n if ((reason = field.resolvedType.verify(value)) !== null)\r\n return reason;\r\n }\r\n }\r\n return null;\r\n};\r\n\r\n/**\r\n * Generates a verifier specific to this verifier's message type.\r\n * @returns {function} Verifier function with an identical signature to {@link Verifier#verify}\r\n */\r\nVerifierPrototype.generate = function generate() {\r\n /* eslint-disable no-unexpected-multiline */\r\n var fields = this.type.getFieldsArray();\r\n var gen = util.codegen(\"m\");\r\n var hasReasonVar = false;\r\n\r\n for (var i = 0; i < fields.length; ++i) {\r\n var field = fields[i].resolve(),\r\n prop = util.safeProp(field.name);\r\n if (field.required) { gen\r\n\r\n (\"if(m%s===undefined)\", prop)\r\n (\"return 'missing required field %s in %s'\", field.name, this.type.getFullName());\r\n\r\n } else if (field.resolvedType instanceof Enum) {\r\n var values = util.toArray(field.resolvedType.values); gen\r\n\r\n (\"switch(m%s){\", prop)\r\n (\"default:\")\r\n (\"return 'invalid enum value %s = '+m%s+' in %s'\", field.name, prop, this.type.getFullName());\r\n\r\n for (var j = 0, l = values.length; j < l; ++j) gen\r\n (\"case %d:\", values[j]); gen\r\n (\"}\");\r\n\r\n } else if (field.resolvedType instanceof Type) {\r\n if (field.required) gen\r\n\r\n (\"if(!m%s)\", prop)\r\n (\"return 'missing required field %s in %s'\", field.name, this.type.getFullName());\r\n\r\n if (!hasReasonVar) { gen(\"var r\"); hasReasonVar = true; } gen\r\n\r\n (\"if((r=types[%d].verify(m%s))!==null)\", i, prop)\r\n (\"return r\");\r\n }\r\n }\r\n return gen\r\n (\"return null\")\r\n\r\n .eof(this.type.getFullName() + \"$verify\", {\r\n types : fields.map(function(fld) { return fld.resolvedType; })\r\n });\r\n /* eslint-enable no-unexpected-multiline */\r\n};\r\n","\"use strict\";\r\nmodule.exports = Writer;\r\n\r\nWriter.BufferWriter = BufferWriter;\r\n\r\nvar util = require(21),\r\n ieee754 = require(1);\r\nvar LongBits = util.LongBits;\r\n\r\n/**\r\n * Constructs a new writer operation.\r\n * @classdesc Scheduled writer operation.\r\n * @memberof Writer\r\n * @constructor\r\n * @param {function(number[], number, *)} fn Function to call\r\n * @param {*} val Value to write\r\n * @param {number} len Value byte length\r\n * @private\r\n * @ignore\r\n */\r\nfunction Op(fn, val, len) {\r\n\r\n /**\r\n * Function to call.\r\n * @type {function(number[], number, *)}\r\n */\r\n this.fn = fn;\r\n\r\n /**\r\n * Value to write.\r\n * @type {*}\r\n */\r\n this.val = val;\r\n\r\n /**\r\n * Value byte length.\r\n * @type {number}\r\n */\r\n this.len = len;\r\n\r\n /**\r\n * Next operation.\r\n * @type {?Writer.Op}\r\n */\r\n this.next = null;\r\n}\r\n\r\nWriter.Op = Op;\r\n\r\nfunction noop() {} // eslint-disable-line no-empty-function\r\n\r\n/**\r\n * Constructs a new writer state.\r\n * @classdesc Copied writer state.\r\n * @memberof Writer\r\n * @constructor\r\n * @param {Writer} writer Writer to copy state from\r\n * @private\r\n * @ignore\r\n */\r\nfunction State(writer) {\r\n\r\n /**\r\n * Current head.\r\n * @type {Writer.Op}\r\n */\r\n this.head = writer.head;\r\n\r\n /**\r\n * Current tail.\r\n * @type {Writer.Op}\r\n */\r\n this.tail = writer.tail;\r\n\r\n /**\r\n * Current buffer length.\r\n * @type {number}\r\n */\r\n this.len = writer.len;\r\n}\r\n\r\nWriter.State = State;\r\n\r\nvar ArrayImpl = typeof Uint8Array !== 'undefined' ? Uint8Array : Array;\r\n\r\n/**\r\n * Constructs a new writer.\r\n * When called as a function, returns an appropriate writer for the current environment.\r\n * @classdesc Wire format writer using `Uint8Array` if available, otherwise `Array`.\r\n * @exports Writer\r\n * @constructor\r\n */\r\nfunction Writer() {\r\n if (!(this instanceof Writer))\r\n return util.Buffer && new BufferWriter() || new Writer();\r\n\r\n /**\r\n * Current length.\r\n * @type {number}\r\n */\r\n this.len = 0;\r\n\r\n /**\r\n * Operations head.\r\n * @type {Object}\r\n */\r\n this.head = new Op(noop, 0, 0);\r\n\r\n /**\r\n * Operations tail\r\n * @type {Object}\r\n */\r\n this.tail = this.head;\r\n\r\n /**\r\n * State stack.\r\n * @type {Object[]}\r\n */\r\n this.stack = [];\r\n\r\n // When a value is written, the writer calculates its byte length and puts it into a linked\r\n // list of operations to perform when finish() is called. This both allows us to allocate\r\n // buffers of the exact required size and reduces the amount of work we have to do compared\r\n // to first calculating over objects and then encoding over objects. In our case, the encoding\r\n // part is just a linked list walk calling linked operations with already prepared values.\r\n}\r\n\r\n/** @alias Writer.prototype */\r\nvar WriterPrototype = Writer.prototype;\r\n\r\n/**\r\n * Pushes a new operation to the queue.\r\n * @param {function(number[], number, *)} fn Function to call\r\n * @param {number} len Value byte length\r\n * @param {number} val Value to write\r\n * @returns {Writer} `this`\r\n */\r\nWriterPrototype.push = function push(fn, len, val) {\r\n var op = new Op(fn, val, len);\r\n this.tail.next = op;\r\n this.tail = op;\r\n this.len += len;\r\n return this;\r\n};\r\n\r\nfunction writeByte(buf, pos, val) {\r\n buf[pos] = val & 255;\r\n}\r\n\r\n/**\r\n * Writes a tag.\r\n * @param {number} id Field id\r\n * @param {number} wireType Wire type\r\n * @returns {Writer} `this`\r\n */\r\nWriterPrototype.tag = function write_tag(id, wireType) {\r\n return this.push(writeByte, 1, id << 3 | wireType & 7);\r\n};\r\n\r\nfunction writeVarint32(buf, pos, val) {\r\n while (val > 127) {\r\n buf[pos++] = val & 127 | 128;\r\n val >>>= 7;\r\n }\r\n buf[pos] = val;\r\n}\r\n\r\n/**\r\n * Writes an unsigned 32 bit value as a varint.\r\n * @param {number} value Value to write\r\n * @returns {Writer} `this`\r\n */\r\nWriterPrototype.uint32 = function write_uint32(value) {\r\n value >>>= 0;\r\n return this.push(writeVarint32,\r\n value < 128 ? 1\r\n : value < 16384 ? 2\r\n : value < 2097152 ? 3\r\n : value < 268435456 ? 4\r\n : 5\r\n , value);\r\n};\r\n\r\n/**\r\n * Writes a signed 32 bit value as a varint.\r\n * @function\r\n * @param {number} value Value to write\r\n * @returns {Writer} `this`\r\n */\r\nWriterPrototype.int32 = function write_int32(value) {\r\n return value < 0\r\n ? this.push(writeVarint64, 10, LongBits.fromNumber(value)) // 10 bytes per spec\r\n : this.uint32(value);\r\n};\r\n\r\n/**\r\n * Writes a 32 bit value as a varint, zig-zag encoded.\r\n * @param {number} value Value to write\r\n * @returns {Writer} `this`\r\n */\r\nWriterPrototype.sint32 = function write_sint32(value) {\r\n return this.uint32(value << 1 ^ value >> 31);\r\n};\r\n\r\nfunction writeVarint64(buf, pos, val) {\r\n // tends to deoptimize. stays optimized when using bits directly.\r\n while (val.hi || val.lo > 127) {\r\n buf[pos++] = val.lo & 127 | 128;\r\n val.lo = (val.lo >>> 7 | val.hi << 25) >>> 0;\r\n val.hi >>>= 7;\r\n }\r\n buf[pos++] = val.lo;\r\n}\r\n\r\n/**\r\n * Writes an unsigned 64 bit value as a varint.\r\n * @param {Long|number} value Value to write\r\n * @returns {Writer} `this`\r\n */\r\nWriterPrototype.uint64 = function write_uint64(value) {\r\n var bits;\r\n if (typeof value === 'number')\r\n bits = value ? LongBits.fromNumber(value) : LongBits.zero;\r\n else if (value.low || value.high)\r\n bits = new LongBits(value.low >>> 0, value.high >>> 0);\r\n else\r\n bits = LongBits.zero;\r\n return this.push(writeVarint64, bits.length(), bits);\r\n};\r\n\r\n/**\r\n * Writes a signed 64 bit value as a varint.\r\n * @function\r\n * @param {Long|number} value Value to write\r\n * @returns {Writer} `this`\r\n */\r\nWriterPrototype.int64 = WriterPrototype.uint64;\r\n\r\n/**\r\n * Writes a signed 64 bit value as a varint, zig-zag encoded.\r\n * @param {Long|number} value Value to write\r\n * @returns {Writer} `this`\r\n */\r\nWriterPrototype.sint64 = function sint64(value) {\r\n var bits = LongBits.from(value).zzEncode();\r\n return this.push(writeVarint64, bits.length(), bits);\r\n};\r\n\r\n/**\r\n * Writes a boolish value as a varint.\r\n * @param {boolean} value Value to write\r\n * @returns {Writer} `this`\r\n */\r\nWriterPrototype.bool = function write_bool(value) {\r\n return this.push(writeByte, 1, value ? 1 : 0);\r\n};\r\n\r\nfunction writeFixed32(buf, pos, val) {\r\n buf[pos++] = val & 255;\r\n buf[pos++] = val >>> 8 & 255;\r\n buf[pos++] = val >>> 16 & 255;\r\n buf[pos ] = val >>> 24 & 255;\r\n}\r\n\r\n/**\r\n * Writes a 32 bit value as fixed 32 bits.\r\n * @param {number} value Value to write\r\n * @returns {Writer} `this`\r\n */\r\nWriterPrototype.fixed32 = function write_fixed32(value) {\r\n return this.push(writeFixed32, 4, value >>> 0);\r\n};\r\n\r\n/**\r\n * Writes a 32 bit value as fixed 32 bits, zig-zag encoded.\r\n * @param {number} value Value to write\r\n * @returns {Writer} `this`\r\n */\r\nWriterPrototype.sfixed32 = function write_sfixed32(value) {\r\n return this.push(writeFixed32, 4, value << 1 ^ value >> 31);\r\n};\r\n\r\nfunction writeFixed64(buf, pos, val) {\r\n buf[pos++] = val.lo & 255;\r\n buf[pos++] = val.lo >>> 8 & 255;\r\n buf[pos++] = val.lo >>> 16 & 255;\r\n buf[pos++] = val.lo >>> 24 ;\r\n buf[pos++] = val.hi & 255;\r\n buf[pos++] = val.hi >>> 8 & 255;\r\n buf[pos++] = val.hi >>> 16 & 255;\r\n buf[pos ] = val.hi >>> 24 ;\r\n}\r\n\r\n/**\r\n * Writes a 64 bit value as fixed 64 bits.\r\n * @param {Long|number} value Value to write\r\n * @returns {Writer} `this`\r\n */\r\nWriterPrototype.fixed64 = function write_fixed64(value) {\r\n return this.push(writeFixed64, 8, LongBits.from(value));\r\n};\r\n\r\n/**\r\n * Writes a 64 bit value as fixed 64 bits, zig-zag encoded.\r\n * @param {Long|number} value Value to write\r\n * @returns {Writer} `this`\r\n */\r\nWriterPrototype.sfixed64 = function write_sfixed64(value) {\r\n return this.push(writeFixed64, 8, LongBits.from(value).zzEncode());\r\n};\r\n\r\nfunction writeFloat(buf, pos, val) {\r\n ieee754.write(buf, val, pos, false, 23, 4);\r\n}\r\n\r\n/**\r\n * Writes a float (32 bit).\r\n * @function\r\n * @param {number} value Value to write\r\n * @returns {Writer} `this`\r\n */\r\nWriterPrototype.float = function write_float(value) {\r\n return this.push(writeFloat, 4, value);\r\n};\r\n\r\nfunction writeDouble(buf, pos, val) {\r\n ieee754.write(buf, val, pos, false, 52, 8);\r\n}\r\n\r\n/**\r\n * Writes a double (64 bit float).\r\n * @function\r\n * @param {number} value Value to write\r\n * @returns {Writer} `this`\r\n */\r\nWriterPrototype.double = function write_double(value) {\r\n return this.push(writeDouble, 8, value);\r\n};\r\n\r\nvar writeBytes = ArrayImpl.prototype.set\r\n ? function writeBytes_set(buf, pos, val) { buf.set(val, pos); }\r\n : function writeBytes_for(buf, pos, val) { for (var i = 0; i < val.length; ++i) buf[pos + i] = val[i]; };\r\n\r\n/**\r\n * Writes a sequence of bytes.\r\n * @param {number[]} value Value to write\r\n * @returns {Writer} `this`\r\n */\r\nWriterPrototype.bytes = function write_bytes(value) {\r\n var len = value.length >>> 0;\r\n return len\r\n ? this.uint32(len).push(writeBytes, len, value)\r\n : this.push(writeByte, 1, 0);\r\n};\r\n\r\nfunction writeString(buf, pos, val) {\r\n for (var i = 0; i < val.length; ++i) {\r\n var c1 = val.charCodeAt(i), c2;\r\n if (c1 < 128) {\r\n buf[pos++] = c1;\r\n } else if (c1 < 2048) {\r\n buf[pos++] = c1 >> 6 | 192;\r\n buf[pos++] = c1 & 63 | 128;\r\n } else if ((c1 & 0xFC00) === 0xD800 && i + 1 < val.length && ((c2 = val.charCodeAt(i + 1)) & 0xFC00) === 0xDC00) {\r\n c1 = 0x10000 + ((c1 & 0x03FF) << 10) + (c2 & 0x03FF);\r\n ++i;\r\n buf[pos++] = c1 >> 18 | 240;\r\n buf[pos++] = c1 >> 12 & 63 | 128;\r\n buf[pos++] = c1 >> 6 & 63 | 128;\r\n buf[pos++] = c1 & 63 | 128;\r\n } else {\r\n buf[pos++] = c1 >> 12 | 224;\r\n buf[pos++] = c1 >> 6 & 63 | 128;\r\n buf[pos++] = c1 & 63 | 128;\r\n }\r\n }\r\n}\r\n\r\nfunction byteLength(val) {\r\n var strlen = val.length >>> 0;\r\n if (strlen) {\r\n var len = 0;\r\n for (var i = 0, c1; i < strlen; ++i) {\r\n c1 = val.charCodeAt(i);\r\n if (c1 < 128)\r\n len += 1;\r\n else if (c1 < 2048)\r\n len += 2;\r\n else if ((c1 & 0xFC00) === 0xD800 && i + 1 < strlen && (val.charCodeAt(i + 1) & 0xFC00) === 0xDC00) {\r\n ++i;\r\n len += 4;\r\n } else\r\n len += 3;\r\n }\r\n return len;\r\n }\r\n return 0;\r\n}\r\n\r\n/**\r\n * Writes a string.\r\n * @param {string} value Value to write\r\n * @returns {Writer} `this`\r\n */\r\nWriterPrototype.string = function write_string(value) {\r\n var len = byteLength(value);\r\n return len\r\n ? this.uint32(len).push(writeString, len, value)\r\n : this.push(writeByte, 1, 0);\r\n};\r\n\r\n/**\r\n * Forks this writer's state by pushing it to a stack.\r\n * Calling {@link Writer#ldelim}, {@link Writer#reset} or {@link Writer#finish} resets the writer to the previous state.\r\n * @returns {Writer} `this`\r\n */\r\nWriterPrototype.fork = function fork() {\r\n this.stack.push(new State(this));\r\n this.head = this.tail = new Op(noop, 0, 0);\r\n this.len = 0;\r\n return this;\r\n};\r\n\r\n/**\r\n * Resets this instance to the last state.\r\n * @returns {Writer} `this`\r\n */\r\nWriterPrototype.reset = function reset() {\r\n if (this.stack.length) {\r\n var state = this.stack.pop();\r\n this.head = state.head;\r\n this.tail = state.tail;\r\n this.len = state.len;\r\n } else {\r\n this.head = this.tail = new Op(noop, 0, 0);\r\n this.len = 0;\r\n }\r\n return this;\r\n};\r\n\r\n/**\r\n * Resets to the last state and appends the fork state's current write length as a varint followed by its operations.\r\n * @param {number} [id] Id with wire type 2 to prepend where applicable\r\n * @returns {Writer} `this`\r\n */\r\nWriterPrototype.ldelim = function ldelim(id) {\r\n var head = this.head,\r\n tail = this.tail,\r\n len = this.len;\r\n this.reset();\r\n if (id !== undefined)\r\n this.tag(id, 2);\r\n this.uint32(len);\r\n this.tail.next = head.next; // skip noop\r\n this.tail = tail;\r\n this.len += len;\r\n return this;\r\n};\r\n\r\n/**\r\n * Finishes the current sequence of write operations and frees all resources.\r\n * @returns {number[]} Finished buffer\r\n */\r\nWriterPrototype.finish = function finish() {\r\n var head = this.head.next, // skip noop\r\n buf = new ArrayImpl(this.len),\r\n pos = 0;\r\n this.reset();\r\n while (head) {\r\n head.fn(buf, pos, head.val);\r\n pos += head.len;\r\n head = head.next;\r\n }\r\n return buf;\r\n};\r\n\r\n/**\r\n * Constructs a new buffer writer.\r\n * @classdesc Wire format writer using node buffers.\r\n * @exports BufferWriter\r\n * @extends Writer\r\n * @constructor\r\n */\r\nfunction BufferWriter() {\r\n Writer.call(this);\r\n}\r\n\r\n/** @alias BufferWriter.prototype */\r\nvar BufferWriterPrototype = BufferWriter.prototype = Object.create(Writer.prototype);\r\nBufferWriterPrototype.constructor = BufferWriter;\r\n\r\nfunction writeFloatBuffer(buf, pos, val) {\r\n buf.writeFloatLE(val, pos, true);\r\n}\r\n\r\n/**\r\n * Writes a float (32 bit) using node buffers.\r\n * @param {number} value Value to write\r\n * @returns {BufferWriter} `this`\r\n */\r\nBufferWriterPrototype.float = function write_float_buffer(value) {\r\n return this.push(writeFloatBuffer, 4, value);\r\n};\r\n\r\nfunction writeDoubleBuffer(buf, pos, val) {\r\n buf.writeDoubleLE(val, pos, true);\r\n}\r\n\r\n/**\r\n * Writes a double (64 bit float) using node buffers.\r\n * @param {number} value Value to write\r\n * @returns {BufferWriter} `this`\r\n */\r\nBufferWriterPrototype.double = function write_double_buffer(value) {\r\n return this.push(writeDoubleBuffer, 8, value);\r\n};\r\n\r\nfunction writeBytesBuffer(buf, pos, val) {\r\n if (val.length)\r\n val.copy(buf, pos, 0, val.length);\r\n}\r\n\r\n/**\r\n * Writes a sequence of bytes using node buffers.\r\n * @param {Buffer} value Value to write\r\n * @returns {BufferWriter} `this`\r\n */\r\nBufferWriterPrototype.bytes = function write_bytes_buffer(value) {\r\n var len = value.length >>> 0;\r\n return len\r\n ? this.uint32(len).push(writeBytesBuffer, len, value)\r\n : this.push(writeByte, 1, 0);\r\n};\r\n\r\nfunction writeStringBuffer(buf, pos, val) {\r\n buf.write(val, pos);\r\n}\r\n\r\n/**\r\n * Writes a string using node buffers.\r\n * @param {string} value Value to write\r\n * @returns {BufferWriter} `this`\r\n */\r\nBufferWriterPrototype.string = function write_string_buffer(value) {\r\n var len = byteLength(value);\r\n return len\r\n ? this.uint32(len).push(writeStringBuffer, len, value)\r\n : this.push(writeByte, 1, 0);\r\n};\r\n\r\n/**\r\n * Finishes the current sequence of write operations using node buffers and frees all resources.\r\n * @returns {Buffer} Finished buffer\r\n */\r\nBufferWriterPrototype.finish = function finish_buffer() {\r\n var head = this.head.next, // skip noop\r\n buf = util.Buffer.allocUnsafe && util.Buffer.allocUnsafe(this.len) || new util.Buffer(this.len),\r\n pos = 0;\r\n this.reset();\r\n while (head) {\r\n head.fn(buf, pos, head.val);\r\n pos += head.len;\r\n head = head.next;\r\n }\r\n return buf;\r\n};\r\n","\"use strict\";\r\nvar protobuf = global.protobuf = exports;\r\n\r\nvar util = require(\"./util\");\r\n\r\n/**\r\n * Loads one or multiple .proto or preprocessed .json files into a common root namespace.\r\n * @param {string|string[]} filename One or multiple files to load\r\n * @param {Root} [root] Root namespace, defaults to create a new one if omitted.\r\n * @param {function(?Error, Root=)} [callback] Callback function\r\n * @returns {Promise|Object} A promise if callback has been omitted, otherwise the protobuf namespace\r\n * @throws {TypeError} If arguments are invalid\r\n */\r\nfunction load(filename, root, callback) {\r\n if (typeof root === 'function') {\r\n callback = root;\r\n root = new protobuf.Root();\r\n } else if (!root)\r\n root = new protobuf.Root();\r\n return root.load(filename, callback) || protobuf;\r\n}\r\n\r\nprotobuf.load = load;\r\n\r\n// Parser\r\nprotobuf.tokenize = require(\"./tokenize\");\r\nprotobuf.parse = require(\"./parse\");\r\n\r\n// Serialization\r\nprotobuf.Writer = require(\"./writer\");\r\nprotobuf.BufferWriter = protobuf.Writer.BufferWriter;\r\nprotobuf.Reader = require(\"./reader\");\r\nprotobuf.BufferReader = protobuf.Reader.BufferReader;\r\nprotobuf.Encoder = require(\"./encoder\");\r\nprotobuf.Decoder = require(\"./decoder\");\r\n\r\n// Reflection\r\nprotobuf.ReflectionObject = require(\"./object\");\r\nprotobuf.Namespace = require(\"./namespace\");\r\nprotobuf.Root = require(\"./root\");\r\nprotobuf.Enum = require(\"./enum\");\r\nprotobuf.Type = require(\"./type\");\r\nprotobuf.Field = require(\"./field\");\r\nprotobuf.OneOf = require(\"./oneof\");\r\nprotobuf.MapField = require(\"./mapfield\");\r\nprotobuf.Service = require(\"./service\");\r\nprotobuf.Method = require(\"./method\");\r\n\r\n// Runtime\r\nprotobuf.Prototype = require(\"./prototype\");\r\nprotobuf.inherits = require(\"./inherits\");\r\n\r\n// Utility\r\nprotobuf.types = require(\"./types\");\r\nprotobuf.common = require(\"./common\");\r\nprotobuf.util = util;\r\n"],"sourceRoot":"."} \ No newline at end of file +{"version":3,"sources":["node_modules/browser-pack/_prelude.js","lib/ieee754.js","src/common.js","src/decoder.js","src/encoder.js","src/enum.js","src/field.js","src/inherits.js","src/mapfield.js","src/method.js","src/namespace.js","src/object.js","src/oneof.js","src/parse.js","src/prototype.js","src/reader.js","src/root.js","src/service.js","src/tokenize.js","src/type.js","src/types.js","src/util.js","src/util/codegen.js","src/util/longbits.js","src/verifier.js","src/writer.js","src/index.js"],"names":["e","t","n","r","s","o","u","a","require","i","f","Error","code","l","exports","call","length","1","module","read","buffer","offset","isBE","mLen","nBytes","m","eLen","eMax","eBias","nBits","d","NaN","Infinity","Math","pow","write","value","c","rt","abs","isNaN","floor","log","LN2","common","name","json","test","nested","google","protobuf","Any","fields","type_url","type","id","timeType","Duration","seconds","nanos","Timestamp","Empty","Struct","keyType","Value","oneofs","kind","oneof","nullValue","numberValue","stringValue","boolValue","structValue","listValue","NullValue","values","NULL_VALUE","ListValue","rule","Decoder","this","Enum","Reader","types","util","DecoderPrototype","prototype","Object","defineProperties","fieldsById","get","getFieldsById","ctor","getCtor","decode","reader","limit","undefined","len","pos","message","tag","field","resolve","resolvedType","map","resolvedKeyType","uint32","ks","vs","basic","longToHash","repeated","packed","wireType","plimit","skipType","generate","getFieldsArray","gen","codegen","prop","safeProp","eof","getFullName","fld","toHash","Encoder","Writer","EncoderPrototype","fieldsArray","encode","writer","fi","keys","fork","mapKey","ldelim","required","long","longNeq","defaultValue","reset","keyWireType","options","ReflectionObject","_valuesById","clearCache","enm","EnumPrototype","extend","_TypeError","valuesById","getValuesById","forEach","testJSON","Boolean","fromJSON","toJSON","add","isString","isInteger","remove","Field","isObject","toString","toLowerCase","optional","partOf","Long","extensionField","declaringField","_packed","FieldPrototype","Type","MapField","isPacked","getOption","setOption","ifNotSet","role","resolved","typeDefault","defaults","parent","lookup","optionDefault","fromValue","jsonConvert","String","Number","toNumber","charAt","inherits","clazz","classProperties","$type","noStatics","merge","finish","encodeDelimited","decodeDelimited","verify","Prototype","constructor","noRegister","setCtor","prototypeProperties","getOneofsArray","set","MapFieldPrototype","Method","requestType","responseType","requestStream","responseStream","resolvedRequestType","resolvedResponseType","MethodPrototype","Namespace","_nestedArray","namespace","arrayToJSON","array","obj","NamespacePrototype","Service","nestedTypes","nestedError","join","nestedArray","getNestedArray","toArray","methods","addJSON","nestedJson","ns","nestedName","j","object","indexOf","prev","setOptions","onAdd","onRemove","define","path","split","Array","isArray","ptr","part","shift","resolveAll","parentAlreadyChecked","getRoot","slice","found","proto","create","Root","ReflectionObjectPrototype","root","fullName","unshift","_handleAdd","_handleRemove","OneOf","fieldNames","_fields","addFieldsToParent","OneOfPrototype","push","index","splice","lower","token","camelCase","substring","replace","$0","$1","toUpperCase","parse","source","illegal","tn","line","s_bclose","readString","next","s_dq","s_sq","skip","peek","readValue","acceptTypeRef","parseNumber","typeRefRe","readRange","start","parseId","end","s_semi","sign","tokenLower","parseInt","parseFloat","acceptNegative","parsePackage","pkg","s_name","parseImport","whichImports","weakImports","imports","parseSyntax","syntax","p3","isProto3","parseCommon","s_option","parseOption","parseType","parseEnum","parseService","parseExtension","nameRe","s_open","s_close","parseMapField","s_required","s_optional","s_repeated","parseField","parseOneOf","extensions","reserved","s_type","parseInlineOptions","valueType","parseEnumField","custom","s_bopen","fqTypeRefRe","parseOptionValue","service","parseMethod","st","method","reference","tokenize","head","package","properties","any","fieldsOnly","asJSON","key","indexOutOfRange","writeLength","RangeError","buf","Buffer","isBuffer","BufferReader","Tag","readLongVarint","lo","hi","b","LongBits","read_int64_long","toLong","read_int64_number","read_uint64_long","read_uint64_number","read_sint64_long","zzDecode","read_sint64_number","readLongFixed","read_fixed64_long","read_fixed64_number","read_sfixed64_long","read_sfixed64_number","initBufferReader","ieee754","ReaderPrototype","ArrayImpl","Uint8Array","_slice","subarray","int32","octet","sint32","int64","uint64","sint64","bool","fixed32","sfixed32","fixed64","sfixed64","float","double","bytes","string","out","p","c1","fromCharCode","apply","remain","BufferReaderPrototype","readFloatLE","readDoubleLE","deferred","files","handleExtension","extendedType","sisterField","RootPrototype","resolvePath","load","filename","callback","err","cb","process","JSON","parsed","self","fetch","queued","weak","idx","altname","setTimeout","asPromise","newDeferred","_methodsArray","ServicePrototype","methodsArray","getMethodsArray","methodName","inherited","unescape","str","subject","re","stringDelim","stringDoubleRe","stringSingleRe","lastIndex","match","exec","stack","repeat","curr","s_nl","s_sl","s_as","delimRe","delim","expected","actual","equals","_fieldsById","_fieldsArray","_oneofsArray","_ctor","TypePrototype","Verifier","names","oneofsArray","supported","P","fieldName","oneOfName","filter","encoder","readerOrBuffer","decoder","verifier","bake","emptyArray","freeze","fn","ctx","args","arguments","Promise","reject","concat","onload","xhr","status","responseText","fs","readFile","XMLHttpRequest","onreadystatechange","readyState","open","send","isAbsolutePath","normalizePath","parts","prefix","isNode","global","versions","node","dcodeIO","isFinite","description","TypeError","originPath","importPath","alreadyNormalized","from","longFromHash","hash","unsigned","bits","fromHash","fromBits","fromNumber","low","high","dst","src","newBuffer","size","fmt","level","indent","blockOpenRe","branchRe","casingRe","inCase","breakRe","blockCloseRe","format","params","param","stringify","scope","verbose","console","Function","LongBitsPrototype","zero","zzEncode","charCodeAt","mask","part0","part1","part2","VerifierPrototype","reason","hasReasonVar","Op","val","noop","State","tail","BufferWriter","writeByte","writeVarint32","writeVarint64","writeFixed32","writeFixed64","writeFloat","writeDouble","writeString","c2","byteLength","strlen","writeFloatBuffer","writeFloatLE","writeDoubleBuffer","writeDoubleLE","writeBytesBuffer","copy","writeStringBuffer","WriterPrototype","op","writeBytes","state","pop","BufferWriterPrototype","allocUnsafe"],"mappings":"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","file":"protobuf.min.js","sourcesContent":["(function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require==\"function\"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error(\"Cannot find module '\"+o+\"'\");throw f.code=\"MODULE_NOT_FOUND\",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require==\"function\"&&require;for(var o=0;o> 1,\r\n nBits = -7,\r\n i = isBE ? 0 : (nBytes - 1),\r\n d = isBE ? 1 : -1,\r\n s = buffer[offset + i];\r\n\r\n i += d;\r\n\r\n e = s & ((1 << (-nBits)) - 1);\r\n s >>= (-nBits);\r\n nBits += eLen;\r\n for (; nBits > 0; e = e * 256 + buffer[offset + i], i += d, nBits -= 8);\r\n\r\n m = e & ((1 << (-nBits)) - 1);\r\n e >>= (-nBits);\r\n nBits += mLen;\r\n for (; nBits > 0; m = m * 256 + buffer[offset + i], i += d, nBits -= 8);\r\n\r\n if (e === 0) {\r\n e = 1 - eBias;\r\n } else if (e === eMax) {\r\n return m ? NaN : ((s ? -1 : 1) * Infinity);\r\n } else {\r\n m = m + Math.pow(2, mLen);\r\n e = e - eBias;\r\n }\r\n return (s ? -1 : 1) * m * Math.pow(2, e - mLen);\r\n};\r\n\r\nexports.write = function writeIEEE754(buffer, value, offset, isBE, mLen, nBytes) {\r\n var e, m, c,\r\n eLen = nBytes * 8 - mLen - 1,\r\n eMax = (1 << eLen) - 1,\r\n eBias = eMax >> 1,\r\n rt = (mLen === 23 ? Math.pow(2, -24) - Math.pow(2, -77) : 0),\r\n i = isBE ? (nBytes - 1) : 0,\r\n d = isBE ? -1 : 1,\r\n s = value < 0 || (value === 0 && 1 / value < 0) ? 1 : 0;\r\n\r\n value = Math.abs(value);\r\n\r\n if (isNaN(value) || value === Infinity) {\r\n m = isNaN(value) ? 1 : 0;\r\n e = eMax;\r\n } else {\r\n e = Math.floor(Math.log(value) / Math.LN2);\r\n if (value * (c = Math.pow(2, -e)) < 1) {\r\n e--;\r\n c *= 2;\r\n }\r\n if (e + eBias >= 1) {\r\n value += rt / c;\r\n } else {\r\n value += rt * Math.pow(2, 1 - eBias);\r\n }\r\n if (value * c >= 2) {\r\n e++;\r\n c /= 2;\r\n }\r\n\r\n if (e + eBias >= eMax) {\r\n m = 0;\r\n e = eMax;\r\n } else if (e + eBias >= 1) {\r\n m = (value * c - 1) * Math.pow(2, mLen);\r\n e = e + eBias;\r\n } else {\r\n m = value * Math.pow(2, eBias - 1) * Math.pow(2, mLen);\r\n e = 0;\r\n }\r\n }\r\n\r\n for (; mLen >= 8; buffer[offset + i] = m & 0xff, i += d, m /= 256, mLen -= 8);\r\n\r\n e = (e << mLen) | m;\r\n eLen += mLen;\r\n for (; eLen > 0; buffer[offset + i] = e & 0xff, i += d, e /= 256, eLen -= 8);\r\n\r\n buffer[offset + i - d] |= s * 128;\r\n};\r\n","\"use strict\";\r\n\r\nmodule.exports = common;\r\n\r\n/**\r\n * Provides common type definitions.\r\n * Can also be used to provide additional google types or your own custom types.\r\n * @param {string} name Short name as in `google/protobuf/[name].proto` or full file name\r\n * @param {Object} json JSON definition within `google.protobuf` if a short name, otherwise the file's root definition\r\n * @returns {undefined}\r\n * @property {Object} google/protobuf/any.proto Any\r\n * @property {Object} google/protobuf/duration.proto Duration\r\n * @property {Object} google/protobuf/empty.proto Empty\r\n * @property {Object} google/protobuf/struct.proto Struct, Value, NullValue and ListValue\r\n * @property {Object} google/protobuf/timestamp.proto Timestamp\r\n */\r\nfunction common(name, json) {\r\n if (!/\\/|\\./.test(name)) {\r\n name = \"google/protobuf/\" + name + \".proto\";\r\n json = { nested: { google: { nested: { protobuf: { nested: json } } } } };\r\n }\r\n common[name] = json;\r\n}\r\n\r\n// Not provided because of limited use (feel free to discuss or to provide yourself):\r\n// - google/protobuf/descriptor.proto\r\n// - google/protobuf/field_mask.proto\r\n// - google/protobuf/source_context.proto\r\n// - google/protobuf/type.proto\r\n// - google/protobuf/wrappers.proto\r\n\r\ncommon(\"any\", {\r\n Any: {\r\n fields: {\r\n type_url: {\r\n type: \"string\",\r\n id: 1\r\n },\r\n value: {\r\n type: \"bytes\",\r\n id: 2\r\n }\r\n }\r\n }\r\n});\r\n\r\nvar timeType;\r\n\r\ncommon(\"duration\", {\r\n Duration: timeType = {\r\n fields: {\r\n seconds: {\r\n type: \"int64\",\r\n id: 1\r\n },\r\n nanos: {\r\n type: \"int32\",\r\n id: 2\r\n }\r\n }\r\n }\r\n});\r\n\r\ncommon(\"timestamp\", {\r\n Timestamp: timeType\r\n});\r\n\r\ncommon(\"empty\", {\r\n Empty: {\r\n fields: {}\r\n }\r\n});\r\n\r\ncommon(\"struct\", {\r\n Struct: {\r\n fields: {\r\n fields: {\r\n keyType: \"string\",\r\n type: \"Value\",\r\n id: 1\r\n }\r\n }\r\n },\r\n Value: {\r\n oneofs: {\r\n kind: {\r\n oneof: [ \"nullValue\", \"numberValue\", \"stringValue\", \"boolValue\", \"structValue\", \"listValue\" ]\r\n }\r\n },\r\n fields: {\r\n nullValue: {\r\n type: \"NullValue\",\r\n id: 1\r\n },\r\n numberValue: {\r\n type: \"double\",\r\n id: 2\r\n },\r\n stringValue: {\r\n type: \"string\",\r\n id: 3\r\n },\r\n boolValue: {\r\n type: \"bool\",\r\n id: 4\r\n },\r\n structValue: {\r\n type: \"Struct\",\r\n id: 5\r\n },\r\n listValue: {\r\n type: \"ListValue\",\r\n id: 6\r\n }\r\n }\r\n },\r\n NullValue: {\r\n values: {\r\n NULL_VALUE: 0\r\n }\r\n },\r\n ListValue: {\r\n fields: {\r\n values: {\r\n rule: \"repeated\",\r\n type: \"Value\",\r\n id: 1\r\n }\r\n }\r\n }\r\n});\r\n","\"use strict\";\r\nmodule.exports = Decoder;\r\n\r\nvar Enum = require(5),\r\n Reader = require(15),\r\n types = require(20),\r\n util = require(21);\r\n\r\n/**\r\n * Constructs a new decoder for the specified message type.\r\n * @classdesc Wire format decoder using code generation on top of reflection.\r\n * @constructor\r\n * @param {Type} type Message type\r\n */\r\nfunction Decoder(type) {\r\n\r\n /**\r\n * Message type.\r\n * @type {Type}\r\n */\r\n this.type = type;\r\n}\r\n\r\n/** @alias Decoder.prototype */\r\nvar DecoderPrototype = Decoder.prototype;\r\n\r\n// This is here to mimic Type so that fallback functions work without having to bind()\r\nObject.defineProperties(DecoderPrototype, {\r\n\r\n /**\r\n * Fields of this decoder's message type by id for lookups.\r\n * @name Decoder#fieldsById\r\n * @type {Object.}\r\n * @readonly\r\n */\r\n fieldsById: {\r\n get: DecoderPrototype.getFieldsById = function getFieldsById() {\r\n return this.type.getFieldsById();\r\n }\r\n },\r\n\r\n /**\r\n * With this decoder's message type registered constructor, if any registered, otherwise a generic constructor.\r\n * @name Decoder#ctor\r\n * @type {Prototype}\r\n */\r\n ctor: {\r\n get: DecoderPrototype.getCtor = function getCtor() {\r\n return this.type.getCtor();\r\n }\r\n }\r\n});\r\n\r\n/**\r\n * Decodes a message of this decoder's message type.\r\n * @param {Reader} reader Reader to decode from\r\n * @param {number} [length] Length of the message, if known beforehand\r\n * @returns {Prototype} Populated runtime message\r\n */\r\nDecoderPrototype.decode = function decode_fallback(reader, length) { // codegen reference and fallback\r\n /* eslint-disable no-invalid-this, block-scoped-var, no-redeclare */\r\n var fields = this.getFieldsById(),\r\n reader = reader instanceof Reader ? reader : Reader(reader),\r\n limit = length === undefined ? reader.len : reader.pos + length,\r\n message = new (this.getCtor())();\r\n while (reader.pos < limit) {\r\n var tag = reader.tag(),\r\n field = fields[tag.id].resolve(),\r\n type = field.resolvedType instanceof Enum ? \"uint32\" : field.type;\r\n \r\n // Known fields\r\n if (field) {\r\n\r\n // Map fields\r\n if (field.map) {\r\n var keyType = field.resolvedKeyType /* only valid is enum */ ? \"uint32\" : field.keyType,\r\n length = reader.uint32();\r\n var map = message[field.name] = {};\r\n if (length) {\r\n length += reader.pos;\r\n var ks = [], vs = [];\r\n while (reader.pos < length) {\r\n if (reader.tag().id === 1)\r\n ks[ks.length] = reader[keyType]();\r\n else if (types.basic[type] !== undefined)\r\n vs[vs.length] = reader[type]();\r\n else\r\n vs[vs.length] = field.resolvedType.decode(reader, reader.uint32());\r\n }\r\n for (var i = 0; i < ks.length; ++i)\r\n map[typeof ks[i] === 'object' ? util.longToHash(ks[i]) : ks[i]] = vs[i];\r\n }\r\n\r\n // Repeated fields\r\n } else if (field.repeated) {\r\n var values = message[field.name] || (message[field.name] = []);\r\n\r\n // Packed\r\n if (field.packed && types.packed[type] !== undefined && tag.wireType === 2) {\r\n var plimit = reader.uint32() + reader.pos;\r\n while (reader.pos < plimit)\r\n values[values.length] = reader[type]();\r\n\r\n // Non-packed\r\n } else if (types.basic[type] !== undefined)\r\n values[values.length] = reader[type]();\r\n else\r\n values[values.length] = field.resolvedType.decode(reader, reader.uint32());\r\n\r\n // Non-repeated\r\n } else if (types.basic[type] !== undefined)\r\n message[field.name] = reader[type]();\r\n else\r\n message[field.name] = field.resolvedType.decode(reader, reader.uint32());\r\n\r\n // Unknown fields\r\n } else\r\n reader.skipType(tag.wireType);\r\n }\r\n return message;\r\n /* eslint-enable no-invalid-this, block-scoped-var, no-redeclare */\r\n};\r\n\r\n/**\r\n * Generates a decoder specific to this decoder's message type.\r\n * @returns {function} Decoder function with an identical signature to {@link Decoder#decode}\r\n */\r\nDecoderPrototype.generate = function generate() {\r\n /* eslint-disable no-unexpected-multiline */\r\n var fields = this.type.getFieldsArray(); \r\n var gen = util.codegen(\"r\", \"l\")\r\n\r\n (\"r instanceof Reader||(r=Reader(r))\")\r\n (\"var c=l===undefined?r.len:r.pos+l,m=new (this.getCtor())()\")\r\n (\"while(r.pos} [values] Enum values as an object, by name\r\n * @param {Object} [options] Declared options\r\n */\r\nfunction Enum(name, values, options) {\r\n ReflectionObject.call(this, name, options);\r\n\r\n /**\r\n * Enum values by name.\r\n * @type {Object.}\r\n */\r\n this.values = values || {}; // toJSON, marker\r\n\r\n /**\r\n * Cached values by id.\r\n * @type {?Object.}\r\n * @private\r\n */\r\n this._valuesById = null;\r\n}\r\n\r\nObject.defineProperties(EnumPrototype, {\r\n\r\n /**\r\n * Enum values by id.\r\n * @name Enum#valuesById\r\n * @type {Object.}\r\n * @readonly\r\n */\r\n valuesById: {\r\n get: EnumPrototype.getValuesById = function getValuesById() {\r\n if (!this._valuesById) {\r\n this._valuesById = {};\r\n Object.keys(this.values).forEach(function(name) {\r\n var id = this.values[name];\r\n if (this._valuesById[id])\r\n throw Error(\"duplicate id \" + id + \" in \" + this);\r\n this._valuesById[id] = name;\r\n }, this);\r\n }\r\n return this._valuesById;\r\n }\r\n }\r\n});\r\n\r\nfunction clearCache(enm) {\r\n enm._valuesById = null;\r\n return enm;\r\n}\r\n\r\n/**\r\n * Tests if the specified JSON object describes an enum.\r\n * @param {*} json JSON object to test\r\n * @returns {boolean} `true` if the object describes an enum\r\n */\r\nEnum.testJSON = function testJSON(json) {\r\n return Boolean(json && json.values);\r\n};\r\n\r\n/**\r\n * Creates an enum from JSON.\r\n * @param {string} name Enum name\r\n * @param {Object.} json JSON object\r\n * @returns {Enum} Created enum\r\n * @throws {TypeError} If arguments are invalid\r\n */\r\nEnum.fromJSON = function fromJSON(name, json) {\r\n return new Enum(name, json.values, json.options);\r\n};\r\n\r\n/**\r\n * @override\r\n */\r\nEnumPrototype.toJSON = function toJSON() {\r\n return {\r\n options : this.options,\r\n values : this.values\r\n };\r\n};\r\n\r\n/**\r\n * Adds a value to this enum.\r\n * @param {string} name Value name\r\n * @param {number} id Value id\r\n * @returns {Enum} `this`\r\n * @throws {TypeError} If arguments are invalid\r\n * @throws {Error} If there is already a value with this name or id\r\n */\r\nEnumPrototype.add = function(name, id) {\r\n if (!util.isString(name))\r\n throw _TypeError(\"name\");\r\n if (!util.isInteger(id) || id < 0)\r\n throw _TypeError(\"id\", \"a non-negative integer\");\r\n if (this.values[name] !== undefined)\r\n throw Error('duplicate name \"' + name + '\" in ' + this);\r\n if (this.getValuesById()[id] !== undefined)\r\n throw Error(\"duplicate id \" + id + \" in \" + this);\r\n this.values[name] = id;\r\n return clearCache(this);\r\n};\r\n\r\n/**\r\n * Removes a value from this enum\r\n * @param {string} name Value name\r\n * @returns {Enum} `this`\r\n * @throws {TypeError} If arguments are invalid\r\n * @throws {Error} If `name` is not a name of this enum\r\n */\r\nEnumPrototype.remove = function(name) {\r\n if (!util.isString(name))\r\n throw _TypeError(\"name\");\r\n if (this.values[name] === undefined)\r\n throw Error('\"' + name + '\" is not a name of ' + this);\r\n delete this.values[name];\r\n return clearCache(this);\r\n};\r\n","\"use strict\";\r\nmodule.exports = Field;\r\n\r\nvar ReflectionObject = require(11);\r\n/** @alias Field.prototype */\r\nvar FieldPrototype = ReflectionObject.extend(Field);\r\n\r\nvar Type = require(19),\r\n Enum = require(5),\r\n MapField = require(8),\r\n types = require(20),\r\n util = require(21);\r\n\r\nvar _TypeError = util._TypeError;\r\n\r\n/**\r\n * Constructs a new message field. Note that {@link MapField|map fields} have their own class.\r\n * @classdesc Reflected message field.\r\n * @extends ReflectionObject\r\n * @constructor\r\n * @param {string} name Unique name within its namespace\r\n * @param {number} id Unique id within its namespace\r\n * @param {string} type Value type\r\n * @param {string} [rule=optional] Field rule\r\n * @param {string} [extend] Extended type if different from parent\r\n * @param {Object} [options] Declared options\r\n */\r\nfunction Field(name, id, type, rule, extend, options) {\r\n if (util.isObject(rule)) {\r\n options = rule;\r\n rule = extend = undefined;\r\n } else if (util.isObject(extend)) {\r\n options = extend;\r\n extend = undefined;\r\n }\r\n ReflectionObject.call(this, name, options);\r\n if (!util.isInteger(id) || id < 0)\r\n throw _TypeError(\"id\", \"a non-negative integer\");\r\n if (!util.isString(type))\r\n throw _TypeError(\"type\");\r\n if (extend !== undefined && !util.isString(extend))\r\n throw _TypeError(\"extend\");\r\n if (rule !== undefined && !/^required|optional|repeated$/.test(rule = rule.toString().toLowerCase()))\r\n throw _TypeError(\"rule\", \"a valid rule string\");\r\n\r\n /**\r\n * Field rule, if any.\r\n * @type {string|undefined}\r\n */\r\n this.rule = rule && rule !== 'optional' ? rule : undefined; // toJSON\r\n\r\n /**\r\n * Field type.\r\n * @type {string}\r\n */\r\n this.type = type; // toJSON\r\n\r\n /**\r\n * Unique field id.\r\n * @type {number}\r\n */\r\n this.id = id; // toJSON, marker\r\n\r\n /**\r\n * Extended type if different from parent.\r\n * @type {string|undefined}\r\n */\r\n this.extend = extend || undefined; // toJSON\r\n\r\n /**\r\n * Whether this field is required.\r\n * @type {boolean}\r\n */\r\n this.required = rule === \"required\";\r\n\r\n /**\r\n * Whether this field is optional.\r\n * @type {boolean}\r\n */\r\n this.optional = !this.required;\r\n\r\n /**\r\n * Whether this field is repeated.\r\n * @type {boolean}\r\n */\r\n this.repeated = rule === \"repeated\";\r\n\r\n /**\r\n * Whether this field is a map or not.\r\n * @type {boolean}\r\n */\r\n this.map = false;\r\n\r\n /**\r\n * Message this field belongs to.\r\n * @type {?Type}\r\n */\r\n this.message = null;\r\n\r\n /**\r\n * OneOf this field belongs to, if any,\r\n * @type {?OneOf}\r\n */\r\n this.partOf = null;\r\n\r\n /**\r\n * The field's default value. Only relevant when working with proto2.\r\n * @type {*}\r\n */\r\n this.defaultValue = null;\r\n\r\n /**\r\n * Whether this field's value should be treated as a long.\r\n * @type {boolean}\r\n */\r\n this.long = util.Long ? types.long[type] !== undefined : false;\r\n\r\n /**\r\n * Resolved type if not a basic type.\r\n * @type {?(Type|Enum)}\r\n */\r\n this.resolvedType = null;\r\n\r\n /**\r\n * Sister-field within the extended type if a declaring extension field.\r\n * @type {?Field}\r\n */\r\n this.extensionField = null;\r\n\r\n /**\r\n * Sister-field within the declaring namespace if an extended field.\r\n * @type {?Field}\r\n */\r\n this.declaringField = null;\r\n\r\n /**\r\n * Internally remembers whether this field is packed.\r\n * @type {?boolean}\r\n * @private\r\n */\r\n this._packed = null;\r\n}\r\n\r\nObject.defineProperties(FieldPrototype, {\r\n\r\n /**\r\n * Determines whether this field is packed. Only relevant when repeated and working with proto2.\r\n * @name Field#packed\r\n * @type {boolean}\r\n * @readonly\r\n */\r\n packed: {\r\n get: FieldPrototype.isPacked = function() {\r\n if (this._packed === null)\r\n this._packed = this.getOption(\"packed\") !== false;\r\n return this._packed;\r\n }\r\n }\r\n\r\n});\r\n\r\n/**\r\n * @override\r\n */\r\nFieldPrototype.setOption = function setOption(name, value, ifNotSet) {\r\n if (name === \"packed\")\r\n this._packed = null;\r\n return ReflectionObject.prototype.setOption.call(this, name, value, ifNotSet);\r\n};\r\n\r\n/**\r\n * Tests if the specified JSON object describes a field.\r\n * @param {*} json Any JSON object to test\r\n * @returns {boolean} `true` if the object describes a field\r\n */\r\nField.testJSON = function testJSON(json) {\r\n return Boolean(json && json.id !== undefined);\r\n};\r\n\r\n/**\r\n * Constructs a field from JSON.\r\n * @param {string} name Field name\r\n * @param {Object} json JSON object\r\n * @returns {Field} Created field\r\n * @throws {TypeError} If arguments are invalid\r\n */\r\nField.fromJSON = function fromJSON(name, json) {\r\n if (json.keyType !== undefined)\r\n return MapField.fromJSON(name, json);\r\n return new Field(name, json.id, json.type, json.role, json.extend, json.options);\r\n};\r\n\r\n/**\r\n * @override\r\n */\r\nFieldPrototype.toJSON = function toJSON() {\r\n return {\r\n rule : this.rule !== \"optional\" && this.rule || undefined,\r\n type : this.type,\r\n id : this.id,\r\n extend : this.extend,\r\n options : this.options\r\n };\r\n};\r\n\r\n/**\r\n * Resolves this field's type references.\r\n * @returns {Field} `this`\r\n * @throws {Error} If any reference cannot be resolved\r\n */\r\nFieldPrototype.resolve = function resolve() {\r\n if (this.resolved)\r\n return this;\r\n\r\n var typeDefault = types.defaults[this.type];\r\n\r\n // if not a basic type, resolve it\r\n if (typeDefault === undefined) {\r\n var resolved = this.parent.lookup(this.type);\r\n if (resolved instanceof Type) {\r\n this.resolvedType = resolved;\r\n typeDefault = null;\r\n } else if (resolved instanceof Enum) {\r\n this.resolvedType = resolved;\r\n typeDefault = 0;\r\n } else\r\n throw Error(\"unresolvable field type: \" + this.type);\r\n }\r\n\r\n // when everything is resolved determine the default value\r\n var optionDefault;\r\n if (this.map)\r\n this.defaultValue = {};\r\n else if (this.repeated)\r\n this.defaultValue = [];\r\n else if (this.options && (optionDefault = this.options['default']) !== undefined) // eslint-disable-line dot-notation\r\n this.defaultValue = optionDefault;\r\n else\r\n this.defaultValue = typeDefault;\r\n\r\n if (this.long)\r\n this.defaultValue = util.Long.fromValue(this.defaultValue);\r\n \r\n return ReflectionObject.prototype.resolve.call(this);\r\n};\r\n\r\n/**\r\n * Converts a field value to JSON using the specified options. Note that this method does not account for repeated fields and must be called once for each repeated element instead.\r\n * @param {*} value Field value\r\n * @param {Object.} [options] Conversion options\r\n * @returns {*} Converted value\r\n * @see {@link Prototype#asJSON}\r\n */\r\nFieldPrototype.jsonConvert = function(value, options) {\r\n if (options) {\r\n if (this.resolvedType instanceof Enum && options['enum'] === String) // eslint-disable-line dot-notation\r\n return this.resolvedType.getValuesById()[value];\r\n else if (this.long && options.long)\r\n return options.long === Number\r\n ? typeof value === 'number'\r\n ? value\r\n : util.Long.fromValue(value).toNumber()\r\n : util.Long.fromValue(value, this.type.charAt(0) === 'u').toString();\r\n }\r\n return value;\r\n};\r\n","\"use strict\";\r\nmodule.exports = inherits;\r\n\r\nvar Prototype = require(14),\r\n Type = require(19),\r\n util = require(21);\r\n\r\nvar _TypeError = util._TypeError;\r\n\r\n/**\r\n * Options passed to {@link inherits}, modifying its behavior.\r\n * @typedef InheritanceOptions\r\n * @type {Object}\r\n * @property {boolean} [noStatics=false] Skips adding the default static methods on top of the constructor\r\n * @property {boolean} [noRegister=false] Skips registering the constructor with the reflected type\r\n */\r\n\r\n/**\r\n * Inherits a custom class from the message prototype of the specified message type.\r\n * @param {Function} clazz Inheriting class\r\n * @param {Type} type Inherited message type\r\n * @param {InheritanceOptions} [options] Inheritance options\r\n * @returns {Prototype} Created prototype\r\n */\r\nfunction inherits(clazz, type, options) {\r\n if (typeof clazz !== 'function')\r\n throw _TypeError(\"clazz\", \"a function\");\r\n if (!(type instanceof Type))\r\n throw _TypeError(\"type\", \"a Type\");\r\n if (!options)\r\n options = {};\r\n\r\n /**\r\n * This is not an actual type but stands as a reference for any constructor of a custom message class that you pass to the library.\r\n * @name Class\r\n * @extends Prototype\r\n * @constructor\r\n * @param {Object.} [properties] Properties to set on the message\r\n * @see {@link inherits}\r\n */\r\n\r\n var classProperties = {\r\n \r\n /**\r\n * Reference to the reflected type.\r\n * @name Class.$type\r\n * @type {Type}\r\n * @readonly\r\n */\r\n $type: {\r\n value: type\r\n }\r\n };\r\n\r\n if (!options.noStatics)\r\n util.merge(classProperties, {\r\n\r\n /**\r\n * Encodes a message of this type to a buffer.\r\n * @name Class.encode\r\n * @function\r\n * @param {Prototype|Object} message Message to encode\r\n * @param {Writer} [writer] Writer to use\r\n * @returns {Uint8Array} Encoded message\r\n */\r\n encode: {\r\n value: function encode(message, writer) {\r\n return this.$type.encode(message, writer).finish();\r\n }\r\n },\r\n\r\n /**\r\n * Encodes a message of this type preceeded by its length as a varint to a buffer.\r\n * @name Class.encodeDelimited\r\n * @function\r\n * @param {Prototype|Object} message Message to encode\r\n * @param {Writer} [writer] Writer to use\r\n * @returns {Uint8Array} Encoded message\r\n */\r\n encodeDelimited: {\r\n value: function encodeDelimited(message, writer) {\r\n return this.$type.encodeDelimited(message, writer).finish();\r\n }\r\n },\r\n\r\n /**\r\n * Decodes a message of this type from a buffer.\r\n * @name Class.decode\r\n * @function\r\n * @param {Uint8Array} buffer Buffer to decode\r\n * @returns {Prototype} Decoded message\r\n */\r\n decode: {\r\n value: function decode(buffer) {\r\n return this.$type.decode(buffer);\r\n }\r\n },\r\n\r\n /**\r\n * Decodes a message of this type preceeded by its length as a varint from a buffer.\r\n * @name Class.decodeDelimited\r\n * @function\r\n * @param {Uint8Array} buffer Buffer to decode\r\n * @returns {Prototype} Decoded message\r\n */\r\n decodeDelimited: {\r\n value: function decodeDelimited(buffer) {\r\n return this.$type.decodeDelimited(buffer);\r\n }\r\n },\r\n\r\n /**\r\n * Verifies a message of this type.\r\n * @name Class.verify\r\n * @function\r\n * @param {Prototype|Object} message Message or plain object to verify\r\n * @returns {?string} `null` if valid, otherwise the reason why it is not\r\n */\r\n verify: {\r\n value: function verify(message) {\r\n return this.$type.verify(message);\r\n }\r\n }\r\n\r\n }, true);\r\n\r\n Object.defineProperties(clazz, classProperties);\r\n var prototype = inherits.defineProperties(new Prototype(), type);\r\n clazz.prototype = prototype;\r\n prototype.constructor = clazz;\r\n\r\n if (!options.noRegister)\r\n type.setCtor(clazz);\r\n\r\n return prototype;\r\n}\r\n\r\n/**\r\n * Defines the reflected type's default values and virtual oneof properties on the specified prototype.\r\n * @memberof inherits\r\n * @param {Prototype} prototype Prototype to define properties upon\r\n * @param {Type} type Reflected message type\r\n * @returns {Prototype} The specified prototype\r\n */\r\ninherits.defineProperties = function defineProperties(prototype, type) {\r\n\r\n var prototypeProperties = {\r\n\r\n /**\r\n * Reference to the reflected type.\r\n * @name Prototype#$type\r\n * @type {Type}\r\n * @readonly\r\n */\r\n $type: {\r\n value: type\r\n }\r\n };\r\n\r\n // Initialize default values\r\n type.getFieldsArray().forEach(function(field) {\r\n field.resolve();\r\n if (!util.isObject(field.defaultValue))\r\n // objects are mutable (i.e. would modify the array on the prototype, not the instance)\r\n prototype[field.name] = field.defaultValue;\r\n });\r\n\r\n // Define each oneof with a non-enumerable getter and setter for the present field\r\n type.getOneofsArray().forEach(function(oneof) {\r\n prototypeProperties[oneof.resolve().name] = {\r\n get: function() {\r\n var keys = oneof.oneof;\r\n for (var i = 0; i < keys.length; ++i) {\r\n var field = oneof.parent.fields[keys[i]];\r\n if (this[keys[i]] != field.defaultValue) // eslint-disable-line eqeqeq\r\n return keys[i];\r\n }\r\n return undefined;\r\n },\r\n set: function(value) {\r\n var keys = oneof.oneof;\r\n for (var i = 0; i < keys.length; ++i) {\r\n if (keys[i] !== value)\r\n delete this[keys[i]];\r\n }\r\n }\r\n };\r\n });\r\n\r\n Object.defineProperties(prototype, prototypeProperties);\r\n return prototype;\r\n};\r\n","\"use strict\";\r\nmodule.exports = MapField;\r\n\r\nvar Field = require(6);\r\n/** @alias Field.prototype */\r\nvar FieldPrototype = Field.prototype;\r\n/** @alias MapField.prototype */\r\nvar MapFieldPrototype = Field.extend(MapField);\r\n\r\nvar Enum = require(5),\r\n types = require(20),\r\n util = require(21);\r\n\r\n/**\r\n * Constructs a new map field.\r\n * @classdesc Reflected map field.\r\n * @extends Field\r\n * @constructor\r\n * @param {string} name Unique name within its namespace\r\n * @param {number} id Unique id within its namespace\r\n * @param {string} keyType Key type\r\n * @param {string} type Value type\r\n * @param {Object} [options] Declared options\r\n */\r\nfunction MapField(name, id, keyType, type, options) {\r\n Field.call(this, name, id, type, options);\r\n if (!util.isString(keyType))\r\n throw util._TypeError(\"keyType\");\r\n \r\n /**\r\n * Key type.\r\n * @type {string}\r\n */\r\n this.keyType = keyType; // toJSON, marker\r\n\r\n /**\r\n * Resolved key type if not a basic type.\r\n * @type {?ReflectionObject}\r\n */\r\n this.resolvedKeyType = null;\r\n\r\n // Overrides Field#map\r\n this.map = true;\r\n}\r\n\r\n/**\r\n * Tests if the specified JSON object describes a map field.\r\n * @param {Object} json JSON object to test\r\n * @returns {boolean} `true` if the object describes a field\r\n */\r\nMapField.testJSON = function testJSON(json) {\r\n return Field.testJSON(json) && json.keyType !== undefined;\r\n};\r\n\r\n/**\r\n * Constructs a map field from JSON.\r\n * @param {string} name Field name\r\n * @param {Object} json JSON object\r\n * @returns {MapField} Created map field\r\n * @throws {TypeError} If arguments are invalid\r\n */\r\nMapField.fromJSON = function fromJSON(name, json) {\r\n return new MapField(name, json.id, json.keyType, json.type, json.options);\r\n};\r\n\r\n/**\r\n * @override\r\n */\r\nMapFieldPrototype.toJSON = function toJSON() {\r\n return {\r\n keyType : this.keyType,\r\n type : this.type,\r\n id : this.id,\r\n extend : this.extend,\r\n options : this.options\r\n };\r\n};\r\n\r\n/**\r\n * @override\r\n */\r\nMapFieldPrototype.resolve = function resolve() {\r\n if (this.resolved)\r\n return this;\r\n \r\n // Besides a value type, map fields have a key type to resolve\r\n var keyWireType = types.mapKey[this.keyType];\r\n if (keyWireType === undefined) {\r\n var resolved = this.parent.lookup(this.keyType);\r\n if (!(resolved instanceof Enum))\r\n throw Error(\"unresolvable map key type: \" + this.keyType);\r\n this.resolvedKeyType = resolved;\r\n }\r\n\r\n return FieldPrototype.resolve.call(this);\r\n};\r\n","\"use strict\";\r\nmodule.exports = Method;\r\n\r\nvar ReflectionObject = require(11);\r\n/** @alias Method.prototype */\r\nvar MethodPrototype = ReflectionObject.extend(Method);\r\n\r\nvar Type = require(19),\r\n util = require(21);\r\n\r\nvar _TypeError = util._TypeError;\r\n\r\n/**\r\n * Constructs a new service method.\r\n * @classdesc Reflected service method.\r\n * @extends ReflectionObject\r\n * @constructor\r\n * @param {string} name Method name\r\n * @param {string|undefined} type Method type, usually `\"rpc\"`\r\n * @param {string} requestType Request message type\r\n * @param {string} responseType Response message type\r\n * @param {boolean} [requestStream] Whether the request is streamed\r\n * @param {boolean} [responseStream] Whether the response is streamed\r\n * @param {Object} [options] Declared options\r\n */\r\nfunction Method(name, type, requestType, responseType, requestStream, responseStream, options) {\r\n if (util.isObject(requestStream)) {\r\n options = requestStream;\r\n requestStream = responseStream = undefined;\r\n } else if (util.isObject(responseStream)) {\r\n options = responseStream;\r\n responseStream = undefined;\r\n }\r\n if (!util.isString(type))\r\n throw _TypeError(\"type\");\r\n if (!util.isString(requestType))\r\n throw _TypeError(\"requestType\");\r\n if (!util.isString(responseType))\r\n throw _TypeError(\"responseType\");\r\n\r\n ReflectionObject.call(this, name, options);\r\n\r\n /**\r\n * Method type.\r\n * @type {string}\r\n */\r\n this.type = type || \"rpc\"; // toJSON\r\n\r\n /**\r\n * Request type.\r\n * @type {string}\r\n */\r\n this.requestType = requestType; // toJSON, marker\r\n\r\n /**\r\n * Whether requests are streamed or not.\r\n * @type {boolean|undefined}\r\n */\r\n this.requestStream = requestStream ? true : undefined; // toJSON\r\n\r\n /**\r\n * Response type.\r\n * @type {string}\r\n */\r\n this.responseType = responseType; // toJSON\r\n\r\n /**\r\n * Whether responses are streamed or not.\r\n * @type {boolean|undefined}\r\n */\r\n this.responseStream = responseStream ? true : undefined; // toJSON\r\n\r\n /**\r\n * Resolved request type.\r\n * @type {?Type}\r\n */\r\n this.resolvedRequestType = null;\r\n\r\n /**\r\n * Resolved response type.\r\n * @type {?Type}\r\n */\r\n this.resolvedResponseType = null;\r\n}\r\n\r\n/**\r\n * Tests if the specified JSON object describes a service method.\r\n * @param {Object} json JSON object\r\n * @returns {boolean} `true` if the object describes a map field\r\n */\r\nMethod.testJSON = function testJSON(json) {\r\n return Boolean(json && json.requestType !== undefined);\r\n};\r\n\r\n/**\r\n * Constructs a service method from JSON.\r\n * @param {string} name Method name\r\n * @param {Object} json JSON object\r\n * @returns {Method} Created method\r\n * @throws {TypeError} If arguments are invalid\r\n */\r\nMethod.fromJSON = function fromJSON(name, json) {\r\n return new Method(name, json.type, json.requestType, json.responseType, json.requestStream, json.responseStream, json.options);\r\n};\r\n\r\n/**\r\n * @override\r\n */\r\nMethodPrototype.toJSON = function toJSON() {\r\n return {\r\n type : this.type !== \"rpc\" && this.type || undefined,\r\n requestType : this.requestType,\r\n requestStream : this.requestStream,\r\n responseType : this.responseType,\r\n responseStream : this.responseStream,\r\n options : this.options\r\n };\r\n};\r\n\r\n/**\r\n * @override\r\n */\r\nMethodPrototype.resolve = function resolve() {\r\n if (this.resolved)\r\n return this;\r\n var resolved = this.parent.lookup(this.requestType);\r\n if (!(resolved && resolved instanceof Type))\r\n throw Error(\"unresolvable request type: \" + this.requestType);\r\n this.resolvedRequestType = resolved;\r\n resolved = this.parent.lookup(this.responseType);\r\n if (!(resolved && resolved instanceof Type))\r\n throw Error(\"unresolvable response type: \" + this.requestType);\r\n this.resolvedResponseType = resolved;\r\n return ReflectionObject.prototype.resolve.call(this);\r\n};\r\n","\"use strict\";\r\nmodule.exports = Namespace;\r\n\r\nvar ReflectionObject = require(11);\r\n/** @alias Namespace.prototype */\r\nvar NamespacePrototype = ReflectionObject.extend(Namespace);\r\n\r\nvar Enum = require(5),\r\n Type = require(19),\r\n Field = require(6),\r\n Service = require(17),\r\n util = require(21);\r\n\r\nvar _TypeError = util._TypeError;\r\n\r\nvar nestedTypes = [ Enum, Type, Service, Field, Namespace ],\r\n nestedError = \"one of \" + nestedTypes.map(function(ctor) { return ctor.name; }).join(', ');\r\n\r\n/**\r\n * Constructs a new namespace.\r\n * @classdesc Reflected namespace and base class of all reflection objects containing nested objects.\r\n * @extends ReflectionObject\r\n * @constructor\r\n * @param {string} name Namespace name\r\n * @param {Object} [options] Declared options\r\n */\r\nfunction Namespace(name, options) {\r\n ReflectionObject.call(this, name, options);\r\n\r\n /**\r\n * Nested objects by name.\r\n * @type {Object.|undefined}\r\n */\r\n this.nested = undefined; // toJSON\r\n\r\n /**\r\n * Cached nested objects as an array.\r\n * @type {?ReflectionObject[]}\r\n * @private\r\n */\r\n this._nestedArray = null;\r\n}\r\n\r\nfunction clearCache(namespace) {\r\n namespace._nestedArray = null;\r\n return namespace;\r\n}\r\n\r\nObject.defineProperties(NamespacePrototype, {\r\n\r\n /**\r\n * Nested objects of this namespace as an array for iteration.\r\n * @name Namespace#nestedArray\r\n * @type {ReflectionObject[]}\r\n * @readonly\r\n */\r\n nestedArray: {\r\n get: NamespacePrototype.getNestedArray = function getNestedArray() {\r\n return this._nestedArray || (this._nestedArray = util.toArray(this.nested));\r\n }\r\n }\r\n\r\n});\r\n\r\n/**\r\n * Tests if the specified JSON object describes not another reflection object.\r\n * @param {*} json JSON object\r\n * @returns {boolean} `true` if the object describes not another reflection object\r\n */\r\nNamespace.testJSON = function testJSON(json) {\r\n return Boolean(json\r\n && !json.fields // Type\r\n && !json.values // Enum\r\n && json.id === undefined // Field, MapField\r\n && !json.oneof // OneOf\r\n && !json.methods // Service\r\n && json.requestType === undefined // Method\r\n );\r\n};\r\n\r\n/**\r\n * Constructs a namespace from JSON.\r\n * @param {string} name Namespace name\r\n * @param {Object} json JSON object\r\n * @returns {Namespace} Created namespace\r\n * @throws {TypeError} If arguments are invalid\r\n */\r\nNamespace.fromJSON = function fromJSON(name, json) {\r\n return new Namespace(name, json.options).addJSON(json.nested);\r\n};\r\n\r\n/**\r\n * @override\r\n */\r\nNamespacePrototype.toJSON = function toJSON() {\r\n return {\r\n options : this.options,\r\n nested : arrayToJSON(this.getNestedArray())\r\n };\r\n};\r\n\r\n/**\r\n * Converts an array of reflection objects to JSON.\r\n * @memberof Namespace\r\n * @param {ReflectionObject[]} array Object array\r\n * @returns {Object.|undefined} JSON object or `undefined` when array is empty\r\n */\r\nfunction arrayToJSON(array) {\r\n if (!(array && array.length))\r\n return undefined;\r\n var obj = {};\r\n for (var i = 0; i < array.length; ++i)\r\n obj[array[i].name] = array[i].toJSON();\r\n return obj;\r\n}\r\n\r\nNamespace.arrayToJSON = arrayToJSON;\r\n\r\n/**\r\n * Adds nested elements to this namespace from JSON.\r\n * @param {Object.} nestedJson Nested JSON\r\n * @returns {Namespace} `this`\r\n */\r\nNamespacePrototype.addJSON = function addJSON(nestedJson) {\r\n var ns = this;\r\n if (nestedJson)\r\n Object.keys(nestedJson).forEach(function(nestedName) {\r\n var nested = nestedJson[nestedName];\r\n for (var j = 0; j < nestedTypes.length; ++j)\r\n if (nestedTypes[j].testJSON(nested))\r\n return ns.add(nestedTypes[j].fromJSON(nestedName, nested));\r\n throw _TypeError(\"nested.\" + nestedName, \"JSON for \" + nestedError);\r\n });\r\n return this;\r\n};\r\n\r\n/**\r\n * Gets the nested object of the specified name.\r\n * @param {string} name Nested object name\r\n * @returns {?ReflectionObject} The reflection object or `null` if it doesn't exist\r\n */\r\nNamespacePrototype.get = function get(name) {\r\n if (this.nested === undefined) // prevents deopt\r\n return null;\r\n return this.nested[name] || null;\r\n};\r\n\r\n/**\r\n * Adds a nested object to this namespace.\r\n * @param {ReflectionObject} object Nested object to add\r\n * @returns {Namespace} `this`\r\n * @throws {TypeError} If arguments are invalid\r\n * @throws {Error} If there is already a nested object with this name\r\n */\r\nNamespacePrototype.add = function add(object) {\r\n if (!object || nestedTypes.indexOf(object.constructor) < 0)\r\n throw _TypeError(\"object\", nestedError);\r\n if (object instanceof Field && object.extend === undefined)\r\n throw _TypeError(\"object\", \"an extension field when not part of a type\");\r\n if (!this.nested)\r\n this.nested = {};\r\n else {\r\n var prev = this.get(object.name);\r\n if (prev) {\r\n if (prev instanceof Namespace && object instanceof Namespace && !(prev instanceof Type || prev instanceof Service)) {\r\n // replace plain namespace but keep existing nested elements and options\r\n var nested = prev.getNestedArray();\r\n for (var i = 0; i < nested.length; ++i)\r\n object.add(nested[i]);\r\n this.remove(prev);\r\n if (!this.nested)\r\n this.nested = {};\r\n object.setOptions(prev.options, true);\r\n } else\r\n throw Error(\"duplicate name '\" + object.name + \"' in \" + this);\r\n }\r\n }\r\n this.nested[object.name] = object;\r\n object.onAdd(this);\r\n return clearCache(this);\r\n};\r\n\r\n/**\r\n * Removes a nested object from this namespace.\r\n * @param {ReflectionObject} object Nested object to remove\r\n * @returns {Namespace} `this`\r\n * @throws {TypeError} If arguments are invalid\r\n * @throws {Error} If `object` is not a member of this namespace\r\n */\r\nNamespacePrototype.remove = function remove(object) {\r\n if (!(object instanceof ReflectionObject))\r\n throw _TypeError(\"object\", \"a ReflectionObject\");\r\n if (object.parent !== this || !this.nested)\r\n throw Error(object + \" is not a member of \" + this);\r\n delete this.nested[object.name];\r\n if (!Object.keys(this.nested).length)\r\n this.nested = undefined;\r\n object.onRemove(this);\r\n return clearCache(this);\r\n};\r\n\r\n/**\r\n * Defines additial namespaces within this one if not yet existing.\r\n * @param {string|string[]} path Path to create\r\n * @param {*} [json] Nested types to create from JSON\r\n * @returns {Namespace} Pointer to the last namespace created or `this` if path is empty\r\n */\r\nNamespacePrototype.define = function define(path, json) {\r\n if (util.isString(path))\r\n path = path.split('.');\r\n else if (!Array.isArray(path)) {\r\n json = path;\r\n path = undefined;\r\n }\r\n var ptr = this;\r\n if (path)\r\n while (path.length > 0) {\r\n var part = path.shift();\r\n if (ptr.nested && ptr.nested[part]) {\r\n ptr = ptr.nested[part];\r\n if (!(ptr instanceof Namespace))\r\n throw Error(\"path conflicts with non-namespace objects\");\r\n } else\r\n ptr.add(ptr = new Namespace(part));\r\n }\r\n if (json)\r\n ptr.addJSON(json);\r\n return ptr;\r\n};\r\n\r\n/**\r\n * Resolves this namespace's and all its nested objects' type references. Useful to validate a reflection tree.\r\n * @returns {Namespace} `this`\r\n */\r\nNamespacePrototype.resolveAll = function resolve() {\r\n var nested = this.getNestedArray(), i = 0;\r\n while (i < nested.length)\r\n if (nested[i] instanceof Namespace)\r\n nested[i++].resolveAll();\r\n else\r\n nested[i++].resolve();\r\n return ReflectionObject.prototype.resolve.call(this);\r\n};\r\n\r\n/**\r\n * Looks up the reflection object at the specified path, relative to this namespace.\r\n * @param {string|string[]} path Path to look up\r\n * @param {boolean} [parentAlreadyChecked=false] Whether the parent has already been checked\r\n * @returns {?ReflectionObject} Looked up object or `null` if none could be found\r\n */\r\nNamespacePrototype.lookup = function lookup(path, parentAlreadyChecked) {\r\n if (util.isString(path)) {\r\n if (!path.length)\r\n return null;\r\n path = path.split('.');\r\n } else if (!path.length)\r\n return null;\r\n // Start at root if path is absolute\r\n if (path[0] === \"\")\r\n return this.getRoot().lookup(path.slice(1));\r\n // Test if the first part matches any nested object, and if so, traverse if path contains more\r\n var found = this.get(path[0]);\r\n if (found && (path.length === 1 || found instanceof Namespace && (found = found.lookup(path.slice(1), true))))\r\n return found;\r\n // If there hasn't been a match, try again at the parent\r\n if (this.parent === null || parentAlreadyChecked)\r\n return null;\r\n return this.parent.lookup(path);\r\n};\r\n","\"use strict\";\r\nmodule.exports = ReflectionObject;\r\n\r\nReflectionObject.extend = extend;\r\n\r\nvar Root = require(16),\r\n util = require(21);\r\n\r\nvar _TypeError = util._TypeError;\r\n\r\n/**\r\n * Constructs a new reflection object.\r\n * @classdesc Base class of all reflection objects.\r\n * @constructor\r\n * @param {string} name Object name\r\n * @param {Object} [options] Declared options\r\n * @abstract\r\n */\r\nfunction ReflectionObject(name, options) {\r\n if (!util.isString(name))\r\n throw _TypeError(\"name\");\r\n if (options && !util.isObject(options))\r\n throw _TypeError(\"options\", \"an object\");\r\n\r\n /**\r\n * Options.\r\n * @type {Object.|undefined}\r\n */\r\n this.options = options; // toJSON\r\n\r\n /**\r\n * Unique name within its namespace.\r\n * @type {string}\r\n */\r\n this.name = name;\r\n\r\n /**\r\n * Parent namespace.\r\n * @type {?Namespace}\r\n */\r\n this.parent = null;\r\n\r\n /**\r\n * Whether already resolved or not.\r\n * @type {boolean}\r\n */\r\n this.resolved = false;\r\n}\r\n\r\n/** @alias ReflectionObject.prototype */\r\nvar ReflectionObjectPrototype = ReflectionObject.prototype;\r\n\r\nObject.defineProperties(ReflectionObjectPrototype, {\r\n\r\n /**\r\n * Reference to the root namespace.\r\n * @name ReflectionObject#root\r\n * @type {Root}\r\n * @readonly\r\n */\r\n root: {\r\n get: ReflectionObjectPrototype.getRoot = function getRoot() {\r\n var ptr = this;\r\n while (ptr.parent !== null)\r\n ptr = ptr.parent;\r\n return ptr;\r\n }\r\n },\r\n\r\n /**\r\n * Full name including leading dot.\r\n * @name ReflectionObject#fullName\r\n * @type {string}\r\n * @readonly\r\n */\r\n fullName: {\r\n get: ReflectionObjectPrototype.getFullName = function getFullName() {\r\n var path = [ this.name ],\r\n ptr = this.parent;\r\n while (ptr) {\r\n path.unshift(ptr.name);\r\n ptr = ptr.parent;\r\n }\r\n return path.join('.');\r\n }\r\n }\r\n});\r\n\r\n/**\r\n * Lets the specified constructor extend this class.\r\n * @memberof ReflectionObject\r\n * @param {Function} constructor Extending constructor\r\n * @returns {Object} Prototype\r\n * @this ReflectionObject\r\n */\r\nfunction extend(constructor) {\r\n var proto = constructor.prototype = Object.create(this.prototype);\r\n proto.constructor = constructor;\r\n constructor.extend = extend;\r\n return proto;\r\n}\r\n\r\n/**\r\n * Converts this reflection object to its JSON representation.\r\n * @returns {Object} JSON object\r\n * @abstract\r\n */\r\nReflectionObjectPrototype.toJSON = function toJSON() {\r\n throw Error(); // not implemented, shouldn't happen\r\n};\r\n\r\n/**\r\n * Called when this object is added to a parent.\r\n * @param {ReflectionObject} parent Parent added to\r\n * @returns {undefined}\r\n */\r\nReflectionObjectPrototype.onAdd = function onAdd(parent) {\r\n if (this.parent && this.parent !== parent)\r\n this.parent.remove(this);\r\n this.parent = parent;\r\n this.resolved = false;\r\n var root = parent.getRoot();\r\n if (root instanceof Root)\r\n root._handleAdd(this);\r\n};\r\n\r\n/**\r\n * Called when this object is removed from a parent.\r\n * @param {ReflectionObject} parent Parent removed from\r\n * @returns {undefined}\r\n */\r\nReflectionObjectPrototype.onRemove = function onRemove(parent) {\r\n var root = parent.getRoot();\r\n if (root instanceof Root)\r\n root._handleRemove(this);\r\n this.parent = null;\r\n this.resolved = false;\r\n};\r\n\r\n/**\r\n * Resolves this objects type references.\r\n * @returns {ReflectionObject} `this`\r\n */\r\nReflectionObjectPrototype.resolve = function resolve() {\r\n if (this.resolved)\r\n return this;\r\n var root = this.getRoot();\r\n if (root instanceof Root)\r\n this.resolved = true; // only if part of a root\r\n return this;\r\n};\r\n\r\n/**\r\n * Gets an option value.\r\n * @param {string} name Option name\r\n * @returns {*} Option value or `undefined` if not set\r\n */\r\nReflectionObjectPrototype.getOption = function getOption(name) {\r\n if (this.options)\r\n return this.options[name];\r\n return undefined;\r\n};\r\n\r\n/**\r\n * Sets an option.\r\n * @param {string} name Option name\r\n * @param {*} value Option value\r\n * @param {boolean} [ifNotSet] Sets the option only if it isn't currently set\r\n * @returns {ReflectionObject} `this`\r\n */\r\nReflectionObjectPrototype.setOption = function setOption(name, value, ifNotSet) {\r\n if (!ifNotSet || !this.options || this.options[name] === undefined)\r\n (this.options || (this.options = {}))[name] = value;\r\n return this;\r\n};\r\n\r\n/**\r\n * Sets multiple options.\r\n * @param {Object.} options Options to set\r\n * @param {boolean} [ifNotSet] Sets an option only if it isn't currently set\r\n * @returns {ReflectionObject} `this`\r\n */\r\nReflectionObjectPrototype.setOptions = function setOptions(options, ifNotSet) {\r\n if (options)\r\n Object.keys(options).forEach(function(name) {\r\n this.setOption(name, options[name], ifNotSet);\r\n }, this);\r\n return this;\r\n};\r\n\r\n/**\r\n * Converts this instance to its string representation.\r\n * @returns {string} Constructor name, space, full name\r\n */\r\nReflectionObjectPrototype.toString = function toString() {\r\n return this.constructor.name + \" \" + this.getFullName();\r\n};\r\n","\"use strict\";\r\nmodule.exports = OneOf;\r\n\r\nvar ReflectionObject = require(11);\r\n/** @alias OneOf.prototype */\r\nvar OneOfPrototype = ReflectionObject.extend(OneOf);\r\n\r\nvar Field = require(6),\r\n util = require(21);\r\n\r\nvar _TypeError = util._TypeError;\r\n\r\n/**\r\n * Constructs a new oneof.\r\n * @classdesc Reflected oneof.\r\n * @extends ReflectionObject\r\n * @constructor\r\n * @param {string} name Oneof name\r\n * @param {string[]} [fieldNames] Field names\r\n * @param {Object} [options] Declared options\r\n */\r\nfunction OneOf(name, fieldNames, options) {\r\n if (!Array.isArray(fieldNames)) {\r\n options = fieldNames;\r\n fieldNames = undefined;\r\n }\r\n ReflectionObject.call(this, name, options);\r\n if (fieldNames && !Array.isArray(fieldNames))\r\n throw _TypeError(\"fieldNames\", \"an Array\");\r\n\r\n /**\r\n * Field names that belong to this oneof.\r\n * @type {Array.}\r\n */\r\n this.oneof = fieldNames || []; // toJSON, marker\r\n\r\n /**\r\n * Fields that belong to this oneof and are possibly not yet added to its parent.\r\n * @type {Array.}\r\n * @private\r\n */\r\n this._fields = [];\r\n}\r\n\r\n/**\r\n * Tests if the specified JSON object describes a oneof.\r\n * @param {*} json JSON object\r\n * @returns {boolean} `true` if the object describes a oneof\r\n */\r\nOneOf.testJSON = function testJSON(json) {\r\n return Boolean(json.oneof);\r\n};\r\n\r\n/**\r\n * Constructs a oneof from JSON.\r\n * @param {string} name Oneof name\r\n * @param {Object} json JSON object\r\n * @returns {MapField} Created oneof\r\n * @throws {TypeError} If arguments are invalid\r\n */\r\nOneOf.fromJSON = function fromJSON(name, json) {\r\n return new OneOf(name, json.oneof, json.options);\r\n};\r\n\r\n/**\r\n * @override\r\n */\r\nOneOfPrototype.toJSON = function toJSON() {\r\n return {\r\n oneof : this.oneof,\r\n options : this.options\r\n };\r\n};\r\n\r\n/**\r\n * Adds the fields of the specified oneof to the parent if not already done so.\r\n * @param {OneOf} oneof The oneof\r\n * @returns {undefined}\r\n * @inner\r\n * @ignore\r\n */\r\nfunction addFieldsToParent(oneof) {\r\n if (oneof.parent)\r\n oneof._fields.forEach(function(field) {\r\n if (!field.parent)\r\n oneof.parent.add(field);\r\n });\r\n}\r\n\r\n/**\r\n * Adds a field to this oneof.\r\n * @param {Field} field Field to add\r\n * @returns {OneOf} `this`\r\n */\r\nOneOfPrototype.add = function add(field) {\r\n if (!(field instanceof Field))\r\n throw _TypeError(\"field\", \"a Field\");\r\n if (field.parent)\r\n field.parent.remove(field);\r\n this.oneof.push(field.name);\r\n this._fields.push(field);\r\n field.partOf = this; // field.parent remains null\r\n addFieldsToParent(this);\r\n return this;\r\n};\r\n\r\n/**\r\n * Removes a field from this oneof.\r\n * @param {Field} field Field to remove\r\n * @returns {OneOf} `this`\r\n */\r\nOneOfPrototype.remove = function remove(field) {\r\n if (!(field instanceof Field))\r\n throw _TypeError(\"field\", \"a Field\");\r\n var index = this._fields.indexOf(field);\r\n if (index < 0)\r\n throw Error(field + \" is not a member of \" + this);\r\n this._fields.splice(index, 1);\r\n index = this.oneof.indexOf(field.name);\r\n if (index > -1)\r\n this.oneof.splice(index, 1);\r\n if (field.parent)\r\n field.parent.remove(field);\r\n field.partOf = null;\r\n return this;\r\n};\r\n\r\n/**\r\n * @override\r\n */\r\nOneOfPrototype.onAdd = function onAdd(parent) {\r\n ReflectionObject.prototype.onAdd.call(this, parent);\r\n addFieldsToParent(this);\r\n};\r\n\r\n/**\r\n * @override\r\n */\r\nOneOfPrototype.onRemove = function onRemove(parent) {\r\n this._fields.forEach(function(field) {\r\n if (field.parent)\r\n field.parent.remove(field);\r\n });\r\n ReflectionObject.prototype.onRemove.call(this, parent);\r\n};\r\n","\"use strict\";\r\nmodule.exports = parse;\r\n\r\nvar tokenize = require(18),\r\n Root = require(16),\r\n Type = require(19),\r\n Field = require(6),\r\n MapField = require(8),\r\n OneOf = require(12),\r\n Enum = require(5),\r\n Service = require(17),\r\n Method = require(9),\r\n types = require(20);\r\n\r\nvar nameRe = /^[a-zA-Z_][a-zA-Z_0-9]*$/,\r\n typeRefRe = /^(?:\\.?[a-zA-Z_][a-zA-Z_0-9]*)+$/,\r\n fqTypeRefRe = /^(?:\\.[a-zA-Z][a-zA-Z_0-9]*)+$/;\r\n\r\nfunction lower(token) {\r\n return token === null ? null : token.toLowerCase();\r\n}\r\n\r\nfunction camelCase(name) {\r\n return name.substring(0,1)\r\n + name.substring(1)\r\n .replace(/_([a-z])(?=[a-z]|$)/g, function($0, $1) { return $1.toUpperCase(); });\r\n}\r\n\r\nvar s_required = \"required\",\r\n s_repeated = \"repeated\",\r\n s_optional = \"optional\",\r\n s_option = \"option\",\r\n s_name = \"name\",\r\n s_type = \"type\";\r\nvar s_open = \"{\",\r\n s_close = \"}\",\r\n s_bopen = '(',\r\n s_bclose = ')',\r\n s_semi = \";\",\r\n s_dq = '\"',\r\n s_sq = \"'\";\r\n\r\n/**\r\n * Result object returned from {@link parse}.\r\n * @typedef ParserResult\r\n * @type {Object}\r\n * @property {string|undefined} package Package name, if declared\r\n * @property {string[]|undefined} imports Imports, if any\r\n * @property {string[]|undefined} weakImports Weak imports, if any\r\n * @property {string|undefined} syntax Syntax, if specified (either `\"proto2\"` or `\"proto3\"`)\r\n * @property {Root} root Populated root instance\r\n */\r\n\r\n/**\r\n * Parses the given .proto source and returns an object with the parsed contents.\r\n * @param {string} source Source contents\r\n * @param {Root} [root] Root to populate\r\n * @returns {ParserResult} Parser result\r\n */\r\nfunction parse(source, root) {\r\n /* eslint-disable default-case, callback-return */\r\n if (!root)\r\n root = new Root();\r\n\r\n var tn = tokenize(source),\r\n next = tn.next,\r\n push = tn.push,\r\n peek = tn.peek,\r\n skip = tn.skip;\r\n\r\n var head = true,\r\n pkg,\r\n imports,\r\n weakImports,\r\n syntax,\r\n isProto3 = false;\r\n\r\n if (!root)\r\n root = new Root();\r\n\r\n var ptr = root;\r\n\r\n function illegal(token, name) {\r\n return Error(\"illegal \" + (name || \"token\") + \" '\" + token + \"' (line \" + tn.line() + s_bclose);\r\n }\r\n\r\n function readString() {\r\n var values = [],\r\n token;\r\n do {\r\n if ((token = next()) !== s_dq && token !== s_sq)\r\n throw illegal(token);\r\n values.push(next());\r\n skip(token);\r\n token = peek();\r\n } while (token === s_dq || token === s_sq);\r\n return values.join('');\r\n }\r\n\r\n function readValue(acceptTypeRef) {\r\n var token = next();\r\n switch (lower(token)) {\r\n case s_sq:\r\n case s_dq:\r\n push(token);\r\n return readString();\r\n case \"true\":\r\n return true;\r\n case \"false\":\r\n return false;\r\n }\r\n try {\r\n return parseNumber(token);\r\n } catch (e) {\r\n if (acceptTypeRef && typeRefRe.test(token))\r\n return token;\r\n throw illegal(token, \"value\");\r\n }\r\n }\r\n\r\n function readRange() {\r\n var start = parseId(next());\r\n var end = start;\r\n if (skip(\"to\", true))\r\n end = parseId(next());\r\n skip(s_semi);\r\n return [ start, end ];\r\n }\r\n\r\n function parseNumber(token) {\r\n var sign = 1;\r\n if (token.charAt(0) === '-') {\r\n sign = -1;\r\n token = token.substring(1);\r\n }\r\n var tokenLower = lower(token);\r\n switch (tokenLower) {\r\n case \"inf\": return sign * Infinity;\r\n case \"nan\": return NaN;\r\n case \"0\": return 0;\r\n }\r\n if (/^[1-9][0-9]*$/.test(token))\r\n return sign * parseInt(token, 10);\r\n if (/^0[x][0-9a-f]+$/.test(tokenLower))\r\n return sign * parseInt(token, 16);\r\n if (/^0[0-7]+$/.test(token))\r\n return sign * parseInt(token, 8);\r\n if (/^(?!e)[0-9]*(?:\\.[0-9]*)?(?:[e][+-]?[0-9]+)?$/.test(tokenLower))\r\n return sign * parseFloat(token);\r\n throw illegal(token, 'number');\r\n }\r\n\r\n function parseId(token, acceptNegative) {\r\n var tokenLower = lower(token);\r\n switch (tokenLower) {\r\n case \"min\": return 1;\r\n case \"max\": return 0x1FFFFFFF;\r\n case \"0\": return 0;\r\n }\r\n if (token.charAt(0) === '-' && !acceptNegative)\r\n throw illegal(token, \"id\");\r\n if (/^-?[1-9][0-9]*$/.test(token))\r\n return parseInt(token, 10);\r\n if (/^-?0[x][0-9a-f]+$/.test(tokenLower))\r\n return parseInt(token, 16);\r\n if (/^-?0[0-7]+$/.test(token))\r\n return parseInt(token, 8);\r\n throw illegal(token, \"id\");\r\n }\r\n\r\n function parsePackage() {\r\n if (pkg !== undefined)\r\n throw illegal(\"package\");\r\n pkg = next();\r\n if (!typeRefRe.test(pkg))\r\n throw illegal(pkg, s_name);\r\n ptr = ptr.define(pkg);\r\n skip(s_semi);\r\n }\r\n\r\n function parseImport() {\r\n var token = peek();\r\n var whichImports;\r\n switch (token) {\r\n case \"weak\":\r\n whichImports = weakImports || (weakImports = []);\r\n next();\r\n break;\r\n case \"public\":\r\n next();\r\n // eslint-disable-line no-fallthrough\r\n default:\r\n whichImports = imports || (imports = []);\r\n break;\r\n }\r\n token = readString();\r\n skip(s_semi);\r\n whichImports.push(token);\r\n }\r\n\r\n function parseSyntax() {\r\n skip(\"=\");\r\n syntax = lower(readString());\r\n var p3;\r\n if ([ \"proto2\", p3 = \"proto3\" ].indexOf(syntax) < 0)\r\n throw illegal(syntax, \"syntax\");\r\n isProto3 = syntax === p3;\r\n skip(s_semi);\r\n }\r\n\r\n function parseCommon(parent, token) {\r\n switch (token) {\r\n\r\n case s_option:\r\n parseOption(parent, token);\r\n skip(s_semi);\r\n return true;\r\n\r\n case \"message\":\r\n parseType(parent, token);\r\n return true;\r\n\r\n case \"enum\":\r\n parseEnum(parent, token);\r\n return true;\r\n\r\n case \"service\":\r\n parseService(parent, token);\r\n return true;\r\n\r\n case \"extend\":\r\n parseExtension(parent, token);\r\n return true;\r\n }\r\n return false;\r\n }\r\n\r\n function parseType(parent, token) {\r\n var name = next();\r\n if (!nameRe.test(name))\r\n throw illegal(name, \"type name\");\r\n var type = new Type(name);\r\n if (skip(s_open, true)) {\r\n while ((token = next()) !== s_close) {\r\n var tokenLower = lower(token);\r\n if (parseCommon(type, token))\r\n continue;\r\n switch (tokenLower) {\r\n case \"map\":\r\n parseMapField(type, tokenLower);\r\n break;\r\n case s_required:\r\n case s_optional:\r\n case s_repeated:\r\n parseField(type, tokenLower);\r\n break;\r\n case \"oneof\":\r\n parseOneOf(type, tokenLower);\r\n break;\r\n case \"extensions\":\r\n (type.extensions || (type.extensions = [])).push(readRange(type, tokenLower));\r\n break;\r\n case \"reserved\":\r\n (type.reserved || (type.reserved = [])).push(readRange(type, tokenLower));\r\n break;\r\n default:\r\n if (!isProto3 || !typeRefRe.test(token))\r\n throw illegal(token);\r\n push(token);\r\n parseField(type, s_optional);\r\n break;\r\n }\r\n }\r\n skip(s_semi, true);\r\n } else\r\n skip(s_semi);\r\n parent.add(type);\r\n }\r\n\r\n function parseField(parent, rule, extend) {\r\n var type = next();\r\n if (!typeRefRe.test(type))\r\n throw illegal(type, s_type);\r\n var name = next();\r\n if (!nameRe.test(name))\r\n throw illegal(name, s_name);\r\n name = camelCase(name);\r\n skip(\"=\");\r\n var id = parseId(next());\r\n var field = parseInlineOptions(new Field(name, id, type, rule, extend));\r\n if (field.repeated)\r\n field.setOption(\"packed\", isProto3, /* ifNotSet */ true);\r\n parent.add(field);\r\n }\r\n\r\n function parseMapField(parent) {\r\n skip(\"<\");\r\n var keyType = next();\r\n if (types.mapKey[keyType] === undefined)\r\n throw illegal(keyType, s_type);\r\n skip(\",\");\r\n var valueType = next();\r\n if (!typeRefRe.test(valueType))\r\n throw illegal(valueType, s_type);\r\n skip(\">\");\r\n var name = next();\r\n if (!nameRe.test(name))\r\n throw illegal(name, s_name);\r\n name = camelCase(name);\r\n skip(\"=\");\r\n var id = parseId(next());\r\n var field = parseInlineOptions(new MapField(name, id, keyType, valueType));\r\n parent.add(field);\r\n }\r\n\r\n function parseOneOf(parent, token) {\r\n var name = next();\r\n if (!nameRe.test(name))\r\n throw illegal(name, s_name);\r\n name = camelCase(name);\r\n var oneof = new OneOf(name);\r\n if (skip(s_open, true)) {\r\n while ((token = next()) !== s_close) {\r\n if (token === s_option) {\r\n parseOption(oneof, token);\r\n skip(s_semi);\r\n } else {\r\n push(token);\r\n parseField(oneof, s_optional);\r\n }\r\n }\r\n skip(s_semi, true);\r\n } else\r\n skip(s_semi);\r\n parent.add(oneof);\r\n }\r\n\r\n function parseEnum(parent, token) {\r\n var name = next();\r\n if (!nameRe.test(name))\r\n throw illegal(name, s_name);\r\n var values = {};\r\n var enm = new Enum(name, values);\r\n if (skip(s_open, true)) {\r\n while ((token = next()) !== s_close) {\r\n if (lower(token) === s_option)\r\n parseOption(enm);\r\n else\r\n parseEnumField(enm, token);\r\n }\r\n skip(s_semi, true);\r\n } else\r\n skip(s_semi);\r\n parent.add(enm);\r\n }\r\n\r\n function parseEnumField(parent, token) {\r\n if (!nameRe.test(token))\r\n throw illegal(token, s_name);\r\n var name = token;\r\n skip(\"=\");\r\n var value = parseId(next(), true);\r\n parseInlineOptions(parent.values[name] = new Number(value)); // eslint-disable-line no-new-wrappers\r\n }\r\n\r\n function parseOption(parent, token) {\r\n var custom = skip(s_bopen, true);\r\n var name = next();\r\n if (!typeRefRe.test(name))\r\n throw illegal(name, s_name);\r\n if (custom) {\r\n skip(s_bclose);\r\n name = s_bopen + name + s_bclose;\r\n token = peek();\r\n if (fqTypeRefRe.test(token)) {\r\n name += token;\r\n next();\r\n }\r\n }\r\n skip(\"=\");\r\n parseOptionValue(parent, name);\r\n }\r\n\r\n function parseOptionValue(parent, name) {\r\n if (skip(s_open, true)) {\r\n while ((token = next()) !== s_close) {\r\n if (!nameRe.test(token))\r\n throw illegal(token, s_name);\r\n name = name + \".\" + token;\r\n if (skip(\":\", true))\r\n setOption(parent, name, readValue(true));\r\n else\r\n parseOptionValue(parent, name);\r\n }\r\n skip(s_semi, true);\r\n } else\r\n setOption(parent, name, readValue(true));\r\n // Does not enforce a delimiter to be universal\r\n }\r\n\r\n function setOption(parent, name, value) {\r\n if (parent.setOption)\r\n parent.setOption(name, value);\r\n else\r\n parent[name] = value;\r\n }\r\n\r\n function parseInlineOptions(parent) {\r\n if (skip(\"[\", true)) {\r\n do {\r\n parseOption(parent, s_option);\r\n } while (skip(\",\", true));\r\n skip(\"]\");\r\n }\r\n skip(s_semi);\r\n return parent;\r\n }\r\n\r\n function parseService(parent, token) {\r\n token = next();\r\n if (!nameRe.test(token))\r\n throw illegal(token, \"service name\");\r\n var name = token;\r\n var service = new Service(name);\r\n if (skip(s_open, true)) {\r\n while ((token = next()) !== s_close) {\r\n var tokenLower = lower(token);\r\n switch (tokenLower) {\r\n case s_option:\r\n parseOption(service, tokenLower);\r\n skip(s_semi);\r\n break;\r\n case \"rpc\":\r\n parseMethod(service, tokenLower);\r\n break;\r\n default:\r\n throw illegal(token);\r\n }\r\n }\r\n skip(s_semi, true);\r\n } else\r\n skip(s_semi);\r\n parent.add(service);\r\n }\r\n\r\n function parseMethod(parent, token) {\r\n var type = token;\r\n var name = next();\r\n if (!nameRe.test(name))\r\n throw illegal(name, s_name);\r\n var requestType, requestStream,\r\n responseType, responseStream;\r\n skip(s_bopen);\r\n var st;\r\n if (skip(st = \"stream\", true))\r\n requestStream = true;\r\n if (!typeRefRe.test(token = next()))\r\n throw illegal(token);\r\n requestType = token;\r\n skip(s_bclose); skip(\"returns\"); skip(s_bopen);\r\n if (skip(st, true))\r\n responseStream = true;\r\n if (!typeRefRe.test(token = next()))\r\n throw illegal(token);\r\n responseType = token;\r\n skip(s_bclose);\r\n var method = new Method(name, type, requestType, responseType, requestStream, responseStream);\r\n if (skip(s_open, true)) {\r\n while ((token = next()) !== s_close) {\r\n var tokenLower = lower(token);\r\n switch (tokenLower) {\r\n case s_option:\r\n parseOption(method, tokenLower);\r\n skip(s_semi);\r\n break;\r\n default:\r\n throw illegal(token);\r\n }\r\n }\r\n skip(s_semi, true);\r\n } else\r\n skip(s_semi);\r\n parent.add(method);\r\n }\r\n\r\n function parseExtension(parent, token) {\r\n var reference = next();\r\n if (!typeRefRe.test(reference))\r\n throw illegal(reference, \"reference\");\r\n if (skip(s_open, true)) {\r\n while ((token = next()) !== s_close) {\r\n var tokenLower = lower(token);\r\n switch (tokenLower) {\r\n case s_required:\r\n case s_repeated:\r\n case s_optional:\r\n parseField(parent, tokenLower, reference);\r\n break;\r\n default:\r\n if (!isProto3 || !typeRefRe.test(token))\r\n throw illegal(token);\r\n push(token);\r\n parseField(parent, s_optional, reference);\r\n break;\r\n }\r\n }\r\n skip(s_semi, true);\r\n } else\r\n skip(s_semi);\r\n }\r\n\r\n var token;\r\n while ((token = next()) !== null) {\r\n var tokenLower = lower(token);\r\n switch (tokenLower) {\r\n\r\n case \"package\":\r\n if (!head)\r\n throw illegal(token);\r\n parsePackage();\r\n break;\r\n\r\n case \"import\":\r\n if (!head)\r\n throw illegal(token);\r\n parseImport();\r\n break;\r\n\r\n case \"syntax\":\r\n if (!head)\r\n throw illegal(token);\r\n parseSyntax();\r\n break;\r\n\r\n case s_option:\r\n if (!head)\r\n throw illegal(token);\r\n parseOption(ptr, token);\r\n skip(s_semi);\r\n break;\r\n\r\n default:\r\n if (parseCommon(ptr, token)) {\r\n head = false;\r\n continue;\r\n }\r\n throw illegal(token);\r\n }\r\n }\r\n\r\n return {\r\n 'package' : pkg,\r\n 'imports' : imports,\r\n 'weakImports' : weakImports,\r\n 'syntax' : syntax,\r\n 'root' : root\r\n };\r\n}\r\n","\"use strict\";\r\nmodule.exports = Prototype;\r\n\r\n/**\r\n * Options passed to the {@link Prototype|prototype constructor}, modifying its behavior.\r\n * @typedef PrototypeOptions\r\n * @type {Object}\r\n * @property {boolean} [fieldsOnly=false] Sets only properties that reference a field\r\n */\r\n\r\n/**\r\n * Constructs a new prototype.\r\n * This method should be called from your custom constructors, i.e. `Prototype.call(this, properties)`.\r\n * @classdesc Runtime message prototype ready to be extended by custom classes or generated code.\r\n * @constructor\r\n * @param {Object.} [properties] Properties to set\r\n * @param {PrototypeOptions} [options] Prototype options\r\n * @abstract\r\n * @see {@link inherits}\r\n * @see {@link Class}\r\n */\r\nfunction Prototype(properties, options) {\r\n if (properties) {\r\n var any = !(options && options.fieldsOnly),\r\n fields = this.constructor.$type.fields,\r\n keys = Object.keys(properties);\r\n for (var i = 0; i < keys.length; ++i)\r\n if (fields[keys[i]] || any)\r\n this[keys[i]] = properties[keys[i]];\r\n }\r\n}\r\n\r\n/**\r\n * Converts a runtime message to a JSON object.\r\n * @param {Object.} [options] Conversion options\r\n * @param {boolean} [options.fieldsOnly=false] Converts only properties that reference a field\r\n * @param {Function} [options.long] Long conversion type. Only relevant with a long library.\r\n * Valid values are `String` and `Number` (the global types).\r\n * Defaults to a possibly unsafe number without, and a `Long` with a long library.\r\n * @param {Function} [options.enum=Number] Enum value conversion type.\r\n * Valid values are `String` and `Number` (the global types).\r\n * Defaults to the numeric ids.\r\n * @returns {Object.} JSON object\r\n */\r\nPrototype.prototype.asJSON = function asJSON(options) {\r\n var any = !(options && options.fieldsOnly),\r\n fields = this.constructor.$type.fields,\r\n json = {};\r\n var keys = Object.keys(this);\r\n for (var i = 0, key; i < keys.length; ++i) {\r\n var field = fields[key = keys[i]],\r\n value = this[key];\r\n if (field) {\r\n if (field.repeated) {\r\n if (value && value.length) {\r\n var array = new Array(value.length);\r\n for (var j = 0, l = value.length; j < l; ++j)\r\n array[j] = field.jsonConvert(value[j], options);\r\n json[key] = array;\r\n }\r\n } else\r\n json[key] = field.jsonConvert(value, options);\r\n } else if (any)\r\n json[key] = value;\r\n }\r\n return json;\r\n};\r\n","\"use strict\";\r\nmodule.exports = Reader;\r\n\r\nReader.BufferReader = BufferReader;\r\n\r\nvar util = require(21),\r\n ieee754 = require(1);\r\nvar LongBits = util.LongBits,\r\n Long = util.Long;\r\n\r\nfunction indexOutOfRange(reader, writeLength) {\r\n return RangeError(\"index out of range: \" + reader.pos + \" + \" + (writeLength || 1) + \" > \" + reader.len);\r\n}\r\n\r\n/**\r\n * Constructs a new reader using the specified buffer.\r\n * When called as a function, returns an appropriate reader for the specified buffer.\r\n * @classdesc Wire format reader using `Uint8Array` if available, otherwise `Array`.\r\n * @constructor\r\n * @param {Uint8Array} buffer Buffer to read from\r\n */\r\nfunction Reader(buffer) {\r\n if (!(this instanceof Reader))\r\n return util.Buffer && (!buffer || util.Buffer.isBuffer(buffer)) && new BufferReader(buffer) || new Reader(buffer);\r\n\r\n /**\r\n * Read buffer.\r\n * @type {Uint8Array}\r\n */\r\n this.buf = buffer;\r\n\r\n /**\r\n * Read buffer position.\r\n * @type {number}\r\n */\r\n this.pos = 0;\r\n\r\n /**\r\n * Read buffer length.\r\n * @type {number}\r\n */\r\n this.len = buffer.length;\r\n}\r\n\r\n/** @alias Reader.prototype */\r\nvar ReaderPrototype = Reader.prototype;\r\n\r\nvar ArrayImpl = typeof Uint8Array !== 'undefined' ? Uint8Array : Array;\r\nReaderPrototype._slice = ArrayImpl.prototype.slice || ArrayImpl.prototype.subarray;\r\n\r\n/**\r\n * Tag read.\r\n * @constructor\r\n * @param {number} id Field id\r\n * @param {number} wireType Wire type\r\n * @ignore\r\n */\r\nfunction Tag(id, wireType) {\r\n this.id = id;\r\n this.wireType = wireType;\r\n}\r\n\r\n/**\r\n * Reads a tag.\r\n * @returns {{id: number, wireType: number}} Field id and wire type\r\n */\r\nReaderPrototype.tag = function read_tag() {\r\n if (this.pos >= this.len)\r\n throw indexOutOfRange(this);\r\n return new Tag(this.buf[this.pos] >>> 3, this.buf[this.pos++] & 7);\r\n};\r\n\r\n/**\r\n * Reads a varint as a signed 32 bit value.\r\n * @returns {number} Value read\r\n */\r\nReaderPrototype.int32 = function read_int32() {\r\n var value = 0,\r\n shift = 0,\r\n octet = 0;\r\n do {\r\n if (this.pos >= this.len)\r\n throw indexOutOfRange(this);\r\n octet = this.buf[this.pos++];\r\n if (shift < 32)\r\n value |= (octet & 127) << shift;\r\n shift += 7;\r\n } while (octet & 128);\r\n return value;\r\n};\r\n\r\n/**\r\n * Reads a varint as an unsigned 32 bit value.\r\n * @returns {number} Value read\r\n */\r\nReaderPrototype.uint32 = function read_uint32() {\r\n return this.int32() >>> 0;\r\n};\r\n\r\n/**\r\n * Reads a zig-zag encoded varint as a signed 32 bit value.\r\n * @returns {number} Value read\r\n */\r\nReaderPrototype.sint32 = function read_sint32() {\r\n var value = this.int32();\r\n return value >>> 1 ^ -(value & 1);\r\n};\r\n\r\n/**\r\n * Reads a possibly 64 bits varint.\r\n * @returns {LongBits} Long bits\r\n * @this {Reader}\r\n * @inner\r\n * @ignore\r\n */\r\nfunction readLongVarint() {\r\n var lo = 0, hi = 0,\r\n i = 0, b = 0;\r\n if (this.len - this.pos > 9) { // fast route\r\n for (i = 0; i < 4; ++i) {\r\n b = this.buf[this.pos++];\r\n lo |= (b & 127) << i * 7;\r\n if (b < 128)\r\n return new LongBits(lo >>> 0, hi >>> 0);\r\n }\r\n b = this.buf[this.pos++];\r\n lo |= (b & 127) << 28;\r\n hi |= (b & 127) >> 4;\r\n if (b < 128)\r\n return new LongBits(lo >>> 0, hi >>> 0);\r\n for (i = 0; i < 5; ++i) {\r\n b = this.buf[this.pos++];\r\n hi |= (b & 127) << i * 7 + 3;\r\n if (b < 128)\r\n return new LongBits(lo >>> 0, hi >>> 0);\r\n }\r\n } else {\r\n for (i = 0; i < 4; ++i) {\r\n if (this.pos >= this.len)\r\n throw indexOutOfRange(this);\r\n b = this.buf[this.pos++];\r\n lo |= (b & 127) << i * 7;\r\n if (b < 128)\r\n return new LongBits(lo >>> 0, hi >>> 0);\r\n }\r\n if (this.pos >= this.len)\r\n throw indexOutOfRange(this);\r\n b = this.buf[this.pos++];\r\n lo |= (b & 127) << 28;\r\n hi |= (b & 127) >> 4;\r\n if (b < 128)\r\n return new LongBits(lo >>> 0, hi >>> 0);\r\n for (i = 0; i < 5; ++i) {\r\n if (this.pos >= this.len)\r\n throw indexOutOfRange(this);\r\n b = this.buf[this.pos++];\r\n hi |= (b & 127) << i * 7 + 3;\r\n if (b < 128)\r\n return new LongBits(lo >>> 0, hi >>> 0);\r\n }\r\n }\r\n throw Error(\"invalid varint encoding\");\r\n}\r\n\r\nfunction read_int64_long() {\r\n return readLongVarint.call(this).toLong(); // eslint-disable-line no-invalid-this\r\n}\r\n\r\nfunction read_int64_number() {\r\n return readLongVarint.call(this).toNumber(); // eslint-disable-line no-invalid-this\r\n}\r\n\r\n/**\r\n * Reads a varint as a signed 64 bit value.\r\n * @function\r\n * @returns {Long|number} Value read\r\n */\r\nReaderPrototype.int64 = Long && read_int64_long || read_int64_number;\r\n\r\nfunction read_uint64_long() {\r\n return readLongVarint.call(this).toLong(true); // eslint-disable-line no-invalid-this\r\n}\r\n\r\nfunction read_uint64_number() {\r\n return readLongVarint.call(this).toNumber(true); // eslint-disable-line no-invalid-this\r\n}\r\n\r\n/**\r\n * Reads a varint as an unsigned 64 bit value.\r\n * @function\r\n * @returns {Long|number} Value read\r\n */\r\nReaderPrototype.uint64 = Long && read_uint64_long || read_uint64_number;\r\n\r\nfunction read_sint64_long() {\r\n return readLongVarint.call(this).zzDecode().toLong(); // eslint-disable-line no-invalid-this\r\n}\r\n\r\nfunction read_sint64_number() {\r\n return readLongVarint.call(this).zzDecode().toNumber(); // eslint-disable-line no-invalid-this\r\n}\r\n\r\n/**\r\n * Reads a zig-zag encoded varint as a signed 64 bit value.\r\n * @function\r\n * @returns {Long|number} Value read\r\n */\r\nReaderPrototype.sint64 = Long && read_sint64_long || read_sint64_number;\r\n\r\n/**\r\n * Reads a varint as a boolean.\r\n * @returns {boolean} Value read\r\n */\r\nReaderPrototype.bool = function read_bool() {\r\n return this.int32() !== 0;\r\n};\r\n\r\n/**\r\n * Reads fixed 32 bits as a number.\r\n * @returns {number} Value read\r\n */\r\nReaderPrototype.fixed32 = function read_fixed32() {\r\n if (this.pos + 4 > this.len)\r\n throw indexOutOfRange(this, 4);\r\n this.pos += 4;\r\n return this.buf[this.pos - 4]\r\n | this.buf[this.pos - 3] << 8\r\n | this.buf[this.pos - 2] << 16\r\n | this.buf[this.pos - 1] << 24;\r\n};\r\n\r\n/**\r\n * Reads zig-zag encoded fixed 32 bits as a number.\r\n * @returns {number} Value read\r\n */\r\nReaderPrototype.sfixed32 = function read_sfixed32() {\r\n var value = this.fixed32();\r\n return value >>> 1 ^ -(value & 1);\r\n};\r\n\r\n/**\r\n * Reads a 64 bit value.\r\n * @returns {LongBits} Long bits\r\n * @this {Reader}\r\n * @inner \r\n * @ignore\r\n */\r\nfunction readLongFixed() {\r\n if (this.pos + 8 > this.len)\r\n throw indexOutOfRange(this, 8);\r\n return new LongBits(\r\n ( this.buf[this.pos++]\r\n | this.buf[this.pos++] << 8\r\n | this.buf[this.pos++] << 16\r\n | this.buf[this.pos++] << 24 ) >>> 0\r\n ,\r\n ( this.buf[this.pos++]\r\n | this.buf[this.pos++] << 8\r\n | this.buf[this.pos++] << 16\r\n | this.buf[this.pos++] << 24 ) >>> 0\r\n );\r\n}\r\n\r\nfunction read_fixed64_long() {\r\n return readLongFixed.call(this).toLong(true); // eslint-disable-line no-invalid-this\r\n}\r\n\r\nfunction read_fixed64_number() {\r\n return readLongFixed.call(this).toNumber(true); // eslint-disable-line no-invalid-this\r\n}\r\n\r\n/**\r\n * Reads fixed 64 bits.\r\n * @function\r\n * @returns {Long|number} Value read\r\n */\r\nReaderPrototype.fixed64 = Long && read_fixed64_long || read_fixed64_number;\r\n\r\nfunction read_sfixed64_long() {\r\n return readLongFixed.call(this).zzDecode().toLong(); // eslint-disable-line no-invalid-this\r\n}\r\n\r\nfunction read_sfixed64_number() {\r\n return readLongFixed.call(this).zzDecode().toNumber(); // eslint-disable-line no-invalid-this\r\n}\r\n\r\n/**\r\n * Reads zig-zag encoded fixed 64 bits.\r\n * @returns {Long|number} Value read\r\n */\r\nReaderPrototype.sfixed64 = Long && read_sfixed64_long || read_sfixed64_number;\r\n\r\n/**\r\n * Reads a float (32 bit) as a number.\r\n * @function\r\n * @returns {number} Value read\r\n */\r\nReaderPrototype.float = function read_float() {\r\n if (this.pos + 4 > this.len)\r\n throw indexOutOfRange(this, 4);\r\n var value = ieee754.read(this.buf, this.pos, false, 23, 4);\r\n this.pos += 4;\r\n return value;\r\n};\r\n\r\n/**\r\n * Reads a double (64 bit float) as a number.\r\n * @function\r\n * @returns {number} Value read\r\n */\r\nReaderPrototype.double = function read_double() {\r\n if (this.pos + 8 > this.len)\r\n throw indexOutOfRange(this, 4);\r\n var value = ieee754.read(this.buf, this.pos, false, 52, 8);\r\n this.pos += 8;\r\n return value;\r\n};\r\n\r\n/**\r\n * Reads a sequence of bytes preceeded by its length as a varint.\r\n * @returns {Uint8Array} Value read\r\n */\r\nReaderPrototype.bytes = function read_bytes() {\r\n var length = this.int32() >>> 0,\r\n start = this.pos,\r\n end = this.pos + length;\r\n if (end > this.len)\r\n throw indexOutOfRange(this, length);\r\n this.pos += length;\r\n return start === end // fix for IE 10/Win8 and others' subarray returning array of size 1\r\n ? new this.buf.constructor(0)\r\n : this._slice.call(this.buf, start, end);\r\n};\r\n\r\n/**\r\n * Reads a string preceeded by its byte length as a varint.\r\n * @returns {string} Value read\r\n */\r\nReaderPrototype.string = function read_string() {\r\n // ref: https://github.com/google/closure-library/blob/master/closure/goog/crypt/crypt.js\r\n var bytes = this.bytes(),\r\n len = bytes.length;\r\n if (len) {\r\n var out = new Array(len), p = 0, c = 0;\r\n while (p < len) {\r\n var c1 = bytes[p++];\r\n if (c1 < 128)\r\n out[c++] = c1;\r\n else if (c1 > 191 && c1 < 224)\r\n out[c++] = (c1 & 31) << 6 | bytes[p++] & 63;\r\n else if (c1 > 239 && c1 < 365) {\r\n var u = ((c1 & 7) << 18 | (bytes[p++] & 63) << 12 | (bytes[p++] & 63) << 6 | bytes[p++] & 63) - 0x10000;\r\n out[c++] = 0xD800 + (u >> 10);\r\n out[c++] = 0xDC00 + (u & 1023);\r\n } else\r\n out[c++] = (c1 & 15) << 12 | (bytes[p++] & 63) << 6 | bytes[p++] & 63;\r\n }\r\n return String.fromCharCode.apply(String, out.slice(0, c));\r\n }\r\n return \"\";\r\n};\r\n\r\n/**\r\n * Skips the specified number of bytes if specified, otherwise skips a varint.\r\n * @param {number} [length] Length if known, otherwise a varint is assumed\r\n * @returns {Reader} `this`\r\n */\r\nReaderPrototype.skip = function skip(length) {\r\n if (length === undefined) {\r\n do {\r\n if (this.pos >= this.len)\r\n throw indexOutOfRange(this);\r\n } while (this.buf[this.pos++] & 128);\r\n } else {\r\n if (this.pos + length > this.len)\r\n throw indexOutOfRange(this, length);\r\n this.pos += length;\r\n }\r\n return this;\r\n};\r\n\r\n/**\r\n * Skips the next element of the specified wire type.\r\n * @param {number} wireType Wire type received\r\n * @returns {Reader} `this`\r\n */\r\nReaderPrototype.skipType = function(wireType) {\r\n switch (wireType) {\r\n case 0:\r\n this.skip();\r\n break;\r\n case 1:\r\n this.skip(8);\r\n break;\r\n case 2:\r\n this.skip(this.uint32());\r\n break;\r\n case 3:\r\n do { // eslint-disable-line no-constant-condition\r\n var tag = this.tag();\r\n if (tag.wireType === 4)\r\n break;\r\n this.skipType(tag.wireType);\r\n } while (true);\r\n break;\r\n case 5:\r\n this.skip(4);\r\n break;\r\n default:\r\n throw Error(\"invalid wire type: \" + wireType);\r\n }\r\n return this;\r\n};\r\n\r\n/**\r\n * Resets this instance and frees all resources.\r\n * @param {Uint8Array} [buffer] New buffer for a new sequence of read operations\r\n * @returns {Reader} `this`\r\n */\r\nReaderPrototype.reset = function reset(buffer) {\r\n if (buffer) {\r\n this.buf = buffer;\r\n this.len = buffer.length;\r\n } else {\r\n this.buf = null; // makes it throw\r\n this.len = 0;\r\n }\r\n this.pos = 0;\r\n return this;\r\n};\r\n\r\n/**\r\n * Finishes the current sequence of read operations, frees all resources and returns the remaining buffer.\r\n * @param {Uint8Array} [buffer] New buffer for a new sequence of read operations\r\n * @returns {Uint8Array} Finished buffer\r\n */\r\nReaderPrototype.finish = function finish(buffer) {\r\n var remain = this.pos\r\n ? this._slice.call(this.buf, this.pos)\r\n : this.buf;\r\n this.reset(buffer);\r\n return remain;\r\n};\r\n\r\n// One time function to initialize BufferReader with the now-known buffer implementation's slice method\r\nvar initBufferReader = function() {\r\n if (!util.Buffer)\r\n throw Error(\"Buffer is not supported\");\r\n BufferReaderPrototype._slice = util.Buffer.prototype.slice;\r\n initBufferReader = false;\r\n};\r\n\r\n/**\r\n * Constructs a new buffer reader.\r\n * @classdesc Wire format reader using node buffers.\r\n * @extends Reader\r\n * @constructor\r\n * @param {Buffer} buffer Buffer to read from\r\n */\r\nfunction BufferReader(buffer) {\r\n if (initBufferReader)\r\n initBufferReader();\r\n Reader.call(this, buffer);\r\n}\r\n\r\n/** @alias BufferReader.prototype */\r\nvar BufferReaderPrototype = BufferReader.prototype = Object.create(Reader.prototype);\r\n\r\nBufferReaderPrototype.constructor = BufferReader;\r\n\r\n/**\r\n * @override\r\n */\r\nBufferReaderPrototype.float = function read_float_buffer() {\r\n if (this.pos + 4 > this.len)\r\n throw indexOutOfRange(this, 4);\r\n var value = this.buf.readFloatLE(this.pos, true);\r\n this.pos += 4;\r\n return value;\r\n};\r\n\r\n/**\r\n * @override\r\n */\r\nBufferReaderPrototype.double = function read_double_buffer() {\r\n if (this.pos + 8 > this.len)\r\n throw indexOutOfRange(this, 8);\r\n var value = this.buf.readDoubleLE(this.pos, true);\r\n this.pos += 8;\r\n return value;\r\n};\r\n\r\n/**\r\n * @override\r\n */\r\nBufferReaderPrototype.string = function read_string_buffer() {\r\n var length = this.int32() >>> 0,\r\n start = this.pos,\r\n end = this.pos + length;\r\n if (end > this.len)\r\n throw indexOutOfRange(this, length);\r\n this.pos += length;\r\n return this.buf.toString(\"utf8\", start, end);\r\n};\r\n\r\n/**\r\n * @override\r\n */\r\nBufferReaderPrototype.finish = function finish_buffer(buffer) {\r\n var remain = this.pos ? this.buf.slice(this.pos) : this.buf;\r\n this.reset(buffer);\r\n return remain;\r\n};\r\n","\"use strict\";\r\nmodule.exports = Root;\r\n\r\nvar Namespace = require(10);\r\n/** @alias Root.prototype */\r\nvar RootPrototype = Namespace.extend(Root);\r\n\r\nvar Field = require(6),\r\n util = require(21),\r\n common = require(2);\r\n\r\n/**\r\n * Constructs a new root namespace.\r\n * @classdesc Root namespace wrapping all types, enums, services, sub-namespaces etc. that belong together.\r\n * @extends Namespace\r\n * @constructor\r\n * @param {Object} [options] Top level options\r\n */\r\nfunction Root(options) {\r\n Namespace.call(this, \"\", options);\r\n\r\n /**\r\n * Deferred extension fields.\r\n * @type {Field[]}\r\n */\r\n this.deferred = [];\r\n\r\n /**\r\n * Resolved file names of loaded files. \r\n * @type {string[]}\r\n */\r\n this.files = [];\r\n}\r\n\r\n/**\r\n * Loads a JSON definition into a root namespace.\r\n * @param {*} json JSON definition\r\n * @param {Root} [root] Root namespace, defaults to create a new one if omitted\r\n * @returns {Root} Root namespace\r\n */\r\nRoot.fromJSON = function fromJSON(json, root) {\r\n if (!root)\r\n root = new Root();\r\n return root.setOptions(json.options).addJSON(json.nested);\r\n};\r\n\r\n/**\r\n * Resolves the path of an imported file, relative to the importing origin.\r\n * This method exists so you can override it with your own logic in case your imports are scattered over multiple directories.\r\n * @function\r\n * @param {string} origin The file name of the importing file\r\n * @param {string} target The file name being imported\r\n * @returns {string} Resolved path to `target`\r\n */\r\nRootPrototype.resolvePath = util.resolvePath;\r\n\r\n/**\r\n * Loads one or multiple .proto or preprocessed .json files into this root namespace.\r\n * @param {string|string[]} filename Names of one or multiple files to load\r\n * @param {function(?Error, Root=)} [callback] Node-style callback function\r\n * @returns {Promise|undefined} A promise if `callback` has been omitted\r\n * @throws {TypeError} If arguments are invalid\r\n */\r\nRootPrototype.load = function load(filename, callback) {\r\n var self = this;\r\n if (!callback)\r\n return util.asPromise(load, self, filename);\r\n\r\n // Finishes loading by calling the callback (exactly once)\r\n function finish(err, root) {\r\n if (!callback)\r\n return;\r\n var cb = callback;\r\n callback = null;\r\n cb(err, root);\r\n }\r\n\r\n // Processes a single file\r\n function process(filename, source) {\r\n try {\r\n if (util.isString(source) && source.charAt(0) === \"{\")\r\n source = JSON.parse(source);\r\n if (!util.isString(source))\r\n self.setOptions(source.options).addJSON(source.nested);\r\n else {\r\n var parsed = require(13)(source, self);\r\n if (parsed.imports)\r\n parsed.imports.forEach(function(name) {\r\n fetch(self.resolvePath(filename, name));\r\n });\r\n if (parsed.weakImports)\r\n parsed.weakImports.forEach(function(name) {\r\n fetch(self.resolvePath(filename, name), true);\r\n });\r\n }\r\n } catch (err) {\r\n finish(err);\r\n return;\r\n }\r\n if (!queued)\r\n finish(null, self);\r\n }\r\n\r\n // Fetches a single file\r\n function fetch(filename, weak) {\r\n\r\n // Strip path if this file references a bundled definition\r\n var idx = filename.indexOf(\"google/protobuf/\");\r\n if (idx > -1) {\r\n var altname = filename.substring(idx);\r\n if (altname in common)\r\n filename = altname;\r\n }\r\n\r\n // Skip if already loaded\r\n if (self.files.indexOf(filename) > -1)\r\n return;\r\n self.files.push(filename);\r\n\r\n // Shortcut bundled definitions\r\n if (filename in common) {\r\n ++queued;\r\n setTimeout(function() {\r\n --queued;\r\n process(filename, common[filename]);\r\n });\r\n return;\r\n }\r\n\r\n // Otherwise fetch from disk or network\r\n ++queued;\r\n util.fetch(filename, function(err, source) {\r\n --queued;\r\n if (!callback)\r\n return; // terminated meanwhile\r\n if (err) {\r\n if (!weak)\r\n finish(err);\r\n return;\r\n }\r\n process(filename, source);\r\n });\r\n }\r\n var queued = 0;\r\n\r\n // Assembling the root namespace doesn't require working type\r\n // references anymore, so we can load everything in parallel\r\n if (util.isString(filename))\r\n filename = [ filename ];\r\n filename.forEach(function(filename) {\r\n fetch(self.resolvePath(\"\", filename));\r\n });\r\n\r\n if (!queued)\r\n finish(null);\r\n return undefined;\r\n};\r\n\r\n/**\r\n * Handles a deferred declaring extension field by creating a sister field to represent it within its extended type.\r\n * @param {Field} field Declaring extension field witin the declaring type\r\n * @returns {boolean} `true` if successfully added to the extended type, `false` otherwise\r\n * @inner\r\n * @ignore\r\n */\r\nfunction handleExtension(field) {\r\n var extendedType = field.parent.lookup(field.extend);\r\n if (extendedType) {\r\n var sisterField = new Field(field.getFullName(), field.id, field.type, field.rule, undefined, field.options);\r\n sisterField.declaringField = field;\r\n field.extensionField = sisterField;\r\n extendedType.add(sisterField);\r\n return true;\r\n }\r\n return false;\r\n}\r\n\r\n/**\r\n * Called when any object is added to this root or its sub-namespaces.\r\n * @param {ReflectionObject} object Object added\r\n * @returns {undefined}\r\n * @private\r\n */\r\nRootPrototype._handleAdd = function handleAdd(object) {\r\n // Try to handle any deferred extensions\r\n var newDeferred = this.deferred.slice();\r\n this.deferred = []; // because the loop calls handleAdd\r\n var i = 0;\r\n while (i < newDeferred.length)\r\n if (handleExtension(newDeferred[i]))\r\n newDeferred.splice(i, 1);\r\n else\r\n ++i;\r\n this.deferred = newDeferred;\r\n // Handle new declaring extension fields without a sister field yet\r\n if (object instanceof Field && object.extend !== undefined && !object.extensionField && !handleExtension(object) && this.deferred.indexOf(object) < 0)\r\n this.deferred.push(object);\r\n else if (object instanceof Namespace) {\r\n var nested = object.getNestedArray();\r\n for (i = 0; i < nested.length; ++i) // recurse into the namespace\r\n this._handleAdd(nested[i]);\r\n }\r\n};\r\n\r\n/**\r\n * Called when any object is removed from this root or its sub-namespaces.\r\n * @param {ReflectionObject} object Object removed\r\n * @returns {undefined}\r\n * @private\r\n */\r\nRootPrototype._handleRemove = function handleRemove(object) {\r\n if (object instanceof Field) {\r\n // If a deferred declaring extension field, cancel the extension\r\n if (object.extend !== undefined && !object.extensionField) {\r\n var index = this.deferred.indexOf(object);\r\n if (index > -1)\r\n this.deferred.splice(index, 1);\r\n }\r\n // If a declaring extension field with a sister field, remove its sister field\r\n if (object.extensionField) {\r\n object.extensionField.parent.remove(object.extensionField);\r\n object.extensionField = null;\r\n }\r\n } else if (object instanceof Namespace) {\r\n var nested = object.getNestedArray();\r\n for (var i = 0; i < nested.length; ++i) // recurse into the namespace\r\n this._handleRemove(nested[i]);\r\n }\r\n};\r\n\r\n/**\r\n * @override\r\n */\r\nRootPrototype.toString = function toString() {\r\n return this.constructor.name;\r\n};\r\n","\"use strict\";\r\nmodule.exports = Service;\r\n\r\nvar Namespace = require(10);\r\n/** @alias Namespace.prototype */\r\nvar NamespacePrototype = Namespace.prototype;\r\n/** @alias Service.prototype */\r\nvar ServicePrototype = Namespace.extend(Service);\r\n\r\nvar Method = require(9),\r\n util = require(21);\r\n\r\n/**\r\n * Constructs a new service.\r\n * @classdesc Reflected service.\r\n * @extends Namespace\r\n * @constructor\r\n * @param {string} name Service name\r\n * @param {Object.} [options] Service options\r\n * @throws {TypeError} If arguments are invalid\r\n */\r\nfunction Service(name, options) {\r\n Namespace.call(this, name, options);\r\n\r\n /**\r\n * Service methods.\r\n * @type {Object.}\r\n */\r\n this.methods = {}; // toJSON, marker\r\n\r\n /**\r\n * Cached methods as an array.\r\n * @type {?Method[]}\r\n * @private\r\n */\r\n this._methodsArray = null;\r\n}\r\n\r\nObject.defineProperties(ServicePrototype, {\r\n\r\n /**\r\n * Methods of this service as an array for iteration.\r\n * @name Service#methodsArray\r\n * @type {Method[]}\r\n * @readonly\r\n */\r\n methodsArray: {\r\n get: ServicePrototype.getMethodsArray = function getMethodsArray() {\r\n return this._methodsArray || (this._methodsArray = util.toArray(this.methods));\r\n }\r\n }\r\n\r\n});\r\n\r\nfunction clearCache(service) {\r\n service._methodsArray = null;\r\n return service;\r\n}\r\n\r\n/**\r\n * Tests if the specified JSON object describes a service.\r\n * @param {Object} json JSON object to test\r\n * @returns {boolean} `true` if the object describes a service\r\n */\r\nService.testJSON = function testJSON(json) {\r\n return Boolean(json && json.methods);\r\n};\r\n\r\n/**\r\n * Constructs a service from JSON.\r\n * @param {string} name Service name\r\n * @param {Object} json JSON object\r\n * @returns {Service} Created service\r\n * @throws {TypeError} If arguments are invalid\r\n */\r\nService.fromJSON = function fromJSON(name, json) {\r\n var service = new Service(name, json.options);\r\n if (json.methods)\r\n Object.keys(json.methods).forEach(function(methodName) {\r\n service.add(Method.fromJSON(methodName, json.methods[methodName]));\r\n });\r\n return service;\r\n};\r\n\r\n/**\r\n * @override\r\n */\r\nServicePrototype.toJSON = function toJSON() {\r\n var inherited = NamespacePrototype.toJSON.call(this);\r\n return {\r\n options : inherited && inherited.options || undefined,\r\n methods : Namespace.arrayToJSON(this.getMethodsArray()) || {},\r\n nested : inherited && inherited.nested || undefined\r\n };\r\n};\r\n\r\n/**\r\n * @override\r\n */\r\nServicePrototype.get = function get(name) {\r\n return NamespacePrototype.get.call(this, name) || this.methods[name] || null;\r\n};\r\n\r\n/**\r\n * @override\r\n */\r\nServicePrototype.resolveAll = function resolve() {\r\n var methods = this.getMethodsArray();\r\n for (var i = 0; i < methods.length; ++i)\r\n methods[i].resolve();\r\n return NamespacePrototype.resolve.call(this);\r\n};\r\n\r\n/**\r\n * @override\r\n */\r\nServicePrototype.add = function add(object) {\r\n if (this.get(object.name))\r\n throw Error(\"duplicate name '\" + object.name + '\" in ' + this);\r\n if (object instanceof Method) {\r\n this.methods[object.name] = object;\r\n object.parent = this;\r\n return clearCache(this);\r\n }\r\n return NamespacePrototype.add.call(this, object);\r\n};\r\n\r\n/**\r\n * @override\r\n */\r\nServicePrototype.remove = function remove(object) {\r\n if (object instanceof Method) {\r\n if (this.methods[object.name] !== object)\r\n throw Error(object + \" is not a member of \" + this);\r\n delete this.methods[object.name];\r\n object.parent = null;\r\n return clearCache(this);\r\n }\r\n return NamespacePrototype.remove.call(this, object);\r\n};\r\n","\"use strict\";\r\nmodule.exports = tokenize;\r\n\r\nvar delimRe = /[\\s{}=;:[\\],'\"()<>]/g,\r\n stringDoubleRe = /(?:\"([^\"\\\\]*(?:\\\\.[^\"\\\\]*)*)\")/g,\r\n stringSingleRe = /(?:'([^'\\\\]*(?:\\\\.[^'\\\\]*)*)')/g;\r\n\r\n/**\r\n * Handle object returned from {@link tokenize}.\r\n * @typedef {Object} TokenizerHandle\r\n * @property {function():number} line Gets the current line number\r\n * @property {function():?string} next Gets the next token and advances (`null` on eof)\r\n * @property {function():?string} peek Peeks for the next token (`null` on eof)\r\n * @property {function(string)} push Pushes a token back to the stack\r\n * @property {function(string, boolean=):boolean} skip Skips a token, returns its presence and advances or, if non-optional and not present, throws\r\n */\r\n\r\nvar s_nl = \"\\n\",\r\n s_sl = '/',\r\n s_as = '*';\r\n\r\nfunction unescape(str) {\r\n return str.replace(/\\\\(.?)/g, function($0, $1) {\r\n switch ($1) {\r\n case \"\\\\\":\r\n case \"\":\r\n return $1;\r\n case \"0\":\r\n return \"\\u0000\";\r\n default:\r\n return $1;\r\n }\r\n });\r\n}\r\n\r\n/**\r\n * Tokenizes the given .proto source and returns an object with useful utility functions.\r\n * @param {string} source Source contents\r\n * @returns {TokenizerHandle} Tokenizer handle\r\n */\r\nfunction tokenize(source) {\r\n /* eslint-disable default-case, callback-return */\r\n source = source.toString();\r\n \r\n var offset = 0,\r\n length = source.length,\r\n line = 1;\r\n \r\n var stack = [];\r\n\r\n var stringDelim = null;\r\n\r\n /**\r\n * Creates an error for illegal syntax.\r\n * @param {string} subject Subject\r\n * @returns {Error} Error created\r\n * @inner\r\n */\r\n function illegal(subject) {\r\n return Error(\"illegal \" + subject + \" (line \" + line + \")\");\r\n }\r\n\r\n /**\r\n * Reads a string till its end.\r\n * @returns {string} String read\r\n * @inner\r\n */\r\n function readString() {\r\n var re = stringDelim === '\"' ? stringDoubleRe : stringSingleRe;\r\n re.lastIndex = offset - 1;\r\n var match = re.exec(source);\r\n if (!match)\r\n throw illegal(\"string\");\r\n offset = re.lastIndex;\r\n push(stringDelim);\r\n stringDelim = null;\r\n return unescape(match[1]);\r\n }\r\n\r\n /**\r\n * Gets the character at `pos` within the source.\r\n * @param {number} pos Position\r\n * @returns {string} Character\r\n * @inner\r\n */\r\n function charAt(pos) {\r\n return source.charAt(pos);\r\n }\r\n\r\n /**\r\n * Obtains the next token.\r\n * @returns {?string} Next token or `null` on eof\r\n * @inner\r\n */\r\n function next() {\r\n if (stack.length > 0)\r\n return stack.shift();\r\n if (stringDelim)\r\n return readString();\r\n var repeat,\r\n prev,\r\n curr;\r\n do {\r\n if (offset === length)\r\n return null;\r\n repeat = false;\r\n while (/\\s/.test(curr = charAt(offset))) {\r\n if (curr === s_nl)\r\n ++line;\r\n if (++offset === length)\r\n return null;\r\n }\r\n if (charAt(offset) === s_sl) {\r\n if (++offset === length)\r\n throw illegal(\"comment\");\r\n if (charAt(offset) === s_sl) { // Line\r\n while (charAt(++offset) !== s_nl)\r\n if (offset === length)\r\n return null;\r\n ++offset;\r\n ++line;\r\n repeat = true;\r\n } else if ((curr = charAt(offset)) === s_as) { /* Block */\r\n do {\r\n if (curr === s_nl)\r\n ++line;\r\n if (++offset === length)\r\n return null;\r\n prev = curr;\r\n curr = charAt(offset);\r\n } while (prev !== s_as || curr !== s_sl);\r\n ++offset;\r\n repeat = true;\r\n } else\r\n return s_sl;\r\n }\r\n } while (repeat);\r\n\r\n if (offset === length)\r\n return null;\r\n var end = offset;\r\n delimRe.lastIndex = 0;\r\n var delim = delimRe.test(charAt(end++));\r\n if (!delim)\r\n while (end < length && !delimRe.test(charAt(end)))\r\n ++end;\r\n var token = source.substring(offset, offset = end);\r\n if (token === '\"' || token === \"'\")\r\n stringDelim = token;\r\n return token;\r\n }\r\n\r\n /**\r\n * Pushes a token back to the stack.\r\n * @param {string} token Token\r\n * @returns {undefined}\r\n * @inner\r\n */\r\n function push(token) {\r\n stack.push(token);\r\n }\r\n\r\n /**\r\n * Peeks for the next token.\r\n * @returns {?string} Token or `null` on eof\r\n * @inner\r\n */\r\n function peek() {\r\n if (!stack.length) {\r\n var token = next();\r\n if (token === null)\r\n return null;\r\n push(token);\r\n }\r\n return stack[0];\r\n }\r\n\r\n /**\r\n * Skips a token.\r\n * @param {string} expected Expected token\r\n * @param {boolean} [optional=false] Whether the token is optional\r\n * @returns {boolean} `true` when skipped, `false` if not\r\n * @throws {Error} When a required token is not present\r\n * @inner\r\n */\r\n function skip(expected, optional) {\r\n var actual = peek(),\r\n equals = actual === expected;\r\n if (equals) {\r\n next();\r\n return true;\r\n }\r\n if (!optional)\r\n throw illegal(\"token '\" + actual + \"', '\" + expected + \"' expected\");\r\n return false;\r\n }\r\n\r\n return {\r\n line: function() { return line; },\r\n next: next,\r\n peek: peek,\r\n push: push,\r\n skip: skip\r\n };\r\n /* eslint-enable default-case, callback-return */\r\n}","\"use strict\";\r\nmodule.exports = Type; \r\n\r\nvar Namespace = require(10);\r\n/** @alias Namespace.prototype */\r\nvar NamespacePrototype = Namespace.prototype;\r\n/** @alias Type.prototype */\r\nvar TypePrototype = Namespace.extend(Type);\r\n\r\nvar Enum = require(5),\r\n OneOf = require(12),\r\n Field = require(6),\r\n Service = require(17),\r\n Prototype = require(14),\r\n inherits = require(7),\r\n util = require(21),\r\n Reader = require(15),\r\n Encoder = require(4),\r\n Decoder = require(3),\r\n Verifier = require(24);\r\nvar codegen = util.codegen;\r\n\r\n/**\r\n * Constructs a new message type.\r\n * @classdesc Reflected message type.\r\n * @extends Namespace\r\n * @constructor\r\n * @param {string} name Message name\r\n * @param {Object} [options] Declared options\r\n */\r\nfunction Type(name, options) {\r\n Namespace.call(this, name, options);\r\n\r\n /**\r\n * Message fields.\r\n * @type {Object.}\r\n */\r\n this.fields = {}; // toJSON, marker\r\n\r\n /**\r\n * Oneofs declared within this namespace, if any.\r\n * @type {Object.}\r\n */\r\n this.oneofs = undefined; // toJSON\r\n\r\n /**\r\n * Extension ranges, if any.\r\n * @type {number[][]}\r\n */\r\n this.extensions = undefined; // toJSON\r\n\r\n /**\r\n * Reserved ranges, if any.\r\n * @type {number[][]}\r\n */\r\n this.reserved = undefined; // toJSON\r\n\r\n /**\r\n * Cached fields by id.\r\n * @type {?Object.}\r\n * @private\r\n */\r\n this._fieldsById = null;\r\n\r\n /**\r\n * Cached fields as an array.\r\n * @type {?Field[]}\r\n * @private\r\n */\r\n this._fieldsArray = null;\r\n\r\n /**\r\n * Cached oneofs as an array.\r\n * @type {?OneOf[]}\r\n * @private\r\n */\r\n this._oneofsArray = null;\r\n\r\n /**\r\n * Cached constructor.\r\n * @type {?Function}\r\n * @private\r\n */\r\n this._ctor = null;\r\n}\r\n\r\nObject.defineProperties(TypePrototype, {\r\n\r\n /**\r\n * Message fields by id.\r\n * @name Type#fieldsById\r\n * @type {Object.}\r\n * @readonly\r\n */\r\n fieldsById: {\r\n get: TypePrototype.getFieldsById = function getFieldsById() {\r\n if (this._fieldsById)\r\n return this._fieldsById;\r\n this._fieldsById = {};\r\n var names = Object.keys(this.fields);\r\n for (var i = 0; i < names.length; ++i) {\r\n var field = this.fields[names[i]],\r\n id = field.id;\r\n if (this._fieldsById[id])\r\n throw Error(\"duplicate id \" + id + \" in \" + this);\r\n this._fieldsById[id] = field;\r\n }\r\n return this._fieldsById;\r\n }\r\n },\r\n\r\n /**\r\n * Fields of this message as an array for iteration.\r\n * @name Type#fieldsArray\r\n * @type {Field[]}\r\n * @readonly\r\n */\r\n fieldsArray: {\r\n get: TypePrototype.getFieldsArray = function getFieldsArray() {\r\n return this._fieldsArray || (this._fieldsArray = util.toArray(this.fields));\r\n }\r\n },\r\n\r\n /**\r\n * Oneofs of this message as an array for iteration.\r\n * @name Type#oneofsArray\r\n * @type {OneOf[]}\r\n * @readonly\r\n */\r\n oneofsArray: {\r\n get: TypePrototype.getOneofsArray = function getOneofsArray() {\r\n return this._oneofsArray || (this._oneofsArray = util.toArray(this.oneofs));\r\n }\r\n },\r\n\r\n /**\r\n * The registered constructor, if any registered, otherwise a generic constructor.\r\n * @name Type#ctor\r\n * @type {Prototype}\r\n */\r\n ctor: {\r\n get: TypePrototype.getCtor = function getCtor() {\r\n if (this._ctor)\r\n return this._ctor;\r\n var ctor;\r\n if (codegen.supported)\r\n ctor = codegen(\"p\")(\"P.call(this,p)\").eof(this.getFullName() + \"$ctor\", {\r\n P: Prototype\r\n });\r\n else\r\n ctor = function GenericMessage(properties) {\r\n Prototype.call(this, properties);\r\n };\r\n ctor.prototype = inherits(ctor, this);\r\n this._ctor = ctor;\r\n return ctor;\r\n },\r\n set: TypePrototype.setCtor = function setCtor(ctor) {\r\n if (ctor && !(ctor.prototype instanceof Prototype))\r\n throw util._TypeError(\"ctor\", \"a constructor inheriting from Prototype\");\r\n this._ctor = ctor;\r\n }\r\n }\r\n});\r\n\r\nfunction clearCache(type) {\r\n type._fieldsById = type._fieldsArray = type._oneofsArray = type._ctor = null;\r\n delete type.encode;\r\n delete type.decode;\r\n return type;\r\n}\r\n\r\n/**\r\n * Tests if the specified JSON object describes a message type.\r\n * @param {*} json JSON object to test\r\n * @returns {boolean} `true` if the object describes a message type\r\n */\r\nType.testJSON = function testJSON(json) {\r\n return Boolean(json && json.fields);\r\n};\r\n\r\nvar nestedTypes = [ Enum, Type, Field, Service ];\r\n\r\n/**\r\n * Creates a type from JSON.\r\n * @param {string} name Message name\r\n * @param {Object} json JSON object\r\n * @returns {Type} Created message type\r\n */\r\nType.fromJSON = function fromJSON(name, json) {\r\n var type = new Type(name, json.options);\r\n type.extensions = json.extensions;\r\n type.reserved = json.reserved;\r\n if (json.fields)\r\n Object.keys(json.fields).forEach(function(fieldName) {\r\n type.add(Field.fromJSON(fieldName, json.fields[fieldName]));\r\n });\r\n if (json.oneofs)\r\n Object.keys(json.oneofs).forEach(function(oneOfName) {\r\n type.add(OneOf.fromJSON(oneOfName, json.oneofs[oneOfName]));\r\n });\r\n if (json.nested)\r\n Object.keys(json.nested).forEach(function(nestedName) {\r\n var nested = json.nested[nestedName];\r\n for (var i = 0; i < nestedTypes.length; ++i) {\r\n if (nestedTypes[i].testJSON(nested)) {\r\n type.add(nestedTypes[i].fromJSON(nestedName, nested));\r\n return;\r\n }\r\n }\r\n throw Error(\"invalid nested object in \" + type + \": \" + nestedName);\r\n });\r\n if (json.extensions && json.extensions.length)\r\n type.extensions = json.extensions;\r\n if (json.reserved && json.reserved.length)\r\n type.reserved = json.reserved;\r\n return type;\r\n};\r\n\r\n/**\r\n * @override\r\n */\r\nTypePrototype.toJSON = function toJSON() {\r\n var inherited = NamespacePrototype.toJSON.call(this);\r\n return {\r\n options : inherited && inherited.options || undefined,\r\n oneofs : Namespace.arrayToJSON(this.getOneofsArray()),\r\n fields : Namespace.arrayToJSON(this.getFieldsArray().filter(function(obj) { return !obj.declaringField; })) || {},\r\n extensions : this.extensions && this.extensions.length ? this.extensions : undefined,\r\n reserved : this.reserved && this.reserved.length ? this.reserved : undefined,\r\n nested : inherited && inherited.nested || undefined\r\n };\r\n};\r\n\r\n/**\r\n * @override\r\n */\r\nTypePrototype.resolveAll = function resolve() {\r\n var fields = this.getFieldsArray(), i = 0;\r\n while (i < fields.length)\r\n fields[i++].resolve();\r\n var oneofs = this.getOneofsArray(); i = 0;\r\n while (i < oneofs.length)\r\n oneofs[i++].resolve();\r\n return NamespacePrototype.resolve.call(this);\r\n};\r\n\r\n/**\r\n * @override\r\n */\r\nTypePrototype.get = function get(name) {\r\n return NamespacePrototype.get.call(this, name) || this.fields && this.fields[name] || this.oneofs && this.oneofs[name] || null;\r\n};\r\n\r\n/**\r\n * Adds a nested object to this type.\r\n * @param {ReflectionObject} object Nested object to add\r\n * @returns {Type} `this`\r\n * @throws {TypeError} If arguments are invalid\r\n * @throws {Error} If there is already a nested object with this name or, if a field, when there is already a field with this id\r\n */\r\nTypePrototype.add = function add(object) {\r\n if (this.get(object.name))\r\n throw Error(\"duplicate name '\" + object.name + '\" in ' + this);\r\n if (object instanceof Field && object.extend === undefined) {\r\n // NOTE: Extension fields aren't actual fields on the declaring type, but nested objects.\r\n // The root object takes care of adding distinct sister-fields to the respective extended\r\n // type instead.\r\n if (this.getFieldsById()[object.id])\r\n throw Error(\"duplicate id \" + object.id + \" in \" + this);\r\n if (object.parent)\r\n object.parent.remove(object);\r\n this.fields[object.name] = object;\r\n object.message = this;\r\n object.onAdd(this);\r\n return clearCache(this);\r\n }\r\n if (object instanceof OneOf) {\r\n if (!this.oneofs)\r\n this.oneofs = {};\r\n this.oneofs[object.name] = object;\r\n object.onAdd(this);\r\n return clearCache(this);\r\n }\r\n return NamespacePrototype.add.call(this, object);\r\n};\r\n\r\n/**\r\n * Removes a nested object from this type.\r\n * @param {ReflectionObject} object Nested object to remove\r\n * @returns {Type} `this`\r\n * @throws {TypeError} If arguments are invalid\r\n * @throws {Error} If `object` is not a member of this type\r\n */\r\nTypePrototype.remove = function remove(object) {\r\n if (object instanceof Field && object.extend === undefined) {\r\n // See Type#add for the reason why extension fields are excluded here.\r\n if (this.fields[object.name] !== object)\r\n throw Error(object + \" is not a member of \" + this);\r\n delete this.fields[object.name];\r\n object.message = null;\r\n return clearCache(this);\r\n }\r\n return NamespacePrototype.remove.call(this, object);\r\n};\r\n\r\n/**\r\n * Creates a new message of this type using the specified properties.\r\n * @param {Object} [properties] Properties to set\r\n * @param {?Function} [ctor] Constructor to use.\r\n * Defaults to use the internal constuctor.\r\n * @returns {Prototype} Message instance\r\n */\r\nTypePrototype.create = function create(properties, ctor) {\r\n if (typeof properties === 'function') {\r\n ctor = properties;\r\n properties = undefined;\r\n } else if (properties /* already */ instanceof Prototype)\r\n return properties;\r\n if (ctor) {\r\n if (!(ctor.prototype instanceof Prototype))\r\n throw util._TypeError(\"ctor\", \"a constructor inheriting from Prototype\");\r\n } else\r\n ctor = this.getCtor();\r\n return new ctor(properties);\r\n};\r\n\r\n/**\r\n * Encodes a message of this type.\r\n * @param {Prototype|Object} message Message instance or plain object\r\n * @param {Writer} [writer] Writer to encode to\r\n * @returns {Writer} writer\r\n */\r\nTypePrototype.encode = function encode(message, writer) {\r\n var encoder = new Encoder(this);\r\n this.encode = codegen.supported\r\n ? encoder.generate()\r\n : encoder.encode;\r\n return this.encode(message, writer);\r\n};\r\n\r\n/**\r\n * Encodes a message of this type preceeded by its byte length as a varint.\r\n * @param {Prototype|Object} message Message instance or plain object\r\n * @param {Writer} [writer] Writer to encode to\r\n * @returns {Writer} writer\r\n */\r\nTypePrototype.encodeDelimited = function encodeDelimited(message, writer) {\r\n return this.encode(message, writer).ldelim();\r\n};\r\n\r\n/**\r\n * Decodes a message of this type.\r\n * @param {Reader|Uint8Array} readerOrBuffer Reader or buffer to decode from\r\n * @param {number} [length] Length of the message, if known beforehand\r\n * @returns {Prototype} Decoded message\r\n */\r\nTypePrototype.decode = function decode(readerOrBuffer, length) {\r\n var decoder = new Decoder(this);\r\n this.decode = codegen.supported\r\n ? decoder.generate()\r\n : decoder.decode;\r\n return this.decode(readerOrBuffer, length);\r\n};\r\n\r\n/**\r\n * Decodes a message of this type preceeded by its byte length as a varint.\r\n * @param {Reader|Uint8Array} readerOrBuffer Reader or buffer to decode from\r\n * @returns {Prototype} Decoded message\r\n */\r\nTypePrototype.decodeDelimited = function decodeDelimited(readerOrBuffer) {\r\n readerOrBuffer = readerOrBuffer instanceof Reader ? readerOrBuffer : Reader(readerOrBuffer);\r\n return this.decode(readerOrBuffer, readerOrBuffer.uint32());\r\n};\r\n\r\n/**\r\n * Verifies that enum values are valid and that any required fields are present.\r\n * @param {Prototype|Object} message Message to verify\r\n * @returns {?string} `null` if valid, otherwise the reason why it is not\r\n */\r\nTypePrototype.verify = function verify(message) {\r\n var verifier = new Verifier(this);\r\n this.verify = codegen.supported\r\n ? verifier.generate()\r\n : verifier.verify;\r\n return this.verify(message);\r\n};\r\n","\"use strict\";\r\n\r\n/**\r\n * Common type constants.\r\n * @namespace\r\n */\r\nvar types = module.exports = {};\r\n\r\nvar s = [\r\n \"double\", // 0\r\n \"float\", // 1\r\n \"int32\", // 2\r\n \"uint32\", // 3\r\n \"sint32\", // 4\r\n \"fixed32\", // 5\r\n \"sfixed32\", // 6\r\n \"int64\", // 7\r\n \"uint64\", // 8\r\n \"sint64\", // 9\r\n \"fixed64\", // 10\r\n \"sfixed64\", // 11\r\n \"bool\", // 12\r\n \"string\", // 13\r\n \"bytes\" // 14\r\n];\r\n\r\nfunction bake(values, offset) {\r\n var i = 0, o = {};\r\n offset |= 0;\r\n while (i < values.length) o[s[i + offset]] = values[i++];\r\n return o;\r\n}\r\n\r\n/**\r\n * Basic type wire types.\r\n * @type {Object.}\r\n */\r\ntypes.basic = bake([\r\n /* double */ 1,\r\n /* float */ 5,\r\n /* int32 */ 0,\r\n /* uint32 */ 0,\r\n /* sint32 */ 0,\r\n /* fixed32 */ 5,\r\n /* sfixed32 */ 5,\r\n /* int64 */ 0,\r\n /* uint64 */ 0,\r\n /* sint64 */ 0,\r\n /* fixed64 */ 1,\r\n /* sfixed64 */ 1,\r\n /* bool */ 0,\r\n /* string */ 2,\r\n /* bytes */ 2\r\n]);\r\n\r\nvar emptyArray = [];\r\nif (Object.freeze)\r\n Object.freeze(emptyArray);\r\n\r\n/**\r\n * Basic type defaults.\r\n * @type {Object.}\r\n */\r\ntypes.defaults = bake([\r\n /* double */ 0,\r\n /* float */ 0,\r\n /* int32 */ 0,\r\n /* uint32 */ 0,\r\n /* sint32 */ 0,\r\n /* fixed32 */ 0,\r\n /* sfixed32 */ 0,\r\n /* int64 */ 0,\r\n /* uint64 */ 0,\r\n /* sint64 */ 0,\r\n /* fixed64 */ 0,\r\n /* sfixed64 */ 0,\r\n /* bool */ false,\r\n /* string */ \"\",\r\n /* bytes */ emptyArray\r\n]);\r\n\r\n/**\r\n * Basic long type wire types.\r\n * @type {Object.}\r\n */\r\ntypes.long = bake([\r\n /* int64 */ 0,\r\n /* uint64 */ 0,\r\n /* sint64 */ 0,\r\n /* fixed64 */ 1,\r\n /* sfixed64 */ 1\r\n], 7);\r\n\r\n/**\r\n * Allowed types for map keys with their associated wire type.\r\n * @type {Object.}\r\n */\r\ntypes.mapKey = bake([\r\n /* int32 */ 0,\r\n /* uint32 */ 0,\r\n /* sint32 */ 0,\r\n /* fixed32 */ 5,\r\n /* sfixed32 */ 5,\r\n /* int64 */ 0,\r\n /* uint64 */ 0,\r\n /* sint64 */ 0,\r\n /* fixed64 */ 1,\r\n /* sfixed64 */ 1,\r\n /* bool */ 0,\r\n /* string */ 2\r\n], 2);\r\n\r\n/**\r\n * Allowed types for packed repeated fields with their associated wire type.\r\n * @type {Object.}\r\n */\r\ntypes.packed = bake([\r\n /* int32 */ 0,\r\n /* uint32 */ 0,\r\n /* sint32 */ 0,\r\n /* fixed32 */ 5,\r\n /* sfixed32 */ 5,\r\n /* int64 */ 0,\r\n /* uint64 */ 0,\r\n /* sint64 */ 0,\r\n /* fixed64 */ 1,\r\n /* sfixed64 */ 1,\r\n /* bool */ 0\r\n], 2);\r\n","\"use strict\";\r\n\r\n/**\r\n * Utility functions.\r\n * @namespace\r\n */\r\nvar util = module.exports = {};\r\n\r\nvar LongBits =\r\nutil.LongBits = require(\"./util/longbits\");\r\nutil.codegen = require(\"./util/codegen\");\r\n\r\n/**\r\n * Whether running within node or not.\r\n * @memberof util\r\n * @type {boolean}\r\n */\r\nvar isNode = util.isNode = Boolean(global.process && global.process.versions && global.process.versions.node);\r\n\r\n/**\r\n * Optional buffer class to use.\r\n * If you assign any compatible buffer implementation to this property, the library will use it.\r\n * @type {?Function}\r\n */\r\nutil.Buffer = null;\r\n\r\nif (isNode)\r\n try { util.Buffer = require(\"buffer\").Buffer; } catch (e) {} // eslint-disable-line no-empty\r\n\r\n/**\r\n * Optional Long class to use.\r\n * If you assign any compatible long implementation to this property, the library will use it.\r\n * @type {?Function}\r\n */\r\nutil.Long = global.dcodeIO && global.dcodeIO.Long || null;\r\n\r\nif (!util.Long)\r\n try { util.Long = require(\"long\"); } catch (e) {} // eslint-disable-line no-empty\r\n\r\n/**\r\n * Tests if the specified value is a string.\r\n * @memberof util\r\n * @param {*} value Value to test\r\n * @returns {boolean} `true` if the value is a string\r\n */\r\nfunction isString(value) {\r\n return typeof value === 'string' || value instanceof String;\r\n}\r\n\r\nutil.isString = isString;\r\n\r\n/**\r\n * Tests if the specified value is a non-null object.\r\n * @param {*} value Value to test\r\n * @returns {boolean} `true` if the value is a non-null object\r\n */\r\nutil.isObject = function isObject(value) {\r\n return Boolean(value && typeof value === 'object');\r\n};\r\n\r\n/**\r\n * Tests if the specified value is an integer.\r\n * @function\r\n * @param {*} value Value to test\r\n * @returns {boolean} `true` if the value is an integer\r\n */\r\nutil.isInteger = Number.isInteger || function isInteger(value) {\r\n return typeof value === 'number' && isFinite(value) && Math.floor(value) === value;\r\n};\r\n\r\n/**\r\n * Converts an object's values to an array.\r\n * @param {Object.} object Object to convert\r\n * @returns {Array.<*>} Converted array\r\n */\r\nutil.toArray = function toArray(object) {\r\n if (!object)\r\n return [];\r\n var names = Object.keys(object),\r\n length = names.length;\r\n var array = new Array(length);\r\n for (var i = 0; i < length; ++i)\r\n array[i] = object[names[i]];\r\n return array;\r\n};\r\n\r\n/**\r\n * Creates a type error.\r\n * @param {string} name Argument name\r\n * @param {string} [description=a string] Expected argument descripotion\r\n * @returns {TypeError} Created type error\r\n * @private\r\n */\r\nutil._TypeError = function(name, description) {\r\n return TypeError(name + \" must be \" + (description || \"a string\"));\r\n};\r\n\r\n/**\r\n * Returns a promise from a node-style function.\r\n * @memberof util\r\n * @param {function(Error, ...*)} fn Function to call\r\n * @param {Object} ctx Function context\r\n * @param {...*} params Function arguments\r\n * @returns {Promise<*>} Promisified function\r\n */\r\nfunction asPromise(fn, ctx/*, varargs */) {\r\n var args = [];\r\n for (var i = 2; i < arguments.length; ++i)\r\n args.push(arguments[i]);\r\n return new Promise(function(resolve, reject) {\r\n fn.apply(ctx, args.concat(\r\n function(err/*, varargs */) {\r\n if (err) reject(err);\r\n else resolve.apply(null, Array.prototype.slice.call(arguments, 1));\r\n }\r\n ));\r\n });\r\n}\r\n\r\nutil.asPromise = asPromise;\r\n\r\n/**\r\n * Fetches the contents of a file.\r\n * @memberof util\r\n * @param {string} path File path or url\r\n * @param {function(?Error, string=)} [callback] Node-style callback\r\n * @returns {Promise|undefined} Promise if callback has been omitted \r\n */\r\nfunction fetch(path, callback) {\r\n if (!callback)\r\n return asPromise(fetch, util, path);\r\n var fs; try { fs = require(\"fs\"); } catch (e) {} // eslint-disable-line no-empty\r\n if (fs && fs.readFile)\r\n return fs.readFile(path, \"utf8\", callback);\r\n var xhr = new XMLHttpRequest();\r\n function onload() {\r\n if (xhr.status !== 0 && xhr.status !== 200)\r\n return callback(Error(\"status \" + xhr.status));\r\n if (isString(xhr.responseText))\r\n return callback(null, xhr.responseText);\r\n return callback(Error(\"request failed\"));\r\n }\r\n xhr.onreadystatechange = function() {\r\n if (xhr.readyState === 4)\r\n onload();\r\n };\r\n xhr.open(\"GET\", path, true);\r\n xhr.send();\r\n return undefined;\r\n}\r\n\r\nutil.fetch = fetch;\r\n\r\n/**\r\n * Tests if the specified path is absolute.\r\n * @memberof util\r\n * @param {string} path Path to test\r\n * @returns {boolean} `true` if path is absolute\r\n */\r\nfunction isAbsolutePath(path) {\r\n return /^(?:\\/|[a-zA-Z0-9]+:)/.test(path);\r\n}\r\n\r\nutil.isAbsolutePath = isAbsolutePath;\r\n\r\n/**\r\n * Normalizes the specified path.\r\n * @memberof util\r\n * @param {string} path Path to normalize\r\n * @returns {string} Normalized path\r\n */\r\nfunction normalizePath(path) {\r\n path = path.replace(/\\\\/g, '/')\r\n .replace(/\\/{2,}/g, '/');\r\n var parts = path.split('/');\r\n var abs = isAbsolutePath(path);\r\n var prefix = \"\";\r\n if (abs)\r\n prefix = parts.shift() + '/';\r\n for (var i = 0; i < parts.length;) {\r\n if (parts[i] === '..') {\r\n if (i > 0)\r\n parts.splice(--i, 2);\r\n else if (abs)\r\n parts.splice(i, 1);\r\n else\r\n ++i;\r\n } else if (parts[i] === '.')\r\n parts.splice(i, 1);\r\n else\r\n ++i;\r\n }\r\n return prefix + parts.join('/');\r\n}\r\n\r\nutil.normalizePath = normalizePath;\r\n\r\n/**\r\n * Resolves the specified include path against the specified origin path.\r\n * @param {string} originPath Path that was used to fetch the origin file\r\n * @param {string} importPath Import path specified in the origin file\r\n * @param {boolean} [alreadyNormalized] `true` if both paths are already known to be normalized\r\n * @returns {string} Path to the imported file\r\n */\r\nutil.resolvePath = function resolvePath(originPath, importPath, alreadyNormalized) {\r\n if (!alreadyNormalized)\r\n importPath = normalizePath(importPath);\r\n if (isAbsolutePath(importPath))\r\n return importPath;\r\n if (!alreadyNormalized)\r\n originPath = normalizePath(originPath);\r\n originPath = originPath.replace(/(?:\\/|^)[^/]+$/, '');\r\n return originPath.length ? normalizePath(originPath + '/' + importPath) : importPath;\r\n};\r\n\r\n/**\r\n * Converts a number or long to an 8 characters long hash string.\r\n * @param {Long|number} value Value to convert\r\n * @returns {string} Hash\r\n */\r\nutil.longToHash = function longToHash(value) {\r\n return value\r\n ? LongBits.from(value).toHash()\r\n : '\\0\\0\\0\\0\\0\\0\\0\\0';\r\n};\r\n\r\n/**\r\n * Converts an 8 characters long hash string to a long or number.\r\n * @param {string} hash Hash\r\n * @param {boolean} [unsigned=false] Whether unsigned or not\r\n * @returns {Long|number} Original value\r\n */\r\nutil.longFromHash = function longFromHash(hash, unsigned) {\r\n var bits = LongBits.fromHash(hash);\r\n if (util.Long)\r\n return util.Long.fromBits(bits.lo, bits.hi, unsigned);\r\n return bits.toNumber(Boolean(unsigned));\r\n};\r\n\r\n/**\r\n * Tests if two possibly long values are not equal.\r\n * @param {number|Long} a First value\r\n * @param {number|Long} b Second value\r\n * @returns {boolean} `true` if not equal\r\n */\r\nutil.longNeq = function longNeq(a, b) {\r\n return typeof a === 'number'\r\n ? typeof b === 'number'\r\n ? a !== b\r\n : (a = LongBits.fromNumber(a)).lo !== b.low || a.hi !== b.high\r\n : typeof b === 'number'\r\n ? (b = LongBits.fromNumber(b)).lo !== a.low || b.hi !== a.high\r\n : a.low !== b.low || a.high !== b.high;\r\n};\r\n\r\n/**\r\n * Merges the properties of the source object into the destination object.\r\n * @param {Object} dst Destination object\r\n * @param {Object} src Source object\r\n * @param {boolean} [ifNotSet=false] Merges only if the key is not already set\r\n * @returns {Object} Destination object\r\n */\r\nutil.merge = function merge(dst, src, ifNotSet) {\r\n if (src) {\r\n var keys = Object.keys(src);\r\n for (var i = 0; i < keys.length; ++i)\r\n if (dst[keys[i]] === undefined || !ifNotSet)\r\n dst[keys[i]] = src[keys[i]];\r\n }\r\n return dst;\r\n};\r\n\r\n// Reserved words, ref: https://msdn.microsoft.com/en-us/library/ttyab5c8.aspx\r\n// var reserved = \"break,case,catch,class,const,continue,debugger,default,delete,do,else,export,extends,false,finally,for,function,if,import,in,instanceof,new,null,protected,return,super,switch,this,throw,true,try,typeof,var,while,with,abstract,boolean,byte,char,decimal,double,enum,final,float,get,implements,int,interface,internal,long,package,private,protected,public,sbyte,set,short,static,uint,ulong,ushort,void,assert,ensure,event,goto,invariant,namespace,native,require,synchronized,throws,transient,use,volatile\".split(',');\r\n\r\n/**\r\n * Returns a safe property accessor for the specified properly name.\r\n * @param {string} prop Property name\r\n * @returns {string} Safe accessor\r\n */\r\nutil.safeProp = function safeProp(prop) {\r\n // NOTE: While dot notation looks cleaner it doesn't seem to have a significant impact on performance.\r\n // Hence, we can safe the extra bytes from providing the reserved keywords above for pre-ES5 envs.\r\n return /* /^[a-z_$][a-z0-9_$]*$/i.test(prop) && !reserved.indexOf(prop) ? \".\" + prop : */ \"['\" + prop.replace(/\\\\/g, \"\\\\\\\\\").replace(/'/g, \"\\\\'\") + \"']\";\r\n};\r\n\r\n/**\r\n * Creates a new buffer of whatever type supported by the environment.\r\n * @param {number} [size=0] Buffer size\r\n * @returns {Uint8Array} Buffer\r\n */\r\nutil.newBuffer = function newBuffer(size) {\r\n return new (util.Buffer || typeof Uint8Array !== 'undefined' && Uint8Array || Array)(size || 0);\r\n};\r\n","\"use strict\";\r\nmodule.exports = codegen;\r\n\r\nvar blockOpenRe = /[{[]$/,\r\n blockCloseRe = /^[}\\]]/,\r\n casingRe = /:$/,\r\n branchRe = /^\\s*(?:if|else if|while|for)\\b|\\b(?:else)\\s*$/,\r\n breakRe = /\\b(?:break|continue);?$|^\\s*return\\b/;\r\n\r\n/**\r\n * Programmatically generates a function.\r\n * @memberof util\r\n * @param {...string} params Function parameter names\r\n * @returns {util.CodegenAppender} Printf-like appender function\r\n * @property {boolean} supported Whether code generation is supported by the environment.\r\n * @property {boolean} verbose=false When set to true, codegen will log generated code to console. Useful for debugging.\r\n */\r\nfunction codegen(/* varargs */) {\r\n var args = Array.prototype.slice.call(arguments),\r\n src = ['\\t\"use strict\"'];\r\n\r\n var indent = 1,\r\n inCase = false;\r\n\r\n /**\r\n * Appends a printf-like formatted line to the generated source. Returned when calling {@link util.codegen}.\r\n * @typedef CodegenAppender\r\n * @memberof util\r\n * @type {function}\r\n * @param {string} format A printf-like format string\r\n * @param {...*} params Format replacements\r\n * @returns {util.CodegenAppender} Itself\r\n * @property {util.CodegenStringer} str\r\n * @property {util.CodegenEnder} eof\r\n * @see {@link https://nodejs.org/docs/latest/api/util.html#util_util_format_format_args}\r\n */\r\n /**/\r\n function gen() {\r\n var fmt = [];\r\n for (var i = 0; i < arguments.length; ++i)\r\n fmt[i] = arguments[i];\r\n var line = gen.fmt.apply(null, fmt);\r\n var level = indent;\r\n if (src.length) {\r\n var prev = src[src.length - 1];\r\n\r\n // block open or one time branch\r\n if (blockOpenRe.test(prev))\r\n level = ++indent; // keep\r\n else if (branchRe.test(prev))\r\n ++level; // once\r\n \r\n // casing\r\n if (casingRe.test(prev) && !casingRe.test(line)) {\r\n level = ++indent;\r\n inCase = true;\r\n } else if (inCase && breakRe.test(prev)) {\r\n level = --indent;\r\n inCase = false;\r\n }\r\n\r\n // block close\r\n if (blockCloseRe.test(line))\r\n level = --indent;\r\n }\r\n for (var index = 0; index < level; ++index)\r\n line = \"\\t\" + line;\r\n src.push(line);\r\n return gen;\r\n }\r\n\r\n gen.fmt = function fmt(format) {\r\n var params = Array.prototype.slice.call(arguments, 1),\r\n index = 0;\r\n return format.replace(/%([djs])/g, function($0, $1) {\r\n var param = params[index++];\r\n return $1 === \"j\"\r\n ? JSON.stringify(param)\r\n : String(param);\r\n });\r\n };\r\n\r\n /**\r\n * Stringifies the so far generated function source.\r\n * @typedef CodegenStringer\r\n * @memberof util\r\n * @type {function}\r\n * @param {string} [name] Function name, defaults to generate an anonymous function\r\n * @returns {string} Function source using tabs for indentation\r\n */\r\n /**/\r\n gen.str = function str(name) {\r\n return \"function \" + (name ? name.replace(/[^\\w_$]/g, \"_\") : \"\") + \"(\" + args.join(\",\") + \") {\\n\" + src.join(\"\\n\") + \"\\n}\";\r\n };\r\n\r\n /**\r\n * Ends generation and builds the function.\r\n * @typedef CodegenEnder\r\n * @memberof util\r\n * @type {function}\r\n * @param {string} [name] Function name, defaults to generate an anonymous function\r\n * @param {Object|Array.} [scope] Function scope\r\n * @returns {function} A function to apply the scope manually when `scope` is an array, otherwise the generated function with scope applied\r\n */\r\n /**/\r\n gen.eof = function eof(name, scope) {\r\n if (name && typeof name === 'object') {\r\n scope = name;\r\n name = undefined;\r\n }\r\n var code = gen.str(name);\r\n if (codegen.verbose)\r\n console.log(\"--- codegen ---\\n\" + code.replace(/^/mg, \"> \").replace(/\\t/g, \" \")); // eslint-disable-line no-console\r\n code = \"return \" + code;\r\n var params, values = [];\r\n if (Array.isArray(scope)) {\r\n params = scope.slice();\r\n } else if (scope) {\r\n params = Object.keys(scope);\r\n values = params.map(function(key) { return scope[key]; });\r\n } else\r\n params = [];\r\n var fn = Function.apply(null, params.concat(code)); // eslint-disable-line no-new-func\r\n return values ? fn.apply(null, values) : fn();\r\n };\r\n\r\n return gen;\r\n}\r\n\r\ncodegen.supported = false;\r\ntry { codegen.supported = codegen(\"a\",\"b\")(\"return a-b\").eof()(2,1) === 1; } catch (e) {} // eslint-disable-line no-empty\r\n\r\ncodegen.verbose = false;\r\n","\"use strict\";\r\n\r\nmodule.exports = LongBits;\r\n\r\nvar util = require(21);\r\n\r\n/**\r\n * Constructs new long bits.\r\n * @classdesc Helper class for working with the low and high bits of a 64 bit value.\r\n * @memberof util\r\n * @constructor\r\n * @param {number} lo Low bits\r\n * @param {number} hi High bits\r\n */\r\nfunction LongBits(lo, hi) { // make sure to always call this with unsigned 32bits for proper optimization\r\n\r\n /**\r\n * Low bits.\r\n * @type {number}\r\n */\r\n this.lo = lo;\r\n\r\n /**\r\n * High bits.\r\n * @type {number}\r\n */\r\n this.hi = hi;\r\n}\r\n\r\n/** @alias util.LongBits.prototype */\r\nvar LongBitsPrototype = LongBits.prototype;\r\n\r\n/**\r\n * Zero bits.\r\n * @memberof util.LongBits\r\n * @type {util.LongBits}\r\n */\r\nvar zero = new LongBits(0, 0);\r\n\r\nzero.toNumber = function() { return 0; };\r\nzero.zzEncode = zero.zzDecode = function() { return this; };\r\nzero.length = function() { return 1; };\r\n\r\n/**\r\n * Constructs new long bits from the specified number.\r\n * @param {number} value Value\r\n * @returns {util.LongBits} Instance\r\n */\r\nLongBits.fromNumber = function fromNumber(value) {\r\n if (value === 0)\r\n return zero;\r\n var sign = value < 0;\r\n value = Math.abs(value);\r\n var lo = value >>> 0,\r\n hi = (value - lo) / 4294967296 >>> 0;\r\n if (sign) {\r\n hi = ~hi >>> 0;\r\n lo = ~lo >>> 0;\r\n if (++lo > 4294967295) {\r\n lo = 0;\r\n if (++hi > 4294967295)\r\n hi = 0;\r\n }\r\n }\r\n return new LongBits(lo, hi);\r\n};\r\n\r\n/**\r\n * Constrcuts new long bits from a number or long.\r\n * @param {Long|number} value Value\r\n * @returns {util.LongBits} Instance\r\n */\r\nLongBits.from = function from(value) {\r\n return typeof value === 'number'\r\n ? LongBits.fromNumber(value)\r\n : new LongBits(value.low >>> 0, value.high >>> 0);\r\n};\r\n\r\n/**\r\n * Converts this long bits to a possibly unsafe JavaScript number.\r\n * @param {boolean} [unsigned=false] Whether unsigned or not\r\n * @returns {number} Possibly unsafe number\r\n */\r\nLongBitsPrototype.toNumber = function toNumber(unsigned) {\r\n if (!unsigned && this.hi >>> 31) {\r\n this.lo = ~this.lo + 1 >>> 0;\r\n this.hi = ~this.hi >>> 0;\r\n if (!this.lo)\r\n this.hi = this.hi + 1 >>> 0;\r\n return -(this.lo + this.hi * 4294967296);\r\n }\r\n return this.lo + this.hi * 4294967296;\r\n};\r\n\r\n/**\r\n * Converts this long bits to a long.\r\n * @param {boolean} [unsigned=false] Whether unsigned or not\r\n * @returns {Long} Long\r\n */\r\nLongBitsPrototype.toLong = function toLong(unsigned) {\r\n return new util.Long(this.lo, this.hi, unsigned);\r\n};\r\n\r\nvar charCodeAt = String.prototype.charCodeAt;\r\n\r\n/**\r\n * Constructs new long bits from the specified 8 characters long hash.\r\n * @param {string} hash Hash\r\n * @returns {util.LongBits} Bits\r\n */\r\nLongBits.fromHash = function fromHash(hash) {\r\n return new LongBits(\r\n ( charCodeAt.call(hash, 0)\r\n | charCodeAt.call(hash, 1) << 8\r\n | charCodeAt.call(hash, 2) << 16\r\n | charCodeAt.call(hash, 3) << 24) >>> 0\r\n ,\r\n ( charCodeAt.call(hash, 4)\r\n | charCodeAt.call(hash, 5) << 8\r\n | charCodeAt.call(hash, 6) << 16\r\n | charCodeAt.call(hash, 7) << 24) >>> 0\r\n );\r\n};\r\n\r\n/**\r\n * Converts this long bits to a 8 characters long hash.\r\n * @returns {string} Hash\r\n */\r\nLongBitsPrototype.toHash = function toHash() {\r\n return String.fromCharCode(\r\n this.lo & 255,\r\n this.lo >>> 8 & 255,\r\n this.lo >>> 16 & 255,\r\n this.lo >>> 24 & 255,\r\n this.hi & 255,\r\n this.hi >>> 8 & 255,\r\n this.hi >>> 16 & 255,\r\n this.hi >>> 24 & 255\r\n );\r\n};\r\n\r\n/**\r\n * Zig-zag encodes this long bits.\r\n * @returns {util.LongBits} `this`\r\n */\r\nLongBitsPrototype.zzEncode = function zzEncode() {\r\n var mask = this.hi >> 31;\r\n this.hi = ((this.hi << 1 | this.lo >>> 31) ^ mask) >>> 0;\r\n this.lo = ( this.lo << 1 ^ mask) >>> 0;\r\n return this;\r\n};\r\n\r\n/**\r\n * Zig-zag decodes this long bits.\r\n * @returns {util.LongBits} `this`\r\n */\r\nLongBitsPrototype.zzDecode = function zzDecode() {\r\n var mask = -(this.lo & 1);\r\n this.lo = ((this.lo >>> 1 | this.hi << 31) ^ mask) >>> 0;\r\n this.hi = ( this.hi >>> 1 ^ mask) >>> 0;\r\n return this;\r\n};\r\n\r\n/**\r\n * Calculates the length of this longbits when encoded as a varint.\r\n * @returns {number} Length\r\n */\r\nLongBitsPrototype.length = function length() {\r\n var part0 = this.lo,\r\n part1 = (this.lo >>> 28 | this.hi << 4) >>> 0,\r\n part2 = this.hi >>> 24;\r\n if (part2 === 0) {\r\n if (part1 === 0)\r\n return part0 < 1 << 14\r\n ? part0 < 1 << 7 ? 1 : 2\r\n : part0 < 1 << 21 ? 3 : 4;\r\n return part1 < 1 << 14\r\n ? part1 < 1 << 7 ? 5 : 6\r\n : part1 < 1 << 21 ? 7 : 8;\r\n }\r\n return part2 < 1 << 7 ? 9 : 10;\r\n};\r\n","\"use strict\";\r\nmodule.exports = Verifier;\r\n\r\nvar Enum = require(5),\r\n Type = require(19),\r\n util = require(21);\r\n\r\n/**\r\n * Constructs a new verifier for the specified message type.\r\n * @classdesc Runtime message verifier using code generation on top of reflection.\r\n * @constructor\r\n * @param {Type} type Message type\r\n */\r\nfunction Verifier(type) {\r\n\r\n /**\r\n * Message type.\r\n * @type {Type}\r\n */\r\n this.type = type;\r\n}\r\n\r\n/** @alias Verifier.prototype */\r\nvar VerifierPrototype = Verifier.prototype;\r\n\r\n// This is here to mimic Type so that fallback functions work without having to bind()\r\nObject.defineProperties(VerifierPrototype, {\r\n\r\n /**\r\n * Fields of this verifier's message type as an array for iteration.\r\n * @name Verifier#fieldsArray\r\n * @type {Field[]}\r\n * @readonly\r\n */\r\n fieldsArray: {\r\n get: VerifierPrototype.getFieldsArray = function getFieldsArray() {\r\n return this.type.getFieldsArray();\r\n }\r\n },\r\n\r\n /**\r\n * Full name of this verifier's message type.\r\n * @name Verifier#fullName\r\n * @type {string}\r\n * @readonly\r\n */\r\n fullName: {\r\n get: VerifierPrototype.getFullName = function getFullName() {\r\n return this.type.getFullName();\r\n }\r\n }\r\n});\r\n\r\n/**\r\n * Verifies a runtime message of this verifier's message type.\r\n * @param {Prototype|Object} message Runtime message or plain object to verify\r\n * @returns {?string} `null` if valid, otherwise the reason why it is not\r\n */\r\nVerifierPrototype.verify = function verify_fallback(message) {\r\n var fields = this.getFieldsArray(),\r\n i = 0;\r\n while (i < fields.length) {\r\n var field = fields[i++].resolve(),\r\n value = message[field.name];\r\n\r\n if (value === undefined) {\r\n if (field.required)\r\n return \"missing required field \" + field.name + \" in \" + this.getFullName();\r\n\r\n } else if (field.resolvedType instanceof Enum && field.resolvedType.getValuesById()[value] === undefined) {\r\n return \"invalid enum value \" + field.name + \" = \" + value + \" in \" + this.getFullName();\r\n\r\n } else if (field.resolvedType instanceof Type) {\r\n if (!value && field.required)\r\n return \"missing required field \" + field.name + \" in \" + this.getFullName();\r\n var reason;\r\n if ((reason = field.resolvedType.verify(value)) !== null)\r\n return reason;\r\n }\r\n }\r\n return null;\r\n};\r\n\r\n/**\r\n * Generates a verifier specific to this verifier's message type.\r\n * @returns {function} Verifier function with an identical signature to {@link Verifier#verify}\r\n */\r\nVerifierPrototype.generate = function generate() {\r\n /* eslint-disable no-unexpected-multiline */\r\n var fields = this.type.getFieldsArray();\r\n var gen = util.codegen(\"m\");\r\n var hasReasonVar = false;\r\n\r\n for (var i = 0; i < fields.length; ++i) {\r\n var field = fields[i].resolve(),\r\n prop = util.safeProp(field.name);\r\n if (field.required) { gen\r\n\r\n (\"if(m%s===undefined)\", prop)\r\n (\"return 'missing required field %s in %s'\", field.name, this.type.getFullName());\r\n\r\n } else if (field.resolvedType instanceof Enum) {\r\n var values = util.toArray(field.resolvedType.values); gen\r\n\r\n (\"switch(m%s){\", prop)\r\n (\"default:\")\r\n (\"return 'invalid enum value %s = '+m%s+' in %s'\", field.name, prop, this.type.getFullName());\r\n\r\n for (var j = 0, l = values.length; j < l; ++j) gen\r\n (\"case %d:\", values[j]); gen\r\n (\"}\");\r\n\r\n } else if (field.resolvedType instanceof Type) {\r\n if (field.required) gen\r\n\r\n (\"if(!m%s)\", prop)\r\n (\"return 'missing required field %s in %s'\", field.name, this.type.getFullName());\r\n\r\n if (!hasReasonVar) { gen(\"var r\"); hasReasonVar = true; } gen\r\n\r\n (\"if((r=types[%d].verify(m%s))!==null)\", i, prop)\r\n (\"return r\");\r\n }\r\n }\r\n return gen\r\n (\"return null\")\r\n\r\n .eof(this.type.getFullName() + \"$verify\", {\r\n types : fields.map(function(fld) { return fld.resolvedType; })\r\n });\r\n /* eslint-enable no-unexpected-multiline */\r\n};\r\n","\"use strict\";\r\nmodule.exports = Writer;\r\n\r\nWriter.BufferWriter = BufferWriter;\r\n\r\nvar util = require(21),\r\n ieee754 = require(1);\r\nvar LongBits = util.LongBits;\r\n\r\n/**\r\n * Constructs a new writer operation.\r\n * @classdesc Scheduled writer operation.\r\n * @memberof Writer\r\n * @constructor\r\n * @param {function(Uint8Array, number, *)} fn Function to call\r\n * @param {*} val Value to write\r\n * @param {number} len Value byte length\r\n * @private\r\n * @ignore\r\n */\r\nfunction Op(fn, val, len) {\r\n\r\n /**\r\n * Function to call.\r\n * @type {function(Uint8Array, number, *)}\r\n */\r\n this.fn = fn;\r\n\r\n /**\r\n * Value to write.\r\n * @type {*}\r\n */\r\n this.val = val;\r\n\r\n /**\r\n * Value byte length.\r\n * @type {number}\r\n */\r\n this.len = len;\r\n\r\n /**\r\n * Next operation.\r\n * @type {?Writer.Op}\r\n */\r\n this.next = null;\r\n}\r\n\r\nWriter.Op = Op;\r\n\r\nfunction noop() {} // eslint-disable-line no-empty-function\r\n\r\n/**\r\n * Constructs a new writer state.\r\n * @classdesc Copied writer state.\r\n * @memberof Writer\r\n * @constructor\r\n * @param {Writer} writer Writer to copy state from\r\n * @private\r\n * @ignore\r\n */\r\nfunction State(writer) {\r\n\r\n /**\r\n * Current head.\r\n * @type {Writer.Op}\r\n */\r\n this.head = writer.head;\r\n\r\n /**\r\n * Current tail.\r\n * @type {Writer.Op}\r\n */\r\n this.tail = writer.tail;\r\n\r\n /**\r\n * Current buffer length.\r\n * @type {number}\r\n */\r\n this.len = writer.len;\r\n}\r\n\r\nWriter.State = State;\r\n\r\nvar ArrayImpl = typeof Uint8Array !== 'undefined' ? Uint8Array : Array;\r\n\r\n/**\r\n * Constructs a new writer.\r\n * When called as a function, returns an appropriate writer for the current environment.\r\n * @classdesc Wire format writer using `Uint8Array` if available, otherwise `Array`.\r\n * @exports Writer\r\n * @constructor\r\n */\r\nfunction Writer() {\r\n if (!(this instanceof Writer))\r\n return util.Buffer && new BufferWriter() || new Writer();\r\n\r\n /**\r\n * Current length.\r\n * @type {number}\r\n */\r\n this.len = 0;\r\n\r\n /**\r\n * Operations head.\r\n * @type {Object}\r\n */\r\n this.head = new Op(noop, 0, 0);\r\n\r\n /**\r\n * Operations tail\r\n * @type {Object}\r\n */\r\n this.tail = this.head;\r\n\r\n /**\r\n * State stack.\r\n * @type {Object[]}\r\n */\r\n this.stack = [];\r\n\r\n // When a value is written, the writer calculates its byte length and puts it into a linked\r\n // list of operations to perform when finish() is called. This both allows us to allocate\r\n // buffers of the exact required size and reduces the amount of work we have to do compared\r\n // to first calculating over objects and then encoding over objects. In our case, the encoding\r\n // part is just a linked list walk calling linked operations with already prepared values.\r\n}\r\n\r\n/** @alias Writer.prototype */\r\nvar WriterPrototype = Writer.prototype;\r\n\r\n/**\r\n * Pushes a new operation to the queue.\r\n * @param {function(Uint8Array, number, *)} fn Function to call\r\n * @param {number} len Value byte length\r\n * @param {number} val Value to write\r\n * @returns {Writer} `this`\r\n */\r\nWriterPrototype.push = function push(fn, len, val) {\r\n var op = new Op(fn, val, len);\r\n this.tail.next = op;\r\n this.tail = op;\r\n this.len += len;\r\n return this;\r\n};\r\n\r\nfunction writeByte(buf, pos, val) {\r\n buf[pos] = val & 255;\r\n}\r\n\r\n/**\r\n * Writes a tag.\r\n * @param {number} id Field id\r\n * @param {number} wireType Wire type\r\n * @returns {Writer} `this`\r\n */\r\nWriterPrototype.tag = function write_tag(id, wireType) {\r\n return this.push(writeByte, 1, id << 3 | wireType & 7);\r\n};\r\n\r\nfunction writeVarint32(buf, pos, val) {\r\n while (val > 127) {\r\n buf[pos++] = val & 127 | 128;\r\n val >>>= 7;\r\n }\r\n buf[pos] = val;\r\n}\r\n\r\n/**\r\n * Writes an unsigned 32 bit value as a varint.\r\n * @param {number} value Value to write\r\n * @returns {Writer} `this`\r\n */\r\nWriterPrototype.uint32 = function write_uint32(value) {\r\n value >>>= 0;\r\n return this.push(writeVarint32,\r\n value < 128 ? 1\r\n : value < 16384 ? 2\r\n : value < 2097152 ? 3\r\n : value < 268435456 ? 4\r\n : 5\r\n , value);\r\n};\r\n\r\n/**\r\n * Writes a signed 32 bit value as a varint.\r\n * @function\r\n * @param {number} value Value to write\r\n * @returns {Writer} `this`\r\n */\r\nWriterPrototype.int32 = function write_int32(value) {\r\n return value < 0\r\n ? this.push(writeVarint64, 10, LongBits.fromNumber(value)) // 10 bytes per spec\r\n : this.uint32(value);\r\n};\r\n\r\n/**\r\n * Writes a 32 bit value as a varint, zig-zag encoded.\r\n * @param {number} value Value to write\r\n * @returns {Writer} `this`\r\n */\r\nWriterPrototype.sint32 = function write_sint32(value) {\r\n return this.uint32(value << 1 ^ value >> 31);\r\n};\r\n\r\nfunction writeVarint64(buf, pos, val) {\r\n // tends to deoptimize. stays optimized when using bits directly.\r\n while (val.hi || val.lo > 127) {\r\n buf[pos++] = val.lo & 127 | 128;\r\n val.lo = (val.lo >>> 7 | val.hi << 25) >>> 0;\r\n val.hi >>>= 7;\r\n }\r\n buf[pos++] = val.lo;\r\n}\r\n\r\n/**\r\n * Writes an unsigned 64 bit value as a varint.\r\n * @param {Long|number} value Value to write\r\n * @returns {Writer} `this`\r\n */\r\nWriterPrototype.uint64 = function write_uint64(value) {\r\n var bits;\r\n if (typeof value === 'number')\r\n bits = value ? LongBits.fromNumber(value) : LongBits.zero;\r\n else if (value.low || value.high)\r\n bits = new LongBits(value.low >>> 0, value.high >>> 0);\r\n else\r\n bits = LongBits.zero;\r\n return this.push(writeVarint64, bits.length(), bits);\r\n};\r\n\r\n/**\r\n * Writes a signed 64 bit value as a varint.\r\n * @function\r\n * @param {Long|number} value Value to write\r\n * @returns {Writer} `this`\r\n */\r\nWriterPrototype.int64 = WriterPrototype.uint64;\r\n\r\n/**\r\n * Writes a signed 64 bit value as a varint, zig-zag encoded.\r\n * @param {Long|number} value Value to write\r\n * @returns {Writer} `this`\r\n */\r\nWriterPrototype.sint64 = function sint64(value) {\r\n var bits = LongBits.from(value).zzEncode();\r\n return this.push(writeVarint64, bits.length(), bits);\r\n};\r\n\r\n/**\r\n * Writes a boolish value as a varint.\r\n * @param {boolean} value Value to write\r\n * @returns {Writer} `this`\r\n */\r\nWriterPrototype.bool = function write_bool(value) {\r\n return this.push(writeByte, 1, value ? 1 : 0);\r\n};\r\n\r\nfunction writeFixed32(buf, pos, val) {\r\n buf[pos++] = val & 255;\r\n buf[pos++] = val >>> 8 & 255;\r\n buf[pos++] = val >>> 16 & 255;\r\n buf[pos ] = val >>> 24 & 255;\r\n}\r\n\r\n/**\r\n * Writes a 32 bit value as fixed 32 bits.\r\n * @param {number} value Value to write\r\n * @returns {Writer} `this`\r\n */\r\nWriterPrototype.fixed32 = function write_fixed32(value) {\r\n return this.push(writeFixed32, 4, value >>> 0);\r\n};\r\n\r\n/**\r\n * Writes a 32 bit value as fixed 32 bits, zig-zag encoded.\r\n * @param {number} value Value to write\r\n * @returns {Writer} `this`\r\n */\r\nWriterPrototype.sfixed32 = function write_sfixed32(value) {\r\n return this.push(writeFixed32, 4, value << 1 ^ value >> 31);\r\n};\r\n\r\nfunction writeFixed64(buf, pos, val) {\r\n buf[pos++] = val.lo & 255;\r\n buf[pos++] = val.lo >>> 8 & 255;\r\n buf[pos++] = val.lo >>> 16 & 255;\r\n buf[pos++] = val.lo >>> 24 ;\r\n buf[pos++] = val.hi & 255;\r\n buf[pos++] = val.hi >>> 8 & 255;\r\n buf[pos++] = val.hi >>> 16 & 255;\r\n buf[pos ] = val.hi >>> 24 ;\r\n}\r\n\r\n/**\r\n * Writes a 64 bit value as fixed 64 bits.\r\n * @param {Long|number} value Value to write\r\n * @returns {Writer} `this`\r\n */\r\nWriterPrototype.fixed64 = function write_fixed64(value) {\r\n return this.push(writeFixed64, 8, LongBits.from(value));\r\n};\r\n\r\n/**\r\n * Writes a 64 bit value as fixed 64 bits, zig-zag encoded.\r\n * @param {Long|number} value Value to write\r\n * @returns {Writer} `this`\r\n */\r\nWriterPrototype.sfixed64 = function write_sfixed64(value) {\r\n return this.push(writeFixed64, 8, LongBits.from(value).zzEncode());\r\n};\r\n\r\nfunction writeFloat(buf, pos, val) {\r\n ieee754.write(buf, val, pos, false, 23, 4);\r\n}\r\n\r\n/**\r\n * Writes a float (32 bit).\r\n * @function\r\n * @param {number} value Value to write\r\n * @returns {Writer} `this`\r\n */\r\nWriterPrototype.float = function write_float(value) {\r\n return this.push(writeFloat, 4, value);\r\n};\r\n\r\nfunction writeDouble(buf, pos, val) {\r\n ieee754.write(buf, val, pos, false, 52, 8);\r\n}\r\n\r\n/**\r\n * Writes a double (64 bit float).\r\n * @function\r\n * @param {number} value Value to write\r\n * @returns {Writer} `this`\r\n */\r\nWriterPrototype.double = function write_double(value) {\r\n return this.push(writeDouble, 8, value);\r\n};\r\n\r\nvar writeBytes = ArrayImpl.prototype.set\r\n ? function writeBytes_set(buf, pos, val) { buf.set(val, pos); }\r\n : function writeBytes_for(buf, pos, val) { for (var i = 0; i < val.length; ++i) buf[pos + i] = val[i]; };\r\n\r\n/**\r\n * Writes a sequence of bytes.\r\n * @param {Uint8Array} value Value to write\r\n * @returns {Writer} `this`\r\n */\r\nWriterPrototype.bytes = function write_bytes(value) {\r\n var len = value.length >>> 0;\r\n return len\r\n ? this.uint32(len).push(writeBytes, len, value)\r\n : this.push(writeByte, 1, 0);\r\n};\r\n\r\nfunction writeString(buf, pos, val) {\r\n for (var i = 0; i < val.length; ++i) {\r\n var c1 = val.charCodeAt(i), c2;\r\n if (c1 < 128) {\r\n buf[pos++] = c1;\r\n } else if (c1 < 2048) {\r\n buf[pos++] = c1 >> 6 | 192;\r\n buf[pos++] = c1 & 63 | 128;\r\n } else if ((c1 & 0xFC00) === 0xD800 && i + 1 < val.length && ((c2 = val.charCodeAt(i + 1)) & 0xFC00) === 0xDC00) {\r\n c1 = 0x10000 + ((c1 & 0x03FF) << 10) + (c2 & 0x03FF);\r\n ++i;\r\n buf[pos++] = c1 >> 18 | 240;\r\n buf[pos++] = c1 >> 12 & 63 | 128;\r\n buf[pos++] = c1 >> 6 & 63 | 128;\r\n buf[pos++] = c1 & 63 | 128;\r\n } else {\r\n buf[pos++] = c1 >> 12 | 224;\r\n buf[pos++] = c1 >> 6 & 63 | 128;\r\n buf[pos++] = c1 & 63 | 128;\r\n }\r\n }\r\n}\r\n\r\nfunction byteLength(val) {\r\n var strlen = val.length >>> 0;\r\n if (strlen) {\r\n var len = 0;\r\n for (var i = 0, c1; i < strlen; ++i) {\r\n c1 = val.charCodeAt(i);\r\n if (c1 < 128)\r\n len += 1;\r\n else if (c1 < 2048)\r\n len += 2;\r\n else if ((c1 & 0xFC00) === 0xD800 && i + 1 < strlen && (val.charCodeAt(i + 1) & 0xFC00) === 0xDC00) {\r\n ++i;\r\n len += 4;\r\n } else\r\n len += 3;\r\n }\r\n return len;\r\n }\r\n return 0;\r\n}\r\n\r\n/**\r\n * Writes a string.\r\n * @param {string} value Value to write\r\n * @returns {Writer} `this`\r\n */\r\nWriterPrototype.string = function write_string(value) {\r\n var len = byteLength(value);\r\n return len\r\n ? this.uint32(len).push(writeString, len, value)\r\n : this.push(writeByte, 1, 0);\r\n};\r\n\r\n/**\r\n * Forks this writer's state by pushing it to a stack.\r\n * Calling {@link Writer#ldelim}, {@link Writer#reset} or {@link Writer#finish} resets the writer to the previous state.\r\n * @returns {Writer} `this`\r\n */\r\nWriterPrototype.fork = function fork() {\r\n this.stack.push(new State(this));\r\n this.head = this.tail = new Op(noop, 0, 0);\r\n this.len = 0;\r\n return this;\r\n};\r\n\r\n/**\r\n * Resets this instance to the last state.\r\n * @returns {Writer} `this`\r\n */\r\nWriterPrototype.reset = function reset() {\r\n if (this.stack.length) {\r\n var state = this.stack.pop();\r\n this.head = state.head;\r\n this.tail = state.tail;\r\n this.len = state.len;\r\n } else {\r\n this.head = this.tail = new Op(noop, 0, 0);\r\n this.len = 0;\r\n }\r\n return this;\r\n};\r\n\r\n/**\r\n * Resets to the last state and appends the fork state's current write length as a varint followed by its operations.\r\n * @param {number} [id] Id with wire type 2 to prepend where applicable\r\n * @returns {Writer} `this`\r\n */\r\nWriterPrototype.ldelim = function ldelim(id) {\r\n var head = this.head,\r\n tail = this.tail,\r\n len = this.len;\r\n this.reset();\r\n if (id !== undefined)\r\n this.tag(id, 2);\r\n this.uint32(len);\r\n this.tail.next = head.next; // skip noop\r\n this.tail = tail;\r\n this.len += len;\r\n return this;\r\n};\r\n\r\n/**\r\n * Finishes the current sequence of write operations and frees all resources.\r\n * @returns {Uint8Array} Finished buffer\r\n */\r\nWriterPrototype.finish = function finish() {\r\n var head = this.head.next, // skip noop\r\n buf = new ArrayImpl(this.len),\r\n pos = 0;\r\n this.reset();\r\n while (head) {\r\n head.fn(buf, pos, head.val);\r\n pos += head.len;\r\n head = head.next;\r\n }\r\n return buf;\r\n};\r\n\r\n/**\r\n * Constructs a new buffer writer.\r\n * @classdesc Wire format writer using node buffers.\r\n * @exports BufferWriter\r\n * @extends Writer\r\n * @constructor\r\n */\r\nfunction BufferWriter() {\r\n Writer.call(this);\r\n}\r\n\r\n/** @alias BufferWriter.prototype */\r\nvar BufferWriterPrototype = BufferWriter.prototype = Object.create(Writer.prototype);\r\nBufferWriterPrototype.constructor = BufferWriter;\r\n\r\nfunction writeFloatBuffer(buf, pos, val) {\r\n buf.writeFloatLE(val, pos, true);\r\n}\r\n\r\n/**\r\n * @override\r\n */\r\nBufferWriterPrototype.float = function write_float_buffer(value) {\r\n return this.push(writeFloatBuffer, 4, value);\r\n};\r\n\r\nfunction writeDoubleBuffer(buf, pos, val) {\r\n buf.writeDoubleLE(val, pos, true);\r\n}\r\n\r\n/**\r\n * @override\r\n */\r\nBufferWriterPrototype.double = function write_double_buffer(value) {\r\n return this.push(writeDoubleBuffer, 8, value);\r\n};\r\n\r\nfunction writeBytesBuffer(buf, pos, val) {\r\n if (val.length)\r\n val.copy(buf, pos, 0, val.length);\r\n}\r\n\r\n/**\r\n * @override\r\n */\r\nBufferWriterPrototype.bytes = function write_bytes_buffer(value) {\r\n var len = value.length >>> 0;\r\n return len\r\n ? this.uint32(len).push(writeBytesBuffer, len, value)\r\n : this.push(writeByte, 1, 0);\r\n};\r\n\r\nfunction writeStringBuffer(buf, pos, val) {\r\n buf.write(val, pos);\r\n}\r\n\r\n/**\r\n * @override\r\n */\r\nBufferWriterPrototype.string = function write_string_buffer(value) {\r\n var len = byteLength(value);\r\n return len\r\n ? this.uint32(len).push(writeStringBuffer, len, value)\r\n : this.push(writeByte, 1, 0);\r\n};\r\n\r\n/**\r\n * @override\r\n */\r\nBufferWriterPrototype.finish = function finish_buffer() {\r\n var head = this.head.next, // skip noop\r\n buf = util.Buffer.allocUnsafe && util.Buffer.allocUnsafe(this.len) || new util.Buffer(this.len),\r\n pos = 0;\r\n this.reset();\r\n while (head) {\r\n head.fn(buf, pos, head.val);\r\n pos += head.len;\r\n head = head.next;\r\n }\r\n return buf;\r\n};\r\n","\"use strict\";\r\nvar protobuf = global.protobuf = exports;\r\n\r\nvar util = require(\"./util\");\r\n\r\n/**\r\n * Loads one or multiple .proto or preprocessed .json files into a common root namespace.\r\n * @param {string|string[]} filename One or multiple files to load\r\n * @param {Root} [root] Root namespace, defaults to create a new one if omitted.\r\n * @param {function(?Error, Root=)} [callback] Callback function\r\n * @returns {Promise|Object} A promise if callback has been omitted, otherwise the protobuf namespace\r\n * @throws {TypeError} If arguments are invalid\r\n */\r\nfunction load(filename, root, callback) {\r\n if (typeof root === 'function') {\r\n callback = root;\r\n root = new protobuf.Root();\r\n } else if (!root)\r\n root = new protobuf.Root();\r\n return root.load(filename, callback) || protobuf;\r\n}\r\n\r\nprotobuf.load = load;\r\n\r\n// Parser\r\nprotobuf.tokenize = require(\"./tokenize\");\r\nprotobuf.parse = require(\"./parse\");\r\n\r\n// Serialization\r\nprotobuf.Writer = require(\"./writer\");\r\nprotobuf.BufferWriter = protobuf.Writer.BufferWriter;\r\nprotobuf.Reader = require(\"./reader\");\r\nprotobuf.BufferReader = protobuf.Reader.BufferReader;\r\nprotobuf.Encoder = require(\"./encoder\");\r\nprotobuf.Decoder = require(\"./decoder\");\r\n\r\n// Reflection\r\nprotobuf.ReflectionObject = require(\"./object\");\r\nprotobuf.Namespace = require(\"./namespace\");\r\nprotobuf.Root = require(\"./root\");\r\nprotobuf.Enum = require(\"./enum\");\r\nprotobuf.Type = require(\"./type\");\r\nprotobuf.Field = require(\"./field\");\r\nprotobuf.OneOf = require(\"./oneof\");\r\nprotobuf.MapField = require(\"./mapfield\");\r\nprotobuf.Service = require(\"./service\");\r\nprotobuf.Method = require(\"./method\");\r\n\r\n// Runtime\r\nprotobuf.Prototype = require(\"./prototype\");\r\nprotobuf.inherits = require(\"./inherits\");\r\n\r\n// Utility\r\nprotobuf.types = require(\"./types\");\r\nprotobuf.common = require(\"./common\");\r\nprotobuf.util = util;\r\n"],"sourceRoot":"."} \ No newline at end of file diff --git a/google/protobuf/README.md b/google/protobuf/README.md new file mode 100644 index 000000000..09e3f2304 --- /dev/null +++ b/google/protobuf/README.md @@ -0,0 +1 @@ +This folder contains stripped and pre-parsed definitions of common Google types. These files are not used by protobuf.js directly but are here so you can use or include them where required. diff --git a/tests/data/google/protobuf/descriptor.json b/google/protobuf/descriptor.json similarity index 80% rename from tests/data/google/protobuf/descriptor.json rename to google/protobuf/descriptor.json index 98ee7a3a3..a08e7832b 100644 --- a/tests/data/google/protobuf/descriptor.json +++ b/google/protobuf/descriptor.json @@ -17,7 +17,10 @@ "file": { "rule": "repeated", "type": "FileDescriptorProto", - "id": 1 + "id": 1, + "options": { + "packed": false + } } } }, @@ -34,37 +37,58 @@ "dependency": { "rule": "repeated", "type": "string", - "id": 3 + "id": 3, + "options": { + "packed": false + } }, "publicDependency": { "rule": "repeated", "type": "int32", - "id": 10 + "id": 10, + "options": { + "packed": false + } }, "weakDependency": { "rule": "repeated", "type": "int32", - "id": 11 + "id": 11, + "options": { + "packed": false + } }, "messageType": { "rule": "repeated", "type": "DescriptorProto", - "id": 4 + "id": 4, + "options": { + "packed": false + } }, "enumType": { "rule": "repeated", "type": "EnumDescriptorProto", - "id": 5 + "id": 5, + "options": { + "packed": false + } }, "service": { "rule": "repeated", "type": "ServiceDescriptorProto", - "id": 6 + "id": 6, + "options": { + "packed": false + } }, "extension": { "rule": "repeated", "type": "FieldDescriptorProto", - "id": 7 + "id": 7, + "options": { + "packed": false + } }, "options": { "type": "FileOptions", @@ -89,32 +113,50 @@ "field": { "rule": "repeated", "type": "FieldDescriptorProto", - "id": 2 + "id": 2, + "options": { + "packed": false + } }, "extension": { "rule": "repeated", "type": "FieldDescriptorProto", - "id": 6 + "id": 6, + "options": { + "packed": false + } }, "nestedType": { "rule": "repeated", "type": "DescriptorProto", - "id": 3 + "id": 3, + "options": { + "packed": false + } }, "enumType": { "rule": "repeated", "type": "EnumDescriptorProto", - "id": 4 + "id": 4, + "options": { + "packed": false + } }, "extensionRange": { "rule": "repeated", "type": "ExtensionRange", - "id": 5 + "id": 5, + "options": { + "packed": false + } }, "oneofDecl": { "rule": "repeated", "type": "OneofDescriptorProto", - "id": 8 + "id": 8, + "options": { + "packed": false + } }, "options": { "type": "MessageOptions", @@ -123,12 +165,18 @@ "reservedRange": { "rule": "repeated", "type": "ReservedRange", - "id": 9 + "id": 9, + "options": { + "packed": false + } }, "reservedName": { "rule": "repeated", "type": "string", - "id": 10 + "id": 10, + "options": { + "packed": false + } } }, "nested": { @@ -254,7 +302,10 @@ "value": { "rule": "repeated", "type": "EnumValueDescriptorProto", - "id": 2 + "id": 2, + "options": { + "packed": false + } }, "options": { "type": "EnumOptions", @@ -287,7 +338,10 @@ "method": { "rule": "repeated", "type": "MethodDescriptorProto", - "id": 2 + "id": 2, + "options": { + "packed": false + } }, "options": { "type": "ServiceOptions", @@ -417,9 +471,24 @@ "uninterpretedOption": { "rule": "repeated", "type": "UninterpretedOption", - "id": 999 + "id": 999, + "options": { + "packed": false + } } }, + "extensions": [ + [ + 1000, + 536870911 + ] + ], + "reserved": [ + [ + 38, + 38 + ] + ], "nested": { "OptimizeMode": { "values": { @@ -460,9 +529,24 @@ "uninterpretedOption": { "rule": "repeated", "type": "UninterpretedOption", - "id": 999 + "id": 999, + "options": { + "packed": false + } } - } + }, + "extensions": [ + [ + 1000, + 536870911 + ] + ], + "reserved": [ + [ + 8, + 8 + ] + ] }, "FieldOptions": { "fields": { @@ -508,9 +592,24 @@ "uninterpretedOption": { "rule": "repeated", "type": "UninterpretedOption", - "id": 999 + "id": 999, + "options": { + "packed": false + } } }, + "extensions": [ + [ + 1000, + 536870911 + ] + ], + "reserved": [ + [ + 4, + 4 + ] + ], "nested": { "CType": { "values": { @@ -533,9 +632,18 @@ "uninterpretedOption": { "rule": "repeated", "type": "UninterpretedOption", - "id": 999 + "id": 999, + "options": { + "packed": false + } } - } + }, + "extensions": [ + [ + 1000, + 536870911 + ] + ] }, "EnumOptions": { "fields": { @@ -553,9 +661,18 @@ "uninterpretedOption": { "rule": "repeated", "type": "UninterpretedOption", - "id": 999 + "id": 999, + "options": { + "packed": false + } } - } + }, + "extensions": [ + [ + 1000, + 536870911 + ] + ] }, "EnumValueOptions": { "fields": { @@ -569,9 +686,18 @@ "uninterpretedOption": { "rule": "repeated", "type": "UninterpretedOption", - "id": 999 + "id": 999, + "options": { + "packed": false + } } - } + }, + "extensions": [ + [ + 1000, + 536870911 + ] + ] }, "ServiceOptions": { "fields": { @@ -585,9 +711,18 @@ "uninterpretedOption": { "rule": "repeated", "type": "UninterpretedOption", - "id": 999 + "id": 999, + "options": { + "packed": false + } } - } + }, + "extensions": [ + [ + 1000, + 536870911 + ] + ] }, "MethodOptions": { "fields": { @@ -601,16 +736,28 @@ "uninterpretedOption": { "rule": "repeated", "type": "UninterpretedOption", - "id": 999 + "id": 999, + "options": { + "packed": false + } } - } + }, + "extensions": [ + [ + 1000, + 536870911 + ] + ] }, "UninterpretedOption": { "fields": { "name": { "rule": "repeated", "type": "NamePart", - "id": 2 + "id": 2, + "options": { + "packed": false + } }, "identifierValue": { "type": "string", @@ -659,7 +806,10 @@ "location": { "rule": "repeated", "type": "Location", - "id": 1 + "id": 1, + "options": { + "packed": false + } } }, "nested": { @@ -692,7 +842,10 @@ "leadingDetachedComments": { "rule": "repeated", "type": "string", - "id": 6 + "id": 6, + "options": { + "packed": false + } } } } @@ -703,7 +856,10 @@ "annotation": { "rule": "repeated", "type": "Annotation", - "id": 1 + "id": 1, + "options": { + "packed": false + } } }, "nested": { diff --git a/tests/data/google/protobuf/descriptor-stripped.proto b/google/protobuf/descriptor.proto similarity index 92% rename from tests/data/google/protobuf/descriptor-stripped.proto rename to google/protobuf/descriptor.proto index b702f6b65..fb71d0688 100644 --- a/tests/data/google/protobuf/descriptor-stripped.proto +++ b/google/protobuf/descriptor.proto @@ -2,13 +2,6 @@ package google.protobuf; syntax = "proto2"; -option go_package = "descriptor"; -option java_package = "com.google.protobuf"; -option java_outer_classname = "DescriptorProtos"; -option csharp_namespace = "Google.Protobuf.Reflection"; -option objc_class_prefix = "GPB"; -option optimize_for = "SPEED"; - message FileDescriptorSet { repeated FileDescriptorProto file = 1; @@ -141,9 +134,9 @@ message FileOptions { optional string java_package = 1; optional string java_outer_classname = 8; optional bool java_multiple_files = 10; - optional bool java_generate_equals_and_hash = 20; + optional bool java_generate_equals_and_hash = 20 [deprecated=true]; optional bool java_string_check_utf8 = 27; - optional OptimizeMode optimize_for = 9; + optional OptimizeMode optimize_for = 9 [default=SPEED]; optional string go_package = 11; optional bool cc_generic_services = 16; optional bool java_generic_services = 17; @@ -160,6 +153,10 @@ message FileOptions { CODE_SIZE = 2; LITE_RUNTIME = 3; } + + extensions 1000 to max; + + reserved 38; } message MessageOptions { @@ -169,13 +166,17 @@ message MessageOptions { optional bool deprecated = 3; optional bool map_entry = 7; repeated UninterpretedOption uninterpreted_option = 999; + + extensions 1000 to max; + + reserved 8; } message FieldOptions { - optional CType ctype = 1; + optional CType ctype = 1 [default=STRING]; optional bool packed = 2; - optional JSType jstype = 6; + optional JSType jstype = 6 [default=JS_NORMAL]; optional bool lazy = 5; optional bool deprecated = 3; optional bool weak = 10; @@ -194,11 +195,17 @@ message FieldOptions { JS_STRING = 1; JS_NUMBER = 2; } + + extensions 1000 to max; + + reserved 4; } message OneofOptions { repeated UninterpretedOption uninterpreted_option = 999; + + extensions 1000 to max; } message EnumOptions { @@ -206,24 +213,32 @@ message EnumOptions { optional bool allow_alias = 2; optional bool deprecated = 3; repeated UninterpretedOption uninterpreted_option = 999; + + extensions 1000 to max; } message EnumValueOptions { optional bool deprecated = 1; repeated UninterpretedOption uninterpreted_option = 999; + + extensions 1000 to max; } message ServiceOptions { optional bool deprecated = 33; repeated UninterpretedOption uninterpreted_option = 999; + + extensions 1000 to max; } message MethodOptions { optional bool deprecated = 33; repeated UninterpretedOption uninterpreted_option = 999; + + extensions 1000 to max; } message UninterpretedOption { @@ -268,4 +283,4 @@ message GeneratedCodeInfo { optional int32 begin = 3; optional int32 end = 4; } -} \ No newline at end of file +} diff --git a/package.json b/package.json index 7b2d86711..13826a22f 100644 --- a/package.json +++ b/package.json @@ -33,7 +33,8 @@ "zuul": "zuul --ui tape --no-coverage --concurrency 1 -- tests/*.js", "zuul-local": "zuul --ui tape --no-coverage --concurrency 1 --local 8080 --disable-tunnel -- tests/*.js", "bench": "node bench", - "all": "npm run lint && npm run test && npm run build && npm run docs && npm run types && npm run bench" + "all": "npm run lint && npm run test && npm run build && npm run types && npm run docs && npm run bench", + "postinstall": "npm install @types/node @types/long" }, "optionalDependencies": { "long": "^3.2.0" diff --git a/scripts/types.js b/scripts/types.js index 70199d321..67a0adb6c 100644 --- a/scripts/types.js +++ b/scripts/types.js @@ -4,6 +4,9 @@ var fs = require("fs"), var dir = path.join(__dirname, "..", "types"); var header = [ + '/// ', + '/// ', + "", "/*", " * protobuf.js v" + pkg.version + " TypeScript definitions", " * Generated " + (new Date()).toUTCString().replace(/GMT/, "UTC"), diff --git a/src/inherits.js b/src/inherits.js index 1f6bace6f..7ab44304f 100644 --- a/src/inherits.js +++ b/src/inherits.js @@ -61,7 +61,7 @@ function inherits(clazz, type, options) { * @function * @param {Prototype|Object} message Message to encode * @param {Writer} [writer] Writer to use - * @returns {number[]} Encoded message + * @returns {Uint8Array} Encoded message */ encode: { value: function encode(message, writer) { @@ -75,7 +75,7 @@ function inherits(clazz, type, options) { * @function * @param {Prototype|Object} message Message to encode * @param {Writer} [writer] Writer to use - * @returns {number[]} Encoded message + * @returns {Uint8Array} Encoded message */ encodeDelimited: { value: function encodeDelimited(message, writer) { @@ -87,7 +87,7 @@ function inherits(clazz, type, options) { * Decodes a message of this type from a buffer. * @name Class.decode * @function - * @param {number[]} buffer Buffer to decode + * @param {Uint8Array} buffer Buffer to decode * @returns {Prototype} Decoded message */ decode: { @@ -100,7 +100,7 @@ function inherits(clazz, type, options) { * Decodes a message of this type preceeded by its length as a varint from a buffer. * @name Class.decodeDelimited * @function - * @param {number[]} buffer Buffer to decode + * @param {Uint8Array} buffer Buffer to decode * @returns {Prototype} Decoded message */ decodeDelimited: { diff --git a/src/reader.js b/src/reader.js index 4ff00fc3a..551eddebf 100644 --- a/src/reader.js +++ b/src/reader.js @@ -17,7 +17,7 @@ function indexOutOfRange(reader, writeLength) { * When called as a function, returns an appropriate reader for the specified buffer. * @classdesc Wire format reader using `Uint8Array` if available, otherwise `Array`. * @constructor - * @param {number[]} buffer Buffer to read from + * @param {Uint8Array} buffer Buffer to read from */ function Reader(buffer) { if (!(this instanceof Reader)) @@ -25,7 +25,7 @@ function Reader(buffer) { /** * Read buffer. - * @type {number[]} + * @type {Uint8Array} */ this.buf = buffer; @@ -318,7 +318,7 @@ ReaderPrototype.double = function read_double() { /** * Reads a sequence of bytes preceeded by its length as a varint. - * @returns {number[]} Value read + * @returns {Uint8Array} Value read */ ReaderPrototype.bytes = function read_bytes() { var length = this.int32() >>> 0, @@ -414,7 +414,7 @@ ReaderPrototype.skipType = function(wireType) { /** * Resets this instance and frees all resources. - * @param {number[]} [buffer] New buffer for a new sequence of read operations + * @param {Uint8Array} [buffer] New buffer for a new sequence of read operations * @returns {Reader} `this` */ ReaderPrototype.reset = function reset(buffer) { @@ -431,8 +431,8 @@ ReaderPrototype.reset = function reset(buffer) { /** * Finishes the current sequence of read operations, frees all resources and returns the remaining buffer. - * @param {number[]} [buffer] New buffer for a new sequence of read operations - * @returns {number[]} Finished buffer + * @param {Uint8Array} [buffer] New buffer for a new sequence of read operations + * @returns {Uint8Array} Finished buffer */ ReaderPrototype.finish = function finish(buffer) { var remain = this.pos @@ -469,8 +469,7 @@ var BufferReaderPrototype = BufferReader.prototype = Object.create(Reader.protot BufferReaderPrototype.constructor = BufferReader; /** - * Reads a float (32 bit) as a number using node buffers. - * @returns {number} Value read + * @override */ BufferReaderPrototype.float = function read_float_buffer() { if (this.pos + 4 > this.len) @@ -481,8 +480,7 @@ BufferReaderPrototype.float = function read_float_buffer() { }; /** - * Reads a double (64 bit float) as a number using node buffers. - * @returns {number} Value read + * @override */ BufferReaderPrototype.double = function read_double_buffer() { if (this.pos + 8 > this.len) @@ -493,8 +491,7 @@ BufferReaderPrototype.double = function read_double_buffer() { }; /** - * Reads a string. - * @returns {string} Value read + * @override */ BufferReaderPrototype.string = function read_string_buffer() { var length = this.int32() >>> 0, @@ -507,9 +504,7 @@ BufferReaderPrototype.string = function read_string_buffer() { }; /** - * Finishes the current sequence of read operations using node buffers, frees all resources and returns the remaining buffer. - * @param {Buffer} [buffer] New buffer for a new sequence of read operations - * @returns {Buffer} Finished buffer + * @override */ BufferReaderPrototype.finish = function finish_buffer(buffer) { var remain = this.pos ? this.buf.slice(this.pos) : this.buf; diff --git a/src/type.js b/src/type.js index e7015a881..a16fd1767 100644 --- a/src/type.js +++ b/src/type.js @@ -210,6 +210,10 @@ Type.fromJSON = function fromJSON(name, json) { } throw Error("invalid nested object in " + type + ": " + nestedName); }); + if (json.extensions && json.extensions.length) + type.extensions = json.extensions; + if (json.reserved && json.reserved.length) + type.reserved = json.reserved; return type; }; @@ -219,10 +223,12 @@ Type.fromJSON = function fromJSON(name, json) { TypePrototype.toJSON = function toJSON() { var inherited = NamespacePrototype.toJSON.call(this); return { - options : inherited && inherited.options || undefined, - oneofs : Namespace.arrayToJSON(this.getOneofsArray()), - fields : Namespace.arrayToJSON(this.getFieldsArray().filter(function(obj) { return !obj.declaringField; })) || {}, - nested : inherited && inherited.nested || undefined + options : inherited && inherited.options || undefined, + oneofs : Namespace.arrayToJSON(this.getOneofsArray()), + fields : Namespace.arrayToJSON(this.getFieldsArray().filter(function(obj) { return !obj.declaringField; })) || {}, + extensions : this.extensions && this.extensions.length ? this.extensions : undefined, + reserved : this.reserved && this.reserved.length ? this.reserved : undefined, + nested : inherited && inherited.nested || undefined }; }; @@ -345,7 +351,7 @@ TypePrototype.encodeDelimited = function encodeDelimited(message, writer) { /** * Decodes a message of this type. - * @param {Reader|number[]} readerOrBuffer Reader or buffer to decode from + * @param {Reader|Uint8Array} readerOrBuffer Reader or buffer to decode from * @param {number} [length] Length of the message, if known beforehand * @returns {Prototype} Decoded message */ @@ -359,7 +365,7 @@ TypePrototype.decode = function decode(readerOrBuffer, length) { /** * Decodes a message of this type preceeded by its byte length as a varint. - * @param {Reader|number[]} readerOrBuffer Reader or buffer to decode from + * @param {Reader|Uint8Array} readerOrBuffer Reader or buffer to decode from * @returns {Prototype} Decoded message */ TypePrototype.decodeDelimited = function decodeDelimited(readerOrBuffer) { diff --git a/src/util.js b/src/util.js index 3e8ea4045..bada1aee6 100644 --- a/src/util.js +++ b/src/util.js @@ -287,7 +287,7 @@ util.safeProp = function safeProp(prop) { /** * Creates a new buffer of whatever type supported by the environment. * @param {number} [size=0] Buffer size - * @returns {Buffer|Uint8Array|Array} Buffer + * @returns {Uint8Array} Buffer */ util.newBuffer = function newBuffer(size) { return new (util.Buffer || typeof Uint8Array !== 'undefined' && Uint8Array || Array)(size || 0); diff --git a/src/writer.js b/src/writer.js index 4aa7c17db..65c4a0fe6 100644 --- a/src/writer.js +++ b/src/writer.js @@ -12,7 +12,7 @@ var LongBits = util.LongBits; * @classdesc Scheduled writer operation. * @memberof Writer * @constructor - * @param {function(number[], number, *)} fn Function to call + * @param {function(Uint8Array, number, *)} fn Function to call * @param {*} val Value to write * @param {number} len Value byte length * @private @@ -22,7 +22,7 @@ function Op(fn, val, len) { /** * Function to call. - * @type {function(number[], number, *)} + * @type {function(Uint8Array, number, *)} */ this.fn = fn; @@ -130,7 +130,7 @@ var WriterPrototype = Writer.prototype; /** * Pushes a new operation to the queue. - * @param {function(number[], number, *)} fn Function to call + * @param {function(Uint8Array, number, *)} fn Function to call * @param {number} len Value byte length * @param {number} val Value to write * @returns {Writer} `this` @@ -343,7 +343,7 @@ var writeBytes = ArrayImpl.prototype.set /** * Writes a sequence of bytes. - * @param {number[]} value Value to write + * @param {Uint8Array} value Value to write * @returns {Writer} `this` */ WriterPrototype.bytes = function write_bytes(value) { @@ -459,7 +459,7 @@ WriterPrototype.ldelim = function ldelim(id) { /** * Finishes the current sequence of write operations and frees all resources. - * @returns {number[]} Finished buffer + * @returns {Uint8Array} Finished buffer */ WriterPrototype.finish = function finish() { var head = this.head.next, // skip noop @@ -494,9 +494,7 @@ function writeFloatBuffer(buf, pos, val) { } /** - * Writes a float (32 bit) using node buffers. - * @param {number} value Value to write - * @returns {BufferWriter} `this` + * @override */ BufferWriterPrototype.float = function write_float_buffer(value) { return this.push(writeFloatBuffer, 4, value); @@ -507,9 +505,7 @@ function writeDoubleBuffer(buf, pos, val) { } /** - * Writes a double (64 bit float) using node buffers. - * @param {number} value Value to write - * @returns {BufferWriter} `this` + * @override */ BufferWriterPrototype.double = function write_double_buffer(value) { return this.push(writeDoubleBuffer, 8, value); @@ -521,9 +517,7 @@ function writeBytesBuffer(buf, pos, val) { } /** - * Writes a sequence of bytes using node buffers. - * @param {Buffer} value Value to write - * @returns {BufferWriter} `this` + * @override */ BufferWriterPrototype.bytes = function write_bytes_buffer(value) { var len = value.length >>> 0; @@ -537,9 +531,7 @@ function writeStringBuffer(buf, pos, val) { } /** - * Writes a string using node buffers. - * @param {string} value Value to write - * @returns {BufferWriter} `this` + * @override */ BufferWriterPrototype.string = function write_string_buffer(value) { var len = byteLength(value); @@ -549,8 +541,7 @@ BufferWriterPrototype.string = function write_string_buffer(value) { }; /** - * Finishes the current sequence of write operations using node buffers and frees all resources. - * @returns {Buffer} Finished buffer + * @override */ BufferWriterPrototype.finish = function finish_buffer() { var head = this.head.next, // skip noop diff --git a/tests/data/google/protobuf/any.proto b/tests/data/google/protobuf/any.proto deleted file mode 100644 index 0bf5ec17b..000000000 --- a/tests/data/google/protobuf/any.proto +++ /dev/null @@ -1,139 +0,0 @@ -// Protocol Buffers - Google's data interchange format -// Copyright 2008 Google Inc. All rights reserved. -// https://developers.google.com/protocol-buffers/ -// -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following disclaimer -// in the documentation and/or other materials provided with the -// distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived from -// this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -syntax = "proto3"; - -package google.protobuf; - -option csharp_namespace = "Google.Protobuf.WellKnownTypes"; -option go_package = "github.com/golang/protobuf/ptypes/any"; -option java_package = "com.google.protobuf"; -option java_outer_classname = "AnyProto"; -option java_multiple_files = true; -option objc_class_prefix = "GPB"; - -// `Any` contains an arbitrary serialized protocol buffer message along with a -// URL that describes the type of the serialized message. -// -// Protobuf library provides support to pack/unpack Any values in the form -// of utility functions or additional generated methods of the Any type. -// -// Example 1: Pack and unpack a message in C++. -// -// Foo foo = ...; -// Any any; -// any.PackFrom(foo); -// ... -// if (any.UnpackTo(&foo)) { -// ... -// } -// -// Example 2: Pack and unpack a message in Java. -// -// Foo foo = ...; -// Any any = Any.pack(foo); -// ... -// if (any.is(Foo.class)) { -// foo = any.unpack(Foo.class); -// } -// -// Example 3: Pack and unpack a message in Python. -// -// foo = Foo(...) -// any = Any() -// any.Pack(foo) -// ... -// if any.Is(Foo.DESCRIPTOR): -// any.Unpack(foo) -// ... -// -// The pack methods provided by protobuf library will by default use -// 'type.googleapis.com/full.type.name' as the type URL and the unpack -// methods only use the fully qualified type name after the last '/' -// in the type URL, for example "foo.bar.com/x/y.z" will yield type -// name "y.z". -// -// -// JSON -// ==== -// The JSON representation of an `Any` value uses the regular -// representation of the deserialized, embedded message, with an -// additional field `@type` which contains the type URL. Example: -// -// package google.profile; -// message Person { -// string first_name = 1; -// string last_name = 2; -// } -// -// { -// "@type": "type.googleapis.com/google.profile.Person", -// "firstName": , -// "lastName": -// } -// -// If the embedded message type is well-known and has a custom JSON -// representation, that representation will be embedded adding a field -// `value` which holds the custom JSON in addition to the `@type` -// field. Example (for message [google.protobuf.Duration][]): -// -// { -// "@type": "type.googleapis.com/google.protobuf.Duration", -// "value": "1.212s" -// } -// -message Any { - // A URL/resource name whose content describes the type of the - // serialized protocol buffer message. - // - // For URLs which use the scheme `http`, `https`, or no scheme, the - // following restrictions and interpretations apply: - // - // * If no scheme is provided, `https` is assumed. - // * The last segment of the URL's path must represent the fully - // qualified name of the type (as in `path/google.protobuf.Duration`). - // The name should be in a canonical form (e.g., leading "." is - // not accepted). - // * An HTTP GET on the URL must yield a [google.protobuf.Type][] - // value in binary format, or produce an error. - // * Applications are allowed to cache lookup results based on the - // URL, or have them precompiled into a binary to avoid any - // lookup. Therefore, binary compatibility needs to be preserved - // on changes to types. (Use versioned type names to manage - // breaking changes.) - // - // Schemes other than `http`, `https` (or the empty scheme) might be - // used with implementation specific semantics. - // - string type_url = 1; - - // Must be a valid serialized protocol buffer of the above specified type. - bytes value = 2; -} \ No newline at end of file diff --git a/tests/data/google/protobuf/descriptor.proto b/tests/data/google/protobuf/descriptor.proto index 77cdf63e7..747d90cfc 100644 --- a/tests/data/google/protobuf/descriptor.proto +++ b/tests/data/google/protobuf/descriptor.proto @@ -157,7 +157,6 @@ message FieldDescriptorProto { LABEL_OPTIONAL = 1; LABEL_REQUIRED = 2; LABEL_REPEATED = 3; - // TODO(sanjay): Should we add LABEL_MAP? }; optional string name = 1; @@ -431,13 +430,14 @@ message MessageOptions { // parser. optional bool map_entry = 7; + reserved 8; // javalite_serializable + + // The parser stores options it doesn't recognize here. See above. repeated UninterpretedOption uninterpreted_option = 999; // Clients can define custom options in extensions of this message. See above. extensions 1000 to max; - - reserved 8; // javalite_serializable } message FieldOptions { @@ -551,6 +551,7 @@ message EnumOptions { // is a formalization for deprecating enums. optional bool deprecated = 3 [default=false]; + // The parser stores options it doesn't recognize here. See above. repeated UninterpretedOption uninterpreted_option = 999; @@ -605,6 +606,17 @@ message MethodOptions { // this is a formalization for deprecating methods. optional bool deprecated = 33 [default=false]; + // Is this method side-effect-free (or safe in HTTP parlance), or idempotent, + // or neither? HTTP based RPC implementation may choose GET verb for safe + // methods, and PUT verb for idempotent methods instead of the default POST. + enum IdempotencyLevel { + IDEMPOTENCY_UNKNOWN = 0; + NO_SIDE_EFFECTS = 1; // implies idempotent + IDEMPOTENT = 2; // idempotent, but may have side effects + } + optional IdempotencyLevel idempotency_level = + 34 [default=IDEMPOTENCY_UNKNOWN]; + // The parser stores options it doesn't recognize here. See above. repeated UninterpretedOption uninterpreted_option = 999; diff --git a/tests/data/google/protobuf/duration.proto b/tests/data/google/protobuf/duration.proto deleted file mode 100644 index e00ae9ebe..000000000 --- a/tests/data/google/protobuf/duration.proto +++ /dev/null @@ -1,104 +0,0 @@ -// Protocol Buffers - Google's data interchange format -// Copyright 2008 Google Inc. All rights reserved. -// https://developers.google.com/protocol-buffers/ -// -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following disclaimer -// in the documentation and/or other materials provided with the -// distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived from -// this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -syntax = "proto3"; - -package google.protobuf; - -option csharp_namespace = "Google.Protobuf.WellKnownTypes"; -option cc_enable_arenas = true; -option go_package = "github.com/golang/protobuf/ptypes/duration"; -option java_package = "com.google.protobuf"; -option java_outer_classname = "DurationProto"; -option java_multiple_files = true; -option objc_class_prefix = "GPB"; - -// A Duration represents a signed, fixed-length span of time represented -// as a count of seconds and fractions of seconds at nanosecond -// resolution. It is independent of any calendar and concepts like "day" -// or "month". It is related to Timestamp in that the difference between -// two Timestamp values is a Duration and it can be added or subtracted -// from a Timestamp. Range is approximately +-10,000 years. -// -// Example 1: Compute Duration from two Timestamps in pseudo code. -// -// Timestamp start = ...; -// Timestamp end = ...; -// Duration duration = ...; -// -// duration.seconds = end.seconds - start.seconds; -// duration.nanos = end.nanos - start.nanos; -// -// if (duration.seconds < 0 && duration.nanos > 0) { -// duration.seconds += 1; -// duration.nanos -= 1000000000; -// } else if (durations.seconds > 0 && duration.nanos < 0) { -// duration.seconds -= 1; -// duration.nanos += 1000000000; -// } -// -// Example 2: Compute Timestamp from Timestamp + Duration in pseudo code. -// -// Timestamp start = ...; -// Duration duration = ...; -// Timestamp end = ...; -// -// end.seconds = start.seconds + duration.seconds; -// end.nanos = start.nanos + duration.nanos; -// -// if (end.nanos < 0) { -// end.seconds -= 1; -// end.nanos += 1000000000; -// } else if (end.nanos >= 1000000000) { -// end.seconds += 1; -// end.nanos -= 1000000000; -// } -// -// Example 3: Compute Duration from datetime.timedelta in Python. -// -// td = datetime.timedelta(days=3, minutes=10) -// duration = Duration() -// duration.FromTimedelta(td) -// -// -message Duration { - - // Signed seconds of the span of time. Must be from -315,576,000,000 - // to +315,576,000,000 inclusive. - int64 seconds = 1; - - // Signed fractions of a second at nanosecond resolution of the span - // of time. Durations less than one second are represented with a 0 - // `seconds` field and a positive or negative `nanos` field. For durations - // of one second or more, a non-zero value for the `nanos` field must be - // of the same sign as the `seconds` field. Must be from -999,999,999 - // to +999,999,999 inclusive. - int32 nanos = 2; -} \ No newline at end of file diff --git a/tests/data/google/protobuf/empty.proto b/tests/data/google/protobuf/empty.proto deleted file mode 100644 index d675375e1..000000000 --- a/tests/data/google/protobuf/empty.proto +++ /dev/null @@ -1,52 +0,0 @@ -// Protocol Buffers - Google's data interchange format -// Copyright 2008 Google Inc. All rights reserved. -// https://developers.google.com/protocol-buffers/ -// -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following disclaimer -// in the documentation and/or other materials provided with the -// distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived from -// this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -syntax = "proto3"; - -package google.protobuf; - -option csharp_namespace = "Google.Protobuf.WellKnownTypes"; -option go_package = "github.com/golang/protobuf/ptypes/empty"; -option java_package = "com.google.protobuf"; -option java_outer_classname = "EmptyProto"; -option java_multiple_files = true; -option objc_class_prefix = "GPB"; -option cc_enable_arenas = true; - -// A generic empty message that you can re-use to avoid defining duplicated -// empty messages in your APIs. A typical example is to use it as the request -// or the response type of an API method. For instance: -// -// service Foo { -// rpc Bar(google.protobuf.Empty) returns (google.protobuf.Empty); -// } -// -// The JSON representation for `Empty` is empty JSON object `{}`. -message Empty {} \ No newline at end of file diff --git a/tests/data/google/protobuf/timestamp.proto b/tests/data/google/protobuf/timestamp.proto deleted file mode 100644 index 2f1389d76..000000000 --- a/tests/data/google/protobuf/timestamp.proto +++ /dev/null @@ -1,108 +0,0 @@ -// Protocol Buffers - Google's data interchange format -// Copyright 2008 Google Inc. All rights reserved. -// https://developers.google.com/protocol-buffers/ -// -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following disclaimer -// in the documentation and/or other materials provided with the -// distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived from -// this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -syntax = "proto3"; - -package google.protobuf; - -option csharp_namespace = "Google.Protobuf.WellKnownTypes"; -option cc_enable_arenas = true; -option go_package = "github.com/golang/protobuf/ptypes/timestamp"; -option java_package = "com.google.protobuf"; -option java_outer_classname = "TimestampProto"; -option java_multiple_files = true; -option objc_class_prefix = "GPB"; - -// A Timestamp represents a point in time independent of any time zone -// or calendar, represented as seconds and fractions of seconds at -// nanosecond resolution in UTC Epoch time. It is encoded using the -// Proleptic Gregorian Calendar which extends the Gregorian calendar -// backwards to year one. It is encoded assuming all minutes are 60 -// seconds long, i.e. leap seconds are "smeared" so that no leap second -// table is needed for interpretation. Range is from -// 0001-01-01T00:00:00Z to 9999-12-31T23:59:59.999999999Z. -// By restricting to that range, we ensure that we can convert to -// and from RFC 3339 date strings. -// See [https://www.ietf.org/rfc/rfc3339.txt](https://www.ietf.org/rfc/rfc3339.txt). -// -// Example 1: Compute Timestamp from POSIX `time()`. -// -// Timestamp timestamp; -// timestamp.set_seconds(time(NULL)); -// timestamp.set_nanos(0); -// -// Example 2: Compute Timestamp from POSIX `gettimeofday()`. -// -// struct timeval tv; -// gettimeofday(&tv, NULL); -// -// Timestamp timestamp; -// timestamp.set_seconds(tv.tv_sec); -// timestamp.set_nanos(tv.tv_usec * 1000); -// -// Example 3: Compute Timestamp from Win32 `GetSystemTimeAsFileTime()`. -// -// FILETIME ft; -// GetSystemTimeAsFileTime(&ft); -// UINT64 ticks = (((UINT64)ft.dwHighDateTime) << 32) | ft.dwLowDateTime; -// -// // A Windows tick is 100 nanoseconds. Windows epoch 1601-01-01T00:00:00Z -// // is 11644473600 seconds before Unix epoch 1970-01-01T00:00:00Z. -// Timestamp timestamp; -// timestamp.set_seconds((INT64) ((ticks / 10000000) - 11644473600LL)); -// timestamp.set_nanos((INT32) ((ticks % 10000000) * 100)); -// -// Example 4: Compute Timestamp from Java `System.currentTimeMillis()`. -// -// long millis = System.currentTimeMillis(); -// -// Timestamp timestamp = Timestamp.newBuilder().setSeconds(millis / 1000) -// .setNanos((int) ((millis % 1000) * 1000000)).build(); -// -// -// Example 5: Compute Timestamp from current time in Python. -// -// timestamp = Timestamp() -// timestamp.GetCurrentTime() -// -// -message Timestamp { - - // Represents seconds of UTC time since Unix epoch - // 1970-01-01T00:00:00Z. Must be from 0001-01-01T00:00:00Z to - // 9999-12-31T23:59:59Z inclusive. - int64 seconds = 1; - - // Non-negative fractions of a second at nanosecond resolution. Negative - // second values with fractions must still have non-negative nanos values - // that count forward in time. Must be from 0 to 999,999,999 - // inclusive. - int32 nanos = 2; -} \ No newline at end of file diff --git a/types/protobuf.js.d.ts b/types/protobuf.js.d.ts index 7d690306a..c019a235b 100644 --- a/types/protobuf.js.d.ts +++ b/types/protobuf.js.d.ts @@ -1,6 +1,9 @@ +/// +/// + /* - * protobuf.js v6.0.0 TypeScript definitions - * Generated Tue, 29 Nov 2016 12:18:27 UTC + * protobuf.js v6.0.1 TypeScript definitions + * Generated Wed, 30 Nov 2016 13:45:03 UTC */ declare module protobuf { @@ -411,9 +414,9 @@ declare module protobuf { * @function * @param {Prototype|Object} message Message to encode * @param {Writer} [writer] Writer to use - * @returns {number[]} Encoded message + * @returns {Uint8Array} Encoded message */ - static encode(message: (Prototype|Object), writer?: Writer): number[]; + static encode(message: (Prototype|Object), writer?: Writer): Uint8Array; /** * Encodes a message of this type preceeded by its length as a varint to a buffer. @@ -421,27 +424,27 @@ declare module protobuf { * @function * @param {Prototype|Object} message Message to encode * @param {Writer} [writer] Writer to use - * @returns {number[]} Encoded message + * @returns {Uint8Array} Encoded message */ - static encodeDelimited(message: (Prototype|Object), writer?: Writer): number[]; + static encodeDelimited(message: (Prototype|Object), writer?: Writer): Uint8Array; /** * Decodes a message of this type from a buffer. * @name Class.decode * @function - * @param {number[]} buffer Buffer to decode + * @param {Uint8Array} buffer Buffer to decode * @returns {Prototype} Decoded message */ - static decode(buffer: number[]): Prototype; + static decode(buffer: Uint8Array): Prototype; /** * Decodes a message of this type preceeded by its length as a varint from a buffer. * @name Class.decodeDelimited * @function - * @param {number[]} buffer Buffer to decode + * @param {Uint8Array} buffer Buffer to decode * @returns {Prototype} Decoded message */ - static decodeDelimited(buffer: number[]): Prototype; + static decodeDelimited(buffer: Uint8Array): Prototype; /** * Verifies a message of this type. @@ -657,10 +660,10 @@ declare module protobuf { /** * Adds nested elements to this namespace from JSON. - * @param {Object.} json Nested JSON + * @param {Object.} nestedJson Nested JSON * @returns {Namespace} `this` */ - addJSON(json: { [k: string]: any }): Namespace; + addJSON(nestedJson: { [k: string]: any }): Namespace; /** * Gets the nested object of the specified name. @@ -966,7 +969,7 @@ declare module protobuf { * When called as a function, returns an appropriate reader for the specified buffer. * @classdesc Wire format reader using `Uint8Array` if available, otherwise `Array`. * @constructor - * @param {number[]} buffer Buffer to read from + * @param {Uint8Array} buffer Buffer to read from */ class Reader { /** @@ -974,15 +977,15 @@ declare module protobuf { * When called as a function, returns an appropriate reader for the specified buffer. * @classdesc Wire format reader using `Uint8Array` if available, otherwise `Array`. * @constructor - * @param {number[]} buffer Buffer to read from + * @param {Uint8Array} buffer Buffer to read from */ - constructor(buffer: number[]); + constructor(buffer: Uint8Array); /** * Read buffer. - * @type {number[]} + * @type {Uint8Array} */ - buf: number[]; + buf: Uint8Array; /** * Read buffer position. @@ -1088,9 +1091,9 @@ declare module protobuf { /** * Reads a sequence of bytes preceeded by its length as a varint. - * @returns {number[]} Value read + * @returns {Uint8Array} Value read */ - bytes(): number[]; + bytes(): Uint8Array; /** * Reads a string preceeded by its byte length as a varint. @@ -1114,17 +1117,17 @@ declare module protobuf { /** * Resets this instance and frees all resources. - * @param {number[]} [buffer] New buffer for a new sequence of read operations + * @param {Uint8Array} [buffer] New buffer for a new sequence of read operations * @returns {Reader} `this` */ - reset(buffer?: number[]): Reader; + reset(buffer?: Uint8Array): Reader; /** * Finishes the current sequence of read operations, frees all resources and returns the remaining buffer. - * @param {number[]} [buffer] New buffer for a new sequence of read operations - * @returns {number[]} Finished buffer + * @param {Uint8Array} [buffer] New buffer for a new sequence of read operations + * @returns {Uint8Array} Finished buffer */ - finish(buffer?: number[]): number[]; + finish(buffer?: Uint8Array): Uint8Array; } @@ -1145,31 +1148,6 @@ declare module protobuf { */ constructor(buffer: Buffer); - /** - * Reads a float (32 bit) as a number using node buffers. - * @returns {number} Value read - */ - float(): number; - - /** - * Reads a double (64 bit float) as a number using node buffers. - * @returns {number} Value read - */ - double(): number; - - /** - * Reads a string. - * @returns {string} Value read - */ - string(): string; - - /** - * Finishes the current sequence of read operations using node buffers, frees all resources and returns the remaining buffer. - * @param {Buffer} [buffer] New buffer for a new sequence of read operations - * @returns {Buffer} Finished buffer - */ - finish(buffer?: Buffer): Buffer; - } /** @@ -1442,18 +1420,18 @@ declare module protobuf { /** * Decodes a message of this type. - * @param {Reader|number[]} readerOrBuffer Reader or buffer to decode from + * @param {Reader|Uint8Array} readerOrBuffer Reader or buffer to decode from * @param {number} [length] Length of the message, if known beforehand * @returns {Prototype} Decoded message */ - decode(readerOrBuffer: (Reader|number[]), length?: number): Prototype; + decode(readerOrBuffer: (Reader|Uint8Array), length?: number): Prototype; /** * Decodes a message of this type preceeded by its byte length as a varint. - * @param {Reader|number[]} readerOrBuffer Reader or buffer to decode from + * @param {Reader|Uint8Array} readerOrBuffer Reader or buffer to decode from * @returns {Prototype} Decoded message */ - decodeDelimited(readerOrBuffer: (Reader|number[])): Prototype; + decodeDelimited(readerOrBuffer: (Reader|Uint8Array)): Prototype; /** * Verifies that enum values are valid and that any required fields are present. @@ -1787,9 +1765,9 @@ declare module protobuf { /** * Creates a new buffer of whatever type supported by the environment. * @param {number} [size=0] Buffer size - * @returns {Buffer|Uint8Array|Array} Buffer + * @returns {Uint8Array} Buffer */ - function newBuffer(size?: number): (Buffer|Uint8Array|Array); + function newBuffer(size?: number): Uint8Array; } @@ -1888,7 +1866,7 @@ declare module protobuf { /** * Pushes a new operation to the queue. - * @param {function(number[], number, *)} fn Function to call + * @param {function(Uint8Array, number, *)} fn Function to call * @param {number} len Value byte length * @param {number} val Value to write * @returns {Writer} `this` @@ -2000,10 +1978,10 @@ declare module protobuf { /** * Writes a sequence of bytes. - * @param {number[]} value Value to write + * @param {Uint8Array} value Value to write * @returns {Writer} `this` */ - bytes(value: number[]): Writer; + bytes(value: Uint8Array): Writer; /** * Writes a string. @@ -2034,9 +2012,9 @@ declare module protobuf { /** * Finishes the current sequence of write operations and frees all resources. - * @returns {number[]} Finished buffer + * @returns {Uint8Array} Finished buffer */ - finish(): number[]; + finish(): Uint8Array; } @@ -2057,40 +2035,6 @@ declare module protobuf { */ constructor(); - /** - * Writes a float (32 bit) using node buffers. - * @param {number} value Value to write - * @returns {BufferWriter} `this` - */ - float(value: number): BufferWriter; - - /** - * Writes a double (64 bit float) using node buffers. - * @param {number} value Value to write - * @returns {BufferWriter} `this` - */ - double(value: number): BufferWriter; - - /** - * Writes a sequence of bytes using node buffers. - * @param {Buffer} value Value to write - * @returns {BufferWriter} `this` - */ - bytes(value: Buffer): BufferWriter; - - /** - * Writes a string using node buffers. - * @param {string} value Value to write - * @returns {BufferWriter} `this` - */ - string(value: string): BufferWriter; - - /** - * Finishes the current sequence of write operations using node buffers and frees all resources. - * @returns {Buffer} Finished buffer - */ - finish(): Buffer; - }