protobufjs 4.1.3 → 5.0.3

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 (80) hide show
  1. package/.travis.yml +3 -1
  2. package/README.md +147 -25
  3. package/bin/pbjs +2 -2
  4. package/bower.json +3 -3
  5. package/cli/pbjs/targets/amd.js +1 -1
  6. package/cli/pbjs/targets/json.js +9 -1
  7. package/cli/pbjs/targets/proto.js +48 -24
  8. package/cli/pbjs/util.js +1 -1
  9. package/cli/pbjs.js +9 -2
  10. package/dist/README.md +10 -10
  11. package/dist/{ProtoBuf-light.js → protobuf-light.js} +92 -37
  12. package/dist/protobuf-light.min.js +94 -0
  13. package/dist/protobuf-light.min.js.gz +0 -0
  14. package/dist/protobuf-light.min.map +8 -0
  15. package/dist/{ProtoBuf.js → protobuf.js} +150 -60
  16. package/dist/protobuf.min.js +116 -0
  17. package/dist/protobuf.min.js.gz +0 -0
  18. package/dist/protobuf.min.map +8 -0
  19. package/docs/ProtoBuf.Builder.Message.html +106 -37
  20. package/docs/ProtoBuf.Builder.Service.html +9 -9
  21. package/docs/ProtoBuf.Builder.html +22 -22
  22. package/docs/ProtoBuf.DotProto.Parser.html +7 -7
  23. package/docs/ProtoBuf.DotProto.Tokenizer.html +11 -11
  24. package/docs/ProtoBuf.DotProto.html +2 -2
  25. package/docs/ProtoBuf.Map.html +6 -6
  26. package/docs/ProtoBuf.Reflect.Element.html +104 -8
  27. package/docs/ProtoBuf.Reflect.Enum.Value.html +10 -10
  28. package/docs/ProtoBuf.Reflect.Enum.html +21 -21
  29. package/docs/ProtoBuf.Reflect.Extension.html +3 -3
  30. package/docs/ProtoBuf.Reflect.Message.ExtensionField.html +29 -29
  31. package/docs/ProtoBuf.Reflect.Message.Field.html +28 -28
  32. package/docs/ProtoBuf.Reflect.Message.OneOf.html +10 -10
  33. package/docs/ProtoBuf.Reflect.Message.html +31 -28
  34. package/docs/ProtoBuf.Reflect.Namespace.html +19 -19
  35. package/docs/ProtoBuf.Reflect.Service.Method.html +11 -11
  36. package/docs/ProtoBuf.Reflect.Service.RPCMethod.html +17 -17
  37. package/docs/ProtoBuf.Reflect.Service.html +20 -20
  38. package/docs/ProtoBuf.Reflect.T.html +9 -9
  39. package/docs/ProtoBuf.Reflect.html +2 -2
  40. package/docs/ProtoBuf.Util.html +6 -6
  41. package/docs/ProtoBuf.html +28 -28
  42. package/docs/ProtoBuf.js.html +151 -61
  43. package/docs/index.html +1 -1
  44. package/donate.png +0 -0
  45. package/examples/websocket/server.js +4 -4
  46. package/externs/{ProtoBuf.js → protobuf.js} +25 -14
  47. package/index.js +1 -18
  48. package/jsdoc.json +1 -1
  49. package/package.json +11 -11
  50. package/protobuf.png +0 -0
  51. package/scripts/build.js +5 -10
  52. package/src/ProtoBuf/Builder/Message.js +17 -8
  53. package/src/ProtoBuf/Builder/Service.js +3 -0
  54. package/src/ProtoBuf/Builder.js +34 -10
  55. package/src/ProtoBuf/DotProto/Parser.js +58 -23
  56. package/src/ProtoBuf/Lang.js +2 -2
  57. package/src/ProtoBuf/Reflect/Element.js +17 -4
  58. package/src/ProtoBuf/Reflect/Message/Field.js +6 -5
  59. package/src/ProtoBuf/Reflect/Message.js +9 -4
  60. package/src/{bower.json → bower.json.in} +2 -2
  61. package/src/google/protobuf/descriptor.json +55 -15
  62. package/src/{ProtoBuf.js → protobuf.js} +0 -0
  63. package/src/wrap.js +4 -4
  64. package/tests/complex.json +8 -1
  65. package/tests/imports-weak.proto +7 -0
  66. package/tests/suite.js +107 -82
  67. package/.npmignore +0 -3
  68. package/ProtoBuf.png +0 -0
  69. package/dist/ProtoBuf-light.min.js +0 -87
  70. package/dist/ProtoBuf-light.min.js.gz +0 -0
  71. package/dist/ProtoBuf-light.min.map +0 -8
  72. package/dist/ProtoBuf.min.js +0 -108
  73. package/dist/ProtoBuf.min.js.gz +0 -0
  74. package/dist/ProtoBuf.min.map +0 -8
  75. package/examples/protoify/.npmignore +0 -2
  76. package/examples/websocket/.npmignore +0 -3
  77. package/externs/ByteBuffer.js +0 -767
  78. package/externs/Long.js +0 -328
  79. package/tests/gtfs-realtime.proto +0 -552
  80. package/webpack.config.js +0 -9
@@ -15,14 +15,14 @@
15
15
  */
16
16
 
17
17
  /**
18
- * @license ProtoBuf.js (c) 2013 Daniel Wirtz <dcode@dcode.io>
18
+ * @license protobuf.js (c) 2013 Daniel Wirtz <dcode@dcode.io>
19
19
  * Released under the Apache License, Version 2.0
20
- * see: https://github.com/dcodeIO/ProtoBuf.js for details
20
+ * see: https://github.com/dcodeIO/protobuf.js for details
21
21
  */
22
22
  (function(global, factory) {
23
23
 
24
24
  /* AMD */ if (typeof define === 'function' && define["amd"])
25
- define(["ByteBuffer"], factory);
25
+ define(["bytebuffer"], factory);
26
26
  /* CommonJS */ else if (typeof require === "function" && typeof module === "object" && module && module["exports"])
27
27
  module["exports"] = factory(require("bytebuffer"), true);
28
28
  /* Global */ else
@@ -57,7 +57,7 @@
57
57
  * @const
58
58
  * @expose
59
59
  */
60
- ProtoBuf.VERSION = "4.1.3";
60
+ ProtoBuf.VERSION = "5.0.3";
61
61
 
62
62
  /**
63
63
  * Wire types.
@@ -429,10 +429,10 @@
429
429
  TYPEDEF: /^[a-zA-Z][a-zA-Z_0-9]*$/,
430
430
 
431
431
  // Type references
432
- TYPEREF: /^(?:\.?[a-zA-Z_][a-zA-Z_0-9]*)+$/,
432
+ TYPEREF: /^(?:\.?[a-zA-Z_][a-zA-Z_0-9]*)(?:\.[a-zA-Z_][a-zA-Z_0-9]*)*$/,
433
433
 
434
434
  // Fully qualified type references
435
- FQTYPEREF: /^(?:\.[a-zA-Z][a-zA-Z_0-9]*)+$/,
435
+ FQTYPEREF: /^(?:\.[a-zA-Z_][a-zA-Z_0-9]*)+$/,
436
436
 
437
437
  // All numbers
438
438
  NUMBER: /^-?(?:[1-9][0-9]*|0|0[xX][0-9a-fA-F]+|0[0-7]+|([0-9]*(\.[0-9]*)?([Ee][+-]?[0-9]+)?)|inf|nan)$/,
@@ -801,9 +801,11 @@
801
801
  * converted to string form if so.
802
802
  * @param {string} syntax Syntax level of defining message type, e.g.,
803
803
  * proto2 or proto3.
804
+ * @param {string} name Name of the field containing this element (for error
805
+ * messages)
804
806
  * @constructor
805
807
  */
806
- var Element = function(type, resolvedType, isMapKey, syntax) {
808
+ var Element = function(type, resolvedType, isMapKey, syntax, name) {
807
809
 
808
810
  /**
809
811
  * Element type, as a string (e.g., int32).
@@ -829,6 +831,12 @@
829
831
  */
830
832
  this.syntax = syntax;
831
833
 
834
+ /**
835
+ * Name of the field containing this element (for error messages)
836
+ * @type {string}
837
+ */
838
+ this.name = name;
839
+
832
840
  if (isMapKey && ProtoBuf.MAP_KEY_TYPES.indexOf(type) < 0)
833
841
  throw Error("Invalid map key type: " + type.name);
834
842
  };
@@ -879,6 +887,10 @@
879
887
  throw Error("not convertible to Long");
880
888
  }
881
889
 
890
+ ElementPrototype.toString = function() {
891
+ return (this.name || '') + (this.isMapKey ? 'map' : 'value') + ' element';
892
+ }
893
+
882
894
  /**
883
895
  * Checks if the given value can be set for an element of this type (singular
884
896
  * field or one element of a repeated field or map).
@@ -888,9 +900,10 @@
888
900
  * @expose
889
901
  */
890
902
  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);
903
+ var self = this;
904
+ function fail(val, msg) {
905
+ throw Error("Illegal value for "+self.toString(true)+" of type "+self.type.name+": "+val+" ("+msg+")");
906
+ }
894
907
  switch (this.type) {
895
908
  // Signed 32bit
896
909
  case ProtoBuf.TYPES["int32"]:
@@ -1380,10 +1393,10 @@
1380
1393
 
1381
1394
  /**
1382
1395
  * Extensions range.
1383
- * @type {!Array.<number>}
1396
+ * @type {!Array.<number>|undefined}
1384
1397
  * @expose
1385
1398
  */
1386
- this.extensions = [ProtoBuf.ID_MIN, ProtoBuf.ID_MAX];
1399
+ this.extensions = undefined;
1387
1400
 
1388
1401
  /**
1389
1402
  * Runtime message class.
@@ -1552,9 +1565,11 @@
1552
1565
  MessagePrototype.set = function(keyOrObj, value, noAssert) {
1553
1566
  if (keyOrObj && typeof keyOrObj === 'object') {
1554
1567
  noAssert = value;
1555
- for (var ikey in keyOrObj)
1556
- if (keyOrObj.hasOwnProperty(ikey) && typeof (value = keyOrObj[ikey]) !== 'undefined')
1568
+ for (var ikey in keyOrObj) {
1569
+ // Check if virtual oneof field - don't set these
1570
+ if (keyOrObj.hasOwnProperty(ikey) && typeof (value = keyOrObj[ikey]) !== 'undefined' && T._oneofsByName[ikey] === undefined)
1557
1571
  this.$set(ikey, value, noAssert);
1572
+ }
1558
1573
  return this;
1559
1574
  }
1560
1575
  var field = T._fieldsByName[keyOrObj];
@@ -1782,18 +1797,19 @@
1782
1797
  * @name ProtoBuf.Builder.Message#encodeDelimited
1783
1798
  * @function
1784
1799
  * @param {(!ByteBuffer|boolean)=} buffer ByteBuffer to encode to. Will create a new one and flip it if omitted.
1800
+ * @param {boolean=} noVerify Whether to not verify field values, defaults to `false`
1785
1801
  * @return {!ByteBuffer} Encoded message as a ByteBuffer
1786
1802
  * @throws {Error} If the message cannot be encoded or if required fields are missing. The later still
1787
1803
  * returns the encoded ByteBuffer in the `encoded` property on the error.
1788
1804
  * @expose
1789
1805
  */
1790
- MessagePrototype.encodeDelimited = function(buffer) {
1806
+ MessagePrototype.encodeDelimited = function(buffer, noVerify) {
1791
1807
  var isNew = false;
1792
1808
  if (!buffer)
1793
1809
  buffer = new ByteBuffer(),
1794
1810
  isNew = true;
1795
1811
  var enc = new ByteBuffer().LE();
1796
- T.encode(this, enc).flip();
1812
+ T.encode(this, enc, noVerify).flip();
1797
1813
  buffer.writeVarint32(enc.remaining());
1798
1814
  buffer.append(enc);
1799
1815
  return isNew ? buffer.flip() : buffer;
@@ -2002,6 +2018,7 @@
2002
2018
  * @name ProtoBuf.Builder.Message.decode
2003
2019
  * @function
2004
2020
  * @param {!ByteBuffer|!ArrayBuffer|!Buffer|string} buffer Buffer to decode from
2021
+ * @param {(number|string)=} length Message length. Defaults to decode all the remainig data.
2005
2022
  * @param {string=} enc Encoding if buffer is a string: hex, utf8 (not recommended), defaults to base64
2006
2023
  * @return {!ProtoBuf.Builder.Message} Decoded message
2007
2024
  * @throws {Error} If the message cannot be decoded or if required fields are missing. The later still
@@ -2010,13 +2027,17 @@
2010
2027
  * @see ProtoBuf.Builder.Message.decode64
2011
2028
  * @see ProtoBuf.Builder.Message.decodeHex
2012
2029
  */
2013
- Message.decode = function(buffer, enc) {
2030
+ Message.decode = function(buffer, length, enc) {
2031
+ if (typeof length === 'string')
2032
+ enc = length,
2033
+ length = -1;
2014
2034
  if (typeof buffer === 'string')
2015
2035
  buffer = ByteBuffer.wrap(buffer, enc ? enc : "base64");
2016
- buffer = ByteBuffer.isByteBuffer(buffer) ? buffer : ByteBuffer.wrap(buffer); // May throw
2036
+ else if (!ByteBuffer.isByteBuffer(buffer))
2037
+ buffer = ByteBuffer.wrap(buffer); // May throw
2017
2038
  var le = buffer.littleEndian;
2018
2039
  try {
2019
- var msg = T.decode(buffer.LE());
2040
+ var msg = T.decode(buffer.LE(), length);
2020
2041
  buffer.LE(le);
2021
2042
  return msg;
2022
2043
  } catch (e) {
@@ -2039,7 +2060,8 @@
2039
2060
  Message.decodeDelimited = function(buffer, enc) {
2040
2061
  if (typeof buffer === 'string')
2041
2062
  buffer = ByteBuffer.wrap(buffer, enc ? enc : "base64");
2042
- buffer = ByteBuffer.isByteBuffer(buffer) ? buffer : ByteBuffer.wrap(buffer); // May throw
2063
+ else if (!ByteBuffer.isByteBuffer(buffer))
2064
+ buffer = ByteBuffer.wrap(buffer); // May throw
2043
2065
  if (buffer.remaining() < 1)
2044
2066
  return null;
2045
2067
  var off = buffer.offset,
@@ -2161,6 +2183,7 @@
2161
2183
  this._fields = [];
2162
2184
  this._fieldsById = {};
2163
2185
  this._fieldsByName = {};
2186
+ this._oneofsByName = {};
2164
2187
  for (var i=0, k=this.children.length, child; i<k; i++) {
2165
2188
  child = this.children[i];
2166
2189
  if (child instanceof Enum || child instanceof Message || child instanceof Service) {
@@ -2172,6 +2195,9 @@
2172
2195
  this._fields.push(child),
2173
2196
  this._fieldsById[child.id] = child,
2174
2197
  this._fieldsByName[child.name] = child;
2198
+ else if (child instanceof Message.OneOf) {
2199
+ this._oneofsByName[child.name] = child;
2200
+ }
2175
2201
  else if (!(child instanceof Message.OneOf) && !(child instanceof Extension)) // Not built
2176
2202
  throw Error("Illegal reflect child of "+this.toString(true)+": "+this.children[i].toString(true));
2177
2203
  }
@@ -2271,14 +2297,15 @@
2271
2297
  /**
2272
2298
  * Decodes an encoded message and returns the decoded message.
2273
2299
  * @param {ByteBuffer} buffer ByteBuffer to decode from
2274
- * @param {number=} length Message length. Defaults to decode all the available data.
2300
+ * @param {number=} length Message length. Defaults to decode all remaining data.
2275
2301
  * @param {number=} expectedGroupEndId Expected GROUPEND id if this is a legacy group
2276
2302
  * @return {ProtoBuf.Builder.Message} Decoded message
2277
2303
  * @throws {Error} If the message cannot be decoded
2278
2304
  * @expose
2279
2305
  */
2280
2306
  MessagePrototype.decode = function(buffer, length, expectedGroupEndId) {
2281
- length = typeof length === 'number' ? length : -1;
2307
+ if (typeof length !== 'number')
2308
+ length = -1;
2282
2309
  var start = buffer.offset,
2283
2310
  msg = new (this.clazz)(),
2284
2311
  tag, wireType, id, field;
@@ -2497,9 +2524,9 @@
2497
2524
  * @expose
2498
2525
  */
2499
2526
  FieldPrototype.build = function() {
2500
- this.element = new Element(this.type, this.resolvedType, false, this.syntax);
2527
+ this.element = new Element(this.type, this.resolvedType, false, this.syntax, this.name);
2501
2528
  if (this.map)
2502
- this.keyElement = new Element(this.keyType, undefined, true, this.syntax);
2529
+ this.keyElement = new Element(this.keyType, undefined, true, this.syntax, this.name);
2503
2530
 
2504
2531
  // In proto3, fields do not have field presence, and every field is set to
2505
2532
  // its type's default value ("", 0, 0.0, or false).
@@ -2521,9 +2548,10 @@
2521
2548
  */
2522
2549
  FieldPrototype.verifyValue = function(value, skipRepeated) {
2523
2550
  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);
2551
+ var self = this;
2552
+ function fail(val, msg) {
2553
+ throw Error("Illegal value for "+self.toString(true)+" of type "+self.type.name+": "+val+" ("+msg+")");
2554
+ }
2527
2555
  if (value === null) { // NULL values for optional fields
2528
2556
  if (this.required)
2529
2557
  fail(typeof value, "required");
@@ -3137,6 +3165,9 @@
3137
3165
  callback(err);
3138
3166
  return;
3139
3167
  }
3168
+ // Coalesce to empty string when service response has empty content
3169
+ if (res === null)
3170
+ res = ''
3140
3171
  try { res = method.resolvedResponseType.clazz.decode(res); } catch (notABuffer) {}
3141
3172
  if (!res || !(res instanceof method.resolvedResponseType.clazz)) {
3142
3173
  callback(Error("Illegal response type received in service method "+ T.name+"#"+method.name));
@@ -3580,13 +3611,12 @@
3580
3611
  subObj.push(svc);
3581
3612
  });
3582
3613
 
3583
- // Set extension range
3614
+ // Set extension ranges
3584
3615
  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;
3616
+ if (typeof def["extensions"][0] === 'number') // pre 5.0.1
3617
+ obj.extensions = [ def["extensions"] ];
3618
+ else
3619
+ obj.extensions = def["extensions"];
3590
3620
  }
3591
3621
 
3592
3622
  // Create on top of current namespace
@@ -3625,8 +3655,16 @@
3625
3655
  def["fields"].forEach(function(fld) {
3626
3656
  if (obj.getChild(fld['id']|0) !== null)
3627
3657
  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)");
3658
+ // Check if field id is allowed to be extended
3659
+ if (obj.extensions) {
3660
+ var valid = false;
3661
+ obj.extensions.forEach(function(range) {
3662
+ if (fld["id"] >= range[0] && fld["id"] <= range[1])
3663
+ valid = true;
3664
+ });
3665
+ if (!valid)
3666
+ throw Error("illegal extended field id in "+obj.name+": "+fld['id']+" (not within valid ranges)");
3667
+ }
3630
3668
  // Convert extension field names to camel case notation if the override is set
3631
3669
  var name = fld["name"];
3632
3670
  if (this.options['convertFieldsToCamelCase'])
@@ -3707,7 +3745,11 @@
3707
3745
  root = require("path")['resolve'](root);
3708
3746
  if (root.indexOf("\\") >= 0 || filename.file.indexOf("\\") >= 0)
3709
3747
  delim = '\\';
3710
- var fname = root + delim + filename.file;
3748
+ var fname;
3749
+ if (ProtoBuf.Util.IS_NODE)
3750
+ fname = require("path")['join'](root, filename.file);
3751
+ else
3752
+ fname = root + delim + filename.file;
3711
3753
  if (this.files[fname] === true)
3712
3754
  return this.reset();
3713
3755
  this.files[fname] = true;
@@ -3753,7 +3795,10 @@
3753
3795
  var importFilename = json['imports'][i];
3754
3796
  if (importFilename === "google/protobuf/descriptor.proto")
3755
3797
  continue; // Not needed and therefore not used
3756
- importFilename = importRoot + delim + importFilename;
3798
+ if (ProtoBuf.Util.IS_NODE)
3799
+ importFilename = require("path")['join'](importRoot, importFilename);
3800
+ else
3801
+ importFilename = importRoot + delim + importFilename;
3757
3802
  if (this.files[importFilename] === true)
3758
3803
  continue; // Already imported
3759
3804
  if (/\.proto$/i.test(importFilename) && !ProtoBuf.DotProto) // If this is a light build
@@ -3851,6 +3896,16 @@
3851
3896
  this.ptr.keyType = ProtoBuf.TYPES[this.ptr.keyType];
3852
3897
  }
3853
3898
 
3899
+ // If it's a repeated and packable field then proto3 mandates it should be packed by
3900
+ // default
3901
+ if (
3902
+ this.ptr.syntax === 'proto3' &&
3903
+ this.ptr.repeated && this.ptr.options.packed === undefined &&
3904
+ ProtoBuf.PACKABLE_WIRE_TYPES.indexOf(this.ptr.type.wireType) !== -1
3905
+ ) {
3906
+ this.ptr.options.packed = true;
3907
+ }
3908
+
3854
3909
  } else if (this.ptr instanceof ProtoBuf.Reflect.Service.Method) {
3855
3910
 
3856
3911
  if (this.ptr instanceof ProtoBuf.Reflect.Service.RPCMethod) {
@@ -0,0 +1,94 @@
1
+ /*
2
+ protobuf.js (c) 2013 Daniel Wirtz <dcode@dcode.io>
3
+ Released under the Apache License, Version 2.0
4
+ see: https://github.com/dcodeIO/protobuf.js for details
5
+ */
6
+ var $jscomp={scope:{}};$jscomp.defineProperty="function"==typeof Object.defineProperties?Object.defineProperty:function(e,p,d){if(d.get||d.set)throw new TypeError("ES3 does not support getters and setters.");e!=Array.prototype&&e!=Object.prototype&&(e[p]=d.value)};$jscomp.getGlobal=function(e){return"undefined"!=typeof window&&window===e?e:"undefined"!=typeof global&&null!=global?global:e};$jscomp.global=$jscomp.getGlobal(this);$jscomp.SYMBOL_PREFIX="jscomp_symbol_";
7
+ $jscomp.initSymbol=function(){$jscomp.initSymbol=function(){};$jscomp.global.Symbol||($jscomp.global.Symbol=$jscomp.Symbol)};$jscomp.symbolCounter_=0;$jscomp.Symbol=function(e){return $jscomp.SYMBOL_PREFIX+(e||"")+$jscomp.symbolCounter_++};
8
+ $jscomp.initSymbolIterator=function(){$jscomp.initSymbol();var e=$jscomp.global.Symbol.iterator;e||(e=$jscomp.global.Symbol.iterator=$jscomp.global.Symbol("iterator"));"function"!=typeof Array.prototype[e]&&$jscomp.defineProperty(Array.prototype,e,{configurable:!0,writable:!0,value:function(){return $jscomp.arrayIterator(this)}});$jscomp.initSymbolIterator=function(){}};$jscomp.arrayIterator=function(e){var p=0;return $jscomp.iteratorPrototype(function(){return p<e.length?{done:!1,value:e[p++]}:{done:!0}})};
9
+ $jscomp.iteratorPrototype=function(e){$jscomp.initSymbolIterator();e={next:e};e[$jscomp.global.Symbol.iterator]=function(){return this};return e};$jscomp.array=$jscomp.array||{};$jscomp.iteratorFromArray=function(e,p){$jscomp.initSymbolIterator();e instanceof String&&(e+="");var d=0,c={next:function(){if(d<e.length){var t=d++;return{value:p(t,e[t]),done:!1}}c.next=function(){return{done:!0,value:void 0}};return c.next()}};c[Symbol.iterator]=function(){return c};return c};
10
+ $jscomp.polyfill=function(e,p,d,c){if(p){d=$jscomp.global;e=e.split(".");for(c=0;c<e.length-1;c++){var t=e[c];t in d||(d[t]={});d=d[t]}e=e[e.length-1];c=d[e];p=p(c);p!=c&&null!=p&&$jscomp.defineProperty(d,e,{configurable:!0,writable:!0,value:p})}};$jscomp.polyfill("Array.prototype.keys",function(e){return e?e:function(){return $jscomp.iteratorFromArray(this,function(e){return e})}},"es6-impl","es3");
11
+ $jscomp.polyfill("Array.prototype.entries",function(e){return e?e:function(){return $jscomp.iteratorFromArray(this,function(e,d){return[e,d]})}},"es6-impl","es3");$jscomp.polyfill("Array.prototype.values",function(e){return e?e:function(){return $jscomp.iteratorFromArray(this,function(e,d){return d})}},"es6","es3");
12
+ (function(e,p){"function"===typeof define&&define.amd?define(["bytebuffer"],p):"function"===typeof require&&"object"===typeof module&&module&&module.exports?module.exports=p(require("bytebuffer"),!0):(e.dcodeIO=e.dcodeIO||{}).ProtoBuf=p(e.dcodeIO.ByteBuffer)})(this,function(e,p){var d={};d.ByteBuffer=e;d.Long=e.Long||null;d.VERSION="5.0.3";d.WIRE_TYPES={};d.WIRE_TYPES.VARINT=0;d.WIRE_TYPES.BITS64=1;d.WIRE_TYPES.LDELIM=2;d.WIRE_TYPES.STARTGROUP=3;d.WIRE_TYPES.ENDGROUP=4;d.WIRE_TYPES.BITS32=5;d.PACKABLE_WIRE_TYPES=
13
+ [d.WIRE_TYPES.VARINT,d.WIRE_TYPES.BITS64,d.WIRE_TYPES.BITS32];d.TYPES={int32:{name:"int32",wireType:d.WIRE_TYPES.VARINT,defaultValue:0},uint32:{name:"uint32",wireType:d.WIRE_TYPES.VARINT,defaultValue:0},sint32:{name:"sint32",wireType:d.WIRE_TYPES.VARINT,defaultValue:0},int64:{name:"int64",wireType:d.WIRE_TYPES.VARINT,defaultValue:d.Long?d.Long.ZERO:void 0},uint64:{name:"uint64",wireType:d.WIRE_TYPES.VARINT,defaultValue:d.Long?d.Long.UZERO:void 0},sint64:{name:"sint64",wireType:d.WIRE_TYPES.VARINT,
14
+ defaultValue:d.Long?d.Long.ZERO:void 0},bool:{name:"bool",wireType:d.WIRE_TYPES.VARINT,defaultValue:!1},"double":{name:"double",wireType:d.WIRE_TYPES.BITS64,defaultValue:0},string:{name:"string",wireType:d.WIRE_TYPES.LDELIM,defaultValue:""},bytes:{name:"bytes",wireType:d.WIRE_TYPES.LDELIM,defaultValue:null},fixed32:{name:"fixed32",wireType:d.WIRE_TYPES.BITS32,defaultValue:0},sfixed32:{name:"sfixed32",wireType:d.WIRE_TYPES.BITS32,defaultValue:0},fixed64:{name:"fixed64",wireType:d.WIRE_TYPES.BITS64,
15
+ defaultValue:d.Long?d.Long.UZERO:void 0},sfixed64:{name:"sfixed64",wireType:d.WIRE_TYPES.BITS64,defaultValue:d.Long?d.Long.ZERO:void 0},"float":{name:"float",wireType:d.WIRE_TYPES.BITS32,defaultValue:0},"enum":{name:"enum",wireType:d.WIRE_TYPES.VARINT,defaultValue:0},message:{name:"message",wireType:d.WIRE_TYPES.LDELIM,defaultValue:null},group:{name:"group",wireType:d.WIRE_TYPES.STARTGROUP,defaultValue:null}};d.MAP_KEY_TYPES=[d.TYPES.int32,d.TYPES.sint32,d.TYPES.sfixed32,d.TYPES.uint32,d.TYPES.fixed32,
16
+ d.TYPES.int64,d.TYPES.sint64,d.TYPES.sfixed64,d.TYPES.uint64,d.TYPES.fixed64,d.TYPES.bool,d.TYPES.string,d.TYPES.bytes];d.ID_MIN=1;d.ID_MAX=536870911;d.convertFieldsToCamelCase=!1;d.populateAccessors=!0;d.populateDefaults=!0;d.Util=function(){var c={};c.IS_NODE=!("object"!==typeof process||"[object process]"!==process+""||process.browser);c.XHR=function(){for(var c=[function(){return new XMLHttpRequest},function(){return new ActiveXObject("Msxml2.XMLHTTP")},function(){return new ActiveXObject("Msxml3.XMLHTTP")},
17
+ function(){return new ActiveXObject("Microsoft.XMLHTTP")}],d=null,e=0;e<c.length;e++){try{d=c[e]()}catch(k){continue}break}if(!d)throw Error("XMLHttpRequest is not supported");return d};c.fetch=function(d,e){e&&"function"!=typeof e&&(e=null);if(c.IS_NODE){var t=require("fs");if(e)t.readFile(d,function(c,b){c?e(null):e(""+b)});else try{return t.readFileSync(d)}catch(l){return null}}else{var k=c.XHR();k.open("GET",d,e?!0:!1);k.setRequestHeader("Accept","text/plain");"function"===typeof k.overrideMimeType&&
18
+ k.overrideMimeType("text/plain");if(e)k.onreadystatechange=function(){4==k.readyState&&(200==k.status||0==k.status&&"string"===typeof k.responseText?e(k.responseText):e(null))},4!=k.readyState&&k.send(null);else return k.send(null),200==k.status||0==k.status&&"string"===typeof k.responseText?k.responseText:null}};c.toCamelCase=function(c){return c.replace(/_([a-zA-Z])/g,function(c,e){return e.toUpperCase()})};return c}();d.Lang={DELIM:/[\s\{\}=;:\[\],'"\(\)<>]/g,RULE:/^(?:required|optional|repeated|map)$/,
19
+ 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]*)(?:\.[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)$/,
20
+ 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};d.Reflect=function(c){function d(a,g){if(a&&"number"===typeof a.low&&"number"===typeof a.high&&"boolean"===typeof a.unsigned&&a.low===a.low&&a.high===a.high)return new c.Long(a.low,a.high,"undefined"===
21
+ typeof g?a.unsigned:g);if("string"===typeof a)return c.Long.fromString(a,g||!1,10);if("number"===typeof a)return c.Long.fromNumber(a,g||!1);throw Error("not convertible to Long");}function z(a,g){var h=g.readVarint32(),b=h&7,h=h>>>3;switch(b){case c.WIRE_TYPES.VARINT:do h=g.readUint8();while(128===(h&128));break;case c.WIRE_TYPES.BITS64:g.offset+=8;break;case c.WIRE_TYPES.LDELIM:h=g.readVarint32();g.offset+=h;break;case c.WIRE_TYPES.STARTGROUP:z(h,g);break;case c.WIRE_TYPES.ENDGROUP:if(h===a)return!1;
22
+ throw Error("Illegal GROUPEND after unknown group: "+h+" ("+a+" expected)");case c.WIRE_TYPES.BITS32:g.offset+=4;break;default:throw Error("Illegal wire type in unknown group "+a+": "+b);}return!0}var r={},k=function(a,g,c){this.builder=a;this.parent=g;this.name=c},l=k.prototype;l.fqn=function(){var a=this.name,g=this;do{g=g.parent;if(null==g)break;a=g.name+"."+a}while(1);return a};l.toString=function(a){return(a?this.className+" ":"")+this.fqn()};l.build=function(){throw Error(this.toString(!0)+
23
+ " cannot be built directly");};r.T=k;var b=function(a,g,c,b,e){k.call(this,a,g,c);this.className="Namespace";this.children=[];this.options=b||{};this.syntax=e||"proto2"},l=b.prototype=Object.create(k.prototype);l.getChildren=function(a){a=a||null;if(null==a)return this.children.slice();for(var g=[],c=0,b=this.children.length;c<b;++c)this.children[c]instanceof a&&g.push(this.children[c]);return g};l.addChild=function(a){var c;if(c=this.getChild(a.name))if(c instanceof u.Field&&c.name!==c.originalName&&
24
+ null===this.getChild(c.originalName))c.name=c.originalName;else if(a instanceof u.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)};l.getChild=function(a){for(var c="number"===typeof a?"id":"name",h=0,b=this.children.length;h<b;++h)if(this.children[h][c]===a)return this.children[h];return null};l.resolve=function(a,c){var g="string"===typeof a?a.split("."):
25
+ a,b=this,e=0;if(""===g[e]){for(;null!==b.parent;)b=b.parent;e++}do{do{if(!(b instanceof r.Namespace)){b=null;break}b=b.getChild(g[e]);if(!(b&&b instanceof r.T)||c&&!(b instanceof r.Namespace)){b=null;break}e++}while(e<g.length);if(null!=b)break;if(null!==this.parent)return this.parent.resolve(a,c)}while(null!=b);return b};l.qn=function(a){var c=[],b=a;do c.unshift(b.name),b=b.parent;while(null!==b);for(b=1;b<=c.length;b++){var e=c.slice(c.length-b);if(a===this.resolve(e,a instanceof r.Namespace))return e.join(".")}return a.fqn()};
26
+ l.build=function(){for(var a={},c=this.children,h=0,e=c.length,d;h<e;++h)d=c[h],d instanceof b&&(a[d.name]=d.build());Object.defineProperty&&Object.defineProperty(a,"$options",{value:this.buildOpt()});return a};l.buildOpt=function(){for(var a={},c=Object.keys(this.options),b=0,e=c.length;b<e;++b)a[c[b]]=this.options[c[b]];return a};l.getOption=function(a){return"undefined"===typeof a?this.options:"undefined"!==typeof this.options[a]?this.options[a]:null};r.Namespace=b;var m=function(a,g,b,e,d){this.type=
27
+ a;this.resolvedType=g;this.isMapKey=b;this.syntax=e;this.name=d;if(b&&0>c.MAP_KEY_TYPES.indexOf(a))throw Error("Invalid map key type: "+a.name);},f=m.prototype;m.defaultFieldValue=function(a){"string"===typeof a&&(a=c.TYPES[a]);if("undefined"===typeof a.defaultValue)throw Error("default value for type "+a.name+" is not supported");return a==c.TYPES.bytes?new e(0):a.defaultValue};f.toString=function(){return(this.name||"")+(this.isMapKey?"map":"value")+" element"};f.verifyValue=function(a){function g(a,
28
+ c){throw Error("Illegal value for "+b.toString(!0)+" of type "+b.type.name+": "+a+" ("+c+")");}var b=this;switch(this.type){case c.TYPES.int32:case c.TYPES.sint32:case c.TYPES.sfixed32:return("number"!==typeof a||a===a&&0!==a%1)&&g(typeof a,"not an integer"),4294967295<a?a|0:a;case c.TYPES.uint32:case c.TYPES.fixed32:return("number"!==typeof a||a===a&&0!==a%1)&&g(typeof a,"not an integer"),0>a?a>>>0:a;case c.TYPES.int64:case c.TYPES.sint64:case c.TYPES.sfixed64:if(c.Long)try{return d(a,!1)}catch(w){g(typeof a,
29
+ w.message)}else g(typeof a,"requires Long.js");case c.TYPES.uint64:case c.TYPES.fixed64:if(c.Long)try{return d(a,!0)}catch(w){g(typeof a,w.message)}else g(typeof a,"requires Long.js");case c.TYPES.bool:return"boolean"!==typeof a&&g(typeof a,"not a boolean"),a;case c.TYPES["float"]:case c.TYPES["double"]:return"number"!==typeof a&&g(typeof a,"not a number"),a;case c.TYPES.string:return"string"===typeof a||a&&a instanceof String||g(typeof a,"not a string"),""+a;case c.TYPES.bytes:return e.isByteBuffer(a)?
30
+ a:e.wrap(a,"base64");case c.TYPES["enum"]:for(var v=this.resolvedType.getChildren(c.Reflect.Enum.Value),q=0;q<v.length;q++)if(v[q].name==a||v[q].id==a)return v[q].id;if("proto3"===this.syntax)return("number"!==typeof a||a===a&&0!==a%1)&&g(typeof a,"not an integer"),(4294967295<a||0>a)&&g(typeof a,"not in range for uint32"),a;g(a,"not a valid enum value");case c.TYPES.group:case c.TYPES.message:a&&"object"===typeof a||g(typeof a,"object expected");if(a instanceof this.resolvedType.clazz)return a;if(a instanceof
31
+ c.Builder.Message){var v={},q;for(q in a)a.hasOwnProperty(q)&&(v[q]=a[q]);a=v}return new this.resolvedType.clazz(a)}throw Error("[INTERNAL] Illegal value for "+this.toString(!0)+": "+a+" (undefined type "+this.type+")");};f.calculateLength=function(a,g){if(null===g)return 0;var b;switch(this.type){case c.TYPES.int32:return 0>g?e.calculateVarint64(g):e.calculateVarint32(g);case c.TYPES.uint32:return e.calculateVarint32(g);case c.TYPES.sint32:return e.calculateVarint32(e.zigZagEncode32(g));case c.TYPES.fixed32:case c.TYPES.sfixed32:case c.TYPES["float"]:return 4;
32
+ case c.TYPES.int64:case c.TYPES.uint64:return e.calculateVarint64(g);case c.TYPES.sint64:return e.calculateVarint64(e.zigZagEncode64(g));case c.TYPES.fixed64:case c.TYPES.sfixed64:return 8;case c.TYPES.bool:return 1;case c.TYPES["enum"]:return e.calculateVarint32(g);case c.TYPES["double"]:return 8;case c.TYPES.string:return b=e.calculateUTF8Bytes(g),e.calculateVarint32(b)+b;case c.TYPES.bytes:if(0>g.remaining())throw Error("Illegal value for "+this.toString(!0)+": "+g.remaining()+" bytes remaining");
33
+ return e.calculateVarint32(g.remaining())+g.remaining();case c.TYPES.message:return b=this.resolvedType.calculate(g),e.calculateVarint32(b)+b;case c.TYPES.group:return b=this.resolvedType.calculate(g),b+e.calculateVarint32(a<<3|c.WIRE_TYPES.ENDGROUP)}throw Error("[INTERNAL] Illegal value to encode in "+this.toString(!0)+": "+g+" (unknown type)");};f.encodeValue=function(a,g,b){if(null===g)return b;switch(this.type){case c.TYPES.int32:0>g?b.writeVarint64(g):b.writeVarint32(g);break;case c.TYPES.uint32:b.writeVarint32(g);
34
+ break;case c.TYPES.sint32:b.writeVarint32ZigZag(g);break;case c.TYPES.fixed32:b.writeUint32(g);break;case c.TYPES.sfixed32:b.writeInt32(g);break;case c.TYPES.int64:case c.TYPES.uint64:b.writeVarint64(g);break;case c.TYPES.sint64:b.writeVarint64ZigZag(g);break;case c.TYPES.fixed64:b.writeUint64(g);break;case c.TYPES.sfixed64:b.writeInt64(g);break;case c.TYPES.bool:"string"===typeof g?b.writeVarint32("false"===g.toLowerCase()?0:!!g):b.writeVarint32(g?1:0);break;case c.TYPES["enum"]:b.writeVarint32(g);
35
+ break;case c.TYPES["float"]:b.writeFloat32(g);break;case c.TYPES["double"]:b.writeFloat64(g);break;case c.TYPES.string:b.writeVString(g);break;case c.TYPES.bytes:if(0>g.remaining())throw Error("Illegal value for "+this.toString(!0)+": "+g.remaining()+" bytes remaining");a=g.offset;b.writeVarint32(g.remaining());b.append(g);g.offset=a;break;case c.TYPES.message:a=(new e).LE();this.resolvedType.encode(g,a);b.writeVarint32(a.offset);b.append(a.flip());break;case c.TYPES.group:this.resolvedType.encode(g,
36
+ b);b.writeVarint32(a<<3|c.WIRE_TYPES.ENDGROUP);break;default:throw Error("[INTERNAL] Illegal value to encode in "+this.toString(!0)+": "+g+" (unknown type)");}return b};f.decode=function(a,b,e){if(b!=this.type.wireType)throw Error("Unexpected wire type for element");switch(this.type){case c.TYPES.int32:return a.readVarint32()|0;case c.TYPES.uint32:return a.readVarint32()>>>0;case c.TYPES.sint32:return a.readVarint32ZigZag()|0;case c.TYPES.fixed32:return a.readUint32()>>>0;case c.TYPES.sfixed32:return a.readInt32()|
37
+ 0;case c.TYPES.int64:return a.readVarint64();case c.TYPES.uint64:return a.readVarint64().toUnsigned();case c.TYPES.sint64:return a.readVarint64ZigZag();case c.TYPES.fixed64:return a.readUint64();case c.TYPES.sfixed64:return a.readInt64();case c.TYPES.bool:return!!a.readVarint32();case c.TYPES["enum"]:return a.readVarint32();case c.TYPES["float"]:return a.readFloat();case c.TYPES["double"]:return a.readDouble();case c.TYPES.string:return a.readVString();case c.TYPES.bytes:e=a.readVarint32();if(a.remaining()<
38
+ e)throw Error("Illegal number of bytes for "+this.toString(!0)+": "+e+" required but got only "+a.remaining());b=a.clone();b.limit=b.offset+e;a.offset+=e;return b;case c.TYPES.message:return e=a.readVarint32(),this.resolvedType.decode(a,e);case c.TYPES.group:return this.resolvedType.decode(a,-1,e)}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 c.TYPES.int32:case c.TYPES.sint32:case c.TYPES.sfixed32:case c.TYPES.uint32:case c.TYPES.fixed32:return this.verifyValue(parseInt(a));
39
+ case c.TYPES.int64:case c.TYPES.sint64:case c.TYPES.sfixed64:case c.TYPES.uint64:case c.TYPES.fixed64:return this.verifyValue(a);case c.TYPES.bool:return"true"===a;case c.TYPES.string:return this.verifyValue(a);case c.TYPES.bytes:return e.fromBinary(a)}};f.valueToString=function(a){if(!this.isMapKey)throw Error("valueToString() called on non-map-key element");return this.type===c.TYPES.bytes?a.toString("binary"):a.toString()};r.Element=m;var u=function(a,c,e,d,q,f){b.call(this,a,c,e,d,f);this.className=
40
+ "Message";this.extensions=void 0;this.clazz=null;this.isGroup=!!q;this._fieldsByName=this._fieldsById=this._fields=null},f=u.prototype=Object.create(b.prototype);f.build=function(a){if(this.clazz&&!a)return this.clazz;a=function(a,c){function b(c,g,f,d){if(null===c||"object"!==typeof c){if(d&&d instanceof a.Reflect.Enum){var h=a.Reflect.Enum.getName(d.object,c);if(null!==h)return h}return c}if(e.isByteBuffer(c))return g?c.toBase64():c.toBuffer();if(a.Long.isLong(c))return f?c.toString():a.Long.fromValue(c);
41
+ var n;if(Array.isArray(c))return n=[],c.forEach(function(a,c){n[c]=b(a,g,f,d)}),n;n={};if(c instanceof a.Map){for(var h=c.entries(),m=h.next();!m.done;m=h.next())n[c.keyElem.valueToString(m.value[0])]=b(m.value[1],g,f,c.valueElem.resolvedType);return n}var h=c.$type,m=void 0,q;for(q in c)c.hasOwnProperty(q)&&(h&&(m=h.getChild(q))?n[q]=b(c[q],g,f,m.resolvedType):n[q]=b(c[q],g,f));return n}var g=c.getChildren(a.Reflect.Message.Field),d=c.getChildren(a.Reflect.Message.OneOf),f=function(b,h){a.Builder.Message.call(this);
42
+ for(var n=0,m=d.length;n<m;++n)this[d[n].name]=null;n=0;for(m=g.length;n<m;++n){var q=g[n];this[q.name]=q.repeated?[]:q.map?new a.Map(q):null;!q.required&&"proto3"!==c.syntax||null===q.defaultValue||(this[q.name]=q.defaultValue)}if(0<arguments.length)if(1!==arguments.length||null===b||"object"!==typeof b||!("function"!==typeof b.encode||b instanceof f)||Array.isArray(b)||b instanceof a.Map||e.isByteBuffer(b)||b instanceof ArrayBuffer||a.Long&&b instanceof a.Long)for(n=0,m=arguments.length;n<m;++n)"undefined"!==
43
+ typeof(q=arguments[n])&&this.$set(g[n].name,q);else this.$set(b)},h=f.prototype=Object.create(a.Builder.Message.prototype);h.add=function(b,g,e){var f=c._fieldsByName[b];if(!e){if(!f)throw Error(this+"#"+b+" is undefined");if(!(f instanceof a.Reflect.Message.Field))throw Error(this+"#"+b+" is not a field: "+f.toString(!0));if(!f.repeated)throw Error(this+"#"+b+" is not a repeated field");g=f.verifyValue(g,!0)}null===this[b]&&(this[b]=[]);this[b].push(g);return this};h.$add=h.add;h.set=function(b,
44
+ g,e){if(b&&"object"===typeof b){e=g;for(var f in b)b.hasOwnProperty(f)&&"undefined"!==typeof(g=b[f])&&void 0===c._oneofsByName[f]&&this.$set(f,g,e);return this}f=c._fieldsByName[b];if(e)this[b]=g;else{if(!f)throw Error(this+"#"+b+" is not a field: undefined");if(!(f instanceof a.Reflect.Message.Field))throw Error(this+"#"+b+" is not a field: "+f.toString(!0));this[f.name]=g=f.verifyValue(g)}f&&f.oneof&&(e=this[f.oneof.name],null!==g?(null!==e&&e!==f.name&&(this[e]=null),this[f.oneof.name]=f.name):
45
+ e===b&&(this[f.oneof.name]=null));return this};h.$set=h.set;h.get=function(b,g){if(g)return this[b];var f=c._fieldsByName[b];if(!(f&&f instanceof a.Reflect.Message.Field))throw Error(this+"#"+b+" is not a field: undefined");if(!(f instanceof a.Reflect.Message.Field))throw Error(this+"#"+b+" is not a field: "+f.toString(!0));return this[f.name]};h.$get=h.get;for(var m=0;m<g.length;m++){var q=g[m];q instanceof a.Reflect.Message.ExtensionField||c.builder.options.populateAccessors&&function(a){var b=
46
+ a.originalName.replace(/(_[a-zA-Z])/g,function(a){return a.toUpperCase().replace("_","")}),b=b.substring(0,1).toUpperCase()+b.substring(1),g=a.originalName.replace(/([A-Z])/g,function(a){return"_"+a}),f=function(c,b){this[a.name]=b?c:a.verifyValue(c);return this},e=function(){return this[a.name]};null===c.getChild("set"+b)&&(h["set"+b]=f);null===c.getChild("set_"+g)&&(h["set_"+g]=f);null===c.getChild("get"+b)&&(h["get"+b]=e);null===c.getChild("get_"+g)&&(h["get_"+g]=e)}(q)}h.encode=function(a,b){"boolean"===
47
+ typeof a&&(b=a,a=void 0);var g=!1;a||(a=new e,g=!0);var f=a.littleEndian;try{return c.encode(this,a.LE(),b),(g?a.flip():a).LE(f)}catch(C){throw a.LE(f),C;}};f.encode=function(a,c,b){return(new f(a)).encode(c,b)};h.calculate=function(){return c.calculate(this)};h.encodeDelimited=function(a,b){var g=!1;a||(a=new e,g=!0);var f=(new e).LE();c.encode(this,f,b).flip();a.writeVarint32(f.remaining());a.append(f);return g?a.flip():a};h.encodeAB=function(){try{return this.encode().toArrayBuffer()}catch(n){throw n.encoded&&
48
+ (n.encoded=n.encoded.toArrayBuffer()),n;}};h.toArrayBuffer=h.encodeAB;h.encodeNB=function(){try{return this.encode().toBuffer()}catch(n){throw n.encoded&&(n.encoded=n.encoded.toBuffer()),n;}};h.toBuffer=h.encodeNB;h.encode64=function(){try{return this.encode().toBase64()}catch(n){throw n.encoded&&(n.encoded=n.encoded.toBase64()),n;}};h.toBase64=h.encode64;h.encodeHex=function(){try{return this.encode().toHex()}catch(n){throw n.encoded&&(n.encoded=n.encoded.toHex()),n;}};h.toHex=h.encodeHex;h.toRaw=
49
+ function(a,c){return b(this,!!a,!!c,this.$type)};h.encodeJSON=function(){return JSON.stringify(b(this,!0,!0,this.$type))};f.decode=function(a,b,g){"string"===typeof b&&(g=b,b=-1);"string"===typeof a?a=e.wrap(a,g?g:"base64"):e.isByteBuffer(a)||(a=e.wrap(a));g=a.littleEndian;try{var f=c.decode(a.LE(),b);a.LE(g);return f}catch(C){throw a.LE(g),C;}};f.decodeDelimited=function(a,b){"string"===typeof a?a=e.wrap(a,b?b:"base64"):e.isByteBuffer(a)||(a=e.wrap(a));if(1>a.remaining())return null;var g=a.offset,
50
+ f=a.readVarint32();if(a.remaining()<f)return a.offset=g,null;try{var h=c.decode(a.slice(a.offset,a.offset+f).LE());a.offset+=f;return h}catch(E){throw a.offset+=f,E;}};f.decode64=function(a){return f.decode(a,"base64")};f.decodeHex=function(a){return f.decode(a,"hex")};f.decodeJSON=function(a){return new f(JSON.parse(a))};h.toString=function(){return c.toString()};Object.defineProperty&&(Object.defineProperty(f,"$options",{value:c.buildOpt()}),Object.defineProperty(h,"$options",{value:f.$options}),
51
+ Object.defineProperty(f,"$type",{value:c}),Object.defineProperty(h,"$type",{value:c}));return f}(c,this);this._fields=[];this._fieldsById={};this._fieldsByName={};this._oneofsByName={};for(var b=0,d=this.children.length,f;b<d;b++)if(f=this.children[b],f instanceof x||f instanceof u||f instanceof D){if(a.hasOwnProperty(f.name))throw Error("Illegal reflect child of "+this.toString(!0)+": "+f.toString(!0)+" cannot override static property '"+f.name+"'");a[f.name]=f.build()}else if(f instanceof u.Field)f.build(),
52
+ this._fields.push(f),this._fieldsById[f.id]=f,this._fieldsByName[f.name]=f;else if(f instanceof u.OneOf)this._oneofsByName[f.name]=f;else if(!(f instanceof u.OneOf||f instanceof y))throw Error("Illegal reflect child of "+this.toString(!0)+": "+this.children[b].toString(!0));return this.clazz=a};f.encode=function(a,c,b){for(var g=null,f,e=0,h=this._fields.length,d;e<h;++e)f=this._fields[e],d=a[f.name],f.required&&null===d?null===g&&(g=f):f.encode(b?d:f.verifyValue(d),c,a);if(null!==g)throw a=Error("Missing at least one required field for "+
53
+ this.toString(!0)+": "+g),a.encoded=c,a;return c};f.calculate=function(a){for(var c=0,b=0,f=this._fields.length,e,d;b<f;++b){e=this._fields[b];d=a[e.name];if(e.required&&null===d)throw Error("Missing at least one required field for "+this.toString(!0)+": "+e);c+=e.calculate(d,a)}return c};f.decode=function(a,b,f){"number"!==typeof b&&(b=-1);for(var g=a.offset,e=new this.clazz,d,h,m;a.offset<g+b||-1===b&&0<a.remaining();){d=a.readVarint32();h=d&7;m=d>>>3;if(h===c.WIRE_TYPES.ENDGROUP){if(m!==f)throw Error("Illegal group end indicator for "+
54
+ this.toString(!0)+": "+m+" ("+(f?f+" expected":"not a group")+")");break}if(d=this._fieldsById[m])d.repeated&&!d.options.packed?e[d.name].push(d.decode(h,a)):d.map?(h=d.decode(h,a),e[d.name].set(h[0],h[1])):(e[d.name]=d.decode(h,a),d.oneof&&(h=e[d.oneof.name],null!==h&&h!==d.name&&(e[h]=null),e[d.oneof.name]=d.name));else switch(h){case c.WIRE_TYPES.VARINT:a.readVarint32();break;case c.WIRE_TYPES.BITS32:a.offset+=4;break;case c.WIRE_TYPES.BITS64:a.offset+=8;break;case c.WIRE_TYPES.LDELIM:d=a.readVarint32();
55
+ a.offset+=d;break;case c.WIRE_TYPES.STARTGROUP:for(;z(m,a););break;default:throw Error("Illegal wire type for unknown field "+m+" in "+this.toString(!0)+"#decode: "+h);}}a=0;for(b=this._fields.length;a<b;++a)if(d=this._fields[a],null===e[d.name])if("proto3"===this.syntax)e[d.name]=d.defaultValue;else{if(d.required)throw a=Error("Missing at least one required field for "+this.toString(!0)+": "+d.name),a.decoded=e,a;c.populateDefaults&&null!==d.defaultValue&&(e[d.name]=d.defaultValue)}return e};r.Message=
56
+ u;var p=function(a,b,f,e,d,m,l,y,t,z){k.call(this,a,b,m);this.className="Message.Field";this.required="required"===f;this.repeated="repeated"===f;this.map="map"===f;this.keyType=e||null;this.type=d;this.resolvedType=null;this.id=l;this.options=y||{};this.defaultValue=null;this.oneof=t||null;this.syntax=z||"proto2";this.originalName=this.name;this.keyElement=this.element=null;!this.builder.options.convertFieldsToCamelCase||this instanceof u.ExtensionField||(this.name=c.Util.toCamelCase(this.name))},
57
+ f=p.prototype=Object.create(k.prototype);f.build=function(){this.element=new m(this.type,this.resolvedType,!1,this.syntax,this.name);this.map&&(this.keyElement=new m(this.keyType,void 0,!0,this.syntax,this.name));"proto3"!==this.syntax||this.repeated||this.map?"undefined"!==typeof this.options["default"]&&(this.defaultValue=this.verifyValue(this.options["default"])):this.defaultValue=m.defaultFieldValue(this.type)};f.verifyValue=function(a,b){function g(a,c){throw Error("Illegal value for "+f.toString(!0)+
58
+ " of type "+f.type.name+": "+a+" ("+c+")");}b=b||!1;var f=this;if(null===a)return this.required&&g(typeof a,"required"),"proto3"===this.syntax&&this.type!==c.TYPES.message&&g(typeof a,"proto3 field without field presence cannot be null"),null;var e;if(this.repeated&&!b){Array.isArray(a)||(a=[a]);var d=[];for(e=0;e<a.length;e++)d.push(this.element.verifyValue(a[e]));return d}if(this.map&&!b){if(a instanceof c.Map)return a;a instanceof Object||g(typeof a,"expected ProtoBuf.Map or raw object for map field");
59
+ return new c.Map(this,a)}!this.repeated&&Array.isArray(a)&&g(typeof a,"no array expected");return this.element.verifyValue(a)};f.hasWirePresence=function(a,b){if("proto3"!==this.syntax)return null!==a;if(this.oneof&&b[this.oneof.name]===this.name)return!0;switch(this.type){case c.TYPES.int32:case c.TYPES.sint32:case c.TYPES.sfixed32:case c.TYPES.uint32:case c.TYPES.fixed32:return 0!==a;case c.TYPES.int64:case c.TYPES.sint64:case c.TYPES.sfixed64:case c.TYPES.uint64:case c.TYPES.fixed64:return 0!==
60
+ a.low||0!==a.high;case c.TYPES.bool:return a;case c.TYPES["float"]:case c.TYPES["double"]:return 0!==a;case c.TYPES.string:return 0<a.length;case c.TYPES.bytes:return 0<a.remaining();case c.TYPES["enum"]:return 0!==a;case c.TYPES.message:return null!==a;default:return!0}};f.encode=function(a,b,f){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 b;try{if(this.repeated){var g;
61
+ if(this.options.packed&&0<=c.PACKABLE_WIRE_TYPES.indexOf(this.type.wireType)){b.writeVarint32(this.id<<3|c.WIRE_TYPES.LDELIM);b.ensureCapacity(b.offset+=1);var d=b.offset;for(g=0;g<a.length;g++)this.element.encodeValue(this.id,a[g],b);var h=b.offset-d,m=e.calculateVarint32(h);if(1<m){var l=b.slice(d,b.offset),d=d+(m-1);b.offset=d;b.append(l)}b.writeVarint32(h,d-m)}else for(g=0;g<a.length;g++)b.writeVarint32(this.id<<3|this.type.wireType),this.element.encodeValue(this.id,a[g],b)}else this.map?a.forEach(function(a,
62
+ g,f){f=e.calculateVarint32(8|this.keyType.wireType)+this.keyElement.calculateLength(1,g)+e.calculateVarint32(16|this.type.wireType)+this.element.calculateLength(2,a);b.writeVarint32(this.id<<3|c.WIRE_TYPES.LDELIM);b.writeVarint32(f);b.writeVarint32(8|this.keyType.wireType);this.keyElement.encodeValue(1,g,b);b.writeVarint32(16|this.type.wireType);this.element.encodeValue(2,a,b)},this):this.hasWirePresence(a,f)&&(b.writeVarint32(this.id<<3|this.type.wireType),this.element.encodeValue(this.id,a,b))}catch(F){throw Error("Illegal value for "+
63
+ this.toString(!0)+": "+a+" ("+F+")");}return b};f.calculate=function(a,b){a=this.verifyValue(a);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 0;var g=0;try{if(this.repeated){var f,d;if(this.options.packed&&0<=c.PACKABLE_WIRE_TYPES.indexOf(this.type.wireType)){g+=e.calculateVarint32(this.id<<3|c.WIRE_TYPES.LDELIM);for(f=d=0;f<a.length;f++)d+=this.element.calculateLength(this.id,
64
+ a[f]);g+=e.calculateVarint32(d);g+=d}else for(f=0;f<a.length;f++)g+=e.calculateVarint32(this.id<<3|this.type.wireType),g+=this.element.calculateLength(this.id,a[f])}else this.map?a.forEach(function(a,b,f){a=e.calculateVarint32(8|this.keyType.wireType)+this.keyElement.calculateLength(1,b)+e.calculateVarint32(16|this.type.wireType)+this.element.calculateLength(2,a);g+=e.calculateVarint32(this.id<<3|c.WIRE_TYPES.LDELIM);g+=e.calculateVarint32(a);g+=a},this):this.hasWirePresence(a,b)&&(g+=e.calculateVarint32(this.id<<
65
+ 3|this.type.wireType),g+=this.element.calculateLength(this.id,a))}catch(w){throw Error("Illegal value for "+this.toString(!0)+": "+a+" ("+w+")");}return g};f.decode=function(a,b,f){if(!(!this.map&&a==this.type.wireType||!f&&this.repeated&&this.options.packed&&a==c.WIRE_TYPES.LDELIM||this.map&&a==c.WIRE_TYPES.LDELIM))throw Error("Illegal wire type for field "+this.toString(!0)+": "+a+" ("+this.type.wireType+" expected)");if(a==c.WIRE_TYPES.LDELIM&&this.repeated&&this.options.packed&&0<=c.PACKABLE_WIRE_TYPES.indexOf(this.type.wireType)&&
66
+ !f){a=b.readVarint32();a=b.offset+a;for(f=[];b.offset<a;)f.push(this.decode(this.type.wireType,b,!0));return f}if(this.map){var g=m.defaultFieldValue(this.keyType);f=m.defaultFieldValue(this.type);a=b.readVarint32();if(b.remaining()<a)throw Error("Illegal number of bytes for "+this.toString(!0)+": "+a+" required but got only "+b.remaining());var d=b.clone();d.limit=d.offset+a;for(b.offset+=a;0<d.remaining();)if(b=d.readVarint32(),a=b&7,b>>>=3,1===b)g=this.keyElement.decode(d,a,b);else if(2===b)f=
67
+ this.element.decode(d,a,b);else throw Error("Unexpected tag in map field key/value submessage");return[g,f]}return this.element.decode(b,a,this.id)};r.Message.Field=p;f=function(a,b,c,f,d,e,m){p.call(this,a,b,c,null,f,d,e,m)};f.prototype=Object.create(p.prototype);r.Message.ExtensionField=f;r.Message.OneOf=function(a,b,c){k.call(this,a,b,c);this.fields=[]};var x=function(a,c,f,d,e){b.call(this,a,c,f,d,e);this.className="Enum";this.object=null};x.getName=function(a,b){for(var c=Object.keys(a),f=0,
68
+ g;f<c.length;++f)if(a[g=c[f]]===b)return g;return null};(x.prototype=Object.create(b.prototype)).build=function(a){if(this.object&&!a)return this.object;a=new c.Builder.Enum;for(var b=this.getChildren(x.Value),f=0,d=b.length;f<d;++f)a[b[f].name]=b[f].id;Object.defineProperty&&Object.defineProperty(a,"$options",{value:this.buildOpt(),enumerable:!1});return this.object=a};r.Enum=x;f=function(a,b,c,f){k.call(this,a,b,c);this.className="Enum.Value";this.id=f};f.prototype=Object.create(k.prototype);r.Enum.Value=
69
+ f;var y=function(a,b,c,f){k.call(this,a,b,c);this.field=f};y.prototype=Object.create(k.prototype);r.Extension=y;var D=function(a,c,f,d){b.call(this,a,c,f,d);this.className="Service";this.clazz=null};(D.prototype=Object.create(b.prototype)).build=function(a){return this.clazz&&!a?this.clazz:this.clazz=function(a,b){for(var c=function(b){a.Builder.Service.call(this);this.rpcImpl=b||function(a,b,c){setTimeout(c.bind(this,Error("Not implemented, see: https://github.com/dcodeIO/ProtoBuf.js/wiki/Services")),
70
+ 0)}},f=c.prototype=Object.create(a.Builder.Service.prototype),d=b.getChildren(a.Reflect.Service.RPCMethod),g=0;g<d.length;g++)(function(a){f[a.name]=function(c,f){try{try{c=a.resolvedRequestType.clazz.decode(e.wrap(c))}catch(A){if(!(A instanceof TypeError))throw A;}if(null===c||"object"!==typeof c)throw Error("Illegal arguments");c instanceof a.resolvedRequestType.clazz||(c=new a.resolvedRequestType.clazz(c));this.rpcImpl(a.fqn(),c,function(c,d){if(c)f(c);else{null===d&&(d="");try{d=a.resolvedResponseType.clazz.decode(d)}catch(G){}d&&
71
+ d instanceof a.resolvedResponseType.clazz?f(null,d):f(Error("Illegal response type received in service method "+b.name+"#"+a.name))}})}catch(A){setTimeout(f.bind(this,A),0)}};c[a.name]=function(b,f,d){(new c(b))[a.name](f,d)};Object.defineProperty&&(Object.defineProperty(c[a.name],"$options",{value:a.buildOpt()}),Object.defineProperty(f[a.name],"$options",{value:c[a.name].$options}))})(d[g]);Object.defineProperty&&(Object.defineProperty(c,"$options",{value:b.buildOpt()}),Object.defineProperty(f,"$options",
72
+ {value:c.$options}),Object.defineProperty(c,"$type",{value:b}),Object.defineProperty(f,"$type",{value:b}));return c}(c,this)};r.Service=D;var B=function(a,b,c,f){k.call(this,a,b,c);this.className="Service.Method";this.options=f||{}};(B.prototype=Object.create(k.prototype)).buildOpt=l.buildOpt;r.Service.Method=B;l=function(a,b,c,f,d,e,m,l){B.call(this,a,b,c,l);this.className="Service.RPCMethod";this.requestName=f;this.responseName=d;this.requestStream=e;this.responseStream=m;this.resolvedResponseType=
73
+ this.resolvedRequestType=null};l.prototype=Object.create(B.prototype);r.Service.RPCMethod=l;return r}(d);d.Builder=function(c,d,e){function t(b){b.messages&&b.messages.forEach(function(c){c.syntax=b.syntax;t(c)});b.enums&&b.enums.forEach(function(c){c.syntax=b.syntax})}var k=function(b){this.ptr=this.ns=new e.Namespace(this,null,"");this.resolved=!1;this.result=null;this.files={};this.importRoot=null;this.options=b||{}},l=k.prototype;k.isMessage=function(b){return"string"!==typeof b.name||"undefined"!==
74
+ typeof b.values||"undefined"!==typeof b.rpc?!1:!0};k.isMessageField=function(b){return"string"!==typeof b.rule||"string"!==typeof b.name||"string"!==typeof b.type||"undefined"===typeof b.id?!1:!0};k.isEnum=function(b){return"string"===typeof b.name&&"undefined"!==typeof b.values&&Array.isArray(b.values)&&0!==b.values.length?!0:!1};k.isService=function(b){return"string"===typeof b.name&&"object"===typeof b.rpc&&b.rpc?!0:!1};k.isExtend=function(b){return"string"!==typeof b.ref?!1:!0};l.reset=function(){this.ptr=
75
+ this.ns;return this};l.define=function(b){if("string"!==typeof b||!d.TYPEREF.test(b))throw Error("illegal namespace: "+b);b.split(".").forEach(function(b){var c=this.ptr.getChild(b);null===c&&this.ptr.addChild(c=new e.Namespace(this,this.ptr,b));this.ptr=c},this);return this};l.create=function(b){if(!b)return this;if(Array.isArray(b)){if(0===b.length)return this;b=b.slice()}else b=[b];for(var d=[b];0<d.length;){b=d.pop();if(!Array.isArray(b))throw Error("not a valid namespace: "+JSON.stringify(b));
76
+ for(;0<b.length;){var f=b.shift();if(k.isMessage(f)){var l=new e.Message(this,this.ptr,f.name,f.options,f.isGroup,f.syntax),t={};f.oneofs&&Object.keys(f.oneofs).forEach(function(b){l.addChild(t[b]=new e.Message.OneOf(this,l,b))},this);f.fields&&f.fields.forEach(function(b){if(null!==l.getChild(b.id|0))throw Error("duplicate or invalid field id in "+l.name+": "+b.id);if(b.options&&"object"!==typeof b.options)throw Error("illegal field options in "+l.name+"#"+b.name);var c=null;if("string"===typeof b.oneof&&
77
+ !(c=t[b.oneof]))throw Error("illegal oneof in "+l.name+"#"+b.name+": "+b.oneof);b=new e.Message.Field(this,l,b.rule,b.keytype,b.type,b.name,b.id,b.options,c,f.syntax);c&&c.fields.push(b);l.addChild(b)},this);var r=[];f.enums&&f.enums.forEach(function(b){r.push(b)});f.messages&&f.messages.forEach(function(b){r.push(b)});f.services&&f.services.forEach(function(b){r.push(b)});f.extensions&&(l.extensions="number"===typeof f.extensions[0]?[f.extensions]:f.extensions);this.ptr.addChild(l);if(0<r.length){d.push(b);
78
+ b=r;r=null;this.ptr=l;l=null;continue}r=null}else if(k.isEnum(f))l=new e.Enum(this,this.ptr,f.name,f.options,f.syntax),f.values.forEach(function(b){l.addChild(new e.Enum.Value(this,l,b.name,b.id))},this),this.ptr.addChild(l);else if(k.isService(f))l=new e.Service(this,this.ptr,f.name,f.options),Object.keys(f.rpc).forEach(function(b){var c=f.rpc[b];l.addChild(new e.Service.RPCMethod(this,l,b,c.request,c.response,!!c.request_stream,!!c.response_stream,c.options))},this),this.ptr.addChild(l);else if(k.isExtend(f))if(l=
79
+ this.ptr.resolve(f.ref,!0))f.fields.forEach(function(b){if(null!==l.getChild(b.id|0))throw Error("duplicate extended field id in "+l.name+": "+b.id);if(l.extensions){var f=!1;l.extensions.forEach(function(a){b.id>=a[0]&&b.id<=a[1]&&(f=!0)});if(!f)throw Error("illegal extended field id in "+l.name+": "+b.id+" (not within valid ranges)");}var d=b.name;this.options.convertFieldsToCamelCase&&(d=c.Util.toCamelCase(d));var d=new e.Message.ExtensionField(this,l,b.rule,b.type,this.ptr.fqn()+"."+d,b.id,b.options),
80
+ a=new e.Extension(this,this.ptr,b.name,d);d.extension=a;this.ptr.addChild(a);l.addChild(d)},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));l=f=null}b=null;this.ptr=this.ptr.parent}this.resolved=!1;this.result=null;return this};l["import"]=function(b,d){var f="/";if("string"===typeof d){c.Util.IS_NODE&&(d=require("path").resolve(d));if(!0===this.files[d])return this.reset();
81
+ this.files[d]=!0}else if("object"===typeof d){var e=d.root;c.Util.IS_NODE&&(e=require("path").resolve(e));if(0<=e.indexOf("\\")||0<=d.file.indexOf("\\"))f="\\";e=c.Util.IS_NODE?require("path").join(e,d.file):e+f+d.file;if(!0===this.files[e])return this.reset();this.files[e]=!0}if(b.imports&&0<b.imports.length){var l=!1;if("object"===typeof d){if(this.importRoot=d.root,l=!0,e=this.importRoot,d=d.file,0<=e.indexOf("\\")||0<=d.indexOf("\\"))f="\\"}else"string"===typeof d?this.importRoot?e=this.importRoot:
82
+ 0<=d.indexOf("/")?(e=d.replace(/\/[^\/]*$/,""),""===e&&(e="/")):0<=d.indexOf("\\")?(e=d.replace(/\\[^\\]*$/,""),f="\\"):e=".":e=null;for(var m=0;m<b.imports.length;m++)if("string"===typeof b.imports[m]){if(!e)throw Error("cannot determine import root");var k=b.imports[m];if("google/protobuf/descriptor.proto"!==k&&(k=c.Util.IS_NODE?require("path").join(e,k):e+f+k,!0!==this.files[k])){/\.proto$/i.test(k)&&!c.DotProto&&(k=k.replace(/\.proto$/,".json"));var r=c.Util.fetch(k);if(null===r)throw Error("failed to import '"+
83
+ k+"' in '"+d+"': file not found");if(/\.json$/i.test(k))this["import"](JSON.parse(r+""),k);else this["import"](c.DotProto.Parser.parse(r),k)}}else if(d)if(/\.(\w+)$/.test(d))this["import"](b.imports[m],d.replace(/^(.+)\.(\w+)$/,function(a,b,c){return b+"_import"+m+"."+c}));else this["import"](b.imports[m],d+"_import"+m);else this["import"](b.imports[m]);l&&(this.importRoot=null)}b["package"]&&this.define(b["package"]);b.syntax&&t(b);var p=this.ptr;b.options&&Object.keys(b.options).forEach(function(a){p.options[a]=
84
+ b.options[a]});b.messages&&(this.create(b.messages),this.ptr=p);b.enums&&(this.create(b.enums),this.ptr=p);b.services&&(this.create(b.services),this.ptr=p);b["extends"]&&this.create(b["extends"]);return this.reset()};l.resolveAll=function(){var b;if(null==this.ptr||"object"===typeof this.ptr.type)return this;if(this.ptr instanceof e.Namespace)this.ptr.children.forEach(function(b){this.ptr=b;this.resolveAll()},this);else if(this.ptr instanceof e.Message.Field){if(d.TYPE.test(this.ptr.type))this.ptr.type=
85
+ c.TYPES[this.ptr.type];else{if(!d.TYPEREF.test(this.ptr.type))throw Error("illegal type reference in "+this.ptr.toString(!0)+": "+this.ptr.type);b=(this.ptr instanceof e.Message.ExtensionField?this.ptr.extension.parent:this.ptr.parent).resolve(this.ptr.type,!0);if(!b)throw Error("unresolvable type reference in "+this.ptr.toString(!0)+": "+this.ptr.type);this.ptr.resolvedType=b;if(b instanceof e.Enum){if(this.ptr.type=c.TYPES["enum"],"proto3"===this.ptr.syntax&&"proto3"!==b.syntax)throw Error("proto3 message cannot reference proto2 enum");
86
+ }else if(b instanceof e.Message)this.ptr.type=b.isGroup?c.TYPES.group:c.TYPES.message;else throw Error("illegal type reference in "+this.ptr.toString(!0)+": "+this.ptr.type);}if(this.ptr.map){if(!d.TYPE.test(this.ptr.keyType))throw Error("illegal key type for map field in "+this.ptr.toString(!0)+": "+this.ptr.keyType);this.ptr.keyType=c.TYPES[this.ptr.keyType]}"proto3"===this.ptr.syntax&&this.ptr.repeated&&void 0===this.ptr.options.packed&&-1!==c.PACKABLE_WIRE_TYPES.indexOf(this.ptr.type.wireType)&&
87
+ (this.ptr.options.packed=!0)}else if(this.ptr instanceof c.Reflect.Service.Method)if(this.ptr instanceof c.Reflect.Service.RPCMethod){b=this.ptr.parent.resolve(this.ptr.requestName,!0);if(!(b&&b instanceof c.Reflect.Message))throw Error("Illegal type reference in "+this.ptr.toString(!0)+": "+this.ptr.requestName);this.ptr.resolvedRequestType=b;b=this.ptr.parent.resolve(this.ptr.responseName,!0);if(!(b&&b instanceof c.Reflect.Message))throw Error("Illegal type reference in "+this.ptr.toString(!0)+
88
+ ": "+this.ptr.responseName);this.ptr.resolvedResponseType=b}else throw Error("illegal service type in "+this.ptr.toString(!0));else if(!(this.ptr instanceof c.Reflect.Message.OneOf||this.ptr instanceof c.Reflect.Extension||this.ptr instanceof c.Reflect.Enum.Value))throw Error("illegal object in namespace: "+typeof this.ptr+": "+this.ptr);return this.reset()};l.build=function(b){this.reset();this.resolved||(this.resolveAll(),this.resolved=!0,this.result=null);null===this.result&&(this.result=this.ns.build());
89
+ if(!b)return this.result;b="string"===typeof b?b.split("."):b;for(var c=this.result,f=0;f<b.length;f++)if(c[b[f]])c=c[b[f]];else{c=null;break}return c};l.lookup=function(b,c){return b?this.ns.resolve(b,c):this.ns};l.toString=function(){return"Builder"};k.Message=function(){};k.Enum=function(){};k.Service=function(){};return k}(d,d.Lang,d.Reflect);d.Map=function(c,d){function e(c){var b=0;return{next:function(){return b<c.length?{done:!1,value:c[b++]}:{done:!0}}}}var t=function(c,b){if(!c.map)throw Error("field is not a map");
90
+ this.field=c;this.keyElem=new d.Element(c.keyType,null,!0,c.syntax);this.valueElem=new d.Element(c.type,c.resolvedType,!1,c.syntax);this.map={};Object.defineProperty(this,"size",{get:function(){return Object.keys(this.map).length}});if(b)for(var e=Object.keys(b),f=0;f<e.length;f++){var l=this.keyElem.valueFromString(e[f]),k=this.valueElem.verifyValue(b[e[f]]);this.map[this.keyElem.valueToString(l)]={key:l,value:k}}},k=t.prototype;k.clear=function(){this.map={}};k["delete"]=function(c){c=this.keyElem.valueToString(this.keyElem.verifyValue(c));
91
+ var b=c in this.map;delete this.map[c];return b};k.entries=function(){for(var c=[],b=Object.keys(this.map),d=0,f;d<b.length;d++)c.push([(f=this.map[b[d]]).key,f.value]);return e(c)};k.keys=function(){for(var c=[],b=Object.keys(this.map),d=0;d<b.length;d++)c.push(this.map[b[d]].key);return e(c)};k.values=function(){for(var c=[],b=Object.keys(this.map),d=0;d<b.length;d++)c.push(this.map[b[d]].value);return e(c)};k.forEach=function(c,b){for(var d=Object.keys(this.map),f=0,e;f<d.length;f++)c.call(b,(e=
92
+ this.map[d[f]]).value,e.key,this)};k.set=function(c,b){var d=this.keyElem.verifyValue(c),f=this.valueElem.verifyValue(b);this.map[this.keyElem.valueToString(d)]={key:d,value:f};return this};k.get=function(c){c=this.keyElem.valueToString(this.keyElem.verifyValue(c));if(c in this.map)return this.map[c].value};k.has=function(c){return this.keyElem.valueToString(this.keyElem.verifyValue(c))in this.map};return t}(d,d.Reflect);d.newBuilder=function(c){c=c||{};"undefined"===typeof c.convertFieldsToCamelCase&&
93
+ (c.convertFieldsToCamelCase=d.convertFieldsToCamelCase);"undefined"===typeof c.populateAccessors&&(c.populateAccessors=d.populateAccessors);return new d.Builder(c)};d.loadJson=function(c,e,p){if("string"===typeof e||e&&"string"===typeof e.file&&"string"===typeof e.root)p=e,e=null;e&&"object"===typeof e||(e=d.newBuilder());"string"===typeof c&&(c=JSON.parse(c));e["import"](c,p);e.resolveAll();return e};d.loadJsonFile=function(c,e,p){e&&"object"===typeof e?(p=e,e=null):e&&"function"===typeof e||(e=
94
+ null);if(e)return d.Util.fetch("string"===typeof c?c:c.root+"/"+c.file,function(k){if(null===k)e(Error("Failed to fetch file"));else try{e(null,d.loadJson(JSON.parse(k),p,c))}catch(l){e(l)}});var r=d.Util.fetch("object"===typeof c?c.root+"/"+c.file:c);return null===r?null:d.loadJson(JSON.parse(r),p,c)};return d});
Binary file