diff --git a/README.md b/README.md
index ae74589db..b8598669b 100644
--- a/README.md
+++ b/README.md
@@ -151,12 +151,11 @@ var root = new Root().define("awesomepackage").add(AwesomeMessage);
```js
...
-var Prototype = protobuf.Prototype;
function AwesomeMessage(properties) {
- Prototype.call(this, properties);
+ protobuf.Message.call(this, properties);
}
-protobuf.inherits(AwesomeMessage, root.lookup("awesomepackage.AwesomeMessage") /* or use reflection */);
+protobuf.Class.create(root.lookup("awesomepackage.AwesomeMessage") /* or use reflection */, AwesomeMessage);
var message = new AwesomeMessage({ awesomeField: "AwesomeString" });
@@ -203,6 +202,8 @@ function rpcImpl(method, requestData, callback) {
}
```
+There is also an [example for streaming RPC](https://github.com/dcodeIO/protobuf.js/blob/master/examples/streaming-rpc.js).
+
### Usage with TypeScript
```ts
@@ -218,8 +219,11 @@ The library exports a flat `protobuf` namespace with the following members, orde
### Parser
-* **load(filename: `string|Array`, [root: `Root`], [callback: `function(err: Error, [root: Root])`]): `Promise`** [[source](https://github.com/dcodeIO/protobuf.js/blob/master/src/index.js)]
- Loads one or multiple .proto files into the specified root or creates a new one when omitted.
+* **load(filename: `string|Array`, [root: `Root`], [callback: `function(err: Error, [root: Root])`]): `Promise|undefined`** [[source](https://github.com/dcodeIO/protobuf.js/blob/master/src/index.js)]
+ Loads one or multiple .proto or preprocessed .json files into a common root namespace.
+
+* **loadSync(filename: `string|string[]`, [root: `Root`]): `Root`** [[source](https://github.com/dcodeIO/protobuf.js/blob/master/src/index.js)]
+ Synchronously loads one or multiple .proto or preprocessed .json files into a common root namespace (node only).
* **tokenize(source: `string`): `Object`** [[source](https://github.com/dcodeIO/protobuf.js/blob/master/src/tokenize.js)]
Tokenizes the given .proto source and returns an object with useful utility functions.
@@ -256,14 +260,8 @@ The library exports a flat `protobuf` namespace with the following members, orde
* **BufferReader** _extends **Reader**_ [[source](https://github.com/dcodeIO/protobuf.js/blob/master/src/reader.js)]
Wire format reader using node buffers.
-* **Encoder** [[source](https://github.com/dcodeIO/protobuf.js/blob/master/src/encoder.js)]
- Wire format encoder using code generation on top of reflection.
-
-* **Decoder** [[source](https://github.com/dcodeIO/protobuf.js/blob/master/src/decoder.js)]
- Wire format decoder using code generation on top of reflection.
-
-* **Verifier** [[source](https://github.com/dcodeIO/protobuf.js/blob/master/src/verifier.js)]
- Runtime message verifier using code generation on top of reflection.
+* **codegen** [[source](https://github.com/dcodeIO/protobuf.js/blob/master/src/codegen.js)]
+ A closure for generating functions programmatically.
### Reflection
@@ -296,22 +294,25 @@ The library exports a flat `protobuf` namespace with the following members, orde
### Runtime
-* **inherits(clazz: `Function`, type: `Type`, [options: `Object.`]): `Prototype`** [[source](https://github.com/dcodeIO/protobuf.js/blob/master/src/inherits.js)]
- Inherits a custom class from the message prototype of the specified message type.
+* **Class** [[source](https://github.com/dcodeIO/protobuf.js/blob/master/src/class.js)]
+ Runtime class providing the tools to create your own custom classes.
-* **Prototype** [[source](https://github.com/dcodeIO/protobuf.js/blob/master/src/prototype.js)]
- Runtime message prototype ready to be extended by custom classes or generated code.
+* **Message** [[source](https://github.com/dcodeIO/protobuf.js/blob/master/src/message.js)]
+ Abstract runtime message.
### Utility
-* **util: `Object`** [[source](https://github.com/dcodeIO/protobuf.js/blob/master/src/util.js)]
- Utility functions.
+* **types: `Object`** [[source](https://github.com/dcodeIO/protobuf.js/blob/master/src/types.js)]
+ Common type constants.
* **common(name: `string`, json: `Object`)** [[source](https://github.com/dcodeIO/protobuf.js/blob/master/src/common.js)]
Provides common type definitions.
-* **types: `Object`** [[source](https://github.com/dcodeIO/protobuf.js/blob/master/src/types.js)]
- Common type constants.
+* **rpc: `Object`** [[source](https://github.com/dcodeIO/protobuf.js/blob/master/src/rpc.js)]
+ Streaming RPC helpers.
+
+* **util: `Object`** [[source](https://github.com/dcodeIO/protobuf.js/blob/master/src/util.js)]
+ Various utility functions.
Documentation
-------------
@@ -320,22 +321,6 @@ Documentation
* [protobuf.js API Documentation](http://dcode.io/protobuf.js/)
-### Data type recommendations
-
-| Value type | protobuf Type | Size / Notes
-|---------------------|---------------|-----------------------------------------------------------------------------------
-| Unsigned 32 bit int | uint32 | 1 to 5 bytes.
-| Signed 32 bit int | sint32 | 1 to 5 bytes. Do not use int32 (always encodes negative values as 10 bytes).
-| Unsigned 52 bit int | uint64 | 1 to 10 bytes.
-| Signed 52 bit int | sint64 | 1 to 10 bytes. Do not use int64 (always encodes negative values as 10 bytes).
-| Unsigned 64 bit int | uint64 | Use with long.js. 1 to 10 bytes.
-| Signed 64 bit int | sint64 | Use with long.js. 1 to 10 bytes. Do not use int64 (always encodes negative values as 10 bytes).
-| 32 bit float | float | 4 bytes.
-| 64 bit float | double | 8 bytes. Use float if 32 bits of precision are enough.
-| Boolean values | bool | 1 byte.
-| Strings | string | 1 to 5 bytes + utf8 byte length.
-| Buffers | bytes | 1 to 5 bytes + byte length.
-
Command line
------------
diff --git a/dist/protobuf.js b/dist/protobuf.js
index 959ba39d3..55b33e69a 100644
--- a/dist/protobuf.js
+++ b/dist/protobuf.js
@@ -1,6 +1,6 @@
/*!
* protobuf.js v6.1.0 (c) 2016 Daniel Wirtz
- * Compiled Thu, 08 Dec 2016 19:14:46 UTC
+ * Compiled Fri, 09 Dec 2016 01:15:36 UTC
* Licensed under the Apache License, Version 2.0
* see: https://github.com/dcodeIO/protobuf.js for details
*/
@@ -126,6 +126,145 @@ exports.write = function writeIEEE754(buffer, value, offset, isBE, mLen, nBytes)
},{}],2:[function(require,module,exports){
"use strict";
+module.exports = Class;
+
+var Message = require(11),
+ Type = require(23),
+ util = require(25);
+
+var _TypeError = util._TypeError;
+
+/**
+ * Constructs a class instance, which is also a message prototype.
+ * @classdesc Runtime class providing the tools to create your own custom classes.
+ * @constructor
+ * @param {Type} type Reflected type
+ * @abstract
+ */
+function Class(type) {
+ return Class.create(type);
+}
+
+/**
+ * Constructs a new message prototype for the specified reflected type and sets up its constructor.
+ * @param {Type} type Reflected message type
+ * @param {*} [ctor] Custom constructor to set up, defaults to create a generic one if omitted
+ * @returns {Message} Message prototype
+ */
+Class.create = function create(type, ctor) {
+ if (!(type instanceof Type))
+ throw _TypeError("type", "a Type");
+ var clazz = ctor;
+ if (clazz) {
+ if (typeof clazz !== 'function')
+ throw _TypeError("ctor", "a function");
+ } else
+ clazz = (function(MessageCtor) { // eslint-disable-line wrap-iife
+ return function Message(properties) {
+ MessageCtor.call(this, properties);
+ };
+ })(Message);
+
+ // Let's pretend...
+ clazz.constructor = Class;
+
+ // new Class() -> Message.prototype
+ var prototype = clazz.prototype = new Message();
+ prototype.constructor = clazz;
+
+ // Static methods on Message are instance methods on Class and vice-versa.
+ util.merge(clazz, Message, true);
+
+ // Classes and messages reference their reflected type
+ clazz.$type = type;
+ prototype.$type = type;
+
+ // Messages have non-enumerable default values on their prototype
+ type.getFieldsArray().forEach(function(field) {
+ field.resolve();
+ // objects on the prototype must be immmutable. users must assign a new object instance and
+ // cannot use Array#push on empty arrays on the prototype for example, as this would modify
+ // the value on the prototype for ALL messages of this type. Hence, these objects are frozen.
+ prototype[field.name] = Array.isArray(field.defaultValue)
+ ? util.emptyArray
+ : util.isObject(field.defaultValue)
+ ? util.emptyObject
+ : field.defaultValue;
+ });
+
+ // Runtime messages have non-enumerable getters and setters for each virtual oneof field
+ type.getOneofsArray().forEach(function(oneof) {
+ util.prop(prototype, oneof.resolve().name, {
+ get: function getVirtual() {
+ // > If the parser encounters multiple members of the same oneof on the wire, only the last member seen is used in the parsed message.
+ var keys = Object.keys(this);
+ for (var i = keys.length - 1; i > -1; --i)
+ if (oneof.oneof.indexOf(keys[i]) > -1)
+ return keys[i];
+ return undefined;
+ },
+ set: function setVirtual(value) {
+ var keys = oneof.oneof;
+ for (var i = 0; i < keys.length; ++i)
+ if (keys[i] !== value)
+ delete this[keys[i]];
+ }
+ });
+ });
+
+ // Register
+ type.ctor = clazz;
+
+ return prototype;
+};
+
+// Static methods on Message are instance methods on Class and vice-versa.
+Class.prototype = Message;
+
+/**
+ * Encodes a message of this type.
+ * @name Class#encode
+ * @function
+ * @param {Message|Object} message Message to encode
+ * @param {Writer} [writer] Writer to use
+ * @returns {Writer} Writer
+ */
+
+/**
+ * Encodes a message of this type preceeded by its length as a varint.
+ * @name Class#encodeDelimited
+ * @function
+ * @param {Message|Object} message Message to encode
+ * @param {Writer} [writer] Writer to use
+ * @returns {Writer} Writer
+ */
+
+/**
+ * Decodes a message of this type.
+ * @name Class#decode
+ * @function
+ * @param {Reader|Uint8Array} readerOrBuffer Reader or buffer to decode
+ * @returns {Message} Decoded message
+ */
+
+/**
+ * Decodes a message of this type preceeded by its length as a varint.
+ * @name Class#decodeDelimited
+ * @function
+ * @param {Reader|Uint8Array} readerOrBuffer Reader or buffer to decode
+ * @returns {Message} Decoded message
+ */
+
+/**
+ * Verifies a message of this type.
+ * @name Class#verify
+ * @function
+ * @param {Message|Object} message Message or plain object to verify
+ * @returns {?string} `null` if valid, otherwise the reason why it is not
+ */
+
+},{"11":11,"23":23,"25":25}],3:[function(require,module,exports){
+"use strict";
module.exports = codegen;
var util = require(25);
@@ -239,11 +378,11 @@ function codegen() {
codegen.supported = false; try { codegen.supported = codegen("a","b")("return a-b").eof()(2,1) === 1; } catch (e) {} // eslint-disable-line no-empty
codegen.verbose = false;
-codegen.encode = require(4);
-codegen.decode = require(3);
-codegen.verify = require(5);
+codegen.encode = require(5);
+codegen.decode = require(4);
+codegen.verify = require(6);
-},{"25":25,"3":3,"4":4,"5":5}],3:[function(require,module,exports){
+},{"25":25,"4":4,"5":5,"6":6}],4:[function(require,module,exports){
"use strict";
/**
@@ -253,17 +392,17 @@ codegen.verify = require(5);
*/
var decode = exports;
-var Enum = require(7),
+var Enum = require(8),
Reader = require(17),
types = require(24),
util = require(25),
- codegen = require(2);
+ codegen = require(3);
/**
* Decodes a message of `this` message's type.
* @param {Reader|Uint8Array} readerOrBuffer Reader or buffer to decode from
* @param {number} [length] Length of the message, if known beforehand
- * @returns {Prototype} Populated runtime message
+ * @returns {Message} Populated runtime message
* @this Type
*/
decode.fallback = function decode_fallback(readerOrBuffer, length) {
@@ -421,7 +560,7 @@ decode.generate = function decode_generate(mtype) {
/* eslint-enable no-unexpected-multiline */
};
-},{"17":17,"2":2,"24":24,"25":25,"7":7}],4:[function(require,module,exports){
+},{"17":17,"24":24,"25":25,"3":3,"8":8}],5:[function(require,module,exports){
"use strict";
/**
@@ -431,15 +570,15 @@ decode.generate = function decode_generate(mtype) {
*/
var encode = exports;
-var Enum = require(7),
+var Enum = require(8),
Writer = require(30),
types = require(24),
util = require(25),
- codegen = require(2);
+ codegen = require(3);
/**
* Encodes a message of `this` message's type.
- * @param {Prototype|Object} message Runtime message or plain object to encode
+ * @param {Message|Object} message Runtime message or plain object to encode
* @param {Writer} [writer] Writer to encode to
* @returns {Writer} writer
* @this Type
@@ -612,7 +751,7 @@ encode.generate = function encode_generate(mtype) {
/* eslint-enable no-unexpected-multiline */
};
-},{"2":2,"24":24,"25":25,"30":30,"7":7}],5:[function(require,module,exports){
+},{"24":24,"25":25,"3":3,"30":30,"8":8}],6:[function(require,module,exports){
"use strict";
/**
@@ -622,14 +761,14 @@ encode.generate = function encode_generate(mtype) {
*/
var verify = exports;
-var Enum = require(7),
+var Enum = require(8),
Type = require(23),
util = require(25),
- codegen = require(2);
+ codegen = require(3);
/**
* Verifies a runtime message of `this` message type.
- * @param {Prototype|Object} message Runtime message or plain object to verify
+ * @param {Message|Object} message Runtime message or plain object to verify
* @returns {?string} `null` if valid, otherwise the reason why it is not
* @this {Type}
*/
@@ -705,7 +844,7 @@ verify.generate = function verify_generate(mtype) {
/* eslint-enable no-unexpected-multiline */
};
-},{"2":2,"23":23,"25":25,"7":7}],6:[function(require,module,exports){
+},{"23":23,"25":25,"3":3,"8":8}],7:[function(require,module,exports){
"use strict";
module.exports = common;
@@ -838,11 +977,11 @@ common("struct", {
}
});
-},{}],7:[function(require,module,exports){
+},{}],8:[function(require,module,exports){
"use strict";
module.exports = Enum;
-var ReflectionObject = require(13);
+var ReflectionObject = require(14);
/** @alias Enum.prototype */
var EnumPrototype = ReflectionObject.extend(Enum);
@@ -851,7 +990,7 @@ var util = require(25);
var _TypeError = util._TypeError;
/**
- * Constructs a new enum.
+ * Constructs a new enum instance.
* @classdesc Reflected enum.
* @extends ReflectionObject
* @constructor
@@ -979,16 +1118,16 @@ EnumPrototype.remove = function(name) {
return clearCache(this);
};
-},{"13":13,"25":25}],8:[function(require,module,exports){
+},{"14":14,"25":25}],9:[function(require,module,exports){
"use strict";
module.exports = Field;
-var ReflectionObject = require(13);
+var ReflectionObject = require(14);
/** @alias Field.prototype */
var FieldPrototype = ReflectionObject.extend(Field);
var Type = require(23),
- Enum = require(7),
+ Enum = require(8),
MapField = require(10),
types = require(24),
util = require(25);
@@ -996,7 +1135,7 @@ var Type = require(23),
var _TypeError = util._TypeError;
/**
- * Constructs a new message field. Note that {@link MapField|map fields} have their own class.
+ * Constructs a new message field instance. Note that {@link MapField|map fields} have their own class.
* @classdesc Reflected message field.
* @extends ReflectionObject
* @constructor
@@ -1237,7 +1376,7 @@ FieldPrototype.resolve = function resolve() {
* @param {*} value Field value
* @param {Object.} [options] Conversion options
* @returns {*} Converted value
- * @see {@link Prototype#asJSON}
+ * @see {@link Message#asJSON}
*/
FieldPrototype.jsonConvert = function(value, options) {
if (options) {
@@ -1253,219 +1392,22 @@ FieldPrototype.jsonConvert = function(value, options) {
return value;
};
-},{"10":10,"13":13,"23":23,"24":24,"25":25,"7":7}],9:[function(require,module,exports){
-"use strict";
-module.exports = inherits;
-
-var Prototype = require(16),
- Type = require(23),
- util = require(25);
-
-var _TypeError = util._TypeError;
-
-/**
- * Options passed to {@link inherits}, modifying its behavior.
- * @typedef InheritanceOptions
- * @type {Object}
- * @property {boolean} [noStatics=false] Skips adding the default static methods on top of the constructor
- * @property {boolean} [noRegister=false] Skips registering the constructor with the reflected type
- */
-
-/**
- * Inherits a custom class from the message prototype of the specified message type.
- * @param {*} clazz Inheriting class constructor
- * @param {Type} type Inherited message type
- * @param {InheritanceOptions} [options] Inheritance options
- * @returns {Prototype} Created prototype
- */
-function inherits(clazz, type, options) {
- if (typeof clazz !== 'function')
- throw _TypeError("clazz", "a function");
- if (!(type instanceof Type))
- throw _TypeError("type", "a Type");
- if (!options)
- options = {};
-
- /**
- * 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.
- * @name Class
- * @extends Prototype
- * @constructor
- * @param {Object.} [properties] Properties to set on the message
- * @see {@link inherits}
- */
-
- var classProperties = {
-
- /**
- * Reference to the reflected type.
- * @name Class.$type
- * @type {Type}
- * @readonly
- */
- $type: {
- value: type
- }
- };
-
- if (!options.noStatics)
- util.merge(classProperties, {
-
- /**
- * Encodes a message of this type to a buffer.
- * @name Class.encode
- * @function
- * @param {Prototype|Object} message Message to encode
- * @param {Writer} [writer] Writer to use
- * @returns {Writer} Writer
- */
- encode: {
- value: function encode(message, writer) {
- return this.$type.encode(message, writer);
- }
- },
-
- /**
- * Encodes a message of this type preceeded by its length as a varint to a buffer.
- * @name Class.encodeDelimited
- * @function
- * @param {Prototype|Object} message Message to encode
- * @param {Writer} [writer] Writer to use
- * @returns {Writer} Writer
- */
- encodeDelimited: {
- value: function encodeDelimited(message, writer) {
- return this.$type.encodeDelimited(message, writer);
- }
- },
-
- /**
- * Decodes a message of this type from a buffer.
- * @name Class.decode
- * @function
- * @param {Uint8Array} buffer Buffer to decode
- * @returns {Prototype} Decoded message
- */
- decode: {
- value: function decode(buffer) {
- return this.$type.decode(buffer);
- }
- },
-
- /**
- * Decodes a message of this type preceeded by its length as a varint from a buffer.
- * @name Class.decodeDelimited
- * @function
- * @param {Uint8Array} buffer Buffer to decode
- * @returns {Prototype} Decoded message
- */
- decodeDelimited: {
- value: function decodeDelimited(buffer) {
- return this.$type.decodeDelimited(buffer);
- }
- },
-
- /**
- * Verifies a message of this type.
- * @name Class.verify
- * @function
- * @param {Prototype|Object} message Message or plain object to verify
- * @returns {?string} `null` if valid, otherwise the reason why it is not
- */
- verify: {
- value: function verify(message) {
- return this.$type.verify(message);
- }
- }
-
- }, true);
-
- util.props(clazz, classProperties);
- var prototype = inherits.defineProperties(new Prototype(), type);
- clazz.prototype = prototype;
- prototype.constructor = clazz;
-
- if (!options.noRegister)
- type.setCtor(clazz);
-
- return prototype;
-}
-
-/**
- * Defines the reflected type's default values and virtual oneof properties on the specified prototype.
- * @memberof inherits
- * @param {Prototype} prototype Prototype to define properties upon
- * @param {Type} type Reflected message type
- * @returns {Prototype} The specified prototype
- */
-inherits.defineProperties = function defineProperties(prototype, type) {
-
- var prototypeProperties = {
-
- /**
- * Reference to the reflected type.
- * @name Prototype#$type
- * @type {Type}
- * @readonly
- */
- $type: {
- value: type
- }
- };
-
- // Initialize default values
- type.getFieldsArray().forEach(function(field) {
- field.resolve();
- // objects on the prototype must be immmutable. users must assign a new object instance and
- // cannot use Array#push on empty arrays on the prototype for example, as this would modify
- // the value on the prototype for ALL messages of this type. Hence, these objects are frozen.
- prototype[field.name] = Array.isArray(field.defaultValue)
- ? util.emptyArray
- : util.isObject(field.defaultValue)
- ? util.emptyObject
- : field.defaultValue;
- });
-
- // Define each oneof with a non-enumerable getter and setter for the present field
- type.getOneofsArray().forEach(function(oneof) {
- util.prop(prototype, oneof.resolve().name, {
- get: function getVirtual() {
- // > If the parser encounters multiple members of the same oneof on the wire, only the last member seen is used in the parsed message.
- var keys = Object.keys(this);
- for (var i = keys.length - 1; i > -1; --i)
- if (oneof.oneof.indexOf(keys[i]) > -1)
- return keys[i];
- return undefined;
- },
- set: function setVirtual(value) {
- var keys = oneof.oneof;
- for (var i = 0; i < keys.length; ++i)
- if (keys[i] !== value)
- delete this[keys[i]];
- }
- });
- });
-
- util.props(prototype, prototypeProperties);
- return prototype;
-};
-
-},{"16":16,"23":23,"25":25}],10:[function(require,module,exports){
+},{"10":10,"14":14,"23":23,"24":24,"25":25,"8":8}],10:[function(require,module,exports){
"use strict";
module.exports = MapField;
-var Field = require(8);
+var Field = require(9);
/** @alias Field.prototype */
var FieldPrototype = Field.prototype;
/** @alias MapField.prototype */
var MapFieldPrototype = Field.extend(MapField);
-var Enum = require(7),
+var Enum = require(8),
types = require(24),
util = require(25);
/**
- * Constructs a new map field.
+ * Constructs a new map field instance.
* @classdesc Reflected map field.
* @extends Field
* @constructor
@@ -1548,11 +1490,148 @@ MapFieldPrototype.resolve = function resolve() {
return FieldPrototype.resolve.call(this);
};
-},{"24":24,"25":25,"7":7,"8":8}],11:[function(require,module,exports){
+},{"24":24,"25":25,"8":8,"9":9}],11:[function(require,module,exports){
+"use strict";
+module.exports = Message;
+
+/**
+ * Constructs a new message instance.
+ *
+ * This method should be called from your custom constructors, i.e. `Message.call(this, properties)`.
+ * @classdesc Abstract runtime message.
+ * @extends {Object}
+ * @constructor
+ * @param {Object.} [properties] Properties to set
+ * @abstract
+ * @see {@link Class.create}
+ */
+function Message(properties) {
+ if (properties) {
+ var keys = Object.keys(properties);
+ for (var i = 0; i < keys.length; ++i)
+ this[keys[i]] = properties[keys[i]];
+ }
+}
+
+/** @alias Message.prototype */
+var MessagePrototype = Message.prototype;
+
+/**
+ * Converts this message to a JSON object.
+ * @param {Object.} [options] Conversion options
+ * @param {boolean} [options.fieldsOnly=false] Converts only properties that reference a field
+ * @param {*} [options.long] Long conversion type. Only relevant with a long library.
+ * Valid values are `String` and `Number` (the global types).
+ * Defaults to a possibly unsafe number without, and a `Long` with a long library.
+ * @param {*} [options.enum=Number] Enum value conversion type.
+ * Valid values are `String` and `Number` (the global types).
+ * Defaults to the numeric ids.
+ * @param {boolean} [options.defaults=false] Also sets default values on the resulting object
+ * @returns {Object.} JSON object
+ */
+MessagePrototype.asJSON = function asJSON(options) {
+ if (!options)
+ options = {};
+ var fields = this.$type.fields,
+ json = {};
+ var keys;
+ if (options.defaults) {
+ keys = [];
+ for (var k in this) // eslint-disable-line guard-for-in
+ keys.push(k);
+ } else
+ keys = Object.keys(this);
+ for (var i = 0, key; i < keys.length; ++i) {
+ var field = fields[key = keys[i]],
+ value = this[key];
+ if (field) {
+ if (field.repeated) {
+ if (value && value.length) {
+ var array = new Array(value.length);
+ for (var j = 0, l = value.length; j < l; ++j)
+ array[j] = field.jsonConvert(value[j], options);
+ json[key] = array;
+ }
+ } else
+ json[key] = field.jsonConvert(value, options);
+ } else if (!options.fieldsOnly)
+ json[key] = value;
+ }
+ return json;
+};
+
+/**
+ * Reference to the reflected type.
+ * @name Message.$type
+ * @type {Type}
+ * @readonly
+ */
+
+/**
+ * Reference to the reflected type.
+ * @name Message#$type
+ * @type {Type}
+ * @readonly
+ */
+
+/**
+ * Encodes a message of this type.
+ * @param {Message|Object} message Message to encode
+ * @param {Writer} [writer] Writer to use
+ * @returns {Writer} Writer
+ */
+Message.encode = function encode(message, writer) {
+ return this.$type.encode(message, writer);
+};
+
+/**
+ * Encodes a message of this type preceeded by its length as a varint.
+ * @param {Message|Object} message Message to encode
+ * @param {Writer} [writer] Writer to use
+ * @returns {Writer} Writer
+ */
+Message.encodeDelimited = function encodeDelimited(message, writer) {
+ return this.$type.encodeDelimited(message, writer);
+};
+
+/**
+ * Decodes a message of this type.
+ * @name Message.decode
+ * @function
+ * @param {Reader|Uint8Array} readerOrBuffer Reader or buffer to decode
+ * @returns {Message} Decoded message
+ */
+Message.decode = function decode(readerOrBuffer) {
+ return this.$type.decode(readerOrBuffer);
+};
+
+/**
+ * Decodes a message of this type preceeded by its length as a varint.
+ * @name Message.decodeDelimited
+ * @function
+ * @param {Reader|Uint8Array} readerOrBuffer Reader or buffer to decode
+ * @returns {Message} Decoded message
+ */
+Message.decodeDelimited = function decodeDelimited(readerOrBuffer) {
+ return this.$type.decodeDelimited(readerOrBuffer);
+};
+
+/**
+ * Verifies a message of this type.
+ * @name Message.verify
+ * @function
+ * @param {Message|Object} message Message or plain object to verify
+ * @returns {?string} `null` if valid, otherwise the reason why it is not
+ */
+Message.verify = function verify(message) {
+ return this.$type.verify(message);
+};
+
+},{}],12:[function(require,module,exports){
"use strict";
module.exports = Method;
-var ReflectionObject = require(13);
+var ReflectionObject = require(14);
/** @alias Method.prototype */
var MethodPrototype = ReflectionObject.extend(Method);
@@ -1562,7 +1641,7 @@ var Type = require(23),
var _TypeError = util._TypeError;
/**
- * Constructs a new service method.
+ * Constructs a new service method instance.
* @classdesc Reflected service method.
* @extends ReflectionObject
* @constructor
@@ -1685,17 +1764,17 @@ MethodPrototype.resolve = function resolve() {
return ReflectionObject.prototype.resolve.call(this);
};
-},{"13":13,"23":23,"25":25}],12:[function(require,module,exports){
+},{"14":14,"23":23,"25":25}],13:[function(require,module,exports){
"use strict";
module.exports = Namespace;
-var ReflectionObject = require(13);
+var ReflectionObject = require(14);
/** @alias Namespace.prototype */
var NamespacePrototype = ReflectionObject.extend(Namespace);
-var Enum = require(7),
+var Enum = require(8),
Type = require(23),
- Field = require(8),
+ Field = require(9),
Service = require(21),
util = require(25);
@@ -1705,7 +1784,7 @@ var nestedTypes = [ Enum, Type, Service, Field, Namespace ],
nestedError = "one of " + nestedTypes.map(function(ctor) { return ctor.name; }).join(', ');
/**
- * Constructs a new namespace.
+ * Constructs a new namespace instance.
* @classdesc Reflected namespace and base class of all reflection objects containing nested objects.
* @extends ReflectionObject
* @constructor
@@ -1956,7 +2035,7 @@ NamespacePrototype.lookup = function lookup(path, parentAlreadyChecked) {
return this.parent.lookup(path);
};
-},{"13":13,"21":21,"23":23,"25":25,"7":7,"8":8}],13:[function(require,module,exports){
+},{"14":14,"21":21,"23":23,"25":25,"8":8,"9":9}],14:[function(require,module,exports){
"use strict";
module.exports = ReflectionObject;
@@ -1968,7 +2047,7 @@ var Root = require(18),
var _TypeError = util._TypeError;
/**
- * Constructs a new reflection object.
+ * Constructs a new reflection object instance.
* @classdesc Base class of all reflection objects.
* @constructor
* @param {string} name Object name
@@ -2049,14 +2128,14 @@ util.props(ReflectionObjectPrototype, {
* Lets the specified constructor extend this class.
* @memberof ReflectionObject
* @param {*} constructor Extending constructor
- * @returns {Object} Prototype
+ * @returns {Object} Constructor prototype
* @this ReflectionObject
*/
function extend(constructor) {
- var proto = constructor.prototype = Object.create(this.prototype);
- proto.constructor = constructor;
+ var prototype = constructor.prototype = Object.create(this.prototype);
+ prototype.constructor = constructor;
constructor.extend = extend;
- return proto;
+ return prototype;
}
/**
@@ -2155,21 +2234,21 @@ ReflectionObjectPrototype.toString = function toString() {
return this.constructor.name + " " + this.getFullName();
};
-},{"18":18,"25":25}],14:[function(require,module,exports){
+},{"18":18,"25":25}],15:[function(require,module,exports){
"use strict";
module.exports = OneOf;
-var ReflectionObject = require(13);
+var ReflectionObject = require(14);
/** @alias OneOf.prototype */
var OneOfPrototype = ReflectionObject.extend(OneOf);
-var Field = require(8),
+var Field = require(9),
util = require(25);
var _TypeError = util._TypeError;
/**
- * Constructs a new oneof.
+ * Constructs a new oneof instance.
* @classdesc Reflected oneof.
* @extends ReflectionObject
* @constructor
@@ -2308,19 +2387,19 @@ OneOfPrototype.onRemove = function onRemove(parent) {
ReflectionObject.prototype.onRemove.call(this, parent);
};
-},{"13":13,"25":25,"8":8}],15:[function(require,module,exports){
+},{"14":14,"25":25,"9":9}],16:[function(require,module,exports){
"use strict";
module.exports = parse;
var tokenize = require(22),
Root = require(18),
Type = require(23),
- Field = require(8),
+ Field = require(9),
MapField = require(10),
- OneOf = require(14),
- Enum = require(7),
+ OneOf = require(15),
+ Enum = require(8),
Service = require(21),
- Method = require(11),
+ Method = require(12),
types = require(24),
util = require(25);
var camelCase = util.camelCase;
@@ -2864,73 +2943,7 @@ function parse(source, root) {
};
}
-},{"10":10,"11":11,"14":14,"18":18,"21":21,"22":22,"23":23,"24":24,"25":25,"7":7,"8":8}],16:[function(require,module,exports){
-"use strict";
-module.exports = Prototype;
-
-/**
- * Constructs a new prototype.
- * This method should be called from your custom constructors, i.e. `Prototype.call(this, properties)`.
- * @classdesc Runtime message prototype ready to be extended by custom classes or generated code.
- * @constructor
- * @param {Object.} [properties] Properties to set
- * @abstract
- * @see {@link inherits}
- * @see {@link Class}
- */
-function Prototype(properties) {
- if (properties) {
- var keys = Object.keys(properties);
- for (var i = 0; i < keys.length; ++i)
- this[keys[i]] = properties[keys[i]];
- }
-}
-
-/**
- * Converts a runtime message to a JSON object.
- * @param {Object.} [options] Conversion options
- * @param {boolean} [options.fieldsOnly=false] Converts only properties that reference a field
- * @param {*} [options.long] Long conversion type. Only relevant with a long library.
- * Valid values are `String` and `Number` (the global types).
- * Defaults to a possibly unsafe number without, and a `Long` with a long library.
- * @param {*} [options.enum=Number] Enum value conversion type.
- * Valid values are `String` and `Number` (the global types).
- * Defaults to the numeric ids.
- * @param {boolean} [options.defaults=false] Also sets default values on the resulting object
- * @returns {Object.} JSON object
- */
-Prototype.prototype.asJSON = function asJSON(options) {
- if (!options)
- options = {};
- var fields = this.constructor.$type.fields,
- json = {};
- var keys;
- if (options.defaults) {
- keys = [];
- for (var k in this) // eslint-disable-line guard-for-in
- keys.push(k);
- } else
- keys = Object.keys(this);
- for (var i = 0, key; i < keys.length; ++i) {
- var field = fields[key = keys[i]],
- value = this[key];
- if (field) {
- if (field.repeated) {
- if (value && value.length) {
- var array = new Array(value.length);
- for (var j = 0, l = value.length; j < l; ++j)
- array[j] = field.jsonConvert(value[j], options);
- json[key] = array;
- }
- } else
- json[key] = field.jsonConvert(value, options);
- } else if (!options.fieldsOnly)
- json[key] = value;
- }
- return json;
-};
-
-},{}],17:[function(require,module,exports){
+},{"10":10,"12":12,"15":15,"18":18,"21":21,"22":22,"23":23,"24":24,"25":25,"8":8,"9":9}],17:[function(require,module,exports){
"use strict";
module.exports = Reader;
@@ -2969,7 +2982,7 @@ function configure() {
Reader.configure = configure;
/**
- * Constructs a new reader using the specified buffer.
+ * Constructs a new reader instance using the specified buffer.
* @classdesc Wire format reader using `Uint8Array` if available, otherwise `Array`.
* @constructor
* @param {Uint8Array} buffer Buffer to read from
@@ -3488,7 +3501,7 @@ var initBufferReader = function() {
};
/**
- * Constructs a new buffer reader.
+ * Constructs a new buffer reader instance.
* @classdesc Wire format reader using node buffers.
* @extends Reader
* @constructor
@@ -3567,16 +3580,16 @@ configure();
"use strict";
module.exports = Root;
-var Namespace = require(12);
+var Namespace = require(13);
/** @alias Root.prototype */
var RootPrototype = Namespace.extend(Root);
-var Field = require(8),
+var Field = require(9),
util = require(25),
- common = require(6);
+ common = require(7);
/**
- * Constructs a new root namespace.
+ * Constructs a new root namespace instance.
* @classdesc Root namespace wrapping all types, enums, services, sub-namespaces etc. that belong together.
* @extends Namespace
* @constructor
@@ -3621,7 +3634,7 @@ Root.fromJSON = function fromJSON(json, root) {
RootPrototype.resolvePath = util.resolvePath;
// A symbol-like function to safely signal synchronous loading
-function SYNC() {}
+function SYNC() {} // eslint-disable-line no-empty-function
/**
* Loads one or multiple .proto or preprocessed .json files into this root namespace and calls the callback.
@@ -3653,7 +3666,7 @@ RootPrototype.load = function load(filename, callback) {
if (!util.isString(source))
self.setOptions(source.options).addJSON(source.nested);
else {
- var parsed = require(15)(source, self);
+ var parsed = require(16)(source, self);
if (parsed.imports)
parsed.imports.forEach(function(name) {
fetch(self.resolvePath(filename, name));
@@ -3844,11 +3857,11 @@ RootPrototype.toString = function toString() {
return this.constructor.name;
};
-},{"12":12,"15":15,"25":25,"6":6,"8":8}],19:[function(require,module,exports){
+},{"13":13,"16":16,"25":25,"7":7,"9":9}],19:[function(require,module,exports){
"use strict";
/**
- * RPC helpers.
+ * Streaming RPC helpers.
* @namespace
*/
var rpc = exports;
@@ -3862,7 +3875,7 @@ module.exports = Service;
var EventEmitter = require(26);
/**
- * Constructs a new RPC service.
+ * Constructs a new RPC service instance.
* @classdesc An RPC service as returned by {@link Service#create}.
* @memberof rpc
* @extends util.EventEmitter
@@ -3902,18 +3915,18 @@ ServicePrototype.end = function end(endedByRPC) {
"use strict";
module.exports = Service;
-var Namespace = require(12);
+var Namespace = require(13);
/** @alias Namespace.prototype */
var NamespacePrototype = Namespace.prototype;
/** @alias Service.prototype */
var ServicePrototype = Namespace.extend(Service);
-var Method = require(11),
+var Method = require(12),
util = require(25),
rpc = require(19);
/**
- * Constructs a new service.
+ * Constructs a new service instance.
* @classdesc Reflected service.
* @extends Namespace
* @constructor
@@ -4100,7 +4113,7 @@ ServicePrototype.create = function create(rpcImpl, requestDelimited, responseDel
return rpcService;
};
-},{"11":11,"12":12,"19":19,"25":25}],22:[function(require,module,exports){
+},{"12":12,"13":13,"19":19,"25":25}],22:[function(require,module,exports){
"use strict";
module.exports = tokenize;
@@ -4311,25 +4324,25 @@ function tokenize(source) {
"use strict";
module.exports = Type;
-var Namespace = require(12);
+var Namespace = require(13);
/** @alias Namespace.prototype */
var NamespacePrototype = Namespace.prototype;
/** @alias Type.prototype */
var TypePrototype = Namespace.extend(Type);
-var Enum = require(7),
- OneOf = require(14),
- Field = require(8),
+var Enum = require(8),
+ OneOf = require(15),
+ Field = require(9),
Service = require(21),
- Prototype = require(16),
+ Class = require(2),
+ Message = require(11),
Reader = require(17),
Writer = require(30),
- inherits = require(9),
util = require(25),
- codegen = require(2);
+ codegen = require(3);
/**
- * Constructs a new message type.
+ * Constructs a new reflected message type instance.
* @classdesc Reflected message type.
* @extends Namespace
* @constructor
@@ -4463,28 +4476,15 @@ util.props(TypePrototype, {
/**
* The registered constructor, if any registered, otherwise a generic constructor.
* @name Type#ctor
- * @type {Prototype}
+ * @type {Class}
*/
ctor: {
get: function getCtor() {
- if (this._ctor)
- return this._ctor;
- var ctor;
- if (codegen.supported)
- ctor = codegen("p")("P.call(this,p)").eof(this.getFullName() + "$ctor", {
- P: Prototype
- });
- else
- ctor = function GenericMessage(properties) {
- Prototype.call(this, properties);
- };
- ctor.prototype = inherits(ctor, this);
- this._ctor = ctor;
- return ctor;
+ return this._ctor || (this._ctor = Class.create(this).constructor);
},
set: function setCtor(ctor) {
- if (ctor && !(ctor.prototype instanceof Prototype))
- throw util._TypeError("ctor", "a constructor inheriting from Prototype");
+ if (ctor && !(ctor.prototype instanceof Message))
+ throw util._TypeError("ctor", "a constructor inheriting from Message");
this._ctor = ctor;
}
}
@@ -4634,27 +4634,15 @@ TypePrototype.remove = function remove(object) {
/**
* Creates a new message of this type using the specified properties.
* @param {Object|*} [properties] Properties to set
- * @param {*} [ctor] Constructor to use.
- * Defaults to use the internal constuctor.
- * @returns {Prototype} Message instance
- */
-TypePrototype.create = function create(properties, ctor) {
- if (!properties || typeof properties === 'function') {
- ctor = properties;
- properties = undefined;
- } else if (properties /* already */ instanceof Prototype)
- return properties;
- if (ctor) {
- if (!(ctor.prototype instanceof Prototype))
- throw util._TypeError("ctor", "a constructor inheriting from Prototype");
- } else
- ctor = this.getCtor();
- return new ctor(properties);
+ * @returns {Message} Runtime message
+ */
+TypePrototype.create = function create(properties) {
+ return new (this.getCtor())(properties);
};
/**
* Encodes a message of this type.
- * @param {Prototype|Object} message Message instance or plain object
+ * @param {Message|Object} message Message instance or plain object
* @param {Writer} [writer] Writer to encode to
* @returns {Writer} writer
*/
@@ -4671,7 +4659,7 @@ TypePrototype.encode = function encode(message, writer) {
/**
* Encodes a message of this type preceeded by its byte length as a varint.
- * @param {Prototype|Object} message Message instance or plain object
+ * @param {Message|Object} message Message instance or plain object
* @param {Writer} [writer] Writer to encode to
* @returns {Writer} writer
*/
@@ -4683,7 +4671,7 @@ TypePrototype.encodeDelimited = function encodeDelimited(message, writer) {
* Decodes a message of this type.
* @param {Reader|Uint8Array} readerOrBuffer Reader or buffer to decode from
* @param {number} [length] Length of the message, if known beforehand
- * @returns {Prototype} Decoded message
+ * @returns {Message} Decoded message
*/
TypePrototype.decode = function decode(readerOrBuffer, length) {
return (this.decode = codegen.supported
@@ -4699,7 +4687,7 @@ TypePrototype.decode = function decode(readerOrBuffer, length) {
/**
* Decodes a message of this type preceeded by its byte length as a varint.
* @param {Reader|Uint8Array} readerOrBuffer Reader or buffer to decode from
- * @returns {Prototype} Decoded message
+ * @returns {Message} Decoded message
*/
TypePrototype.decodeDelimited = function decodeDelimited(readerOrBuffer) {
readerOrBuffer = readerOrBuffer instanceof Reader ? readerOrBuffer : Reader.create(readerOrBuffer);
@@ -4708,7 +4696,7 @@ TypePrototype.decodeDelimited = function decodeDelimited(readerOrBuffer) {
/**
* Verifies that enum values are valid and that any required fields are present.
- * @param {Prototype|Object} message Message to verify
+ * @param {Message|Object} message Message to verify
* @returns {?string} `null` if valid, otherwise the reason why it is not
*/
TypePrototype.verify = function verify(message) {
@@ -4720,7 +4708,7 @@ TypePrototype.verify = function verify(message) {
).call(this, message);
};
-},{"12":12,"14":14,"16":16,"17":17,"2":2,"21":21,"25":25,"30":30,"7":7,"8":8,"9":9}],24:[function(require,module,exports){
+},{"11":11,"13":13,"15":15,"17":17,"2":2,"21":21,"25":25,"3":3,"30":30,"8":8,"9":9}],24:[function(require,module,exports){
"use strict";
/**
@@ -4855,7 +4843,7 @@ types.packed = bake([
"use strict";
/**
- * Utility functions.
+ * Various utility functions.
* @namespace
*/
var util = exports;
@@ -5137,7 +5125,7 @@ util.merge(util, require(29));
module.exports = EventEmitter;
/**
- * Constructs a new event emitter.
+ * Constructs a new event emitter instance.
* @classdesc A minimal event emitter.
* @memberof util
* @constructor
@@ -5582,7 +5570,7 @@ var LongBits = util.LongBits,
ArrayImpl = typeof Uint8Array !== 'undefined' ? Uint8Array : Array;
/**
- * Constructs a new writer operation.
+ * Constructs a new writer operation instance.
* @classdesc Scheduled writer operation.
* @memberof Writer
* @constructor
@@ -5624,7 +5612,7 @@ Writer.Op = Op;
function noop() {} // eslint-disable-line no-empty-function
/**
- * Constructs a new writer state.
+ * Constructs a new writer state instance.
* @classdesc Copied writer state.
* @memberof Writer
* @constructor
@@ -5663,7 +5651,7 @@ function State(writer, next) {
Writer.State = State;
/**
- * Constructs a new writer.
+ * Constructs a new writer instance.
* @classdesc Wire format writer using `Uint8Array` if available, otherwise `Array`.
* @constructor
*/
@@ -6118,7 +6106,7 @@ WriterPrototype.finish = function finish() {
};
/**
- * Constructs a new buffer writer.
+ * Constructs a new buffer writer instance.
* @classdesc Wire format writer using node buffers.
* @exports BufferWriter
* @extends Writer
@@ -6263,7 +6251,7 @@ function load(filename, root, callback) {
protobuf.load = load;
/**
- * Synchronously loads one or multiple .proto or preprocessed .json files into a common root namespace.
+ * Synchronously loads one or multiple .proto or preprocessed .json files into a common root namespace (node only).
* @param {string|string[]} filename One or multiple files to load
* @param {Root} [root] Root namespace, defaults to create a new one if omitted.
* @returns {Root} Root namespace
@@ -6279,34 +6267,34 @@ protobuf.loadSync = loadSync;
// Parser
protobuf.tokenize = require(22);
-protobuf.parse = require(15);
+protobuf.parse = require(16);
// Serialization
protobuf.Writer = require(30);
protobuf.BufferWriter = protobuf.Writer.BufferWriter;
protobuf.Reader = require(17);
protobuf.BufferReader = protobuf.Reader.BufferReader;
-protobuf.codegen = require(2);
+protobuf.codegen = require(3);
// Reflection
-protobuf.ReflectionObject = require(13);
-protobuf.Namespace = require(12);
+protobuf.ReflectionObject = require(14);
+protobuf.Namespace = require(13);
protobuf.Root = require(18);
-protobuf.Enum = require(7);
+protobuf.Enum = require(8);
protobuf.Type = require(23);
-protobuf.Field = require(8);
-protobuf.OneOf = require(14);
+protobuf.Field = require(9);
+protobuf.OneOf = require(15);
protobuf.MapField = require(10);
protobuf.Service = require(21);
-protobuf.Method = require(11);
+protobuf.Method = require(12);
// Runtime
-protobuf.Prototype = require(16);
-protobuf.inherits = require(9);
+protobuf.Class = require(2);
+protobuf.Message = require(11);
// Utility
protobuf.types = require(24);
-protobuf.common = require(6);
+protobuf.common = require(7);
protobuf.rpc = require(19);
protobuf.util = require(25);
@@ -6322,7 +6310,7 @@ if (typeof define === 'function' && define.amd)
}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {})
-},{"10":10,"11":11,"12":12,"13":13,"14":14,"15":15,"16":16,"17":17,"18":18,"19":19,"2":2,"21":21,"22":22,"23":23,"24":24,"25":25,"30":30,"6":6,"7":7,"8":8,"9":9}]},{},[31])
+},{"10":10,"11":11,"12":12,"13":13,"14":14,"15":15,"16":16,"17":17,"18":18,"19":19,"2":2,"21":21,"22":22,"23":23,"24":24,"25":25,"3":3,"30":30,"7":7,"8":8,"9":9}]},{},[31])
//# sourceMappingURL=protobuf.js.map
diff --git a/dist/protobuf.js.map b/dist/protobuf.js.map
index 4aaee6726..235a43c1e 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/codegen.js","src/codegen/decode.js","src/codegen/encode.js","src/codegen/verify.js","src/common.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/rpc.js","src/rpc/service.js","src/service.js","src/tokenize.js","src/type.js","src/types.js","src/util.js","src/util/eventemitter.js","src/util/longbits.js","src/util/pool.js","src/util/runtime.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;;ACrHA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AChLA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC7LA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC3FA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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;;AC3IA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AChRA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACnMA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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;AACA;AACA;AACA;AACA;AACA;AACA;;ACvJA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC1iBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AChEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACvnBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACvRA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACTA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACzCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACxMA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC3ZA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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;;ACvRA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC5EA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACpMA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AC9BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;AC7HA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;ACpoBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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\nmodule.exports = codegen;\r\n\r\nvar util = require(25);\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 * A closure for generating functions programmatically.\r\n * @namespace\r\n * @function\r\n * @param {...string} params Function parameter names\r\n * @returns {CodegenInstance} Codegen instance\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() {\r\n var args = Array.prototype.slice.call(arguments),\r\n src = ['\\t\"use strict\"'],\r\n indent = 1,\r\n inCase = false;\r\n\r\n /**\r\n * A codegen instance as returned by {@link codegen}, that also is a {@link util.sprintf|sprintf}-like appender function.\r\n * @typedef CodegenInstance\r\n * @type {function}\r\n * @param {string} format Format string\r\n * @param {...*} args Replacements\r\n * @returns {CodegenInstance} Itself\r\n * @property {function(string=):string} str Stringifies the so far generated function source.\r\n * @property {function(string=, Object=):function} eof Ends generation and builds the function whilst applying a scope.\r\n */\r\n /**/\r\n function gen() {\r\n var line = util.sprintf.apply(null, arguments);\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 /**\r\n * Stringifies the so far generated function source.\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 * @inner\r\n */\r\n 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 gen.str = str;\r\n\r\n /**\r\n * Ends generation and builds the function whilst applying a scope.\r\n * @param {string} [name] Function name, defaults to generate an anonymous function\r\n * @param {Object} [scope] Function scope\r\n * @returns {function} The generated function, with scope applied if specified\r\n * @inner\r\n */\r\n function eof(name, scope) {\r\n if (typeof name === 'object') {\r\n scope = name;\r\n name = undefined;\r\n }\r\n var source = gen.str(name);\r\n if (codegen.verbose)\r\n console.log(\"--- codegen ---\\n\" + source.replace(/^/mg, \"> \").replace(/\\t/g, \" \")); // eslint-disable-line no-console\r\n var keys = Object.keys(scope || (scope = {}));\r\n return Function.apply(null, keys.concat(\"return \" + source)).apply(null, keys.map(function(key) { return scope[key]; })); // eslint-disable-line no-new-func\r\n // ^ Creates a wrapper function with the scoped variable names as its parameters,\r\n // calls it with the respective scoped variable values ^\r\n // and returns our brand-new properly scoped function.\r\n //\r\n // This works because \"Invoking the Function constructor as a function (without using the\r\n // new operator) has the same effect as invoking it as a constructor.\"\r\n // https://developer.mozilla.org/de/docs/Web/JavaScript/Reference/Global_Objects/Function\r\n }\r\n\r\n gen.eof = eof;\r\n\r\n return gen;\r\n}\r\n\r\ncodegen.supported = false; try { codegen.supported = codegen(\"a\",\"b\")(\"return a-b\").eof()(2,1) === 1; } catch (e) {} // eslint-disable-line no-empty\r\ncodegen.verbose = false;\r\n\r\ncodegen.encode = require(4);\r\ncodegen.decode = require(3);\r\ncodegen.verify = require(5);\r\n","\"use strict\";\r\n\r\n/**\r\n * Wire format decoder using code generation on top of reflection that also provides a fallback.\r\n * @exports codegen.decode\r\n * @namespace\r\n */\r\nvar decode = exports;\r\n\r\nvar Enum = require(7),\r\n Reader = require(17),\r\n types = require(24),\r\n util = require(25),\r\n codegen = require(2);\r\n\r\n/**\r\n * Decodes a message of `this` message's 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} Populated runtime message\r\n * @this Type\r\n */\r\ndecode.fallback = function decode_fallback(readerOrBuffer, length) {\r\n /* eslint-disable no-invalid-this, block-scoped-var, no-redeclare */\r\n var fields = this.getFieldsById(),\r\n reader = readerOrBuffer instanceof Reader ? readerOrBuffer : Reader.create(readerOrBuffer),\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].length ? 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 the specified message type, with an identical signature to {@link codegen.decode.fallback}.\r\n * @param {Type} mtype Message type\r\n * @returns {CodegenInstance} {@link codegen|Codegen} instance\r\n */\r\ndecode.generate = function decode_generate(mtype) {\r\n /* eslint-disable no-unexpected-multiline */\r\n var fields = mtype.getFieldsArray(); \r\n var gen = codegen(\"r\", \"l\")\r\n\r\n (\"r instanceof Reader||(r=Reader.create(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\nutil.props(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: 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\n * Gets this enum's values by id. This is an alias of {@link Enum#valuesById}'s getter for use within non-ES5 environments.\r\n * @name Enum#getValuesById\r\n * @function\r\n * @returns {Object.}\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(13);\r\n/** @alias Field.prototype */\r\nvar FieldPrototype = ReflectionObject.extend(Field);\r\n\r\nvar Type = require(23),\r\n Enum = require(7),\r\n MapField = require(10),\r\n types = require(24),\r\n util = require(25);\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|Object} [rule=\"optional\"] Field rule\r\n * @param {string|Object} [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\nutil.props(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 * Determines whether this field is packed. This is an alias of {@link Field#packed}'s getter for use within non-ES5 environments.\r\n * @name Field#isPacked\r\n * @function\r\n * @returns {boolean}\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(16),\r\n Type = require(23),\r\n util = require(25);\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 {*} clazz Inheriting class constructor\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 {Writer} Writer\r\n */\r\n encode: {\r\n value: function encode(message, writer) {\r\n return this.$type.encode(message, writer);\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 {Writer} Writer\r\n */\r\n encodeDelimited: {\r\n value: function encodeDelimited(message, writer) {\r\n return this.$type.encodeDelimited(message, writer);\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 util.props(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 // objects on the prototype must be immmutable. users must assign a new object instance and\r\n // cannot use Array#push on empty arrays on the prototype for example, as this would modify\r\n // the value on the prototype for ALL messages of this type. Hence, these objects are frozen.\r\n prototype[field.name] = Array.isArray(field.defaultValue)\r\n ? util.emptyArray\r\n : util.isObject(field.defaultValue)\r\n ? util.emptyObject\r\n : 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 util.prop(prototype, oneof.resolve().name, {\r\n get: function getVirtual() {\r\n // > If the parser encounters multiple members of the same oneof on the wire, only the last member seen is used in the parsed message.\r\n var keys = Object.keys(this);\r\n for (var i = keys.length - 1; i > -1; --i)\r\n if (oneof.oneof.indexOf(keys[i]) > -1)\r\n return keys[i];\r\n return undefined;\r\n },\r\n set: function setVirtual(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 util.props(prototype, prototypeProperties);\r\n return prototype;\r\n};\r\n","\"use strict\";\r\nmodule.exports = MapField;\r\n\r\nvar Field = require(8);\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(7),\r\n types = require(24),\r\n util = require(25);\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(13);\r\n/** @alias Method.prototype */\r\nvar MethodPrototype = ReflectionObject.extend(Method);\r\n\r\nvar Type = require(23),\r\n util = require(25);\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|Object} [requestStream] Whether the request is streamed\r\n * @param {boolean|Object} [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 (type && !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(13);\r\n/** @alias Namespace.prototype */\r\nvar NamespacePrototype = ReflectionObject.extend(Namespace);\r\n\r\nvar Enum = require(7),\r\n Type = require(23),\r\n Field = require(8),\r\n Service = require(21),\r\n util = require(25);\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\nutil.props(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: 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(18),\r\n util = require(25);\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\nutil.props(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: 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 {*} 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(13);\r\n/** @alias OneOf.prototype */\r\nvar OneOfPrototype = ReflectionObject.extend(OneOf);\r\n\r\nvar Field = require(8),\r\n util = require(25);\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[]|Object} [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 * Upper cased name for getter/setter calls.\r\n * @type {string}\r\n */\r\n this.ucName = this.name.substring(0, 1).toUpperCase() + this.name.substring(1);\r\n\r\n /**\r\n * Field names that belong to this oneof.\r\n * @type {string[]}\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 {Field[]}\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(22),\r\n Root = require(18),\r\n Type = require(23),\r\n Field = require(8),\r\n MapField = require(10),\r\n OneOf = require(14),\r\n Enum = require(7),\r\n Service = require(21),\r\n Method = require(11),\r\n types = require(24),\r\n util = require(25);\r\nvar camelCase = util.camelCase;\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\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 parent.values[name] = value;\r\n parseInlineOptions({}); // skips enum value options\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 } 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 * 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 * @abstract\r\n * @see {@link inherits}\r\n * @see {@link Class}\r\n */\r\nfunction Prototype(properties) {\r\n if (properties) {\r\n var keys = Object.keys(properties);\r\n for (var i = 0; i < keys.length; ++i)\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 {*} [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 {*} [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 * @param {boolean} [options.defaults=false] Also sets default values on the resulting object\r\n * @returns {Object.} JSON object\r\n */\r\nPrototype.prototype.asJSON = function asJSON(options) {\r\n if (!options)\r\n options = {};\r\n var fields = this.constructor.$type.fields,\r\n json = {};\r\n var keys;\r\n if (options.defaults) {\r\n keys = [];\r\n for (var k in this) // eslint-disable-line guard-for-in\r\n keys.push(k);\r\n } else\r\n 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 (!options.fieldsOnly)\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(29),\r\n ieee754 = require(1);\r\nvar LongBits = util.LongBits,\r\n ArrayImpl = typeof Uint8Array !== 'undefined' ? Uint8Array : Array;\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 * Configures the Reader interface according to the environment.\r\n * @memberof Reader\r\n * @returns {undefined}\r\n */\r\nfunction configure() {\r\n if (util.Long) {\r\n ReaderPrototype.int64 = read_int64_long;\r\n ReaderPrototype.uint64 = read_uint64_long;\r\n ReaderPrototype.sint64 = read_sint64_long;\r\n ReaderPrototype.fixed64 = read_fixed64_long;\r\n ReaderPrototype.sfixed64 = read_sfixed64_long;\r\n } else {\r\n ReaderPrototype.int64 = read_int64_number;\r\n ReaderPrototype.uint64 = read_uint64_number;\r\n ReaderPrototype.sint64 = read_sint64_number;\r\n ReaderPrototype.fixed64 = read_fixed64_number;\r\n ReaderPrototype.sfixed64 = read_sfixed64_number;\r\n }\r\n}\r\n\r\nReader.configure = configure;\r\n\r\n/**\r\n * Constructs a new reader using 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 \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/**\r\n * Creates a new reader using the specified buffer.\r\n * @param {Uint8Array} buffer Buffer to read from\r\n * @returns {BufferReader|Reader} A {@link BufferReader} if `buffer` is a Buffer, otherwise a {@link Reader}\r\n */\r\nReader.create = function create(buffer) {\r\n return new (util.Buffer && util.Buffer.isBuffer(buffer) && BufferReader || Reader)(buffer);\r\n};\r\n\r\n/** @alias Reader.prototype */\r\nvar ReaderPrototype = Reader.prototype;\r\n\r\nReaderPrototype._slice = ArrayImpl.prototype.subarray || ArrayImpl.prototype.slice;\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 // 1 byte\r\n var octet = this.buf[this.pos++],\r\n value = octet & 127;\r\n if (octet > 127) { // false if octet is undefined (pos >= len)\r\n // 2 bytes\r\n octet = this.buf[this.pos++];\r\n value |= (octet & 127) << 7;\r\n if (octet > 127) {\r\n // 3 bytes\r\n octet = this.buf[this.pos++];\r\n value |= (octet & 127) << 14;\r\n if (octet > 127) {\r\n // 4 bytes\r\n octet = this.buf[this.pos++];\r\n value |= (octet & 127) << 21;\r\n if (octet > 127) {\r\n // 5 bytes\r\n octet = this.buf[this.pos++];\r\n value |= octet << 28;\r\n if (octet > 127) {\r\n // 6..10 bytes (sign extended)\r\n this.pos += 5;\r\n }\r\n }\r\n }\r\n }\r\n }\r\n if (this.pos > this.len) {\r\n this.pos = this.len;\r\n throw indexOutOfRange(this);\r\n }\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/* eslint-disable no-invalid-this */\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();\r\n}\r\n\r\nfunction read_int64_number() {\r\n return readLongVarint.call(this).toNumber();\r\n}\r\n\r\nfunction read_uint64_long() {\r\n return readLongVarint.call(this).toLong(true);\r\n}\r\n\r\nfunction read_uint64_number() {\r\n return readLongVarint.call(this).toNumber(true);\r\n}\r\n\r\nfunction read_sint64_long() {\r\n return readLongVarint.call(this).zzDecode().toLong();\r\n}\r\n\r\nfunction read_sint64_number() {\r\n return readLongVarint.call(this).zzDecode().toNumber();\r\n}\r\n\r\n/* eslint-enable no-invalid-this */\r\n\r\n/**\r\n * Reads a varint as a signed 64 bit value.\r\n * @name Reader#int64\r\n * @function\r\n * @returns {Long|number} Value read\r\n */\r\n\r\n/**\r\n * Reads a varint as an unsigned 64 bit value.\r\n * @name Reader#uint64\r\n * @function\r\n * @returns {Long|number} Value read\r\n */\r\n\r\n/**\r\n * Reads a zig-zag encoded varint as a signed 64 bit value.\r\n * @name Reader#sint64\r\n * @function\r\n * @returns {Long|number} Value read\r\n */\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/* eslint-disable no-invalid-this */\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);\r\n}\r\n\r\nfunction read_fixed64_number() {\r\n return readLongFixed.call(this).toNumber(true);\r\n}\r\n\r\nfunction read_sfixed64_long() {\r\n return readLongFixed.call(this).zzDecode().toLong();\r\n}\r\n\r\nfunction read_sfixed64_number() {\r\n return readLongFixed.call(this).zzDecode().toNumber();\r\n}\r\n\r\n/* eslint-enable no-invalid-this */\r\n\r\n/**\r\n * Reads fixed 64 bits.\r\n * @name Reader#fixed64\r\n * @function\r\n * @returns {Long|number} Value read\r\n */\r\n\r\n/**\r\n * Reads zig-zag encoded fixed 64 bits.\r\n * @name Reader#sfixed64\r\n * @function\r\n * @returns {Long|number} Value read\r\n */\r\n\r\nvar readFloat = typeof Float32Array !== 'undefined'\r\n ? (function() { // eslint-disable-line wrap-iife\r\n var f32 = new Float32Array(1),\r\n f8b = new Uint8Array(f32.buffer);\r\n f32[0] = -0;\r\n return f8b[3] // already le?\r\n ? function readFloat_f32(buf, pos) {\r\n f8b[0] = buf[pos++];\r\n f8b[1] = buf[pos++];\r\n f8b[2] = buf[pos++];\r\n f8b[3] = buf[pos ];\r\n return f32[0];\r\n }\r\n : function readFloat_f32_le(buf, pos) {\r\n f8b[3] = buf[pos++];\r\n f8b[2] = buf[pos++];\r\n f8b[1] = buf[pos++];\r\n f8b[0] = buf[pos ];\r\n return f32[0];\r\n };\r\n })()\r\n : function readFloat_ieee754(buf, pos) {\r\n return ieee754.read(buf, pos, false, 23, 4);\r\n };\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 = readFloat(this.buf, this.pos);\r\n this.pos += 4;\r\n return value;\r\n};\r\n\r\nvar readDouble = typeof Float64Array !== 'undefined'\r\n ? (function() { // eslint-disable-line wrap-iife\r\n var f64 = new Float64Array(1),\r\n f8b = new Uint8Array(f64.buffer);\r\n f64[0] = -0;\r\n return f8b[7] // already le?\r\n ? function readDouble_f64(buf, pos) {\r\n f8b[0] = buf[pos++];\r\n f8b[1] = buf[pos++];\r\n f8b[2] = buf[pos++];\r\n f8b[3] = buf[pos++];\r\n f8b[4] = buf[pos++];\r\n f8b[5] = buf[pos++];\r\n f8b[6] = buf[pos++];\r\n f8b[7] = buf[pos ];\r\n return f64[0];\r\n }\r\n : function readDouble_f64_le(buf, pos) {\r\n f8b[7] = buf[pos++];\r\n f8b[6] = buf[pos++];\r\n f8b[5] = buf[pos++];\r\n f8b[4] = buf[pos++];\r\n f8b[3] = buf[pos++];\r\n f8b[2] = buf[pos++];\r\n f8b[1] = buf[pos++];\r\n f8b[0] = buf[pos ];\r\n return f64[0];\r\n };\r\n })()\r\n : function readDouble_ieee754(buf, pos) {\r\n return ieee754.read(buf, pos, false, 52, 8);\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 = readDouble(this.buf, this.pos);\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 readStringBuffer = util.Buffer.prototype.utf8Slice // around forever, but not present in browser buffer\r\n ? readStringBuffer_utf8Slice\r\n : readStringBuffer_toString;\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\nif (typeof Float32Array === 'undefined') // f32 is faster (node 6.9.1)\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\nif (typeof Float64Array === 'undefined') // f64 is faster (node 6.9.1)\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\nvar readStringBuffer;\r\n\r\nfunction readStringBuffer_utf8Slice(buf, start, end) {\r\n return buf.utf8Slice(start, end); // fastest\r\n}\r\n\r\nfunction readStringBuffer_toString(buf, start, end) {\r\n return buf.toString(\"utf8\", start, end); // 2nd, again assertions\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 readStringBuffer(this.buf, 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\r\nconfigure();\r\n","\"use strict\";\r\nmodule.exports = Root;\r\n\r\nvar Namespace = require(12);\r\n/** @alias Root.prototype */\r\nvar RootPrototype = Namespace.extend(Root);\r\n\r\nvar Field = require(8),\r\n util = require(25),\r\n common = require(6);\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// A symbol-like function to safely signal synchronous loading\r\nfunction SYNC() {}\r\n\r\n/**\r\n * Loads one or multiple .proto or preprocessed .json files into this root namespace and calls the callback.\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 {undefined}\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 var sync = callback === SYNC; // undocumented\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(15)(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 (!sync && !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 if (sync)\r\n process(filename, common[filename]);\r\n else {\r\n ++queued;\r\n setTimeout(function() {\r\n --queued;\r\n process(filename, common[filename]);\r\n });\r\n }\r\n return;\r\n }\r\n\r\n // Otherwise fetch from disk or network\r\n if (sync) {\r\n var source;\r\n try {\r\n source = util.fs.readFileSync(filename).toString(\"utf8\");\r\n } catch (err) {\r\n if (!weak)\r\n finish(err);\r\n return;\r\n }\r\n process(filename, source);\r\n } else {\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 }\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 (sync)\r\n return self;\r\n if (!queued)\r\n finish(null, self);\r\n return undefined;\r\n};\r\n// function load(filename:string, callback:function):undefined\r\n\r\n/**\r\n * Loads one or multiple .proto or preprocessed .json files into this root namespace and returns a promise.\r\n * @name Root#load\r\n * @function\r\n * @param {string|string[]} filename Names of one or multiple files to load\r\n * @returns {Promise} Promise\r\n * @variation 2\r\n */\r\n// function load(filename:string):Promise\r\n\r\n/**\r\n * Synchronously 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 * @returns {Root} Root namespace\r\n * @throws {Error} If synchronous fetching is not supported (i.e. in browsers) or if a file's syntax is invalid\r\n */\r\nRootPrototype.loadSync = function loadSync(filename) {\r\n return this.load(filename, SYNC);\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\n\r\n/**\r\n * RPC helpers.\r\n * @namespace\r\n */\r\nvar rpc = exports;\r\n\r\nrpc.Service = require(20);\r\n","\"use strict\";\r\nmodule.exports = Service;\r\n\r\nvar EventEmitter = require(26);\r\n\r\n/**\r\n * Constructs a new RPC service.\r\n * @classdesc An RPC service as returned by {@link Service#create}.\r\n * @memberof rpc\r\n * @extends util.EventEmitter\r\n * @constructor\r\n * @param {RPCImpl} rpcImpl RPC implementation\r\n */\r\nfunction Service(rpcImpl) {\r\n EventEmitter.call(this);\r\n\r\n /**\r\n * RPC implementation. Becomes `null` when the service is ended.\r\n * @type {?RPCImpl}\r\n */\r\n this.$rpc = rpcImpl;\r\n}\r\n\r\n/** @alias rpc.Service.prototype */\r\nvar ServicePrototype = Service.prototype = Object.create(EventEmitter.prototype);\r\nServicePrototype.constructor = Service;\r\n\r\n/**\r\n * Ends this service and emits the `end` event.\r\n * @param {boolean} [endedByRPC=false] Whether the service has been ended by the RPC implementation.\r\n * @returns {rpc.Service} `this`\r\n */\r\nServicePrototype.end = function end(endedByRPC) {\r\n if (this.$rpc) {\r\n if (!endedByRPC) // signal end to rpcImpl\r\n this.$rpc(null, null, null);\r\n this.$rpc = null;\r\n this.emit('end').off();\r\n }\r\n return this;\r\n};\r\n","\"use strict\";\r\nmodule.exports = Service;\r\n\r\nvar Namespace = require(12);\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(11),\r\n util = require(25),\r\n rpc = require(19);\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\nutil.props(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: 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\r\n/**\r\n * RPC implementation passed to {@link Service#create} performing a service request on network level, i.e. by utilizing http requests or websockets.\r\n * @typedef RPCImpl\r\n * @type {function}\r\n * @param {Method} method Reflected method being called\r\n * @param {Uint8Array} requestData Request data\r\n * @param {function(?Error, Uint8Array=)} callback Node-style callback called with the error, if any, and the response data. `null` as response data signals an ended stream.\r\n * @returns {undefined}\r\n */\r\n\r\n/**\r\n * Creates a runtime service using the specified rpc implementation.\r\n * @param {function(Method, Uint8Array, function)} rpcImpl RPC implementation ({@link RPCImpl|see})\r\n * @param {boolean} [requestDelimited=false] Whether requests are length-delimited\r\n * @param {boolean} [responseDelimited=false] Whether responses are length-delimited\r\n * @returns {rpc.Service} Runtime RPC service. Useful where requests and/or responses are streamed.\r\n */\r\nServicePrototype.create = function create(rpcImpl, requestDelimited, responseDelimited) {\r\n var rpcService = new rpc.Service(rpcImpl);\r\n this.getMethodsArray().forEach(function(method) {\r\n rpcService[method.name.substring(0, 1).toLowerCase() + method.name.substring(1)] = function callVirtual(request, /* optional */ callback) {\r\n if (!rpcService.$rpc) // already ended?\r\n return;\r\n if (!request)\r\n throw util._TypeError(\"request\", \"not null\");\r\n method.resolve();\r\n var requestData;\r\n try {\r\n requestData = (requestDelimited && method.resolvedRequestType.encodeDelimited(request) || method.resolvedRequestType.encode(request)).finish();\r\n } catch (err) {\r\n (typeof setImmediate === 'function' && setImmediate || setTimeout)(function() { callback(err); });\r\n return;\r\n }\r\n // Calls the custom RPC implementation with the reflected method and binary request data\r\n // and expects the rpc implementation to call its callback with the binary response data.\r\n rpcImpl(method, requestData, function(err, responseData) {\r\n if (err) {\r\n rpcService.emit('error', err, method);\r\n return callback ? callback(err) : undefined;\r\n }\r\n if (responseData === null) {\r\n rpcService.end(/* endedByRPC */ true);\r\n return undefined;\r\n }\r\n var response;\r\n try {\r\n response = responseDelimited && method.resolvedResponseType.decodeDelimited(responseData) || method.resolvedResponseType.decode(responseData);\r\n } catch (err2) {\r\n rpcService.emit('error', err2, method);\r\n return callback ? callback('error', err2) : undefined;\r\n }\r\n rpcService.emit('data', response, method);\r\n return callback ? callback(null, response) : undefined;\r\n });\r\n };\r\n });\r\n return rpcService;\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(12);\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(7),\r\n OneOf = require(14),\r\n Field = require(8),\r\n Service = require(21),\r\n Prototype = require(16),\r\n Reader = require(17),\r\n Writer = require(30),\r\n inherits = require(9),\r\n util = require(25),\r\n codegen = require(2);\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 repeated fields as an array.\r\n * @type {?Field[]}\r\n * @private\r\n */\r\n this._repeatedFieldsArray = 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 {*}\r\n * @private\r\n */\r\n this._ctor = null;\r\n}\r\n\r\nutil.props(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: 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: function getFieldsArray() {\r\n return this._fieldsArray || (this._fieldsArray = util.toArray(this.fields));\r\n }\r\n },\r\n\r\n /**\r\n * Repeated fields of this message as an array for iteration.\r\n * @name Type#repeatedFieldsArray\r\n * @type {Field[]}\r\n * @readonly\r\n */\r\n repeatedFieldsArray: {\r\n get: function getRepeatedFieldsArray() {\r\n return this._repeatedFieldsArray || (this._repeatedFieldsArray = this.getFieldsArray().filter(function(field) { return field.repeated; }));\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: 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: 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: 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 {*} [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 (!properties || 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 return (this.encode = codegen.supported\r\n ? codegen.encode.generate(this).eof(this.getFullName() + \"$encode\", {\r\n Writer : Writer,\r\n types : this.getFieldsArray().map(function(fld) { return fld.resolvedType; }),\r\n util : util\r\n })\r\n : codegen.encode.fallback\r\n ).call(this, 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 return (this.decode = codegen.supported\r\n ? codegen.decode.generate(this).eof(this.getFullName() + \"$decode\", {\r\n Reader : Reader,\r\n types : this.getFieldsArray().map(function(fld) { return fld.resolvedType; }),\r\n util : util\r\n })\r\n : codegen.decode.fallback\r\n ).call(this, 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.create(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 return (this.verify = codegen.supported\r\n ? codegen.verify.generate(this).eof(this.getFullName() + \"$verify\", {\r\n types : this.getFieldsArray().map(function(fld) { return fld.resolvedType; })\r\n })\r\n : codegen.verify.fallback\r\n ).call(this, message);\r\n};\r\n","\"use strict\";\r\n\r\n/**\r\n * Common type constants.\r\n * @namespace\r\n */\r\nvar types = exports;\r\n\r\nvar util = require(25);\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\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 */ util.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 /* 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]);\r\n","\"use strict\";\r\n\r\n/**\r\n * Utility functions.\r\n * @namespace\r\n */\r\nvar util = exports;\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 * Filesystem, if available.\r\n * @memberof util\r\n * @type {?Object}\r\n */\r\nvar fs = null; // Hide this from webpack. There is probably another, better way.\r\ntry { fs = eval(['req','uire'].join(''))(\"fs\"); } catch (e) {} // eslint-disable-line no-eval, no-empty\r\n\r\nutil.fs = fs;\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} A 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 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 * 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/**\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 return \"['\" + prop.replace(/\\\\/g, \"\\\\\\\\\").replace(/'/g, \"\\\\'\") + \"']\";\r\n};\r\n\r\n/**\r\n * Minimalistic sprintf.\r\n * @param {string} format Format string\r\n * @param {...*} args Replacements\r\n * @returns {string} Formatted string\r\n */\r\nutil.sprintf = function sprintf(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 switch ($1) {\r\n case \"j\":\r\n return JSON.stringify(param);\r\n case \"p\":\r\n return util.safeProp(param);\r\n default:\r\n return String(param);\r\n }\r\n });\r\n};\r\n\r\n/**\r\n * Converts a string to camel case notation.\r\n * @param {string} str String to convert\r\n * @returns {string} Converted string\r\n */\r\nutil.camelCase = function camelCase(str) {\r\n return str.substring(0,1)\r\n + str.substring(1)\r\n .replace(/_([a-z])(?=[a-z]|$)/g, function($0, $1) { return $1.toUpperCase(); });\r\n};\r\n\r\n/**\r\n * Converts a string to underscore notation.\r\n * @param {string} str String to convert\r\n * @returns {string} Converted string\r\n */\r\nutil.underScore = function underScore(str) {\r\n return str.substring(0,1)\r\n + str.substring(1)\r\n .replace(/([A-Z])(?=[a-z]|$)/g, function($0, $1) { return \"_\" + $1.toLowerCase(); });\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 size = size || 0; \r\n return util.Buffer\r\n ? util.Buffer.allocUnsafe && util.Buffer.allocUnsafe(size) || new util.Buffer(size)\r\n : new (typeof Uint8Array !== 'undefined' && Uint8Array || Array)(size);\r\n};\r\n\r\nutil.EventEmitter = require(26);\r\n\r\n// Merge in runtime utility\r\nutil.merge(util, require(29));\r\n","\"use strict\";\r\nmodule.exports = EventEmitter;\r\n\r\n/**\r\n * Constructs a new event emitter.\r\n * @classdesc A minimal event emitter.\r\n * @memberof util\r\n * @constructor\r\n */\r\nfunction EventEmitter() {\r\n\r\n /**\r\n * Registered listeners.\r\n * @type {Object.}\r\n * @private\r\n */\r\n this._listeners = {};\r\n}\r\n\r\n/** @alias util.EventEmitter.prototype */\r\nvar EventEmitterPrototype = EventEmitter.prototype;\r\n\r\n/**\r\n * Registers an event listener.\r\n * @param {string} evt Event name\r\n * @param {function} fn Listener\r\n * @param {Object} [ctx] Listener context\r\n * @returns {util.EventEmitter} `this`\r\n */\r\nEventEmitterPrototype.on = function on(evt, fn, ctx) {\r\n (this._listeners[evt] || (this._listeners[evt] = [])).push({\r\n fn : fn,\r\n ctx : ctx || this\r\n });\r\n return this;\r\n};\r\n\r\n/**\r\n * Removes an event listener.\r\n * @param {string} [evt] Event name. Removes all listeners if omitted.\r\n * @param {function} [fn] Listener to remove. Removes all listeners of `evt` if omitted.\r\n * @returns {util.EventEmitter} `this`\r\n */\r\nEventEmitterPrototype.off = function off(evt, fn) {\r\n if (evt === undefined)\r\n this._listeners = {};\r\n else {\r\n if (fn === undefined)\r\n this._listeners[evt] = [];\r\n else {\r\n var listeners = this._listeners[evt];\r\n for (var i = 0; i < listeners.length;)\r\n if (listeners[i].fn === fn)\r\n listeners.splice(i, 1);\r\n else\r\n ++i;\r\n }\r\n }\r\n return this;\r\n};\r\n\r\n/**\r\n * Emits an event by calling its listeners with the specified arguments.\r\n * @param {string} evt Event name\r\n * @param {...*} args Arguments\r\n * @returns {util.EventEmitter} `this`\r\n */\r\nEventEmitterPrototype.emit = function emit(evt) {\r\n var listeners = this._listeners[evt];\r\n if (listeners) {\r\n var args = Array.prototype.slice.call(arguments, 1);\r\n for (var i = 0; i < listeners.length; ++i)\r\n listeners[i].fn.apply(listeners[i].ctx, args);\r\n }\r\n return this;\r\n};\r\n","\"use strict\";\r\n\r\nmodule.exports = LongBits;\r\n\r\nvar util = require(25);\r\n\r\n/**\r\n * Any compatible Long instance.\r\n * @typedef Long\r\n * @type {Object}\r\n * @property {number} low Low bits\r\n * @property {number} high High bits\r\n * @property {boolean} unsigned Whether unsigned or not\r\n */\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 = LongBits.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 * Constructs new long bits from a number, long or string.\r\n * @param {Long|number|string} value Value\r\n * @returns {util.LongBits} Instance\r\n * @throws {TypeError} If `value` is a string and no long library is present.\r\n */\r\nLongBits.from = function from(value) {\r\n switch (typeof value) { // eslint-disable-line default-case\r\n case 'number':\r\n return LongBits.fromNumber(value);\r\n case 'string':\r\n value = util.Long.fromString(value); // throws without a long lib\r\n }\r\n return (value.low || value.high) && new LongBits(value.low >>> 0, value.high >>> 0) || zero;\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 = pool;\r\n\r\n/**\r\n * A drop-in buffer pool, similar in functionality to what node uses for buffers.\r\n * @memberof util\r\n * @function\r\n * @param {function(number):Uint8Array} alloc Allocator\r\n * @param {function(number, number):Uint8Array} slice Slicer\r\n * @param {number} [size=8192] Slab size\r\n * @returns {function(number):Uint8Array} Pooled allocator\r\n */\r\nfunction pool(alloc, slice, size) {\r\n var SIZE = size || 8192;\r\n var MAX = SIZE >>> 1;\r\n var slab = null;\r\n var offset = SIZE;\r\n return function pool_alloc(size) {\r\n if (size > MAX)\r\n return alloc(size);\r\n if (offset + size > SIZE) {\r\n slab = alloc(SIZE);\r\n offset = 0;\r\n }\r\n var buf = slice.call(slab, offset, offset += size);\r\n if (offset & 7) // align to 32 bit\r\n offset = (offset | 7) + 1;\r\n return buf;\r\n };\r\n}\r\n","\"use strict\";\r\n\r\nvar util = exports;\r\n\r\nvar LongBits = util.LongBits = require(\"./longbits\");\r\n\r\nutil.pool = require(\"./pool\");\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 {*}\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 {*}\r\n */\r\nutil.Long = global.dcodeIO && global.dcodeIO.Long || null;\r\n\r\nif (!util.Long && isNode)\r\n try { util.Long = require(\"long\"); } catch (e) {} // eslint-disable-line no-empty\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 * Defines the specified properties on the specified target. Also adds getters and setters for non-ES5 environments.\r\n * @param {Object} target Target object\r\n * @param {Object} descriptors Property descriptors\r\n * @returns {undefined}\r\n */\r\nutil.props = function props(target, descriptors) {\r\n Object.keys(descriptors).forEach(function(key) {\r\n util.prop(target, key, descriptors[key]);\r\n });\r\n};\r\n\r\n/**\r\n * Defines the specified property on the specified target. Also adds getters and setters for non-ES5 environments.\r\n * @param {Object} target Target object\r\n * @param {string} key Property name\r\n * @param {Object} descriptor Property descriptor\r\n * @returns {undefined}\r\n */\r\nutil.prop = function prop(target, key, descriptor) {\r\n var ie8 = !-[1,];\r\n var ucKey = key.substring(0, 1).toUpperCase() + key.substring(1);\r\n if (descriptor.get)\r\n target['get' + ucKey] = descriptor.get;\r\n if (descriptor.set)\r\n target['set' + ucKey] = ie8\r\n ? function(value) {\r\n descriptor.set.call(this, value);\r\n this[key] = value;\r\n }\r\n : descriptor.set;\r\n if (ie8) {\r\n if (descriptor.value !== undefined)\r\n target[key] = descriptor.value;\r\n } else\r\n Object.defineProperty(target, key, descriptor);\r\n};\r\n\r\n/**\r\n * An immuable empty array.\r\n * @memberof util\r\n * @type {Array.<*>}\r\n */\r\nutil.emptyArray = Object.freeze([]);\r\n\r\n/**\r\n * An immutable empty object.\r\n * @type {Object}\r\n */\r\nutil.emptyObject = Object.freeze({});\r\n","\"use strict\";\r\nmodule.exports = Writer;\r\n\r\nWriter.BufferWriter = BufferWriter;\r\n\r\nvar util = require(29),\r\n ieee754 = require(1);\r\nvar LongBits = util.LongBits,\r\n ArrayImpl = typeof Uint8Array !== 'undefined' ? Uint8Array : Array;\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 * @param {State} next Next state entry\r\n * @private\r\n * @ignore\r\n */\r\nfunction State(writer, next) {\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\n * Next state.\r\n * @type {?State}\r\n */\r\n this.next = next;\r\n}\r\n\r\nWriter.State = State;\r\n\r\n/**\r\n * Constructs a new writer.\r\n * @classdesc Wire format writer using `Uint8Array` if available, otherwise `Array`.\r\n * @constructor\r\n */\r\nfunction 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 * Linked forked states.\r\n * @type {?Object}\r\n */\r\n this.states = null;\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/**\r\n * Creates a new writer.\r\n * @returns {BufferWriter|Writer} A {@link BufferWriter} when Buffers are supported, otherwise a {@link Writer}\r\n */\r\nWriter.create = function create() {\r\n return new (util.Buffer && BufferWriter || Writer);\r\n};\r\n\r\n/**\r\n * Allocates a buffer of the specified size.\r\n * @param {number} size Buffer size\r\n * @returns {Uint8Array} Buffer\r\n */\r\nWriter.alloc = function alloc(size) {\r\n return new ArrayImpl(size);\r\n};\r\n\r\n// Use Uint8Array buffer pool in the browser, just like node does with buffers\r\nif (ArrayImpl !== Array)\r\n Writer.alloc = util.pool(Writer.alloc, ArrayImpl.prototype.subarray || ArrayImpl.prototype.slice);\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 value < 128\r\n ? this.push(writeByte, 1, value)\r\n : this.push(writeVarint32,\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) {\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 while (val.lo > 127) {\r\n buf[pos++] = val.lo & 127 | 128;\r\n val.lo = val.lo >>> 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|string} value Value to write\r\n * @returns {Writer} `this`\r\n * @throws {TypeError} If `value` is a string and no long library is present.\r\n */\r\nWriterPrototype.uint64 = function write_uint64(value) {\r\n var bits = LongBits.from(value);\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|string} value Value to write\r\n * @returns {Writer} `this`\r\n * @throws {TypeError} If `value` is a string and no long library is present.\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|string} value Value to write\r\n * @returns {Writer} `this`\r\n * @throws {TypeError} If `value` is a string and no long library is present.\r\n */\r\nWriterPrototype.sint64 = function write_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;\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\n/**\r\n * Writes a 64 bit value as fixed 64 bits.\r\n * @param {Long|number|string} value Value to write\r\n * @returns {Writer} `this`\r\n * @throws {TypeError} If `value` is a string and no long library is present.\r\n */\r\nWriterPrototype.fixed64 = function write_fixed64(value) {\r\n var bits = LongBits.from(value);\r\n return this.push(writeFixed32, 4, bits.hi).push(writeFixed32, 4, bits.lo);\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|string} value Value to write\r\n * @returns {Writer} `this`\r\n * @throws {TypeError} If `value` is a string and no long library is present.\r\n */\r\nWriterPrototype.sfixed64 = function write_sfixed64(value) {\r\n var bits = LongBits.from(value).zzEncode();\r\n return this.push(writeFixed32, 4, bits.hi).push(writeFixed32, 4, bits.lo);\r\n};\r\n\r\nvar writeFloat = typeof Float32Array !== 'undefined'\r\n ? (function() { // eslint-disable-line wrap-iife\r\n var f32 = new Float32Array(1),\r\n f8b = new Uint8Array(f32.buffer);\r\n f32[0] = -0;\r\n return f8b[3] // already le?\r\n ? function writeFloat_f32(buf, pos, val) {\r\n f32[0] = val;\r\n buf[pos++] = f8b[0];\r\n buf[pos++] = f8b[1];\r\n buf[pos++] = f8b[2];\r\n buf[pos ] = f8b[3];\r\n }\r\n : function writeFloat_f32_le(buf, pos, val) {\r\n f32[0] = val;\r\n buf[pos++] = f8b[3];\r\n buf[pos++] = f8b[2];\r\n buf[pos++] = f8b[1];\r\n buf[pos ] = f8b[0];\r\n };\r\n })()\r\n : function writeFloat_ieee754(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\nvar writeDouble = typeof Float64Array !== 'undefined'\r\n ? (function() { // eslint-disable-line wrap-iife\r\n var f64 = new Float64Array(1),\r\n f8b = new Uint8Array(f64.buffer);\r\n f64[0] = -0;\r\n return f8b[7] // already le?\r\n ? function writeDouble_f64(buf, pos, val) {\r\n f64[0] = val;\r\n buf[pos++] = f8b[0];\r\n buf[pos++] = f8b[1];\r\n buf[pos++] = f8b[2];\r\n buf[pos++] = f8b[3];\r\n buf[pos++] = f8b[4];\r\n buf[pos++] = f8b[5];\r\n buf[pos++] = f8b[6];\r\n buf[pos ] = f8b[7];\r\n }\r\n : function writeDouble_f64_le(buf, pos, val) {\r\n f64[0] = val;\r\n buf[pos++] = f8b[7];\r\n buf[pos++] = f8b[6];\r\n buf[pos++] = f8b[5];\r\n buf[pos++] = f8b[4];\r\n buf[pos++] = f8b[3];\r\n buf[pos++] = f8b[2];\r\n buf[pos++] = f8b[1];\r\n buf[pos ] = f8b[0];\r\n };\r\n })()\r\n : function writeDouble_ieee754(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) {\r\n buf.set(val, pos);\r\n }\r\n : function writeBytes_for(buf, pos, val) {\r\n for (var i = 0; i < val.length; ++i)\r\n buf[pos + i] = val[i];\r\n };\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 && ((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 var len = 0;\r\n for (var i = 0; i < strlen; ++i) {\r\n var 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 && (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\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#}, {@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.states = new State(this, this.states);\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.states) {\r\n this.head = this.states.head;\r\n this.tail = this.states.tail;\r\n this.len = this.states.len;\r\n this.states = this.states.next;\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 as a tag 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 = this.constructor.alloc(this.len);\r\n this.reset();\r\n var pos = 0;\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/**\r\n * Allocates a buffer of the specified size.\r\n * @param {number} size Buffer size\r\n * @returns {Uint8Array} Buffer\r\n */\r\nBufferWriter.alloc = function alloc_buffer(size) {\r\n BufferWriter.alloc = util.Buffer.allocUnsafe\r\n ? util.Buffer.allocUnsafe\r\n : function allocUnsafeNew(size) { return new util.Buffer(size); };\r\n return BufferWriter.alloc(size);\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\nif (typeof Float32Array === 'undefined') // f32 is faster (node 6.9.1)\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\nif (typeof Float64Array === 'undefined') // f64 is faster (node 6.9.1)\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 // This could probably be optimized just like writeStringBuffer, but most real use cases won't benefit much.\r\n}\r\n\r\nif (!(ArrayImpl.prototype.set && util.Buffer && util.Buffer.prototype.set)) // set is faster (node 6.9.1)\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\nvar writeStringBuffer = (function() { // eslint-disable-line wrap-iife\r\n return util.Buffer && util.Buffer.prototype.utf8Write // around forever, but not present in browser buffer\r\n ? function writeString_buffer_utf8Write(buf, pos, val) {\r\n if (val.length < 40)\r\n writeString(buf, pos, val);\r\n else\r\n buf.utf8Write(val, pos);\r\n }\r\n : function writeString_buffer_write(buf, pos, val) {\r\n if (val.length < 40)\r\n writeString(buf, pos, val);\r\n else\r\n buf.write(val, pos);\r\n };\r\n // Note that the plain JS encoder is faster for short strings, probably because of redundant assertions.\r\n // For a raw utf8Write, the breaking point is about 20 characters, for write it is around 40 characters.\r\n // Unfortunately, this does not translate 1:1 to real use cases, hence the common \"good enough\" limit of 40.\r\n})();\r\n\r\n/**\r\n * @override\r\n */\r\nBufferWriterPrototype.string = function write_string_buffer(value) {\r\n var len = value.length < 40\r\n ? byteLength(value)\r\n : util.Buffer.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","\"use strict\";\r\nvar protobuf = global.protobuf = exports;\r\n\r\n/**\r\n * Loads one or multiple .proto or preprocessed .json files into a common root namespace and calls the callback.\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 {undefined}\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);\r\n}\r\n// function load(filename:string, root:Root, callback:function):undefined\r\n\r\n/**\r\n * Loads one or multiple .proto or preprocessed .json files into a common root namespace and calls the callback.\r\n * @name load\r\n * @function\r\n * @param {string|string[]} filename One or multiple files to load\r\n * @param {function(?Error, Root=)} callback Callback function\r\n * @returns {undefined}\r\n * @variation 2\r\n */\r\n// function load(filename:string, callback:function):undefined\r\n\r\n/**\r\n * Loads one or multiple .proto or preprocessed .json files into a common root namespace and returns a promise.\r\n * @name load\r\n * @function\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 * @returns {Promise} Promise\r\n * @variation 3\r\n */\r\n// function load(filename:string, [root:Root]):Promise\r\n\r\nprotobuf.load = load;\r\n\r\n/**\r\n * Synchronously 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 * @returns {Root} Root namespace\r\n * @throws {Error} If synchronous fetching is not supported (i.e. in browsers) or if a file's syntax is invalid\r\n */\r\nfunction loadSync(filename, root) {\r\n if (!root)\r\n root = new protobuf.Root();\r\n return root.loadSync(filename);\r\n}\r\n\r\nprotobuf.loadSync = loadSync;\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.codegen = require(\"./codegen\");\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.rpc = require(\"./rpc\");\r\nprotobuf.util = require(\"./util\");\r\n\r\n// Be nice to AMD\r\nif (typeof define === 'function' && define.amd)\r\n define([\"long\"], function(Long) {\r\n if (Long) {\r\n protobuf.util.Long = Long;\r\n protobuf.Reader.configure();\r\n }\r\n return protobuf;\r\n });\r\n"],"sourceRoot":"."}
\ No newline at end of file
+{"version":3,"sources":["node_modules/browser-pack/_prelude.js","lib/ieee754.js","src/class.js","src/codegen.js","src/codegen/decode.js","src/codegen/encode.js","src/codegen/verify.js","src/common.js","src/enum.js","src/field.js","src/mapfield.js","src/message.js","src/method.js","src/namespace.js","src/object.js","src/oneof.js","src/parse.js","src/reader.js","src/root.js","src/rpc.js","src/rpc/service.js","src/service.js","src/tokenize.js","src/type.js","src/types.js","src/util.js","src/util/eventemitter.js","src/util/longbits.js","src/util/pool.js","src/util/runtime.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;AACA;AACA;AACA;AACA;AACA;AACA;;ACzIA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACrHA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AChLA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC7LA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC3FA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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;;AC3IA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AChRA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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;;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;AACA;AACA;AACA;AACA;AACA;AACA;;ACvJA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC1iBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACvnBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACvRA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACTA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACzCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACxMA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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;;AClYA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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;;ACvRA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC5EA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACpMA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AC9BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;AC7HA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;ACpoBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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\nmodule.exports = Class;\r\n\r\nvar Message = require(11),\r\n Type = require(23),\r\n util = require(25);\r\n\r\nvar _TypeError = util._TypeError;\r\n\r\n/**\r\n * Constructs a class instance, which is also a message prototype.\r\n * @classdesc Runtime class providing the tools to create your own custom classes.\r\n * @constructor\r\n * @param {Type} type Reflected type\r\n * @abstract\r\n */\r\nfunction Class(type) {\r\n return Class.create(type);\r\n}\r\n\r\n/**\r\n * Constructs a new message prototype for the specified reflected type and sets up its constructor.\r\n * @param {Type} type Reflected message type\r\n * @param {*} [ctor] Custom constructor to set up, defaults to create a generic one if omitted\r\n * @returns {Message} Message prototype\r\n */\r\nClass.create = function create(type, ctor) {\r\n if (!(type instanceof Type))\r\n throw _TypeError(\"type\", \"a Type\");\r\n var clazz = ctor;\r\n if (clazz) {\r\n if (typeof clazz !== 'function')\r\n throw _TypeError(\"ctor\", \"a function\");\r\n } else\r\n clazz = (function(MessageCtor) { // eslint-disable-line wrap-iife\r\n return function Message(properties) {\r\n MessageCtor.call(this, properties);\r\n };\r\n })(Message);\r\n\r\n // Let's pretend...\r\n clazz.constructor = Class;\r\n \r\n // new Class() -> Message.prototype\r\n var prototype = clazz.prototype = new Message();\r\n prototype.constructor = clazz;\r\n\r\n // Static methods on Message are instance methods on Class and vice-versa.\r\n util.merge(clazz, Message, true);\r\n\r\n // Classes and messages reference their reflected type\r\n clazz.$type = type;\r\n prototype.$type = type;\r\n\r\n // Messages have non-enumerable default values on their prototype\r\n type.getFieldsArray().forEach(function(field) {\r\n field.resolve();\r\n // objects on the prototype must be immmutable. users must assign a new object instance and\r\n // cannot use Array#push on empty arrays on the prototype for example, as this would modify\r\n // the value on the prototype for ALL messages of this type. Hence, these objects are frozen.\r\n prototype[field.name] = Array.isArray(field.defaultValue)\r\n ? util.emptyArray\r\n : util.isObject(field.defaultValue)\r\n ? util.emptyObject\r\n : field.defaultValue;\r\n });\r\n\r\n // Runtime messages have non-enumerable getters and setters for each virtual oneof field\r\n type.getOneofsArray().forEach(function(oneof) {\r\n util.prop(prototype, oneof.resolve().name, {\r\n get: function getVirtual() {\r\n // > If the parser encounters multiple members of the same oneof on the wire, only the last member seen is used in the parsed message.\r\n var keys = Object.keys(this);\r\n for (var i = keys.length - 1; i > -1; --i)\r\n if (oneof.oneof.indexOf(keys[i]) > -1)\r\n return keys[i];\r\n return undefined;\r\n },\r\n set: function setVirtual(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 // Register\r\n type.ctor = clazz;\r\n\r\n return prototype;\r\n};\r\n\r\n// Static methods on Message are instance methods on Class and vice-versa.\r\nClass.prototype = Message;\r\n\r\n/**\r\n * Encodes a message of this type.\r\n * @name Class#encode\r\n * @function\r\n * @param {Message|Object} message Message to encode\r\n * @param {Writer} [writer] Writer to use\r\n * @returns {Writer} Writer\r\n */\r\n\r\n/**\r\n * Encodes a message of this type preceeded by its length as a varint.\r\n * @name Class#encodeDelimited\r\n * @function\r\n * @param {Message|Object} message Message to encode\r\n * @param {Writer} [writer] Writer to use\r\n * @returns {Writer} Writer\r\n */\r\n\r\n/**\r\n * Decodes a message of this type.\r\n * @name Class#decode\r\n * @function\r\n * @param {Reader|Uint8Array} readerOrBuffer Reader or buffer to decode\r\n * @returns {Message} Decoded message\r\n */\r\n\r\n/**\r\n * Decodes a message of this type preceeded by its length as a varint.\r\n * @name Class#decodeDelimited\r\n * @function\r\n * @param {Reader|Uint8Array} readerOrBuffer Reader or buffer to decode\r\n * @returns {Message} Decoded message\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 {Message|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","\"use strict\";\r\nmodule.exports = codegen;\r\n\r\nvar util = require(25);\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 * A closure for generating functions programmatically.\r\n * @namespace\r\n * @function\r\n * @param {...string} params Function parameter names\r\n * @returns {CodegenInstance} Codegen instance\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() {\r\n var args = Array.prototype.slice.call(arguments),\r\n src = ['\\t\"use strict\"'],\r\n indent = 1,\r\n inCase = false;\r\n\r\n /**\r\n * A codegen instance as returned by {@link codegen}, that also is a {@link util.sprintf|sprintf}-like appender function.\r\n * @typedef CodegenInstance\r\n * @type {function}\r\n * @param {string} format Format string\r\n * @param {...*} args Replacements\r\n * @returns {CodegenInstance} Itself\r\n * @property {function(string=):string} str Stringifies the so far generated function source.\r\n * @property {function(string=, Object=):function} eof Ends generation and builds the function whilst applying a scope.\r\n */\r\n /**/\r\n function gen() {\r\n var line = util.sprintf.apply(null, arguments);\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 /**\r\n * Stringifies the so far generated function source.\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 * @inner\r\n */\r\n 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 gen.str = str;\r\n\r\n /**\r\n * Ends generation and builds the function whilst applying a scope.\r\n * @param {string} [name] Function name, defaults to generate an anonymous function\r\n * @param {Object} [scope] Function scope\r\n * @returns {function} The generated function, with scope applied if specified\r\n * @inner\r\n */\r\n function eof(name, scope) {\r\n if (typeof name === 'object') {\r\n scope = name;\r\n name = undefined;\r\n }\r\n var source = gen.str(name);\r\n if (codegen.verbose)\r\n console.log(\"--- codegen ---\\n\" + source.replace(/^/mg, \"> \").replace(/\\t/g, \" \")); // eslint-disable-line no-console\r\n var keys = Object.keys(scope || (scope = {}));\r\n return Function.apply(null, keys.concat(\"return \" + source)).apply(null, keys.map(function(key) { return scope[key]; })); // eslint-disable-line no-new-func\r\n // ^ Creates a wrapper function with the scoped variable names as its parameters,\r\n // calls it with the respective scoped variable values ^\r\n // and returns our brand-new properly scoped function.\r\n //\r\n // This works because \"Invoking the Function constructor as a function (without using the\r\n // new operator) has the same effect as invoking it as a constructor.\"\r\n // https://developer.mozilla.org/de/docs/Web/JavaScript/Reference/Global_Objects/Function\r\n }\r\n\r\n gen.eof = eof;\r\n\r\n return gen;\r\n}\r\n\r\ncodegen.supported = false; try { codegen.supported = codegen(\"a\",\"b\")(\"return a-b\").eof()(2,1) === 1; } catch (e) {} // eslint-disable-line no-empty\r\ncodegen.verbose = false;\r\n\r\ncodegen.encode = require(5);\r\ncodegen.decode = require(4);\r\ncodegen.verify = require(6);\r\n","\"use strict\";\r\n\r\n/**\r\n * Wire format decoder using code generation on top of reflection that also provides a fallback.\r\n * @exports codegen.decode\r\n * @namespace\r\n */\r\nvar decode = exports;\r\n\r\nvar Enum = require(8),\r\n Reader = require(17),\r\n types = require(24),\r\n util = require(25),\r\n codegen = require(3);\r\n\r\n/**\r\n * Decodes a message of `this` message's 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 {Message} Populated runtime message\r\n * @this Type\r\n */\r\ndecode.fallback = function decode_fallback(readerOrBuffer, length) {\r\n /* eslint-disable no-invalid-this, block-scoped-var, no-redeclare */\r\n var fields = this.getFieldsById(),\r\n reader = readerOrBuffer instanceof Reader ? readerOrBuffer : Reader.create(readerOrBuffer),\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].length ? 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 the specified message type, with an identical signature to {@link codegen.decode.fallback}.\r\n * @param {Type} mtype Message type\r\n * @returns {CodegenInstance} {@link codegen|Codegen} instance\r\n */\r\ndecode.generate = function decode_generate(mtype) {\r\n /* eslint-disable no-unexpected-multiline */\r\n var fields = mtype.getFieldsArray(); \r\n var gen = codegen(\"r\", \"l\")\r\n\r\n (\"r instanceof Reader||(r=Reader.create(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\nutil.props(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: 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\n * Gets this enum's values by id. This is an alias of {@link Enum#valuesById}'s getter for use within non-ES5 environments.\r\n * @name Enum#getValuesById\r\n * @function\r\n * @returns {Object.}\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(14);\r\n/** @alias Field.prototype */\r\nvar FieldPrototype = ReflectionObject.extend(Field);\r\n\r\nvar Type = require(23),\r\n Enum = require(8),\r\n MapField = require(10),\r\n types = require(24),\r\n util = require(25);\r\n\r\nvar _TypeError = util._TypeError;\r\n\r\n/**\r\n * Constructs a new message field instance. 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|Object} [rule=\"optional\"] Field rule\r\n * @param {string|Object} [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\nutil.props(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 * Determines whether this field is packed. This is an alias of {@link Field#packed}'s getter for use within non-ES5 environments.\r\n * @name Field#isPacked\r\n * @function\r\n * @returns {boolean}\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 Message#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 = MapField;\r\n\r\nvar Field = require(9);\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(8),\r\n types = require(24),\r\n util = require(25);\r\n\r\n/**\r\n * Constructs a new map field instance.\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 = Message;\r\n\r\n/**\r\n * Constructs a new message instance.\r\n * \r\n * This method should be called from your custom constructors, i.e. `Message.call(this, properties)`.\r\n * @classdesc Abstract runtime message.\r\n * @extends {Object}\r\n * @constructor\r\n * @param {Object.} [properties] Properties to set\r\n * @abstract\r\n * @see {@link Class.create}\r\n */\r\nfunction Message(properties) {\r\n if (properties) {\r\n var keys = Object.keys(properties);\r\n for (var i = 0; i < keys.length; ++i)\r\n this[keys[i]] = properties[keys[i]];\r\n }\r\n}\r\n\r\n/** @alias Message.prototype */\r\nvar MessagePrototype = Message.prototype;\r\n\r\n/**\r\n * Converts this 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 {*} [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 {*} [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 * @param {boolean} [options.defaults=false] Also sets default values on the resulting object\r\n * @returns {Object.} JSON object\r\n */\r\nMessagePrototype.asJSON = function asJSON(options) {\r\n if (!options)\r\n options = {};\r\n var fields = this.$type.fields,\r\n json = {};\r\n var keys;\r\n if (options.defaults) {\r\n keys = [];\r\n for (var k in this) // eslint-disable-line guard-for-in\r\n keys.push(k);\r\n } else\r\n 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 (!options.fieldsOnly)\r\n json[key] = value;\r\n }\r\n return json;\r\n};\r\n\r\n/**\r\n * Reference to the reflected type.\r\n * @name Message.$type\r\n * @type {Type}\r\n * @readonly\r\n */\r\n\r\n/**\r\n * Reference to the reflected type.\r\n * @name Message#$type\r\n * @type {Type}\r\n * @readonly\r\n */\r\n\r\n/**\r\n * Encodes a message of this type.\r\n * @param {Message|Object} message Message to encode\r\n * @param {Writer} [writer] Writer to use\r\n * @returns {Writer} Writer\r\n */\r\nMessage.encode = function encode(message, writer) {\r\n return this.$type.encode(message, writer);\r\n};\r\n\r\n/**\r\n * Encodes a message of this type preceeded by its length as a varint.\r\n * @param {Message|Object} message Message to encode\r\n * @param {Writer} [writer] Writer to use\r\n * @returns {Writer} Writer\r\n */\r\nMessage.encodeDelimited = function encodeDelimited(message, writer) {\r\n return this.$type.encodeDelimited(message, writer);\r\n};\r\n\r\n/**\r\n * Decodes a message of this type.\r\n * @name Message.decode\r\n * @function\r\n * @param {Reader|Uint8Array} readerOrBuffer Reader or buffer to decode\r\n * @returns {Message} Decoded message\r\n */\r\nMessage.decode = function decode(readerOrBuffer) {\r\n return this.$type.decode(readerOrBuffer);\r\n};\r\n\r\n/**\r\n * Decodes a message of this type preceeded by its length as a varint.\r\n * @name Message.decodeDelimited\r\n * @function\r\n * @param {Reader|Uint8Array} readerOrBuffer Reader or buffer to decode\r\n * @returns {Message} Decoded message\r\n */\r\nMessage.decodeDelimited = function decodeDelimited(readerOrBuffer) {\r\n return this.$type.decodeDelimited(readerOrBuffer);\r\n};\r\n\r\n/**\r\n * Verifies a message of this type.\r\n * @name Message.verify\r\n * @function\r\n * @param {Message|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\nMessage.verify = function verify(message) {\r\n return this.$type.verify(message);\r\n};\r\n","\"use strict\";\r\nmodule.exports = Method;\r\n\r\nvar ReflectionObject = require(14);\r\n/** @alias Method.prototype */\r\nvar MethodPrototype = ReflectionObject.extend(Method);\r\n\r\nvar Type = require(23),\r\n util = require(25);\r\n\r\nvar _TypeError = util._TypeError;\r\n\r\n/**\r\n * Constructs a new service method instance.\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|Object} [requestStream] Whether the request is streamed\r\n * @param {boolean|Object} [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 (type && !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(14);\r\n/** @alias Namespace.prototype */\r\nvar NamespacePrototype = ReflectionObject.extend(Namespace);\r\n\r\nvar Enum = require(8),\r\n Type = require(23),\r\n Field = require(9),\r\n Service = require(21),\r\n util = require(25);\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 instance.\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\nutil.props(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: 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(18),\r\n util = require(25);\r\n\r\nvar _TypeError = util._TypeError;\r\n\r\n/**\r\n * Constructs a new reflection object instance.\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\nutil.props(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: 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 {*} constructor Extending constructor\r\n * @returns {Object} Constructor prototype\r\n * @this ReflectionObject\r\n */\r\nfunction extend(constructor) {\r\n var prototype = constructor.prototype = Object.create(this.prototype);\r\n prototype.constructor = constructor;\r\n constructor.extend = extend;\r\n return prototype;\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(14);\r\n/** @alias OneOf.prototype */\r\nvar OneOfPrototype = ReflectionObject.extend(OneOf);\r\n\r\nvar Field = require(9),\r\n util = require(25);\r\n\r\nvar _TypeError = util._TypeError;\r\n\r\n/**\r\n * Constructs a new oneof instance.\r\n * @classdesc Reflected oneof.\r\n * @extends ReflectionObject\r\n * @constructor\r\n * @param {string} name Oneof name\r\n * @param {string[]|Object} [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 * Upper cased name for getter/setter calls.\r\n * @type {string}\r\n */\r\n this.ucName = this.name.substring(0, 1).toUpperCase() + this.name.substring(1);\r\n\r\n /**\r\n * Field names that belong to this oneof.\r\n * @type {string[]}\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 {Field[]}\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(22),\r\n Root = require(18),\r\n Type = require(23),\r\n Field = require(9),\r\n MapField = require(10),\r\n OneOf = require(15),\r\n Enum = require(8),\r\n Service = require(21),\r\n Method = require(12),\r\n types = require(24),\r\n util = require(25);\r\nvar camelCase = util.camelCase;\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\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 parent.values[name] = value;\r\n parseInlineOptions({}); // skips enum value options\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 } 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 = Reader;\r\n\r\nReader.BufferReader = BufferReader;\r\n\r\nvar util = require(29),\r\n ieee754 = require(1);\r\nvar LongBits = util.LongBits,\r\n ArrayImpl = typeof Uint8Array !== 'undefined' ? Uint8Array : Array;\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 * Configures the Reader interface according to the environment.\r\n * @memberof Reader\r\n * @returns {undefined}\r\n */\r\nfunction configure() {\r\n if (util.Long) {\r\n ReaderPrototype.int64 = read_int64_long;\r\n ReaderPrototype.uint64 = read_uint64_long;\r\n ReaderPrototype.sint64 = read_sint64_long;\r\n ReaderPrototype.fixed64 = read_fixed64_long;\r\n ReaderPrototype.sfixed64 = read_sfixed64_long;\r\n } else {\r\n ReaderPrototype.int64 = read_int64_number;\r\n ReaderPrototype.uint64 = read_uint64_number;\r\n ReaderPrototype.sint64 = read_sint64_number;\r\n ReaderPrototype.fixed64 = read_fixed64_number;\r\n ReaderPrototype.sfixed64 = read_sfixed64_number;\r\n }\r\n}\r\n\r\nReader.configure = configure;\r\n\r\n/**\r\n * Constructs a new reader instance using 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 \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/**\r\n * Creates a new reader using the specified buffer.\r\n * @param {Uint8Array} buffer Buffer to read from\r\n * @returns {BufferReader|Reader} A {@link BufferReader} if `buffer` is a Buffer, otherwise a {@link Reader}\r\n */\r\nReader.create = function create(buffer) {\r\n return new (util.Buffer && util.Buffer.isBuffer(buffer) && BufferReader || Reader)(buffer);\r\n};\r\n\r\n/** @alias Reader.prototype */\r\nvar ReaderPrototype = Reader.prototype;\r\n\r\nReaderPrototype._slice = ArrayImpl.prototype.subarray || ArrayImpl.prototype.slice;\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 // 1 byte\r\n var octet = this.buf[this.pos++],\r\n value = octet & 127;\r\n if (octet > 127) { // false if octet is undefined (pos >= len)\r\n // 2 bytes\r\n octet = this.buf[this.pos++];\r\n value |= (octet & 127) << 7;\r\n if (octet > 127) {\r\n // 3 bytes\r\n octet = this.buf[this.pos++];\r\n value |= (octet & 127) << 14;\r\n if (octet > 127) {\r\n // 4 bytes\r\n octet = this.buf[this.pos++];\r\n value |= (octet & 127) << 21;\r\n if (octet > 127) {\r\n // 5 bytes\r\n octet = this.buf[this.pos++];\r\n value |= octet << 28;\r\n if (octet > 127) {\r\n // 6..10 bytes (sign extended)\r\n this.pos += 5;\r\n }\r\n }\r\n }\r\n }\r\n }\r\n if (this.pos > this.len) {\r\n this.pos = this.len;\r\n throw indexOutOfRange(this);\r\n }\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/* eslint-disable no-invalid-this */\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();\r\n}\r\n\r\nfunction read_int64_number() {\r\n return readLongVarint.call(this).toNumber();\r\n}\r\n\r\nfunction read_uint64_long() {\r\n return readLongVarint.call(this).toLong(true);\r\n}\r\n\r\nfunction read_uint64_number() {\r\n return readLongVarint.call(this).toNumber(true);\r\n}\r\n\r\nfunction read_sint64_long() {\r\n return readLongVarint.call(this).zzDecode().toLong();\r\n}\r\n\r\nfunction read_sint64_number() {\r\n return readLongVarint.call(this).zzDecode().toNumber();\r\n}\r\n\r\n/* eslint-enable no-invalid-this */\r\n\r\n/**\r\n * Reads a varint as a signed 64 bit value.\r\n * @name Reader#int64\r\n * @function\r\n * @returns {Long|number} Value read\r\n */\r\n\r\n/**\r\n * Reads a varint as an unsigned 64 bit value.\r\n * @name Reader#uint64\r\n * @function\r\n * @returns {Long|number} Value read\r\n */\r\n\r\n/**\r\n * Reads a zig-zag encoded varint as a signed 64 bit value.\r\n * @name Reader#sint64\r\n * @function\r\n * @returns {Long|number} Value read\r\n */\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/* eslint-disable no-invalid-this */\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);\r\n}\r\n\r\nfunction read_fixed64_number() {\r\n return readLongFixed.call(this).toNumber(true);\r\n}\r\n\r\nfunction read_sfixed64_long() {\r\n return readLongFixed.call(this).zzDecode().toLong();\r\n}\r\n\r\nfunction read_sfixed64_number() {\r\n return readLongFixed.call(this).zzDecode().toNumber();\r\n}\r\n\r\n/* eslint-enable no-invalid-this */\r\n\r\n/**\r\n * Reads fixed 64 bits.\r\n * @name Reader#fixed64\r\n * @function\r\n * @returns {Long|number} Value read\r\n */\r\n\r\n/**\r\n * Reads zig-zag encoded fixed 64 bits.\r\n * @name Reader#sfixed64\r\n * @function\r\n * @returns {Long|number} Value read\r\n */\r\n\r\nvar readFloat = typeof Float32Array !== 'undefined'\r\n ? (function() { // eslint-disable-line wrap-iife\r\n var f32 = new Float32Array(1),\r\n f8b = new Uint8Array(f32.buffer);\r\n f32[0] = -0;\r\n return f8b[3] // already le?\r\n ? function readFloat_f32(buf, pos) {\r\n f8b[0] = buf[pos++];\r\n f8b[1] = buf[pos++];\r\n f8b[2] = buf[pos++];\r\n f8b[3] = buf[pos ];\r\n return f32[0];\r\n }\r\n : function readFloat_f32_le(buf, pos) {\r\n f8b[3] = buf[pos++];\r\n f8b[2] = buf[pos++];\r\n f8b[1] = buf[pos++];\r\n f8b[0] = buf[pos ];\r\n return f32[0];\r\n };\r\n })()\r\n : function readFloat_ieee754(buf, pos) {\r\n return ieee754.read(buf, pos, false, 23, 4);\r\n };\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 = readFloat(this.buf, this.pos);\r\n this.pos += 4;\r\n return value;\r\n};\r\n\r\nvar readDouble = typeof Float64Array !== 'undefined'\r\n ? (function() { // eslint-disable-line wrap-iife\r\n var f64 = new Float64Array(1),\r\n f8b = new Uint8Array(f64.buffer);\r\n f64[0] = -0;\r\n return f8b[7] // already le?\r\n ? function readDouble_f64(buf, pos) {\r\n f8b[0] = buf[pos++];\r\n f8b[1] = buf[pos++];\r\n f8b[2] = buf[pos++];\r\n f8b[3] = buf[pos++];\r\n f8b[4] = buf[pos++];\r\n f8b[5] = buf[pos++];\r\n f8b[6] = buf[pos++];\r\n f8b[7] = buf[pos ];\r\n return f64[0];\r\n }\r\n : function readDouble_f64_le(buf, pos) {\r\n f8b[7] = buf[pos++];\r\n f8b[6] = buf[pos++];\r\n f8b[5] = buf[pos++];\r\n f8b[4] = buf[pos++];\r\n f8b[3] = buf[pos++];\r\n f8b[2] = buf[pos++];\r\n f8b[1] = buf[pos++];\r\n f8b[0] = buf[pos ];\r\n return f64[0];\r\n };\r\n })()\r\n : function readDouble_ieee754(buf, pos) {\r\n return ieee754.read(buf, pos, false, 52, 8);\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 = readDouble(this.buf, this.pos);\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 readStringBuffer = util.Buffer.prototype.utf8Slice // around forever, but not present in browser buffer\r\n ? readStringBuffer_utf8Slice\r\n : readStringBuffer_toString;\r\n initBufferReader = false;\r\n};\r\n\r\n/**\r\n * Constructs a new buffer reader instance.\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\nif (typeof Float32Array === 'undefined') // f32 is faster (node 6.9.1)\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\nif (typeof Float64Array === 'undefined') // f64 is faster (node 6.9.1)\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\nvar readStringBuffer;\r\n\r\nfunction readStringBuffer_utf8Slice(buf, start, end) {\r\n return buf.utf8Slice(start, end); // fastest\r\n}\r\n\r\nfunction readStringBuffer_toString(buf, start, end) {\r\n return buf.toString(\"utf8\", start, end); // 2nd, again assertions\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 readStringBuffer(this.buf, 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\r\nconfigure();\r\n","\"use strict\";\r\nmodule.exports = Root;\r\n\r\nvar Namespace = require(13);\r\n/** @alias Root.prototype */\r\nvar RootPrototype = Namespace.extend(Root);\r\n\r\nvar Field = require(9),\r\n util = require(25),\r\n common = require(7);\r\n\r\n/**\r\n * Constructs a new root namespace instance.\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// A symbol-like function to safely signal synchronous loading\r\nfunction SYNC() {} // eslint-disable-line no-empty-function\r\n\r\n/**\r\n * Loads one or multiple .proto or preprocessed .json files into this root namespace and calls the callback.\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 {undefined}\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 var sync = callback === SYNC; // undocumented\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(16)(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 (!sync && !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 if (sync)\r\n process(filename, common[filename]);\r\n else {\r\n ++queued;\r\n setTimeout(function() {\r\n --queued;\r\n process(filename, common[filename]);\r\n });\r\n }\r\n return;\r\n }\r\n\r\n // Otherwise fetch from disk or network\r\n if (sync) {\r\n var source;\r\n try {\r\n source = util.fs.readFileSync(filename).toString(\"utf8\");\r\n } catch (err) {\r\n if (!weak)\r\n finish(err);\r\n return;\r\n }\r\n process(filename, source);\r\n } else {\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 }\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 (sync)\r\n return self;\r\n if (!queued)\r\n finish(null, self);\r\n return undefined;\r\n};\r\n// function load(filename:string, callback:function):undefined\r\n\r\n/**\r\n * Loads one or multiple .proto or preprocessed .json files into this root namespace and returns a promise.\r\n * @name Root#load\r\n * @function\r\n * @param {string|string[]} filename Names of one or multiple files to load\r\n * @returns {Promise} Promise\r\n * @variation 2\r\n */\r\n// function load(filename:string):Promise\r\n\r\n/**\r\n * Synchronously 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 * @returns {Root} Root namespace\r\n * @throws {Error} If synchronous fetching is not supported (i.e. in browsers) or if a file's syntax is invalid\r\n */\r\nRootPrototype.loadSync = function loadSync(filename) {\r\n return this.load(filename, SYNC);\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\n\r\n/**\r\n * Streaming RPC helpers.\r\n * @namespace\r\n */\r\nvar rpc = exports;\r\n\r\nrpc.Service = require(20);\r\n","\"use strict\";\r\nmodule.exports = Service;\r\n\r\nvar EventEmitter = require(26);\r\n\r\n/**\r\n * Constructs a new RPC service instance.\r\n * @classdesc An RPC service as returned by {@link Service#create}.\r\n * @memberof rpc\r\n * @extends util.EventEmitter\r\n * @constructor\r\n * @param {RPCImpl} rpcImpl RPC implementation\r\n */\r\nfunction Service(rpcImpl) {\r\n EventEmitter.call(this);\r\n\r\n /**\r\n * RPC implementation. Becomes `null` when the service is ended.\r\n * @type {?RPCImpl}\r\n */\r\n this.$rpc = rpcImpl;\r\n}\r\n\r\n/** @alias rpc.Service.prototype */\r\nvar ServicePrototype = Service.prototype = Object.create(EventEmitter.prototype);\r\nServicePrototype.constructor = Service;\r\n\r\n/**\r\n * Ends this service and emits the `end` event.\r\n * @param {boolean} [endedByRPC=false] Whether the service has been ended by the RPC implementation.\r\n * @returns {rpc.Service} `this`\r\n */\r\nServicePrototype.end = function end(endedByRPC) {\r\n if (this.$rpc) {\r\n if (!endedByRPC) // signal end to rpcImpl\r\n this.$rpc(null, null, null);\r\n this.$rpc = null;\r\n this.emit('end').off();\r\n }\r\n return this;\r\n};\r\n","\"use strict\";\r\nmodule.exports = Service;\r\n\r\nvar Namespace = require(13);\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(12),\r\n util = require(25),\r\n rpc = require(19);\r\n\r\n/**\r\n * Constructs a new service instance.\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\nutil.props(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: 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\r\n/**\r\n * RPC implementation passed to {@link Service#create} performing a service request on network level, i.e. by utilizing http requests or websockets.\r\n * @typedef RPCImpl\r\n * @type {function}\r\n * @param {Method} method Reflected method being called\r\n * @param {Uint8Array} requestData Request data\r\n * @param {function(?Error, Uint8Array=)} callback Node-style callback called with the error, if any, and the response data. `null` as response data signals an ended stream.\r\n * @returns {undefined}\r\n */\r\n\r\n/**\r\n * Creates a runtime service using the specified rpc implementation.\r\n * @param {function(Method, Uint8Array, function)} rpcImpl RPC implementation ({@link RPCImpl|see})\r\n * @param {boolean} [requestDelimited=false] Whether requests are length-delimited\r\n * @param {boolean} [responseDelimited=false] Whether responses are length-delimited\r\n * @returns {rpc.Service} Runtime RPC service. Useful where requests and/or responses are streamed.\r\n */\r\nServicePrototype.create = function create(rpcImpl, requestDelimited, responseDelimited) {\r\n var rpcService = new rpc.Service(rpcImpl);\r\n this.getMethodsArray().forEach(function(method) {\r\n rpcService[method.name.substring(0, 1).toLowerCase() + method.name.substring(1)] = function callVirtual(request, /* optional */ callback) {\r\n if (!rpcService.$rpc) // already ended?\r\n return;\r\n if (!request)\r\n throw util._TypeError(\"request\", \"not null\");\r\n method.resolve();\r\n var requestData;\r\n try {\r\n requestData = (requestDelimited && method.resolvedRequestType.encodeDelimited(request) || method.resolvedRequestType.encode(request)).finish();\r\n } catch (err) {\r\n (typeof setImmediate === 'function' && setImmediate || setTimeout)(function() { callback(err); });\r\n return;\r\n }\r\n // Calls the custom RPC implementation with the reflected method and binary request data\r\n // and expects the rpc implementation to call its callback with the binary response data.\r\n rpcImpl(method, requestData, function(err, responseData) {\r\n if (err) {\r\n rpcService.emit('error', err, method);\r\n return callback ? callback(err) : undefined;\r\n }\r\n if (responseData === null) {\r\n rpcService.end(/* endedByRPC */ true);\r\n return undefined;\r\n }\r\n var response;\r\n try {\r\n response = responseDelimited && method.resolvedResponseType.decodeDelimited(responseData) || method.resolvedResponseType.decode(responseData);\r\n } catch (err2) {\r\n rpcService.emit('error', err2, method);\r\n return callback ? callback('error', err2) : undefined;\r\n }\r\n rpcService.emit('data', response, method);\r\n return callback ? callback(null, response) : undefined;\r\n });\r\n };\r\n });\r\n return rpcService;\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(13);\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(8),\r\n OneOf = require(15),\r\n Field = require(9),\r\n Service = require(21),\r\n Class = require(2),\r\n Message = require(11),\r\n Reader = require(17),\r\n Writer = require(30),\r\n util = require(25),\r\n codegen = require(3);\r\n\r\n/**\r\n * Constructs a new reflected message type instance.\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 repeated fields as an array.\r\n * @type {?Field[]}\r\n * @private\r\n */\r\n this._repeatedFieldsArray = 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 {*}\r\n * @private\r\n */\r\n this._ctor = null;\r\n}\r\n\r\nutil.props(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: 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: function getFieldsArray() {\r\n return this._fieldsArray || (this._fieldsArray = util.toArray(this.fields));\r\n }\r\n },\r\n\r\n /**\r\n * Repeated fields of this message as an array for iteration.\r\n * @name Type#repeatedFieldsArray\r\n * @type {Field[]}\r\n * @readonly\r\n */\r\n repeatedFieldsArray: {\r\n get: function getRepeatedFieldsArray() {\r\n return this._repeatedFieldsArray || (this._repeatedFieldsArray = this.getFieldsArray().filter(function(field) { return field.repeated; }));\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: 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 {Class}\r\n */\r\n ctor: {\r\n get: function getCtor() {\r\n return this._ctor || (this._ctor = Class.create(this).constructor);\r\n },\r\n set: function setCtor(ctor) {\r\n if (ctor && !(ctor.prototype instanceof Message))\r\n throw util._TypeError(\"ctor\", \"a constructor inheriting from Message\");\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 * @returns {Message} Runtime message\r\n */\r\nTypePrototype.create = function create(properties) {\r\n return new (this.getCtor())(properties);\r\n};\r\n\r\n/**\r\n * Encodes a message of this type.\r\n * @param {Message|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 return (this.encode = codegen.supported\r\n ? codegen.encode.generate(this).eof(this.getFullName() + \"$encode\", {\r\n Writer : Writer,\r\n types : this.getFieldsArray().map(function(fld) { return fld.resolvedType; }),\r\n util : util\r\n })\r\n : codegen.encode.fallback\r\n ).call(this, 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 {Message|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 {Message} Decoded message\r\n */\r\nTypePrototype.decode = function decode(readerOrBuffer, length) {\r\n return (this.decode = codegen.supported\r\n ? codegen.decode.generate(this).eof(this.getFullName() + \"$decode\", {\r\n Reader : Reader,\r\n types : this.getFieldsArray().map(function(fld) { return fld.resolvedType; }),\r\n util : util\r\n })\r\n : codegen.decode.fallback\r\n ).call(this, 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 {Message} Decoded message\r\n */\r\nTypePrototype.decodeDelimited = function decodeDelimited(readerOrBuffer) {\r\n readerOrBuffer = readerOrBuffer instanceof Reader ? readerOrBuffer : Reader.create(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 {Message|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 return (this.verify = codegen.supported\r\n ? codegen.verify.generate(this).eof(this.getFullName() + \"$verify\", {\r\n types : this.getFieldsArray().map(function(fld) { return fld.resolvedType; })\r\n })\r\n : codegen.verify.fallback\r\n ).call(this, message);\r\n};\r\n","\"use strict\";\r\n\r\n/**\r\n * Common type constants.\r\n * @namespace\r\n */\r\nvar types = exports;\r\n\r\nvar util = require(25);\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\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 */ util.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 /* 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]);\r\n","\"use strict\";\r\n\r\n/**\r\n * Various utility functions.\r\n * @namespace\r\n */\r\nvar util = exports;\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 * Filesystem, if available.\r\n * @memberof util\r\n * @type {?Object}\r\n */\r\nvar fs = null; // Hide this from webpack. There is probably another, better way.\r\ntry { fs = eval(['req','uire'].join(''))(\"fs\"); } catch (e) {} // eslint-disable-line no-eval, no-empty\r\n\r\nutil.fs = fs;\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} A 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 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 * 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/**\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 return \"['\" + prop.replace(/\\\\/g, \"\\\\\\\\\").replace(/'/g, \"\\\\'\") + \"']\";\r\n};\r\n\r\n/**\r\n * Minimalistic sprintf.\r\n * @param {string} format Format string\r\n * @param {...*} args Replacements\r\n * @returns {string} Formatted string\r\n */\r\nutil.sprintf = function sprintf(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 switch ($1) {\r\n case \"j\":\r\n return JSON.stringify(param);\r\n case \"p\":\r\n return util.safeProp(param);\r\n default:\r\n return String(param);\r\n }\r\n });\r\n};\r\n\r\n/**\r\n * Converts a string to camel case notation.\r\n * @param {string} str String to convert\r\n * @returns {string} Converted string\r\n */\r\nutil.camelCase = function camelCase(str) {\r\n return str.substring(0,1)\r\n + str.substring(1)\r\n .replace(/_([a-z])(?=[a-z]|$)/g, function($0, $1) { return $1.toUpperCase(); });\r\n};\r\n\r\n/**\r\n * Converts a string to underscore notation.\r\n * @param {string} str String to convert\r\n * @returns {string} Converted string\r\n */\r\nutil.underScore = function underScore(str) {\r\n return str.substring(0,1)\r\n + str.substring(1)\r\n .replace(/([A-Z])(?=[a-z]|$)/g, function($0, $1) { return \"_\" + $1.toLowerCase(); });\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 size = size || 0; \r\n return util.Buffer\r\n ? util.Buffer.allocUnsafe && util.Buffer.allocUnsafe(size) || new util.Buffer(size)\r\n : new (typeof Uint8Array !== 'undefined' && Uint8Array || Array)(size);\r\n};\r\n\r\nutil.EventEmitter = require(26);\r\n\r\n// Merge in runtime utility\r\nutil.merge(util, require(29));\r\n","\"use strict\";\r\nmodule.exports = EventEmitter;\r\n\r\n/**\r\n * Constructs a new event emitter instance.\r\n * @classdesc A minimal event emitter.\r\n * @memberof util\r\n * @constructor\r\n */\r\nfunction EventEmitter() {\r\n\r\n /**\r\n * Registered listeners.\r\n * @type {Object.}\r\n * @private\r\n */\r\n this._listeners = {};\r\n}\r\n\r\n/** @alias util.EventEmitter.prototype */\r\nvar EventEmitterPrototype = EventEmitter.prototype;\r\n\r\n/**\r\n * Registers an event listener.\r\n * @param {string} evt Event name\r\n * @param {function} fn Listener\r\n * @param {Object} [ctx] Listener context\r\n * @returns {util.EventEmitter} `this`\r\n */\r\nEventEmitterPrototype.on = function on(evt, fn, ctx) {\r\n (this._listeners[evt] || (this._listeners[evt] = [])).push({\r\n fn : fn,\r\n ctx : ctx || this\r\n });\r\n return this;\r\n};\r\n\r\n/**\r\n * Removes an event listener.\r\n * @param {string} [evt] Event name. Removes all listeners if omitted.\r\n * @param {function} [fn] Listener to remove. Removes all listeners of `evt` if omitted.\r\n * @returns {util.EventEmitter} `this`\r\n */\r\nEventEmitterPrototype.off = function off(evt, fn) {\r\n if (evt === undefined)\r\n this._listeners = {};\r\n else {\r\n if (fn === undefined)\r\n this._listeners[evt] = [];\r\n else {\r\n var listeners = this._listeners[evt];\r\n for (var i = 0; i < listeners.length;)\r\n if (listeners[i].fn === fn)\r\n listeners.splice(i, 1);\r\n else\r\n ++i;\r\n }\r\n }\r\n return this;\r\n};\r\n\r\n/**\r\n * Emits an event by calling its listeners with the specified arguments.\r\n * @param {string} evt Event name\r\n * @param {...*} args Arguments\r\n * @returns {util.EventEmitter} `this`\r\n */\r\nEventEmitterPrototype.emit = function emit(evt) {\r\n var listeners = this._listeners[evt];\r\n if (listeners) {\r\n var args = Array.prototype.slice.call(arguments, 1);\r\n for (var i = 0; i < listeners.length; ++i)\r\n listeners[i].fn.apply(listeners[i].ctx, args);\r\n }\r\n return this;\r\n};\r\n","\"use strict\";\r\n\r\nmodule.exports = LongBits;\r\n\r\nvar util = require(25);\r\n\r\n/**\r\n * Any compatible Long instance.\r\n * @typedef Long\r\n * @type {Object}\r\n * @property {number} low Low bits\r\n * @property {number} high High bits\r\n * @property {boolean} unsigned Whether unsigned or not\r\n */\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 = LongBits.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 * Constructs new long bits from a number, long or string.\r\n * @param {Long|number|string} value Value\r\n * @returns {util.LongBits} Instance\r\n * @throws {TypeError} If `value` is a string and no long library is present.\r\n */\r\nLongBits.from = function from(value) {\r\n switch (typeof value) { // eslint-disable-line default-case\r\n case 'number':\r\n return LongBits.fromNumber(value);\r\n case 'string':\r\n value = util.Long.fromString(value); // throws without a long lib\r\n }\r\n return (value.low || value.high) && new LongBits(value.low >>> 0, value.high >>> 0) || zero;\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 = pool;\r\n\r\n/**\r\n * A drop-in buffer pool, similar in functionality to what node uses for buffers.\r\n * @memberof util\r\n * @function\r\n * @param {function(number):Uint8Array} alloc Allocator\r\n * @param {function(number, number):Uint8Array} slice Slicer\r\n * @param {number} [size=8192] Slab size\r\n * @returns {function(number):Uint8Array} Pooled allocator\r\n */\r\nfunction pool(alloc, slice, size) {\r\n var SIZE = size || 8192;\r\n var MAX = SIZE >>> 1;\r\n var slab = null;\r\n var offset = SIZE;\r\n return function pool_alloc(size) {\r\n if (size > MAX)\r\n return alloc(size);\r\n if (offset + size > SIZE) {\r\n slab = alloc(SIZE);\r\n offset = 0;\r\n }\r\n var buf = slice.call(slab, offset, offset += size);\r\n if (offset & 7) // align to 32 bit\r\n offset = (offset | 7) + 1;\r\n return buf;\r\n };\r\n}\r\n","\"use strict\";\r\n\r\nvar util = exports;\r\n\r\nvar LongBits = util.LongBits = require(\"./longbits\");\r\n\r\nutil.pool = require(\"./pool\");\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 {*}\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 {*}\r\n */\r\nutil.Long = global.dcodeIO && global.dcodeIO.Long || null;\r\n\r\nif (!util.Long && isNode)\r\n try { util.Long = require(\"long\"); } catch (e) {} // eslint-disable-line no-empty\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 * Defines the specified properties on the specified target. Also adds getters and setters for non-ES5 environments.\r\n * @param {Object} target Target object\r\n * @param {Object} descriptors Property descriptors\r\n * @returns {undefined}\r\n */\r\nutil.props = function props(target, descriptors) {\r\n Object.keys(descriptors).forEach(function(key) {\r\n util.prop(target, key, descriptors[key]);\r\n });\r\n};\r\n\r\n/**\r\n * Defines the specified property on the specified target. Also adds getters and setters for non-ES5 environments.\r\n * @param {Object} target Target object\r\n * @param {string} key Property name\r\n * @param {Object} descriptor Property descriptor\r\n * @returns {undefined}\r\n */\r\nutil.prop = function prop(target, key, descriptor) {\r\n var ie8 = !-[1,];\r\n var ucKey = key.substring(0, 1).toUpperCase() + key.substring(1);\r\n if (descriptor.get)\r\n target['get' + ucKey] = descriptor.get;\r\n if (descriptor.set)\r\n target['set' + ucKey] = ie8\r\n ? function(value) {\r\n descriptor.set.call(this, value);\r\n this[key] = value;\r\n }\r\n : descriptor.set;\r\n if (ie8) {\r\n if (descriptor.value !== undefined)\r\n target[key] = descriptor.value;\r\n } else\r\n Object.defineProperty(target, key, descriptor);\r\n};\r\n\r\n/**\r\n * An immuable empty array.\r\n * @memberof util\r\n * @type {Array.<*>}\r\n */\r\nutil.emptyArray = Object.freeze([]);\r\n\r\n/**\r\n * An immutable empty object.\r\n * @type {Object}\r\n */\r\nutil.emptyObject = Object.freeze({});\r\n","\"use strict\";\r\nmodule.exports = Writer;\r\n\r\nWriter.BufferWriter = BufferWriter;\r\n\r\nvar util = require(29),\r\n ieee754 = require(1);\r\nvar LongBits = util.LongBits,\r\n ArrayImpl = typeof Uint8Array !== 'undefined' ? Uint8Array : Array;\r\n\r\n/**\r\n * Constructs a new writer operation instance.\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 instance.\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 * @param {State} next Next state entry\r\n * @private\r\n * @ignore\r\n */\r\nfunction State(writer, next) {\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\n * Next state.\r\n * @type {?State}\r\n */\r\n this.next = next;\r\n}\r\n\r\nWriter.State = State;\r\n\r\n/**\r\n * Constructs a new writer instance.\r\n * @classdesc Wire format writer using `Uint8Array` if available, otherwise `Array`.\r\n * @constructor\r\n */\r\nfunction 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 * Linked forked states.\r\n * @type {?Object}\r\n */\r\n this.states = null;\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/**\r\n * Creates a new writer.\r\n * @returns {BufferWriter|Writer} A {@link BufferWriter} when Buffers are supported, otherwise a {@link Writer}\r\n */\r\nWriter.create = function create() {\r\n return new (util.Buffer && BufferWriter || Writer);\r\n};\r\n\r\n/**\r\n * Allocates a buffer of the specified size.\r\n * @param {number} size Buffer size\r\n * @returns {Uint8Array} Buffer\r\n */\r\nWriter.alloc = function alloc(size) {\r\n return new ArrayImpl(size);\r\n};\r\n\r\n// Use Uint8Array buffer pool in the browser, just like node does with buffers\r\nif (ArrayImpl !== Array)\r\n Writer.alloc = util.pool(Writer.alloc, ArrayImpl.prototype.subarray || ArrayImpl.prototype.slice);\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 value < 128\r\n ? this.push(writeByte, 1, value)\r\n : this.push(writeVarint32,\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) {\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 while (val.lo > 127) {\r\n buf[pos++] = val.lo & 127 | 128;\r\n val.lo = val.lo >>> 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|string} value Value to write\r\n * @returns {Writer} `this`\r\n * @throws {TypeError} If `value` is a string and no long library is present.\r\n */\r\nWriterPrototype.uint64 = function write_uint64(value) {\r\n var bits = LongBits.from(value);\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|string} value Value to write\r\n * @returns {Writer} `this`\r\n * @throws {TypeError} If `value` is a string and no long library is present.\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|string} value Value to write\r\n * @returns {Writer} `this`\r\n * @throws {TypeError} If `value` is a string and no long library is present.\r\n */\r\nWriterPrototype.sint64 = function write_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;\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\n/**\r\n * Writes a 64 bit value as fixed 64 bits.\r\n * @param {Long|number|string} value Value to write\r\n * @returns {Writer} `this`\r\n * @throws {TypeError} If `value` is a string and no long library is present.\r\n */\r\nWriterPrototype.fixed64 = function write_fixed64(value) {\r\n var bits = LongBits.from(value);\r\n return this.push(writeFixed32, 4, bits.hi).push(writeFixed32, 4, bits.lo);\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|string} value Value to write\r\n * @returns {Writer} `this`\r\n * @throws {TypeError} If `value` is a string and no long library is present.\r\n */\r\nWriterPrototype.sfixed64 = function write_sfixed64(value) {\r\n var bits = LongBits.from(value).zzEncode();\r\n return this.push(writeFixed32, 4, bits.hi).push(writeFixed32, 4, bits.lo);\r\n};\r\n\r\nvar writeFloat = typeof Float32Array !== 'undefined'\r\n ? (function() { // eslint-disable-line wrap-iife\r\n var f32 = new Float32Array(1),\r\n f8b = new Uint8Array(f32.buffer);\r\n f32[0] = -0;\r\n return f8b[3] // already le?\r\n ? function writeFloat_f32(buf, pos, val) {\r\n f32[0] = val;\r\n buf[pos++] = f8b[0];\r\n buf[pos++] = f8b[1];\r\n buf[pos++] = f8b[2];\r\n buf[pos ] = f8b[3];\r\n }\r\n : function writeFloat_f32_le(buf, pos, val) {\r\n f32[0] = val;\r\n buf[pos++] = f8b[3];\r\n buf[pos++] = f8b[2];\r\n buf[pos++] = f8b[1];\r\n buf[pos ] = f8b[0];\r\n };\r\n })()\r\n : function writeFloat_ieee754(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\nvar writeDouble = typeof Float64Array !== 'undefined'\r\n ? (function() { // eslint-disable-line wrap-iife\r\n var f64 = new Float64Array(1),\r\n f8b = new Uint8Array(f64.buffer);\r\n f64[0] = -0;\r\n return f8b[7] // already le?\r\n ? function writeDouble_f64(buf, pos, val) {\r\n f64[0] = val;\r\n buf[pos++] = f8b[0];\r\n buf[pos++] = f8b[1];\r\n buf[pos++] = f8b[2];\r\n buf[pos++] = f8b[3];\r\n buf[pos++] = f8b[4];\r\n buf[pos++] = f8b[5];\r\n buf[pos++] = f8b[6];\r\n buf[pos ] = f8b[7];\r\n }\r\n : function writeDouble_f64_le(buf, pos, val) {\r\n f64[0] = val;\r\n buf[pos++] = f8b[7];\r\n buf[pos++] = f8b[6];\r\n buf[pos++] = f8b[5];\r\n buf[pos++] = f8b[4];\r\n buf[pos++] = f8b[3];\r\n buf[pos++] = f8b[2];\r\n buf[pos++] = f8b[1];\r\n buf[pos ] = f8b[0];\r\n };\r\n })()\r\n : function writeDouble_ieee754(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) {\r\n buf.set(val, pos);\r\n }\r\n : function writeBytes_for(buf, pos, val) {\r\n for (var i = 0; i < val.length; ++i)\r\n buf[pos + i] = val[i];\r\n };\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 && ((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 var len = 0;\r\n for (var i = 0; i < strlen; ++i) {\r\n var 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 && (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\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#}, {@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.states = new State(this, this.states);\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.states) {\r\n this.head = this.states.head;\r\n this.tail = this.states.tail;\r\n this.len = this.states.len;\r\n this.states = this.states.next;\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 as a tag 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 = this.constructor.alloc(this.len);\r\n this.reset();\r\n var pos = 0;\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 instance.\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/**\r\n * Allocates a buffer of the specified size.\r\n * @param {number} size Buffer size\r\n * @returns {Uint8Array} Buffer\r\n */\r\nBufferWriter.alloc = function alloc_buffer(size) {\r\n BufferWriter.alloc = util.Buffer.allocUnsafe\r\n ? util.Buffer.allocUnsafe\r\n : function allocUnsafeNew(size) { return new util.Buffer(size); };\r\n return BufferWriter.alloc(size);\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\nif (typeof Float32Array === 'undefined') // f32 is faster (node 6.9.1)\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\nif (typeof Float64Array === 'undefined') // f64 is faster (node 6.9.1)\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 // This could probably be optimized just like writeStringBuffer, but most real use cases won't benefit much.\r\n}\r\n\r\nif (!(ArrayImpl.prototype.set && util.Buffer && util.Buffer.prototype.set)) // set is faster (node 6.9.1)\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\nvar writeStringBuffer = (function() { // eslint-disable-line wrap-iife\r\n return util.Buffer && util.Buffer.prototype.utf8Write // around forever, but not present in browser buffer\r\n ? function writeString_buffer_utf8Write(buf, pos, val) {\r\n if (val.length < 40)\r\n writeString(buf, pos, val);\r\n else\r\n buf.utf8Write(val, pos);\r\n }\r\n : function writeString_buffer_write(buf, pos, val) {\r\n if (val.length < 40)\r\n writeString(buf, pos, val);\r\n else\r\n buf.write(val, pos);\r\n };\r\n // Note that the plain JS encoder is faster for short strings, probably because of redundant assertions.\r\n // For a raw utf8Write, the breaking point is about 20 characters, for write it is around 40 characters.\r\n // Unfortunately, this does not translate 1:1 to real use cases, hence the common \"good enough\" limit of 40.\r\n})();\r\n\r\n/**\r\n * @override\r\n */\r\nBufferWriterPrototype.string = function write_string_buffer(value) {\r\n var len = value.length < 40\r\n ? byteLength(value)\r\n : util.Buffer.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","\"use strict\";\r\nvar protobuf = global.protobuf = exports;\r\n\r\n/**\r\n * Loads one or multiple .proto or preprocessed .json files into a common root namespace and calls the callback.\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 {undefined}\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);\r\n}\r\n// function load(filename:string, root:Root, callback:function):undefined\r\n\r\n/**\r\n * Loads one or multiple .proto or preprocessed .json files into a common root namespace and calls the callback.\r\n * @name load\r\n * @function\r\n * @param {string|string[]} filename One or multiple files to load\r\n * @param {function(?Error, Root=)} callback Callback function\r\n * @returns {undefined}\r\n * @variation 2\r\n */\r\n// function load(filename:string, callback:function):undefined\r\n\r\n/**\r\n * Loads one or multiple .proto or preprocessed .json files into a common root namespace and returns a promise.\r\n * @name load\r\n * @function\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 * @returns {Promise} Promise\r\n * @variation 3\r\n */\r\n// function load(filename:string, [root:Root]):Promise\r\n\r\nprotobuf.load = load;\r\n\r\n/**\r\n * Synchronously loads one or multiple .proto or preprocessed .json files into a common root namespace (node only).\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 * @returns {Root} Root namespace\r\n * @throws {Error} If synchronous fetching is not supported (i.e. in browsers) or if a file's syntax is invalid\r\n */\r\nfunction loadSync(filename, root) {\r\n if (!root)\r\n root = new protobuf.Root();\r\n return root.loadSync(filename);\r\n}\r\n\r\nprotobuf.loadSync = loadSync;\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.codegen = require(\"./codegen\");\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.Class = require(\"./class\");\r\nprotobuf.Message = require(\"./message\");\r\n\r\n// Utility\r\nprotobuf.types = require(\"./types\");\r\nprotobuf.common = require(\"./common\");\r\nprotobuf.rpc = require(\"./rpc\");\r\nprotobuf.util = require(\"./util\");\r\n\r\n// Be nice to AMD\r\nif (typeof define === 'function' && define.amd)\r\n define([\"long\"], function(Long) {\r\n if (Long) {\r\n protobuf.util.Long = Long;\r\n protobuf.Reader.configure();\r\n }\r\n return protobuf;\r\n });\r\n"],"sourceRoot":"."}
\ No newline at end of file
diff --git a/dist/protobuf.min.js b/dist/protobuf.min.js
index f5b796abf..62b80fecb 100644
--- a/dist/protobuf.min.js
+++ b/dist/protobuf.min.js
@@ -1,9 +1,9 @@
/*!
* protobuf.js v6.1.0 (c) 2016 Daniel Wirtz
- * Compiled Thu, 08 Dec 2016 19:14:46 UTC
+ * Compiled Fri, 09 Dec 2016 01:15:36 UTC
* Licensed under the Apache License, Version 2.0
* see: https://github.com/dcodeIO/protobuf.js for details
*/
-!function t(e,i,r){function n(o,u){if(!i[o]){if(!e[o]){var a="function"==typeof require&&require;if(!u&&a)return a(o,!0);if(s)return s(o,!0);var f=new Error("Cannot find module '"+o+"'");throw f.code="MODULE_NOT_FOUND",f}var l=i[o]={exports:{}};e[o][0].call(l.exports,function(t){var i=e[o][1][t];return n(i?i:t)},l,l.exports,t,e,i,r)}return i[o].exports}for(var s="function"==typeof require&&require,o=0;o>1,l=-7,h=i?0:n-1,c=i?1:-1,d=t[e+h];for(h+=c,s=d&(1<<-l)-1,d>>=-l,l+=u;l>0;s=256*s+t[e+h],h+=c,l-=8);for(o=s&(1<<-l)-1,s>>=-l,l+=r;l>0;o=256*o+t[e+h],h+=c,l-=8);if(0===s)s=1-f;else{if(s===a)return o?NaN:(d?-1:1)*(1/0);o+=Math.pow(2,r),s-=f}return(d?-1:1)*o*Math.pow(2,s-r)},i.write=function(t,e,i,r,n,s){var o,u,a,f=8*s-n-1,l=(1<>1,c=23===n?Math.pow(2,-24)-Math.pow(2,-77):0,d=r?s-1:0,p=r?-1:1,v=e<0||0===e&&1/e<0?1:0;for(e=Math.abs(e),isNaN(e)||e===1/0?(u=isNaN(e)?1:0,o=l):(o=Math.floor(Math.log(e)/Math.LN2),e*(a=Math.pow(2,-o))<1&&(o--,a*=2),e+=o+h>=1?c/a:c*Math.pow(2,1-h),e*a>=2&&(o++,a/=2),o+h>=l?(u=0,o=l):o+h>=1?(u=(e*a-1)*Math.pow(2,n),o+=h):(u=e*Math.pow(2,h-1)*Math.pow(2,n),o=0));n>=8;t[i+d]=255&u,d+=p,u/=256,n-=8);for(o=o<0;t[i+d]=255&o,d+=p,o/=256,f-=8);t[i+d-p]|=128*v}},{}],2:[function(t,e,i){"use strict";function r(){function t(){var e=n.sprintf.apply(null,arguments),i=c;if(h.length){var r=h[h.length-1];s.test(r)?i=++c:a.test(r)&&++i,u.test(r)&&!u.test(e)?(i=++c,d=!0):d&&f.test(r)&&(i=--c,d=!1),o.test(e)&&(i=--c)}for(var l=0;l ").replace(/\t/g," "));var s=Object.keys(i||(i={}));return Function.apply(null,s.concat("return "+n)).apply(null,s.map(function(t){return i[t]}))}var l=Array.prototype.slice.call(arguments),h=['\t"use strict"'],c=1,d=!1;return t.str=e,t.eof=i,t}e.exports=r;var n=t(25),s=/[{[]$/,o=/^[}\]]/,u=/:$/,a=/^\s*(?:if|else if|while|for)\b|\b(?:else)\s*$/,f=/\b(?:break|continue);?$|^\s*return\b/;r.supported=!1;try{r.supported=1===r("a","b")("return a-b").eof()(2,1)}catch(t){}r.verbose=!1,r.encode=t(4),r.decode=t(3),r.verify=t(5)},{25:25,3:3,4:4,5:5}],3:[function(t,e,i){"use strict";var r=i,n=t(7),s=t(17),o=t(24),u=t(25),a=t(2);r.fallback=function(t,e){for(var i=this.getFieldsById(),r=t instanceof s?t:s.create(t),a=void 0===e?r.len:r.pos+e,f=new(this.getCtor());r.pos-1;--i)if(e.oneof.indexOf(t[i])>-1)return t[i]},set:function(t){for(var i=e.oneof,r=0;r0;){var n=t.shift();if(i.nested&&i.nested[n]){if(i=i.nested[n],!(i instanceof r))throw Error("path conflicts with non-namespace objects")}else i.add(i=new r(n))}return e&&i.addJSON(e),i},u.resolveAll=function(){for(var t=this.getNestedArray(),e=0;e-1&&this.oneof.splice(e,1),t.parent&&t.parent.remove(t),t.partOf=null,this},o.onAdd=function(t){s.prototype.onAdd.call(this,t),n(this)},o.onRemove=function(t){this.g.forEach(function(t){t.parent&&t.parent.remove(t)}),s.prototype.onRemove.call(this,t)}},{13:13,25:25,8:8}],15:[function(t,e,i){"use strict";function r(t){return null===t?null:t.toLowerCase()}function n(t,e){function i(t,e){return Error("illegal "+(e||"token")+" '"+t+"' (line "+rt.line()+F)}function n(){var t,e=[];do{if((t=nt())!==B&&t!==J)throw i(t);e.push(nt()),ut(t),t=ot()}while(t===B||t===J);return e.join("")}function v(t){var e=nt();switch(r(e)){case J:case B:return st(e),n();case"true":return!0;case"false":return!1}try{return z(e)}catch(r){if(t&&m.test(e))return e;throw i(e,"value")}}function q(){var t=L(nt()),e=t;return ut("to",!0)&&(e=L(nt())),ut(E),[t,e]}function z(t){var e=1;"-"===t.charAt(0)&&(e=-1,t=t.substring(1));var n=r(t);switch(n){case"inf":return e*(1/0);case"nan":return NaN;case"0":return 0}if(/^[1-9][0-9]*$/.test(t))return e*parseInt(t,10);if(/^0[x][0-9a-f]+$/.test(n))return e*parseInt(t,16);if(/^0[0-7]+$/.test(t))return e*parseInt(t,8);if(/^(?!e)[0-9]*(?:\.[0-9]*)?(?:[e][+-]?[0-9]+)?$/.test(n))return e*parseFloat(t);throw i(t,"number")}function L(t,e){var n=r(t);switch(n){case"min":return 1;case"max":return 536870911;case"0":return 0}if("-"===t.charAt(0)&&!e)throw i(t,"id");if(/^-?[1-9][0-9]*$/.test(t))return parseInt(t,10);if(/^-?0[x][0-9a-f]+$/.test(n))return parseInt(t,16);if(/^-?0[0-7]+$/.test(t))return parseInt(t,8);throw i(t,"id")}function V(){if(void 0!==Y)throw i("package");if(Y=nt(),!m.test(Y))throw i(Y,A);ht=ht.define(Y),ut(E)}function P(){var t,e=ot();switch(e){case"weak":t=et||(et=[]),nt();break;case"public":nt();default:t=tt||(tt=[])}e=n(),ut(E),t.push(e)}function $(){ut("="),it=r(n());var t;if(["proto2",t="proto3"].indexOf(it)<0)throw i(it,"syntax");ft=it===t,ut(E)}function R(t,e){switch(e){case O:return K(t,e),ut(E),!0;case"message":return I(t,e),!0;case"enum":return D(t,e),!0;case"service":return G(t,e),!0;case"extend":return Q(t,e),!0}return!1}function I(t,e){var n=nt();if(!g.test(n))throw i(n,"type name");var s=new u(n);if(ut(S,!0)){for(;(e=nt())!==T;){var o=r(e);if(!R(s,e))switch(o){case"map":M(s,o);break;case b:case x:case k:C(s,o);break;case"oneof":U(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(!ft||!m.test(e))throw i(e);st(e),C(s,x)}}ut(E,!0)}else ut(E);t.add(s)}function C(t,e,r){var n=nt();if(!m.test(n))throw i(n,N);var s=nt();if(!g.test(s))throw i(s,A);s=y(s),ut("=");var o=L(nt()),u=Z(new a(s,o,n,e,r));u.repeated&&u.setOption("packed",ft,!0),t.add(u)}function M(t){ut("<");var e=nt();if(void 0===p.mapKey[e])throw i(e,N);ut(",");var r=nt();if(!m.test(r))throw i(r,N);ut(">");var n=nt();if(!g.test(n))throw i(n,A);n=y(n),ut("=");var s=L(nt()),o=Z(new f(n,s,e,r));t.add(o)}function U(t,e){var r=nt();if(!g.test(r))throw i(r,A);r=y(r);var n=new l(r);if(ut(S,!0)){for(;(e=nt())!==T;)e===O?(K(n,e),ut(E)):(st(e),C(n,x));ut(E,!0)}else ut(E);t.add(n)}function D(t,e){var n=nt();if(!g.test(n))throw i(n,A);var s={},o=new h(n,s);if(ut(S,!0)){for(;(e=nt())!==T;)r(e)===O?K(o):_(o,e);ut(E,!0)}else ut(E);t.add(o)}function _(t,e){if(!g.test(e))throw i(e,A);var r=e;ut("=");var n=L(nt(),!0);t.values[r]=n,Z({})}function K(t,e){var r=ut(j,!0),n=nt();if(!m.test(n))throw i(n,A);r&&(ut(F),n=j+n+F,e=ot(),w.test(e)&&(n+=e,nt())),ut("="),H(t,n)}function H(t,e){if(ut(S,!0))for(;(lt=nt())!==T;){if(!g.test(lt))throw i(lt,A);e=e+"."+lt,ut(":",!0)?W(t,e,v(!0)):H(t,e)}else W(t,e,v(!0))}function W(t,e,i){t.setOption?t.setOption(e,i):t[e]=i}function Z(t){if(ut("[",!0)){do K(t,O);while(ut(",",!0));ut("]")}return ut(E),t}function G(t,e){if(e=nt(),!g.test(e))throw i(e,"service name");var n=e,s=new c(n);if(ut(S,!0)){for(;(e=nt())!==T;){var o=r(e);switch(o){case O:K(s,o),ut(E);break;case"rpc":X(s,o);break;default:throw i(e)}}ut(E,!0)}else ut(E);t.add(s)}function X(t,e){var n=e,s=nt();if(!g.test(s))throw i(s,A);var o,u,a,f;ut(j);var l;if(ut(l="stream",!0)&&(u=!0),!m.test(e=nt()))throw i(e);if(o=e,ut(F),ut("returns"),ut(j),ut(l,!0)&&(f=!0),!m.test(e=nt()))throw i(e);a=e,ut(F);var h=new d(s,n,o,a,u,f);if(ut(S,!0)){for(;(e=nt())!==T;){var c=r(e);switch(c){case O:K(h,c),ut(E);break;default:throw i(e)}}ut(E,!0)}else ut(E);t.add(h)}function Q(t,e){var n=nt();if(!m.test(n))throw i(n,"reference");if(ut(S,!0)){for(;(e=nt())!==T;){var s=r(e);switch(s){case b:case k:case x:C(t,s,n);break;default:if(!ft||!m.test(e))throw i(e);st(e),C(t,x,n)}}ut(E,!0)}else ut(E)}e||(e=new o);var Y,tt,et,it,rt=s(t),nt=rt.next,st=rt.push,ot=rt.peek,ut=rt.skip,at=!0,ft=!1;e||(e=new o);for(var lt,ht=e;null!==(lt=nt());){var ct=r(lt);switch(ct){case"package":if(!at)throw i(lt);V();break;case"import":if(!at)throw i(lt);P();break;case"syntax":if(!at)throw i(lt);$();break;case O:if(!at)throw i(lt);K(ht,lt),ut(E);break;default:if(R(ht,lt)){at=!1;continue}throw i(lt)}}return{package:Y,imports:tt,weakImports:et,syntax:it,root:e}}e.exports=n;var s=t(22),o=t(18),u=t(23),a=t(8),f=t(10),l=t(14),h=t(7),c=t(21),d=t(11),p=t(24),v=t(25),y=v.camelCase,g=/^[a-zA-Z_][a-zA-Z_0-9]*$/,m=/^(?:\.?[a-zA-Z_][a-zA-Z_0-9]*)+$/,w=/^(?:\.[a-zA-Z][a-zA-Z_0-9]*)+$/,b="required",k="repeated",x="optional",O="option",A="name",N="type",S="{",T="}",j="(",F=")",E=";",B='"',J="'"},{10:10,11:11,14:14,18:18,21:21,22:22,23:23,24:24,25:25,7:7,8:8}],16:[function(t,e,i){"use strict";function r(t){if(t)for(var e=Object.keys(t),i=0;i "+t.len)}function n(){x.Long?(S.int64=a,S.uint64=l,S.sint64=c,S.fixed64=v,S.sfixed64=g):(S.int64=f,S.uint64=h,S.sint64=d,S.fixed64=y,S.sfixed64=m)}function s(t){this.buf=t,this.pos=0,this.len=t.length}function o(t,e){this.id=t,this.wireType=e}function u(){var t=0,e=0,i=0,n=0;if(this.len-this.pos>9){for(i=0;i<4;++i)if(n=this.buf[this.pos++],t|=(127&n)<<7*i,n<128)return new A(t>>>0,e>>>0);if(n=this.buf[this.pos++],t|=(127&n)<<28,e|=(127&n)>>4,n<128)return new A(t>>>0,e>>>0);for(i=0;i<5;++i)if(n=this.buf[this.pos++],e|=(127&n)<<7*i+3,n<128)return new A(t>>>0,e>>>0)}else{for(i=0;i<4;++i){if(this.pos>=this.len)throw r(this);if(n=this.buf[this.pos++],t|=(127&n)<<7*i,n<128)return new A(t>>>0,e>>>0)}if(this.pos>=this.len)throw r(this);if(n=this.buf[this.pos++],t|=(127&n)<<28,e|=(127&n)>>4,n<128)return new A(t>>>0,e>>>0);for(i=0;i<5;++i){if(this.pos>=this.len)throw r(this);if(n=this.buf[this.pos++],e|=(127&n)<<7*i+3,n<128)return new A(t>>>0,e>>>0)}}throw Error("invalid varint encoding")}function a(){return u.call(this).toLong()}function f(){return u.call(this).toNumber()}function l(){return u.call(this).toLong(!0)}function h(){return u.call(this).toNumber(!0)}function c(){return u.call(this).zzDecode().toLong()}function d(){return u.call(this).zzDecode().toNumber()}function p(){if(this.pos+8>this.len)throw r(this,8);return new A((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 v(){return p.call(this).toLong(!0)}function y(){return p.call(this).toNumber(!0)}function g(){return p.call(this).zzDecode().toLong()}function m(){return p.call(this).zzDecode().toNumber()}function w(t){F&&F(),s.call(this,t)}function b(t,e,i){return t.utf8Slice(e,i)}function k(t,e,i){return t.toString("utf8",e,i)}e.exports=s,s.BufferReader=w;var x=t(29),O=t(1),A=x.LongBits,N="undefined"!=typeof Uint8Array?Uint8Array:Array;s.configure=n,s.create=function(t){return new(x.Buffer&&x.Buffer.isBuffer(t)&&w||s)(t)};var S=s.prototype;S.h=N.prototype.subarray||N.prototype.slice,S.tag=function(){if(this.pos>=this.len)throw r(this);return new o(this.buf[this.pos]>>>3,7&this.buf[this.pos++])},S.int32=function(){var t=this.buf[this.pos++],e=127&t;if(t>127&&(t=this.buf[this.pos++],e|=(127&t)<<7,t>127&&(t=this.buf[this.pos++],e|=(127&t)<<14,t>127&&(t=this.buf[this.pos++],e|=(127&t)<<21,t>127&&(t=this.buf[this.pos++],e|=t<<28,t>127&&(this.pos+=5))))),this.pos>this.len)throw this.pos=this.len,r(this);return e},S.uint32=function(){return this.int32()>>>0},S.sint32=function(){var t=this.int32();return t>>>1^-(1&t)},S.bool=function(){return 0!==this.int32()},S.fixed32=function(){if(this.pos+4>this.len)throw r(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},S.sfixed32=function(){var t=this.fixed32();return t>>>1^-(1&t)};var T="undefined"!=typeof Float32Array?function(){var t=new Float32Array(1),e=new Uint8Array(t.buffer);return t[0]=-0,e[3]?function(i,r){return e[0]=i[r++],e[1]=i[r++],e[2]=i[r++],e[3]=i[r],t[0]}:function(i,r){return e[3]=i[r++],e[2]=i[r++],e[1]=i[r++],e[0]=i[r],t[0]}}():function(t,e){return O.read(t,e,!1,23,4)};S.float=function(){if(this.pos+4>this.len)throw r(this,4);var t=T(this.buf,this.pos);return this.pos+=4,t};var j="undefined"!=typeof Float64Array?function(){var t=new Float64Array(1),e=new Uint8Array(t.buffer);return t[0]=-0,e[7]?function(i,r){return e[0]=i[r++],e[1]=i[r++],e[2]=i[r++],e[3]=i[r++],e[4]=i[r++],e[5]=i[r++],e[6]=i[r++],e[7]=i[r],t[0]}:function(i,r){return e[7]=i[r++],e[6]=i[r++],e[5]=i[r++],e[4]=i[r++],e[3]=i[r++],e[2]=i[r++],e[1]=i[r++],e[0]=i[r],t[0]}}():function(t,e){return O.read(t,e,!1,52,8)};S.double=function(){if(this.pos+8>this.len)throw r(this,4);var t=j(this.buf,this.pos);return this.pos+=8,t},S.bytes=function(){var t=this.int32()>>>0,e=this.pos,i=this.pos+t;if(i>this.len)throw r(this,t);return this.pos+=t,e===i?new this.buf.constructor(0):this.h.call(this.buf,e,i)},S.string=function(){var t=this.bytes(),e=t.length;if(e){for(var i=new Array(e),r=0,n=0;r191&&s<224)i[n++]=(31&s)<<6|63&t[r++];else if(s>239&&s<365){var o=((7&s)<<18|(63&t[r++])<<12|(63&t[r++])<<6|63&t[r++])-65536;i[n++]=55296+(o>>10),i[n++]=56320+(1023&o)}else i[n++]=(15&s)<<12|(63&t[r++])<<6|63&t[r++]}return String.fromCharCode.apply(String,i.slice(0,n))}return""},S.skip=function(t){if(void 0===t){do if(this.pos>=this.len)throw r(this);while(128&this.buf[this.pos++])}else{if(this.pos+t>this.len)throw r(this,t);this.pos+=t}return this},S.skipType=function(t){switch(t){case 0:this.skip();break;case 1:this.skip(8);break;case 2:this.skip(this.uint32());break;case 3:for(;;){var e=this.tag();if(4===e.wireType)break;this.skipType(e.wireType)}break;case 5:this.skip(4);break;default:throw Error("invalid wire type: "+t)}return this},S.reset=function(t){return t?(this.buf=t,
-this.len=t.length):(this.buf=null,this.len=0),this.pos=0,this},S.finish=function(t){var e=this.pos?this.h.call(this.buf,this.pos):this.buf;return this.reset(t),e};var F=function(){if(!x.Buffer)throw Error("Buffer is not supported");E.h=x.Buffer.prototype.slice,B=x.Buffer.prototype.utf8Slice?b:k,F=!1},E=w.prototype=Object.create(s.prototype);E.constructor=w,"undefined"==typeof Float32Array&&(E.float=function(){if(this.pos+4>this.len)throw r(this,4);var t=this.buf.readFloatLE(this.pos,!0);return this.pos+=4,t}),"undefined"==typeof Float64Array&&(E.double=function(){if(this.pos+8>this.len)throw r(this,8);var t=this.buf.readDoubleLE(this.pos,!0);return this.pos+=8,t});var B;E.string=function(){var t=this.int32()>>>0,e=this.pos,i=this.pos+t;if(i>this.len)throw r(this,t);return this.pos+=t,B(this.buf,e,i)},E.finish=function(t){var e=this.pos?this.buf.slice(this.pos):this.buf;return this.reset(t),e},n()},{1:1,29:29}],18:[function(t,e,i){"use strict";function r(t){o.call(this,"",t),this.deferred=[],this.files=[]}function n(){}function s(t){var e=t.parent.lookup(t.extend);if(e){var i=new a(t.getFullName(),t.id,t.type,t.rule,(void 0),t.options);return i.declaringField=t,t.extensionField=i,e.add(i),!0}return!1}e.exports=r;var o=t(12),u=o.extend(r),a=t(8),f=t(25),l=t(6);r.fromJSON=function(t,e){return e||(e=new r),e.setOptions(t.options).addJSON(t.nested)},u.resolvePath=f.resolvePath,u.load=function e(i,r){function s(t,e){if(r){var i=r;r=null,i(t,e)}}function o(e,i){try{if(f.isString(i)&&"{"===i.charAt(0)&&(i=JSON.parse(i)),f.isString(i)){var r=t(15)(i,a);r.imports&&r.imports.forEach(function(t){u(a.resolvePath(e,t))}),r.weakImports&&r.weakImports.forEach(function(t){u(a.resolvePath(e,t),!0)})}else a.setOptions(i.options).addJSON(i.nested)}catch(t){return void s(t)}h||c||s(null,a)}function u(t,e){var i=t.indexOf("google/protobuf/");if(i>-1){var n=t.substring(i);n in l&&(t=n)}if(!(a.files.indexOf(t)>-1)){if(a.files.push(t),t in l)return void(h?o(t,l[t]):(++c,setTimeout(function(){--c,o(t,l[t])})));if(h){var u;try{u=f.fs.readFileSync(t).toString("utf8")}catch(t){return void(e||s(t))}o(t,u)}else++c,f.fetch(t,function(i,n){if(--c,r)return i?void(e||s(i)):void o(t,n)})}}var a=this;if(!r)return f.asPromise(e,a,i);var h=r===n,c=0;return f.isString(i)&&(i=[i]),i.forEach(function(t){u(a.resolvePath("",t))}),h?a:void(c||s(null,a))},u.loadSync=function(t){return this.load(t,n)},u.e=function(t){var e=this.deferred.slice();this.deferred=[];for(var i=0;i-1&&this.deferred.splice(e,1)}t.extensionField&&(t.extensionField.parent.remove(t.extensionField),t.extensionField=null)}else if(t instanceof o)for(var i=t.getNestedArray(),r=0;r0)return m.shift();if(w)return i();var r,o,u;do{if(v===y)return null;for(r=!1;/\s/.test(u=n(v));)if(u===a&&++g,++v===y)return null;if(n(v)===f){if(++v===y)throw e("comment");if(n(v)===f){for(;n(++v)!==a;)if(v===y)return null;++v,++g,r=!0}else{if((u=n(v))!==l)return f;do{if(u===a&&++g,++v===y)return null;o=u,u=n(v)}while(o!==l||u!==f);++v,r=!0}}}while(r);if(v===y)return null;var h=v;s.lastIndex=0;var c=s.test(n(h++));if(!c)for(;h]/g,o=/(?:"([^"\\]*(?:\\.[^"\\]*)*)")/g,u=/(?:'([^'\\]*(?:\\.[^'\\]*)*)')/g,a="\n",f="/",l="*"},{}],23:[function(t,e,i){"use strict";function r(t,e){s.call(this,t,e),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,this.n=null}function n(t){return t.j=t.k=t.m=t.n=null,delete t.encode,delete t.decode,t}e.exports=r;var s=t(12),o=s.prototype,u=s.extend(r),a=t(7),f=t(14),l=t(8),h=t(21),c=t(16),d=t(17),p=t(30),v=t(9),y=t(25),g=t(2);y.props(u,{fieldsById:{get:function(){if(this.j)return this.j;this.j={};for(var t=Object.keys(this.fields),e=0;e0?e.splice(--n,2):i?e.splice(n,1):++n:"."===e[n]?e.splice(n,1):++n;return r+e.join("/")}var util=exports;util.isString=isString,util.isObject=function(t){return Boolean(t&&"object"==typeof t)},util.isInteger=Number.isInteger||function(t){return"number"==typeof t&&isFinite(t)&&Math.floor(t)===t},util.toArray=function(t){if(!t)return[];for(var e=Object.keys(t),i=e.length,r=new Array(i),n=0;n>>0,n=(t-i)/4294967296>>>0;return e&&(n=~n>>>0,i=~i>>>0,++i>4294967295&&(i=0,++n>4294967295&&(n=0))),new r(i,n)},r.from=function(t){switch(typeof t){case"number":return r.fromNumber(t);case"string":t=n.Long.fromString(t)}return(t.low||t.high)&&new r(t.low>>>0,t.high>>>0)||o},s.toNumber=function(t){return!t&&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(t){return new n.Long(this.lo,this.hi,t)};var u=String.prototype.charCodeAt;r.fromHash=function(t){return new r((u.call(t,0)|u.call(t,1)<<8|u.call(t,2)<<16|u.call(t,3)<<24)>>>0,(u.call(t,4)|u.call(t,5)<<8|u.call(t,6)<<16|u.call(t,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 t=this.hi>>31;return this.hi=((this.hi<<1|this.lo>>>31)^t)>>>0,this.lo=(this.lo<<1^t)>>>0,this},s.zzDecode=function(){var t=-(1&this.lo);return this.lo=((this.lo>>>1|this.hi<<31)^t)>>>0,this.hi=(this.hi>>>1^t)>>>0,this},s.length=function(){var t=this.lo,e=(this.lo>>>28|this.hi<<4)>>>0,i=this.hi>>>24;return 0===i?0===e?t<16384?t<128?1:2:t<1<<21?3:4:e<16384?e<128?5:6:e<1<<21?7:8:i<128?9:10}},{25:25}],28:[function(t,e,i){"use strict";function r(t,e,i){var r=i||8192,n=r>>>1,s=null,o=r;return function(i){if(i>n)return t(i);o+i>r&&(s=t(r),o=0);var u=e.call(s,o,o+=i);return 7&o&&(o=(7|o)+1),u}}e.exports=r},{}],29:[function(t,e,i){(function(e){"use strict";var r=i,n=r.LongBits=t(27);r.pool=t(28);var s=r.isNode=Boolean(e.process&&e.process.versions&&e.process.versions.node);if(r.Buffer=null,s)try{r.Buffer=t("buffer").Buffer}catch(t){}if(r.Long=e.dcodeIO&&e.dcodeIO.Long||null,!r.Long&&s)try{r.Long=t("long")}catch(t){}r.longToHash=function(t){return t?n.from(t).toHash():"\0\0\0\0\0\0\0\0"},r.longFromHash=function(t,e){var i=n.fromHash(t);return r.Long?r.Long.fromBits(i.lo,i.hi,e):i.toNumber(Boolean(e))},r.longNeq=function(t,e){return"number"==typeof t?"number"==typeof e?t!==e:(t=n.fromNumber(t)).lo!==e.low||t.hi!==e.high:"number"==typeof e?(e=n.fromNumber(e)).lo!==t.low||e.hi!==t.high:t.low!==e.low||t.high!==e.high},r.props=function(t,e){Object.keys(e).forEach(function(i){r.prop(t,i,e[i])})},r.prop=function(t,e,i){var r=!-[1],n=e.substring(0,1).toUpperCase()+e.substring(1);i.get&&(t["get"+n]=i.get),i.set&&(t["set"+n]=r?function(t){i.set.call(this,t),this[e]=t}:i.set),r?void 0!==i.value&&(t[e]=i.value):Object.defineProperty(t,e,i)},r.emptyArray=Object.freeze([]),r.emptyObject=Object.freeze({})}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{27:27,28:28,buffer:"buffer",long:"long"}],30:[function(t,e,i){"use strict";function r(t,e,i){this.fn=t,this.val=e,this.len=i,this.next=null}function n(){}function s(t,e){this.head=t.head,this.tail=t.tail,this.len=t.len,this.next=e}function o(){this.len=0,this.head=new r(n,0,0),this.tail=this.head,this.states=null}function u(t,e,i){t[e]=255&i}function a(t,e,i){for(;i>127;)t[e++]=127&i|128,i>>>=7;t[e]=i}function f(t,e,i){for(;i.hi;)t[e++]=127&i.lo|128,i.lo=(i.lo>>>7|i.hi<<25)>>>0,i.hi>>>=7;for(;i.lo>127;)t[e++]=127&i.lo|128,i.lo=i.lo>>>7;t[e++]=i.lo}function l(t,e,i){t[e++]=255&i,t[e++]=i>>>8&255,t[e++]=i>>>16&255,t[e]=i>>>24}function h(t,e,i){for(var r=0;r>6|192,t[e++]=63&s|128):55296===(64512&s)&&56320===(64512&(n=i.charCodeAt(r+1)))?(s=65536+((1023&s)<<10)+(1023&n),++r,t[e++]=s>>18|240,t[e++]=s>>12&63|128,t[e++]=s>>6&63|128,t[e++]=63&s|128):(t[e++]=s>>12|224,t[e++]=s>>6&63|128,t[e++]=63&s|128)}}function c(t){for(var e=t.length>>>0,i=0,r=0;r>>=0,t<128?this.push(u,1,t):this.push(a,t<16384?2:t<2097152?3:t<268435456?4:5,t)},k.int32=function(t){return t<0?this.push(f,10,w.fromNumber(t)):this.uint32(t)},k.sint32=function(t){return this.uint32(t<<1^t>>31)},k.uint64=function(t){var e=w.from(t);return this.push(f,e.length(),e)},k.int64=k.uint64,k.sint64=function(t){var e=w.from(t).zzEncode();return this.push(f,e.length(),e)},k.bool=function(t){return this.push(u,1,t?1:0)},k.fixed32=function(t){return this.push(l,4,t>>>0)},k.sfixed32=function(t){return this.push(l,4,t<<1^t>>31)},k.fixed64=function(t){var e=w.from(t);return this.push(l,4,e.hi).push(l,4,e.lo)},k.sfixed64=function(t){var e=w.from(t).zzEncode();return this.push(l,4,e.hi).push(l,4,e.lo)};var x="undefined"!=typeof Float32Array?function(){var t=new Float32Array(1),e=new Uint8Array(t.buffer);return t[0]=-0,e[3]?function(i,r,n){t[0]=n,i[r++]=e[0],i[r++]=e[1],i[r++]=e[2],i[r]=e[3]}:function(i,r,n){t[0]=n,i[r++]=e[3],i[r++]=e[2],i[r++]=e[1],i[r]=e[0]}}():function(t,e,i){m.write(t,i,e,!1,23,4)};k.float=function(t){return this.push(x,4,t)};var O="undefined"!=typeof Float64Array?function(){var t=new Float64Array(1),e=new Uint8Array(t.buffer);return t[0]=-0,e[7]?function(i,r,n){t[0]=n,i[r++]=e[0],i[r++]=e[1],i[r++]=e[2],i[r++]=e[3],i[r++]=e[4],i[r++]=e[5],i[r++]=e[6],i[r]=e[7]}:function(i,r,n){t[0]=n,i[r++]=e[7],i[r++]=e[6],i[r++]=e[5],i[r++]=e[4],i[r++]=e[3],i[r++]=e[2],i[r++]=e[1],i[r]=e[0]}}():function(t,e,i){m.write(t,i,e,!1,52,8)};k.double=function(t){return this.push(O,8,t)};var A=b.prototype.set?function(t,e,i){t.set(i,e)}:function(t,e,i){for(var r=0;r>>0;return e?this.uint32(e).push(A,e,t):this.push(u,1,0)},k.string=function(t){var e=c(t);return e?this.uint32(e).push(h,e,t):this.push(u,1,0)},k.fork=function(){return this.states=new s(this,this.states),this.head=this.tail=new r(n,0,0),this.len=0,this},k.reset=function(){return this.states?(this.head=this.states.head,this.tail=this.states.tail,this.len=this.states.len,this.states=this.states.next):(this.head=this.tail=new r(n,0,0),this.len=0),this},k.ldelim=function(t){var e=this.head,i=this.tail,r=this.len;return this.reset(),void 0!==t&&this.tag(t,2),this.uint32(r),this.tail.next=e.next,this.tail=i,this.len+=r,this},k.finish=function(){var t=this.head.next,e=this.constructor.alloc(this.len);this.reset();for(var i=0;t;)t.fn(e,i,t.val),i+=t.len,t=t.next;return e},d.alloc=function(t){return d.alloc=g.Buffer.allocUnsafe?g.Buffer.allocUnsafe:function(t){return new g.Buffer(t)},d.alloc(t)};var N=d.prototype=Object.create(o.prototype);N.constructor=d,"undefined"==typeof Float32Array&&(N.float=function(t){return this.push(p,4,t)}),"undefined"==typeof Float64Array&&(N.double=function(t){return this.push(v,8,t)}),b.prototype.set&&g.Buffer&&g.Buffer.prototype.set||(N.bytes=function(t){var e=t.length>>>0;return e?this.uint32(e).push(y,e,t):this.push(u,1,0)});var S=function(){return g.Buffer&&g.Buffer.prototype.utf8Write?function(t,e,i){i.length<40?h(t,e,i):t.utf8Write(i,e)}:function(t,e,i){i.length<40?h(t,e,i):t.write(i,e)}}();N.string=function(t){var e=t.length<40?c(t):g.Buffer.byteLength(t);return e?this.uint32(e).push(S,e,t):this.push(u,1,0)}},{1:1,29:29}],31:[function(t,e,i){(function(e){"use strict";function r(t,e,i){return"function"==typeof e?(i=e,e=new s.Root):e||(e=new s.Root),e.load(t,i)}function n(t,e){return e||(e=new s.Root),e.loadSync(t)}var s=e.protobuf=i;s.load=r,s.loadSync=n,s.tokenize=t(22),s.parse=t(15),s.Writer=t(30),s.BufferWriter=s.Writer.BufferWriter,s.Reader=t(17),s.BufferReader=s.Reader.BufferReader,s.codegen=t(2),s.ReflectionObject=t(13),s.Namespace=t(12),s.Root=t(18),s.Enum=t(7),s.Type=t(23),s.Field=t(8),s.OneOf=t(14),s.MapField=t(10),s.Service=t(21),s.Method=t(11),s.Prototype=t(16),s.inherits=t(9),s.types=t(24),s.common=t(6),s.rpc=t(19),s.util=t(25),"function"==typeof define&&define.amd&&define(["long"],function(t){return t&&(s.util.Long=t,s.Reader.configure()),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,21:21,22:22,23:23,24:24,25:25,30:30,6:6,7:7,8:8,9:9}]},{},[31]);
+!function t(e,i,r){function n(o,u){if(!i[o]){if(!e[o]){var a="function"==typeof require&&require;if(!u&&a)return a(o,!0);if(s)return s(o,!0);var f=new Error("Cannot find module '"+o+"'");throw f.code="MODULE_NOT_FOUND",f}var l=i[o]={exports:{}};e[o][0].call(l.exports,function(t){var i=e[o][1][t];return n(i?i:t)},l,l.exports,t,e,i,r)}return i[o].exports}for(var s="function"==typeof require&&require,o=0;o>1,l=-7,h=i?0:n-1,c=i?1:-1,d=t[e+h];for(h+=c,s=d&(1<<-l)-1,d>>=-l,l+=u;l>0;s=256*s+t[e+h],h+=c,l-=8);for(o=s&(1<<-l)-1,s>>=-l,l+=r;l>0;o=256*o+t[e+h],h+=c,l-=8);if(0===s)s=1-f;else{if(s===a)return o?NaN:(d?-1:1)*(1/0);o+=Math.pow(2,r),s-=f}return(d?-1:1)*o*Math.pow(2,s-r)},i.write=function(t,e,i,r,n,s){var o,u,a,f=8*s-n-1,l=(1<>1,c=23===n?Math.pow(2,-24)-Math.pow(2,-77):0,d=r?s-1:0,p=r?-1:1,v=e<0||0===e&&1/e<0?1:0;for(e=Math.abs(e),isNaN(e)||e===1/0?(u=isNaN(e)?1:0,o=l):(o=Math.floor(Math.log(e)/Math.LN2),e*(a=Math.pow(2,-o))<1&&(o--,a*=2),e+=o+h>=1?c/a:c*Math.pow(2,1-h),e*a>=2&&(o++,a/=2),o+h>=l?(u=0,o=l):o+h>=1?(u=(e*a-1)*Math.pow(2,n),o+=h):(u=e*Math.pow(2,h-1)*Math.pow(2,n),o=0));n>=8;t[i+d]=255&u,d+=p,u/=256,n-=8);for(o=o<0;t[i+d]=255&o,d+=p,o/=256,f-=8);t[i+d-p]|=128*v}},{}],2:[function(t,e,i){"use strict";function r(t){return r.create(t)}e.exports=r;var n=t(11),s=t(23),o=t(25),u=o.a;r.create=function(t,e){if(!(t instanceof s))throw u("type","a Type");var i=e;if(i){if("function"!=typeof i)throw u("ctor","a function")}else i=function(t){return function(e){t.call(this,e)}}(n);i.constructor=r;var a=i.prototype=new n;return a.constructor=i,o.merge(i,n,!0),i.$type=t,a.$type=t,t.getFieldsArray().forEach(function(t){t.resolve(),a[t.name]=Array.isArray(t.defaultValue)?o.emptyArray:o.isObject(t.defaultValue)?o.emptyObject:t.defaultValue}),t.getOneofsArray().forEach(function(t){o.prop(a,t.resolve().name,{get:function(){for(var e=Object.keys(this),i=e.length-1;i>-1;--i)if(t.oneof.indexOf(e[i])>-1)return e[i]},set:function(e){for(var i=t.oneof,r=0;r ").replace(/\t/g," "));var s=Object.keys(i||(i={}));return Function.apply(null,s.concat("return "+n)).apply(null,s.map(function(t){return i[t]}))}var l=Array.prototype.slice.call(arguments),h=['\t"use strict"'],c=1,d=!1;return t.str=e,t.eof=i,t}e.exports=r;var n=t(25),s=/[{[]$/,o=/^[}\]]/,u=/:$/,a=/^\s*(?:if|else if|while|for)\b|\b(?:else)\s*$/,f=/\b(?:break|continue);?$|^\s*return\b/;r.supported=!1;try{r.supported=1===r("a","b")("return a-b").eof()(2,1)}catch(t){}r.verbose=!1,r.encode=t(5),r.decode=t(4),r.verify=t(6)},{25:25,4:4,5:5,6:6}],4:[function(t,e,i){"use strict";var r=i,n=t(8),s=t(17),o=t(24),u=t(25),a=t(3);r.fallback=function(t,e){for(var i=this.getFieldsById(),r=t instanceof s?t:s.create(t),a=void 0===e?r.len:r.pos+e,f=new(this.getCtor());r.pos0;){var n=t.shift();if(i.nested&&i.nested[n]){if(i=i.nested[n],!(i instanceof r))throw Error("path conflicts with non-namespace objects")}else i.add(i=new r(n))}return e&&i.addJSON(e),i},u.resolveAll=function(){for(var t=this.getNestedArray(),e=0;e-1&&this.oneof.splice(e,1),t.parent&&t.parent.remove(t),t.partOf=null,this},o.onAdd=function(t){s.prototype.onAdd.call(this,t),n(this)},o.onRemove=function(t){this.g.forEach(function(t){t.parent&&t.parent.remove(t)}),s.prototype.onRemove.call(this,t)}},{14:14,25:25,9:9}],16:[function(t,e,i){"use strict";function r(t){return null===t?null:t.toLowerCase()}function n(t,e){function i(t,e){return Error("illegal "+(e||"token")+" '"+t+"' (line "+rt.line()+F)}function n(){var t,e=[];do{if((t=nt())!==B&&t!==J)throw i(t);e.push(nt()),ut(t),t=ot()}while(t===B||t===J);return e.join("")}function v(t){var e=nt();switch(r(e)){case J:case B:return st(e),n();case"true":return!0;case"false":return!1}try{return z(e)}catch(r){if(t&&m.test(e))return e;throw i(e,"value")}}function q(){var t=L(nt()),e=t;return ut("to",!0)&&(e=L(nt())),ut(E),[t,e]}function z(t){var e=1;"-"===t.charAt(0)&&(e=-1,t=t.substring(1));var n=r(t);switch(n){case"inf":return e*(1/0);case"nan":return NaN;case"0":return 0}if(/^[1-9][0-9]*$/.test(t))return e*parseInt(t,10);if(/^0[x][0-9a-f]+$/.test(n))return e*parseInt(t,16);if(/^0[0-7]+$/.test(t))return e*parseInt(t,8);if(/^(?!e)[0-9]*(?:\.[0-9]*)?(?:[e][+-]?[0-9]+)?$/.test(n))return e*parseFloat(t);throw i(t,"number")}function L(t,e){var n=r(t);switch(n){case"min":return 1;case"max":return 536870911;case"0":return 0}if("-"===t.charAt(0)&&!e)throw i(t,"id");if(/^-?[1-9][0-9]*$/.test(t))return parseInt(t,10);if(/^-?0[x][0-9a-f]+$/.test(n))return parseInt(t,16);if(/^-?0[0-7]+$/.test(t))return parseInt(t,8);throw i(t,"id")}function V(){if(void 0!==Y)throw i("package");if(Y=nt(),!m.test(Y))throw i(Y,A);ht=ht.define(Y),ut(E)}function $(){var t,e=ot();switch(e){case"weak":t=et||(et=[]),nt();break;case"public":nt();default:t=tt||(tt=[])}e=n(),ut(E),t.push(e)}function R(){ut("="),it=r(n());var t;if(["proto2",t="proto3"].indexOf(it)<0)throw i(it,"syntax");ft=it===t,ut(E)}function P(t,e){switch(e){case O:return K(t,e),ut(E),!0;case"message":return I(t,e),!0;case"enum":return D(t,e),!0;case"service":return G(t,e),!0;case"extend":return Q(t,e),!0}return!1}function I(t,e){var n=nt();if(!g.test(n))throw i(n,"type name");var s=new u(n);if(ut(S,!0)){for(;(e=nt())!==T;){var o=r(e);if(!P(s,e))switch(o){case"map":M(s,o);break;case b:case x:case k:C(s,o);break;case"oneof":U(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(!ft||!m.test(e))throw i(e);st(e),C(s,x)}}ut(E,!0)}else ut(E);t.add(s)}function C(t,e,r){var n=nt();if(!m.test(n))throw i(n,N);var s=nt();if(!g.test(s))throw i(s,A);s=y(s),ut("=");var o=L(nt()),u=Z(new a(s,o,n,e,r));u.repeated&&u.setOption("packed",ft,!0),t.add(u)}function M(t){ut("<");var e=nt();if(void 0===p.mapKey[e])throw i(e,N);ut(",");var r=nt();if(!m.test(r))throw i(r,N);ut(">");var n=nt();if(!g.test(n))throw i(n,A);n=y(n),ut("=");var s=L(nt()),o=Z(new f(n,s,e,r));t.add(o)}function U(t,e){var r=nt();if(!g.test(r))throw i(r,A);r=y(r);var n=new l(r);if(ut(S,!0)){for(;(e=nt())!==T;)e===O?(K(n,e),ut(E)):(st(e),C(n,x));ut(E,!0)}else ut(E);t.add(n)}function D(t,e){var n=nt();if(!g.test(n))throw i(n,A);var s={},o=new h(n,s);if(ut(S,!0)){for(;(e=nt())!==T;)r(e)===O?K(o):_(o,e);ut(E,!0)}else ut(E);t.add(o)}function _(t,e){if(!g.test(e))throw i(e,A);var r=e;ut("=");var n=L(nt(),!0);t.values[r]=n,Z({})}function K(t,e){var r=ut(j,!0),n=nt();if(!m.test(n))throw i(n,A);r&&(ut(F),n=j+n+F,e=ot(),w.test(e)&&(n+=e,nt())),ut("="),H(t,n)}function H(t,e){if(ut(S,!0))for(;(lt=nt())!==T;){if(!g.test(lt))throw i(lt,A);e=e+"."+lt,ut(":",!0)?W(t,e,v(!0)):H(t,e)}else W(t,e,v(!0))}function W(t,e,i){t.setOption?t.setOption(e,i):t[e]=i}function Z(t){if(ut("[",!0)){do K(t,O);while(ut(",",!0));ut("]")}return ut(E),t}function G(t,e){if(e=nt(),!g.test(e))throw i(e,"service name");var n=e,s=new c(n);if(ut(S,!0)){for(;(e=nt())!==T;){var o=r(e);switch(o){case O:K(s,o),ut(E);break;case"rpc":X(s,o);break;default:throw i(e)}}ut(E,!0)}else ut(E);t.add(s)}function X(t,e){var n=e,s=nt();if(!g.test(s))throw i(s,A);var o,u,a,f;ut(j);var l;if(ut(l="stream",!0)&&(u=!0),!m.test(e=nt()))throw i(e);if(o=e,ut(F),ut("returns"),ut(j),ut(l,!0)&&(f=!0),!m.test(e=nt()))throw i(e);a=e,ut(F);var h=new d(s,n,o,a,u,f);if(ut(S,!0)){for(;(e=nt())!==T;){var c=r(e);switch(c){case O:K(h,c),ut(E);break;default:throw i(e)}}ut(E,!0)}else ut(E);t.add(h)}function Q(t,e){var n=nt();if(!m.test(n))throw i(n,"reference");if(ut(S,!0)){for(;(e=nt())!==T;){var s=r(e);switch(s){case b:case k:case x:C(t,s,n);break;default:if(!ft||!m.test(e))throw i(e);st(e),C(t,x,n)}}ut(E,!0)}else ut(E)}e||(e=new o);var Y,tt,et,it,rt=s(t),nt=rt.next,st=rt.push,ot=rt.peek,ut=rt.skip,at=!0,ft=!1;e||(e=new o);for(var lt,ht=e;null!==(lt=nt());){var ct=r(lt);switch(ct){case"package":if(!at)throw i(lt);V();break;case"import":if(!at)throw i(lt);$();break;case"syntax":if(!at)throw i(lt);R();break;case O:if(!at)throw i(lt);K(ht,lt),ut(E);break;default:if(P(ht,lt)){at=!1;continue}throw i(lt)}}return{package:Y,imports:tt,weakImports:et,syntax:it,root:e}}e.exports=n;var s=t(22),o=t(18),u=t(23),a=t(9),f=t(10),l=t(15),h=t(8),c=t(21),d=t(12),p=t(24),v=t(25),y=v.camelCase,g=/^[a-zA-Z_][a-zA-Z_0-9]*$/,m=/^(?:\.?[a-zA-Z_][a-zA-Z_0-9]*)+$/,w=/^(?:\.[a-zA-Z][a-zA-Z_0-9]*)+$/,b="required",k="repeated",x="optional",O="option",A="name",N="type",S="{",T="}",j="(",F=")",E=";",B='"',J="'"},{10:10,12:12,15:15,18:18,21:21,22:22,23:23,24:24,25:25,8:8,9:9}],17:[function(t,e,i){"use strict";function r(t,e){return RangeError("index out of range: "+t.pos+" + "+(e||1)+" > "+t.len)}function n(){x.Long?(S.int64=a,S.uint64=l,S.sint64=c,S.fixed64=v,S.sfixed64=g):(S.int64=f,S.uint64=h,S.sint64=d,S.fixed64=y,S.sfixed64=m)}function s(t){this.buf=t,this.pos=0,this.len=t.length}function o(t,e){this.id=t,this.wireType=e}function u(){var t=0,e=0,i=0,n=0;if(this.len-this.pos>9){for(i=0;i<4;++i)if(n=this.buf[this.pos++],t|=(127&n)<<7*i,n<128)return new A(t>>>0,e>>>0);if(n=this.buf[this.pos++],t|=(127&n)<<28,e|=(127&n)>>4,n<128)return new A(t>>>0,e>>>0);for(i=0;i<5;++i)if(n=this.buf[this.pos++],e|=(127&n)<<7*i+3,n<128)return new A(t>>>0,e>>>0)}else{for(i=0;i<4;++i){if(this.pos>=this.len)throw r(this);if(n=this.buf[this.pos++],t|=(127&n)<<7*i,n<128)return new A(t>>>0,e>>>0)}if(this.pos>=this.len)throw r(this);if(n=this.buf[this.pos++],t|=(127&n)<<28,e|=(127&n)>>4,n<128)return new A(t>>>0,e>>>0);for(i=0;i<5;++i){if(this.pos>=this.len)throw r(this);if(n=this.buf[this.pos++],e|=(127&n)<<7*i+3,n<128)return new A(t>>>0,e>>>0)}}throw Error("invalid varint encoding")}function a(){return u.call(this).toLong()}function f(){return u.call(this).toNumber()}function l(){return u.call(this).toLong(!0)}function h(){return u.call(this).toNumber(!0)}function c(){return u.call(this).zzDecode().toLong()}function d(){return u.call(this).zzDecode().toNumber()}function p(){if(this.pos+8>this.len)throw r(this,8);return new A((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 v(){return p.call(this).toLong(!0)}function y(){return p.call(this).toNumber(!0)}function g(){return p.call(this).zzDecode().toLong()}function m(){return p.call(this).zzDecode().toNumber()}function w(t){F&&F(),s.call(this,t)}function b(t,e,i){return t.utf8Slice(e,i)}function k(t,e,i){return t.toString("utf8",e,i)}e.exports=s,s.BufferReader=w;var x=t(29),O=t(1),A=x.LongBits,N="undefined"!=typeof Uint8Array?Uint8Array:Array;s.configure=n,s.create=function(t){return new(x.Buffer&&x.Buffer.isBuffer(t)&&w||s)(t)};var S=s.prototype;S.h=N.prototype.subarray||N.prototype.slice,S.tag=function(){if(this.pos>=this.len)throw r(this);return new o(this.buf[this.pos]>>>3,7&this.buf[this.pos++])},S.int32=function(){var t=this.buf[this.pos++],e=127&t;if(t>127&&(t=this.buf[this.pos++],e|=(127&t)<<7,t>127&&(t=this.buf[this.pos++],e|=(127&t)<<14,t>127&&(t=this.buf[this.pos++],e|=(127&t)<<21,t>127&&(t=this.buf[this.pos++],e|=t<<28,t>127&&(this.pos+=5))))),this.pos>this.len)throw this.pos=this.len,r(this);return e},S.uint32=function(){return this.int32()>>>0},S.sint32=function(){var t=this.int32();return t>>>1^-(1&t)},S.bool=function(){return 0!==this.int32()},S.fixed32=function(){if(this.pos+4>this.len)throw r(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},S.sfixed32=function(){var t=this.fixed32();return t>>>1^-(1&t)};var T="undefined"!=typeof Float32Array?function(){var t=new Float32Array(1),e=new Uint8Array(t.buffer);return t[0]=-0,e[3]?function(i,r){return e[0]=i[r++],e[1]=i[r++],e[2]=i[r++],e[3]=i[r],t[0]}:function(i,r){return e[3]=i[r++],e[2]=i[r++],e[1]=i[r++],e[0]=i[r],t[0]}}():function(t,e){return O.read(t,e,!1,23,4)};S.float=function(){if(this.pos+4>this.len)throw r(this,4);var t=T(this.buf,this.pos);return this.pos+=4,t};var j="undefined"!=typeof Float64Array?function(){var t=new Float64Array(1),e=new Uint8Array(t.buffer);return t[0]=-0,e[7]?function(i,r){return e[0]=i[r++],e[1]=i[r++],e[2]=i[r++],e[3]=i[r++],e[4]=i[r++],e[5]=i[r++],e[6]=i[r++],e[7]=i[r],t[0]}:function(i,r){return e[7]=i[r++],e[6]=i[r++],e[5]=i[r++],e[4]=i[r++],e[3]=i[r++],e[2]=i[r++],e[1]=i[r++],e[0]=i[r],t[0]}}():function(t,e){return O.read(t,e,!1,52,8)};S.double=function(){if(this.pos+8>this.len)throw r(this,4);var t=j(this.buf,this.pos);return this.pos+=8,t},S.bytes=function(){var t=this.int32()>>>0,e=this.pos,i=this.pos+t;if(i>this.len)throw r(this,t);return this.pos+=t,e===i?new this.buf.constructor(0):this.h.call(this.buf,e,i)},S.string=function(){var t=this.bytes(),e=t.length;if(e){for(var i=new Array(e),r=0,n=0;r191&&s<224)i[n++]=(31&s)<<6|63&t[r++];else if(s>239&&s<365){var o=((7&s)<<18|(63&t[r++])<<12|(63&t[r++])<<6|63&t[r++])-65536;i[n++]=55296+(o>>10),i[n++]=56320+(1023&o)}else i[n++]=(15&s)<<12|(63&t[r++])<<6|63&t[r++]}return String.fromCharCode.apply(String,i.slice(0,n))}return""},S.skip=function(t){if(void 0===t){do if(this.pos>=this.len)throw r(this);while(128&this.buf[this.pos++])}else{if(this.pos+t>this.len)throw r(this,t);this.pos+=t}return this},S.skipType=function(t){switch(t){case 0:this.skip();break;case 1:this.skip(8);break;case 2:this.skip(this.uint32());break;case 3:for(;;){var e=this.tag();if(4===e.wireType)break;this.skipType(e.wireType)}break;case 5:this.skip(4);break;default:throw Error("invalid wire type: "+t)}return this},S.reset=function(t){return t?(this.buf=t,this.len=t.length):(this.buf=null,this.len=0),this.pos=0,
+this},S.finish=function(t){var e=this.pos?this.h.call(this.buf,this.pos):this.buf;return this.reset(t),e};var F=function(){if(!x.Buffer)throw Error("Buffer is not supported");E.h=x.Buffer.prototype.slice,B=x.Buffer.prototype.utf8Slice?b:k,F=!1},E=w.prototype=Object.create(s.prototype);E.constructor=w,"undefined"==typeof Float32Array&&(E.float=function(){if(this.pos+4>this.len)throw r(this,4);var t=this.buf.readFloatLE(this.pos,!0);return this.pos+=4,t}),"undefined"==typeof Float64Array&&(E.double=function(){if(this.pos+8>this.len)throw r(this,8);var t=this.buf.readDoubleLE(this.pos,!0);return this.pos+=8,t});var B;E.string=function(){var t=this.int32()>>>0,e=this.pos,i=this.pos+t;if(i>this.len)throw r(this,t);return this.pos+=t,B(this.buf,e,i)},E.finish=function(t){var e=this.pos?this.buf.slice(this.pos):this.buf;return this.reset(t),e},n()},{1:1,29:29}],18:[function(t,e,i){"use strict";function r(t){o.call(this,"",t),this.deferred=[],this.files=[]}function n(){}function s(t){var e=t.parent.lookup(t.extend);if(e){var i=new a(t.getFullName(),t.id,t.type,t.rule,(void 0),t.options);return i.declaringField=t,t.extensionField=i,e.add(i),!0}return!1}e.exports=r;var o=t(13),u=o.extend(r),a=t(9),f=t(25),l=t(7);r.fromJSON=function(t,e){return e||(e=new r),e.setOptions(t.options).addJSON(t.nested)},u.resolvePath=f.resolvePath,u.load=function e(i,r){function s(t,e){if(r){var i=r;r=null,i(t,e)}}function o(e,i){try{if(f.isString(i)&&"{"===i.charAt(0)&&(i=JSON.parse(i)),f.isString(i)){var r=t(16)(i,a);r.imports&&r.imports.forEach(function(t){u(a.resolvePath(e,t))}),r.weakImports&&r.weakImports.forEach(function(t){u(a.resolvePath(e,t),!0)})}else a.setOptions(i.options).addJSON(i.nested)}catch(t){return void s(t)}h||c||s(null,a)}function u(t,e){var i=t.indexOf("google/protobuf/");if(i>-1){var n=t.substring(i);n in l&&(t=n)}if(!(a.files.indexOf(t)>-1)){if(a.files.push(t),t in l)return void(h?o(t,l[t]):(++c,setTimeout(function(){--c,o(t,l[t])})));if(h){var u;try{u=f.fs.readFileSync(t).toString("utf8")}catch(t){return void(e||s(t))}o(t,u)}else++c,f.fetch(t,function(i,n){if(--c,r)return i?void(e||s(i)):void o(t,n)})}}var a=this;if(!r)return f.asPromise(e,a,i);var h=r===n,c=0;return f.isString(i)&&(i=[i]),i.forEach(function(t){u(a.resolvePath("",t))}),h?a:void(c||s(null,a))},u.loadSync=function(t){return this.load(t,n)},u.e=function(t){var e=this.deferred.slice();this.deferred=[];for(var i=0;i-1&&this.deferred.splice(e,1)}t.extensionField&&(t.extensionField.parent.remove(t.extensionField),t.extensionField=null)}else if(t instanceof o)for(var i=t.getNestedArray(),r=0;r0)return m.shift();if(w)return i();var r,o,u;do{if(v===y)return null;for(r=!1;/\s/.test(u=n(v));)if(u===a&&++g,++v===y)return null;if(n(v)===f){if(++v===y)throw e("comment");if(n(v)===f){for(;n(++v)!==a;)if(v===y)return null;++v,++g,r=!0}else{if((u=n(v))!==l)return f;do{if(u===a&&++g,++v===y)return null;o=u,u=n(v)}while(o!==l||u!==f);++v,r=!0}}}while(r);if(v===y)return null;var h=v;s.lastIndex=0;var c=s.test(n(h++));if(!c)for(;h]/g,o=/(?:"([^"\\]*(?:\\.[^"\\]*)*)")/g,u=/(?:'([^'\\]*(?:\\.[^'\\]*)*)')/g,a="\n",f="/",l="*"},{}],23:[function(t,e,i){"use strict";function r(t,e){s.call(this,t,e),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,this.n=null}function n(t){return t.j=t.k=t.m=t.n=null,delete t.encode,delete t.decode,t}e.exports=r;var s=t(13),o=s.prototype,u=s.extend(r),a=t(8),f=t(15),l=t(9),h=t(21),c=t(2),d=t(11),p=t(17),v=t(30),y=t(25),g=t(3);y.props(u,{fieldsById:{get:function(){if(this.j)return this.j;this.j={};for(var t=Object.keys(this.fields),e=0;e0?e.splice(--n,2):i?e.splice(n,1):++n:"."===e[n]?e.splice(n,1):++n;return r+e.join("/")}var util=exports;util.isString=isString,util.isObject=function(t){return Boolean(t&&"object"==typeof t)},util.isInteger=Number.isInteger||function(t){return"number"==typeof t&&isFinite(t)&&Math.floor(t)===t},util.toArray=function(t){if(!t)return[];for(var e=Object.keys(t),i=e.length,r=new Array(i),n=0;n>>0,n=(t-i)/4294967296>>>0;return e&&(n=~n>>>0,i=~i>>>0,++i>4294967295&&(i=0,++n>4294967295&&(n=0))),new r(i,n)},r.from=function(t){switch(typeof t){case"number":return r.fromNumber(t);case"string":t=n.Long.fromString(t)}return(t.low||t.high)&&new r(t.low>>>0,t.high>>>0)||o},s.toNumber=function(t){return!t&&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(t){return new n.Long(this.lo,this.hi,t)};var u=String.prototype.charCodeAt;r.fromHash=function(t){return new r((u.call(t,0)|u.call(t,1)<<8|u.call(t,2)<<16|u.call(t,3)<<24)>>>0,(u.call(t,4)|u.call(t,5)<<8|u.call(t,6)<<16|u.call(t,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 t=this.hi>>31;return this.hi=((this.hi<<1|this.lo>>>31)^t)>>>0,this.lo=(this.lo<<1^t)>>>0,this},s.zzDecode=function(){var t=-(1&this.lo);return this.lo=((this.lo>>>1|this.hi<<31)^t)>>>0,this.hi=(this.hi>>>1^t)>>>0,this},s.length=function(){var t=this.lo,e=(this.lo>>>28|this.hi<<4)>>>0,i=this.hi>>>24;return 0===i?0===e?t<16384?t<128?1:2:t<1<<21?3:4:e<16384?e<128?5:6:e<1<<21?7:8:i<128?9:10}},{25:25}],28:[function(t,e,i){"use strict";function r(t,e,i){var r=i||8192,n=r>>>1,s=null,o=r;return function(i){if(i>n)return t(i);o+i>r&&(s=t(r),o=0);var u=e.call(s,o,o+=i);return 7&o&&(o=(7|o)+1),u}}e.exports=r},{}],29:[function(t,e,i){(function(e){"use strict";var r=i,n=r.LongBits=t(27);r.pool=t(28);var s=r.isNode=Boolean(e.process&&e.process.versions&&e.process.versions.node);if(r.Buffer=null,s)try{r.Buffer=t("buffer").Buffer}catch(t){}if(r.Long=e.dcodeIO&&e.dcodeIO.Long||null,!r.Long&&s)try{r.Long=t("long")}catch(t){}r.longToHash=function(t){return t?n.from(t).toHash():"\0\0\0\0\0\0\0\0"},r.longFromHash=function(t,e){var i=n.fromHash(t);return r.Long?r.Long.fromBits(i.lo,i.hi,e):i.toNumber(Boolean(e))},r.longNeq=function(t,e){return"number"==typeof t?"number"==typeof e?t!==e:(t=n.fromNumber(t)).lo!==e.low||t.hi!==e.high:"number"==typeof e?(e=n.fromNumber(e)).lo!==t.low||e.hi!==t.high:t.low!==e.low||t.high!==e.high},r.props=function(t,e){Object.keys(e).forEach(function(i){r.prop(t,i,e[i])})},r.prop=function(t,e,i){var r=!-[1],n=e.substring(0,1).toUpperCase()+e.substring(1);i.get&&(t["get"+n]=i.get),i.set&&(t["set"+n]=r?function(t){i.set.call(this,t),this[e]=t}:i.set),r?void 0!==i.value&&(t[e]=i.value):Object.defineProperty(t,e,i)},r.emptyArray=Object.freeze([]),r.emptyObject=Object.freeze({})}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{27:27,28:28,buffer:"buffer",long:"long"}],30:[function(t,e,i){"use strict";function r(t,e,i){this.fn=t,this.val=e,this.len=i,this.next=null}function n(){}function s(t,e){this.head=t.head,this.tail=t.tail,this.len=t.len,this.next=e}function o(){this.len=0,this.head=new r(n,0,0),this.tail=this.head,this.states=null}function u(t,e,i){t[e]=255&i}function a(t,e,i){for(;i>127;)t[e++]=127&i|128,i>>>=7;t[e]=i}function f(t,e,i){for(;i.hi;)t[e++]=127&i.lo|128,i.lo=(i.lo>>>7|i.hi<<25)>>>0,i.hi>>>=7;for(;i.lo>127;)t[e++]=127&i.lo|128,i.lo=i.lo>>>7;t[e++]=i.lo}function l(t,e,i){t[e++]=255&i,t[e++]=i>>>8&255,t[e++]=i>>>16&255,t[e]=i>>>24}function h(t,e,i){for(var r=0;r>6|192,t[e++]=63&s|128):55296===(64512&s)&&56320===(64512&(n=i.charCodeAt(r+1)))?(s=65536+((1023&s)<<10)+(1023&n),++r,t[e++]=s>>18|240,t[e++]=s>>12&63|128,t[e++]=s>>6&63|128,t[e++]=63&s|128):(t[e++]=s>>12|224,t[e++]=s>>6&63|128,t[e++]=63&s|128)}}function c(t){for(var e=t.length>>>0,i=0,r=0;r>>=0,t<128?this.push(u,1,t):this.push(a,t<16384?2:t<2097152?3:t<268435456?4:5,t)},k.int32=function(t){return t<0?this.push(f,10,w.fromNumber(t)):this.uint32(t)},k.sint32=function(t){return this.uint32(t<<1^t>>31)},k.uint64=function(t){var e=w.from(t);return this.push(f,e.length(),e)},k.int64=k.uint64,k.sint64=function(t){var e=w.from(t).zzEncode();return this.push(f,e.length(),e)},k.bool=function(t){return this.push(u,1,t?1:0)},k.fixed32=function(t){return this.push(l,4,t>>>0)},k.sfixed32=function(t){return this.push(l,4,t<<1^t>>31)},k.fixed64=function(t){var e=w.from(t);return this.push(l,4,e.hi).push(l,4,e.lo)},k.sfixed64=function(t){var e=w.from(t).zzEncode();return this.push(l,4,e.hi).push(l,4,e.lo)};var x="undefined"!=typeof Float32Array?function(){var t=new Float32Array(1),e=new Uint8Array(t.buffer);return t[0]=-0,e[3]?function(i,r,n){t[0]=n,i[r++]=e[0],i[r++]=e[1],i[r++]=e[2],i[r]=e[3]}:function(i,r,n){t[0]=n,i[r++]=e[3],i[r++]=e[2],i[r++]=e[1],i[r]=e[0]}}():function(t,e,i){m.write(t,i,e,!1,23,4)};k.float=function(t){return this.push(x,4,t)};var O="undefined"!=typeof Float64Array?function(){var t=new Float64Array(1),e=new Uint8Array(t.buffer);return t[0]=-0,e[7]?function(i,r,n){t[0]=n,i[r++]=e[0],i[r++]=e[1],i[r++]=e[2],i[r++]=e[3],i[r++]=e[4],i[r++]=e[5],i[r++]=e[6],i[r]=e[7]}:function(i,r,n){t[0]=n,i[r++]=e[7],i[r++]=e[6],i[r++]=e[5],i[r++]=e[4],i[r++]=e[3],i[r++]=e[2],i[r++]=e[1],i[r]=e[0]}}():function(t,e,i){m.write(t,i,e,!1,52,8)};k.double=function(t){return this.push(O,8,t)};var A=b.prototype.set?function(t,e,i){t.set(i,e)}:function(t,e,i){for(var r=0;r>>0;return e?this.uint32(e).push(A,e,t):this.push(u,1,0)},k.string=function(t){var e=c(t);return e?this.uint32(e).push(h,e,t):this.push(u,1,0)},k.fork=function(){return this.states=new s(this,this.states),this.head=this.tail=new r(n,0,0),this.len=0,this},k.reset=function(){return this.states?(this.head=this.states.head,this.tail=this.states.tail,this.len=this.states.len,this.states=this.states.next):(this.head=this.tail=new r(n,0,0),this.len=0),this},k.ldelim=function(t){var e=this.head,i=this.tail,r=this.len;return this.reset(),void 0!==t&&this.tag(t,2),this.uint32(r),this.tail.next=e.next,this.tail=i,this.len+=r,this},k.finish=function(){var t=this.head.next,e=this.constructor.alloc(this.len);this.reset();for(var i=0;t;)t.fn(e,i,t.val),i+=t.len,t=t.next;return e},d.alloc=function(t){return d.alloc=g.Buffer.allocUnsafe?g.Buffer.allocUnsafe:function(t){return new g.Buffer(t)},d.alloc(t)};var N=d.prototype=Object.create(o.prototype);N.constructor=d,"undefined"==typeof Float32Array&&(N.float=function(t){return this.push(p,4,t)}),"undefined"==typeof Float64Array&&(N.double=function(t){return this.push(v,8,t)}),b.prototype.set&&g.Buffer&&g.Buffer.prototype.set||(N.bytes=function(t){var e=t.length>>>0;return e?this.uint32(e).push(y,e,t):this.push(u,1,0)});var S=function(){return g.Buffer&&g.Buffer.prototype.utf8Write?function(t,e,i){i.length<40?h(t,e,i):t.utf8Write(i,e)}:function(t,e,i){i.length<40?h(t,e,i):t.write(i,e)}}();N.string=function(t){var e=t.length<40?c(t):g.Buffer.byteLength(t);return e?this.uint32(e).push(S,e,t):this.push(u,1,0)}},{1:1,29:29}],31:[function(t,e,i){(function(e){"use strict";function r(t,e,i){return"function"==typeof e?(i=e,e=new s.Root):e||(e=new s.Root),e.load(t,i)}function n(t,e){return e||(e=new s.Root),e.loadSync(t)}var s=e.protobuf=i;s.load=r,s.loadSync=n,s.tokenize=t(22),s.parse=t(16),s.Writer=t(30),s.BufferWriter=s.Writer.BufferWriter,s.Reader=t(17),s.BufferReader=s.Reader.BufferReader,s.codegen=t(3),s.ReflectionObject=t(14),s.Namespace=t(13),s.Root=t(18),s.Enum=t(8),s.Type=t(23),s.Field=t(9),s.OneOf=t(15),s.MapField=t(10),s.Service=t(21),s.Method=t(12),s.Class=t(2),s.Message=t(11),s.types=t(24),s.common=t(7),s.rpc=t(19),s.util=t(25),"function"==typeof define&&define.amd&&define(["long"],function(t){return t&&(s.util.Long=t,s.Reader.configure()),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,21:21,22:22,23:23,24:24,25:25,3:3,30:30,7:7,8:8,9:9}]},{},[31]);
//# sourceMappingURL=protobuf.min.js.map
diff --git a/dist/protobuf.min.js.gz b/dist/protobuf.min.js.gz
index e19b34f67..d4999bad3 100644
Binary files a/dist/protobuf.min.js.gz and b/dist/protobuf.min.js.gz differ
diff --git a/dist/protobuf.min.js.map b/dist/protobuf.min.js.map
index 1244c4ce4..8803ac09a 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/codegen.js","src/codegen/decode.js","src/codegen/encode.js","src/codegen/verify.js","src/common.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/rpc.js","src/rpc/service.js","src/service.js","src/tokenize.js","src/type.js","src/types.js","src/util.js","src/util/eventemitter.js","src/util/longbits.js","src/util/pool.js","src/util/runtime.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","codegen","gen","line","util","sprintf","apply","arguments","level","indent","src","prev","blockOpenRe","test","branchRe","casingRe","inCase","breakRe","blockCloseRe","index","push","str","name","replace","args","join","eof","scope","undefined","source","verbose","console","keys","Object","Function","concat","map","key","Array","prototype","slice","supported","encode","decode","verify","Enum","Reader","types","fallback","readerOrBuffer","fields","this","getFieldsById","reader","create","limit","len","pos","message","getCtor","tag","field","id","resolve","type","resolvedType","keyType","resolvedKeyType","uint32","ks","vs","basic","longToHash","repeated","values","packed","wireType","plimit","skipType","generate","mtype","getFieldsArray","prop","safeProp","Writer","writer","fi","fork","mapKey","ldelim","required","long","longNeq","defaultValue","reset","keyWireType","Type","getFullName","getValuesById","reason","hasReasonVar","toArray","j","common","json","nested","google","protobuf","Any","type_url","timeType","Duration","seconds","nanos","Timestamp","Empty","Struct","Value","oneofs","kind","oneof","nullValue","numberValue","stringValue","boolValue","structValue","listValue","NullValue","NULL_VALUE","ListValue","rule","options","ReflectionObject","_valuesById","clearCache","enm","EnumPrototype","extend","_TypeError","props","valuesById","get","forEach","testJSON","Boolean","fromJSON","toJSON","add","isString","isInteger","remove","Field","isObject","toString","toLowerCase","optional","partOf","Long","extensionField","declaringField","_packed","FieldPrototype","MapField","isPacked","getOption","setOption","ifNotSet","role","resolved","typeDefault","defaults","parent","lookup","optionDefault","fromValue","jsonConvert","String","Number","toNumber","charAt","inherits","clazz","classProperties","$type","noStatics","merge","encodeDelimited","decodeDelimited","defineProperties","Prototype","constructor","noRegister","setCtor","prototypeProperties","isArray","emptyArray","emptyObject","getOneofsArray","indexOf","set","MapFieldPrototype","Method","requestType","responseType","requestStream","responseStream","resolvedRequestType","resolvedResponseType","MethodPrototype","Namespace","_nestedArray","namespace","arrayToJSON","array","obj","NamespacePrototype","Service","nestedTypes","nestedError","ctor","nestedArray","methods","addJSON","getNestedArray","nestedJson","ns","nestedName","object","setOptions","onAdd","onRemove","define","path","split","ptr","part","shift","resolveAll","parentAlreadyChecked","getRoot","found","proto","Root","ReflectionObjectPrototype","root","fullName","unshift","_handleAdd","_handleRemove","OneOf","fieldNames","ucName","substring","toUpperCase","_fields","addFieldsToParent","OneOfPrototype","splice","lower","token","parse","illegal","tn","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","camelCase","parseInlineOptions","valueType","parseEnumField","custom","s_bopen","fqTypeRefRe","parseOptionValue","service","parseMethod","st","method","reference","tokenize","head","package","properties","asJSON","k","fieldsOnly","indexOutOfRange","writeLength","RangeError","configure","ReaderPrototype","int64","read_int64_long","uint64","read_uint64_long","sint64","read_sint64_long","fixed64","read_fixed64_long","sfixed64","read_sfixed64_long","read_int64_number","read_uint64_number","read_sint64_number","read_fixed64_number","read_sfixed64_number","buf","Tag","readLongVarint","lo","hi","b","LongBits","toLong","zzDecode","readLongFixed","BufferReader","initBufferReader","readStringBuffer_utf8Slice","utf8Slice","readStringBuffer_toString","ieee754","ArrayImpl","Uint8Array","Buffer","isBuffer","_slice","subarray","int32","octet","sint32","bool","fixed32","sfixed32","readFloat","Float32Array","f32","f8b","float","readDouble","Float64Array","f64","double","bytes","string","out","p","c1","fromCharCode","finish","remain","BufferReaderPrototype","readStringBuffer","readFloatLE","readDoubleLE","deferred","files","SYNC","handleExtension","extendedType","sisterField","RootPrototype","resolvePath","load","filename","callback","err","cb","process","JSON","parsed","self","fetch","sync","queued","weak","idx","altname","setTimeout","fs","readFileSync","asPromise","loadSync","newDeferred","rpc","rpcImpl","EventEmitter","$rpc","ServicePrototype","endedByRPC","emit","off","_methodsArray","methodsArray","methodName","inherited","getMethodsArray","requestDelimited","responseDelimited","rpcService","request","requestData","setImmediate","responseData","response","err2","unescape","$0","$1","subject","re","stringDelim","stringDoubleRe","stringSingleRe","lastIndex","match","exec","stack","repeat","curr","s_nl","s_sl","s_as","delimRe","delim","expected","actual","equals","_fieldsById","_fieldsArray","_repeatedFieldsArray","_oneofsArray","_ctor","TypePrototype","fieldsById","names","fieldsArray","repeatedFieldsArray","filter","oneofsArray","P","fieldName","oneOfName","fld","bake","fn","ctx","Promise","reject","onload","xhr","status","responseText","readFile","XMLHttpRequest","onreadystatechange","readyState","open","send","isAbsolutePath","normalizePath","parts","prefix","isFinite","description","TypeError","eval","originPath","importPath","alreadyNormalized","dst","format","params","param","stringify","underScore","newBuffer","size","allocUnsafe","_listeners","EventEmitterPrototype","on","evt","listeners","LongBitsPrototype","zero","zzEncode","fromNumber","from","fromString","low","high","unsigned","charCodeAt","fromHash","hash","toHash","mask","part0","part1","part2","pool","alloc","SIZE","MAX","slab","isNode","global","versions","node","dcodeIO","longFromHash","bits","fromBits","target","descriptors","descriptor","ie8","ucKey","defineProperty","freeze","Op","val","noop","State","tail","states","writeByte","writeVarint32","writeVarint64","writeFixed32","writeString","c2","byteLength","strlen","BufferWriter","writeFloatBuffer","writeFloatLE","writeDoubleBuffer","writeDoubleLE","writeBytesBuffer","copy","WriterPrototype","op","writeFloat","writeDouble","writeBytes","BufferWriterPrototype","writeStringBuffer","utf8Write","amd"],"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\nmodule.exports = codegen;\r\n\r\nvar util = require(25);\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 * A closure for generating functions programmatically.\r\n * @namespace\r\n * @function\r\n * @param {...string} params Function parameter names\r\n * @returns {CodegenInstance} Codegen instance\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() {\r\n var args = Array.prototype.slice.call(arguments),\r\n src = ['\\t\"use strict\"'],\r\n indent = 1,\r\n inCase = false;\r\n\r\n /**\r\n * A codegen instance as returned by {@link codegen}, that also is a {@link util.sprintf|sprintf}-like appender function.\r\n * @typedef CodegenInstance\r\n * @type {function}\r\n * @param {string} format Format string\r\n * @param {...*} args Replacements\r\n * @returns {CodegenInstance} Itself\r\n * @property {function(string=):string} str Stringifies the so far generated function source.\r\n * @property {function(string=, Object=):function} eof Ends generation and builds the function whilst applying a scope.\r\n */\r\n /**/\r\n function gen() {\r\n var line = util.sprintf.apply(null, arguments);\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 /**\r\n * Stringifies the so far generated function source.\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 * @inner\r\n */\r\n 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 gen.str = str;\r\n\r\n /**\r\n * Ends generation and builds the function whilst applying a scope.\r\n * @param {string} [name] Function name, defaults to generate an anonymous function\r\n * @param {Object} [scope] Function scope\r\n * @returns {function} The generated function, with scope applied if specified\r\n * @inner\r\n */\r\n function eof(name, scope) {\r\n if (typeof name === 'object') {\r\n scope = name;\r\n name = undefined;\r\n }\r\n var source = gen.str(name);\r\n if (codegen.verbose)\r\n console.log(\"--- codegen ---\\n\" + source.replace(/^/mg, \"> \").replace(/\\t/g, \" \")); // eslint-disable-line no-console\r\n var keys = Object.keys(scope || (scope = {}));\r\n return Function.apply(null, keys.concat(\"return \" + source)).apply(null, keys.map(function(key) { return scope[key]; })); // eslint-disable-line no-new-func\r\n // ^ Creates a wrapper function with the scoped variable names as its parameters,\r\n // calls it with the respective scoped variable values ^\r\n // and returns our brand-new properly scoped function.\r\n //\r\n // This works because \"Invoking the Function constructor as a function (without using the\r\n // new operator) has the same effect as invoking it as a constructor.\"\r\n // https://developer.mozilla.org/de/docs/Web/JavaScript/Reference/Global_Objects/Function\r\n }\r\n\r\n gen.eof = eof;\r\n\r\n return gen;\r\n}\r\n\r\ncodegen.supported = false; try { codegen.supported = codegen(\"a\",\"b\")(\"return a-b\").eof()(2,1) === 1; } catch (e) {} // eslint-disable-line no-empty\r\ncodegen.verbose = false;\r\n\r\ncodegen.encode = require(4);\r\ncodegen.decode = require(3);\r\ncodegen.verify = require(5);\r\n","\"use strict\";\r\n\r\n/**\r\n * Wire format decoder using code generation on top of reflection that also provides a fallback.\r\n * @exports codegen.decode\r\n * @namespace\r\n */\r\nvar decode = exports;\r\n\r\nvar Enum = require(7),\r\n Reader = require(17),\r\n types = require(24),\r\n util = require(25),\r\n codegen = require(2);\r\n\r\n/**\r\n * Decodes a message of `this` message's 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} Populated runtime message\r\n * @this Type\r\n */\r\ndecode.fallback = function decode_fallback(readerOrBuffer, length) {\r\n /* eslint-disable no-invalid-this, block-scoped-var, no-redeclare */\r\n var fields = this.getFieldsById(),\r\n reader = readerOrBuffer instanceof Reader ? readerOrBuffer : Reader.create(readerOrBuffer),\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].length ? 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 the specified message type, with an identical signature to {@link codegen.decode.fallback}.\r\n * @param {Type} mtype Message type\r\n * @returns {CodegenInstance} {@link codegen|Codegen} instance\r\n */\r\ndecode.generate = function decode_generate(mtype) {\r\n /* eslint-disable no-unexpected-multiline */\r\n var fields = mtype.getFieldsArray(); \r\n var gen = codegen(\"r\", \"l\")\r\n\r\n (\"r instanceof Reader||(r=Reader.create(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\nutil.props(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: 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\n * Gets this enum's values by id. This is an alias of {@link Enum#valuesById}'s getter for use within non-ES5 environments.\r\n * @name Enum#getValuesById\r\n * @function\r\n * @returns {Object.}\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(13);\r\n/** @alias Field.prototype */\r\nvar FieldPrototype = ReflectionObject.extend(Field);\r\n\r\nvar Type = require(23),\r\n Enum = require(7),\r\n MapField = require(10),\r\n types = require(24),\r\n util = require(25);\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|Object} [rule=\"optional\"] Field rule\r\n * @param {string|Object} [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\nutil.props(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 * Determines whether this field is packed. This is an alias of {@link Field#packed}'s getter for use within non-ES5 environments.\r\n * @name Field#isPacked\r\n * @function\r\n * @returns {boolean}\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(16),\r\n Type = require(23),\r\n util = require(25);\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 {*} clazz Inheriting class constructor\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 {Writer} Writer\r\n */\r\n encode: {\r\n value: function encode(message, writer) {\r\n return this.$type.encode(message, writer);\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 {Writer} Writer\r\n */\r\n encodeDelimited: {\r\n value: function encodeDelimited(message, writer) {\r\n return this.$type.encodeDelimited(message, writer);\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 util.props(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 // objects on the prototype must be immmutable. users must assign a new object instance and\r\n // cannot use Array#push on empty arrays on the prototype for example, as this would modify\r\n // the value on the prototype for ALL messages of this type. Hence, these objects are frozen.\r\n prototype[field.name] = Array.isArray(field.defaultValue)\r\n ? util.emptyArray\r\n : util.isObject(field.defaultValue)\r\n ? util.emptyObject\r\n : 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 util.prop(prototype, oneof.resolve().name, {\r\n get: function getVirtual() {\r\n // > If the parser encounters multiple members of the same oneof on the wire, only the last member seen is used in the parsed message.\r\n var keys = Object.keys(this);\r\n for (var i = keys.length - 1; i > -1; --i)\r\n if (oneof.oneof.indexOf(keys[i]) > -1)\r\n return keys[i];\r\n return undefined;\r\n },\r\n set: function setVirtual(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 util.props(prototype, prototypeProperties);\r\n return prototype;\r\n};\r\n","\"use strict\";\r\nmodule.exports = MapField;\r\n\r\nvar Field = require(8);\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(7),\r\n types = require(24),\r\n util = require(25);\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(13);\r\n/** @alias Method.prototype */\r\nvar MethodPrototype = ReflectionObject.extend(Method);\r\n\r\nvar Type = require(23),\r\n util = require(25);\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|Object} [requestStream] Whether the request is streamed\r\n * @param {boolean|Object} [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 (type && !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(13);\r\n/** @alias Namespace.prototype */\r\nvar NamespacePrototype = ReflectionObject.extend(Namespace);\r\n\r\nvar Enum = require(7),\r\n Type = require(23),\r\n Field = require(8),\r\n Service = require(21),\r\n util = require(25);\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\nutil.props(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: 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(18),\r\n util = require(25);\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\nutil.props(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: 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 {*} 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(13);\r\n/** @alias OneOf.prototype */\r\nvar OneOfPrototype = ReflectionObject.extend(OneOf);\r\n\r\nvar Field = require(8),\r\n util = require(25);\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[]|Object} [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 * Upper cased name for getter/setter calls.\r\n * @type {string}\r\n */\r\n this.ucName = this.name.substring(0, 1).toUpperCase() + this.name.substring(1);\r\n\r\n /**\r\n * Field names that belong to this oneof.\r\n * @type {string[]}\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 {Field[]}\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(22),\r\n Root = require(18),\r\n Type = require(23),\r\n Field = require(8),\r\n MapField = require(10),\r\n OneOf = require(14),\r\n Enum = require(7),\r\n Service = require(21),\r\n Method = require(11),\r\n types = require(24),\r\n util = require(25);\r\nvar camelCase = util.camelCase;\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\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 parent.values[name] = value;\r\n parseInlineOptions({}); // skips enum value options\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 } 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 * 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 * @abstract\r\n * @see {@link inherits}\r\n * @see {@link Class}\r\n */\r\nfunction Prototype(properties) {\r\n if (properties) {\r\n var keys = Object.keys(properties);\r\n for (var i = 0; i < keys.length; ++i)\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 {*} [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 {*} [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 * @param {boolean} [options.defaults=false] Also sets default values on the resulting object\r\n * @returns {Object.} JSON object\r\n */\r\nPrototype.prototype.asJSON = function asJSON(options) {\r\n if (!options)\r\n options = {};\r\n var fields = this.constructor.$type.fields,\r\n json = {};\r\n var keys;\r\n if (options.defaults) {\r\n keys = [];\r\n for (var k in this) // eslint-disable-line guard-for-in\r\n keys.push(k);\r\n } else\r\n 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 (!options.fieldsOnly)\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(29),\r\n ieee754 = require(1);\r\nvar LongBits = util.LongBits,\r\n ArrayImpl = typeof Uint8Array !== 'undefined' ? Uint8Array : Array;\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 * Configures the Reader interface according to the environment.\r\n * @memberof Reader\r\n * @returns {undefined}\r\n */\r\nfunction configure() {\r\n if (util.Long) {\r\n ReaderPrototype.int64 = read_int64_long;\r\n ReaderPrototype.uint64 = read_uint64_long;\r\n ReaderPrototype.sint64 = read_sint64_long;\r\n ReaderPrototype.fixed64 = read_fixed64_long;\r\n ReaderPrototype.sfixed64 = read_sfixed64_long;\r\n } else {\r\n ReaderPrototype.int64 = read_int64_number;\r\n ReaderPrototype.uint64 = read_uint64_number;\r\n ReaderPrototype.sint64 = read_sint64_number;\r\n ReaderPrototype.fixed64 = read_fixed64_number;\r\n ReaderPrototype.sfixed64 = read_sfixed64_number;\r\n }\r\n}\r\n\r\nReader.configure = configure;\r\n\r\n/**\r\n * Constructs a new reader using 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 \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/**\r\n * Creates a new reader using the specified buffer.\r\n * @param {Uint8Array} buffer Buffer to read from\r\n * @returns {BufferReader|Reader} A {@link BufferReader} if `buffer` is a Buffer, otherwise a {@link Reader}\r\n */\r\nReader.create = function create(buffer) {\r\n return new (util.Buffer && util.Buffer.isBuffer(buffer) && BufferReader || Reader)(buffer);\r\n};\r\n\r\n/** @alias Reader.prototype */\r\nvar ReaderPrototype = Reader.prototype;\r\n\r\nReaderPrototype._slice = ArrayImpl.prototype.subarray || ArrayImpl.prototype.slice;\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 // 1 byte\r\n var octet = this.buf[this.pos++],\r\n value = octet & 127;\r\n if (octet > 127) { // false if octet is undefined (pos >= len)\r\n // 2 bytes\r\n octet = this.buf[this.pos++];\r\n value |= (octet & 127) << 7;\r\n if (octet > 127) {\r\n // 3 bytes\r\n octet = this.buf[this.pos++];\r\n value |= (octet & 127) << 14;\r\n if (octet > 127) {\r\n // 4 bytes\r\n octet = this.buf[this.pos++];\r\n value |= (octet & 127) << 21;\r\n if (octet > 127) {\r\n // 5 bytes\r\n octet = this.buf[this.pos++];\r\n value |= octet << 28;\r\n if (octet > 127) {\r\n // 6..10 bytes (sign extended)\r\n this.pos += 5;\r\n }\r\n }\r\n }\r\n }\r\n }\r\n if (this.pos > this.len) {\r\n this.pos = this.len;\r\n throw indexOutOfRange(this);\r\n }\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/* eslint-disable no-invalid-this */\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();\r\n}\r\n\r\nfunction read_int64_number() {\r\n return readLongVarint.call(this).toNumber();\r\n}\r\n\r\nfunction read_uint64_long() {\r\n return readLongVarint.call(this).toLong(true);\r\n}\r\n\r\nfunction read_uint64_number() {\r\n return readLongVarint.call(this).toNumber(true);\r\n}\r\n\r\nfunction read_sint64_long() {\r\n return readLongVarint.call(this).zzDecode().toLong();\r\n}\r\n\r\nfunction read_sint64_number() {\r\n return readLongVarint.call(this).zzDecode().toNumber();\r\n}\r\n\r\n/* eslint-enable no-invalid-this */\r\n\r\n/**\r\n * Reads a varint as a signed 64 bit value.\r\n * @name Reader#int64\r\n * @function\r\n * @returns {Long|number} Value read\r\n */\r\n\r\n/**\r\n * Reads a varint as an unsigned 64 bit value.\r\n * @name Reader#uint64\r\n * @function\r\n * @returns {Long|number} Value read\r\n */\r\n\r\n/**\r\n * Reads a zig-zag encoded varint as a signed 64 bit value.\r\n * @name Reader#sint64\r\n * @function\r\n * @returns {Long|number} Value read\r\n */\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/* eslint-disable no-invalid-this */\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);\r\n}\r\n\r\nfunction read_fixed64_number() {\r\n return readLongFixed.call(this).toNumber(true);\r\n}\r\n\r\nfunction read_sfixed64_long() {\r\n return readLongFixed.call(this).zzDecode().toLong();\r\n}\r\n\r\nfunction read_sfixed64_number() {\r\n return readLongFixed.call(this).zzDecode().toNumber();\r\n}\r\n\r\n/* eslint-enable no-invalid-this */\r\n\r\n/**\r\n * Reads fixed 64 bits.\r\n * @name Reader#fixed64\r\n * @function\r\n * @returns {Long|number} Value read\r\n */\r\n\r\n/**\r\n * Reads zig-zag encoded fixed 64 bits.\r\n * @name Reader#sfixed64\r\n * @function\r\n * @returns {Long|number} Value read\r\n */\r\n\r\nvar readFloat = typeof Float32Array !== 'undefined'\r\n ? (function() { // eslint-disable-line wrap-iife\r\n var f32 = new Float32Array(1),\r\n f8b = new Uint8Array(f32.buffer);\r\n f32[0] = -0;\r\n return f8b[3] // already le?\r\n ? function readFloat_f32(buf, pos) {\r\n f8b[0] = buf[pos++];\r\n f8b[1] = buf[pos++];\r\n f8b[2] = buf[pos++];\r\n f8b[3] = buf[pos ];\r\n return f32[0];\r\n }\r\n : function readFloat_f32_le(buf, pos) {\r\n f8b[3] = buf[pos++];\r\n f8b[2] = buf[pos++];\r\n f8b[1] = buf[pos++];\r\n f8b[0] = buf[pos ];\r\n return f32[0];\r\n };\r\n })()\r\n : function readFloat_ieee754(buf, pos) {\r\n return ieee754.read(buf, pos, false, 23, 4);\r\n };\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 = readFloat(this.buf, this.pos);\r\n this.pos += 4;\r\n return value;\r\n};\r\n\r\nvar readDouble = typeof Float64Array !== 'undefined'\r\n ? (function() { // eslint-disable-line wrap-iife\r\n var f64 = new Float64Array(1),\r\n f8b = new Uint8Array(f64.buffer);\r\n f64[0] = -0;\r\n return f8b[7] // already le?\r\n ? function readDouble_f64(buf, pos) {\r\n f8b[0] = buf[pos++];\r\n f8b[1] = buf[pos++];\r\n f8b[2] = buf[pos++];\r\n f8b[3] = buf[pos++];\r\n f8b[4] = buf[pos++];\r\n f8b[5] = buf[pos++];\r\n f8b[6] = buf[pos++];\r\n f8b[7] = buf[pos ];\r\n return f64[0];\r\n }\r\n : function readDouble_f64_le(buf, pos) {\r\n f8b[7] = buf[pos++];\r\n f8b[6] = buf[pos++];\r\n f8b[5] = buf[pos++];\r\n f8b[4] = buf[pos++];\r\n f8b[3] = buf[pos++];\r\n f8b[2] = buf[pos++];\r\n f8b[1] = buf[pos++];\r\n f8b[0] = buf[pos ];\r\n return f64[0];\r\n };\r\n })()\r\n : function readDouble_ieee754(buf, pos) {\r\n return ieee754.read(buf, pos, false, 52, 8);\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 = readDouble(this.buf, this.pos);\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 readStringBuffer = util.Buffer.prototype.utf8Slice // around forever, but not present in browser buffer\r\n ? readStringBuffer_utf8Slice\r\n : readStringBuffer_toString;\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\nif (typeof Float32Array === 'undefined') // f32 is faster (node 6.9.1)\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\nif (typeof Float64Array === 'undefined') // f64 is faster (node 6.9.1)\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\nvar readStringBuffer;\r\n\r\nfunction readStringBuffer_utf8Slice(buf, start, end) {\r\n return buf.utf8Slice(start, end); // fastest\r\n}\r\n\r\nfunction readStringBuffer_toString(buf, start, end) {\r\n return buf.toString(\"utf8\", start, end); // 2nd, again assertions\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 readStringBuffer(this.buf, 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\r\nconfigure();\r\n","\"use strict\";\r\nmodule.exports = Root;\r\n\r\nvar Namespace = require(12);\r\n/** @alias Root.prototype */\r\nvar RootPrototype = Namespace.extend(Root);\r\n\r\nvar Field = require(8),\r\n util = require(25),\r\n common = require(6);\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// A symbol-like function to safely signal synchronous loading\r\nfunction SYNC() {}\r\n\r\n/**\r\n * Loads one or multiple .proto or preprocessed .json files into this root namespace and calls the callback.\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 {undefined}\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 var sync = callback === SYNC; // undocumented\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(15)(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 (!sync && !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 if (sync)\r\n process(filename, common[filename]);\r\n else {\r\n ++queued;\r\n setTimeout(function() {\r\n --queued;\r\n process(filename, common[filename]);\r\n });\r\n }\r\n return;\r\n }\r\n\r\n // Otherwise fetch from disk or network\r\n if (sync) {\r\n var source;\r\n try {\r\n source = util.fs.readFileSync(filename).toString(\"utf8\");\r\n } catch (err) {\r\n if (!weak)\r\n finish(err);\r\n return;\r\n }\r\n process(filename, source);\r\n } else {\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 }\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 (sync)\r\n return self;\r\n if (!queued)\r\n finish(null, self);\r\n return undefined;\r\n};\r\n// function load(filename:string, callback:function):undefined\r\n\r\n/**\r\n * Loads one or multiple .proto or preprocessed .json files into this root namespace and returns a promise.\r\n * @name Root#load\r\n * @function\r\n * @param {string|string[]} filename Names of one or multiple files to load\r\n * @returns {Promise} Promise\r\n * @variation 2\r\n */\r\n// function load(filename:string):Promise\r\n\r\n/**\r\n * Synchronously 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 * @returns {Root} Root namespace\r\n * @throws {Error} If synchronous fetching is not supported (i.e. in browsers) or if a file's syntax is invalid\r\n */\r\nRootPrototype.loadSync = function loadSync(filename) {\r\n return this.load(filename, SYNC);\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\n\r\n/**\r\n * RPC helpers.\r\n * @namespace\r\n */\r\nvar rpc = exports;\r\n\r\nrpc.Service = require(20);\r\n","\"use strict\";\r\nmodule.exports = Service;\r\n\r\nvar EventEmitter = require(26);\r\n\r\n/**\r\n * Constructs a new RPC service.\r\n * @classdesc An RPC service as returned by {@link Service#create}.\r\n * @memberof rpc\r\n * @extends util.EventEmitter\r\n * @constructor\r\n * @param {RPCImpl} rpcImpl RPC implementation\r\n */\r\nfunction Service(rpcImpl) {\r\n EventEmitter.call(this);\r\n\r\n /**\r\n * RPC implementation. Becomes `null` when the service is ended.\r\n * @type {?RPCImpl}\r\n */\r\n this.$rpc = rpcImpl;\r\n}\r\n\r\n/** @alias rpc.Service.prototype */\r\nvar ServicePrototype = Service.prototype = Object.create(EventEmitter.prototype);\r\nServicePrototype.constructor = Service;\r\n\r\n/**\r\n * Ends this service and emits the `end` event.\r\n * @param {boolean} [endedByRPC=false] Whether the service has been ended by the RPC implementation.\r\n * @returns {rpc.Service} `this`\r\n */\r\nServicePrototype.end = function end(endedByRPC) {\r\n if (this.$rpc) {\r\n if (!endedByRPC) // signal end to rpcImpl\r\n this.$rpc(null, null, null);\r\n this.$rpc = null;\r\n this.emit('end').off();\r\n }\r\n return this;\r\n};\r\n","\"use strict\";\r\nmodule.exports = Service;\r\n\r\nvar Namespace = require(12);\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(11),\r\n util = require(25),\r\n rpc = require(19);\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\nutil.props(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: 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\r\n/**\r\n * RPC implementation passed to {@link Service#create} performing a service request on network level, i.e. by utilizing http requests or websockets.\r\n * @typedef RPCImpl\r\n * @type {function}\r\n * @param {Method} method Reflected method being called\r\n * @param {Uint8Array} requestData Request data\r\n * @param {function(?Error, Uint8Array=)} callback Node-style callback called with the error, if any, and the response data. `null` as response data signals an ended stream.\r\n * @returns {undefined}\r\n */\r\n\r\n/**\r\n * Creates a runtime service using the specified rpc implementation.\r\n * @param {function(Method, Uint8Array, function)} rpcImpl RPC implementation ({@link RPCImpl|see})\r\n * @param {boolean} [requestDelimited=false] Whether requests are length-delimited\r\n * @param {boolean} [responseDelimited=false] Whether responses are length-delimited\r\n * @returns {rpc.Service} Runtime RPC service. Useful where requests and/or responses are streamed.\r\n */\r\nServicePrototype.create = function create(rpcImpl, requestDelimited, responseDelimited) {\r\n var rpcService = new rpc.Service(rpcImpl);\r\n this.getMethodsArray().forEach(function(method) {\r\n rpcService[method.name.substring(0, 1).toLowerCase() + method.name.substring(1)] = function callVirtual(request, /* optional */ callback) {\r\n if (!rpcService.$rpc) // already ended?\r\n return;\r\n if (!request)\r\n throw util._TypeError(\"request\", \"not null\");\r\n method.resolve();\r\n var requestData;\r\n try {\r\n requestData = (requestDelimited && method.resolvedRequestType.encodeDelimited(request) || method.resolvedRequestType.encode(request)).finish();\r\n } catch (err) {\r\n (typeof setImmediate === 'function' && setImmediate || setTimeout)(function() { callback(err); });\r\n return;\r\n }\r\n // Calls the custom RPC implementation with the reflected method and binary request data\r\n // and expects the rpc implementation to call its callback with the binary response data.\r\n rpcImpl(method, requestData, function(err, responseData) {\r\n if (err) {\r\n rpcService.emit('error', err, method);\r\n return callback ? callback(err) : undefined;\r\n }\r\n if (responseData === null) {\r\n rpcService.end(/* endedByRPC */ true);\r\n return undefined;\r\n }\r\n var response;\r\n try {\r\n response = responseDelimited && method.resolvedResponseType.decodeDelimited(responseData) || method.resolvedResponseType.decode(responseData);\r\n } catch (err2) {\r\n rpcService.emit('error', err2, method);\r\n return callback ? callback('error', err2) : undefined;\r\n }\r\n rpcService.emit('data', response, method);\r\n return callback ? callback(null, response) : undefined;\r\n });\r\n };\r\n });\r\n return rpcService;\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(12);\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(7),\r\n OneOf = require(14),\r\n Field = require(8),\r\n Service = require(21),\r\n Prototype = require(16),\r\n Reader = require(17),\r\n Writer = require(30),\r\n inherits = require(9),\r\n util = require(25),\r\n codegen = require(2);\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 repeated fields as an array.\r\n * @type {?Field[]}\r\n * @private\r\n */\r\n this._repeatedFieldsArray = 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 {*}\r\n * @private\r\n */\r\n this._ctor = null;\r\n}\r\n\r\nutil.props(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: 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: function getFieldsArray() {\r\n return this._fieldsArray || (this._fieldsArray = util.toArray(this.fields));\r\n }\r\n },\r\n\r\n /**\r\n * Repeated fields of this message as an array for iteration.\r\n * @name Type#repeatedFieldsArray\r\n * @type {Field[]}\r\n * @readonly\r\n */\r\n repeatedFieldsArray: {\r\n get: function getRepeatedFieldsArray() {\r\n return this._repeatedFieldsArray || (this._repeatedFieldsArray = this.getFieldsArray().filter(function(field) { return field.repeated; }));\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: 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: 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: 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 {*} [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 (!properties || 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 return (this.encode = codegen.supported\r\n ? codegen.encode.generate(this).eof(this.getFullName() + \"$encode\", {\r\n Writer : Writer,\r\n types : this.getFieldsArray().map(function(fld) { return fld.resolvedType; }),\r\n util : util\r\n })\r\n : codegen.encode.fallback\r\n ).call(this, 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 return (this.decode = codegen.supported\r\n ? codegen.decode.generate(this).eof(this.getFullName() + \"$decode\", {\r\n Reader : Reader,\r\n types : this.getFieldsArray().map(function(fld) { return fld.resolvedType; }),\r\n util : util\r\n })\r\n : codegen.decode.fallback\r\n ).call(this, 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.create(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 return (this.verify = codegen.supported\r\n ? codegen.verify.generate(this).eof(this.getFullName() + \"$verify\", {\r\n types : this.getFieldsArray().map(function(fld) { return fld.resolvedType; })\r\n })\r\n : codegen.verify.fallback\r\n ).call(this, message);\r\n};\r\n","\"use strict\";\r\n\r\n/**\r\n * Common type constants.\r\n * @namespace\r\n */\r\nvar types = exports;\r\n\r\nvar util = require(25);\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\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 */ util.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 /* 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]);\r\n","\"use strict\";\r\n\r\n/**\r\n * Utility functions.\r\n * @namespace\r\n */\r\nvar util = exports;\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 * Filesystem, if available.\r\n * @memberof util\r\n * @type {?Object}\r\n */\r\nvar fs = null; // Hide this from webpack. There is probably another, better way.\r\ntry { fs = eval(['req','uire'].join(''))(\"fs\"); } catch (e) {} // eslint-disable-line no-eval, no-empty\r\n\r\nutil.fs = fs;\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} A 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 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 * 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/**\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 return \"['\" + prop.replace(/\\\\/g, \"\\\\\\\\\").replace(/'/g, \"\\\\'\") + \"']\";\r\n};\r\n\r\n/**\r\n * Minimalistic sprintf.\r\n * @param {string} format Format string\r\n * @param {...*} args Replacements\r\n * @returns {string} Formatted string\r\n */\r\nutil.sprintf = function sprintf(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 switch ($1) {\r\n case \"j\":\r\n return JSON.stringify(param);\r\n case \"p\":\r\n return util.safeProp(param);\r\n default:\r\n return String(param);\r\n }\r\n });\r\n};\r\n\r\n/**\r\n * Converts a string to camel case notation.\r\n * @param {string} str String to convert\r\n * @returns {string} Converted string\r\n */\r\nutil.camelCase = function camelCase(str) {\r\n return str.substring(0,1)\r\n + str.substring(1)\r\n .replace(/_([a-z])(?=[a-z]|$)/g, function($0, $1) { return $1.toUpperCase(); });\r\n};\r\n\r\n/**\r\n * Converts a string to underscore notation.\r\n * @param {string} str String to convert\r\n * @returns {string} Converted string\r\n */\r\nutil.underScore = function underScore(str) {\r\n return str.substring(0,1)\r\n + str.substring(1)\r\n .replace(/([A-Z])(?=[a-z]|$)/g, function($0, $1) { return \"_\" + $1.toLowerCase(); });\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 size = size || 0; \r\n return util.Buffer\r\n ? util.Buffer.allocUnsafe && util.Buffer.allocUnsafe(size) || new util.Buffer(size)\r\n : new (typeof Uint8Array !== 'undefined' && Uint8Array || Array)(size);\r\n};\r\n\r\nutil.EventEmitter = require(26);\r\n\r\n// Merge in runtime utility\r\nutil.merge(util, require(29));\r\n","\"use strict\";\r\nmodule.exports = EventEmitter;\r\n\r\n/**\r\n * Constructs a new event emitter.\r\n * @classdesc A minimal event emitter.\r\n * @memberof util\r\n * @constructor\r\n */\r\nfunction EventEmitter() {\r\n\r\n /**\r\n * Registered listeners.\r\n * @type {Object.}\r\n * @private\r\n */\r\n this._listeners = {};\r\n}\r\n\r\n/** @alias util.EventEmitter.prototype */\r\nvar EventEmitterPrototype = EventEmitter.prototype;\r\n\r\n/**\r\n * Registers an event listener.\r\n * @param {string} evt Event name\r\n * @param {function} fn Listener\r\n * @param {Object} [ctx] Listener context\r\n * @returns {util.EventEmitter} `this`\r\n */\r\nEventEmitterPrototype.on = function on(evt, fn, ctx) {\r\n (this._listeners[evt] || (this._listeners[evt] = [])).push({\r\n fn : fn,\r\n ctx : ctx || this\r\n });\r\n return this;\r\n};\r\n\r\n/**\r\n * Removes an event listener.\r\n * @param {string} [evt] Event name. Removes all listeners if omitted.\r\n * @param {function} [fn] Listener to remove. Removes all listeners of `evt` if omitted.\r\n * @returns {util.EventEmitter} `this`\r\n */\r\nEventEmitterPrototype.off = function off(evt, fn) {\r\n if (evt === undefined)\r\n this._listeners = {};\r\n else {\r\n if (fn === undefined)\r\n this._listeners[evt] = [];\r\n else {\r\n var listeners = this._listeners[evt];\r\n for (var i = 0; i < listeners.length;)\r\n if (listeners[i].fn === fn)\r\n listeners.splice(i, 1);\r\n else\r\n ++i;\r\n }\r\n }\r\n return this;\r\n};\r\n\r\n/**\r\n * Emits an event by calling its listeners with the specified arguments.\r\n * @param {string} evt Event name\r\n * @param {...*} args Arguments\r\n * @returns {util.EventEmitter} `this`\r\n */\r\nEventEmitterPrototype.emit = function emit(evt) {\r\n var listeners = this._listeners[evt];\r\n if (listeners) {\r\n var args = Array.prototype.slice.call(arguments, 1);\r\n for (var i = 0; i < listeners.length; ++i)\r\n listeners[i].fn.apply(listeners[i].ctx, args);\r\n }\r\n return this;\r\n};\r\n","\"use strict\";\r\n\r\nmodule.exports = LongBits;\r\n\r\nvar util = require(25);\r\n\r\n/**\r\n * Any compatible Long instance.\r\n * @typedef Long\r\n * @type {Object}\r\n * @property {number} low Low bits\r\n * @property {number} high High bits\r\n * @property {boolean} unsigned Whether unsigned or not\r\n */\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 = LongBits.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 * Constructs new long bits from a number, long or string.\r\n * @param {Long|number|string} value Value\r\n * @returns {util.LongBits} Instance\r\n * @throws {TypeError} If `value` is a string and no long library is present.\r\n */\r\nLongBits.from = function from(value) {\r\n switch (typeof value) { // eslint-disable-line default-case\r\n case 'number':\r\n return LongBits.fromNumber(value);\r\n case 'string':\r\n value = util.Long.fromString(value); // throws without a long lib\r\n }\r\n return (value.low || value.high) && new LongBits(value.low >>> 0, value.high >>> 0) || zero;\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 = pool;\r\n\r\n/**\r\n * A drop-in buffer pool, similar in functionality to what node uses for buffers.\r\n * @memberof util\r\n * @function\r\n * @param {function(number):Uint8Array} alloc Allocator\r\n * @param {function(number, number):Uint8Array} slice Slicer\r\n * @param {number} [size=8192] Slab size\r\n * @returns {function(number):Uint8Array} Pooled allocator\r\n */\r\nfunction pool(alloc, slice, size) {\r\n var SIZE = size || 8192;\r\n var MAX = SIZE >>> 1;\r\n var slab = null;\r\n var offset = SIZE;\r\n return function pool_alloc(size) {\r\n if (size > MAX)\r\n return alloc(size);\r\n if (offset + size > SIZE) {\r\n slab = alloc(SIZE);\r\n offset = 0;\r\n }\r\n var buf = slice.call(slab, offset, offset += size);\r\n if (offset & 7) // align to 32 bit\r\n offset = (offset | 7) + 1;\r\n return buf;\r\n };\r\n}\r\n","\"use strict\";\r\n\r\nvar util = exports;\r\n\r\nvar LongBits = util.LongBits = require(\"./longbits\");\r\n\r\nutil.pool = require(\"./pool\");\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 {*}\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 {*}\r\n */\r\nutil.Long = global.dcodeIO && global.dcodeIO.Long || null;\r\n\r\nif (!util.Long && isNode)\r\n try { util.Long = require(\"long\"); } catch (e) {} // eslint-disable-line no-empty\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 * Defines the specified properties on the specified target. Also adds getters and setters for non-ES5 environments.\r\n * @param {Object} target Target object\r\n * @param {Object} descriptors Property descriptors\r\n * @returns {undefined}\r\n */\r\nutil.props = function props(target, descriptors) {\r\n Object.keys(descriptors).forEach(function(key) {\r\n util.prop(target, key, descriptors[key]);\r\n });\r\n};\r\n\r\n/**\r\n * Defines the specified property on the specified target. Also adds getters and setters for non-ES5 environments.\r\n * @param {Object} target Target object\r\n * @param {string} key Property name\r\n * @param {Object} descriptor Property descriptor\r\n * @returns {undefined}\r\n */\r\nutil.prop = function prop(target, key, descriptor) {\r\n var ie8 = !-[1,];\r\n var ucKey = key.substring(0, 1).toUpperCase() + key.substring(1);\r\n if (descriptor.get)\r\n target['get' + ucKey] = descriptor.get;\r\n if (descriptor.set)\r\n target['set' + ucKey] = ie8\r\n ? function(value) {\r\n descriptor.set.call(this, value);\r\n this[key] = value;\r\n }\r\n : descriptor.set;\r\n if (ie8) {\r\n if (descriptor.value !== undefined)\r\n target[key] = descriptor.value;\r\n } else\r\n Object.defineProperty(target, key, descriptor);\r\n};\r\n\r\n/**\r\n * An immuable empty array.\r\n * @memberof util\r\n * @type {Array.<*>}\r\n */\r\nutil.emptyArray = Object.freeze([]);\r\n\r\n/**\r\n * An immutable empty object.\r\n * @type {Object}\r\n */\r\nutil.emptyObject = Object.freeze({});\r\n","\"use strict\";\r\nmodule.exports = Writer;\r\n\r\nWriter.BufferWriter = BufferWriter;\r\n\r\nvar util = require(29),\r\n ieee754 = require(1);\r\nvar LongBits = util.LongBits,\r\n ArrayImpl = typeof Uint8Array !== 'undefined' ? Uint8Array : Array;\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 * @param {State} next Next state entry\r\n * @private\r\n * @ignore\r\n */\r\nfunction State(writer, next) {\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\n * Next state.\r\n * @type {?State}\r\n */\r\n this.next = next;\r\n}\r\n\r\nWriter.State = State;\r\n\r\n/**\r\n * Constructs a new writer.\r\n * @classdesc Wire format writer using `Uint8Array` if available, otherwise `Array`.\r\n * @constructor\r\n */\r\nfunction 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 * Linked forked states.\r\n * @type {?Object}\r\n */\r\n this.states = null;\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/**\r\n * Creates a new writer.\r\n * @returns {BufferWriter|Writer} A {@link BufferWriter} when Buffers are supported, otherwise a {@link Writer}\r\n */\r\nWriter.create = function create() {\r\n return new (util.Buffer && BufferWriter || Writer);\r\n};\r\n\r\n/**\r\n * Allocates a buffer of the specified size.\r\n * @param {number} size Buffer size\r\n * @returns {Uint8Array} Buffer\r\n */\r\nWriter.alloc = function alloc(size) {\r\n return new ArrayImpl(size);\r\n};\r\n\r\n// Use Uint8Array buffer pool in the browser, just like node does with buffers\r\nif (ArrayImpl !== Array)\r\n Writer.alloc = util.pool(Writer.alloc, ArrayImpl.prototype.subarray || ArrayImpl.prototype.slice);\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 value < 128\r\n ? this.push(writeByte, 1, value)\r\n : this.push(writeVarint32,\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) {\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 while (val.lo > 127) {\r\n buf[pos++] = val.lo & 127 | 128;\r\n val.lo = val.lo >>> 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|string} value Value to write\r\n * @returns {Writer} `this`\r\n * @throws {TypeError} If `value` is a string and no long library is present.\r\n */\r\nWriterPrototype.uint64 = function write_uint64(value) {\r\n var bits = LongBits.from(value);\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|string} value Value to write\r\n * @returns {Writer} `this`\r\n * @throws {TypeError} If `value` is a string and no long library is present.\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|string} value Value to write\r\n * @returns {Writer} `this`\r\n * @throws {TypeError} If `value` is a string and no long library is present.\r\n */\r\nWriterPrototype.sint64 = function write_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;\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\n/**\r\n * Writes a 64 bit value as fixed 64 bits.\r\n * @param {Long|number|string} value Value to write\r\n * @returns {Writer} `this`\r\n * @throws {TypeError} If `value` is a string and no long library is present.\r\n */\r\nWriterPrototype.fixed64 = function write_fixed64(value) {\r\n var bits = LongBits.from(value);\r\n return this.push(writeFixed32, 4, bits.hi).push(writeFixed32, 4, bits.lo);\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|string} value Value to write\r\n * @returns {Writer} `this`\r\n * @throws {TypeError} If `value` is a string and no long library is present.\r\n */\r\nWriterPrototype.sfixed64 = function write_sfixed64(value) {\r\n var bits = LongBits.from(value).zzEncode();\r\n return this.push(writeFixed32, 4, bits.hi).push(writeFixed32, 4, bits.lo);\r\n};\r\n\r\nvar writeFloat = typeof Float32Array !== 'undefined'\r\n ? (function() { // eslint-disable-line wrap-iife\r\n var f32 = new Float32Array(1),\r\n f8b = new Uint8Array(f32.buffer);\r\n f32[0] = -0;\r\n return f8b[3] // already le?\r\n ? function writeFloat_f32(buf, pos, val) {\r\n f32[0] = val;\r\n buf[pos++] = f8b[0];\r\n buf[pos++] = f8b[1];\r\n buf[pos++] = f8b[2];\r\n buf[pos ] = f8b[3];\r\n }\r\n : function writeFloat_f32_le(buf, pos, val) {\r\n f32[0] = val;\r\n buf[pos++] = f8b[3];\r\n buf[pos++] = f8b[2];\r\n buf[pos++] = f8b[1];\r\n buf[pos ] = f8b[0];\r\n };\r\n })()\r\n : function writeFloat_ieee754(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\nvar writeDouble = typeof Float64Array !== 'undefined'\r\n ? (function() { // eslint-disable-line wrap-iife\r\n var f64 = new Float64Array(1),\r\n f8b = new Uint8Array(f64.buffer);\r\n f64[0] = -0;\r\n return f8b[7] // already le?\r\n ? function writeDouble_f64(buf, pos, val) {\r\n f64[0] = val;\r\n buf[pos++] = f8b[0];\r\n buf[pos++] = f8b[1];\r\n buf[pos++] = f8b[2];\r\n buf[pos++] = f8b[3];\r\n buf[pos++] = f8b[4];\r\n buf[pos++] = f8b[5];\r\n buf[pos++] = f8b[6];\r\n buf[pos ] = f8b[7];\r\n }\r\n : function writeDouble_f64_le(buf, pos, val) {\r\n f64[0] = val;\r\n buf[pos++] = f8b[7];\r\n buf[pos++] = f8b[6];\r\n buf[pos++] = f8b[5];\r\n buf[pos++] = f8b[4];\r\n buf[pos++] = f8b[3];\r\n buf[pos++] = f8b[2];\r\n buf[pos++] = f8b[1];\r\n buf[pos ] = f8b[0];\r\n };\r\n })()\r\n : function writeDouble_ieee754(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) {\r\n buf.set(val, pos);\r\n }\r\n : function writeBytes_for(buf, pos, val) {\r\n for (var i = 0; i < val.length; ++i)\r\n buf[pos + i] = val[i];\r\n };\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 && ((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 var len = 0;\r\n for (var i = 0; i < strlen; ++i) {\r\n var 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 && (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\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#}, {@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.states = new State(this, this.states);\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.states) {\r\n this.head = this.states.head;\r\n this.tail = this.states.tail;\r\n this.len = this.states.len;\r\n this.states = this.states.next;\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 as a tag 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 = this.constructor.alloc(this.len);\r\n this.reset();\r\n var pos = 0;\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/**\r\n * Allocates a buffer of the specified size.\r\n * @param {number} size Buffer size\r\n * @returns {Uint8Array} Buffer\r\n */\r\nBufferWriter.alloc = function alloc_buffer(size) {\r\n BufferWriter.alloc = util.Buffer.allocUnsafe\r\n ? util.Buffer.allocUnsafe\r\n : function allocUnsafeNew(size) { return new util.Buffer(size); };\r\n return BufferWriter.alloc(size);\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\nif (typeof Float32Array === 'undefined') // f32 is faster (node 6.9.1)\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\nif (typeof Float64Array === 'undefined') // f64 is faster (node 6.9.1)\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 // This could probably be optimized just like writeStringBuffer, but most real use cases won't benefit much.\r\n}\r\n\r\nif (!(ArrayImpl.prototype.set && util.Buffer && util.Buffer.prototype.set)) // set is faster (node 6.9.1)\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\nvar writeStringBuffer = (function() { // eslint-disable-line wrap-iife\r\n return util.Buffer && util.Buffer.prototype.utf8Write // around forever, but not present in browser buffer\r\n ? function writeString_buffer_utf8Write(buf, pos, val) {\r\n if (val.length < 40)\r\n writeString(buf, pos, val);\r\n else\r\n buf.utf8Write(val, pos);\r\n }\r\n : function writeString_buffer_write(buf, pos, val) {\r\n if (val.length < 40)\r\n writeString(buf, pos, val);\r\n else\r\n buf.write(val, pos);\r\n };\r\n // Note that the plain JS encoder is faster for short strings, probably because of redundant assertions.\r\n // For a raw utf8Write, the breaking point is about 20 characters, for write it is around 40 characters.\r\n // Unfortunately, this does not translate 1:1 to real use cases, hence the common \"good enough\" limit of 40.\r\n})();\r\n\r\n/**\r\n * @override\r\n */\r\nBufferWriterPrototype.string = function write_string_buffer(value) {\r\n var len = value.length < 40\r\n ? byteLength(value)\r\n : util.Buffer.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","\"use strict\";\r\nvar protobuf = global.protobuf = exports;\r\n\r\n/**\r\n * Loads one or multiple .proto or preprocessed .json files into a common root namespace and calls the callback.\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 {undefined}\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);\r\n}\r\n// function load(filename:string, root:Root, callback:function):undefined\r\n\r\n/**\r\n * Loads one or multiple .proto or preprocessed .json files into a common root namespace and calls the callback.\r\n * @name load\r\n * @function\r\n * @param {string|string[]} filename One or multiple files to load\r\n * @param {function(?Error, Root=)} callback Callback function\r\n * @returns {undefined}\r\n * @variation 2\r\n */\r\n// function load(filename:string, callback:function):undefined\r\n\r\n/**\r\n * Loads one or multiple .proto or preprocessed .json files into a common root namespace and returns a promise.\r\n * @name load\r\n * @function\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 * @returns {Promise} Promise\r\n * @variation 3\r\n */\r\n// function load(filename:string, [root:Root]):Promise\r\n\r\nprotobuf.load = load;\r\n\r\n/**\r\n * Synchronously 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 * @returns {Root} Root namespace\r\n * @throws {Error} If synchronous fetching is not supported (i.e. in browsers) or if a file's syntax is invalid\r\n */\r\nfunction loadSync(filename, root) {\r\n if (!root)\r\n root = new protobuf.Root();\r\n return root.loadSync(filename);\r\n}\r\n\r\nprotobuf.loadSync = loadSync;\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.codegen = require(\"./codegen\");\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.rpc = require(\"./rpc\");\r\nprotobuf.util = require(\"./util\");\r\n\r\n// Be nice to AMD\r\nif (typeof define === 'function' && define.amd)\r\n define([\"long\"], function(Long) {\r\n if (Long) {\r\n protobuf.util.Long = Long;\r\n protobuf.Reader.configure();\r\n }\r\n return protobuf;\r\n });\r\n"],"sourceRoot":"."}
\ No newline at end of file
+{"version":3,"sources":["node_modules/browser-pack/_prelude.js","lib/ieee754.js","src/class.js","src/codegen.js","src/codegen/decode.js","src/codegen/encode.js","src/codegen/verify.js","src/common.js","src/enum.js","src/field.js","src/mapfield.js","src/message.js","src/method.js","src/namespace.js","src/object.js","src/oneof.js","src/parse.js","src/reader.js","src/root.js","src/rpc.js","src/rpc/service.js","src/service.js","src/tokenize.js","src/type.js","src/types.js","src/util.js","src/util/eventemitter.js","src/util/longbits.js","src/util/pool.js","src/util/runtime.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","Class","type","create","Message","Type","util","_TypeError","ctor","clazz","MessageCtor","properties","this","constructor","prototype","merge","$type","getFieldsArray","forEach","field","resolve","name","Array","isArray","defaultValue","emptyArray","isObject","emptyObject","getOneofsArray","oneof","prop","get","keys","Object","indexOf","set","codegen","gen","line","sprintf","apply","arguments","level","indent","src","prev","blockOpenRe","test","branchRe","casingRe","inCase","breakRe","blockCloseRe","index","push","str","replace","args","join","eof","scope","undefined","source","verbose","console","Function","concat","map","key","slice","supported","encode","decode","verify","Enum","Reader","types","fallback","readerOrBuffer","fields","getFieldsById","reader","limit","len","pos","message","getCtor","tag","id","resolvedType","keyType","resolvedKeyType","uint32","ks","vs","basic","longToHash","repeated","values","packed","wireType","plimit","skipType","generate","mtype","safeProp","Writer","writer","fi","fork","mapKey","ldelim","required","long","longNeq","reset","keyWireType","getFullName","getValuesById","reason","hasReasonVar","toArray","j","common","json","nested","google","protobuf","Any","type_url","timeType","Duration","seconds","nanos","Timestamp","Empty","Struct","Value","oneofs","kind","nullValue","numberValue","stringValue","boolValue","structValue","listValue","NullValue","NULL_VALUE","ListValue","rule","options","ReflectionObject","_valuesById","clearCache","enm","EnumPrototype","extend","props","valuesById","testJSON","Boolean","fromJSON","toJSON","add","isString","isInteger","remove","Field","toString","toLowerCase","optional","partOf","Long","extensionField","declaringField","_packed","FieldPrototype","MapField","isPacked","getOption","setOption","ifNotSet","role","resolved","typeDefault","defaults","parent","lookup","optionDefault","fromValue","jsonConvert","String","Number","toNumber","charAt","MapFieldPrototype","MessagePrototype","asJSON","k","array","fieldsOnly","encodeDelimited","decodeDelimited","Method","requestType","responseType","requestStream","responseStream","resolvedRequestType","resolvedResponseType","MethodPrototype","Namespace","_nestedArray","namespace","arrayToJSON","obj","NamespacePrototype","Service","nestedTypes","nestedError","nestedArray","methods","addJSON","getNestedArray","nestedJson","ns","nestedName","object","setOptions","onAdd","onRemove","define","path","split","ptr","part","shift","resolveAll","parentAlreadyChecked","getRoot","found","Root","ReflectionObjectPrototype","root","fullName","unshift","_handleAdd","_handleRemove","OneOf","fieldNames","ucName","substring","toUpperCase","_fields","addFieldsToParent","OneOfPrototype","splice","lower","token","parse","illegal","tn","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","camelCase","parseInlineOptions","valueType","parseEnumField","custom","s_bopen","fqTypeRefRe","parseOptionValue","service","parseMethod","st","method","reference","tokenize","head","package","indexOutOfRange","writeLength","RangeError","configure","ReaderPrototype","int64","read_int64_long","uint64","read_uint64_long","sint64","read_sint64_long","fixed64","read_fixed64_long","sfixed64","read_sfixed64_long","read_int64_number","read_uint64_number","read_sint64_number","read_fixed64_number","read_sfixed64_number","buf","Tag","readLongVarint","lo","hi","b","LongBits","toLong","zzDecode","readLongFixed","BufferReader","initBufferReader","readStringBuffer_utf8Slice","utf8Slice","readStringBuffer_toString","ieee754","ArrayImpl","Uint8Array","Buffer","isBuffer","_slice","subarray","int32","octet","sint32","bool","fixed32","sfixed32","readFloat","Float32Array","f32","f8b","float","readDouble","Float64Array","f64","double","bytes","string","out","p","c1","fromCharCode","finish","remain","BufferReaderPrototype","readStringBuffer","readFloatLE","readDoubleLE","deferred","files","SYNC","handleExtension","extendedType","sisterField","RootPrototype","resolvePath","load","filename","callback","err","cb","process","JSON","parsed","self","fetch","sync","queued","weak","idx","altname","setTimeout","fs","readFileSync","asPromise","loadSync","newDeferred","rpc","rpcImpl","EventEmitter","$rpc","ServicePrototype","endedByRPC","emit","off","_methodsArray","methodsArray","methodName","inherited","getMethodsArray","requestDelimited","responseDelimited","rpcService","request","requestData","setImmediate","responseData","response","err2","unescape","$0","$1","subject","re","stringDelim","stringDoubleRe","stringSingleRe","lastIndex","match","exec","stack","repeat","curr","s_nl","s_sl","s_as","delimRe","delim","expected","actual","equals","_fieldsById","_fieldsArray","_repeatedFieldsArray","_oneofsArray","_ctor","TypePrototype","fieldsById","names","fieldsArray","repeatedFieldsArray","filter","oneofsArray","fieldName","oneOfName","fld","bake","fn","ctx","Promise","reject","onload","xhr","status","responseText","readFile","XMLHttpRequest","onreadystatechange","readyState","open","send","isAbsolutePath","normalizePath","parts","prefix","isFinite","description","TypeError","eval","originPath","importPath","alreadyNormalized","dst","format","params","param","stringify","underScore","newBuffer","size","allocUnsafe","_listeners","EventEmitterPrototype","on","evt","listeners","LongBitsPrototype","zero","zzEncode","fromNumber","from","fromString","low","high","unsigned","charCodeAt","fromHash","hash","toHash","mask","part0","part1","part2","pool","alloc","SIZE","MAX","slab","isNode","global","versions","node","dcodeIO","longFromHash","bits","fromBits","target","descriptors","descriptor","ie8","ucKey","defineProperty","freeze","Op","val","noop","State","tail","states","writeByte","writeVarint32","writeVarint64","writeFixed32","writeString","c2","byteLength","strlen","BufferWriter","writeFloatBuffer","writeFloatLE","writeDoubleBuffer","writeDoubleLE","writeBytesBuffer","copy","WriterPrototype","op","writeFloat","writeDouble","writeBytes","BufferWriterPrototype","writeStringBuffer","utf8Write","amd"],"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\nmodule.exports = Class;\r\n\r\nvar Message = require(11),\r\n Type = require(23),\r\n util = require(25);\r\n\r\nvar _TypeError = util._TypeError;\r\n\r\n/**\r\n * Constructs a class instance, which is also a message prototype.\r\n * @classdesc Runtime class providing the tools to create your own custom classes.\r\n * @constructor\r\n * @param {Type} type Reflected type\r\n * @abstract\r\n */\r\nfunction Class(type) {\r\n return Class.create(type);\r\n}\r\n\r\n/**\r\n * Constructs a new message prototype for the specified reflected type and sets up its constructor.\r\n * @param {Type} type Reflected message type\r\n * @param {*} [ctor] Custom constructor to set up, defaults to create a generic one if omitted\r\n * @returns {Message} Message prototype\r\n */\r\nClass.create = function create(type, ctor) {\r\n if (!(type instanceof Type))\r\n throw _TypeError(\"type\", \"a Type\");\r\n var clazz = ctor;\r\n if (clazz) {\r\n if (typeof clazz !== 'function')\r\n throw _TypeError(\"ctor\", \"a function\");\r\n } else\r\n clazz = (function(MessageCtor) { // eslint-disable-line wrap-iife\r\n return function Message(properties) {\r\n MessageCtor.call(this, properties);\r\n };\r\n })(Message);\r\n\r\n // Let's pretend...\r\n clazz.constructor = Class;\r\n \r\n // new Class() -> Message.prototype\r\n var prototype = clazz.prototype = new Message();\r\n prototype.constructor = clazz;\r\n\r\n // Static methods on Message are instance methods on Class and vice-versa.\r\n util.merge(clazz, Message, true);\r\n\r\n // Classes and messages reference their reflected type\r\n clazz.$type = type;\r\n prototype.$type = type;\r\n\r\n // Messages have non-enumerable default values on their prototype\r\n type.getFieldsArray().forEach(function(field) {\r\n field.resolve();\r\n // objects on the prototype must be immmutable. users must assign a new object instance and\r\n // cannot use Array#push on empty arrays on the prototype for example, as this would modify\r\n // the value on the prototype for ALL messages of this type. Hence, these objects are frozen.\r\n prototype[field.name] = Array.isArray(field.defaultValue)\r\n ? util.emptyArray\r\n : util.isObject(field.defaultValue)\r\n ? util.emptyObject\r\n : field.defaultValue;\r\n });\r\n\r\n // Runtime messages have non-enumerable getters and setters for each virtual oneof field\r\n type.getOneofsArray().forEach(function(oneof) {\r\n util.prop(prototype, oneof.resolve().name, {\r\n get: function getVirtual() {\r\n // > If the parser encounters multiple members of the same oneof on the wire, only the last member seen is used in the parsed message.\r\n var keys = Object.keys(this);\r\n for (var i = keys.length - 1; i > -1; --i)\r\n if (oneof.oneof.indexOf(keys[i]) > -1)\r\n return keys[i];\r\n return undefined;\r\n },\r\n set: function setVirtual(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 // Register\r\n type.ctor = clazz;\r\n\r\n return prototype;\r\n};\r\n\r\n// Static methods on Message are instance methods on Class and vice-versa.\r\nClass.prototype = Message;\r\n\r\n/**\r\n * Encodes a message of this type.\r\n * @name Class#encode\r\n * @function\r\n * @param {Message|Object} message Message to encode\r\n * @param {Writer} [writer] Writer to use\r\n * @returns {Writer} Writer\r\n */\r\n\r\n/**\r\n * Encodes a message of this type preceeded by its length as a varint.\r\n * @name Class#encodeDelimited\r\n * @function\r\n * @param {Message|Object} message Message to encode\r\n * @param {Writer} [writer] Writer to use\r\n * @returns {Writer} Writer\r\n */\r\n\r\n/**\r\n * Decodes a message of this type.\r\n * @name Class#decode\r\n * @function\r\n * @param {Reader|Uint8Array} readerOrBuffer Reader or buffer to decode\r\n * @returns {Message} Decoded message\r\n */\r\n\r\n/**\r\n * Decodes a message of this type preceeded by its length as a varint.\r\n * @name Class#decodeDelimited\r\n * @function\r\n * @param {Reader|Uint8Array} readerOrBuffer Reader or buffer to decode\r\n * @returns {Message} Decoded message\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 {Message|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","\"use strict\";\r\nmodule.exports = codegen;\r\n\r\nvar util = require(25);\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 * A closure for generating functions programmatically.\r\n * @namespace\r\n * @function\r\n * @param {...string} params Function parameter names\r\n * @returns {CodegenInstance} Codegen instance\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() {\r\n var args = Array.prototype.slice.call(arguments),\r\n src = ['\\t\"use strict\"'],\r\n indent = 1,\r\n inCase = false;\r\n\r\n /**\r\n * A codegen instance as returned by {@link codegen}, that also is a {@link util.sprintf|sprintf}-like appender function.\r\n * @typedef CodegenInstance\r\n * @type {function}\r\n * @param {string} format Format string\r\n * @param {...*} args Replacements\r\n * @returns {CodegenInstance} Itself\r\n * @property {function(string=):string} str Stringifies the so far generated function source.\r\n * @property {function(string=, Object=):function} eof Ends generation and builds the function whilst applying a scope.\r\n */\r\n /**/\r\n function gen() {\r\n var line = util.sprintf.apply(null, arguments);\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 /**\r\n * Stringifies the so far generated function source.\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 * @inner\r\n */\r\n 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 gen.str = str;\r\n\r\n /**\r\n * Ends generation and builds the function whilst applying a scope.\r\n * @param {string} [name] Function name, defaults to generate an anonymous function\r\n * @param {Object} [scope] Function scope\r\n * @returns {function} The generated function, with scope applied if specified\r\n * @inner\r\n */\r\n function eof(name, scope) {\r\n if (typeof name === 'object') {\r\n scope = name;\r\n name = undefined;\r\n }\r\n var source = gen.str(name);\r\n if (codegen.verbose)\r\n console.log(\"--- codegen ---\\n\" + source.replace(/^/mg, \"> \").replace(/\\t/g, \" \")); // eslint-disable-line no-console\r\n var keys = Object.keys(scope || (scope = {}));\r\n return Function.apply(null, keys.concat(\"return \" + source)).apply(null, keys.map(function(key) { return scope[key]; })); // eslint-disable-line no-new-func\r\n // ^ Creates a wrapper function with the scoped variable names as its parameters,\r\n // calls it with the respective scoped variable values ^\r\n // and returns our brand-new properly scoped function.\r\n //\r\n // This works because \"Invoking the Function constructor as a function (without using the\r\n // new operator) has the same effect as invoking it as a constructor.\"\r\n // https://developer.mozilla.org/de/docs/Web/JavaScript/Reference/Global_Objects/Function\r\n }\r\n\r\n gen.eof = eof;\r\n\r\n return gen;\r\n}\r\n\r\ncodegen.supported = false; try { codegen.supported = codegen(\"a\",\"b\")(\"return a-b\").eof()(2,1) === 1; } catch (e) {} // eslint-disable-line no-empty\r\ncodegen.verbose = false;\r\n\r\ncodegen.encode = require(5);\r\ncodegen.decode = require(4);\r\ncodegen.verify = require(6);\r\n","\"use strict\";\r\n\r\n/**\r\n * Wire format decoder using code generation on top of reflection that also provides a fallback.\r\n * @exports codegen.decode\r\n * @namespace\r\n */\r\nvar decode = exports;\r\n\r\nvar Enum = require(8),\r\n Reader = require(17),\r\n types = require(24),\r\n util = require(25),\r\n codegen = require(3);\r\n\r\n/**\r\n * Decodes a message of `this` message's 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 {Message} Populated runtime message\r\n * @this Type\r\n */\r\ndecode.fallback = function decode_fallback(readerOrBuffer, length) {\r\n /* eslint-disable no-invalid-this, block-scoped-var, no-redeclare */\r\n var fields = this.getFieldsById(),\r\n reader = readerOrBuffer instanceof Reader ? readerOrBuffer : Reader.create(readerOrBuffer),\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].length ? 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 the specified message type, with an identical signature to {@link codegen.decode.fallback}.\r\n * @param {Type} mtype Message type\r\n * @returns {CodegenInstance} {@link codegen|Codegen} instance\r\n */\r\ndecode.generate = function decode_generate(mtype) {\r\n /* eslint-disable no-unexpected-multiline */\r\n var fields = mtype.getFieldsArray(); \r\n var gen = codegen(\"r\", \"l\")\r\n\r\n (\"r instanceof Reader||(r=Reader.create(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\nutil.props(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: 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\n * Gets this enum's values by id. This is an alias of {@link Enum#valuesById}'s getter for use within non-ES5 environments.\r\n * @name Enum#getValuesById\r\n * @function\r\n * @returns {Object.}\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(14);\r\n/** @alias Field.prototype */\r\nvar FieldPrototype = ReflectionObject.extend(Field);\r\n\r\nvar Type = require(23),\r\n Enum = require(8),\r\n MapField = require(10),\r\n types = require(24),\r\n util = require(25);\r\n\r\nvar _TypeError = util._TypeError;\r\n\r\n/**\r\n * Constructs a new message field instance. 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|Object} [rule=\"optional\"] Field rule\r\n * @param {string|Object} [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\nutil.props(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 * Determines whether this field is packed. This is an alias of {@link Field#packed}'s getter for use within non-ES5 environments.\r\n * @name Field#isPacked\r\n * @function\r\n * @returns {boolean}\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 Message#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 = MapField;\r\n\r\nvar Field = require(9);\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(8),\r\n types = require(24),\r\n util = require(25);\r\n\r\n/**\r\n * Constructs a new map field instance.\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 = Message;\r\n\r\n/**\r\n * Constructs a new message instance.\r\n * \r\n * This method should be called from your custom constructors, i.e. `Message.call(this, properties)`.\r\n * @classdesc Abstract runtime message.\r\n * @extends {Object}\r\n * @constructor\r\n * @param {Object.} [properties] Properties to set\r\n * @abstract\r\n * @see {@link Class.create}\r\n */\r\nfunction Message(properties) {\r\n if (properties) {\r\n var keys = Object.keys(properties);\r\n for (var i = 0; i < keys.length; ++i)\r\n this[keys[i]] = properties[keys[i]];\r\n }\r\n}\r\n\r\n/** @alias Message.prototype */\r\nvar MessagePrototype = Message.prototype;\r\n\r\n/**\r\n * Converts this 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 {*} [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 {*} [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 * @param {boolean} [options.defaults=false] Also sets default values on the resulting object\r\n * @returns {Object.} JSON object\r\n */\r\nMessagePrototype.asJSON = function asJSON(options) {\r\n if (!options)\r\n options = {};\r\n var fields = this.$type.fields,\r\n json = {};\r\n var keys;\r\n if (options.defaults) {\r\n keys = [];\r\n for (var k in this) // eslint-disable-line guard-for-in\r\n keys.push(k);\r\n } else\r\n 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 (!options.fieldsOnly)\r\n json[key] = value;\r\n }\r\n return json;\r\n};\r\n\r\n/**\r\n * Reference to the reflected type.\r\n * @name Message.$type\r\n * @type {Type}\r\n * @readonly\r\n */\r\n\r\n/**\r\n * Reference to the reflected type.\r\n * @name Message#$type\r\n * @type {Type}\r\n * @readonly\r\n */\r\n\r\n/**\r\n * Encodes a message of this type.\r\n * @param {Message|Object} message Message to encode\r\n * @param {Writer} [writer] Writer to use\r\n * @returns {Writer} Writer\r\n */\r\nMessage.encode = function encode(message, writer) {\r\n return this.$type.encode(message, writer);\r\n};\r\n\r\n/**\r\n * Encodes a message of this type preceeded by its length as a varint.\r\n * @param {Message|Object} message Message to encode\r\n * @param {Writer} [writer] Writer to use\r\n * @returns {Writer} Writer\r\n */\r\nMessage.encodeDelimited = function encodeDelimited(message, writer) {\r\n return this.$type.encodeDelimited(message, writer);\r\n};\r\n\r\n/**\r\n * Decodes a message of this type.\r\n * @name Message.decode\r\n * @function\r\n * @param {Reader|Uint8Array} readerOrBuffer Reader or buffer to decode\r\n * @returns {Message} Decoded message\r\n */\r\nMessage.decode = function decode(readerOrBuffer) {\r\n return this.$type.decode(readerOrBuffer);\r\n};\r\n\r\n/**\r\n * Decodes a message of this type preceeded by its length as a varint.\r\n * @name Message.decodeDelimited\r\n * @function\r\n * @param {Reader|Uint8Array} readerOrBuffer Reader or buffer to decode\r\n * @returns {Message} Decoded message\r\n */\r\nMessage.decodeDelimited = function decodeDelimited(readerOrBuffer) {\r\n return this.$type.decodeDelimited(readerOrBuffer);\r\n};\r\n\r\n/**\r\n * Verifies a message of this type.\r\n * @name Message.verify\r\n * @function\r\n * @param {Message|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\nMessage.verify = function verify(message) {\r\n return this.$type.verify(message);\r\n};\r\n","\"use strict\";\r\nmodule.exports = Method;\r\n\r\nvar ReflectionObject = require(14);\r\n/** @alias Method.prototype */\r\nvar MethodPrototype = ReflectionObject.extend(Method);\r\n\r\nvar Type = require(23),\r\n util = require(25);\r\n\r\nvar _TypeError = util._TypeError;\r\n\r\n/**\r\n * Constructs a new service method instance.\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|Object} [requestStream] Whether the request is streamed\r\n * @param {boolean|Object} [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 (type && !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(14);\r\n/** @alias Namespace.prototype */\r\nvar NamespacePrototype = ReflectionObject.extend(Namespace);\r\n\r\nvar Enum = require(8),\r\n Type = require(23),\r\n Field = require(9),\r\n Service = require(21),\r\n util = require(25);\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 instance.\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\nutil.props(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: 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(18),\r\n util = require(25);\r\n\r\nvar _TypeError = util._TypeError;\r\n\r\n/**\r\n * Constructs a new reflection object instance.\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\nutil.props(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: 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 {*} constructor Extending constructor\r\n * @returns {Object} Constructor prototype\r\n * @this ReflectionObject\r\n */\r\nfunction extend(constructor) {\r\n var prototype = constructor.prototype = Object.create(this.prototype);\r\n prototype.constructor = constructor;\r\n constructor.extend = extend;\r\n return prototype;\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(14);\r\n/** @alias OneOf.prototype */\r\nvar OneOfPrototype = ReflectionObject.extend(OneOf);\r\n\r\nvar Field = require(9),\r\n util = require(25);\r\n\r\nvar _TypeError = util._TypeError;\r\n\r\n/**\r\n * Constructs a new oneof instance.\r\n * @classdesc Reflected oneof.\r\n * @extends ReflectionObject\r\n * @constructor\r\n * @param {string} name Oneof name\r\n * @param {string[]|Object} [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 * Upper cased name for getter/setter calls.\r\n * @type {string}\r\n */\r\n this.ucName = this.name.substring(0, 1).toUpperCase() + this.name.substring(1);\r\n\r\n /**\r\n * Field names that belong to this oneof.\r\n * @type {string[]}\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 {Field[]}\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(22),\r\n Root = require(18),\r\n Type = require(23),\r\n Field = require(9),\r\n MapField = require(10),\r\n OneOf = require(15),\r\n Enum = require(8),\r\n Service = require(21),\r\n Method = require(12),\r\n types = require(24),\r\n util = require(25);\r\nvar camelCase = util.camelCase;\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\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 parent.values[name] = value;\r\n parseInlineOptions({}); // skips enum value options\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 } 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 = Reader;\r\n\r\nReader.BufferReader = BufferReader;\r\n\r\nvar util = require(29),\r\n ieee754 = require(1);\r\nvar LongBits = util.LongBits,\r\n ArrayImpl = typeof Uint8Array !== 'undefined' ? Uint8Array : Array;\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 * Configures the Reader interface according to the environment.\r\n * @memberof Reader\r\n * @returns {undefined}\r\n */\r\nfunction configure() {\r\n if (util.Long) {\r\n ReaderPrototype.int64 = read_int64_long;\r\n ReaderPrototype.uint64 = read_uint64_long;\r\n ReaderPrototype.sint64 = read_sint64_long;\r\n ReaderPrototype.fixed64 = read_fixed64_long;\r\n ReaderPrototype.sfixed64 = read_sfixed64_long;\r\n } else {\r\n ReaderPrototype.int64 = read_int64_number;\r\n ReaderPrototype.uint64 = read_uint64_number;\r\n ReaderPrototype.sint64 = read_sint64_number;\r\n ReaderPrototype.fixed64 = read_fixed64_number;\r\n ReaderPrototype.sfixed64 = read_sfixed64_number;\r\n }\r\n}\r\n\r\nReader.configure = configure;\r\n\r\n/**\r\n * Constructs a new reader instance using 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 \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/**\r\n * Creates a new reader using the specified buffer.\r\n * @param {Uint8Array} buffer Buffer to read from\r\n * @returns {BufferReader|Reader} A {@link BufferReader} if `buffer` is a Buffer, otherwise a {@link Reader}\r\n */\r\nReader.create = function create(buffer) {\r\n return new (util.Buffer && util.Buffer.isBuffer(buffer) && BufferReader || Reader)(buffer);\r\n};\r\n\r\n/** @alias Reader.prototype */\r\nvar ReaderPrototype = Reader.prototype;\r\n\r\nReaderPrototype._slice = ArrayImpl.prototype.subarray || ArrayImpl.prototype.slice;\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 // 1 byte\r\n var octet = this.buf[this.pos++],\r\n value = octet & 127;\r\n if (octet > 127) { // false if octet is undefined (pos >= len)\r\n // 2 bytes\r\n octet = this.buf[this.pos++];\r\n value |= (octet & 127) << 7;\r\n if (octet > 127) {\r\n // 3 bytes\r\n octet = this.buf[this.pos++];\r\n value |= (octet & 127) << 14;\r\n if (octet > 127) {\r\n // 4 bytes\r\n octet = this.buf[this.pos++];\r\n value |= (octet & 127) << 21;\r\n if (octet > 127) {\r\n // 5 bytes\r\n octet = this.buf[this.pos++];\r\n value |= octet << 28;\r\n if (octet > 127) {\r\n // 6..10 bytes (sign extended)\r\n this.pos += 5;\r\n }\r\n }\r\n }\r\n }\r\n }\r\n if (this.pos > this.len) {\r\n this.pos = this.len;\r\n throw indexOutOfRange(this);\r\n }\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/* eslint-disable no-invalid-this */\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();\r\n}\r\n\r\nfunction read_int64_number() {\r\n return readLongVarint.call(this).toNumber();\r\n}\r\n\r\nfunction read_uint64_long() {\r\n return readLongVarint.call(this).toLong(true);\r\n}\r\n\r\nfunction read_uint64_number() {\r\n return readLongVarint.call(this).toNumber(true);\r\n}\r\n\r\nfunction read_sint64_long() {\r\n return readLongVarint.call(this).zzDecode().toLong();\r\n}\r\n\r\nfunction read_sint64_number() {\r\n return readLongVarint.call(this).zzDecode().toNumber();\r\n}\r\n\r\n/* eslint-enable no-invalid-this */\r\n\r\n/**\r\n * Reads a varint as a signed 64 bit value.\r\n * @name Reader#int64\r\n * @function\r\n * @returns {Long|number} Value read\r\n */\r\n\r\n/**\r\n * Reads a varint as an unsigned 64 bit value.\r\n * @name Reader#uint64\r\n * @function\r\n * @returns {Long|number} Value read\r\n */\r\n\r\n/**\r\n * Reads a zig-zag encoded varint as a signed 64 bit value.\r\n * @name Reader#sint64\r\n * @function\r\n * @returns {Long|number} Value read\r\n */\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/* eslint-disable no-invalid-this */\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);\r\n}\r\n\r\nfunction read_fixed64_number() {\r\n return readLongFixed.call(this).toNumber(true);\r\n}\r\n\r\nfunction read_sfixed64_long() {\r\n return readLongFixed.call(this).zzDecode().toLong();\r\n}\r\n\r\nfunction read_sfixed64_number() {\r\n return readLongFixed.call(this).zzDecode().toNumber();\r\n}\r\n\r\n/* eslint-enable no-invalid-this */\r\n\r\n/**\r\n * Reads fixed 64 bits.\r\n * @name Reader#fixed64\r\n * @function\r\n * @returns {Long|number} Value read\r\n */\r\n\r\n/**\r\n * Reads zig-zag encoded fixed 64 bits.\r\n * @name Reader#sfixed64\r\n * @function\r\n * @returns {Long|number} Value read\r\n */\r\n\r\nvar readFloat = typeof Float32Array !== 'undefined'\r\n ? (function() { // eslint-disable-line wrap-iife\r\n var f32 = new Float32Array(1),\r\n f8b = new Uint8Array(f32.buffer);\r\n f32[0] = -0;\r\n return f8b[3] // already le?\r\n ? function readFloat_f32(buf, pos) {\r\n f8b[0] = buf[pos++];\r\n f8b[1] = buf[pos++];\r\n f8b[2] = buf[pos++];\r\n f8b[3] = buf[pos ];\r\n return f32[0];\r\n }\r\n : function readFloat_f32_le(buf, pos) {\r\n f8b[3] = buf[pos++];\r\n f8b[2] = buf[pos++];\r\n f8b[1] = buf[pos++];\r\n f8b[0] = buf[pos ];\r\n return f32[0];\r\n };\r\n })()\r\n : function readFloat_ieee754(buf, pos) {\r\n return ieee754.read(buf, pos, false, 23, 4);\r\n };\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 = readFloat(this.buf, this.pos);\r\n this.pos += 4;\r\n return value;\r\n};\r\n\r\nvar readDouble = typeof Float64Array !== 'undefined'\r\n ? (function() { // eslint-disable-line wrap-iife\r\n var f64 = new Float64Array(1),\r\n f8b = new Uint8Array(f64.buffer);\r\n f64[0] = -0;\r\n return f8b[7] // already le?\r\n ? function readDouble_f64(buf, pos) {\r\n f8b[0] = buf[pos++];\r\n f8b[1] = buf[pos++];\r\n f8b[2] = buf[pos++];\r\n f8b[3] = buf[pos++];\r\n f8b[4] = buf[pos++];\r\n f8b[5] = buf[pos++];\r\n f8b[6] = buf[pos++];\r\n f8b[7] = buf[pos ];\r\n return f64[0];\r\n }\r\n : function readDouble_f64_le(buf, pos) {\r\n f8b[7] = buf[pos++];\r\n f8b[6] = buf[pos++];\r\n f8b[5] = buf[pos++];\r\n f8b[4] = buf[pos++];\r\n f8b[3] = buf[pos++];\r\n f8b[2] = buf[pos++];\r\n f8b[1] = buf[pos++];\r\n f8b[0] = buf[pos ];\r\n return f64[0];\r\n };\r\n })()\r\n : function readDouble_ieee754(buf, pos) {\r\n return ieee754.read(buf, pos, false, 52, 8);\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 = readDouble(this.buf, this.pos);\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 readStringBuffer = util.Buffer.prototype.utf8Slice // around forever, but not present in browser buffer\r\n ? readStringBuffer_utf8Slice\r\n : readStringBuffer_toString;\r\n initBufferReader = false;\r\n};\r\n\r\n/**\r\n * Constructs a new buffer reader instance.\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\nif (typeof Float32Array === 'undefined') // f32 is faster (node 6.9.1)\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\nif (typeof Float64Array === 'undefined') // f64 is faster (node 6.9.1)\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\nvar readStringBuffer;\r\n\r\nfunction readStringBuffer_utf8Slice(buf, start, end) {\r\n return buf.utf8Slice(start, end); // fastest\r\n}\r\n\r\nfunction readStringBuffer_toString(buf, start, end) {\r\n return buf.toString(\"utf8\", start, end); // 2nd, again assertions\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 readStringBuffer(this.buf, 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\r\nconfigure();\r\n","\"use strict\";\r\nmodule.exports = Root;\r\n\r\nvar Namespace = require(13);\r\n/** @alias Root.prototype */\r\nvar RootPrototype = Namespace.extend(Root);\r\n\r\nvar Field = require(9),\r\n util = require(25),\r\n common = require(7);\r\n\r\n/**\r\n * Constructs a new root namespace instance.\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// A symbol-like function to safely signal synchronous loading\r\nfunction SYNC() {} // eslint-disable-line no-empty-function\r\n\r\n/**\r\n * Loads one or multiple .proto or preprocessed .json files into this root namespace and calls the callback.\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 {undefined}\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 var sync = callback === SYNC; // undocumented\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(16)(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 (!sync && !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 if (sync)\r\n process(filename, common[filename]);\r\n else {\r\n ++queued;\r\n setTimeout(function() {\r\n --queued;\r\n process(filename, common[filename]);\r\n });\r\n }\r\n return;\r\n }\r\n\r\n // Otherwise fetch from disk or network\r\n if (sync) {\r\n var source;\r\n try {\r\n source = util.fs.readFileSync(filename).toString(\"utf8\");\r\n } catch (err) {\r\n if (!weak)\r\n finish(err);\r\n return;\r\n }\r\n process(filename, source);\r\n } else {\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 }\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 (sync)\r\n return self;\r\n if (!queued)\r\n finish(null, self);\r\n return undefined;\r\n};\r\n// function load(filename:string, callback:function):undefined\r\n\r\n/**\r\n * Loads one or multiple .proto or preprocessed .json files into this root namespace and returns a promise.\r\n * @name Root#load\r\n * @function\r\n * @param {string|string[]} filename Names of one or multiple files to load\r\n * @returns {Promise} Promise\r\n * @variation 2\r\n */\r\n// function load(filename:string):Promise\r\n\r\n/**\r\n * Synchronously 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 * @returns {Root} Root namespace\r\n * @throws {Error} If synchronous fetching is not supported (i.e. in browsers) or if a file's syntax is invalid\r\n */\r\nRootPrototype.loadSync = function loadSync(filename) {\r\n return this.load(filename, SYNC);\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\n\r\n/**\r\n * Streaming RPC helpers.\r\n * @namespace\r\n */\r\nvar rpc = exports;\r\n\r\nrpc.Service = require(20);\r\n","\"use strict\";\r\nmodule.exports = Service;\r\n\r\nvar EventEmitter = require(26);\r\n\r\n/**\r\n * Constructs a new RPC service instance.\r\n * @classdesc An RPC service as returned by {@link Service#create}.\r\n * @memberof rpc\r\n * @extends util.EventEmitter\r\n * @constructor\r\n * @param {RPCImpl} rpcImpl RPC implementation\r\n */\r\nfunction Service(rpcImpl) {\r\n EventEmitter.call(this);\r\n\r\n /**\r\n * RPC implementation. Becomes `null` when the service is ended.\r\n * @type {?RPCImpl}\r\n */\r\n this.$rpc = rpcImpl;\r\n}\r\n\r\n/** @alias rpc.Service.prototype */\r\nvar ServicePrototype = Service.prototype = Object.create(EventEmitter.prototype);\r\nServicePrototype.constructor = Service;\r\n\r\n/**\r\n * Ends this service and emits the `end` event.\r\n * @param {boolean} [endedByRPC=false] Whether the service has been ended by the RPC implementation.\r\n * @returns {rpc.Service} `this`\r\n */\r\nServicePrototype.end = function end(endedByRPC) {\r\n if (this.$rpc) {\r\n if (!endedByRPC) // signal end to rpcImpl\r\n this.$rpc(null, null, null);\r\n this.$rpc = null;\r\n this.emit('end').off();\r\n }\r\n return this;\r\n};\r\n","\"use strict\";\r\nmodule.exports = Service;\r\n\r\nvar Namespace = require(13);\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(12),\r\n util = require(25),\r\n rpc = require(19);\r\n\r\n/**\r\n * Constructs a new service instance.\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\nutil.props(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: 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\r\n/**\r\n * RPC implementation passed to {@link Service#create} performing a service request on network level, i.e. by utilizing http requests or websockets.\r\n * @typedef RPCImpl\r\n * @type {function}\r\n * @param {Method} method Reflected method being called\r\n * @param {Uint8Array} requestData Request data\r\n * @param {function(?Error, Uint8Array=)} callback Node-style callback called with the error, if any, and the response data. `null` as response data signals an ended stream.\r\n * @returns {undefined}\r\n */\r\n\r\n/**\r\n * Creates a runtime service using the specified rpc implementation.\r\n * @param {function(Method, Uint8Array, function)} rpcImpl RPC implementation ({@link RPCImpl|see})\r\n * @param {boolean} [requestDelimited=false] Whether requests are length-delimited\r\n * @param {boolean} [responseDelimited=false] Whether responses are length-delimited\r\n * @returns {rpc.Service} Runtime RPC service. Useful where requests and/or responses are streamed.\r\n */\r\nServicePrototype.create = function create(rpcImpl, requestDelimited, responseDelimited) {\r\n var rpcService = new rpc.Service(rpcImpl);\r\n this.getMethodsArray().forEach(function(method) {\r\n rpcService[method.name.substring(0, 1).toLowerCase() + method.name.substring(1)] = function callVirtual(request, /* optional */ callback) {\r\n if (!rpcService.$rpc) // already ended?\r\n return;\r\n if (!request)\r\n throw util._TypeError(\"request\", \"not null\");\r\n method.resolve();\r\n var requestData;\r\n try {\r\n requestData = (requestDelimited && method.resolvedRequestType.encodeDelimited(request) || method.resolvedRequestType.encode(request)).finish();\r\n } catch (err) {\r\n (typeof setImmediate === 'function' && setImmediate || setTimeout)(function() { callback(err); });\r\n return;\r\n }\r\n // Calls the custom RPC implementation with the reflected method and binary request data\r\n // and expects the rpc implementation to call its callback with the binary response data.\r\n rpcImpl(method, requestData, function(err, responseData) {\r\n if (err) {\r\n rpcService.emit('error', err, method);\r\n return callback ? callback(err) : undefined;\r\n }\r\n if (responseData === null) {\r\n rpcService.end(/* endedByRPC */ true);\r\n return undefined;\r\n }\r\n var response;\r\n try {\r\n response = responseDelimited && method.resolvedResponseType.decodeDelimited(responseData) || method.resolvedResponseType.decode(responseData);\r\n } catch (err2) {\r\n rpcService.emit('error', err2, method);\r\n return callback ? callback('error', err2) : undefined;\r\n }\r\n rpcService.emit('data', response, method);\r\n return callback ? callback(null, response) : undefined;\r\n });\r\n };\r\n });\r\n return rpcService;\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(13);\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(8),\r\n OneOf = require(15),\r\n Field = require(9),\r\n Service = require(21),\r\n Class = require(2),\r\n Message = require(11),\r\n Reader = require(17),\r\n Writer = require(30),\r\n util = require(25),\r\n codegen = require(3);\r\n\r\n/**\r\n * Constructs a new reflected message type instance.\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 repeated fields as an array.\r\n * @type {?Field[]}\r\n * @private\r\n */\r\n this._repeatedFieldsArray = 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 {*}\r\n * @private\r\n */\r\n this._ctor = null;\r\n}\r\n\r\nutil.props(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: 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: function getFieldsArray() {\r\n return this._fieldsArray || (this._fieldsArray = util.toArray(this.fields));\r\n }\r\n },\r\n\r\n /**\r\n * Repeated fields of this message as an array for iteration.\r\n * @name Type#repeatedFieldsArray\r\n * @type {Field[]}\r\n * @readonly\r\n */\r\n repeatedFieldsArray: {\r\n get: function getRepeatedFieldsArray() {\r\n return this._repeatedFieldsArray || (this._repeatedFieldsArray = this.getFieldsArray().filter(function(field) { return field.repeated; }));\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: 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 {Class}\r\n */\r\n ctor: {\r\n get: function getCtor() {\r\n return this._ctor || (this._ctor = Class.create(this).constructor);\r\n },\r\n set: function setCtor(ctor) {\r\n if (ctor && !(ctor.prototype instanceof Message))\r\n throw util._TypeError(\"ctor\", \"a constructor inheriting from Message\");\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 * @returns {Message} Runtime message\r\n */\r\nTypePrototype.create = function create(properties) {\r\n return new (this.getCtor())(properties);\r\n};\r\n\r\n/**\r\n * Encodes a message of this type.\r\n * @param {Message|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 return (this.encode = codegen.supported\r\n ? codegen.encode.generate(this).eof(this.getFullName() + \"$encode\", {\r\n Writer : Writer,\r\n types : this.getFieldsArray().map(function(fld) { return fld.resolvedType; }),\r\n util : util\r\n })\r\n : codegen.encode.fallback\r\n ).call(this, 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 {Message|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 {Message} Decoded message\r\n */\r\nTypePrototype.decode = function decode(readerOrBuffer, length) {\r\n return (this.decode = codegen.supported\r\n ? codegen.decode.generate(this).eof(this.getFullName() + \"$decode\", {\r\n Reader : Reader,\r\n types : this.getFieldsArray().map(function(fld) { return fld.resolvedType; }),\r\n util : util\r\n })\r\n : codegen.decode.fallback\r\n ).call(this, 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 {Message} Decoded message\r\n */\r\nTypePrototype.decodeDelimited = function decodeDelimited(readerOrBuffer) {\r\n readerOrBuffer = readerOrBuffer instanceof Reader ? readerOrBuffer : Reader.create(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 {Message|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 return (this.verify = codegen.supported\r\n ? codegen.verify.generate(this).eof(this.getFullName() + \"$verify\", {\r\n types : this.getFieldsArray().map(function(fld) { return fld.resolvedType; })\r\n })\r\n : codegen.verify.fallback\r\n ).call(this, message);\r\n};\r\n","\"use strict\";\r\n\r\n/**\r\n * Common type constants.\r\n * @namespace\r\n */\r\nvar types = exports;\r\n\r\nvar util = require(25);\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\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 */ util.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 /* 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]);\r\n","\"use strict\";\r\n\r\n/**\r\n * Various utility functions.\r\n * @namespace\r\n */\r\nvar util = exports;\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 * Filesystem, if available.\r\n * @memberof util\r\n * @type {?Object}\r\n */\r\nvar fs = null; // Hide this from webpack. There is probably another, better way.\r\ntry { fs = eval(['req','uire'].join(''))(\"fs\"); } catch (e) {} // eslint-disable-line no-eval, no-empty\r\n\r\nutil.fs = fs;\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} A 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 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 * 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/**\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 return \"['\" + prop.replace(/\\\\/g, \"\\\\\\\\\").replace(/'/g, \"\\\\'\") + \"']\";\r\n};\r\n\r\n/**\r\n * Minimalistic sprintf.\r\n * @param {string} format Format string\r\n * @param {...*} args Replacements\r\n * @returns {string} Formatted string\r\n */\r\nutil.sprintf = function sprintf(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 switch ($1) {\r\n case \"j\":\r\n return JSON.stringify(param);\r\n case \"p\":\r\n return util.safeProp(param);\r\n default:\r\n return String(param);\r\n }\r\n });\r\n};\r\n\r\n/**\r\n * Converts a string to camel case notation.\r\n * @param {string} str String to convert\r\n * @returns {string} Converted string\r\n */\r\nutil.camelCase = function camelCase(str) {\r\n return str.substring(0,1)\r\n + str.substring(1)\r\n .replace(/_([a-z])(?=[a-z]|$)/g, function($0, $1) { return $1.toUpperCase(); });\r\n};\r\n\r\n/**\r\n * Converts a string to underscore notation.\r\n * @param {string} str String to convert\r\n * @returns {string} Converted string\r\n */\r\nutil.underScore = function underScore(str) {\r\n return str.substring(0,1)\r\n + str.substring(1)\r\n .replace(/([A-Z])(?=[a-z]|$)/g, function($0, $1) { return \"_\" + $1.toLowerCase(); });\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 size = size || 0; \r\n return util.Buffer\r\n ? util.Buffer.allocUnsafe && util.Buffer.allocUnsafe(size) || new util.Buffer(size)\r\n : new (typeof Uint8Array !== 'undefined' && Uint8Array || Array)(size);\r\n};\r\n\r\nutil.EventEmitter = require(26);\r\n\r\n// Merge in runtime utility\r\nutil.merge(util, require(29));\r\n","\"use strict\";\r\nmodule.exports = EventEmitter;\r\n\r\n/**\r\n * Constructs a new event emitter instance.\r\n * @classdesc A minimal event emitter.\r\n * @memberof util\r\n * @constructor\r\n */\r\nfunction EventEmitter() {\r\n\r\n /**\r\n * Registered listeners.\r\n * @type {Object.}\r\n * @private\r\n */\r\n this._listeners = {};\r\n}\r\n\r\n/** @alias util.EventEmitter.prototype */\r\nvar EventEmitterPrototype = EventEmitter.prototype;\r\n\r\n/**\r\n * Registers an event listener.\r\n * @param {string} evt Event name\r\n * @param {function} fn Listener\r\n * @param {Object} [ctx] Listener context\r\n * @returns {util.EventEmitter} `this`\r\n */\r\nEventEmitterPrototype.on = function on(evt, fn, ctx) {\r\n (this._listeners[evt] || (this._listeners[evt] = [])).push({\r\n fn : fn,\r\n ctx : ctx || this\r\n });\r\n return this;\r\n};\r\n\r\n/**\r\n * Removes an event listener.\r\n * @param {string} [evt] Event name. Removes all listeners if omitted.\r\n * @param {function} [fn] Listener to remove. Removes all listeners of `evt` if omitted.\r\n * @returns {util.EventEmitter} `this`\r\n */\r\nEventEmitterPrototype.off = function off(evt, fn) {\r\n if (evt === undefined)\r\n this._listeners = {};\r\n else {\r\n if (fn === undefined)\r\n this._listeners[evt] = [];\r\n else {\r\n var listeners = this._listeners[evt];\r\n for (var i = 0; i < listeners.length;)\r\n if (listeners[i].fn === fn)\r\n listeners.splice(i, 1);\r\n else\r\n ++i;\r\n }\r\n }\r\n return this;\r\n};\r\n\r\n/**\r\n * Emits an event by calling its listeners with the specified arguments.\r\n * @param {string} evt Event name\r\n * @param {...*} args Arguments\r\n * @returns {util.EventEmitter} `this`\r\n */\r\nEventEmitterPrototype.emit = function emit(evt) {\r\n var listeners = this._listeners[evt];\r\n if (listeners) {\r\n var args = Array.prototype.slice.call(arguments, 1);\r\n for (var i = 0; i < listeners.length; ++i)\r\n listeners[i].fn.apply(listeners[i].ctx, args);\r\n }\r\n return this;\r\n};\r\n","\"use strict\";\r\n\r\nmodule.exports = LongBits;\r\n\r\nvar util = require(25);\r\n\r\n/**\r\n * Any compatible Long instance.\r\n * @typedef Long\r\n * @type {Object}\r\n * @property {number} low Low bits\r\n * @property {number} high High bits\r\n * @property {boolean} unsigned Whether unsigned or not\r\n */\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 = LongBits.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 * Constructs new long bits from a number, long or string.\r\n * @param {Long|number|string} value Value\r\n * @returns {util.LongBits} Instance\r\n * @throws {TypeError} If `value` is a string and no long library is present.\r\n */\r\nLongBits.from = function from(value) {\r\n switch (typeof value) { // eslint-disable-line default-case\r\n case 'number':\r\n return LongBits.fromNumber(value);\r\n case 'string':\r\n value = util.Long.fromString(value); // throws without a long lib\r\n }\r\n return (value.low || value.high) && new LongBits(value.low >>> 0, value.high >>> 0) || zero;\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 = pool;\r\n\r\n/**\r\n * A drop-in buffer pool, similar in functionality to what node uses for buffers.\r\n * @memberof util\r\n * @function\r\n * @param {function(number):Uint8Array} alloc Allocator\r\n * @param {function(number, number):Uint8Array} slice Slicer\r\n * @param {number} [size=8192] Slab size\r\n * @returns {function(number):Uint8Array} Pooled allocator\r\n */\r\nfunction pool(alloc, slice, size) {\r\n var SIZE = size || 8192;\r\n var MAX = SIZE >>> 1;\r\n var slab = null;\r\n var offset = SIZE;\r\n return function pool_alloc(size) {\r\n if (size > MAX)\r\n return alloc(size);\r\n if (offset + size > SIZE) {\r\n slab = alloc(SIZE);\r\n offset = 0;\r\n }\r\n var buf = slice.call(slab, offset, offset += size);\r\n if (offset & 7) // align to 32 bit\r\n offset = (offset | 7) + 1;\r\n return buf;\r\n };\r\n}\r\n","\"use strict\";\r\n\r\nvar util = exports;\r\n\r\nvar LongBits = util.LongBits = require(\"./longbits\");\r\n\r\nutil.pool = require(\"./pool\");\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 {*}\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 {*}\r\n */\r\nutil.Long = global.dcodeIO && global.dcodeIO.Long || null;\r\n\r\nif (!util.Long && isNode)\r\n try { util.Long = require(\"long\"); } catch (e) {} // eslint-disable-line no-empty\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 * Defines the specified properties on the specified target. Also adds getters and setters for non-ES5 environments.\r\n * @param {Object} target Target object\r\n * @param {Object} descriptors Property descriptors\r\n * @returns {undefined}\r\n */\r\nutil.props = function props(target, descriptors) {\r\n Object.keys(descriptors).forEach(function(key) {\r\n util.prop(target, key, descriptors[key]);\r\n });\r\n};\r\n\r\n/**\r\n * Defines the specified property on the specified target. Also adds getters and setters for non-ES5 environments.\r\n * @param {Object} target Target object\r\n * @param {string} key Property name\r\n * @param {Object} descriptor Property descriptor\r\n * @returns {undefined}\r\n */\r\nutil.prop = function prop(target, key, descriptor) {\r\n var ie8 = !-[1,];\r\n var ucKey = key.substring(0, 1).toUpperCase() + key.substring(1);\r\n if (descriptor.get)\r\n target['get' + ucKey] = descriptor.get;\r\n if (descriptor.set)\r\n target['set' + ucKey] = ie8\r\n ? function(value) {\r\n descriptor.set.call(this, value);\r\n this[key] = value;\r\n }\r\n : descriptor.set;\r\n if (ie8) {\r\n if (descriptor.value !== undefined)\r\n target[key] = descriptor.value;\r\n } else\r\n Object.defineProperty(target, key, descriptor);\r\n};\r\n\r\n/**\r\n * An immuable empty array.\r\n * @memberof util\r\n * @type {Array.<*>}\r\n */\r\nutil.emptyArray = Object.freeze([]);\r\n\r\n/**\r\n * An immutable empty object.\r\n * @type {Object}\r\n */\r\nutil.emptyObject = Object.freeze({});\r\n","\"use strict\";\r\nmodule.exports = Writer;\r\n\r\nWriter.BufferWriter = BufferWriter;\r\n\r\nvar util = require(29),\r\n ieee754 = require(1);\r\nvar LongBits = util.LongBits,\r\n ArrayImpl = typeof Uint8Array !== 'undefined' ? Uint8Array : Array;\r\n\r\n/**\r\n * Constructs a new writer operation instance.\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 instance.\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 * @param {State} next Next state entry\r\n * @private\r\n * @ignore\r\n */\r\nfunction State(writer, next) {\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\n * Next state.\r\n * @type {?State}\r\n */\r\n this.next = next;\r\n}\r\n\r\nWriter.State = State;\r\n\r\n/**\r\n * Constructs a new writer instance.\r\n * @classdesc Wire format writer using `Uint8Array` if available, otherwise `Array`.\r\n * @constructor\r\n */\r\nfunction 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 * Linked forked states.\r\n * @type {?Object}\r\n */\r\n this.states = null;\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/**\r\n * Creates a new writer.\r\n * @returns {BufferWriter|Writer} A {@link BufferWriter} when Buffers are supported, otherwise a {@link Writer}\r\n */\r\nWriter.create = function create() {\r\n return new (util.Buffer && BufferWriter || Writer);\r\n};\r\n\r\n/**\r\n * Allocates a buffer of the specified size.\r\n * @param {number} size Buffer size\r\n * @returns {Uint8Array} Buffer\r\n */\r\nWriter.alloc = function alloc(size) {\r\n return new ArrayImpl(size);\r\n};\r\n\r\n// Use Uint8Array buffer pool in the browser, just like node does with buffers\r\nif (ArrayImpl !== Array)\r\n Writer.alloc = util.pool(Writer.alloc, ArrayImpl.prototype.subarray || ArrayImpl.prototype.slice);\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 value < 128\r\n ? this.push(writeByte, 1, value)\r\n : this.push(writeVarint32,\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) {\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 while (val.lo > 127) {\r\n buf[pos++] = val.lo & 127 | 128;\r\n val.lo = val.lo >>> 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|string} value Value to write\r\n * @returns {Writer} `this`\r\n * @throws {TypeError} If `value` is a string and no long library is present.\r\n */\r\nWriterPrototype.uint64 = function write_uint64(value) {\r\n var bits = LongBits.from(value);\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|string} value Value to write\r\n * @returns {Writer} `this`\r\n * @throws {TypeError} If `value` is a string and no long library is present.\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|string} value Value to write\r\n * @returns {Writer} `this`\r\n * @throws {TypeError} If `value` is a string and no long library is present.\r\n */\r\nWriterPrototype.sint64 = function write_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;\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\n/**\r\n * Writes a 64 bit value as fixed 64 bits.\r\n * @param {Long|number|string} value Value to write\r\n * @returns {Writer} `this`\r\n * @throws {TypeError} If `value` is a string and no long library is present.\r\n */\r\nWriterPrototype.fixed64 = function write_fixed64(value) {\r\n var bits = LongBits.from(value);\r\n return this.push(writeFixed32, 4, bits.hi).push(writeFixed32, 4, bits.lo);\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|string} value Value to write\r\n * @returns {Writer} `this`\r\n * @throws {TypeError} If `value` is a string and no long library is present.\r\n */\r\nWriterPrototype.sfixed64 = function write_sfixed64(value) {\r\n var bits = LongBits.from(value).zzEncode();\r\n return this.push(writeFixed32, 4, bits.hi).push(writeFixed32, 4, bits.lo);\r\n};\r\n\r\nvar writeFloat = typeof Float32Array !== 'undefined'\r\n ? (function() { // eslint-disable-line wrap-iife\r\n var f32 = new Float32Array(1),\r\n f8b = new Uint8Array(f32.buffer);\r\n f32[0] = -0;\r\n return f8b[3] // already le?\r\n ? function writeFloat_f32(buf, pos, val) {\r\n f32[0] = val;\r\n buf[pos++] = f8b[0];\r\n buf[pos++] = f8b[1];\r\n buf[pos++] = f8b[2];\r\n buf[pos ] = f8b[3];\r\n }\r\n : function writeFloat_f32_le(buf, pos, val) {\r\n f32[0] = val;\r\n buf[pos++] = f8b[3];\r\n buf[pos++] = f8b[2];\r\n buf[pos++] = f8b[1];\r\n buf[pos ] = f8b[0];\r\n };\r\n })()\r\n : function writeFloat_ieee754(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\nvar writeDouble = typeof Float64Array !== 'undefined'\r\n ? (function() { // eslint-disable-line wrap-iife\r\n var f64 = new Float64Array(1),\r\n f8b = new Uint8Array(f64.buffer);\r\n f64[0] = -0;\r\n return f8b[7] // already le?\r\n ? function writeDouble_f64(buf, pos, val) {\r\n f64[0] = val;\r\n buf[pos++] = f8b[0];\r\n buf[pos++] = f8b[1];\r\n buf[pos++] = f8b[2];\r\n buf[pos++] = f8b[3];\r\n buf[pos++] = f8b[4];\r\n buf[pos++] = f8b[5];\r\n buf[pos++] = f8b[6];\r\n buf[pos ] = f8b[7];\r\n }\r\n : function writeDouble_f64_le(buf, pos, val) {\r\n f64[0] = val;\r\n buf[pos++] = f8b[7];\r\n buf[pos++] = f8b[6];\r\n buf[pos++] = f8b[5];\r\n buf[pos++] = f8b[4];\r\n buf[pos++] = f8b[3];\r\n buf[pos++] = f8b[2];\r\n buf[pos++] = f8b[1];\r\n buf[pos ] = f8b[0];\r\n };\r\n })()\r\n : function writeDouble_ieee754(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) {\r\n buf.set(val, pos);\r\n }\r\n : function writeBytes_for(buf, pos, val) {\r\n for (var i = 0; i < val.length; ++i)\r\n buf[pos + i] = val[i];\r\n };\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 && ((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 var len = 0;\r\n for (var i = 0; i < strlen; ++i) {\r\n var 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 && (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\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#}, {@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.states = new State(this, this.states);\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.states) {\r\n this.head = this.states.head;\r\n this.tail = this.states.tail;\r\n this.len = this.states.len;\r\n this.states = this.states.next;\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 as a tag 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 = this.constructor.alloc(this.len);\r\n this.reset();\r\n var pos = 0;\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 instance.\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/**\r\n * Allocates a buffer of the specified size.\r\n * @param {number} size Buffer size\r\n * @returns {Uint8Array} Buffer\r\n */\r\nBufferWriter.alloc = function alloc_buffer(size) {\r\n BufferWriter.alloc = util.Buffer.allocUnsafe\r\n ? util.Buffer.allocUnsafe\r\n : function allocUnsafeNew(size) { return new util.Buffer(size); };\r\n return BufferWriter.alloc(size);\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\nif (typeof Float32Array === 'undefined') // f32 is faster (node 6.9.1)\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\nif (typeof Float64Array === 'undefined') // f64 is faster (node 6.9.1)\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 // This could probably be optimized just like writeStringBuffer, but most real use cases won't benefit much.\r\n}\r\n\r\nif (!(ArrayImpl.prototype.set && util.Buffer && util.Buffer.prototype.set)) // set is faster (node 6.9.1)\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\nvar writeStringBuffer = (function() { // eslint-disable-line wrap-iife\r\n return util.Buffer && util.Buffer.prototype.utf8Write // around forever, but not present in browser buffer\r\n ? function writeString_buffer_utf8Write(buf, pos, val) {\r\n if (val.length < 40)\r\n writeString(buf, pos, val);\r\n else\r\n buf.utf8Write(val, pos);\r\n }\r\n : function writeString_buffer_write(buf, pos, val) {\r\n if (val.length < 40)\r\n writeString(buf, pos, val);\r\n else\r\n buf.write(val, pos);\r\n };\r\n // Note that the plain JS encoder is faster for short strings, probably because of redundant assertions.\r\n // For a raw utf8Write, the breaking point is about 20 characters, for write it is around 40 characters.\r\n // Unfortunately, this does not translate 1:1 to real use cases, hence the common \"good enough\" limit of 40.\r\n})();\r\n\r\n/**\r\n * @override\r\n */\r\nBufferWriterPrototype.string = function write_string_buffer(value) {\r\n var len = value.length < 40\r\n ? byteLength(value)\r\n : util.Buffer.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","\"use strict\";\r\nvar protobuf = global.protobuf = exports;\r\n\r\n/**\r\n * Loads one or multiple .proto or preprocessed .json files into a common root namespace and calls the callback.\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 {undefined}\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);\r\n}\r\n// function load(filename:string, root:Root, callback:function):undefined\r\n\r\n/**\r\n * Loads one or multiple .proto or preprocessed .json files into a common root namespace and calls the callback.\r\n * @name load\r\n * @function\r\n * @param {string|string[]} filename One or multiple files to load\r\n * @param {function(?Error, Root=)} callback Callback function\r\n * @returns {undefined}\r\n * @variation 2\r\n */\r\n// function load(filename:string, callback:function):undefined\r\n\r\n/**\r\n * Loads one or multiple .proto or preprocessed .json files into a common root namespace and returns a promise.\r\n * @name load\r\n * @function\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 * @returns {Promise} Promise\r\n * @variation 3\r\n */\r\n// function load(filename:string, [root:Root]):Promise\r\n\r\nprotobuf.load = load;\r\n\r\n/**\r\n * Synchronously loads one or multiple .proto or preprocessed .json files into a common root namespace (node only).\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 * @returns {Root} Root namespace\r\n * @throws {Error} If synchronous fetching is not supported (i.e. in browsers) or if a file's syntax is invalid\r\n */\r\nfunction loadSync(filename, root) {\r\n if (!root)\r\n root = new protobuf.Root();\r\n return root.loadSync(filename);\r\n}\r\n\r\nprotobuf.loadSync = loadSync;\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.codegen = require(\"./codegen\");\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.Class = require(\"./class\");\r\nprotobuf.Message = require(\"./message\");\r\n\r\n// Utility\r\nprotobuf.types = require(\"./types\");\r\nprotobuf.common = require(\"./common\");\r\nprotobuf.rpc = require(\"./rpc\");\r\nprotobuf.util = require(\"./util\");\r\n\r\n// Be nice to AMD\r\nif (typeof define === 'function' && define.amd)\r\n define([\"long\"], function(Long) {\r\n if (Long) {\r\n protobuf.util.Long = Long;\r\n protobuf.Reader.configure();\r\n }\r\n return protobuf;\r\n });\r\n"],"sourceRoot":"."}
\ No newline at end of file
diff --git a/src/class.js b/src/class.js
new file mode 100644
index 000000000..6f230e31e
--- /dev/null
+++ b/src/class.js
@@ -0,0 +1,137 @@
+"use strict";
+module.exports = Class;
+
+var Message = require("./message"),
+ Type = require("./type"),
+ util = require("./util");
+
+var _TypeError = util._TypeError;
+
+/**
+ * Constructs a class instance, which is also a message prototype.
+ * @classdesc Runtime class providing the tools to create your own custom classes.
+ * @constructor
+ * @param {Type} type Reflected type
+ * @abstract
+ */
+function Class(type) {
+ return Class.create(type);
+}
+
+/**
+ * Constructs a new message prototype for the specified reflected type and sets up its constructor.
+ * @param {Type} type Reflected message type
+ * @param {*} [ctor] Custom constructor to set up, defaults to create a generic one if omitted
+ * @returns {Message} Message prototype
+ */
+Class.create = function create(type, ctor) {
+ if (!(type instanceof Type))
+ throw _TypeError("type", "a Type");
+ var clazz = ctor;
+ if (clazz) {
+ if (typeof clazz !== 'function')
+ throw _TypeError("ctor", "a function");
+ } else
+ clazz = (function(MessageCtor) { // eslint-disable-line wrap-iife
+ return function Message(properties) {
+ MessageCtor.call(this, properties);
+ };
+ })(Message);
+
+ // Let's pretend...
+ clazz.constructor = Class;
+
+ // new Class() -> Message.prototype
+ var prototype = clazz.prototype = new Message();
+ prototype.constructor = clazz;
+
+ // Static methods on Message are instance methods on Class and vice-versa.
+ util.merge(clazz, Message, true);
+
+ // Classes and messages reference their reflected type
+ clazz.$type = type;
+ prototype.$type = type;
+
+ // Messages have non-enumerable default values on their prototype
+ type.getFieldsArray().forEach(function(field) {
+ field.resolve();
+ // objects on the prototype must be immmutable. users must assign a new object instance and
+ // cannot use Array#push on empty arrays on the prototype for example, as this would modify
+ // the value on the prototype for ALL messages of this type. Hence, these objects are frozen.
+ prototype[field.name] = Array.isArray(field.defaultValue)
+ ? util.emptyArray
+ : util.isObject(field.defaultValue)
+ ? util.emptyObject
+ : field.defaultValue;
+ });
+
+ // Runtime messages have non-enumerable getters and setters for each virtual oneof field
+ type.getOneofsArray().forEach(function(oneof) {
+ util.prop(prototype, oneof.resolve().name, {
+ get: function getVirtual() {
+ // > If the parser encounters multiple members of the same oneof on the wire, only the last member seen is used in the parsed message.
+ var keys = Object.keys(this);
+ for (var i = keys.length - 1; i > -1; --i)
+ if (oneof.oneof.indexOf(keys[i]) > -1)
+ return keys[i];
+ return undefined;
+ },
+ set: function setVirtual(value) {
+ var keys = oneof.oneof;
+ for (var i = 0; i < keys.length; ++i)
+ if (keys[i] !== value)
+ delete this[keys[i]];
+ }
+ });
+ });
+
+ // Register
+ type.ctor = clazz;
+
+ return prototype;
+};
+
+// Static methods on Message are instance methods on Class and vice-versa.
+Class.prototype = Message;
+
+/**
+ * Encodes a message of this type.
+ * @name Class#encode
+ * @function
+ * @param {Message|Object} message Message to encode
+ * @param {Writer} [writer] Writer to use
+ * @returns {Writer} Writer
+ */
+
+/**
+ * Encodes a message of this type preceeded by its length as a varint.
+ * @name Class#encodeDelimited
+ * @function
+ * @param {Message|Object} message Message to encode
+ * @param {Writer} [writer] Writer to use
+ * @returns {Writer} Writer
+ */
+
+/**
+ * Decodes a message of this type.
+ * @name Class#decode
+ * @function
+ * @param {Reader|Uint8Array} readerOrBuffer Reader or buffer to decode
+ * @returns {Message} Decoded message
+ */
+
+/**
+ * Decodes a message of this type preceeded by its length as a varint.
+ * @name Class#decodeDelimited
+ * @function
+ * @param {Reader|Uint8Array} readerOrBuffer Reader or buffer to decode
+ * @returns {Message} Decoded message
+ */
+
+/**
+ * Verifies a message of this type.
+ * @name Class#verify
+ * @function
+ * @param {Message|Object} message Message or plain object to verify
+ * @returns {?string} `null` if valid, otherwise the reason why it is not
+ */
diff --git a/src/codegen/decode.js b/src/codegen/decode.js
index a270f9048..b29c04af3 100644
--- a/src/codegen/decode.js
+++ b/src/codegen/decode.js
@@ -17,7 +17,7 @@ var Enum = require("../enum"),
* Decodes a message of `this` message's type.
* @param {Reader|Uint8Array} readerOrBuffer Reader or buffer to decode from
* @param {number} [length] Length of the message, if known beforehand
- * @returns {Prototype} Populated runtime message
+ * @returns {Message} Populated runtime message
* @this Type
*/
decode.fallback = function decode_fallback(readerOrBuffer, length) {
diff --git a/src/codegen/encode.js b/src/codegen/encode.js
index b3c3c6580..404ad6b55 100644
--- a/src/codegen/encode.js
+++ b/src/codegen/encode.js
@@ -15,7 +15,7 @@ var Enum = require("../enum"),
/**
* Encodes a message of `this` message's type.
- * @param {Prototype|Object} message Runtime message or plain object to encode
+ * @param {Message|Object} message Runtime message or plain object to encode
* @param {Writer} [writer] Writer to encode to
* @returns {Writer} writer
* @this Type
diff --git a/src/codegen/verify.js b/src/codegen/verify.js
index 1b716a924..1513a4359 100644
--- a/src/codegen/verify.js
+++ b/src/codegen/verify.js
@@ -14,7 +14,7 @@ var Enum = require("../enum"),
/**
* Verifies a runtime message of `this` message type.
- * @param {Prototype|Object} message Runtime message or plain object to verify
+ * @param {Message|Object} message Runtime message or plain object to verify
* @returns {?string} `null` if valid, otherwise the reason why it is not
* @this {Type}
*/
diff --git a/src/enum.js b/src/enum.js
index 873654060..ba4295f97 100644
--- a/src/enum.js
+++ b/src/enum.js
@@ -10,7 +10,7 @@ var util = require("./util");
var _TypeError = util._TypeError;
/**
- * Constructs a new enum.
+ * Constructs a new enum instance.
* @classdesc Reflected enum.
* @extends ReflectionObject
* @constructor
diff --git a/src/field.js b/src/field.js
index 30e85ef9d..c53fa10fb 100644
--- a/src/field.js
+++ b/src/field.js
@@ -14,7 +14,7 @@ var Type = require("./type"),
var _TypeError = util._TypeError;
/**
- * Constructs a new message field. Note that {@link MapField|map fields} have their own class.
+ * Constructs a new message field instance. Note that {@link MapField|map fields} have their own class.
* @classdesc Reflected message field.
* @extends ReflectionObject
* @constructor
@@ -255,7 +255,7 @@ FieldPrototype.resolve = function resolve() {
* @param {*} value Field value
* @param {Object.} [options] Conversion options
* @returns {*} Converted value
- * @see {@link Prototype#asJSON}
+ * @see {@link Message#asJSON}
*/
FieldPrototype.jsonConvert = function(value, options) {
if (options) {
diff --git a/src/index.js b/src/index.js
index 8e7ce1d17..16eaa2c5a 100644
--- a/src/index.js
+++ b/src/index.js
@@ -43,7 +43,7 @@ function load(filename, root, callback) {
protobuf.load = load;
/**
- * Synchronously loads one or multiple .proto or preprocessed .json files into a common root namespace.
+ * Synchronously loads one or multiple .proto or preprocessed .json files into a common root namespace (node only).
* @param {string|string[]} filename One or multiple files to load
* @param {Root} [root] Root namespace, defaults to create a new one if omitted.
* @returns {Root} Root namespace
@@ -81,8 +81,8 @@ protobuf.Service = require("./service");
protobuf.Method = require("./method");
// Runtime
-protobuf.Prototype = require("./prototype");
-protobuf.inherits = require("./inherits");
+protobuf.Class = require("./class");
+protobuf.Message = require("./message");
// Utility
protobuf.types = require("./types");
diff --git a/src/inherits.js b/src/inherits.js
deleted file mode 100644
index 9f21c5534..000000000
--- a/src/inherits.js
+++ /dev/null
@@ -1,195 +0,0 @@
-"use strict";
-module.exports = inherits;
-
-var Prototype = require("./prototype"),
- Type = require("./type"),
- util = require("./util");
-
-var _TypeError = util._TypeError;
-
-/**
- * Options passed to {@link inherits}, modifying its behavior.
- * @typedef InheritanceOptions
- * @type {Object}
- * @property {boolean} [noStatics=false] Skips adding the default static methods on top of the constructor
- * @property {boolean} [noRegister=false] Skips registering the constructor with the reflected type
- */
-
-/**
- * Inherits a custom class from the message prototype of the specified message type.
- * @param {*} clazz Inheriting class constructor
- * @param {Type} type Inherited message type
- * @param {InheritanceOptions} [options] Inheritance options
- * @returns {Prototype} Created prototype
- */
-function inherits(clazz, type, options) {
- if (typeof clazz !== 'function')
- throw _TypeError("clazz", "a function");
- if (!(type instanceof Type))
- throw _TypeError("type", "a Type");
- if (!options)
- options = {};
-
- /**
- * 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.
- * @name Class
- * @extends Prototype
- * @constructor
- * @param {Object.} [properties] Properties to set on the message
- * @see {@link inherits}
- */
-
- var classProperties = {
-
- /**
- * Reference to the reflected type.
- * @name Class.$type
- * @type {Type}
- * @readonly
- */
- $type: {
- value: type
- }
- };
-
- if (!options.noStatics)
- util.merge(classProperties, {
-
- /**
- * Encodes a message of this type to a buffer.
- * @name Class.encode
- * @function
- * @param {Prototype|Object} message Message to encode
- * @param {Writer} [writer] Writer to use
- * @returns {Writer} Writer
- */
- encode: {
- value: function encode(message, writer) {
- return this.$type.encode(message, writer);
- }
- },
-
- /**
- * Encodes a message of this type preceeded by its length as a varint to a buffer.
- * @name Class.encodeDelimited
- * @function
- * @param {Prototype|Object} message Message to encode
- * @param {Writer} [writer] Writer to use
- * @returns {Writer} Writer
- */
- encodeDelimited: {
- value: function encodeDelimited(message, writer) {
- return this.$type.encodeDelimited(message, writer);
- }
- },
-
- /**
- * Decodes a message of this type from a buffer.
- * @name Class.decode
- * @function
- * @param {Uint8Array} buffer Buffer to decode
- * @returns {Prototype} Decoded message
- */
- decode: {
- value: function decode(buffer) {
- return this.$type.decode(buffer);
- }
- },
-
- /**
- * Decodes a message of this type preceeded by its length as a varint from a buffer.
- * @name Class.decodeDelimited
- * @function
- * @param {Uint8Array} buffer Buffer to decode
- * @returns {Prototype} Decoded message
- */
- decodeDelimited: {
- value: function decodeDelimited(buffer) {
- return this.$type.decodeDelimited(buffer);
- }
- },
-
- /**
- * Verifies a message of this type.
- * @name Class.verify
- * @function
- * @param {Prototype|Object} message Message or plain object to verify
- * @returns {?string} `null` if valid, otherwise the reason why it is not
- */
- verify: {
- value: function verify(message) {
- return this.$type.verify(message);
- }
- }
-
- }, true);
-
- util.props(clazz, classProperties);
- var prototype = inherits.defineProperties(new Prototype(), type);
- clazz.prototype = prototype;
- prototype.constructor = clazz;
-
- if (!options.noRegister)
- type.setCtor(clazz);
-
- return prototype;
-}
-
-/**
- * Defines the reflected type's default values and virtual oneof properties on the specified prototype.
- * @memberof inherits
- * @param {Prototype} prototype Prototype to define properties upon
- * @param {Type} type Reflected message type
- * @returns {Prototype} The specified prototype
- */
-inherits.defineProperties = function defineProperties(prototype, type) {
-
- var prototypeProperties = {
-
- /**
- * Reference to the reflected type.
- * @name Prototype#$type
- * @type {Type}
- * @readonly
- */
- $type: {
- value: type
- }
- };
-
- // Initialize default values
- type.getFieldsArray().forEach(function(field) {
- field.resolve();
- // objects on the prototype must be immmutable. users must assign a new object instance and
- // cannot use Array#push on empty arrays on the prototype for example, as this would modify
- // the value on the prototype for ALL messages of this type. Hence, these objects are frozen.
- prototype[field.name] = Array.isArray(field.defaultValue)
- ? util.emptyArray
- : util.isObject(field.defaultValue)
- ? util.emptyObject
- : field.defaultValue;
- });
-
- // Define each oneof with a non-enumerable getter and setter for the present field
- type.getOneofsArray().forEach(function(oneof) {
- util.prop(prototype, oneof.resolve().name, {
- get: function getVirtual() {
- // > If the parser encounters multiple members of the same oneof on the wire, only the last member seen is used in the parsed message.
- var keys = Object.keys(this);
- for (var i = keys.length - 1; i > -1; --i)
- if (oneof.oneof.indexOf(keys[i]) > -1)
- return keys[i];
- return undefined;
- },
- set: function setVirtual(value) {
- var keys = oneof.oneof;
- for (var i = 0; i < keys.length; ++i)
- if (keys[i] !== value)
- delete this[keys[i]];
- }
- });
- });
-
- util.props(prototype, prototypeProperties);
- return prototype;
-};
diff --git a/src/mapfield.js b/src/mapfield.js
index 1a3afa9f2..7590bae65 100644
--- a/src/mapfield.js
+++ b/src/mapfield.js
@@ -12,7 +12,7 @@ var Enum = require("./enum"),
util = require("./util");
/**
- * Constructs a new map field.
+ * Constructs a new map field instance.
* @classdesc Reflected map field.
* @extends Field
* @constructor
diff --git a/src/message.js b/src/message.js
new file mode 100644
index 000000000..4826b5a3e
--- /dev/null
+++ b/src/message.js
@@ -0,0 +1,135 @@
+"use strict";
+module.exports = Message;
+
+/**
+ * Constructs a new message instance.
+ *
+ * This method should be called from your custom constructors, i.e. `Message.call(this, properties)`.
+ * @classdesc Abstract runtime message.
+ * @extends {Object}
+ * @constructor
+ * @param {Object.} [properties] Properties to set
+ * @abstract
+ * @see {@link Class.create}
+ */
+function Message(properties) {
+ if (properties) {
+ var keys = Object.keys(properties);
+ for (var i = 0; i < keys.length; ++i)
+ this[keys[i]] = properties[keys[i]];
+ }
+}
+
+/** @alias Message.prototype */
+var MessagePrototype = Message.prototype;
+
+/**
+ * Converts this message to a JSON object.
+ * @param {Object.} [options] Conversion options
+ * @param {boolean} [options.fieldsOnly=false] Converts only properties that reference a field
+ * @param {*} [options.long] Long conversion type. Only relevant with a long library.
+ * Valid values are `String` and `Number` (the global types).
+ * Defaults to a possibly unsafe number without, and a `Long` with a long library.
+ * @param {*} [options.enum=Number] Enum value conversion type.
+ * Valid values are `String` and `Number` (the global types).
+ * Defaults to the numeric ids.
+ * @param {boolean} [options.defaults=false] Also sets default values on the resulting object
+ * @returns {Object.} JSON object
+ */
+MessagePrototype.asJSON = function asJSON(options) {
+ if (!options)
+ options = {};
+ var fields = this.$type.fields,
+ json = {};
+ var keys;
+ if (options.defaults) {
+ keys = [];
+ for (var k in this) // eslint-disable-line guard-for-in
+ keys.push(k);
+ } else
+ keys = Object.keys(this);
+ for (var i = 0, key; i < keys.length; ++i) {
+ var field = fields[key = keys[i]],
+ value = this[key];
+ if (field) {
+ if (field.repeated) {
+ if (value && value.length) {
+ var array = new Array(value.length);
+ for (var j = 0, l = value.length; j < l; ++j)
+ array[j] = field.jsonConvert(value[j], options);
+ json[key] = array;
+ }
+ } else
+ json[key] = field.jsonConvert(value, options);
+ } else if (!options.fieldsOnly)
+ json[key] = value;
+ }
+ return json;
+};
+
+/**
+ * Reference to the reflected type.
+ * @name Message.$type
+ * @type {Type}
+ * @readonly
+ */
+
+/**
+ * Reference to the reflected type.
+ * @name Message#$type
+ * @type {Type}
+ * @readonly
+ */
+
+/**
+ * Encodes a message of this type.
+ * @param {Message|Object} message Message to encode
+ * @param {Writer} [writer] Writer to use
+ * @returns {Writer} Writer
+ */
+Message.encode = function encode(message, writer) {
+ return this.$type.encode(message, writer);
+};
+
+/**
+ * Encodes a message of this type preceeded by its length as a varint.
+ * @param {Message|Object} message Message to encode
+ * @param {Writer} [writer] Writer to use
+ * @returns {Writer} Writer
+ */
+Message.encodeDelimited = function encodeDelimited(message, writer) {
+ return this.$type.encodeDelimited(message, writer);
+};
+
+/**
+ * Decodes a message of this type.
+ * @name Message.decode
+ * @function
+ * @param {Reader|Uint8Array} readerOrBuffer Reader or buffer to decode
+ * @returns {Message} Decoded message
+ */
+Message.decode = function decode(readerOrBuffer) {
+ return this.$type.decode(readerOrBuffer);
+};
+
+/**
+ * Decodes a message of this type preceeded by its length as a varint.
+ * @name Message.decodeDelimited
+ * @function
+ * @param {Reader|Uint8Array} readerOrBuffer Reader or buffer to decode
+ * @returns {Message} Decoded message
+ */
+Message.decodeDelimited = function decodeDelimited(readerOrBuffer) {
+ return this.$type.decodeDelimited(readerOrBuffer);
+};
+
+/**
+ * Verifies a message of this type.
+ * @name Message.verify
+ * @function
+ * @param {Message|Object} message Message or plain object to verify
+ * @returns {?string} `null` if valid, otherwise the reason why it is not
+ */
+Message.verify = function verify(message) {
+ return this.$type.verify(message);
+};
diff --git a/src/method.js b/src/method.js
index 5e125ce2f..bf97e2975 100644
--- a/src/method.js
+++ b/src/method.js
@@ -11,7 +11,7 @@ var Type = require("./type"),
var _TypeError = util._TypeError;
/**
- * Constructs a new service method.
+ * Constructs a new service method instance.
* @classdesc Reflected service method.
* @extends ReflectionObject
* @constructor
diff --git a/src/namespace.js b/src/namespace.js
index 23648d0fe..51e2b75f7 100644
--- a/src/namespace.js
+++ b/src/namespace.js
@@ -17,7 +17,7 @@ var nestedTypes = [ Enum, Type, Service, Field, Namespace ],
nestedError = "one of " + nestedTypes.map(function(ctor) { return ctor.name; }).join(', ');
/**
- * Constructs a new namespace.
+ * Constructs a new namespace instance.
* @classdesc Reflected namespace and base class of all reflection objects containing nested objects.
* @extends ReflectionObject
* @constructor
diff --git a/src/object.js b/src/object.js
index 41c86930e..274f50ab0 100644
--- a/src/object.js
+++ b/src/object.js
@@ -9,7 +9,7 @@ var Root = require("./root"),
var _TypeError = util._TypeError;
/**
- * Constructs a new reflection object.
+ * Constructs a new reflection object instance.
* @classdesc Base class of all reflection objects.
* @constructor
* @param {string} name Object name
@@ -90,14 +90,14 @@ util.props(ReflectionObjectPrototype, {
* Lets the specified constructor extend this class.
* @memberof ReflectionObject
* @param {*} constructor Extending constructor
- * @returns {Object} Prototype
+ * @returns {Object} Constructor prototype
* @this ReflectionObject
*/
function extend(constructor) {
- var proto = constructor.prototype = Object.create(this.prototype);
- proto.constructor = constructor;
+ var prototype = constructor.prototype = Object.create(this.prototype);
+ prototype.constructor = constructor;
constructor.extend = extend;
- return proto;
+ return prototype;
}
/**
diff --git a/src/oneof.js b/src/oneof.js
index c1a968435..25249ea4c 100644
--- a/src/oneof.js
+++ b/src/oneof.js
@@ -11,7 +11,7 @@ var Field = require("./field"),
var _TypeError = util._TypeError;
/**
- * Constructs a new oneof.
+ * Constructs a new oneof instance.
* @classdesc Reflected oneof.
* @extends ReflectionObject
* @constructor
diff --git a/src/prototype.js b/src/prototype.js
deleted file mode 100644
index 846b9f963..000000000
--- a/src/prototype.js
+++ /dev/null
@@ -1,64 +0,0 @@
-"use strict";
-module.exports = Prototype;
-
-/**
- * Constructs a new prototype.
- * This method should be called from your custom constructors, i.e. `Prototype.call(this, properties)`.
- * @classdesc Runtime message prototype ready to be extended by custom classes or generated code.
- * @constructor
- * @param {Object.} [properties] Properties to set
- * @abstract
- * @see {@link inherits}
- * @see {@link Class}
- */
-function Prototype(properties) {
- if (properties) {
- var keys = Object.keys(properties);
- for (var i = 0; i < keys.length; ++i)
- this[keys[i]] = properties[keys[i]];
- }
-}
-
-/**
- * Converts a runtime message to a JSON object.
- * @param {Object.} [options] Conversion options
- * @param {boolean} [options.fieldsOnly=false] Converts only properties that reference a field
- * @param {*} [options.long] Long conversion type. Only relevant with a long library.
- * Valid values are `String` and `Number` (the global types).
- * Defaults to a possibly unsafe number without, and a `Long` with a long library.
- * @param {*} [options.enum=Number] Enum value conversion type.
- * Valid values are `String` and `Number` (the global types).
- * Defaults to the numeric ids.
- * @param {boolean} [options.defaults=false] Also sets default values on the resulting object
- * @returns {Object.} JSON object
- */
-Prototype.prototype.asJSON = function asJSON(options) {
- if (!options)
- options = {};
- var fields = this.constructor.$type.fields,
- json = {};
- var keys;
- if (options.defaults) {
- keys = [];
- for (var k in this) // eslint-disable-line guard-for-in
- keys.push(k);
- } else
- keys = Object.keys(this);
- for (var i = 0, key; i < keys.length; ++i) {
- var field = fields[key = keys[i]],
- value = this[key];
- if (field) {
- if (field.repeated) {
- if (value && value.length) {
- var array = new Array(value.length);
- for (var j = 0, l = value.length; j < l; ++j)
- array[j] = field.jsonConvert(value[j], options);
- json[key] = array;
- }
- } else
- json[key] = field.jsonConvert(value, options);
- } else if (!options.fieldsOnly)
- json[key] = value;
- }
- return json;
-};
diff --git a/src/reader.js b/src/reader.js
index 4f3cce0fc..9eaa569b8 100644
--- a/src/reader.js
+++ b/src/reader.js
@@ -36,7 +36,7 @@ function configure() {
Reader.configure = configure;
/**
- * Constructs a new reader using the specified buffer.
+ * Constructs a new reader instance using the specified buffer.
* @classdesc Wire format reader using `Uint8Array` if available, otherwise `Array`.
* @constructor
* @param {Uint8Array} buffer Buffer to read from
@@ -555,7 +555,7 @@ var initBufferReader = function() {
};
/**
- * Constructs a new buffer reader.
+ * Constructs a new buffer reader instance.
* @classdesc Wire format reader using node buffers.
* @extends Reader
* @constructor
diff --git a/src/root.js b/src/root.js
index 150a2fe8a..443780684 100644
--- a/src/root.js
+++ b/src/root.js
@@ -10,7 +10,7 @@ var Field = require("./field"),
common = require("./common");
/**
- * Constructs a new root namespace.
+ * Constructs a new root namespace instance.
* @classdesc Root namespace wrapping all types, enums, services, sub-namespaces etc. that belong together.
* @extends Namespace
* @constructor
@@ -55,7 +55,7 @@ Root.fromJSON = function fromJSON(json, root) {
RootPrototype.resolvePath = util.resolvePath;
// A symbol-like function to safely signal synchronous loading
-function SYNC() {}
+function SYNC() {} // eslint-disable-line no-empty-function
/**
* Loads one or multiple .proto or preprocessed .json files into this root namespace and calls the callback.
diff --git a/src/rpc.js b/src/rpc.js
index 70be9131a..f59602df2 100644
--- a/src/rpc.js
+++ b/src/rpc.js
@@ -1,7 +1,7 @@
"use strict";
/**
- * RPC helpers.
+ * Streaming RPC helpers.
* @namespace
*/
var rpc = exports;
diff --git a/src/rpc/service.js b/src/rpc/service.js
index e1f52cf3c..de5b8221e 100644
--- a/src/rpc/service.js
+++ b/src/rpc/service.js
@@ -4,7 +4,7 @@ module.exports = Service;
var EventEmitter = require("../util/eventemitter");
/**
- * Constructs a new RPC service.
+ * Constructs a new RPC service instance.
* @classdesc An RPC service as returned by {@link Service#create}.
* @memberof rpc
* @extends util.EventEmitter
diff --git a/src/service.js b/src/service.js
index 9361b0dbb..cd7b3711f 100644
--- a/src/service.js
+++ b/src/service.js
@@ -12,7 +12,7 @@ var Method = require("./method"),
rpc = require("./rpc");
/**
- * Constructs a new service.
+ * Constructs a new service instance.
* @classdesc Reflected service.
* @extends Namespace
* @constructor
diff --git a/src/type.js b/src/type.js
index d3dae5e3d..2b3f7a970 100644
--- a/src/type.js
+++ b/src/type.js
@@ -11,15 +11,15 @@ var Enum = require("./enum"),
OneOf = require("./oneof"),
Field = require("./field"),
Service = require("./service"),
- Prototype = require("./prototype"),
+ Class = require("./class"),
+ Message = require("./message"),
Reader = require("./reader"),
Writer = require("./writer"),
- inherits = require("./inherits"),
util = require("./util"),
codegen = require("./codegen");
/**
- * Constructs a new message type.
+ * Constructs a new reflected message type instance.
* @classdesc Reflected message type.
* @extends Namespace
* @constructor
@@ -153,28 +153,15 @@ util.props(TypePrototype, {
/**
* The registered constructor, if any registered, otherwise a generic constructor.
* @name Type#ctor
- * @type {Prototype}
+ * @type {Class}
*/
ctor: {
get: function getCtor() {
- if (this._ctor)
- return this._ctor;
- var ctor;
- if (codegen.supported)
- ctor = codegen("p")("P.call(this,p)").eof(this.getFullName() + "$ctor", {
- P: Prototype
- });
- else
- ctor = function GenericMessage(properties) {
- Prototype.call(this, properties);
- };
- ctor.prototype = inherits(ctor, this);
- this._ctor = ctor;
- return ctor;
+ return this._ctor || (this._ctor = Class.create(this).constructor);
},
set: function setCtor(ctor) {
- if (ctor && !(ctor.prototype instanceof Prototype))
- throw util._TypeError("ctor", "a constructor inheriting from Prototype");
+ if (ctor && !(ctor.prototype instanceof Message))
+ throw util._TypeError("ctor", "a constructor inheriting from Message");
this._ctor = ctor;
}
}
@@ -324,27 +311,15 @@ TypePrototype.remove = function remove(object) {
/**
* Creates a new message of this type using the specified properties.
* @param {Object|*} [properties] Properties to set
- * @param {*} [ctor] Constructor to use.
- * Defaults to use the internal constuctor.
- * @returns {Prototype} Message instance
+ * @returns {Message} Runtime message
*/
-TypePrototype.create = function create(properties, ctor) {
- if (!properties || typeof properties === 'function') {
- ctor = properties;
- properties = undefined;
- } else if (properties /* already */ instanceof Prototype)
- return properties;
- if (ctor) {
- if (!(ctor.prototype instanceof Prototype))
- throw util._TypeError("ctor", "a constructor inheriting from Prototype");
- } else
- ctor = this.getCtor();
- return new ctor(properties);
+TypePrototype.create = function create(properties) {
+ return new (this.getCtor())(properties);
};
/**
* Encodes a message of this type.
- * @param {Prototype|Object} message Message instance or plain object
+ * @param {Message|Object} message Message instance or plain object
* @param {Writer} [writer] Writer to encode to
* @returns {Writer} writer
*/
@@ -361,7 +336,7 @@ TypePrototype.encode = function encode(message, writer) {
/**
* Encodes a message of this type preceeded by its byte length as a varint.
- * @param {Prototype|Object} message Message instance or plain object
+ * @param {Message|Object} message Message instance or plain object
* @param {Writer} [writer] Writer to encode to
* @returns {Writer} writer
*/
@@ -373,7 +348,7 @@ TypePrototype.encodeDelimited = function encodeDelimited(message, writer) {
* Decodes a message of this type.
* @param {Reader|Uint8Array} readerOrBuffer Reader or buffer to decode from
* @param {number} [length] Length of the message, if known beforehand
- * @returns {Prototype} Decoded message
+ * @returns {Message} Decoded message
*/
TypePrototype.decode = function decode(readerOrBuffer, length) {
return (this.decode = codegen.supported
@@ -389,7 +364,7 @@ TypePrototype.decode = function decode(readerOrBuffer, length) {
/**
* Decodes a message of this type preceeded by its byte length as a varint.
* @param {Reader|Uint8Array} readerOrBuffer Reader or buffer to decode from
- * @returns {Prototype} Decoded message
+ * @returns {Message} Decoded message
*/
TypePrototype.decodeDelimited = function decodeDelimited(readerOrBuffer) {
readerOrBuffer = readerOrBuffer instanceof Reader ? readerOrBuffer : Reader.create(readerOrBuffer);
@@ -398,7 +373,7 @@ TypePrototype.decodeDelimited = function decodeDelimited(readerOrBuffer) {
/**
* Verifies that enum values are valid and that any required fields are present.
- * @param {Prototype|Object} message Message to verify
+ * @param {Message|Object} message Message to verify
* @returns {?string} `null` if valid, otherwise the reason why it is not
*/
TypePrototype.verify = function verify(message) {
diff --git a/src/util.js b/src/util.js
index 627c83c60..911c64e34 100644
--- a/src/util.js
+++ b/src/util.js
@@ -1,7 +1,7 @@
"use strict";
/**
- * Utility functions.
+ * Various utility functions.
* @namespace
*/
var util = exports;
diff --git a/src/util/eventemitter.js b/src/util/eventemitter.js
index 3751069cb..d58e71573 100644
--- a/src/util/eventemitter.js
+++ b/src/util/eventemitter.js
@@ -2,7 +2,7 @@
module.exports = EventEmitter;
/**
- * Constructs a new event emitter.
+ * Constructs a new event emitter instance.
* @classdesc A minimal event emitter.
* @memberof util
* @constructor
diff --git a/src/writer.js b/src/writer.js
index 74375a9b6..44def7276 100644
--- a/src/writer.js
+++ b/src/writer.js
@@ -9,7 +9,7 @@ var LongBits = util.LongBits,
ArrayImpl = typeof Uint8Array !== 'undefined' ? Uint8Array : Array;
/**
- * Constructs a new writer operation.
+ * Constructs a new writer operation instance.
* @classdesc Scheduled writer operation.
* @memberof Writer
* @constructor
@@ -51,7 +51,7 @@ Writer.Op = Op;
function noop() {} // eslint-disable-line no-empty-function
/**
- * Constructs a new writer state.
+ * Constructs a new writer state instance.
* @classdesc Copied writer state.
* @memberof Writer
* @constructor
@@ -90,7 +90,7 @@ function State(writer, next) {
Writer.State = State;
/**
- * Constructs a new writer.
+ * Constructs a new writer instance.
* @classdesc Wire format writer using `Uint8Array` if available, otherwise `Array`.
* @constructor
*/
@@ -545,7 +545,7 @@ WriterPrototype.finish = function finish() {
};
/**
- * Constructs a new buffer writer.
+ * Constructs a new buffer writer instance.
* @classdesc Wire format writer using node buffers.
* @exports BufferWriter
* @extends Writer
diff --git a/tests/basics.js b/tests/basics.js
index 0d91282fb..346a9d5e0 100644
--- a/tests/basics.js
+++ b/tests/basics.js
@@ -19,7 +19,7 @@ tape.test("google.protobuf.Any type", function(test) {
test.test("instances", function(test) {
- test.ok(any instanceof protobuf.Prototype, "should extend Prototype");
+ test.ok(any instanceof protobuf.Message, "should extend Message");
test.deepEqual(any, {
type_url: "some.type",
value: valueBuffer
diff --git a/tests/classes.js b/tests/classes.js
index fce240d1a..e0afa17e3 100644
--- a/tests/classes.js
+++ b/tests/classes.js
@@ -1,18 +1,21 @@
var tape = require("tape");
-var protobuf = require(".."),
- Prototype = protobuf.Prototype,
- inherits = protobuf.inherits;
+var protobuf = require(".."),
+ Class = protobuf.Class,
+ Message = protobuf.Message;
tape.test("google.protobuf.Any class", function(test) {
+
+ test.equal(Message, Class.prototype, "requires that prototypes are class instances");
+
protobuf.load("tests/data/common.proto", function(err, root) {
if (err)
return test.fail(err.message);
function Any(properties) {
- Prototype.call(this, properties);
+ Message.call(this, properties);
}
- inherits(Any, root.lookup("google.protobuf.Any"));
+ Any.prototype = Class.create(root.lookup("google.protobuf.Any"), Any);
var valueBuffer = protobuf.util.newBuffer(0);
var any = new Any({
@@ -22,7 +25,7 @@ tape.test("google.protobuf.Any class", function(test) {
test.test("instances", function(test) {
- test.ok(any instanceof protobuf.Prototype, "should extend Prototype");
+ test.ok(any instanceof protobuf.Message, "should extend Message");
test.ok(any instanceof Any, "should extend the custom class");
test.deepEqual(any, {
type_url: "some.type",
diff --git a/tests/package.js b/tests/package.js
index 884befc18..15415e166 100644
--- a/tests/package.js
+++ b/tests/package.js
@@ -17,7 +17,7 @@ tape.test("package.json", function(test) {
test.test("runtime message", function(test) {
- test.ok(myPackage instanceof protobuf.Prototype, "should extend Prototype");
+ test.ok(myPackage instanceof protobuf.Message, "should extend Message");
test.equal(myPackage.$type, Package, "should reference Package as its reflected type");
test.deepEqual(myPackage, pkg, "should have equal contents");
@@ -30,9 +30,9 @@ tape.test("package.json", function(test) {
var buf = writer.finish();
var decoded = Package.decode(buf);
- test.ok(decoded instanceof protobuf.Prototype, "should extend Prototype");
+ test.ok(decoded instanceof protobuf.Message, "should extend Message");
test.equal(decoded.$type, Package, "should reference Package as its reflected type");
- test.ok(decoded.repository instanceof protobuf.Prototype, "submessages should also extend Prototype");
+ test.ok(decoded.repository instanceof protobuf.Message, "submessages should also extend Message");
test.equal(decoded.repository.$type, Repository, "repository submessage should reference Repository as its reflected type");
test.deepEqual(decoded, pkg, "should have equal contents");
diff --git a/types/protobuf.js.d.ts b/types/protobuf.js.d.ts
index d7c5b1740..2cc11a80a 100644
--- a/types/protobuf.js.d.ts
+++ b/types/protobuf.js.d.ts
@@ -1,9 +1,74 @@
/*
* protobuf.js v6.1.0 TypeScript definitions
- * Generated Thu, 08 Dec 2016 19:14:58 UTC
+ * Generated Fri, 09 Dec 2016 01:15:41 UTC
*/
declare module "protobufjs" {
+ /**
+ * Constructs a class instance, which is also a message prototype.
+ * @classdesc Runtime class providing the tools to create your own custom classes.
+ * @constructor
+ * @param {Type} type Reflected type
+ * @abstract
+ */
+ abstract class Class {
+ /**
+ * Constructs a new message prototype for the specified reflected type and sets up its constructor.
+ * @param {Type} type Reflected message type
+ * @param {*} [ctor] Custom constructor to set up, defaults to create a generic one if omitted
+ * @returns {Message} Message prototype
+ */
+ static create(type: Type, ctor?: any): Message;
+
+ /**
+ * Encodes a message of this type.
+ * @name Class#encode
+ * @function
+ * @param {Message|Object} message Message to encode
+ * @param {Writer} [writer] Writer to use
+ * @returns {Writer} Writer
+ */
+ encode(message: (Message|Object), writer?: Writer): Writer;
+
+ /**
+ * Encodes a message of this type preceeded by its length as a varint.
+ * @name Class#encodeDelimited
+ * @function
+ * @param {Message|Object} message Message to encode
+ * @param {Writer} [writer] Writer to use
+ * @returns {Writer} Writer
+ */
+ encodeDelimited(message: (Message|Object), writer?: Writer): Writer;
+
+ /**
+ * Decodes a message of this type.
+ * @name Class#decode
+ * @function
+ * @param {Reader|Uint8Array} readerOrBuffer Reader or buffer to decode
+ * @returns {Message} Decoded message
+ */
+ decode(readerOrBuffer: (Reader|Uint8Array)): Message;
+
+ /**
+ * Decodes a message of this type preceeded by its length as a varint.
+ * @name Class#decodeDelimited
+ * @function
+ * @param {Reader|Uint8Array} readerOrBuffer Reader or buffer to decode
+ * @returns {Message} Decoded message
+ */
+ decodeDelimited(readerOrBuffer: (Reader|Uint8Array)): Message;
+
+ /**
+ * Verifies a message of this type.
+ * @name Class#verify
+ * @function
+ * @param {Message|Object} message Message or plain object to verify
+ * @returns {?string} `null` if valid, otherwise the reason why it is not
+ */
+ verify(message: (Message|Object)): string;
+
+ }
+
/**
* A closure for generating functions programmatically.
* @namespace
@@ -42,7 +107,7 @@ declare module "protobufjs" {
function common(name: string, json: Object): void;
/**
- * Constructs a new enum.
+ * Constructs a new enum instance.
* @classdesc Reflected enum.
* @extends ReflectionObject
* @constructor
@@ -52,7 +117,7 @@ declare module "protobufjs" {
*/
class Enum extends ReflectionObject {
/**
- * Constructs a new enum.
+ * Constructs a new enum instance.
* @classdesc Reflected enum.
* @extends ReflectionObject
* @constructor
@@ -122,7 +187,7 @@ declare module "protobufjs" {
}
/**
- * Constructs a new message field. Note that {@link MapField|map fields} have their own class.
+ * Constructs a new message field instance. Note that {@link MapField|map fields} have their own class.
* @classdesc Reflected message field.
* @extends ReflectionObject
* @constructor
@@ -135,7 +200,7 @@ declare module "protobufjs" {
*/
class Field extends ReflectionObject {
/**
- * Constructs a new message field. Note that {@link MapField|map fields} have their own class.
+ * Constructs a new message field instance. Note that {@link MapField|map fields} have their own class.
* @classdesc Reflected message field.
* @extends ReflectionObject
* @constructor
@@ -282,7 +347,7 @@ declare module "protobufjs" {
* @param {*} value Field value
* @param {Object.} [options] Conversion options
* @returns {*} Converted value
- * @see {@link Prototype#asJSON}
+ * @see {@link Message#asJSON}
*/
jsonConvert(value: any, options?: { [k: string]: any }): any;
@@ -320,7 +385,7 @@ declare module "protobufjs" {
function load(filename: (string|string[]), root?: Root): Promise;
/**
- * Synchronously loads one or multiple .proto or preprocessed .json files into a common root namespace.
+ * Synchronously loads one or multiple .proto or preprocessed .json files into a common root namespace (node only).
* @param {string|string[]} filename One or multiple files to load
* @param {Root} [root] Root namespace, defaults to create a new one if omitted.
* @returns {Root} Root namespace
@@ -329,105 +394,7 @@ declare module "protobufjs" {
function loadSync(filename: (string|string[]), root?: Root): Root;
/**
- * Options passed to {@link inherits}, modifying its behavior.
- * @typedef InheritanceOptions
- * @type {Object}
- * @property {boolean} [noStatics=false] Skips adding the default static methods on top of the constructor
- * @property {boolean} [noRegister=false] Skips registering the constructor with the reflected type
- */
- interface InheritanceOptions {
- noStatics: boolean;
- noRegister: boolean;
- }
-
-
- /**
- * Inherits a custom class from the message prototype of the specified message type.
- * @param {*} clazz Inheriting class constructor
- * @param {Type} type Inherited message type
- * @param {InheritanceOptions} [options] Inheritance options
- * @returns {Prototype} Created prototype
- */
- function inherits(clazz: any, type: Type, options?: InheritanceOptions): Prototype;
-
- /**
- * 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.
- * @name Class
- * @extends Prototype
- * @constructor
- * @param {Object.} [properties] Properties to set on the message
- * @see {@link inherits}
- */
- class Class extends Prototype {
- /**
- * 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.
- * @name Class
- * @extends Prototype
- * @constructor
- * @param {Object.} [properties] Properties to set on the message
- * @see {@link inherits}
- */
- constructor(properties?: { [k: string]: any });
-
- /**
- * Reference to the reflected type.
- * @name Class.$type
- * @type {Type}
- * @readonly
- */
- static $type: Type;
-
- /**
- * Encodes a message of this type to a buffer.
- * @name Class.encode
- * @function
- * @param {Prototype|Object} message Message to encode
- * @param {Writer} [writer] Writer to use
- * @returns {Writer} Writer
- */
- static encode(message: (Prototype|Object), writer?: Writer): Writer;
-
- /**
- * Encodes a message of this type preceeded by its length as a varint to a buffer.
- * @name Class.encodeDelimited
- * @function
- * @param {Prototype|Object} message Message to encode
- * @param {Writer} [writer] Writer to use
- * @returns {Writer} Writer
- */
- static encodeDelimited(message: (Prototype|Object), writer?: Writer): Writer;
-
- /**
- * Decodes a message of this type from a buffer.
- * @name Class.decode
- * @function
- * @param {Uint8Array} buffer Buffer to decode
- * @returns {Prototype} Decoded message
- */
- 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 {Uint8Array} buffer Buffer to decode
- * @returns {Prototype} Decoded message
- */
- static decodeDelimited(buffer: Uint8Array): Prototype;
-
- /**
- * Verifies a message of this type.
- * @name Class.verify
- * @function
- * @param {Prototype|Object} message Message or plain object to verify
- * @returns {?string} `null` if valid, otherwise the reason why it is not
- */
- static verify(message: (Prototype|Object)): string;
-
- }
-
- /**
- * Constructs a new map field.
+ * Constructs a new map field instance.
* @classdesc Reflected map field.
* @extends Field
* @constructor
@@ -439,7 +406,7 @@ declare module "protobufjs" {
*/
class MapField extends Field {
/**
- * Constructs a new map field.
+ * Constructs a new map field instance.
* @classdesc Reflected map field.
* @extends Field
* @constructor
@@ -482,7 +449,95 @@ declare module "protobufjs" {
}
/**
- * Constructs a new service method.
+ * Constructs a new message instance.
+ *
+ * This method should be called from your custom constructors, i.e. `Message.call(this, properties)`.
+ * @classdesc Abstract runtime message.
+ * @extends {Object}
+ * @constructor
+ * @param {Object.} [properties] Properties to set
+ * @abstract
+ * @see {@link Class.create}
+ */
+ abstract class Message extends Object {
+ /**
+ * Converts this message to a JSON object.
+ * @param {Object.} [options] Conversion options
+ * @param {boolean} [options.fieldsOnly=false] Converts only properties that reference a field
+ * @param {*} [options.long] Long conversion type. Only relevant with a long library.
+ * Valid values are `String` and `Number` (the global types).
+ * Defaults to a possibly unsafe number without, and a `Long` with a long library.
+ * @param {*} [options.enum=Number] Enum value conversion type.
+ * Valid values are `String` and `Number` (the global types).
+ * Defaults to the numeric ids.
+ * @param {boolean} [options.defaults=false] Also sets default values on the resulting object
+ * @returns {Object.} JSON object
+ */
+ asJSON(options?: { [k: string]: any }): { [k: string]: any };
+
+ /**
+ * Reference to the reflected type.
+ * @name Message.$type
+ * @type {Type}
+ * @readonly
+ */
+ static $type: Type;
+
+ /**
+ * Reference to the reflected type.
+ * @name Message#$type
+ * @type {Type}
+ * @readonly
+ */
+ $type: Type;
+
+ /**
+ * Encodes a message of this type.
+ * @param {Message|Object} message Message to encode
+ * @param {Writer} [writer] Writer to use
+ * @returns {Writer} Writer
+ */
+ static encode(message: (Message|Object), writer?: Writer): Writer;
+
+ /**
+ * Encodes a message of this type preceeded by its length as a varint.
+ * @param {Message|Object} message Message to encode
+ * @param {Writer} [writer] Writer to use
+ * @returns {Writer} Writer
+ */
+ static encodeDelimited(message: (Message|Object), writer?: Writer): Writer;
+
+ /**
+ * Decodes a message of this type.
+ * @name Message.decode
+ * @function
+ * @param {Reader|Uint8Array} readerOrBuffer Reader or buffer to decode
+ * @returns {Message} Decoded message
+ */
+ static decode(readerOrBuffer: (Reader|Uint8Array)): Message;
+
+ /**
+ * Decodes a message of this type preceeded by its length as a varint.
+ * @name Message.decodeDelimited
+ * @function
+ * @param {Reader|Uint8Array} readerOrBuffer Reader or buffer to decode
+ * @returns {Message} Decoded message
+ */
+ static decodeDelimited(readerOrBuffer: (Reader|Uint8Array)): Message;
+
+ /**
+ * Verifies a message of this type.
+ * @name Message.verify
+ * @function
+ * @param {Message|Object} message Message or plain object to verify
+ * @returns {?string} `null` if valid, otherwise the reason why it is not
+ */
+ static verify(message: (Message|Object)): string;
+
+ }
+
+ /**
+ * Constructs a new service method instance.
* @classdesc Reflected service method.
* @extends ReflectionObject
* @constructor
@@ -496,7 +551,7 @@ declare module "protobufjs" {
*/
class Method extends ReflectionObject {
/**
- * Constructs a new service method.
+ * Constructs a new service method instance.
* @classdesc Reflected service method.
* @extends ReflectionObject
* @constructor
@@ -571,7 +626,7 @@ declare module "protobufjs" {
}
/**
- * Constructs a new namespace.
+ * Constructs a new namespace instance.
* @classdesc Reflected namespace and base class of all reflection objects containing nested objects.
* @extends ReflectionObject
* @constructor
@@ -580,7 +635,7 @@ declare module "protobufjs" {
*/
class Namespace extends ReflectionObject {
/**
- * Constructs a new namespace.
+ * Constructs a new namespace instance.
* @classdesc Reflected namespace and base class of all reflection objects containing nested objects.
* @extends ReflectionObject
* @constructor
@@ -684,7 +739,7 @@ declare module "protobufjs" {
}
/**
- * Constructs a new reflection object.
+ * Constructs a new reflection object instance.
* @classdesc Base class of all reflection objects.
* @constructor
* @param {string} name Object name
@@ -736,7 +791,7 @@ declare module "protobufjs" {
* Lets the specified constructor extend this class.
* @memberof ReflectionObject
* @param {*} constructor Extending constructor
- * @returns {Object} Prototype
+ * @returns {Object} Constructor prototype
* @this ReflectionObject
*/
static extend(constructor: any): Object;
@@ -801,7 +856,7 @@ declare module "protobufjs" {
}
/**
- * Constructs a new oneof.
+ * Constructs a new oneof instance.
* @classdesc Reflected oneof.
* @extends ReflectionObject
* @constructor
@@ -811,7 +866,7 @@ declare module "protobufjs" {
*/
class OneOf extends ReflectionObject {
/**
- * Constructs a new oneof.
+ * Constructs a new oneof instance.
* @classdesc Reflected oneof.
* @extends ReflectionObject
* @constructor
@@ -893,50 +948,14 @@ declare module "protobufjs" {
function parse(source: string, root?: Root): ParserResult;
/**
- * Constructs a new prototype.
- * This method should be called from your custom constructors, i.e. `Prototype.call(this, properties)`.
- * @classdesc Runtime message prototype ready to be extended by custom classes or generated code.
- * @constructor
- * @param {Object.} [properties] Properties to set
- * @abstract
- * @see {@link inherits}
- * @see {@link Class}
- */
- abstract class Prototype {
- /**
- * Reference to the reflected type.
- * @name Prototype#$type
- * @type {Type}
- * @readonly
- */
- $type: Type;
-
- /**
- * Converts a runtime message to a JSON object.
- * @param {Object.} [options] Conversion options
- * @param {boolean} [options.fieldsOnly=false] Converts only properties that reference a field
- * @param {*} [options.long] Long conversion type. Only relevant with a long library.
- * Valid values are `String` and `Number` (the global types).
- * Defaults to a possibly unsafe number without, and a `Long` with a long library.
- * @param {*} [options.enum=Number] Enum value conversion type.
- * Valid values are `String` and `Number` (the global types).
- * Defaults to the numeric ids.
- * @param {boolean} [options.defaults=false] Also sets default values on the resulting object
- * @returns {Object.} JSON object
- */
- asJSON(options?: { [k: string]: any }): { [k: string]: any };
-
- }
-
- /**
- * Constructs a new reader using the specified buffer.
+ * Constructs a new reader instance using the specified buffer.
* @classdesc Wire format reader using `Uint8Array` if available, otherwise `Array`.
* @constructor
* @param {Uint8Array} buffer Buffer to read from
*/
class Reader {
/**
- * Constructs a new reader using the specified buffer.
+ * Constructs a new reader instance using the specified buffer.
* @classdesc Wire format reader using `Uint8Array` if available, otherwise `Array`.
* @constructor
* @param {Uint8Array} buffer Buffer to read from
@@ -1114,7 +1133,7 @@ declare module "protobufjs" {
}
/**
- * Constructs a new buffer reader.
+ * Constructs a new buffer reader instance.
* @classdesc Wire format reader using node buffers.
* @extends Reader
* @constructor
@@ -1122,7 +1141,7 @@ declare module "protobufjs" {
*/
class BufferReader extends Reader {
/**
- * Constructs a new buffer reader.
+ * Constructs a new buffer reader instance.
* @classdesc Wire format reader using node buffers.
* @extends Reader
* @constructor
@@ -1133,7 +1152,7 @@ declare module "protobufjs" {
}
/**
- * Constructs a new root namespace.
+ * Constructs a new root namespace instance.
* @classdesc Root namespace wrapping all types, enums, services, sub-namespaces etc. that belong together.
* @extends Namespace
* @constructor
@@ -1141,7 +1160,7 @@ declare module "protobufjs" {
*/
class Root extends Namespace {
/**
- * Constructs a new root namespace.
+ * Constructs a new root namespace instance.
* @classdesc Root namespace wrapping all types, enums, services, sub-namespaces etc. that belong together.
* @extends Namespace
* @constructor
@@ -1208,12 +1227,12 @@ declare module "protobufjs" {
}
/**
- * RPC helpers.
+ * Streaming RPC helpers.
* @namespace
*/
module rpc {
/**
- * Constructs a new RPC service.
+ * Constructs a new RPC service instance.
* @classdesc An RPC service as returned by {@link Service#create}.
* @memberof rpc
* @extends util.EventEmitter
@@ -1222,7 +1241,7 @@ declare module "protobufjs" {
*/
class Service extends util.EventEmitter {
/**
- * Constructs a new RPC service.
+ * Constructs a new RPC service instance.
* @classdesc An RPC service as returned by {@link Service#create}.
* @memberof rpc
* @extends util.EventEmitter
@@ -1249,7 +1268,7 @@ declare module "protobufjs" {
}
/**
- * Constructs a new service.
+ * Constructs a new service instance.
* @classdesc Reflected service.
* @extends Namespace
* @constructor
@@ -1259,7 +1278,7 @@ declare module "protobufjs" {
*/
class Service extends Namespace {
/**
- * Constructs a new service.
+ * Constructs a new service instance.
* @classdesc Reflected service.
* @extends Namespace
* @constructor
@@ -1347,7 +1366,7 @@ declare module "protobufjs" {
function tokenize(source: string): TokenizerHandle;
/**
- * Constructs a new message type.
+ * Constructs a new reflected message type instance.
* @classdesc Reflected message type.
* @extends Namespace
* @constructor
@@ -1356,7 +1375,7 @@ declare module "protobufjs" {
*/
class Type extends Namespace {
/**
- * Constructs a new message type.
+ * Constructs a new reflected message type instance.
* @classdesc Reflected message type.
* @extends Namespace
* @constructor
@@ -1424,9 +1443,9 @@ declare module "protobufjs" {
/**
* The registered constructor, if any registered, otherwise a generic constructor.
* @name Type#ctor
- * @type {Prototype}
+ * @type {Class}
*/
- ctor: Prototype;
+ ctor: Class;
/**
* Tests if the specified JSON object describes a message type.
@@ -1464,49 +1483,47 @@ declare module "protobufjs" {
/**
* Creates a new message of this type using the specified properties.
* @param {Object|*} [properties] Properties to set
- * @param {*} [ctor] Constructor to use.
- * Defaults to use the internal constuctor.
- * @returns {Prototype} Message instance
+ * @returns {Message} Runtime message
*/
- create(properties?: (Object|any), ctor?: any): Prototype;
+ create(properties?: (Object|any)): Message;
/**
* Encodes a message of this type.
- * @param {Prototype|Object} message Message instance or plain object
+ * @param {Message|Object} message Message instance or plain object
* @param {Writer} [writer] Writer to encode to
* @returns {Writer} writer
*/
- encode(message: (Prototype|Object), writer?: Writer): Writer;
+ encode(message: (Message|Object), writer?: Writer): Writer;
/**
* Encodes a message of this type preceeded by its byte length as a varint.
- * @param {Prototype|Object} message Message instance or plain object
+ * @param {Message|Object} message Message instance or plain object
* @param {Writer} [writer] Writer to encode to
* @returns {Writer} writer
*/
- encodeDelimited(message: (Prototype|Object), writer?: Writer): Writer;
+ encodeDelimited(message: (Message|Object), writer?: Writer): Writer;
/**
* Decodes a message of this type.
* @param {Reader|Uint8Array} readerOrBuffer Reader or buffer to decode from
* @param {number} [length] Length of the message, if known beforehand
- * @returns {Prototype} Decoded message
+ * @returns {Message} Decoded message
*/
- decode(readerOrBuffer: (Reader|Uint8Array), length?: number): Prototype;
+ decode(readerOrBuffer: (Reader|Uint8Array), length?: number): Message;
/**
* Decodes a message of this type preceeded by its byte length as a varint.
* @param {Reader|Uint8Array} readerOrBuffer Reader or buffer to decode from
- * @returns {Prototype} Decoded message
+ * @returns {Message} Decoded message
*/
- decodeDelimited(readerOrBuffer: (Reader|Uint8Array)): Prototype;
+ decodeDelimited(readerOrBuffer: (Reader|Uint8Array)): Message;
/**
* Verifies that enum values are valid and that any required fields are present.
- * @param {Prototype|Object} message Message to verify
+ * @param {Message|Object} message Message to verify
* @returns {?string} `null` if valid, otherwise the reason why it is not
*/
- verify(message: (Prototype|Object)): string;
+ verify(message: (Message|Object)): string;
}
@@ -1563,19 +1580,19 @@ declare module "protobufjs" {
/**
- * Utility functions.
+ * Various utility functions.
* @namespace
*/
module util {
/**
- * Constructs a new event emitter.
+ * Constructs a new event emitter instance.
* @classdesc A minimal event emitter.
* @memberof util
* @constructor
*/
class EventEmitter {
/**
- * Constructs a new event emitter.
+ * Constructs a new event emitter instance.
* @classdesc A minimal event emitter.
* @memberof util
* @constructor
@@ -1923,13 +1940,13 @@ declare module "protobufjs" {
}
/**
- * Constructs a new writer.
+ * Constructs a new writer instance.
* @classdesc Wire format writer using `Uint8Array` if available, otherwise `Array`.
* @constructor
*/
class Writer {
/**
- * Constructs a new writer.
+ * Constructs a new writer instance.
* @classdesc Wire format writer using `Uint8Array` if available, otherwise `Array`.
* @constructor
*/
@@ -2132,7 +2149,7 @@ declare module "protobufjs" {
}
/**
- * Constructs a new buffer writer.
+ * Constructs a new buffer writer instance.
* @classdesc Wire format writer using node buffers.
* @exports BufferWriter
* @extends Writer
@@ -2140,7 +2157,7 @@ declare module "protobufjs" {
*/
class BufferWriter extends Writer {
/**
- * Constructs a new buffer writer.
+ * Constructs a new buffer writer instance.
* @classdesc Wire format writer using node buffers.
* @exports BufferWriter
* @extends Writer
diff --git a/types/test.ts b/types/test.ts
index cfc9bf52b..e3812735f 100644
--- a/types/test.ts
+++ b/types/test.ts
@@ -1,4 +1,5 @@
///
+///
import * as protobuf from "protobufjs";
@@ -6,10 +7,21 @@ export const proto = {"nested":{"Hello":{"fields":{"value":{"rule":"required","t
const root = protobuf.Root.fromJSON(proto);
-export class Hello {
- constructor (properties: any) {
- protobuf.Prototype.call(this, properties);
+export class Hello extends protobuf.Message {
+ constructor (properties?: any) {
+ super(properties);
+ }
+
+ foo() {
+ this["value"] = "hi";
+ return this;
}
}
+protobuf.Class.create(root.lookup("Hello") as protobuf.Type, Hello);
+
+var hello = new Hello();
+
+var buf = Hello.encode(hello.foo()).finish();
-protobuf.inherits(Hello, root.lookup("Hello") as protobuf.Type);
+var hello2 = Hello.decode(buf) as Hello;
+console.log(hello2.foo().asJSON());