protobufjs 5.0.0 → 5.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (49) hide show
  1. package/bower.json +1 -1
  2. package/cli/pbjs/targets/json.js +1 -1
  3. package/cli/pbjs/targets/proto.js +10 -2
  4. package/dist/protobuf-light.js +38 -21
  5. package/dist/protobuf-light.min.js +78 -78
  6. package/dist/protobuf-light.min.js.gz +0 -0
  7. package/dist/protobuf-light.min.map +2 -2
  8. package/dist/protobuf.js +81 -55
  9. package/dist/protobuf.min.js +92 -92
  10. package/dist/protobuf.min.js.gz +0 -0
  11. package/dist/protobuf.min.map +2 -2
  12. package/docs/ProtoBuf.Builder.Message.html +106 -37
  13. package/docs/ProtoBuf.Builder.Service.html +9 -9
  14. package/docs/ProtoBuf.Builder.html +22 -22
  15. package/docs/ProtoBuf.DotProto.Parser.html +3 -3
  16. package/docs/ProtoBuf.DotProto.Tokenizer.html +1 -1
  17. package/docs/ProtoBuf.DotProto.html +1 -1
  18. package/docs/ProtoBuf.Map.html +6 -6
  19. package/docs/ProtoBuf.Reflect.Element.html +7 -7
  20. package/docs/ProtoBuf.Reflect.Enum.Value.html +10 -10
  21. package/docs/ProtoBuf.Reflect.Enum.html +21 -21
  22. package/docs/ProtoBuf.Reflect.Extension.html +3 -3
  23. package/docs/ProtoBuf.Reflect.Message.ExtensionField.html +29 -29
  24. package/docs/ProtoBuf.Reflect.Message.Field.html +28 -28
  25. package/docs/ProtoBuf.Reflect.Message.OneOf.html +10 -10
  26. package/docs/ProtoBuf.Reflect.Message.html +31 -28
  27. package/docs/ProtoBuf.Reflect.Namespace.html +19 -19
  28. package/docs/ProtoBuf.Reflect.Service.Method.html +11 -11
  29. package/docs/ProtoBuf.Reflect.Service.RPCMethod.html +17 -17
  30. package/docs/ProtoBuf.Reflect.Service.html +20 -20
  31. package/docs/ProtoBuf.Reflect.T.html +9 -9
  32. package/docs/ProtoBuf.Reflect.html +2 -2
  33. package/docs/ProtoBuf.Util.html +1 -1
  34. package/docs/ProtoBuf.html +8 -8
  35. package/docs/ProtoBuf.js.html +82 -56
  36. package/docs/index.html +1 -1
  37. package/externs/protobuf.js +2 -1
  38. package/package.json +1 -1
  39. package/src/ProtoBuf/Builder/Message.js +8 -3
  40. package/src/ProtoBuf/Builder/Service.js +3 -0
  41. package/src/ProtoBuf/Builder.js +15 -8
  42. package/src/ProtoBuf/DotProto/Parser.js +43 -34
  43. package/src/ProtoBuf/Reflect/Element.js +4 -3
  44. package/src/ProtoBuf/Reflect/Message/Field.js +4 -3
  45. package/src/ProtoBuf/Reflect/Message.js +3 -3
  46. package/src/google/protobuf/descriptor.json +28 -14
  47. package/tests/imports-weak.proto +7 -0
  48. package/tests/suite.js +63 -83
  49. package/tests/gtfs-realtime.proto +0 -552
package/bower.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "protobuf",
3
3
  "description": "Protocol Buffers for JavaScript. Finally.",
4
- "version": "5.0.0",
4
+ "version": "5.0.1",
5
5
  "main": "dist/protobuf.js",
6
6
  "license": "Apache-2.0",
7
7
  "homepage": "http://dcode.io/",
@@ -160,7 +160,7 @@ function buildMessage(msg) {
160
160
  msg.getChildren(ProtoBuf.Reflect.Message.OneOf).forEach(function(oneof) {
161
161
  oneofs[oneof.name] = buildMessageOneof(oneof);
162
162
  });
163
- if (msg.extensions[0] !== ProtoBuf.ID_MIN || msg.extensions[1] !== ProtoBuf.ID_MAX)
163
+ if (msg.extensions)
164
164
  out["extensions"] = msg.extensions;
165
165
  if (Object.keys(oneofs).length === 0)
166
166
  delete out["oneofs"];
@@ -129,10 +129,18 @@ var proto = module.exports = function(builder, options) {
129
129
  });
130
130
  if (n > 0 && !options.min)
131
131
  out[out.length-1] += "\n";
132
- if (msg.extensions[0] !== ProtoBuf.ID_MIN || msg.extensions[1] !== ProtoBuf.ID_MAX) {
132
+ if (msg.extensions) { // array of ranges
133
133
  if (!options.min)
134
134
  out.push(indent, " ");
135
- out.push("extensions ", value(msg.extensions[0]), " to ", msg.extensions[1] === ProtoBuf.ID_MAX ? "max" : value(msg.extensions[1]), options.min ? ";" : ";\n\n");
135
+ out.push("extensions ");
136
+ msg.extensions.forEach(function(range, index) {
137
+ if (index > 0)
138
+ out.push(options.min ? "," : ", ");
139
+ out.push(value(range[0]));
140
+ if (range[1] !== range[0])
141
+ out.push(" to ", range[1] === ProtoBuf.ID_MAX ? "max" : value(range[1]));
142
+ });
143
+ out.push(options.min ? ";" : ";\n\n");
136
144
  }
137
145
  buildNamespace(msg, indent+" ");
138
146
  if (!options.min)
@@ -57,7 +57,7 @@
57
57
  * @const
58
58
  * @expose
59
59
  */
60
- ProtoBuf.VERSION = "5.0.0";
60
+ ProtoBuf.VERSION = "5.0.1";
61
61
 
62
62
  /**
63
63
  * Wire types.
@@ -888,9 +888,10 @@
888
888
  * @expose
889
889
  */
890
890
  ElementPrototype.verifyValue = function(value) {
891
- var fail = function(val, msg) {
892
- throw Error("Illegal value for "+this.toString(true)+" of type "+this.type.name+": "+val+" ("+msg+")");
893
- }.bind(this);
891
+ var self = this;
892
+ function fail(val, msg) {
893
+ throw Error("Illegal value for "+self.toString(true)+" of type "+self.type.name+": "+val+" ("+msg+")");
894
+ }
894
895
  switch (this.type) {
895
896
  // Signed 32bit
896
897
  case ProtoBuf.TYPES["int32"]:
@@ -1380,10 +1381,10 @@
1380
1381
 
1381
1382
  /**
1382
1383
  * Extensions range.
1383
- * @type {!Array.<number>}
1384
+ * @type {!Array.<number>|undefined}
1384
1385
  * @expose
1385
1386
  */
1386
- this.extensions = [ProtoBuf.ID_MIN, ProtoBuf.ID_MAX];
1387
+ this.extensions = undefined;
1387
1388
 
1388
1389
  /**
1389
1390
  * Runtime message class.
@@ -1782,18 +1783,19 @@
1782
1783
  * @name ProtoBuf.Builder.Message#encodeDelimited
1783
1784
  * @function
1784
1785
  * @param {(!ByteBuffer|boolean)=} buffer ByteBuffer to encode to. Will create a new one and flip it if omitted.
1786
+ * @param {boolean=} noVerify Whether to not verify field values, defaults to `false`
1785
1787
  * @return {!ByteBuffer} Encoded message as a ByteBuffer
1786
1788
  * @throws {Error} If the message cannot be encoded or if required fields are missing. The later still
1787
1789
  * returns the encoded ByteBuffer in the `encoded` property on the error.
1788
1790
  * @expose
1789
1791
  */
1790
- MessagePrototype.encodeDelimited = function(buffer) {
1792
+ MessagePrototype.encodeDelimited = function(buffer, noVerify) {
1791
1793
  var isNew = false;
1792
1794
  if (!buffer)
1793
1795
  buffer = new ByteBuffer(),
1794
1796
  isNew = true;
1795
1797
  var enc = new ByteBuffer().LE();
1796
- T.encode(this, enc).flip();
1798
+ T.encode(this, enc, noVerify).flip();
1797
1799
  buffer.writeVarint32(enc.remaining());
1798
1800
  buffer.append(enc);
1799
1801
  return isNew ? buffer.flip() : buffer;
@@ -2002,6 +2004,7 @@
2002
2004
  * @name ProtoBuf.Builder.Message.decode
2003
2005
  * @function
2004
2006
  * @param {!ByteBuffer|!ArrayBuffer|!Buffer|string} buffer Buffer to decode from
2007
+ * @param {(number|string)=} length Message length. Defaults to decode all the remainig data.
2005
2008
  * @param {string=} enc Encoding if buffer is a string: hex, utf8 (not recommended), defaults to base64
2006
2009
  * @return {!ProtoBuf.Builder.Message} Decoded message
2007
2010
  * @throws {Error} If the message cannot be decoded or if required fields are missing. The later still
@@ -2010,7 +2013,10 @@
2010
2013
  * @see ProtoBuf.Builder.Message.decode64
2011
2014
  * @see ProtoBuf.Builder.Message.decodeHex
2012
2015
  */
2013
- Message.decode = function(buffer, enc) {
2016
+ Message.decode = function(buffer, length, enc) {
2017
+ if (typeof length === 'string')
2018
+ enc = length,
2019
+ length = -1;
2014
2020
  if (typeof buffer === 'string')
2015
2021
  buffer = ByteBuffer.wrap(buffer, enc ? enc : "base64");
2016
2022
  buffer = ByteBuffer.isByteBuffer(buffer) ? buffer : ByteBuffer.wrap(buffer); // May throw
@@ -2271,7 +2277,7 @@
2271
2277
  /**
2272
2278
  * Decodes an encoded message and returns the decoded message.
2273
2279
  * @param {ByteBuffer} buffer ByteBuffer to decode from
2274
- * @param {number=} length Message length. Defaults to decode all the available data.
2280
+ * @param {number=} length Message length. Defaults to decode all remaining data.
2275
2281
  * @param {number=} expectedGroupEndId Expected GROUPEND id if this is a legacy group
2276
2282
  * @return {ProtoBuf.Builder.Message} Decoded message
2277
2283
  * @throws {Error} If the message cannot be decoded
@@ -2521,9 +2527,10 @@
2521
2527
  */
2522
2528
  FieldPrototype.verifyValue = function(value, skipRepeated) {
2523
2529
  skipRepeated = skipRepeated || false;
2524
- var fail = function(val, msg) {
2525
- throw Error("Illegal value for "+this.toString(true)+" of type "+this.type.name+": "+val+" ("+msg+")");
2526
- }.bind(this);
2530
+ var self = this;
2531
+ function fail(val, msg) {
2532
+ throw Error("Illegal value for "+self.toString(true)+" of type "+self.type.name+": "+val+" ("+msg+")");
2533
+ }
2527
2534
  if (value === null) { // NULL values for optional fields
2528
2535
  if (this.required)
2529
2536
  fail(typeof value, "required");
@@ -3137,6 +3144,9 @@
3137
3144
  callback(err);
3138
3145
  return;
3139
3146
  }
3147
+ // Coalesce to empty string when service response has empty content
3148
+ if (res === null)
3149
+ res = ''
3140
3150
  try { res = method.resolvedResponseType.clazz.decode(res); } catch (notABuffer) {}
3141
3151
  if (!res || !(res instanceof method.resolvedResponseType.clazz)) {
3142
3152
  callback(Error("Illegal response type received in service method "+ T.name+"#"+method.name));
@@ -3580,13 +3590,12 @@
3580
3590
  subObj.push(svc);
3581
3591
  });
3582
3592
 
3583
- // Set extension range
3593
+ // Set extension ranges
3584
3594
  if (def["extensions"]) {
3585
- obj.extensions = def["extensions"];
3586
- if (obj.extensions[0] < ProtoBuf.ID_MIN)
3587
- obj.extensions[0] = ProtoBuf.ID_MIN;
3588
- if (obj.extensions[1] > ProtoBuf.ID_MAX)
3589
- obj.extensions[1] = ProtoBuf.ID_MAX;
3595
+ if (typeof def["extensions"][0] === 'number') // pre 5.0.1
3596
+ obj.extensions = [ def["extensions"] ];
3597
+ else
3598
+ obj.extensions = def["extensions"];
3590
3599
  }
3591
3600
 
3592
3601
  // Create on top of current namespace
@@ -3625,8 +3634,16 @@
3625
3634
  def["fields"].forEach(function(fld) {
3626
3635
  if (obj.getChild(fld['id']|0) !== null)
3627
3636
  throw Error("duplicate extended field id in "+obj.name+": "+fld['id']);
3628
- if (fld['id'] < obj.extensions[0] || fld['id'] > obj.extensions[1])
3629
- throw Error("illegal extended field id in "+obj.name+": "+fld['id']+" ("+obj.extensions.join(' to ')+" expected)");
3637
+ // Check if field id is allowed to be extended
3638
+ if (obj.extensions) {
3639
+ var valid = false;
3640
+ obj.extensions.forEach(function(range) {
3641
+ if (fld["id"] >= range[0] && fld["id"] <= range[1])
3642
+ valid = true;
3643
+ });
3644
+ if (!valid)
3645
+ throw Error("illegal extended field id in "+obj.name+": "+fld['id']+" (not within valid ranges)");
3646
+ }
3630
3647
  // Convert extension field names to camel case notation if the override is set
3631
3648
  var name = fld["name"];
3632
3649
  if (this.options['convertFieldsToCamelCase'])
@@ -3,85 +3,85 @@
3
3
  Released under the Apache License, Version 2.0
4
4
  see: https://github.com/dcodeIO/protobuf.js for details
5
5
  */
6
- (function(h,x){"function"===typeof define&&define.amd?define(["bytebuffer"],x):"function"===typeof require&&"object"===typeof module&&module&&module.exports?module.exports=x(require("bytebuffer"),!0):(h.dcodeIO=h.dcodeIO||{}).ProtoBuf=x(h.dcodeIO.ByteBuffer)})(this,function(h,x){var c={};c.ByteBuffer=h;c.Long=h.Long||null;c.VERSION="5.0.0";c.WIRE_TYPES={};c.WIRE_TYPES.VARINT=0;c.WIRE_TYPES.BITS64=1;c.WIRE_TYPES.LDELIM=2;c.WIRE_TYPES.STARTGROUP=3;c.WIRE_TYPES.ENDGROUP=4;c.WIRE_TYPES.BITS32=5;c.PACKABLE_WIRE_TYPES=
6
+ (function(h,y){"function"===typeof define&&define.amd?define(["bytebuffer"],y):"function"===typeof require&&"object"===typeof module&&module&&module.exports?module.exports=y(require("bytebuffer"),!0):(h.dcodeIO=h.dcodeIO||{}).ProtoBuf=y(h.dcodeIO.ByteBuffer)})(this,function(h,y){var c={};c.ByteBuffer=h;c.Long=h.Long||null;c.VERSION="5.0.1";c.WIRE_TYPES={};c.WIRE_TYPES.VARINT=0;c.WIRE_TYPES.BITS64=1;c.WIRE_TYPES.LDELIM=2;c.WIRE_TYPES.STARTGROUP=3;c.WIRE_TYPES.ENDGROUP=4;c.WIRE_TYPES.BITS32=5;c.PACKABLE_WIRE_TYPES=
7
7
  [c.WIRE_TYPES.VARINT,c.WIRE_TYPES.BITS64,c.WIRE_TYPES.BITS32];c.TYPES={int32:{name:"int32",wireType:c.WIRE_TYPES.VARINT,defaultValue:0},uint32:{name:"uint32",wireType:c.WIRE_TYPES.VARINT,defaultValue:0},sint32:{name:"sint32",wireType:c.WIRE_TYPES.VARINT,defaultValue:0},int64:{name:"int64",wireType:c.WIRE_TYPES.VARINT,defaultValue:c.Long?c.Long.ZERO:void 0},uint64:{name:"uint64",wireType:c.WIRE_TYPES.VARINT,defaultValue:c.Long?c.Long.UZERO:void 0},sint64:{name:"sint64",wireType:c.WIRE_TYPES.VARINT,
8
8
  defaultValue:c.Long?c.Long.ZERO:void 0},bool:{name:"bool",wireType:c.WIRE_TYPES.VARINT,defaultValue:!1},"double":{name:"double",wireType:c.WIRE_TYPES.BITS64,defaultValue:0},string:{name:"string",wireType:c.WIRE_TYPES.LDELIM,defaultValue:""},bytes:{name:"bytes",wireType:c.WIRE_TYPES.LDELIM,defaultValue:null},fixed32:{name:"fixed32",wireType:c.WIRE_TYPES.BITS32,defaultValue:0},sfixed32:{name:"sfixed32",wireType:c.WIRE_TYPES.BITS32,defaultValue:0},fixed64:{name:"fixed64",wireType:c.WIRE_TYPES.BITS64,
9
9
  defaultValue:c.Long?c.Long.UZERO:void 0},sfixed64:{name:"sfixed64",wireType:c.WIRE_TYPES.BITS64,defaultValue:c.Long?c.Long.ZERO:void 0},"float":{name:"float",wireType:c.WIRE_TYPES.BITS32,defaultValue:0},"enum":{name:"enum",wireType:c.WIRE_TYPES.VARINT,defaultValue:0},message:{name:"message",wireType:c.WIRE_TYPES.LDELIM,defaultValue:null},group:{name:"group",wireType:c.WIRE_TYPES.STARTGROUP,defaultValue:null}};c.MAP_KEY_TYPES=[c.TYPES.int32,c.TYPES.sint32,c.TYPES.sfixed32,c.TYPES.uint32,c.TYPES.fixed32,
10
- c.TYPES.int64,c.TYPES.sint64,c.TYPES.sfixed64,c.TYPES.uint64,c.TYPES.fixed64,c.TYPES.bool,c.TYPES.string,c.TYPES.bytes];c.ID_MIN=1;c.ID_MAX=536870911;c.convertFieldsToCamelCase=!1;c.populateAccessors=!0;c.populateDefaults=!0;c.Util=function(){var a={};a.IS_NODE=!("object"!==typeof process||"[object process]"!==process+""||process.browser);a.XHR=function(){for(var a=[function(){return new XMLHttpRequest},function(){return new ActiveXObject("Msxml2.XMLHTTP")},function(){return new ActiveXObject("Msxml3.XMLHTTP")},
11
- function(){return new ActiveXObject("Microsoft.XMLHTTP")}],c=null,h=0;h<a.length;h++){try{c=a[h]()}catch(l){continue}break}if(!c)throw Error("XMLHttpRequest is not supported");return c};a.fetch=function(c,h){h&&"function"!=typeof h&&(h=null);if(a.IS_NODE){var p=require("fs");if(h)p.readFile(c,function(a,c){a?h(null):h(""+c)});else try{return p.readFileSync(c)}catch(l){return null}}else{var g=a.XHR();g.open("GET",c,h?!0:!1);g.setRequestHeader("Accept","text/plain");"function"===typeof g.overrideMimeType&&
12
- g.overrideMimeType("text/plain");if(h)g.onreadystatechange=function(){4==g.readyState&&(200==g.status||0==g.status&&"string"===typeof g.responseText?h(g.responseText):h(null))},4!=g.readyState&&g.send(null);else return g.send(null),200==g.status||0==g.status&&"string"===typeof g.responseText?g.responseText:null}};a.toCamelCase=function(a){return a.replace(/_([a-zA-Z])/g,function(a,c){return c.toUpperCase()})};return a}();c.Lang={DELIM:/[\s\{\}=;:\[\],'"\(\)<>]/g,RULE:/^(?:required|optional|repeated|map)$/,
10
+ c.TYPES.int64,c.TYPES.sint64,c.TYPES.sfixed64,c.TYPES.uint64,c.TYPES.fixed64,c.TYPES.bool,c.TYPES.string,c.TYPES.bytes];c.ID_MIN=1;c.ID_MAX=536870911;c.convertFieldsToCamelCase=!1;c.populateAccessors=!0;c.populateDefaults=!0;c.Util=function(){var b={};b.IS_NODE=!("object"!==typeof process||"[object process]"!==process+""||process.browser);b.XHR=function(){for(var b=[function(){return new XMLHttpRequest},function(){return new ActiveXObject("Msxml2.XMLHTTP")},function(){return new ActiveXObject("Msxml3.XMLHTTP")},
11
+ function(){return new ActiveXObject("Microsoft.XMLHTTP")}],c=null,h=0;h<b.length;h++){try{c=b[h]()}catch(l){continue}break}if(!c)throw Error("XMLHttpRequest is not supported");return c};b.fetch=function(c,h){h&&"function"!=typeof h&&(h=null);if(b.IS_NODE){var n=require("fs");if(h)n.readFile(c,function(b,c){b?h(null):h(""+c)});else try{return n.readFileSync(c)}catch(l){return null}}else{var g=b.XHR();g.open("GET",c,h?!0:!1);g.setRequestHeader("Accept","text/plain");"function"===typeof g.overrideMimeType&&
12
+ g.overrideMimeType("text/plain");if(h)g.onreadystatechange=function(){4==g.readyState&&(200==g.status||0==g.status&&"string"===typeof g.responseText?h(g.responseText):h(null))},4!=g.readyState&&g.send(null);else return g.send(null),200==g.status||0==g.status&&"string"===typeof g.responseText?g.responseText:null}};b.toCamelCase=function(b){return b.replace(/_([a-zA-Z])/g,function(b,c){return c.toUpperCase()})};return b}();c.Lang={DELIM:/[\s\{\}=;:\[\],'"\(\)<>]/g,RULE:/^(?:required|optional|repeated|map)$/,
13
13
  TYPE:/^(?:double|float|int32|uint32|sint32|int64|uint64|sint64|fixed32|sfixed32|fixed64|sfixed64|bool|string|bytes)$/,NAME:/^[a-zA-Z_][a-zA-Z_0-9]*$/,TYPEDEF:/^[a-zA-Z][a-zA-Z_0-9]*$/,TYPEREF:/^(?:\.?[a-zA-Z_][a-zA-Z_0-9]*)+$/,FQTYPEREF:/^(?:\.[a-zA-Z][a-zA-Z_0-9]*)+$/,NUMBER:/^-?(?:[1-9][0-9]*|0|0[xX][0-9a-fA-F]+|0[0-7]+|([0-9]*(\.[0-9]*)?([Ee][+-]?[0-9]+)?)|inf|nan)$/,NUMBER_DEC:/^(?:[1-9][0-9]*|0)$/,NUMBER_HEX:/^0[xX][0-9a-fA-F]+$/,NUMBER_OCT:/^0[0-7]+$/,NUMBER_FLT:/^([0-9]*(\.[0-9]*)?([Ee][+-]?[0-9]+)?|inf|nan)$/,
14
- BOOL:/^(?:true|false)$/i,ID:/^(?:[1-9][0-9]*|0|0[xX][0-9a-fA-F]+|0[0-7]+)$/,NEGID:/^\-?(?:[1-9][0-9]*|0|0[xX][0-9a-fA-F]+|0[0-7]+)$/,WHITESPACE:/\s/,STRING:/(?:"([^"\\]*(?:\\.[^"\\]*)*)")|(?:'([^'\\]*(?:\\.[^'\\]*)*)')/g,STRING_DQ:/(?:"([^"\\]*(?:\\.[^"\\]*)*)")/g,STRING_SQ:/(?:'([^'\\]*(?:\\.[^'\\]*)*)')/g};c.Reflect=function(a){function c(b,e){if(b&&"number"===typeof b.low&&"number"===typeof b.high&&"boolean"===typeof b.unsigned&&b.low===b.low&&b.high===b.high)return new a.Long(b.low,b.high,"undefined"===
15
- typeof e?b.unsigned:e);if("string"===typeof b)return a.Long.fromString(b,e||!1,10);if("number"===typeof b)return a.Long.fromNumber(b,e||!1);throw Error("not convertible to Long");}function s(b,e){var m=e.readVarint32(),d=m&7,m=m>>>3;switch(d){case a.WIRE_TYPES.VARINT:do m=e.readUint8();while(128===(m&128));break;case a.WIRE_TYPES.BITS64:e.offset+=8;break;case a.WIRE_TYPES.LDELIM:m=e.readVarint32();e.offset+=m;break;case a.WIRE_TYPES.STARTGROUP:s(m,e);break;case a.WIRE_TYPES.ENDGROUP:if(m===b)return!1;
16
- throw Error("Illegal GROUPEND after unknown group: "+m+" ("+b+" expected)");case a.WIRE_TYPES.BITS32:e.offset+=4;break;default:throw Error("Illegal wire type in unknown group "+b+": "+d);}return!0}var p={},l=function(b,e,a){this.builder=b;this.parent=e;this.name=a},g=l.prototype;g.fqn=function(){var b=this.name,e=this;do{e=e.parent;if(null==e)break;b=e.name+"."+b}while(1);return b};g.toString=function(b){return(b?this.className+" ":"")+this.fqn()};g.build=function(){throw Error(this.toString(!0)+
17
- " cannot be built directly");};p.T=l;var d=function(b,e,a,d,r){l.call(this,b,e,a);this.className="Namespace";this.children=[];this.options=d||{};this.syntax=r||"proto2"},g=d.prototype=Object.create(l.prototype);g.getChildren=function(b){b=b||null;if(null==b)return this.children.slice();for(var e=[],a=0,d=this.children.length;a<d;++a)this.children[a]instanceof b&&e.push(this.children[a]);return e};g.addChild=function(b){var e;if(e=this.getChild(b.name))if(e instanceof n.Field&&e.name!==e.originalName&&
18
- null===this.getChild(e.originalName))e.name=e.originalName;else if(b instanceof n.Field&&b.name!==b.originalName&&null===this.getChild(b.originalName))b.name=b.originalName;else throw Error("Duplicate name in namespace "+this.toString(!0)+": "+b.name);this.children.push(b)};g.getChild=function(b){for(var e="number"===typeof b?"id":"name",a=0,d=this.children.length;a<d;++a)if(this.children[a][e]===b)return this.children[a];return null};g.resolve=function(b,e){var a="string"===typeof b?b.split("."):
19
- b,d=this,r=0;if(""===a[r]){for(;null!==d.parent;)d=d.parent;r++}do{do{if(!(d instanceof p.Namespace)){d=null;break}d=d.getChild(a[r]);if(!(d&&d instanceof p.T)||e&&!(d instanceof p.Namespace)){d=null;break}r++}while(r<a.length);if(null!=d)break;if(null!==this.parent)return this.parent.resolve(b,e)}while(null!=d);return d};g.qn=function(b){var e=[],a=b;do e.unshift(a.name),a=a.parent;while(null!==a);for(a=1;a<=e.length;a++){var d=e.slice(e.length-a);if(b===this.resolve(d,b instanceof p.Namespace))return d.join(".")}return b.fqn()};
20
- g.build=function(){for(var b={},a=this.children,m=0,c=a.length,r;m<c;++m)r=a[m],r instanceof d&&(b[r.name]=r.build());Object.defineProperty&&Object.defineProperty(b,"$options",{value:this.buildOpt()});return b};g.buildOpt=function(){for(var b={},a=Object.keys(this.options),d=0,c=a.length;d<c;++d)b[a[d]]=this.options[a[d]];return b};g.getOption=function(b){return"undefined"===typeof b?this.options:"undefined"!==typeof this.options[b]?this.options[b]:null};p.Namespace=d;var k=function(b,e,d,c){this.type=
21
- b;this.resolvedType=e;this.isMapKey=d;this.syntax=c;if(d&&0>a.MAP_KEY_TYPES.indexOf(b))throw Error("Invalid map key type: "+b.name);},f=k.prototype;k.defaultFieldValue=function(b){"string"===typeof b&&(b=a.TYPES[b]);if("undefined"===typeof b.defaultValue)throw Error("default value for type "+b.name+" is not supported");return b==a.TYPES.bytes?new h(0):b.defaultValue};f.verifyValue=function(b){var e=function(b,a){throw Error("Illegal value for "+this.toString(!0)+" of type "+this.type.name+": "+b+
22
- " ("+a+")");}.bind(this);switch(this.type){case a.TYPES.int32:case a.TYPES.sint32:case a.TYPES.sfixed32:return("number"!==typeof b||b===b&&0!==b%1)&&e(typeof b,"not an integer"),4294967295<b?b|0:b;case a.TYPES.uint32:case a.TYPES.fixed32:return("number"!==typeof b||b===b&&0!==b%1)&&e(typeof b,"not an integer"),0>b?b>>>0:b;case a.TYPES.int64:case a.TYPES.sint64:case a.TYPES.sfixed64:if(a.Long)try{return c(b,!1)}catch(d){e(typeof b,d.message)}else e(typeof b,"requires Long.js");case a.TYPES.uint64:case a.TYPES.fixed64:if(a.Long)try{return c(b,
23
- !0)}catch(f){e(typeof b,f.message)}else e(typeof b,"requires Long.js");case a.TYPES.bool:return"boolean"!==typeof b&&e(typeof b,"not a boolean"),b;case a.TYPES["float"]:case a.TYPES["double"]:return"number"!==typeof b&&e(typeof b,"not a number"),b;case a.TYPES.string:return"string"===typeof b||b&&b instanceof String||e(typeof b,"not a string"),""+b;case a.TYPES.bytes:return h.isByteBuffer(b)?b:h.wrap(b,"base64");case a.TYPES["enum"]:for(var r=this.resolvedType.getChildren(a.Reflect.Enum.Value),t=
24
- 0;t<r.length;t++)if(r[t].name==b||r[t].id==b)return r[t].id;if("proto3"===this.syntax)return("number"!==typeof b||b===b&&0!==b%1)&&e(typeof b,"not an integer"),(4294967295<b||0>b)&&e(typeof b,"not in range for uint32"),b;e(b,"not a valid enum value");case a.TYPES.group:case a.TYPES.message:b&&"object"===typeof b||e(typeof b,"object expected");if(b instanceof this.resolvedType.clazz)return b;if(b instanceof a.Builder.Message){var e={},t;for(t in b)b.hasOwnProperty(t)&&(e[t]=b[t]);b=e}return new this.resolvedType.clazz(b)}throw Error("[INTERNAL] Illegal value for "+
25
- this.toString(!0)+": "+b+" (undefined type "+this.type+")");};f.calculateLength=function(b,e){if(null===e)return 0;var d;switch(this.type){case a.TYPES.int32:return 0>e?h.calculateVarint64(e):h.calculateVarint32(e);case a.TYPES.uint32:return h.calculateVarint32(e);case a.TYPES.sint32:return h.calculateVarint32(h.zigZagEncode32(e));case a.TYPES.fixed32:case a.TYPES.sfixed32:case a.TYPES["float"]:return 4;case a.TYPES.int64:case a.TYPES.uint64:return h.calculateVarint64(e);case a.TYPES.sint64:return h.calculateVarint64(h.zigZagEncode64(e));
26
- case a.TYPES.fixed64:case a.TYPES.sfixed64:return 8;case a.TYPES.bool:return 1;case a.TYPES["enum"]:return h.calculateVarint32(e);case a.TYPES["double"]:return 8;case a.TYPES.string:return d=h.calculateUTF8Bytes(e),h.calculateVarint32(d)+d;case a.TYPES.bytes:if(0>e.remaining())throw Error("Illegal value for "+this.toString(!0)+": "+e.remaining()+" bytes remaining");return h.calculateVarint32(e.remaining())+e.remaining();case a.TYPES.message:return d=this.resolvedType.calculate(e),h.calculateVarint32(d)+
27
- d;case a.TYPES.group:return d=this.resolvedType.calculate(e),d+h.calculateVarint32(b<<3|a.WIRE_TYPES.ENDGROUP)}throw Error("[INTERNAL] Illegal value to encode in "+this.toString(!0)+": "+e+" (unknown type)");};f.encodeValue=function(b,e,d){if(null===e)return d;switch(this.type){case a.TYPES.int32:0>e?d.writeVarint64(e):d.writeVarint32(e);break;case a.TYPES.uint32:d.writeVarint32(e);break;case a.TYPES.sint32:d.writeVarint32ZigZag(e);break;case a.TYPES.fixed32:d.writeUint32(e);break;case a.TYPES.sfixed32:d.writeInt32(e);
28
- break;case a.TYPES.int64:case a.TYPES.uint64:d.writeVarint64(e);break;case a.TYPES.sint64:d.writeVarint64ZigZag(e);break;case a.TYPES.fixed64:d.writeUint64(e);break;case a.TYPES.sfixed64:d.writeInt64(e);break;case a.TYPES.bool:"string"===typeof e?d.writeVarint32("false"===e.toLowerCase()?0:!!e):d.writeVarint32(e?1:0);break;case a.TYPES["enum"]:d.writeVarint32(e);break;case a.TYPES["float"]:d.writeFloat32(e);break;case a.TYPES["double"]:d.writeFloat64(e);break;case a.TYPES.string:d.writeVString(e);
29
- break;case a.TYPES.bytes:if(0>e.remaining())throw Error("Illegal value for "+this.toString(!0)+": "+e.remaining()+" bytes remaining");b=e.offset;d.writeVarint32(e.remaining());d.append(e);e.offset=b;break;case a.TYPES.message:b=(new h).LE();this.resolvedType.encode(e,b);d.writeVarint32(b.offset);d.append(b.flip());break;case a.TYPES.group:this.resolvedType.encode(e,d);d.writeVarint32(b<<3|a.WIRE_TYPES.ENDGROUP);break;default:throw Error("[INTERNAL] Illegal value to encode in "+this.toString(!0)+": "+
30
- e+" (unknown type)");}return d};f.decode=function(b,e,d){if(e!=this.type.wireType)throw Error("Unexpected wire type for element");switch(this.type){case a.TYPES.int32:return b.readVarint32()|0;case a.TYPES.uint32:return b.readVarint32()>>>0;case a.TYPES.sint32:return b.readVarint32ZigZag()|0;case a.TYPES.fixed32:return b.readUint32()>>>0;case a.TYPES.sfixed32:return b.readInt32()|0;case a.TYPES.int64:return b.readVarint64();case a.TYPES.uint64:return b.readVarint64().toUnsigned();case a.TYPES.sint64:return b.readVarint64ZigZag();
31
- case a.TYPES.fixed64:return b.readUint64();case a.TYPES.sfixed64:return b.readInt64();case a.TYPES.bool:return!!b.readVarint32();case a.TYPES["enum"]:return b.readVarint32();case a.TYPES["float"]:return b.readFloat();case a.TYPES["double"]:return b.readDouble();case a.TYPES.string:return b.readVString();case a.TYPES.bytes:d=b.readVarint32();if(b.remaining()<d)throw Error("Illegal number of bytes for "+this.toString(!0)+": "+d+" required but got only "+b.remaining());e=b.clone();e.limit=e.offset+d;
32
- b.offset+=d;return e;case a.TYPES.message:return d=b.readVarint32(),this.resolvedType.decode(b,d);case a.TYPES.group:return this.resolvedType.decode(b,-1,d)}throw Error("[INTERNAL] Illegal decode type");};f.valueFromString=function(b){if(!this.isMapKey)throw Error("valueFromString() called on non-map-key element");switch(this.type){case a.TYPES.int32:case a.TYPES.sint32:case a.TYPES.sfixed32:case a.TYPES.uint32:case a.TYPES.fixed32:return this.verifyValue(parseInt(b));case a.TYPES.int64:case a.TYPES.sint64:case a.TYPES.sfixed64:case a.TYPES.uint64:case a.TYPES.fixed64:return this.verifyValue(b);
33
- case a.TYPES.bool:return"true"===b;case a.TYPES.string:return this.verifyValue(b);case a.TYPES.bytes:return h.fromBinary(b)}};f.valueToString=function(b){if(!this.isMapKey)throw Error("valueToString() called on non-map-key element");return this.type===a.TYPES.bytes?b.toString("binary"):b.toString()};p.Element=k;var n=function(b,e,c,f,r,t){d.call(this,b,e,c,f,t);this.className="Message";this.extensions=[a.ID_MIN,a.ID_MAX];this.clazz=null;this.isGroup=!!r;this._fieldsByName=this._fieldsById=this._fields=
34
- null},f=n.prototype=Object.create(d.prototype);f.build=function(b){if(this.clazz&&!b)return this.clazz;b=function(b,a){function e(a,d,c,f){if(null===a||"object"!==typeof a){if(f&&f instanceof b.Reflect.Enum){var m=b.Reflect.Enum.getName(f.object,a);if(null!==m)return m}return a}if(h.isByteBuffer(a))return d?a.toBase64():a.toBuffer();if(b.Long.isLong(a))return c?a.toString():b.Long.fromValue(a);var g;if(Array.isArray(a))return g=[],a.forEach(function(b,a){g[a]=e(b,d,c,f)}),g;g={};if(a instanceof b.Map){for(var m=
35
- a.entries(),k=m.next();!k.done;k=m.next())g[a.keyElem.valueToString(k.value[0])]=e(k.value[1],d,c,a.valueElem.resolvedType);return g}var m=a.$type,k=void 0,n;for(n in a)a.hasOwnProperty(n)&&(m&&(k=m.getChild(n))?g[n]=e(a[n],d,c,k.resolvedType):g[n]=e(a[n],d,c));return g}var d=a.getChildren(b.Reflect.Message.Field),c=a.getChildren(b.Reflect.Message.OneOf),m=function(e,f){b.Builder.Message.call(this);for(var g=0,k=c.length;g<k;++g)this[c[g].name]=null;g=0;for(k=d.length;g<k;++g){var n=d[g];this[n.name]=
36
- n.repeated?[]:n.map?new b.Map(n):null;!n.required&&"proto3"!==a.syntax||null===n.defaultValue||(this[n.name]=n.defaultValue)}if(0<arguments.length)if(1!==arguments.length||null===e||"object"!==typeof e||!("function"!==typeof e.encode||e instanceof m)||Array.isArray(e)||e instanceof b.Map||h.isByteBuffer(e)||e instanceof ArrayBuffer||b.Long&&e instanceof b.Long)for(g=0,k=arguments.length;g<k;++g)"undefined"!==typeof(n=arguments[g])&&this.$set(d[g].name,n);else this.$set(e)},f=m.prototype=Object.create(b.Builder.Message.prototype);
37
- f.add=function(e,d,c){var f=a._fieldsByName[e];if(!c){if(!f)throw Error(this+"#"+e+" is undefined");if(!(f instanceof b.Reflect.Message.Field))throw Error(this+"#"+e+" is not a field: "+f.toString(!0));if(!f.repeated)throw Error(this+"#"+e+" is not a repeated field");d=f.verifyValue(d,!0)}null===this[e]&&(this[e]=[]);this[e].push(d);return this};f.$add=f.add;f.set=function(e,d,f){if(e&&"object"===typeof e){f=d;for(var c in e)e.hasOwnProperty(c)&&"undefined"!==typeof(d=e[c])&&this.$set(c,d,f);return this}c=
38
- a._fieldsByName[e];if(f)this[e]=d;else{if(!c)throw Error(this+"#"+e+" is not a field: undefined");if(!(c instanceof b.Reflect.Message.Field))throw Error(this+"#"+e+" is not a field: "+c.toString(!0));this[c.name]=d=c.verifyValue(d)}c&&c.oneof&&(f=this[c.oneof.name],null!==d?(null!==f&&f!==c.name&&(this[f]=null),this[c.oneof.name]=c.name):f===e&&(this[c.oneof.name]=null));return this};f.$set=f.set;f.get=function(e,d){if(d)return this[e];var c=a._fieldsByName[e];if(!(c&&c instanceof b.Reflect.Message.Field))throw Error(this+
39
- "#"+e+" is not a field: undefined");if(!(c instanceof b.Reflect.Message.Field))throw Error(this+"#"+e+" is not a field: "+c.toString(!0));return this[c.name]};f.$get=f.get;for(var g=0;g<d.length;g++){var k=d[g];k instanceof b.Reflect.Message.ExtensionField||a.builder.options.populateAccessors&&function(b){var e=b.originalName.replace(/(_[a-zA-Z])/g,function(b){return b.toUpperCase().replace("_","")}),e=e.substring(0,1).toUpperCase()+e.substring(1),d=b.originalName.replace(/([A-Z])/g,function(b){return"_"+
40
- b}),c=function(a,e){this[b.name]=e?a:b.verifyValue(a);return this},m=function(){return this[b.name]};null===a.getChild("set"+e)&&(f["set"+e]=c);null===a.getChild("set_"+d)&&(f["set_"+d]=c);null===a.getChild("get"+e)&&(f["get"+e]=m);null===a.getChild("get_"+d)&&(f["get_"+d]=m)}(k)}f.encode=function(b,e){"boolean"===typeof b&&(e=b,b=void 0);var d=!1;b||(b=new h,d=!0);var c=b.littleEndian;try{return a.encode(this,b.LE(),e),(d?b.flip():b).LE(c)}catch(f){throw b.LE(c),f;}};m.encode=function(b,a,e){return(new m(b)).encode(a,
41
- e)};f.calculate=function(){return a.calculate(this)};f.encodeDelimited=function(b){var e=!1;b||(b=new h,e=!0);var d=(new h).LE();a.encode(this,d).flip();b.writeVarint32(d.remaining());b.append(d);return e?b.flip():b};f.encodeAB=function(){try{return this.encode().toArrayBuffer()}catch(b){throw b.encoded&&(b.encoded=b.encoded.toArrayBuffer()),b;}};f.toArrayBuffer=f.encodeAB;f.encodeNB=function(){try{return this.encode().toBuffer()}catch(b){throw b.encoded&&(b.encoded=b.encoded.toBuffer()),b;}};f.toBuffer=
42
- f.encodeNB;f.encode64=function(){try{return this.encode().toBase64()}catch(b){throw b.encoded&&(b.encoded=b.encoded.toBase64()),b;}};f.toBase64=f.encode64;f.encodeHex=function(){try{return this.encode().toHex()}catch(b){throw b.encoded&&(b.encoded=b.encoded.toHex()),b;}};f.toHex=f.encodeHex;f.toRaw=function(b,a){return e(this,!!b,!!a,this.$type)};f.encodeJSON=function(){return JSON.stringify(e(this,!0,!0,this.$type))};m.decode=function(b,e){"string"===typeof b&&(b=h.wrap(b,e?e:"base64"));b=h.isByteBuffer(b)?
43
- b:h.wrap(b);var d=b.littleEndian;try{var c=a.decode(b.LE());b.LE(d);return c}catch(f){throw b.LE(d),f;}};m.decodeDelimited=function(b,e){"string"===typeof b&&(b=h.wrap(b,e?e:"base64"));b=h.isByteBuffer(b)?b:h.wrap(b);if(1>b.remaining())return null;var d=b.offset,c=b.readVarint32();if(b.remaining()<c)return b.offset=d,null;try{var f=a.decode(b.slice(b.offset,b.offset+c).LE());b.offset+=c;return f}catch(m){throw b.offset+=c,m;}};m.decode64=function(b){return m.decode(b,"base64")};m.decodeHex=function(b){return m.decode(b,
44
- "hex")};m.decodeJSON=function(b){return new m(JSON.parse(b))};f.toString=function(){return a.toString()};Object.defineProperty&&(Object.defineProperty(m,"$options",{value:a.buildOpt()}),Object.defineProperty(f,"$options",{value:m.$options}),Object.defineProperty(m,"$type",{value:a}),Object.defineProperty(f,"$type",{value:a}));return m}(a,this);this._fields=[];this._fieldsById={};this._fieldsByName={};for(var e=0,d=this.children.length,c;e<d;e++)if(c=this.children[e],c instanceof w||c instanceof n||
45
- c instanceof z){if(b.hasOwnProperty(c.name))throw Error("Illegal reflect child of "+this.toString(!0)+": "+c.toString(!0)+" cannot override static property '"+c.name+"'");b[c.name]=c.build()}else if(c instanceof n.Field)c.build(),this._fields.push(c),this._fieldsById[c.id]=c,this._fieldsByName[c.name]=c;else if(!(c instanceof n.OneOf||c instanceof v))throw Error("Illegal reflect child of "+this.toString(!0)+": "+this.children[e].toString(!0));return this.clazz=b};f.encode=function(b,a,d){for(var c=
46
- null,f,g=0,k=this._fields.length,n;g<k;++g)f=this._fields[g],n=b[f.name],f.required&&null===n?null===c&&(c=f):f.encode(d?n:f.verifyValue(n),a,b);if(null!==c)throw b=Error("Missing at least one required field for "+this.toString(!0)+": "+c),b.encoded=a,b;return a};f.calculate=function(b){for(var a=0,d=0,c=this._fields.length,f,g;d<c;++d){f=this._fields[d];g=b[f.name];if(f.required&&null===g)throw Error("Missing at least one required field for "+this.toString(!0)+": "+f);a+=f.calculate(g,b)}return a};
47
- f.decode=function(b,e,d){e="number"===typeof e?e:-1;for(var c=b.offset,f=new this.clazz,g,k,n;b.offset<c+e||-1===e&&0<b.remaining();){g=b.readVarint32();k=g&7;n=g>>>3;if(k===a.WIRE_TYPES.ENDGROUP){if(n!==d)throw Error("Illegal group end indicator for "+this.toString(!0)+": "+n+" ("+(d?d+" expected":"not a group")+")");break}if(g=this._fieldsById[n])g.repeated&&!g.options.packed?f[g.name].push(g.decode(k,b)):g.map?(k=g.decode(k,b),f[g.name].set(k[0],k[1])):(f[g.name]=g.decode(k,b),g.oneof&&(k=f[g.oneof.name],
48
- null!==k&&k!==g.name&&(f[k]=null),f[g.oneof.name]=g.name));else switch(k){case a.WIRE_TYPES.VARINT:b.readVarint32();break;case a.WIRE_TYPES.BITS32:b.offset+=4;break;case a.WIRE_TYPES.BITS64:b.offset+=8;break;case a.WIRE_TYPES.LDELIM:g=b.readVarint32();b.offset+=g;break;case a.WIRE_TYPES.STARTGROUP:for(;s(n,b););break;default:throw Error("Illegal wire type for unknown field "+n+" in "+this.toString(!0)+"#decode: "+k);}}b=0;for(e=this._fields.length;b<e;++b)if(g=this._fields[b],null===f[g.name])if("proto3"===
49
- this.syntax)f[g.name]=g.defaultValue;else{if(g.required)throw b=Error("Missing at least one required field for "+this.toString(!0)+": "+g.name),b.decoded=f,b;a.populateDefaults&&null!==g.defaultValue&&(f[g.name]=g.defaultValue)}return f};p.Message=n;var y=function(b,e,d,c,f,g,k,v,h,q){l.call(this,b,e,g);this.className="Message.Field";this.required="required"===d;this.repeated="repeated"===d;this.map="map"===d;this.keyType=c||null;this.type=f;this.resolvedType=null;this.id=k;this.options=v||{};this.defaultValue=
50
- null;this.oneof=h||null;this.syntax=q||"proto2";this.originalName=this.name;this.keyElement=this.element=null;!this.builder.options.convertFieldsToCamelCase||this instanceof n.ExtensionField||(this.name=a.Util.toCamelCase(this.name))},f=y.prototype=Object.create(l.prototype);f.build=function(){this.element=new k(this.type,this.resolvedType,!1,this.syntax);this.map&&(this.keyElement=new k(this.keyType,void 0,!0,this.syntax));"proto3"!==this.syntax||this.repeated||this.map?"undefined"!==typeof this.options["default"]&&
51
- (this.defaultValue=this.verifyValue(this.options["default"])):this.defaultValue=k.defaultFieldValue(this.type)};f.verifyValue=function(b,e){e=e||!1;var d=function(b,a){throw Error("Illegal value for "+this.toString(!0)+" of type "+this.type.name+": "+b+" ("+a+")");}.bind(this);if(null===b)return this.required&&d(typeof b,"required"),"proto3"===this.syntax&&this.type!==a.TYPES.message&&d(typeof b,"proto3 field without field presence cannot be null"),null;if(this.repeated&&!e){Array.isArray(b)||(b=
52
- [b]);for(var c=[],d=0;d<b.length;d++)c.push(this.element.verifyValue(b[d]));return c}if(this.map&&!e){if(b instanceof a.Map)return b;b instanceof Object||d(typeof b,"expected ProtoBuf.Map or raw object for map field");return new a.Map(this,b)}!this.repeated&&Array.isArray(b)&&d(typeof b,"no array expected");return this.element.verifyValue(b)};f.hasWirePresence=function(b,e){if("proto3"!==this.syntax)return null!==b;if(this.oneof&&e[this.oneof.name]===this.name)return!0;switch(this.type){case a.TYPES.int32:case a.TYPES.sint32:case a.TYPES.sfixed32:case a.TYPES.uint32:case a.TYPES.fixed32:return 0!==
53
- b;case a.TYPES.int64:case a.TYPES.sint64:case a.TYPES.sfixed64:case a.TYPES.uint64:case a.TYPES.fixed64:return 0!==b.low||0!==b.high;case a.TYPES.bool:return b;case a.TYPES["float"]:case a.TYPES["double"]:return 0!==b;case a.TYPES.string:return 0<b.length;case a.TYPES.bytes:return 0<b.remaining();case a.TYPES["enum"]:return 0!==b;case a.TYPES.message:return null!==b;default:return!0}};f.encode=function(b,e,d){if(null===this.type||"object"!==typeof this.type)throw Error("[INTERNAL] Unresolved type in "+
54
- this.toString(!0)+": "+this.type);if(null===b||this.repeated&&0==b.length)return e;try{if(this.repeated){var c;if(this.options.packed&&0<=a.PACKABLE_WIRE_TYPES.indexOf(this.type.wireType)){e.writeVarint32(this.id<<3|a.WIRE_TYPES.LDELIM);e.ensureCapacity(e.offset+=1);var f=e.offset;for(c=0;c<b.length;c++)this.element.encodeValue(this.id,b[c],e);var g=e.offset-f,k=h.calculateVarint32(g);if(1<k){var n=e.slice(f,e.offset),f=f+(k-1);e.offset=f;e.append(n)}e.writeVarint32(g,f-k)}else for(c=0;c<b.length;c++)e.writeVarint32(this.id<<
55
- 3|this.type.wireType),this.element.encodeValue(this.id,b[c],e)}else this.map?b.forEach(function(b,d,c){c=h.calculateVarint32(8|this.keyType.wireType)+this.keyElement.calculateLength(1,d)+h.calculateVarint32(16|this.type.wireType)+this.element.calculateLength(2,b);e.writeVarint32(this.id<<3|a.WIRE_TYPES.LDELIM);e.writeVarint32(c);e.writeVarint32(8|this.keyType.wireType);this.keyElement.encodeValue(1,d,e);e.writeVarint32(16|this.type.wireType);this.element.encodeValue(2,b,e)},this):this.hasWirePresence(b,
56
- d)&&(e.writeVarint32(this.id<<3|this.type.wireType),this.element.encodeValue(this.id,b,e))}catch(v){throw Error("Illegal value for "+this.toString(!0)+": "+b+" ("+v+")");}return e};f.calculate=function(b,d){b=this.verifyValue(b);if(null===this.type||"object"!==typeof this.type)throw Error("[INTERNAL] Unresolved type in "+this.toString(!0)+": "+this.type);if(null===b||this.repeated&&0==b.length)return 0;var c=0;try{if(this.repeated){var f,g;if(this.options.packed&&0<=a.PACKABLE_WIRE_TYPES.indexOf(this.type.wireType)){c+=
57
- h.calculateVarint32(this.id<<3|a.WIRE_TYPES.LDELIM);for(f=g=0;f<b.length;f++)g+=this.element.calculateLength(this.id,b[f]);c+=h.calculateVarint32(g);c+=g}else for(f=0;f<b.length;f++)c+=h.calculateVarint32(this.id<<3|this.type.wireType),c+=this.element.calculateLength(this.id,b[f])}else this.map?b.forEach(function(b,d,e){b=h.calculateVarint32(8|this.keyType.wireType)+this.keyElement.calculateLength(1,d)+h.calculateVarint32(16|this.type.wireType)+this.element.calculateLength(2,b);c+=h.calculateVarint32(this.id<<
58
- 3|a.WIRE_TYPES.LDELIM);c+=h.calculateVarint32(b);c+=b},this):this.hasWirePresence(b,d)&&(c+=h.calculateVarint32(this.id<<3|this.type.wireType),c+=this.element.calculateLength(this.id,b))}catch(k){throw Error("Illegal value for "+this.toString(!0)+": "+b+" ("+k+")");}return c};f.decode=function(b,d,c){if(!(!this.map&&b==this.type.wireType||!c&&this.repeated&&this.options.packed&&b==a.WIRE_TYPES.LDELIM||this.map&&b==a.WIRE_TYPES.LDELIM))throw Error("Illegal wire type for field "+this.toString(!0)+": "+
59
- b+" ("+this.type.wireType+" expected)");if(b==a.WIRE_TYPES.LDELIM&&this.repeated&&this.options.packed&&0<=a.PACKABLE_WIRE_TYPES.indexOf(this.type.wireType)&&!c){b=d.readVarint32();b=d.offset+b;for(c=[];d.offset<b;)c.push(this.decode(this.type.wireType,d,!0));return c}if(this.map){var f=k.defaultFieldValue(this.keyType);c=k.defaultFieldValue(this.type);b=d.readVarint32();if(d.remaining()<b)throw Error("Illegal number of bytes for "+this.toString(!0)+": "+b+" required but got only "+d.remaining());
60
- var g=d.clone();g.limit=g.offset+b;for(d.offset+=b;0<g.remaining();)if(d=g.readVarint32(),b=d&7,d>>>=3,1===d)f=this.keyElement.decode(g,b,d);else if(2===d)c=this.element.decode(g,b,d);else throw Error("Unexpected tag in map field key/value submessage");return[f,c]}return this.element.decode(d,b,this.id)};p.Message.Field=y;f=function(b,d,a,c,f,g,k){y.call(this,b,d,a,null,c,f,g,k)};f.prototype=Object.create(y.prototype);p.Message.ExtensionField=f;p.Message.OneOf=function(b,d,a){l.call(this,b,d,a);this.fields=
61
- []};var w=function(b,a,c,f,g){d.call(this,b,a,c,f,g);this.className="Enum";this.object=null};w.getName=function(b,a){for(var d=Object.keys(b),c=0,f;c<d.length;++c)if(b[f=d[c]]===a)return f;return null};(w.prototype=Object.create(d.prototype)).build=function(b){if(this.object&&!b)return this.object;b=new a.Builder.Enum;for(var d=this.getChildren(w.Value),c=0,f=d.length;c<f;++c)b[d[c].name]=d[c].id;Object.defineProperty&&Object.defineProperty(b,"$options",{value:this.buildOpt(),enumerable:!1});return this.object=
62
- b};p.Enum=w;f=function(b,d,a,c){l.call(this,b,d,a);this.className="Enum.Value";this.id=c};f.prototype=Object.create(l.prototype);p.Enum.Value=f;var v=function(b,d,a,c){l.call(this,b,d,a);this.field=c};v.prototype=Object.create(l.prototype);p.Extension=v;var z=function(b,a,c,f){d.call(this,b,a,c,f);this.className="Service";this.clazz=null};(z.prototype=Object.create(d.prototype)).build=function(b){return this.clazz&&!b?this.clazz:this.clazz=function(b,d){for(var a=function(a){b.Builder.Service.call(this);
63
- this.rpcImpl=a||function(b,a,d){setTimeout(d.bind(this,Error("Not implemented, see: https://github.com/dcodeIO/ProtoBuf.js/wiki/Services")),0)}},c=a.prototype=Object.create(b.Builder.Service.prototype),f=d.getChildren(b.Reflect.Service.RPCMethod),g=0;g<f.length;g++)(function(b){c[b.name]=function(a,c){try{try{a=b.resolvedRequestType.clazz.decode(h.wrap(a))}catch(e){if(!(e instanceof TypeError))throw e;}if(null===a||"object"!==typeof a)throw Error("Illegal arguments");a instanceof b.resolvedRequestType.clazz||
64
- (a=new b.resolvedRequestType.clazz(a));this.rpcImpl(b.fqn(),a,function(a,e){if(a)c(a);else{try{e=b.resolvedResponseType.clazz.decode(e)}catch(f){}e&&e instanceof b.resolvedResponseType.clazz?c(null,e):c(Error("Illegal response type received in service method "+d.name+"#"+b.name))}})}catch(f){setTimeout(c.bind(this,f),0)}};a[b.name]=function(d,c,e){(new a(d))[b.name](c,e)};Object.defineProperty&&(Object.defineProperty(a[b.name],"$options",{value:b.buildOpt()}),Object.defineProperty(c[b.name],"$options",
65
- {value:a[b.name].$options}))})(f[g]);Object.defineProperty&&(Object.defineProperty(a,"$options",{value:d.buildOpt()}),Object.defineProperty(c,"$options",{value:a.$options}),Object.defineProperty(a,"$type",{value:d}),Object.defineProperty(c,"$type",{value:d}));return a}(a,this)};p.Service=z;var u=function(b,a,d,c){l.call(this,b,a,d);this.className="Service.Method";this.options=c||{}};(u.prototype=Object.create(l.prototype)).buildOpt=g.buildOpt;p.Service.Method=u;g=function(b,a,d,c,f,g,k,n){u.call(this,
66
- b,a,d,n);this.className="Service.RPCMethod";this.requestName=c;this.responseName=f;this.requestStream=g;this.responseStream=k;this.resolvedResponseType=this.resolvedRequestType=null};g.prototype=Object.create(u.prototype);p.Service.RPCMethod=g;return p}(c);c.Builder=function(a,c,h){function p(a){a.messages&&a.messages.forEach(function(c){c.syntax=a.syntax;p(c)});a.enums&&a.enums.forEach(function(c){c.syntax=a.syntax})}var l=function(a){this.ptr=this.ns=new h.Namespace(this,null,"");this.resolved=
67
- !1;this.result=null;this.files={};this.importRoot=null;this.options=a||{}},g=l.prototype;l.isMessage=function(a){return"string"!==typeof a.name||"undefined"!==typeof a.values||"undefined"!==typeof a.rpc?!1:!0};l.isMessageField=function(a){return"string"!==typeof a.rule||"string"!==typeof a.name||"string"!==typeof a.type||"undefined"===typeof a.id?!1:!0};l.isEnum=function(a){return"string"===typeof a.name&&"undefined"!==typeof a.values&&Array.isArray(a.values)&&0!==a.values.length?!0:!1};l.isService=
68
- function(a){return"string"===typeof a.name&&"object"===typeof a.rpc&&a.rpc?!0:!1};l.isExtend=function(a){return"string"!==typeof a.ref?!1:!0};g.reset=function(){this.ptr=this.ns;return this};g.define=function(a){if("string"!==typeof a||!c.TYPEREF.test(a))throw Error("illegal namespace: "+a);a.split(".").forEach(function(a){var d=this.ptr.getChild(a);null===d&&this.ptr.addChild(d=new h.Namespace(this,this.ptr,a));this.ptr=d},this);return this};g.create=function(d){if(!d)return this;if(Array.isArray(d)){if(0===
69
- d.length)return this;d=d.slice()}else d=[d];for(var c=[d];0<c.length;){d=c.pop();if(!Array.isArray(d))throw Error("not a valid namespace: "+JSON.stringify(d));for(;0<d.length;){var f=d.shift();if(l.isMessage(f)){var g=new h.Message(this,this.ptr,f.name,f.options,f.isGroup,f.syntax),p={};f.oneofs&&Object.keys(f.oneofs).forEach(function(a){g.addChild(p[a]=new h.Message.OneOf(this,g,a))},this);f.fields&&f.fields.forEach(function(a){if(null!==g.getChild(a.id|0))throw Error("duplicate or invalid field id in "+
70
- g.name+": "+a.id);if(a.options&&"object"!==typeof a.options)throw Error("illegal field options in "+g.name+"#"+a.name);var d=null;if("string"===typeof a.oneof&&!(d=p[a.oneof]))throw Error("illegal oneof in "+g.name+"#"+a.name+": "+a.oneof);a=new h.Message.Field(this,g,a.rule,a.keytype,a.type,a.name,a.id,a.options,d,f.syntax);d&&d.fields.push(a);g.addChild(a)},this);var q=[];f.enums&&f.enums.forEach(function(a){q.push(a)});f.messages&&f.messages.forEach(function(a){q.push(a)});f.services&&f.services.forEach(function(a){q.push(a)});
71
- f.extensions&&(g.extensions=f.extensions,g.extensions[0]<a.ID_MIN&&(g.extensions[0]=a.ID_MIN),g.extensions[1]>a.ID_MAX&&(g.extensions[1]=a.ID_MAX));this.ptr.addChild(g);if(0<q.length){c.push(d);d=q;q=null;this.ptr=g;g=null;continue}q=null}else if(l.isEnum(f))g=new h.Enum(this,this.ptr,f.name,f.options,f.syntax),f.values.forEach(function(a){g.addChild(new h.Enum.Value(this,g,a.name,a.id))},this),this.ptr.addChild(g);else if(l.isService(f))g=new h.Service(this,this.ptr,f.name,f.options),Object.keys(f.rpc).forEach(function(a){var d=
72
- f.rpc[a];g.addChild(new h.Service.RPCMethod(this,g,a,d.request,d.response,!!d.request_stream,!!d.response_stream,d.options))},this),this.ptr.addChild(g);else if(l.isExtend(f))if(g=this.ptr.resolve(f.ref,!0))f.fields.forEach(function(d){if(null!==g.getChild(d.id|0))throw Error("duplicate extended field id in "+g.name+": "+d.id);if(d.id<g.extensions[0]||d.id>g.extensions[1])throw Error("illegal extended field id in "+g.name+": "+d.id+" ("+g.extensions.join(" to ")+" expected)");var c=d.name;this.options.convertFieldsToCamelCase&&
73
- (c=a.Util.toCamelCase(c));c=new h.Message.ExtensionField(this,g,d.rule,d.type,this.ptr.fqn()+"."+c,d.id,d.options);d=new h.Extension(this,this.ptr,d.name,c);c.extension=d;this.ptr.addChild(d);g.addChild(c)},this);else{if(!/\.?google\.protobuf\./.test(f.ref))throw Error("extended message "+f.ref+" is not defined");}else throw Error("not a valid definition: "+JSON.stringify(f));g=f=null}d=null;this.ptr=this.ptr.parent}this.resolved=!1;this.result=null;return this};g["import"]=function(d,c){var f="/";
74
- if("string"===typeof c){a.Util.IS_NODE&&(c=require("path").resolve(c));if(!0===this.files[c])return this.reset();this.files[c]=!0}else if("object"===typeof c){var g=c.root;a.Util.IS_NODE&&(g=require("path").resolve(g));if(0<=g.indexOf("\\")||0<=c.file.indexOf("\\"))f="\\";g=g+f+c.file;if(!0===this.files[g])return this.reset();this.files[g]=!0}if(d.imports&&0<d.imports.length){var h=!1;if("object"===typeof c){if(this.importRoot=c.root,h=!0,g=this.importRoot,c=c.file,0<=g.indexOf("\\")||0<=c.indexOf("\\"))f=
75
- "\\"}else"string"===typeof c?this.importRoot?g=this.importRoot:0<=c.indexOf("/")?(g=c.replace(/\/[^\/]*$/,""),""===g&&(g="/")):0<=c.indexOf("\\")?(g=c.replace(/\\[^\\]*$/,""),f="\\"):g=".":g=null;for(var l=0;l<d.imports.length;l++)if("string"===typeof d.imports[l]){if(!g)throw Error("cannot determine import root");var q=d.imports[l];if("google/protobuf/descriptor.proto"!==q&&(q=g+f+q,!0!==this.files[q])){/\.proto$/i.test(q)&&!a.DotProto&&(q=q.replace(/\.proto$/,".json"));var s=a.Util.fetch(q);if(null===
76
- s)throw Error("failed to import '"+q+"' in '"+c+"': file not found");if(/\.json$/i.test(q))this["import"](JSON.parse(s+""),q);else this["import"](a.DotProto.Parser.parse(s),q)}}else if(c)if(/\.(\w+)$/.test(c))this["import"](d.imports[l],c.replace(/^(.+)\.(\w+)$/,function(b,a,d){return a+"_import"+l+"."+d}));else this["import"](d.imports[l],c+"_import"+l);else this["import"](d.imports[l]);h&&(this.importRoot=null)}d["package"]&&this.define(d["package"]);d.syntax&&p(d);var u=this.ptr;d.options&&Object.keys(d.options).forEach(function(b){u.options[b]=
77
- d.options[b]});d.messages&&(this.create(d.messages),this.ptr=u);d.enums&&(this.create(d.enums),this.ptr=u);d.services&&(this.create(d.services),this.ptr=u);d["extends"]&&this.create(d["extends"]);return this.reset()};g.resolveAll=function(){var d;if(null==this.ptr||"object"===typeof this.ptr.type)return this;if(this.ptr instanceof h.Namespace)this.ptr.children.forEach(function(a){this.ptr=a;this.resolveAll()},this);else if(this.ptr instanceof h.Message.Field){if(c.TYPE.test(this.ptr.type))this.ptr.type=
78
- a.TYPES[this.ptr.type];else{if(!c.TYPEREF.test(this.ptr.type))throw Error("illegal type reference in "+this.ptr.toString(!0)+": "+this.ptr.type);d=(this.ptr instanceof h.Message.ExtensionField?this.ptr.extension.parent:this.ptr.parent).resolve(this.ptr.type,!0);if(!d)throw Error("unresolvable type reference in "+this.ptr.toString(!0)+": "+this.ptr.type);this.ptr.resolvedType=d;if(d instanceof h.Enum){if(this.ptr.type=a.TYPES["enum"],"proto3"===this.ptr.syntax&&"proto3"!==d.syntax)throw Error("proto3 message cannot reference proto2 enum");
79
- }else if(d instanceof h.Message)this.ptr.type=d.isGroup?a.TYPES.group:a.TYPES.message;else throw Error("illegal type reference in "+this.ptr.toString(!0)+": "+this.ptr.type);}if(this.ptr.map){if(!c.TYPE.test(this.ptr.keyType))throw Error("illegal key type for map field in "+this.ptr.toString(!0)+": "+this.ptr.keyType);this.ptr.keyType=a.TYPES[this.ptr.keyType]}}else if(this.ptr instanceof a.Reflect.Service.Method)if(this.ptr instanceof a.Reflect.Service.RPCMethod){d=this.ptr.parent.resolve(this.ptr.requestName,
80
- !0);if(!(d&&d instanceof a.Reflect.Message))throw Error("Illegal type reference in "+this.ptr.toString(!0)+": "+this.ptr.requestName);this.ptr.resolvedRequestType=d;d=this.ptr.parent.resolve(this.ptr.responseName,!0);if(!(d&&d instanceof a.Reflect.Message))throw Error("Illegal type reference in "+this.ptr.toString(!0)+": "+this.ptr.responseName);this.ptr.resolvedResponseType=d}else throw Error("illegal service type in "+this.ptr.toString(!0));else if(!(this.ptr instanceof a.Reflect.Message.OneOf||
81
- this.ptr instanceof a.Reflect.Extension||this.ptr instanceof a.Reflect.Enum.Value))throw Error("illegal object in namespace: "+typeof this.ptr+": "+this.ptr);return this.reset()};g.build=function(a){this.reset();this.resolved||(this.resolveAll(),this.resolved=!0,this.result=null);null===this.result&&(this.result=this.ns.build());if(!a)return this.result;a="string"===typeof a?a.split("."):a;for(var c=this.result,g=0;g<a.length;g++)if(c[a[g]])c=c[a[g]];else{c=null;break}return c};g.lookup=function(a,
82
- c){return a?this.ns.resolve(a,c):this.ns};g.toString=function(){return"Builder"};l.Message=function(){};l.Enum=function(){};l.Service=function(){};return l}(c,c.Lang,c.Reflect);c.Map=function(a,c){function h(a){var d=0;return{next:function(){return d<a.length?{done:!1,value:a[d++]}:{done:!0}}}}var p=function(a,d){if(!a.map)throw Error("field is not a map");this.field=a;this.keyElem=new c.Element(a.keyType,null,!0,a.syntax);this.valueElem=new c.Element(a.type,a.resolvedType,!1,a.syntax);this.map={};
83
- Object.defineProperty(this,"size",{get:function(){return Object.keys(this.map).length}});if(d)for(var h=Object.keys(d),f=0;f<h.length;f++){var l=this.keyElem.valueFromString(h[f]),p=this.valueElem.verifyValue(d[h[f]]);this.map[this.keyElem.valueToString(l)]={key:l,value:p}}},l=p.prototype;l.clear=function(){this.map={}};l["delete"]=function(a){a=this.keyElem.valueToString(this.keyElem.verifyValue(a));var d=a in this.map;delete this.map[a];return d};l.entries=function(){for(var a=[],d=Object.keys(this.map),
84
- c=0,f;c<d.length;c++)a.push([(f=this.map[d[c]]).key,f.value]);return h(a)};l.keys=function(){for(var a=[],c=Object.keys(this.map),k=0;k<c.length;k++)a.push(this.map[c[k]].key);return h(a)};l.values=function(){for(var a=[],c=Object.keys(this.map),k=0;k<c.length;k++)a.push(this.map[c[k]].value);return h(a)};l.forEach=function(a,c){for(var h=Object.keys(this.map),f=0,l;f<h.length;f++)a.call(c,(l=this.map[h[f]]).value,l.key,this)};l.set=function(a,c){var h=this.keyElem.verifyValue(a),f=this.valueElem.verifyValue(c);
85
- this.map[this.keyElem.valueToString(h)]={key:h,value:f};return this};l.get=function(a){a=this.keyElem.valueToString(this.keyElem.verifyValue(a));return a in this.map?this.map[a].value:void 0};l.has=function(a){return this.keyElem.valueToString(this.keyElem.verifyValue(a))in this.map};return p}(c,c.Reflect);c.newBuilder=function(a){a=a||{};"undefined"===typeof a.convertFieldsToCamelCase&&(a.convertFieldsToCamelCase=c.convertFieldsToCamelCase);"undefined"===typeof a.populateAccessors&&(a.populateAccessors=
86
- c.populateAccessors);return new c.Builder(a)};c.loadJson=function(a,h,s){if("string"===typeof h||h&&"string"===typeof h.file&&"string"===typeof h.root)s=h,h=null;h&&"object"===typeof h||(h=c.newBuilder());"string"===typeof a&&(a=JSON.parse(a));h["import"](a,s);h.resolveAll();return h};c.loadJsonFile=function(a,h,s){h&&"object"===typeof h?(s=h,h=null):h&&"function"===typeof h||(h=null);if(h)return c.Util.fetch("string"===typeof a?a:a.root+"/"+a.file,function(l){if(null===l)h(Error("Failed to fetch file"));
87
- else try{h(null,c.loadJson(JSON.parse(l),s,a))}catch(g){h(g)}});var p=c.Util.fetch("object"===typeof a?a.root+"/"+a.file:a);return null===p?null:c.loadJson(JSON.parse(p),s,a)};return c});
14
+ BOOL:/^(?:true|false)$/i,ID:/^(?:[1-9][0-9]*|0|0[xX][0-9a-fA-F]+|0[0-7]+)$/,NEGID:/^\-?(?:[1-9][0-9]*|0|0[xX][0-9a-fA-F]+|0[0-7]+)$/,WHITESPACE:/\s/,STRING:/(?:"([^"\\]*(?:\\.[^"\\]*)*)")|(?:'([^'\\]*(?:\\.[^'\\]*)*)')/g,STRING_DQ:/(?:"([^"\\]*(?:\\.[^"\\]*)*)")/g,STRING_SQ:/(?:'([^'\\]*(?:\\.[^'\\]*)*)')/g};c.Reflect=function(b){function c(a,e){if(a&&"number"===typeof a.low&&"number"===typeof a.high&&"boolean"===typeof a.unsigned&&a.low===a.low&&a.high===a.high)return new b.Long(a.low,a.high,"undefined"===
15
+ typeof e?a.unsigned:e);if("string"===typeof a)return b.Long.fromString(a,e||!1,10);if("number"===typeof a)return b.Long.fromNumber(a,e||!1);throw Error("not convertible to Long");}function s(a,e){var m=e.readVarint32(),d=m&7,m=m>>>3;switch(d){case b.WIRE_TYPES.VARINT:do m=e.readUint8();while(128===(m&128));break;case b.WIRE_TYPES.BITS64:e.offset+=8;break;case b.WIRE_TYPES.LDELIM:m=e.readVarint32();e.offset+=m;break;case b.WIRE_TYPES.STARTGROUP:s(m,e);break;case b.WIRE_TYPES.ENDGROUP:if(m===a)return!1;
16
+ throw Error("Illegal GROUPEND after unknown group: "+m+" ("+a+" expected)");case b.WIRE_TYPES.BITS32:e.offset+=4;break;default:throw Error("Illegal wire type in unknown group "+a+": "+d);}return!0}var n={},l=function(a,e,b){this.builder=a;this.parent=e;this.name=b},g=l.prototype;g.fqn=function(){var a=this.name,e=this;do{e=e.parent;if(null==e)break;a=e.name+"."+a}while(1);return a};g.toString=function(a){return(a?this.className+" ":"")+this.fqn()};g.build=function(){throw Error(this.toString(!0)+
17
+ " cannot be built directly");};n.T=l;var d=function(a,e,b,d,r){l.call(this,a,e,b);this.className="Namespace";this.children=[];this.options=d||{};this.syntax=r||"proto2"},g=d.prototype=Object.create(l.prototype);g.getChildren=function(a){a=a||null;if(null==a)return this.children.slice();for(var e=[],b=0,d=this.children.length;b<d;++b)this.children[b]instanceof a&&e.push(this.children[b]);return e};g.addChild=function(a){var e;if(e=this.getChild(a.name))if(e instanceof t.Field&&e.name!==e.originalName&&
18
+ null===this.getChild(e.originalName))e.name=e.originalName;else if(a instanceof t.Field&&a.name!==a.originalName&&null===this.getChild(a.originalName))a.name=a.originalName;else throw Error("Duplicate name in namespace "+this.toString(!0)+": "+a.name);this.children.push(a)};g.getChild=function(a){for(var e="number"===typeof a?"id":"name",b=0,d=this.children.length;b<d;++b)if(this.children[b][e]===a)return this.children[b];return null};g.resolve=function(a,e){var b="string"===typeof a?a.split("."):
19
+ a,d=this,r=0;if(""===b[r]){for(;null!==d.parent;)d=d.parent;r++}do{do{if(!(d instanceof n.Namespace)){d=null;break}d=d.getChild(b[r]);if(!(d&&d instanceof n.T)||e&&!(d instanceof n.Namespace)){d=null;break}r++}while(r<b.length);if(null!=d)break;if(null!==this.parent)return this.parent.resolve(a,e)}while(null!=d);return d};g.qn=function(a){var e=[],b=a;do e.unshift(b.name),b=b.parent;while(null!==b);for(b=1;b<=e.length;b++){var d=e.slice(e.length-b);if(a===this.resolve(d,a instanceof n.Namespace))return d.join(".")}return a.fqn()};
20
+ g.build=function(){for(var a={},b=this.children,m=0,c=b.length,r;m<c;++m)r=b[m],r instanceof d&&(a[r.name]=r.build());Object.defineProperty&&Object.defineProperty(a,"$options",{value:this.buildOpt()});return a};g.buildOpt=function(){for(var a={},b=Object.keys(this.options),d=0,c=b.length;d<c;++d)a[b[d]]=this.options[b[d]];return a};g.getOption=function(a){return"undefined"===typeof a?this.options:"undefined"!==typeof this.options[a]?this.options[a]:null};n.Namespace=d;var k=function(a,e,d,c){this.type=
21
+ a;this.resolvedType=e;this.isMapKey=d;this.syntax=c;if(d&&0>b.MAP_KEY_TYPES.indexOf(a))throw Error("Invalid map key type: "+a.name);},f=k.prototype;k.defaultFieldValue=function(a){"string"===typeof a&&(a=b.TYPES[a]);if("undefined"===typeof a.defaultValue)throw Error("default value for type "+a.name+" is not supported");return a==b.TYPES.bytes?new h(0):a.defaultValue};f.verifyValue=function(a){function e(a,b){throw Error("Illegal value for "+d.toString(!0)+" of type "+d.type.name+": "+a+" ("+b+")");
22
+ }var d=this;switch(this.type){case b.TYPES.int32:case b.TYPES.sint32:case b.TYPES.sfixed32:return("number"!==typeof a||a===a&&0!==a%1)&&e(typeof a,"not an integer"),4294967295<a?a|0:a;case b.TYPES.uint32:case b.TYPES.fixed32:return("number"!==typeof a||a===a&&0!==a%1)&&e(typeof a,"not an integer"),0>a?a>>>0:a;case b.TYPES.int64:case b.TYPES.sint64:case b.TYPES.sfixed64:if(b.Long)try{return c(a,!1)}catch(f){e(typeof a,f.message)}else e(typeof a,"requires Long.js");case b.TYPES.uint64:case b.TYPES.fixed64:if(b.Long)try{return c(a,
23
+ !0)}catch(r){e(typeof a,r.message)}else e(typeof a,"requires Long.js");case b.TYPES.bool:return"boolean"!==typeof a&&e(typeof a,"not a boolean"),a;case b.TYPES["float"]:case b.TYPES["double"]:return"number"!==typeof a&&e(typeof a,"not a number"),a;case b.TYPES.string:return"string"===typeof a||a&&a instanceof String||e(typeof a,"not a string"),""+a;case b.TYPES.bytes:return h.isByteBuffer(a)?a:h.wrap(a,"base64");case b.TYPES["enum"]:for(var v=this.resolvedType.getChildren(b.Reflect.Enum.Value),g=
24
+ 0;g<v.length;g++)if(v[g].name==a||v[g].id==a)return v[g].id;if("proto3"===this.syntax)return("number"!==typeof a||a===a&&0!==a%1)&&e(typeof a,"not an integer"),(4294967295<a||0>a)&&e(typeof a,"not in range for uint32"),a;e(a,"not a valid enum value");case b.TYPES.group:case b.TYPES.message:a&&"object"===typeof a||e(typeof a,"object expected");if(a instanceof this.resolvedType.clazz)return a;if(a instanceof b.Builder.Message){var v={},g;for(g in a)a.hasOwnProperty(g)&&(v[g]=a[g]);a=v}return new this.resolvedType.clazz(a)}throw Error("[INTERNAL] Illegal value for "+
25
+ this.toString(!0)+": "+a+" (undefined type "+this.type+")");};f.calculateLength=function(a,e){if(null===e)return 0;var d;switch(this.type){case b.TYPES.int32:return 0>e?h.calculateVarint64(e):h.calculateVarint32(e);case b.TYPES.uint32:return h.calculateVarint32(e);case b.TYPES.sint32:return h.calculateVarint32(h.zigZagEncode32(e));case b.TYPES.fixed32:case b.TYPES.sfixed32:case b.TYPES["float"]:return 4;case b.TYPES.int64:case b.TYPES.uint64:return h.calculateVarint64(e);case b.TYPES.sint64:return h.calculateVarint64(h.zigZagEncode64(e));
26
+ case b.TYPES.fixed64:case b.TYPES.sfixed64:return 8;case b.TYPES.bool:return 1;case b.TYPES["enum"]:return h.calculateVarint32(e);case b.TYPES["double"]:return 8;case b.TYPES.string:return d=h.calculateUTF8Bytes(e),h.calculateVarint32(d)+d;case b.TYPES.bytes:if(0>e.remaining())throw Error("Illegal value for "+this.toString(!0)+": "+e.remaining()+" bytes remaining");return h.calculateVarint32(e.remaining())+e.remaining();case b.TYPES.message:return d=this.resolvedType.calculate(e),h.calculateVarint32(d)+
27
+ d;case b.TYPES.group:return d=this.resolvedType.calculate(e),d+h.calculateVarint32(a<<3|b.WIRE_TYPES.ENDGROUP)}throw Error("[INTERNAL] Illegal value to encode in "+this.toString(!0)+": "+e+" (unknown type)");};f.encodeValue=function(a,e,d){if(null===e)return d;switch(this.type){case b.TYPES.int32:0>e?d.writeVarint64(e):d.writeVarint32(e);break;case b.TYPES.uint32:d.writeVarint32(e);break;case b.TYPES.sint32:d.writeVarint32ZigZag(e);break;case b.TYPES.fixed32:d.writeUint32(e);break;case b.TYPES.sfixed32:d.writeInt32(e);
28
+ break;case b.TYPES.int64:case b.TYPES.uint64:d.writeVarint64(e);break;case b.TYPES.sint64:d.writeVarint64ZigZag(e);break;case b.TYPES.fixed64:d.writeUint64(e);break;case b.TYPES.sfixed64:d.writeInt64(e);break;case b.TYPES.bool:"string"===typeof e?d.writeVarint32("false"===e.toLowerCase()?0:!!e):d.writeVarint32(e?1:0);break;case b.TYPES["enum"]:d.writeVarint32(e);break;case b.TYPES["float"]:d.writeFloat32(e);break;case b.TYPES["double"]:d.writeFloat64(e);break;case b.TYPES.string:d.writeVString(e);
29
+ break;case b.TYPES.bytes:if(0>e.remaining())throw Error("Illegal value for "+this.toString(!0)+": "+e.remaining()+" bytes remaining");a=e.offset;d.writeVarint32(e.remaining());d.append(e);e.offset=a;break;case b.TYPES.message:a=(new h).LE();this.resolvedType.encode(e,a);d.writeVarint32(a.offset);d.append(a.flip());break;case b.TYPES.group:this.resolvedType.encode(e,d);d.writeVarint32(a<<3|b.WIRE_TYPES.ENDGROUP);break;default:throw Error("[INTERNAL] Illegal value to encode in "+this.toString(!0)+": "+
30
+ e+" (unknown type)");}return d};f.decode=function(a,e,d){if(e!=this.type.wireType)throw Error("Unexpected wire type for element");switch(this.type){case b.TYPES.int32:return a.readVarint32()|0;case b.TYPES.uint32:return a.readVarint32()>>>0;case b.TYPES.sint32:return a.readVarint32ZigZag()|0;case b.TYPES.fixed32:return a.readUint32()>>>0;case b.TYPES.sfixed32:return a.readInt32()|0;case b.TYPES.int64:return a.readVarint64();case b.TYPES.uint64:return a.readVarint64().toUnsigned();case b.TYPES.sint64:return a.readVarint64ZigZag();
31
+ case b.TYPES.fixed64:return a.readUint64();case b.TYPES.sfixed64:return a.readInt64();case b.TYPES.bool:return!!a.readVarint32();case b.TYPES["enum"]:return a.readVarint32();case b.TYPES["float"]:return a.readFloat();case b.TYPES["double"]:return a.readDouble();case b.TYPES.string:return a.readVString();case b.TYPES.bytes:d=a.readVarint32();if(a.remaining()<d)throw Error("Illegal number of bytes for "+this.toString(!0)+": "+d+" required but got only "+a.remaining());e=a.clone();e.limit=e.offset+d;
32
+ a.offset+=d;return e;case b.TYPES.message:return d=a.readVarint32(),this.resolvedType.decode(a,d);case b.TYPES.group:return this.resolvedType.decode(a,-1,d)}throw Error("[INTERNAL] Illegal decode type");};f.valueFromString=function(a){if(!this.isMapKey)throw Error("valueFromString() called on non-map-key element");switch(this.type){case b.TYPES.int32:case b.TYPES.sint32:case b.TYPES.sfixed32:case b.TYPES.uint32:case b.TYPES.fixed32:return this.verifyValue(parseInt(a));case b.TYPES.int64:case b.TYPES.sint64:case b.TYPES.sfixed64:case b.TYPES.uint64:case b.TYPES.fixed64:return this.verifyValue(a);
33
+ case b.TYPES.bool:return"true"===a;case b.TYPES.string:return this.verifyValue(a);case b.TYPES.bytes:return h.fromBinary(a)}};f.valueToString=function(a){if(!this.isMapKey)throw Error("valueToString() called on non-map-key element");return this.type===b.TYPES.bytes?a.toString("binary"):a.toString()};n.Element=k;var t=function(a,b,c,f,r,g){d.call(this,a,b,c,f,g);this.className="Message";this.extensions=void 0;this.clazz=null;this.isGroup=!!r;this._fieldsByName=this._fieldsById=this._fields=null},f=
34
+ t.prototype=Object.create(d.prototype);f.build=function(a){if(this.clazz&&!a)return this.clazz;a=function(a,b){function e(b,d,c,f){if(null===b||"object"!==typeof b){if(f&&f instanceof a.Reflect.Enum){var m=a.Reflect.Enum.getName(f.object,b);if(null!==m)return m}return b}if(h.isByteBuffer(b))return d?b.toBase64():b.toBuffer();if(a.Long.isLong(b))return c?b.toString():a.Long.fromValue(b);var g;if(Array.isArray(b))return g=[],b.forEach(function(a,b){g[b]=e(a,d,c,f)}),g;g={};if(b instanceof a.Map){for(var m=
35
+ b.entries(),k=m.next();!k.done;k=m.next())g[b.keyElem.valueToString(k.value[0])]=e(k.value[1],d,c,b.valueElem.resolvedType);return g}var m=b.$type,k=void 0,q;for(q in b)b.hasOwnProperty(q)&&(m&&(k=m.getChild(q))?g[q]=e(b[q],d,c,k.resolvedType):g[q]=e(b[q],d,c));return g}var d=b.getChildren(a.Reflect.Message.Field),c=b.getChildren(a.Reflect.Message.OneOf),m=function(e,f){a.Builder.Message.call(this);for(var g=0,k=c.length;g<k;++g)this[c[g].name]=null;g=0;for(k=d.length;g<k;++g){var q=d[g];this[q.name]=
36
+ q.repeated?[]:q.map?new a.Map(q):null;!q.required&&"proto3"!==b.syntax||null===q.defaultValue||(this[q.name]=q.defaultValue)}if(0<arguments.length)if(1!==arguments.length||null===e||"object"!==typeof e||!("function"!==typeof e.encode||e instanceof m)||Array.isArray(e)||e instanceof a.Map||h.isByteBuffer(e)||e instanceof ArrayBuffer||a.Long&&e instanceof a.Long)for(g=0,k=arguments.length;g<k;++g)"undefined"!==typeof(q=arguments[g])&&this.$set(d[g].name,q);else this.$set(e)},f=m.prototype=Object.create(a.Builder.Message.prototype);
37
+ f.add=function(e,d,c){var f=b._fieldsByName[e];if(!c){if(!f)throw Error(this+"#"+e+" is undefined");if(!(f instanceof a.Reflect.Message.Field))throw Error(this+"#"+e+" is not a field: "+f.toString(!0));if(!f.repeated)throw Error(this+"#"+e+" is not a repeated field");d=f.verifyValue(d,!0)}null===this[e]&&(this[e]=[]);this[e].push(d);return this};f.$add=f.add;f.set=function(e,d,f){if(e&&"object"===typeof e){f=d;for(var c in e)e.hasOwnProperty(c)&&"undefined"!==typeof(d=e[c])&&this.$set(c,d,f);return this}c=
38
+ b._fieldsByName[e];if(f)this[e]=d;else{if(!c)throw Error(this+"#"+e+" is not a field: undefined");if(!(c instanceof a.Reflect.Message.Field))throw Error(this+"#"+e+" is not a field: "+c.toString(!0));this[c.name]=d=c.verifyValue(d)}c&&c.oneof&&(f=this[c.oneof.name],null!==d?(null!==f&&f!==c.name&&(this[f]=null),this[c.oneof.name]=c.name):f===e&&(this[c.oneof.name]=null));return this};f.$set=f.set;f.get=function(e,d){if(d)return this[e];var c=b._fieldsByName[e];if(!(c&&c instanceof a.Reflect.Message.Field))throw Error(this+
39
+ "#"+e+" is not a field: undefined");if(!(c instanceof a.Reflect.Message.Field))throw Error(this+"#"+e+" is not a field: "+c.toString(!0));return this[c.name]};f.$get=f.get;for(var g=0;g<d.length;g++){var k=d[g];k instanceof a.Reflect.Message.ExtensionField||b.builder.options.populateAccessors&&function(a){var e=a.originalName.replace(/(_[a-zA-Z])/g,function(a){return a.toUpperCase().replace("_","")}),e=e.substring(0,1).toUpperCase()+e.substring(1),d=a.originalName.replace(/([A-Z])/g,function(a){return"_"+
40
+ a}),c=function(b,e){this[a.name]=e?b:a.verifyValue(b);return this},m=function(){return this[a.name]};null===b.getChild("set"+e)&&(f["set"+e]=c);null===b.getChild("set_"+d)&&(f["set_"+d]=c);null===b.getChild("get"+e)&&(f["get"+e]=m);null===b.getChild("get_"+d)&&(f["get_"+d]=m)}(k)}f.encode=function(a,e){"boolean"===typeof a&&(e=a,a=void 0);var d=!1;a||(a=new h,d=!0);var c=a.littleEndian;try{return b.encode(this,a.LE(),e),(d?a.flip():a).LE(c)}catch(f){throw a.LE(c),f;}};m.encode=function(a,b,e){return(new m(a)).encode(b,
41
+ e)};f.calculate=function(){return b.calculate(this)};f.encodeDelimited=function(a,e){var d=!1;a||(a=new h,d=!0);var c=(new h).LE();b.encode(this,c,e).flip();a.writeVarint32(c.remaining());a.append(c);return d?a.flip():a};f.encodeAB=function(){try{return this.encode().toArrayBuffer()}catch(a){throw a.encoded&&(a.encoded=a.encoded.toArrayBuffer()),a;}};f.toArrayBuffer=f.encodeAB;f.encodeNB=function(){try{return this.encode().toBuffer()}catch(a){throw a.encoded&&(a.encoded=a.encoded.toBuffer()),a;}};
42
+ f.toBuffer=f.encodeNB;f.encode64=function(){try{return this.encode().toBase64()}catch(a){throw a.encoded&&(a.encoded=a.encoded.toBase64()),a;}};f.toBase64=f.encode64;f.encodeHex=function(){try{return this.encode().toHex()}catch(a){throw a.encoded&&(a.encoded=a.encoded.toHex()),a;}};f.toHex=f.encodeHex;f.toRaw=function(a,b){return e(this,!!a,!!b,this.$type)};f.encodeJSON=function(){return JSON.stringify(e(this,!0,!0,this.$type))};m.decode=function(a,e,d){"string"===typeof e&&(d=e);"string"===typeof a&&
43
+ (a=h.wrap(a,d?d:"base64"));a=h.isByteBuffer(a)?a:h.wrap(a);e=a.littleEndian;try{var c=b.decode(a.LE());a.LE(e);return c}catch(f){throw a.LE(e),f;}};m.decodeDelimited=function(a,e){"string"===typeof a&&(a=h.wrap(a,e?e:"base64"));a=h.isByteBuffer(a)?a:h.wrap(a);if(1>a.remaining())return null;var d=a.offset,c=a.readVarint32();if(a.remaining()<c)return a.offset=d,null;try{var f=b.decode(a.slice(a.offset,a.offset+c).LE());a.offset+=c;return f}catch(m){throw a.offset+=c,m;}};m.decode64=function(a){return m.decode(a,
44
+ "base64")};m.decodeHex=function(a){return m.decode(a,"hex")};m.decodeJSON=function(a){return new m(JSON.parse(a))};f.toString=function(){return b.toString()};Object.defineProperty&&(Object.defineProperty(m,"$options",{value:b.buildOpt()}),Object.defineProperty(f,"$options",{value:m.$options}),Object.defineProperty(m,"$type",{value:b}),Object.defineProperty(f,"$type",{value:b}));return m}(b,this);this._fields=[];this._fieldsById={};this._fieldsByName={};for(var e=0,d=this.children.length,c;e<d;e++)if(c=
45
+ this.children[e],c instanceof x||c instanceof t||c instanceof A){if(a.hasOwnProperty(c.name))throw Error("Illegal reflect child of "+this.toString(!0)+": "+c.toString(!0)+" cannot override static property '"+c.name+"'");a[c.name]=c.build()}else if(c instanceof t.Field)c.build(),this._fields.push(c),this._fieldsById[c.id]=c,this._fieldsByName[c.name]=c;else if(!(c instanceof t.OneOf||c instanceof w))throw Error("Illegal reflect child of "+this.toString(!0)+": "+this.children[e].toString(!0));return this.clazz=
46
+ a};f.encode=function(a,b,d){for(var c=null,f,g=0,k=this._fields.length,h;g<k;++g)f=this._fields[g],h=a[f.name],f.required&&null===h?null===c&&(c=f):f.encode(d?h:f.verifyValue(h),b,a);if(null!==c)throw a=Error("Missing at least one required field for "+this.toString(!0)+": "+c),a.encoded=b,a;return b};f.calculate=function(a){for(var b=0,d=0,c=this._fields.length,f,g;d<c;++d){f=this._fields[d];g=a[f.name];if(f.required&&null===g)throw Error("Missing at least one required field for "+this.toString(!0)+
47
+ ": "+f);b+=f.calculate(g,a)}return b};f.decode=function(a,e,d){e="number"===typeof e?e:-1;for(var c=a.offset,f=new this.clazz,g,k,h;a.offset<c+e||-1===e&&0<a.remaining();){g=a.readVarint32();k=g&7;h=g>>>3;if(k===b.WIRE_TYPES.ENDGROUP){if(h!==d)throw Error("Illegal group end indicator for "+this.toString(!0)+": "+h+" ("+(d?d+" expected":"not a group")+")");break}if(g=this._fieldsById[h])g.repeated&&!g.options.packed?f[g.name].push(g.decode(k,a)):g.map?(k=g.decode(k,a),f[g.name].set(k[0],k[1])):(f[g.name]=
48
+ g.decode(k,a),g.oneof&&(k=f[g.oneof.name],null!==k&&k!==g.name&&(f[k]=null),f[g.oneof.name]=g.name));else switch(k){case b.WIRE_TYPES.VARINT:a.readVarint32();break;case b.WIRE_TYPES.BITS32:a.offset+=4;break;case b.WIRE_TYPES.BITS64:a.offset+=8;break;case b.WIRE_TYPES.LDELIM:g=a.readVarint32();a.offset+=g;break;case b.WIRE_TYPES.STARTGROUP:for(;s(h,a););break;default:throw Error("Illegal wire type for unknown field "+h+" in "+this.toString(!0)+"#decode: "+k);}}a=0;for(e=this._fields.length;a<e;++a)if(g=
49
+ this._fields[a],null===f[g.name])if("proto3"===this.syntax)f[g.name]=g.defaultValue;else{if(g.required)throw a=Error("Missing at least one required field for "+this.toString(!0)+": "+g.name),a.decoded=f,a;b.populateDefaults&&null!==g.defaultValue&&(f[g.name]=g.defaultValue)}return f};n.Message=t;var z=function(a,e,d,c,f,g,k,h,w,p){l.call(this,a,e,g);this.className="Message.Field";this.required="required"===d;this.repeated="repeated"===d;this.map="map"===d;this.keyType=c||null;this.type=f;this.resolvedType=
50
+ null;this.id=k;this.options=h||{};this.defaultValue=null;this.oneof=w||null;this.syntax=p||"proto2";this.originalName=this.name;this.keyElement=this.element=null;!this.builder.options.convertFieldsToCamelCase||this instanceof t.ExtensionField||(this.name=b.Util.toCamelCase(this.name))},f=z.prototype=Object.create(l.prototype);f.build=function(){this.element=new k(this.type,this.resolvedType,!1,this.syntax);this.map&&(this.keyElement=new k(this.keyType,void 0,!0,this.syntax));"proto3"!==this.syntax||
51
+ this.repeated||this.map?"undefined"!==typeof this.options["default"]&&(this.defaultValue=this.verifyValue(this.options["default"])):this.defaultValue=k.defaultFieldValue(this.type)};f.verifyValue=function(a,e){function d(a,b){throw Error("Illegal value for "+c.toString(!0)+" of type "+c.type.name+": "+a+" ("+b+")");}e=e||!1;var c=this;if(null===a)return this.required&&d(typeof a,"required"),"proto3"===this.syntax&&this.type!==b.TYPES.message&&d(typeof a,"proto3 field without field presence cannot be null"),
52
+ null;var f;if(this.repeated&&!e){Array.isArray(a)||(a=[a]);var g=[];for(f=0;f<a.length;f++)g.push(this.element.verifyValue(a[f]));return g}if(this.map&&!e){if(a instanceof b.Map)return a;a instanceof Object||d(typeof a,"expected ProtoBuf.Map or raw object for map field");return new b.Map(this,a)}!this.repeated&&Array.isArray(a)&&d(typeof a,"no array expected");return this.element.verifyValue(a)};f.hasWirePresence=function(a,e){if("proto3"!==this.syntax)return null!==a;if(this.oneof&&e[this.oneof.name]===
53
+ this.name)return!0;switch(this.type){case b.TYPES.int32:case b.TYPES.sint32:case b.TYPES.sfixed32:case b.TYPES.uint32:case b.TYPES.fixed32:return 0!==a;case b.TYPES.int64:case b.TYPES.sint64:case b.TYPES.sfixed64:case b.TYPES.uint64:case b.TYPES.fixed64:return 0!==a.low||0!==a.high;case b.TYPES.bool:return a;case b.TYPES["float"]:case b.TYPES["double"]:return 0!==a;case b.TYPES.string:return 0<a.length;case b.TYPES.bytes:return 0<a.remaining();case b.TYPES["enum"]:return 0!==a;case b.TYPES.message:return null!==
54
+ a;default:return!0}};f.encode=function(a,e,d){if(null===this.type||"object"!==typeof this.type)throw Error("[INTERNAL] Unresolved type in "+this.toString(!0)+": "+this.type);if(null===a||this.repeated&&0==a.length)return e;try{if(this.repeated){var c;if(this.options.packed&&0<=b.PACKABLE_WIRE_TYPES.indexOf(this.type.wireType)){e.writeVarint32(this.id<<3|b.WIRE_TYPES.LDELIM);e.ensureCapacity(e.offset+=1);var f=e.offset;for(c=0;c<a.length;c++)this.element.encodeValue(this.id,a[c],e);var g=e.offset-
55
+ f,k=h.calculateVarint32(g);if(1<k){var w=e.slice(f,e.offset),f=f+(k-1);e.offset=f;e.append(w)}e.writeVarint32(g,f-k)}else for(c=0;c<a.length;c++)e.writeVarint32(this.id<<3|this.type.wireType),this.element.encodeValue(this.id,a[c],e)}else this.map?a.forEach(function(a,d,c){c=h.calculateVarint32(8|this.keyType.wireType)+this.keyElement.calculateLength(1,d)+h.calculateVarint32(16|this.type.wireType)+this.element.calculateLength(2,a);e.writeVarint32(this.id<<3|b.WIRE_TYPES.LDELIM);e.writeVarint32(c);
56
+ e.writeVarint32(8|this.keyType.wireType);this.keyElement.encodeValue(1,d,e);e.writeVarint32(16|this.type.wireType);this.element.encodeValue(2,a,e)},this):this.hasWirePresence(a,d)&&(e.writeVarint32(this.id<<3|this.type.wireType),this.element.encodeValue(this.id,a,e))}catch(t){throw Error("Illegal value for "+this.toString(!0)+": "+a+" ("+t+")");}return e};f.calculate=function(a,d){a=this.verifyValue(a);if(null===this.type||"object"!==typeof this.type)throw Error("[INTERNAL] Unresolved type in "+this.toString(!0)+
57
+ ": "+this.type);if(null===a||this.repeated&&0==a.length)return 0;var c=0;try{if(this.repeated){var f,g;if(this.options.packed&&0<=b.PACKABLE_WIRE_TYPES.indexOf(this.type.wireType)){c+=h.calculateVarint32(this.id<<3|b.WIRE_TYPES.LDELIM);for(f=g=0;f<a.length;f++)g+=this.element.calculateLength(this.id,a[f]);c+=h.calculateVarint32(g);c+=g}else for(f=0;f<a.length;f++)c+=h.calculateVarint32(this.id<<3|this.type.wireType),c+=this.element.calculateLength(this.id,a[f])}else this.map?a.forEach(function(a,
58
+ d,e){a=h.calculateVarint32(8|this.keyType.wireType)+this.keyElement.calculateLength(1,d)+h.calculateVarint32(16|this.type.wireType)+this.element.calculateLength(2,a);c+=h.calculateVarint32(this.id<<3|b.WIRE_TYPES.LDELIM);c+=h.calculateVarint32(a);c+=a},this):this.hasWirePresence(a,d)&&(c+=h.calculateVarint32(this.id<<3|this.type.wireType),c+=this.element.calculateLength(this.id,a))}catch(k){throw Error("Illegal value for "+this.toString(!0)+": "+a+" ("+k+")");}return c};f.decode=function(a,d,c){if(!(!this.map&&
59
+ a==this.type.wireType||!c&&this.repeated&&this.options.packed&&a==b.WIRE_TYPES.LDELIM||this.map&&a==b.WIRE_TYPES.LDELIM))throw Error("Illegal wire type for field "+this.toString(!0)+": "+a+" ("+this.type.wireType+" expected)");if(a==b.WIRE_TYPES.LDELIM&&this.repeated&&this.options.packed&&0<=b.PACKABLE_WIRE_TYPES.indexOf(this.type.wireType)&&!c){a=d.readVarint32();a=d.offset+a;for(c=[];d.offset<a;)c.push(this.decode(this.type.wireType,d,!0));return c}if(this.map){var f=k.defaultFieldValue(this.keyType);
60
+ c=k.defaultFieldValue(this.type);a=d.readVarint32();if(d.remaining()<a)throw Error("Illegal number of bytes for "+this.toString(!0)+": "+a+" required but got only "+d.remaining());var g=d.clone();g.limit=g.offset+a;for(d.offset+=a;0<g.remaining();)if(d=g.readVarint32(),a=d&7,d>>>=3,1===d)f=this.keyElement.decode(g,a,d);else if(2===d)c=this.element.decode(g,a,d);else throw Error("Unexpected tag in map field key/value submessage");return[f,c]}return this.element.decode(d,a,this.id)};n.Message.Field=
61
+ z;f=function(a,d,b,c,f,g,k){z.call(this,a,d,b,null,c,f,g,k)};f.prototype=Object.create(z.prototype);n.Message.ExtensionField=f;n.Message.OneOf=function(a,d,b){l.call(this,a,d,b);this.fields=[]};var x=function(a,b,c,f,g){d.call(this,a,b,c,f,g);this.className="Enum";this.object=null};x.getName=function(a,d){for(var b=Object.keys(a),c=0,f;c<b.length;++c)if(a[f=b[c]]===d)return f;return null};(x.prototype=Object.create(d.prototype)).build=function(a){if(this.object&&!a)return this.object;a=new b.Builder.Enum;
62
+ for(var d=this.getChildren(x.Value),c=0,f=d.length;c<f;++c)a[d[c].name]=d[c].id;Object.defineProperty&&Object.defineProperty(a,"$options",{value:this.buildOpt(),enumerable:!1});return this.object=a};n.Enum=x;f=function(a,d,b,c){l.call(this,a,d,b);this.className="Enum.Value";this.id=c};f.prototype=Object.create(l.prototype);n.Enum.Value=f;var w=function(a,d,b,c){l.call(this,a,d,b);this.field=c};w.prototype=Object.create(l.prototype);n.Extension=w;var A=function(a,b,c,f){d.call(this,a,b,c,f);this.className=
63
+ "Service";this.clazz=null};(A.prototype=Object.create(d.prototype)).build=function(a){return this.clazz&&!a?this.clazz:this.clazz=function(a,d){for(var b=function(b){a.Builder.Service.call(this);this.rpcImpl=b||function(a,b,d){setTimeout(d.bind(this,Error("Not implemented, see: https://github.com/dcodeIO/ProtoBuf.js/wiki/Services")),0)}},c=b.prototype=Object.create(a.Builder.Service.prototype),f=d.getChildren(a.Reflect.Service.RPCMethod),g=0;g<f.length;g++)(function(a){c[a.name]=function(b,c){try{try{b=
64
+ a.resolvedRequestType.clazz.decode(h.wrap(b))}catch(e){if(!(e instanceof TypeError))throw e;}if(null===b||"object"!==typeof b)throw Error("Illegal arguments");b instanceof a.resolvedRequestType.clazz||(b=new a.resolvedRequestType.clazz(b));this.rpcImpl(a.fqn(),b,function(b,e){if(b)c(b);else{null===e&&(e="");try{e=a.resolvedResponseType.clazz.decode(e)}catch(f){}e&&e instanceof a.resolvedResponseType.clazz?c(null,e):c(Error("Illegal response type received in service method "+d.name+"#"+a.name))}})}catch(f){setTimeout(c.bind(this,
65
+ f),0)}};b[a.name]=function(d,c,e){(new b(d))[a.name](c,e)};Object.defineProperty&&(Object.defineProperty(b[a.name],"$options",{value:a.buildOpt()}),Object.defineProperty(c[a.name],"$options",{value:b[a.name].$options}))})(f[g]);Object.defineProperty&&(Object.defineProperty(b,"$options",{value:d.buildOpt()}),Object.defineProperty(c,"$options",{value:b.$options}),Object.defineProperty(b,"$type",{value:d}),Object.defineProperty(c,"$type",{value:d}));return b}(b,this)};n.Service=A;var u=function(a,b,
66
+ d,c){l.call(this,a,b,d);this.className="Service.Method";this.options=c||{}};(u.prototype=Object.create(l.prototype)).buildOpt=g.buildOpt;n.Service.Method=u;g=function(a,b,d,c,f,g,k,h){u.call(this,a,b,d,h);this.className="Service.RPCMethod";this.requestName=c;this.responseName=f;this.requestStream=g;this.responseStream=k;this.resolvedResponseType=this.resolvedRequestType=null};g.prototype=Object.create(u.prototype);n.Service.RPCMethod=g;return n}(c);c.Builder=function(b,c,h){function n(b){b.messages&&
67
+ b.messages.forEach(function(c){c.syntax=b.syntax;n(c)});b.enums&&b.enums.forEach(function(c){c.syntax=b.syntax})}var l=function(b){this.ptr=this.ns=new h.Namespace(this,null,"");this.resolved=!1;this.result=null;this.files={};this.importRoot=null;this.options=b||{}},g=l.prototype;l.isMessage=function(b){return"string"!==typeof b.name||"undefined"!==typeof b.values||"undefined"!==typeof b.rpc?!1:!0};l.isMessageField=function(b){return"string"!==typeof b.rule||"string"!==typeof b.name||"string"!==typeof b.type||
68
+ "undefined"===typeof b.id?!1:!0};l.isEnum=function(b){return"string"===typeof b.name&&"undefined"!==typeof b.values&&Array.isArray(b.values)&&0!==b.values.length?!0:!1};l.isService=function(b){return"string"===typeof b.name&&"object"===typeof b.rpc&&b.rpc?!0:!1};l.isExtend=function(b){return"string"!==typeof b.ref?!1:!0};g.reset=function(){this.ptr=this.ns;return this};g.define=function(b){if("string"!==typeof b||!c.TYPEREF.test(b))throw Error("illegal namespace: "+b);b.split(".").forEach(function(b){var d=
69
+ this.ptr.getChild(b);null===d&&this.ptr.addChild(d=new h.Namespace(this,this.ptr,b));this.ptr=d},this);return this};g.create=function(d){if(!d)return this;if(Array.isArray(d)){if(0===d.length)return this;d=d.slice()}else d=[d];for(var c=[d];0<c.length;){d=c.pop();if(!Array.isArray(d))throw Error("not a valid namespace: "+JSON.stringify(d));for(;0<d.length;){var f=d.shift();if(l.isMessage(f)){var g=new h.Message(this,this.ptr,f.name,f.options,f.isGroup,f.syntax),n={};f.oneofs&&Object.keys(f.oneofs).forEach(function(b){g.addChild(n[b]=
70
+ new h.Message.OneOf(this,g,b))},this);f.fields&&f.fields.forEach(function(b){if(null!==g.getChild(b.id|0))throw Error("duplicate or invalid field id in "+g.name+": "+b.id);if(b.options&&"object"!==typeof b.options)throw Error("illegal field options in "+g.name+"#"+b.name);var d=null;if("string"===typeof b.oneof&&!(d=n[b.oneof]))throw Error("illegal oneof in "+g.name+"#"+b.name+": "+b.oneof);b=new h.Message.Field(this,g,b.rule,b.keytype,b.type,b.name,b.id,b.options,d,f.syntax);d&&d.fields.push(b);
71
+ g.addChild(b)},this);var p=[];f.enums&&f.enums.forEach(function(b){p.push(b)});f.messages&&f.messages.forEach(function(b){p.push(b)});f.services&&f.services.forEach(function(b){p.push(b)});f.extensions&&(g.extensions="number"===typeof f.extensions[0]?[f.extensions]:f.extensions);this.ptr.addChild(g);if(0<p.length){c.push(d);d=p;p=null;this.ptr=g;g=null;continue}p=null}else if(l.isEnum(f))g=new h.Enum(this,this.ptr,f.name,f.options,f.syntax),f.values.forEach(function(b){g.addChild(new h.Enum.Value(this,
72
+ g,b.name,b.id))},this),this.ptr.addChild(g);else if(l.isService(f))g=new h.Service(this,this.ptr,f.name,f.options),Object.keys(f.rpc).forEach(function(b){var d=f.rpc[b];g.addChild(new h.Service.RPCMethod(this,g,b,d.request,d.response,!!d.request_stream,!!d.response_stream,d.options))},this),this.ptr.addChild(g);else if(l.isExtend(f))if(g=this.ptr.resolve(f.ref,!0))f.fields.forEach(function(d){if(null!==g.getChild(d.id|0))throw Error("duplicate extended field id in "+g.name+": "+d.id);if(g.extensions){var c=
73
+ !1;g.extensions.forEach(function(a){d.id>=a[0]&&d.id<=a[1]&&(c=!0)});if(!c)throw Error("illegal extended field id in "+g.name+": "+d.id+" (not within valid ranges)");}var f=d.name;this.options.convertFieldsToCamelCase&&(f=b.Util.toCamelCase(f));var f=new h.Message.ExtensionField(this,g,d.rule,d.type,this.ptr.fqn()+"."+f,d.id,d.options),a=new h.Extension(this,this.ptr,d.name,f);f.extension=a;this.ptr.addChild(a);g.addChild(f)},this);else{if(!/\.?google\.protobuf\./.test(f.ref))throw Error("extended message "+
74
+ f.ref+" is not defined");}else throw Error("not a valid definition: "+JSON.stringify(f));g=f=null}d=null;this.ptr=this.ptr.parent}this.resolved=!1;this.result=null;return this};g["import"]=function(d,c){var f="/";if("string"===typeof c){b.Util.IS_NODE&&(c=require("path").resolve(c));if(!0===this.files[c])return this.reset();this.files[c]=!0}else if("object"===typeof c){var g=c.root;b.Util.IS_NODE&&(g=require("path").resolve(g));if(0<=g.indexOf("\\")||0<=c.file.indexOf("\\"))f="\\";g=g+f+c.file;if(!0===
75
+ this.files[g])return this.reset();this.files[g]=!0}if(d.imports&&0<d.imports.length){var h=!1;if("object"===typeof c){if(this.importRoot=c.root,h=!0,g=this.importRoot,c=c.file,0<=g.indexOf("\\")||0<=c.indexOf("\\"))f="\\"}else"string"===typeof c?this.importRoot?g=this.importRoot:0<=c.indexOf("/")?(g=c.replace(/\/[^\/]*$/,""),""===g&&(g="/")):0<=c.indexOf("\\")?(g=c.replace(/\\[^\\]*$/,""),f="\\"):g=".":g=null;for(var l=0;l<d.imports.length;l++)if("string"===typeof d.imports[l]){if(!g)throw Error("cannot determine import root");
76
+ var p=d.imports[l];if("google/protobuf/descriptor.proto"!==p&&(p=g+f+p,!0!==this.files[p])){/\.proto$/i.test(p)&&!b.DotProto&&(p=p.replace(/\.proto$/,".json"));var s=b.Util.fetch(p);if(null===s)throw Error("failed to import '"+p+"' in '"+c+"': file not found");if(/\.json$/i.test(p))this["import"](JSON.parse(s+""),p);else this["import"](b.DotProto.Parser.parse(s),p)}}else if(c)if(/\.(\w+)$/.test(c))this["import"](d.imports[l],c.replace(/^(.+)\.(\w+)$/,function(a,b,d){return b+"_import"+l+"."+d}));
77
+ else this["import"](d.imports[l],c+"_import"+l);else this["import"](d.imports[l]);h&&(this.importRoot=null)}d["package"]&&this.define(d["package"]);d.syntax&&n(d);var u=this.ptr;d.options&&Object.keys(d.options).forEach(function(a){u.options[a]=d.options[a]});d.messages&&(this.create(d.messages),this.ptr=u);d.enums&&(this.create(d.enums),this.ptr=u);d.services&&(this.create(d.services),this.ptr=u);d["extends"]&&this.create(d["extends"]);return this.reset()};g.resolveAll=function(){var d;if(null==
78
+ this.ptr||"object"===typeof this.ptr.type)return this;if(this.ptr instanceof h.Namespace)this.ptr.children.forEach(function(b){this.ptr=b;this.resolveAll()},this);else if(this.ptr instanceof h.Message.Field){if(c.TYPE.test(this.ptr.type))this.ptr.type=b.TYPES[this.ptr.type];else{if(!c.TYPEREF.test(this.ptr.type))throw Error("illegal type reference in "+this.ptr.toString(!0)+": "+this.ptr.type);d=(this.ptr instanceof h.Message.ExtensionField?this.ptr.extension.parent:this.ptr.parent).resolve(this.ptr.type,
79
+ !0);if(!d)throw Error("unresolvable type reference in "+this.ptr.toString(!0)+": "+this.ptr.type);this.ptr.resolvedType=d;if(d instanceof h.Enum){if(this.ptr.type=b.TYPES["enum"],"proto3"===this.ptr.syntax&&"proto3"!==d.syntax)throw Error("proto3 message cannot reference proto2 enum");}else if(d instanceof h.Message)this.ptr.type=d.isGroup?b.TYPES.group:b.TYPES.message;else throw Error("illegal type reference in "+this.ptr.toString(!0)+": "+this.ptr.type);}if(this.ptr.map){if(!c.TYPE.test(this.ptr.keyType))throw Error("illegal key type for map field in "+
80
+ this.ptr.toString(!0)+": "+this.ptr.keyType);this.ptr.keyType=b.TYPES[this.ptr.keyType]}}else if(this.ptr instanceof b.Reflect.Service.Method)if(this.ptr instanceof b.Reflect.Service.RPCMethod){d=this.ptr.parent.resolve(this.ptr.requestName,!0);if(!(d&&d instanceof b.Reflect.Message))throw Error("Illegal type reference in "+this.ptr.toString(!0)+": "+this.ptr.requestName);this.ptr.resolvedRequestType=d;d=this.ptr.parent.resolve(this.ptr.responseName,!0);if(!(d&&d instanceof b.Reflect.Message))throw Error("Illegal type reference in "+
81
+ this.ptr.toString(!0)+": "+this.ptr.responseName);this.ptr.resolvedResponseType=d}else throw Error("illegal service type in "+this.ptr.toString(!0));else if(!(this.ptr instanceof b.Reflect.Message.OneOf||this.ptr instanceof b.Reflect.Extension||this.ptr instanceof b.Reflect.Enum.Value))throw Error("illegal object in namespace: "+typeof this.ptr+": "+this.ptr);return this.reset()};g.build=function(b){this.reset();this.resolved||(this.resolveAll(),this.resolved=!0,this.result=null);null===this.result&&
82
+ (this.result=this.ns.build());if(!b)return this.result;b="string"===typeof b?b.split("."):b;for(var c=this.result,g=0;g<b.length;g++)if(c[b[g]])c=c[b[g]];else{c=null;break}return c};g.lookup=function(b,c){return b?this.ns.resolve(b,c):this.ns};g.toString=function(){return"Builder"};l.Message=function(){};l.Enum=function(){};l.Service=function(){};return l}(c,c.Lang,c.Reflect);c.Map=function(b,c){function h(b){var c=0;return{next:function(){return c<b.length?{done:!1,value:b[c++]}:{done:!0}}}}var n=
83
+ function(b,d){if(!b.map)throw Error("field is not a map");this.field=b;this.keyElem=new c.Element(b.keyType,null,!0,b.syntax);this.valueElem=new c.Element(b.type,b.resolvedType,!1,b.syntax);this.map={};Object.defineProperty(this,"size",{get:function(){return Object.keys(this.map).length}});if(d)for(var h=Object.keys(d),f=0;f<h.length;f++){var l=this.keyElem.valueFromString(h[f]),n=this.valueElem.verifyValue(d[h[f]]);this.map[this.keyElem.valueToString(l)]={key:l,value:n}}},l=n.prototype;l.clear=function(){this.map=
84
+ {}};l["delete"]=function(b){b=this.keyElem.valueToString(this.keyElem.verifyValue(b));var c=b in this.map;delete this.map[b];return c};l.entries=function(){for(var b=[],c=Object.keys(this.map),k=0,f;k<c.length;k++)b.push([(f=this.map[c[k]]).key,f.value]);return h(b)};l.keys=function(){for(var b=[],c=Object.keys(this.map),k=0;k<c.length;k++)b.push(this.map[c[k]].key);return h(b)};l.values=function(){for(var b=[],c=Object.keys(this.map),k=0;k<c.length;k++)b.push(this.map[c[k]].value);return h(b)};l.forEach=
85
+ function(b,c){for(var h=Object.keys(this.map),f=0,l;f<h.length;f++)b.call(c,(l=this.map[h[f]]).value,l.key,this)};l.set=function(b,c){var h=this.keyElem.verifyValue(b),f=this.valueElem.verifyValue(c);this.map[this.keyElem.valueToString(h)]={key:h,value:f};return this};l.get=function(b){b=this.keyElem.valueToString(this.keyElem.verifyValue(b));return b in this.map?this.map[b].value:void 0};l.has=function(b){return this.keyElem.valueToString(this.keyElem.verifyValue(b))in this.map};return n}(c,c.Reflect);
86
+ c.newBuilder=function(b){b=b||{};"undefined"===typeof b.convertFieldsToCamelCase&&(b.convertFieldsToCamelCase=c.convertFieldsToCamelCase);"undefined"===typeof b.populateAccessors&&(b.populateAccessors=c.populateAccessors);return new c.Builder(b)};c.loadJson=function(b,h,s){if("string"===typeof h||h&&"string"===typeof h.file&&"string"===typeof h.root)s=h,h=null;h&&"object"===typeof h||(h=c.newBuilder());"string"===typeof b&&(b=JSON.parse(b));h["import"](b,s);h.resolveAll();return h};c.loadJsonFile=
87
+ function(b,h,s){h&&"object"===typeof h?(s=h,h=null):h&&"function"===typeof h||(h=null);if(h)return c.Util.fetch("string"===typeof b?b:b.root+"/"+b.file,function(l){if(null===l)h(Error("Failed to fetch file"));else try{h(null,c.loadJson(JSON.parse(l),s,b))}catch(g){h(g)}});var n=c.Util.fetch("object"===typeof b?b.root+"/"+b.file:b);return null===n?null:c.loadJson(JSON.parse(n),s,b)};return c});
Binary file